aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/nodeGather.c
diff options
context:
space:
mode:
authorAndres Freund <andres@anarazel.de>2017-01-19 14:12:38 -0800
committerAndres Freund <andres@anarazel.de>2017-01-19 14:40:41 -0800
commitea15e18677fc2eff3135023e27f69ed8821554ed (patch)
treeb6a3d56b7603b96a5841681f0121171844a1c41c /src/backend/executor/nodeGather.c
parent8eace46d34ab6ac0d887aa4d3504bc4222c2e448 (diff)
downloadpostgresql-ea15e18677fc2eff3135023e27f69ed8821554ed.tar.gz
postgresql-ea15e18677fc2eff3135023e27f69ed8821554ed.zip
Remove obsoleted code relating to targetlist SRF evaluation.
Since 69f4b9c plain expression evaluation (and thus normal projection) can't return sets of tuples anymore. Thus remove code dealing with that possibility. This will require adjustments in external code using ExecEvalExpr()/ExecProject() - that should neither be hard nor very common. Author: Andres Freund and Tom Lane Discussion: https://postgr.es/m/20160822214023.aaxz5l4igypowyri@alap3.anarazel.de
Diffstat (limited to 'src/backend/executor/nodeGather.c')
-rw-r--r--src/backend/executor/nodeGather.c32
1 files changed, 4 insertions, 28 deletions
diff --git a/src/backend/executor/nodeGather.c b/src/backend/executor/nodeGather.c
index f95c3d1b19c..45aa1132d92 100644
--- a/src/backend/executor/nodeGather.c
+++ b/src/backend/executor/nodeGather.c
@@ -100,8 +100,6 @@ ExecInitGather(Gather *node, EState *estate, int eflags)
outerNode = outerPlan(node);
outerPlanState(gatherstate) = ExecInitNode(outerNode, estate, eflags);
- gatherstate->ps.ps_TupFromTlist = false;
-
/*
* Initialize result tuple type and projection info.
*/
@@ -132,8 +130,6 @@ ExecGather(GatherState *node)
TupleTableSlot *fslot = node->funnel_slot;
int i;
TupleTableSlot *slot;
- TupleTableSlot *resultSlot;
- ExprDoneCond isDone;
ExprContext *econtext;
/*
@@ -200,25 +196,10 @@ ExecGather(GatherState *node)
}
/*
- * Check to see if we're still projecting out tuples from a previous scan
- * tuple (because there is a function-returning-set in the projection
- * expressions). If so, try to project another one.
- */
- if (node->ps.ps_TupFromTlist)
- {
- resultSlot = ExecProject(node->ps.ps_ProjInfo, &isDone);
- if (isDone == ExprMultipleResult)
- return resultSlot;
- /* Done with that source tuple... */
- node->ps.ps_TupFromTlist = false;
- }
-
- /*
* Reset per-tuple memory context to free any expression evaluation
- * storage allocated in the previous tuple cycle. Note we can't do this
- * until we're done projecting. This will also clear any previous tuple
- * returned by a TupleQueueReader; to make sure we don't leave a dangling
- * pointer around, clear the working slot first.
+ * storage allocated in the previous tuple cycle. This will also clear
+ * any previous tuple returned by a TupleQueueReader; to make sure we
+ * don't leave a dangling pointer around, clear the working slot first.
*/
ExecClearTuple(node->funnel_slot);
econtext = node->ps.ps_ExprContext;
@@ -241,13 +222,8 @@ ExecGather(GatherState *node)
* back around for another tuple
*/
econtext->ecxt_outertuple = slot;
- resultSlot = ExecProject(node->ps.ps_ProjInfo, &isDone);
- if (isDone != ExprEndResult)
- {
- node->ps.ps_TupFromTlist = (isDone == ExprMultipleResult);
- return resultSlot;
- }
+ return ExecProject(node->ps.ps_ProjInfo);
}
return slot;