diff options
Diffstat (limited to 'src/backend/access/common/tupdesc.c')
-rw-r--r-- | src/backend/access/common/tupdesc.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/backend/access/common/tupdesc.c b/src/backend/access/common/tupdesc.c index 9e931df4b14..ee404867fe3 100644 --- a/src/backend/access/common/tupdesc.c +++ b/src/backend/access/common/tupdesc.c @@ -20,7 +20,9 @@ #include "postgres.h" #include "catalog/pg_type.h" +#include "miscadmin.h" #include "parser/parse_type.h" +#include "utils/acl.h" #include "utils/builtins.h" #include "utils/resowner.h" #include "utils/syscache.h" @@ -557,6 +559,7 @@ BuildDescForRelation(List *schema) foreach(l, schema) { ColumnDef *entry = lfirst(l); + AclResult aclresult; /* * for each entry in the list, get the name and type information from @@ -567,6 +570,12 @@ BuildDescForRelation(List *schema) attname = entry->colname; typenameTypeIdAndMod(NULL, entry->typeName, &atttypid, &atttypmod); + + aclresult = pg_type_aclcheck(atttypid, GetUserId(), ACL_USAGE); + if (aclresult != ACLCHECK_OK) + aclcheck_error(aclresult, ACL_KIND_TYPE, + format_type_be(atttypid)); + attcollation = GetColumnDefCollation(NULL, entry, atttypid); attdim = list_length(entry->typeName->arrayBounds); |