From 9785dd1a87931140ede179882713f02263fce656 Mon Sep 17 00:00:00 2001 From: onderkalaci Date: Wed, 3 May 2023 17:44:34 +0300 Subject: [PATCH] permindex fixes --- .../distributed/planner/query_colocation_checker.c | 3 +++ src/backend/distributed/planner/recursive_planning.c | 10 +++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/backend/distributed/planner/query_colocation_checker.c b/src/backend/distributed/planner/query_colocation_checker.c index 26bedda90..ae130a5a8 100644 --- a/src/backend/distributed/planner/query_colocation_checker.c +++ b/src/backend/distributed/planner/query_colocation_checker.c @@ -278,6 +278,9 @@ WrapRteRelationIntoSubquery(RangeTblEntry *rteRelation, List *requiredAttributes RangeTblEntry *newRangeTableEntry = copyObject(rteRelation); subquery->rtable = list_make1(newRangeTableEntry); + addRTEPermissionInfo(&subquery->rteperminfos, newRangeTableEntry); + + /* set the FROM expression to the subquery */ newRangeTableRef = makeNode(RangeTblRef); newRangeTableRef->rtindex = SINGLE_RTE_INDEX; diff --git a/src/backend/distributed/planner/recursive_planning.c b/src/backend/distributed/planner/recursive_planning.c index 936b17364..f308cc711 100644 --- a/src/backend/distributed/planner/recursive_planning.c +++ b/src/backend/distributed/planner/recursive_planning.c @@ -1736,7 +1736,7 @@ NodeContainsSubqueryReferencingOuterQuery(Node *node) return false; } - +#include "parser/parse_relation.h" /* * ReplaceRTERelationWithRteSubquery replaces the input rte relation target entry @@ -1755,6 +1755,8 @@ ReplaceRTERelationWithRteSubquery(RangeTblEntry *rangeTableEntry, RecursivePlanningContext *context) { Query *subquery = WrapRteRelationIntoSubquery(rangeTableEntry, requiredAttrNumbers); + + List *outerQueryTargetList = CreateAllTargetListForRelation(rangeTableEntry->relid, requiredAttrNumbers); @@ -1851,6 +1853,9 @@ CreateOuterSubquery(RangeTblEntry *rangeTableEntry, List *outerSubqueryTargetLis innerSubqueryRTE->eref->colnames = innerSubqueryColNames; outerSubquery->rtable = list_make1(innerSubqueryRTE); + addRTEPermissionInfo(&outerSubquery->rteperminfos, innerSubqueryRTE); + + /* set the FROM expression to the subquery */ RangeTblRef *newRangeTableRef = makeNode(RangeTblRef); newRangeTableRef->rtindex = 1; @@ -2396,6 +2401,9 @@ BuildReadIntermediateResultsQuery(List *targetEntryList, List *columnAliasList, resultQuery->jointree = joinTree; resultQuery->targetList = targetList; + addRTEPermissionInfo(&resultQuery->rteperminfos, rangeTableEntry); + + return resultQuery; }