diff options
-rw-r--r-- | src/backend/optimizer/plan/planner.c | 10 | ||||
-rw-r--r-- | src/backend/optimizer/util/relnode.c | 11 |
2 files changed, 10 insertions, 11 deletions
diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c index f08f1cdf7e7..3a1b846217b 100644 --- a/src/backend/optimizer/plan/planner.c +++ b/src/backend/optimizer/plan/planner.c @@ -731,6 +731,16 @@ subquery_planner(PlannerGlobal *glob, Query *parse, if (rte->lateral) root->hasLateralRTEs = true; + + /* + * We can also determine the maximum security level required for any + * securityQuals now. Addition of inheritance-child RTEs won't affect + * this, because child tables don't have their own securityQuals; see + * expand_single_inheritance_child(). + */ + if (rte->securityQuals) + root->qual_security_level = Max(root->qual_security_level, + list_length(rte->securityQuals)); } /* diff --git a/src/backend/optimizer/util/relnode.c b/src/backend/optimizer/util/relnode.c index f86f39c197f..272e2eb10af 100644 --- a/src/backend/optimizer/util/relnode.c +++ b/src/backend/optimizer/util/relnode.c @@ -325,17 +325,6 @@ build_simple_rel(PlannerInfo *root, int relid, RelOptInfo *parent) } /* - * This is a convenient spot at which to note whether rels participating - * in the query have any securityQuals attached. If so, increase - * root->qual_security_level to ensure it's larger than the maximum - * security level needed for securityQuals. (Must do this before we call - * apply_child_basequals, else we'll hit an Assert therein.) - */ - if (rte->securityQuals) - root->qual_security_level = Max(root->qual_security_level, - list_length(rte->securityQuals)); - - /* * Copy the parent's quals to the child, with appropriate substitution of * variables. If any constant false or NULL clauses turn up, we can mark * the child as dummy right away. (We must do this immediately so that |