mirror of
https://github.com/postgres/postgres.git
synced 2025-05-03 22:24:49 +03:00
Fix add_rte_to_flat_rtable() for recent feature additions.
The TABLESAMPLE and row security patches each overlooked this function, though their errors of omission were opposite: RLS failed to zero out the securityQuals field, leading to wasteful copying of useless expression trees in finished plans, while TABLESAMPLE neglected to add a comment saying that it intentionally *isn't* deleting the tablesample subtree. There probably should be a similar comment about ctename, too. Back-patch as appropriate.
This commit is contained in:
parent
35ac618a7c
commit
41ae3b74d9
@ -372,10 +372,11 @@ flatten_rtes_walker(Node *node, PlannerGlobal *glob)
|
|||||||
*
|
*
|
||||||
* In the flat rangetable, we zero out substructure pointers that are not
|
* In the flat rangetable, we zero out substructure pointers that are not
|
||||||
* needed by the executor; this reduces the storage space and copying cost
|
* needed by the executor; this reduces the storage space and copying cost
|
||||||
* for cached plans. We keep only the alias and eref Alias fields, which are
|
* for cached plans. We keep only the tablesample field (which we'd otherwise
|
||||||
* needed by EXPLAIN, and the selectedCols, insertedCols and updatedCols
|
* have to put in the plan tree, anyway); the ctename, alias and eref Alias
|
||||||
* bitmaps, which are needed for executor-startup permissions checking and for
|
* fields, which are needed by EXPLAIN; and the selectedCols, insertedCols and
|
||||||
* trigger event checking.
|
* updatedCols bitmaps, which are needed for executor-startup permissions
|
||||||
|
* checking and for trigger event checking.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
add_rte_to_flat_rtable(PlannerGlobal *glob, RangeTblEntry *rte)
|
add_rte_to_flat_rtable(PlannerGlobal *glob, RangeTblEntry *rte)
|
||||||
@ -395,6 +396,7 @@ add_rte_to_flat_rtable(PlannerGlobal *glob, RangeTblEntry *rte)
|
|||||||
newrte->ctecoltypes = NIL;
|
newrte->ctecoltypes = NIL;
|
||||||
newrte->ctecoltypmods = NIL;
|
newrte->ctecoltypmods = NIL;
|
||||||
newrte->ctecolcollations = NIL;
|
newrte->ctecolcollations = NIL;
|
||||||
|
newrte->securityQuals = NIL;
|
||||||
|
|
||||||
glob->finalrtable = lappend(glob->finalrtable, newrte);
|
glob->finalrtable = lappend(glob->finalrtable, newrte);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user