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);
subquery->rtable = list_make1(newRangeTableEntry);
addRTEPermissionInfo(&subquery->rteperminfos, newRangeTableEntry);
/* set the FROM expression to the subquery */
newRangeTableRef = makeNode(RangeTblRef);
newRangeTableRef->rtindex = SINGLE_RTE_INDEX;

View File

@ -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;
}