From ac81db0f6033184ad7ad18dc83ccdeba8c052cb7 Mon Sep 17 00:00:00 2001 From: Amit Langote Date: Wed, 25 Oct 2023 16:51:22 +0900 Subject: [PATCH v1] Prevent duplicate RTEPermissionInfo for plain-inheritance parents Due to an oversight in a61b1f74823, expand_single_inheritance_child() currently fails to reset perminfoindex in a plain-inheritance parent's child RTE. That in turn causes add_rte_to_flat_rtable() to create a duplicate RTEPermissionInfo for the parent's child RTE. Fix by making expand_single_inheritance_child() always reset perminfoindex in the child RTEs. Reported-by: Tom Lane Discussion: https://postgr.es/m/839708.1698174464@sss.pgh.pa.us Backpatch-through: 16 --- src/backend/optimizer/util/inherit.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/backend/optimizer/util/inherit.c b/src/backend/optimizer/util/inherit.c index 94de855a22..00b65ca305 100644 --- a/src/backend/optimizer/util/inherit.c +++ b/src/backend/optimizer/util/inherit.c @@ -494,13 +494,8 @@ expand_single_inheritance_child(PlannerInfo *root, RangeTblEntry *parentrte, childrte->inh = false; childrte->securityQuals = NIL; - /* - * No permission checking for the child RTE unless it's the parent - * relation in its child role, which only applies to traditional - * inheritance. - */ - if (childOID != parentOID) - childrte->perminfoindex = 0; + /* No permission checking for child RTEs. */ + childrte->perminfoindex = 0; /* Link not-yet-fully-filled child RTE into data structures */ parse->rtable = lappend(parse->rtable, childrte); -- 2.35.3