#include "nodes/pg_list.h"
#include "parser/parse_type.h"
#include "tcop/tcopprot.h"
+#include "utils/acl.h"
#include "utils/array.h"
#include "utils/builtins.h"
#include "utils/dynahash.h"
char **result = NULL;
Relation rel;
TupleDesc tupdesc;
+ AclResult aclresult;
- /* open relation using relid, get tupdesc */
+ /* open relation using relid, check permissions, get tupdesc */
rel = relation_open(relid, AccessShareLock);
+
+ aclresult = pg_class_aclcheck(RelationGetRelid(rel), GetUserId(),
+ ACL_SELECT);
+ if (aclresult != ACLCHECK_OK)
+ aclcheck_error(aclresult, ACL_KIND_CLASS,
+ RelationGetRelationName(rel));
+
tupdesc = rel->rd_att;
/* initialize numatts to 0 in case no primary key exists */