Thread: [COMMITTERS] pgsql: Fix handling of container types infind_composite_type_dependenc
[COMMITTERS] pgsql: Fix handling of container types infind_composite_type_dependenc
From
Tom Lane
Date:
Fix handling of container types in find_composite_type_dependencies. find_composite_type_dependencies correctly found columns that are of the specified type, and columns that are of arrays of that type, but not columns that are domains or ranges over the given type, its array type, etc. The most general way to handle this seems to be to assume that any type that is directly dependent on the specified type can be treated as a container type, and processed recursively (allowing us to handle nested cases such as ranges over domains over arrays ...). Since a type's array type already has such a dependency, we can drop the existing special case for the array type. The very similar logic in get_rels_with_domain was likewise a few bricks shy of a load, as it supposed that a directly dependent type could *only* be a sub-domain. This is already wrong for ranges over domains, and it'll someday be wrong for arrays over domains. Add test cases illustrating the problems, and back-patch to all supported branches. Discussion: https://postgr.es/m/15268.1502309024@sss.pgh.pa.us Branch ------ REL9_5_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/d1c1d90e10616c5a0b4d96006ac109f27aef24af Modified Files -------------- src/backend/commands/tablecmds.c | 49 +++++++++++++++++++++++------------- src/backend/commands/typecmds.c | 49 +++++++++++++++++++++++------------- src/test/regress/expected/domain.out | 17 +++++++++++++ src/test/regress/sql/domain.sql | 17 +++++++++++++ 4 files changed, 97 insertions(+), 35 deletions(-)