v48-0002-Remove-PlannedStmt-resultRelations-in-favor-of-r.patch
text/x-patch
Filename: v48-0002-Remove-PlannedStmt-resultRelations-in-favor-of-r.patch
Type: text/x-patch
Part: 1
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch v48-0002
Subject: Remove PlannedStmt->resultRelations in favor of resultRelationRelids
| File | + | − |
|---|---|---|
| contrib/pg_overexplain/pg_overexplain.c | 3 | 2 |
| src/backend/executor/execParallel.c | 0 | 1 |
| src/backend/executor/execUtils.c | 1 | 1 |
| src/backend/optimizer/plan/planner.c | 0 | 1 |
| src/include/nodes/plannodes.h | 0 | 4 |
From 7c331c575a377b40a1dd1142b23fa3a8692de38f Mon Sep 17 00:00:00 2001
From: Melanie Plageman <melanieplageman@gmail.com>
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