aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/nodeModifyTable.c
diff options
context:
space:
mode:
authorAndres Freund <andres@anarazel.de>2017-12-29 12:26:29 -0800
committerAndres Freund <andres@anarazel.de>2017-12-29 12:26:29 -0800
commit4717fdb14cf0a62ffe1b1023e1c5ea8866e34fa0 (patch)
treeaff7d9798c1d056d1c253bccd9a8bdc242c733f7 /src/backend/executor/nodeModifyTable.c
parentd02974e32e028fc078d8f5eca1d6a4516efb0aa6 (diff)
downloadpostgresql-4717fdb14cf0a62ffe1b1023e1c5ea8866e34fa0.tar.gz
postgresql-4717fdb14cf0a62ffe1b1023e1c5ea8866e34fa0.zip
Rely on executor utils to build targetlist for DML RETURNING.
This is useful because it gets rid of the sole direct user of ExecAssignResultType(). A future commit will likely make use of that and combine creating the targetlist with the initialization of the result slot. But it seems like good code hygiene anyway. Author: Andres Freund Discussion: https://postgr.es/m/20170901064131.tazjxwus3k2w3ybh@alap3.anarazel.de
Diffstat (limited to 'src/backend/executor/nodeModifyTable.c')
-rw-r--r--src/backend/executor/nodeModifyTable.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/backend/executor/nodeModifyTable.c b/src/backend/executor/nodeModifyTable.c
index afb83ed3ae1..82cd4462a3e 100644
--- a/src/backend/executor/nodeModifyTable.c
+++ b/src/backend/executor/nodeModifyTable.c
@@ -1828,7 +1828,6 @@ ExecInitModifyTable(ModifyTable *node, EState *estate, int eflags)
int nplans = list_length(node->plans);
ResultRelInfo *saved_resultRelInfo;
ResultRelInfo *resultRelInfo;
- TupleDesc tupDesc;
Plan *subplan;
ListCell *l;
int i;
@@ -2068,12 +2067,11 @@ ExecInitModifyTable(ModifyTable *node, EState *estate, int eflags)
* Initialize result tuple slot and assign its rowtype using the first
* RETURNING list. We assume the rest will look the same.
*/
- tupDesc = ExecTypeFromTL((List *) linitial(node->returningLists),
- false);
+ mtstate->ps.plan->targetlist = (List *) linitial(node->returningLists);
/* Set up a slot for the output of the RETURNING projection(s) */
ExecInitResultTupleSlot(estate, &mtstate->ps);
- ExecAssignResultType(&mtstate->ps, tupDesc);
+ ExecAssignResultTypeFromTL(&mtstate->ps);
slot = mtstate->ps.ps_ResultTupleSlot;
/* Need an econtext too */
@@ -2126,9 +2124,9 @@ ExecInitModifyTable(ModifyTable *node, EState *estate, int eflags)
* We still must construct a dummy result tuple type, because InitPlan
* expects one (maybe should change that?).
*/
- tupDesc = ExecTypeFromTL(NIL, false);
+ mtstate->ps.plan->targetlist = NIL;
ExecInitResultTupleSlot(estate, &mtstate->ps);
- ExecAssignResultType(&mtstate->ps, tupDesc);
+ ExecAssignResultTypeFromTL(&mtstate->ps);
mtstate->ps.ps_ExprContext = NULL;
}