1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-30 11:03:19 +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:
Tom Lane
2017-01-22 11:47:38 -05:00
parent 8f164e1eea
commit 0a8b9d3b2c

View File

@ -135,8 +135,8 @@ ExecGather(GatherState *node)
/* /*
* Initialize the parallel context and workers on first execution. We do * Initialize the parallel context and workers on first execution. We do
* this on first execution rather than during node initialization, as it * 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 * needs to allocate a large dynamic segment, so it is better to do it
* really needed. * only if it is really needed.
*/ */
if (!node->initialized) if (!node->initialized)
{ {
@ -201,32 +201,23 @@ ExecGather(GatherState *node)
* any previous tuple returned by a TupleQueueReader; to make sure we * any previous tuple returned by a TupleQueueReader; to make sure we
* don't leave a dangling pointer around, clear the working slot first. * don't leave a dangling pointer around, clear the working slot first.
*/ */
ExecClearTuple(node->funnel_slot); ExecClearTuple(fslot);
econtext = node->ps.ps_ExprContext; econtext = node->ps.ps_ExprContext;
ResetExprContext(econtext); 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.
/* */
* Get next tuple, either from one of our workers, or by running the slot = gather_getnext(node);
* plan ourselves. if (TupIsNull(slot))
*/ return NULL;
slot = gather_getnext(node);
if (TupIsNull(slot))
return NULL;
/* /*
* form the result tuple using ExecProject(), and return it --- unless * Form the result tuple using ExecProject(), and return it.
* 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);
econtext->ecxt_outertuple = slot;
return ExecProject(node->ps.ps_ProjInfo);
}
return slot;
} }
/* ---------------------------------------------------------------- /* ----------------------------------------------------------------