v2-0001-refactor-ExecInitPartitionInfo.patch
text/x-patch
Filename: v2-0001-refactor-ExecInitPartitionInfo.patch
Type: text/x-patch
Part: 0
Message:
Re: refactor ExecInitPartitionInfo
Patch
Format: format-patch
Series: patch v2-0001
Subject: refactor ExecInitPartitionInfo
| File | + | − |
|---|---|---|
| src/backend/executor/execPartition.c | 6 | 29 |
From 3b7eb284241675a1026eeebc9a6f682a88f95430 Mon Sep 17 00:00:00 2001
From: jian he <jian.universality@gmail.com>
Date: Sat, 21 Feb 2026 22:50:55 +0800
Subject: [PATCH v2 1/1] refactor ExecInitPartitionInfo
Discussion: https://postgr.es/m/CACJufxEN_mmgTtp-raJ9-VJHgyAGmb0SrO+01kn5by4mJ_XOfw@mail.gmail.com
commitfest: https://commitfest.postgresql.org/patch/6280
---
src/backend/executor/execPartition.c | 35 +++++-----------------------
1 file changed, 6 insertions(+), 29 deletions(-)
diff --git a/src/backend/executor/execPartition.c b/src/backend/executor/execPartition.c
index bab294f5e91..d62d6a71f03 100644
--- a/src/backend/executor/execPartition.c
+++ b/src/backend/executor/execPartition.c
@@ -607,6 +607,11 @@ ExecInitPartitionInfo(ModifyTableState *mtstate, EState *estate,
(node != NULL &&
node->onConflictAction != ONCONFLICT_NONE));
+ if (node != NULL)
+ part_attmap = build_attrmap_by_name(RelationGetDescr(partrel),
+ RelationGetDescr(firstResultRel),
+ false);
+
/*
* Build WITH CHECK OPTION constraints for the partition. Note that we
* didn't build the withCheckOptionList for partitions within the planner,
@@ -649,10 +654,6 @@ ExecInitPartitionInfo(ModifyTableState *mtstate, EState *estate,
/*
* Convert Vars in it to contain this partition's attribute numbers.
*/
- part_attmap =
- build_attrmap_by_name(RelationGetDescr(partrel),
- RelationGetDescr(firstResultRel),
- false);
wcoList = (List *)
map_variable_attnos((Node *) wcoList,
firstVarno, 0,
@@ -706,14 +707,6 @@ ExecInitPartitionInfo(ModifyTableState *mtstate, EState *estate,
*/
returningList = linitial(node->returningLists);
- /*
- * Convert Vars in it to contain this partition's attribute numbers.
- */
- if (part_attmap == NULL)
- part_attmap =
- build_attrmap_by_name(RelationGetDescr(partrel),
- RelationGetDescr(firstResultRel),
- false);
returningList = (List *)
map_variable_attnos((Node *) returningList,
firstVarno, 0,
@@ -951,11 +944,7 @@ ExecInitPartitionInfo(ModifyTableState *mtstate, EState *estate,
List *onconflcols;
onconflset = copyObject(node->onConflictSet);
- if (part_attmap == NULL)
- part_attmap =
- build_attrmap_by_name(RelationGetDescr(partrel),
- RelationGetDescr(firstResultRel),
- false);
+
onconflset = (List *)
map_variable_attnos((Node *) onconflset,
INNER_VAR, 0,
@@ -1007,12 +996,6 @@ ExecInitPartitionInfo(ModifyTableState *mtstate, EState *estate,
{
List *clause;
- if (part_attmap == NULL)
- part_attmap =
- build_attrmap_by_name(RelationGetDescr(partrel),
- RelationGetDescr(firstResultRel),
- false);
-
clause = copyObject((List *) node->onConflictWhere);
clause = (List *)
map_variable_attnos((Node *) clause,
@@ -1064,12 +1047,6 @@ ExecInitPartitionInfo(ModifyTableState *mtstate, EState *estate,
ExprContext *econtext = mtstate->ps.ps_ExprContext;
Node *joinCondition;
- if (part_attmap == NULL)
- part_attmap =
- build_attrmap_by_name(RelationGetDescr(partrel),
- RelationGetDescr(firstResultRel),
- false);
-
if (unlikely(!leaf_part_rri->ri_projectNewInfoValid))
ExecInitMergeTupleSlots(mtstate, leaf_part_rri);
--
2.34.1