permindex fixes

pg16_kickoff
onderkalaci 2023-05-03 17:44:34 +03:00
parent 780d8855de
commit 9785dd1a87
2 changed files with 12 additions and 1 deletions

View File

@ -278,6 +278,9 @@ WrapRteRelationIntoSubquery(RangeTblEntry *rteRelation, List *requiredAttributes
RangeTblEntry *newRangeTableEntry = copyObject(rteRelation); RangeTblEntry *newRangeTableEntry = copyObject(rteRelation);
subquery->rtable = list_make1(newRangeTableEntry); subquery->rtable = list_make1(newRangeTableEntry);
addRTEPermissionInfo(&subquery->rteperminfos, newRangeTableEntry);
/* set the FROM expression to the subquery */ /* set the FROM expression to the subquery */
newRangeTableRef = makeNode(RangeTblRef); newRangeTableRef = makeNode(RangeTblRef);
newRangeTableRef->rtindex = SINGLE_RTE_INDEX; newRangeTableRef->rtindex = SINGLE_RTE_INDEX;

View File

@ -1736,7 +1736,7 @@ NodeContainsSubqueryReferencingOuterQuery(Node *node)
return false; return false;
} }
#include "parser/parse_relation.h"
/* /*
* ReplaceRTERelationWithRteSubquery replaces the input rte relation target entry * ReplaceRTERelationWithRteSubquery replaces the input rte relation target entry
@ -1755,6 +1755,8 @@ ReplaceRTERelationWithRteSubquery(RangeTblEntry *rangeTableEntry,
RecursivePlanningContext *context) RecursivePlanningContext *context)
{ {
Query *subquery = WrapRteRelationIntoSubquery(rangeTableEntry, requiredAttrNumbers); Query *subquery = WrapRteRelationIntoSubquery(rangeTableEntry, requiredAttrNumbers);
List *outerQueryTargetList = CreateAllTargetListForRelation(rangeTableEntry->relid, List *outerQueryTargetList = CreateAllTargetListForRelation(rangeTableEntry->relid,
requiredAttrNumbers); requiredAttrNumbers);
@ -1851,6 +1853,9 @@ CreateOuterSubquery(RangeTblEntry *rangeTableEntry, List *outerSubqueryTargetLis
innerSubqueryRTE->eref->colnames = innerSubqueryColNames; innerSubqueryRTE->eref->colnames = innerSubqueryColNames;
outerSubquery->rtable = list_make1(innerSubqueryRTE); outerSubquery->rtable = list_make1(innerSubqueryRTE);
addRTEPermissionInfo(&outerSubquery->rteperminfos, innerSubqueryRTE);
/* set the FROM expression to the subquery */ /* set the FROM expression to the subquery */
RangeTblRef *newRangeTableRef = makeNode(RangeTblRef); RangeTblRef *newRangeTableRef = makeNode(RangeTblRef);
newRangeTableRef->rtindex = 1; newRangeTableRef->rtindex = 1;
@ -2396,6 +2401,9 @@ BuildReadIntermediateResultsQuery(List *targetEntryList, List *columnAliasList,
resultQuery->jointree = joinTree; resultQuery->jointree = joinTree;
resultQuery->targetList = targetList; resultQuery->targetList = targetList;
addRTEPermissionInfo(&resultQuery->rteperminfos, rangeTableEntry);
return resultQuery; return resultQuery;
} }