mirror of
https://github.com/postgres/postgres.git
synced 2025-07-03 20:02:46 +03:00
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
This commit is contained in:
@ -49,23 +49,6 @@ ExecGroup(GroupState *node)
|
||||
numCols = ((Group *) node->ss.ps.plan)->numCols;
|
||||
grpColIdx = ((Group *) node->ss.ps.plan)->grpColIdx;
|
||||
|
||||
/*
|
||||
* Check to see if we're still projecting out tuples from a previous group
|
||||
* tuple (because there is a function-returning-set in the projection
|
||||
* expressions). If so, try to project another one.
|
||||
*/
|
||||
if (node->ss.ps.ps_TupFromTlist)
|
||||
{
|
||||
TupleTableSlot *result;
|
||||
ExprDoneCond isDone;
|
||||
|
||||
result = ExecProject(node->ss.ps.ps_ProjInfo, &isDone);
|
||||
if (isDone == ExprMultipleResult)
|
||||
return result;
|
||||
/* Done with that source tuple... */
|
||||
node->ss.ps.ps_TupFromTlist = false;
|
||||
}
|
||||
|
||||
/*
|
||||
* The ScanTupleSlot holds the (copied) first tuple of each group.
|
||||
*/
|
||||
@ -107,16 +90,7 @@ ExecGroup(GroupState *node)
|
||||
/*
|
||||
* Form and return a projection tuple using the first input tuple.
|
||||
*/
|
||||
TupleTableSlot *result;
|
||||
ExprDoneCond isDone;
|
||||
|
||||
result = ExecProject(node->ss.ps.ps_ProjInfo, &isDone);
|
||||
|
||||
if (isDone != ExprEndResult)
|
||||
{
|
||||
node->ss.ps.ps_TupFromTlist = (isDone == ExprMultipleResult);
|
||||
return result;
|
||||
}
|
||||
return ExecProject(node->ss.ps.ps_ProjInfo);
|
||||
}
|
||||
else
|
||||
InstrCountFiltered1(node, 1);
|
||||
@ -170,16 +144,7 @@ ExecGroup(GroupState *node)
|
||||
/*
|
||||
* Form and return a projection tuple using the first input tuple.
|
||||
*/
|
||||
TupleTableSlot *result;
|
||||
ExprDoneCond isDone;
|
||||
|
||||
result = ExecProject(node->ss.ps.ps_ProjInfo, &isDone);
|
||||
|
||||
if (isDone != ExprEndResult)
|
||||
{
|
||||
node->ss.ps.ps_TupFromTlist = (isDone == ExprMultipleResult);
|
||||
return result;
|
||||
}
|
||||
return ExecProject(node->ss.ps.ps_ProjInfo);
|
||||
}
|
||||
else
|
||||
InstrCountFiltered1(node, 1);
|
||||
@ -246,8 +211,6 @@ ExecInitGroup(Group *node, EState *estate, int eflags)
|
||||
ExecAssignResultTypeFromTL(&grpstate->ss.ps);
|
||||
ExecAssignProjectionInfo(&grpstate->ss.ps, NULL);
|
||||
|
||||
grpstate->ss.ps.ps_TupFromTlist = false;
|
||||
|
||||
/*
|
||||
* Precompute fmgr lookup data for inner loop
|
||||
*/
|
||||
@ -283,7 +246,6 @@ ExecReScanGroup(GroupState *node)
|
||||
PlanState *outerPlan = outerPlanState(node);
|
||||
|
||||
node->grp_done = FALSE;
|
||||
node->ss.ps.ps_TupFromTlist = false;
|
||||
/* must clear first tuple */
|
||||
ExecClearTuple(node->ss.ss_ScanTupleSlot);
|
||||
|
||||
|
Reference in New Issue
Block a user