diff options
Diffstat (limited to 'src/backend/utils/cache/lsyscache.c')
-rw-r--r-- | src/backend/utils/cache/lsyscache.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/backend/utils/cache/lsyscache.c b/src/backend/utils/cache/lsyscache.c index b7a14dc87e1..48961e31aa9 100644 --- a/src/backend/utils/cache/lsyscache.c +++ b/src/backend/utils/cache/lsyscache.c @@ -2398,12 +2398,26 @@ get_typtype(Oid typid) * type_is_rowtype * * Convenience function to determine whether a type OID represents - * a "rowtype" type --- either RECORD or a named composite type. + * a "rowtype" type --- either RECORD or a named composite type + * (including a domain over a named composite type). */ bool type_is_rowtype(Oid typid) { - return (typid == RECORDOID || get_typtype(typid) == TYPTYPE_COMPOSITE); + if (typid == RECORDOID) + return true; /* easy case */ + switch (get_typtype(typid)) + { + case TYPTYPE_COMPOSITE: + return true; + case TYPTYPE_DOMAIN: + if (get_typtype(getBaseType(typid)) == TYPTYPE_COMPOSITE) + return true; + break; + default: + break; + } + return false; } /* |