From 7c331c575a377b40a1dd1142b23fa3a8692de38f Mon Sep 17 00:00:00 2001 From: Melanie Plageman Date: Fri, 27 Mar 2026 08:35:00 -0400 Subject: [PATCH v48 2/6] Remove PlannedStmt->resultRelations in favor of resultRelationRelids PlannedStmt->resultRelations was an integer list of range table indexes. Now that we have a bitmapset, which offers cheap membership checks, remove the list and update all consumers to use the bitmapset. --- contrib/pg_overexplain/pg_overexplain.c | 5 +++-- src/backend/executor/execParallel.c | 1 - src/backend/executor/execUtils.c | 2 +- src/backend/optimizer/plan/planner.c | 1 - src/include/nodes/plannodes.h | 4 ---- 5 files changed, 4 insertions(+), 9 deletions(-) diff --git a/contrib/pg_overexplain/pg_overexplain.c b/contrib/pg_overexplain/pg_overexplain.c index c2b90493cc6..b4e90909289 100644 --- a/contrib/pg_overexplain/pg_overexplain.c +++ b/contrib/pg_overexplain/pg_overexplain.c @@ -780,8 +780,9 @@ overexplain_range_table(PlannedStmt *plannedstmt, ExplainState *es) overexplain_bitmapset("Unprunable RTIs", plannedstmt->unprunableRelids, es); if (es->format != EXPLAIN_FORMAT_TEXT || - plannedstmt->resultRelations != NIL) - overexplain_intlist("Result RTIs", plannedstmt->resultRelations, es); + !bms_is_empty(plannedstmt->resultRelationRelids)) + overexplain_bitmapset("Result RTIs", plannedstmt->resultRelationRelids, + es); /* Close group, we're all done */ ExplainCloseGroup("Range Table", "Range Table", false, es); diff --git a/src/backend/executor/execParallel.c b/src/backend/executor/execParallel.c index 791fcb88de9..1bab6160036 100644 --- a/src/backend/executor/execParallel.c +++ b/src/backend/executor/execParallel.c @@ -191,7 +191,6 @@ ExecSerializePlan(Plan *plan, EState *estate) pstmt->resultRelationRelids = estate->es_plannedstmt->resultRelationRelids; pstmt->rowMarkRelids = estate->es_plannedstmt->rowMarkRelids; pstmt->permInfos = estate->es_rteperminfos; - pstmt->resultRelations = NIL; pstmt->appendRelations = NIL; pstmt->planOrigin = PLAN_STMT_INTERNAL; diff --git a/src/backend/executor/execUtils.c b/src/backend/executor/execUtils.c index 9886ab06b69..36c5285d252 100644 --- a/src/backend/executor/execUtils.c +++ b/src/backend/executor/execUtils.c @@ -733,7 +733,7 @@ ExecCreateScanSlotFromOuterPlan(EState *estate, bool ExecRelationIsTargetRelation(EState *estate, Index scanrelid) { - return list_member_int(estate->es_plannedstmt->resultRelations, scanrelid); + return bms_is_member(scanrelid, estate->es_plannedstmt->resultRelationRelids); } /* ---------------------------------------------------------------- diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c index df4c99fc3ff..9853443209d 100644 --- a/src/backend/optimizer/plan/planner.c +++ b/src/backend/optimizer/plan/planner.c @@ -659,7 +659,6 @@ standard_planner(Query *parse, const char *query_string, int cursorOptions, glob->prunableRelids); result->permInfos = glob->finalrteperminfos; result->subrtinfos = glob->subrtinfos; - result->resultRelations = glob->resultRelations; result->appendRelations = glob->appendRelations; result->subplans = glob->subplans; result->rewindPlanIDs = glob->rewindPlanIDs; diff --git a/src/include/nodes/plannodes.h b/src/include/nodes/plannodes.h index 88be65d7bde..19e5d814c59 100644 --- a/src/include/nodes/plannodes.h +++ b/src/include/nodes/plannodes.h @@ -117,10 +117,6 @@ typedef struct PlannedStmt */ List *permInfos; - /* rtable indexes of target relations for INSERT/UPDATE/DELETE/MERGE */ - /* integer list of RT indexes, or NIL */ - List *resultRelations; - /* RT indexes of result relations targeted by INSERT/UPDATE/DELETE/MERGE */ Bitmapset *resultRelationRelids; -- 2.43.0