From 5ada58954afa4fa427f4f7a91c683c1210d3d6df Mon Sep 17 00:00:00 2001 From: Gord Thompson Date: Mon, 20 Dec 2021 14:37:13 -0700 Subject: Reflect included columns as dialect_options Fixed reflection of covering indexes to report ``include_columns`` as part of the ``dialect_options`` entry in the reflected index dictionary, thereby enabling round trips from reflection->create to be complete. Included columns continue to also be present under the ``include_columns`` key for backwards compatibility. Fixes: #7382 Change-Id: I4f16b65caed3a36d405481690a3a92432b5efd62 --- lib/sqlalchemy/dialects/postgresql/base.py | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'lib/sqlalchemy/dialects/postgresql/base.py') diff --git a/lib/sqlalchemy/dialects/postgresql/base.py b/lib/sqlalchemy/dialects/postgresql/base.py index 614c84b56..869e48bd4 100644 --- a/lib/sqlalchemy/dialects/postgresql/base.py +++ b/lib/sqlalchemy/dialects/postgresql/base.py @@ -4242,6 +4242,8 @@ class PGDialect(default.DefaultDialect): "column_names": [idx["cols"][i] for i in idx["key"]], } if self.server_version_info >= (11, 0): + # NOTE: this is legacy, this is part of dialect_options now + # as of #7382 entry["include_columns"] = [idx["cols"][i] for i in idx["inc"]] if "duplicates_constraint" in idx: entry["duplicates_constraint"] = idx["duplicates_constraint"] @@ -4250,6 +4252,10 @@ class PGDialect(default.DefaultDialect): (idx["cols"][idx["key"][i]], value) for i, value in idx["sorting"].items() ) + if "include_columns" in entry: + entry.setdefault("dialect_options", {})[ + "postgresql_include" + ] = entry["include_columns"] if "options" in idx: entry.setdefault("dialect_options", {})[ "postgresql_with" -- cgit v1.2.1