• Tom Lane's avatar
    Fix handling of container types in find_composite_type_dependencies. · 749c7c41
    Tom Lane authored
    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
    749c7c41
tablecmds.c 418 KB