mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Remove no-longer-needed loop in ExecGather().
Coverity complained quite properly that commit ea15e1867
had introduced
unreachable code into ExecGather(); to wit, it was no longer possible to
iterate the final for-loop more or less than once. So remove the for().
In passing, clean up a couple of comments, and make better use of a local
variable.
This commit is contained in:
@ -135,8 +135,8 @@ ExecGather(GatherState *node)
|
||||
/*
|
||||
* Initialize the parallel context and workers on first execution. We do
|
||||
* this on first execution rather than during node initialization, as it
|
||||
* needs to allocate large dynamic segment, so it is better to do if it is
|
||||
* really needed.
|
||||
* needs to allocate a large dynamic segment, so it is better to do it
|
||||
* only if it is really needed.
|
||||
*/
|
||||
if (!node->initialized)
|
||||
{
|
||||
@ -201,32 +201,23 @@ ExecGather(GatherState *node)
|
||||
* 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);
|
||||
ExecClearTuple(fslot);
|
||||
econtext = node->ps.ps_ExprContext;
|
||||
ResetExprContext(econtext);
|
||||
|
||||
/* Get and return the next tuple, projecting if necessary. */
|
||||
for (;;)
|
||||
{
|
||||
/*
|
||||
* Get next tuple, either from one of our workers, or by running the
|
||||
* plan ourselves.
|
||||
*/
|
||||
slot = gather_getnext(node);
|
||||
if (TupIsNull(slot))
|
||||
return NULL;
|
||||
/*
|
||||
* Get next tuple, either from one of our workers, or by running the plan
|
||||
* ourselves.
|
||||
*/
|
||||
slot = gather_getnext(node);
|
||||
if (TupIsNull(slot))
|
||||
return NULL;
|
||||
|
||||
/*
|
||||
* form the result tuple using ExecProject(), and return it --- unless
|
||||
* the projection produces an empty set, in which case we must loop
|
||||
* back around for another tuple
|
||||
*/
|
||||
econtext->ecxt_outertuple = slot;
|
||||
|
||||
return ExecProject(node->ps.ps_ProjInfo);
|
||||
}
|
||||
|
||||
return slot;
|
||||
/*
|
||||
* Form the result tuple using ExecProject(), and return it.
|
||||
*/
|
||||
econtext->ecxt_outertuple = slot;
|
||||
return ExecProject(node->ps.ps_ProjInfo);
|
||||
}
|
||||
|
||||
/* ----------------------------------------------------------------
|
||||
|
Reference in New Issue
Block a user