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 @@ -324,17 +324,6 @@ build_simple_rel(PlannerInfo *root, int relid, RelOptInfo *parent) break; } - /* - * 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