From 45259d2b87a9653c33ed4b31b89c083f3dfff7bc Mon Sep 17 00:00:00 2001 From: onderkalaci Date: Wed, 26 Apr 2023 21:24:11 +0300 Subject: [PATCH] Again, permission check refactor, be careful with details, PG commit a61b1f74823c9c4f79c95226a461f1e7a367764b --- src/backend/distributed/commands/multi_copy.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/backend/distributed/commands/multi_copy.c b/src/backend/distributed/commands/multi_copy.c index 6e3d19b68..68210961d 100644 --- a/src/backend/distributed/commands/multi_copy.c +++ b/src/backend/distributed/commands/multi_copy.c @@ -3190,6 +3190,10 @@ CheckCopyPermissions(CopyStmt *copyStatement) RangeTblEntry *rte = (RangeTblEntry*) linitial(range_table); tupDesc = RelationGetDescr(rel); + RTEPermissionInfo *perminfo = (RTEPermissionInfo *) palloc(sizeof(RTEPermissionInfo)); + perminfo->requiredPerms = required_access; + perminfo->relid = rel->rd_id; + attnums = CopyGetAttnums(tupDesc, rel, copyStatement->attlist); foreach(cur, attnums) { @@ -3197,15 +3201,15 @@ CheckCopyPermissions(CopyStmt *copyStatement) if (is_from) { - rte->insertedCols = bms_add_member(rte->insertedCols, attno); + perminfo->insertedCols = bms_add_member(perminfo->insertedCols, attno); } else { - rte->selectedCols = bms_add_member(rte->selectedCols, attno); + perminfo->selectedCols = bms_add_member(perminfo->selectedCols, attno); } } - ExecCheckRTPerms(range_table, true); + ExecCheckPermissions(list_make1(rte), list_make1(perminfo), true); /* TODO: Perform RLS checks once supported */ @@ -3224,7 +3228,6 @@ CreateRangeTable(Relation rel, AclMode requiredAccess) rte->rtekind = RTE_RELATION; rte->relid = rel->rd_id; rte->relkind = rel->rd_rel->relkind; - rte->requiredPerms = requiredAccess; return list_make1(rte); }