Always call ExecShutdownNode() if appropriate.
Call ExecShutdownNode() after ExecutePlan()'s loop, rather than at each break. We had forgotten to do that in one case. The omission caused intermittent "temporary file leak" warnings from multi-batch parallel hash joins with a LIMIT clause. Back-patch to 11. Though the problem exists in theory in earlier parallel query releases, nothing really depended on it. Author: Kyotaro Horiguchi Reviewed-by: Thomas Munro, Amit Kapila Discussion: https://postgr.es/m/20191111.212418.2222262873417235945.horikyota.ntt%40gmail.com
This commit is contained in:
parent
d61e7f174d
commit
24897e1a1a
@ -1650,15 +1650,7 @@ ExecutePlan(EState *estate,
|
||||
* process so we just end the loop...
|
||||
*/
|
||||
if (TupIsNull(slot))
|
||||
{
|
||||
/*
|
||||
* If we know we won't need to back up, we can release resources
|
||||
* at this point.
|
||||
*/
|
||||
if (!(estate->es_top_eflags & EXEC_FLAG_BACKWARD))
|
||||
(void) ExecShutdownNode(planstate);
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
* If we have a junk filter, then project a new tuple with the junk
|
||||
@ -1701,17 +1693,16 @@ ExecutePlan(EState *estate,
|
||||
*/
|
||||
current_tuple_count++;
|
||||
if (numberTuples && numberTuples == current_tuple_count)
|
||||
{
|
||||
/*
|
||||
* If we know we won't need to back up, we can release resources
|
||||
* at this point.
|
||||
*/
|
||||
if (!(estate->es_top_eflags & EXEC_FLAG_BACKWARD))
|
||||
(void) ExecShutdownNode(planstate);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* If we know we won't need to back up, we can release resources at this
|
||||
* point.
|
||||
*/
|
||||
if (!(estate->es_top_eflags & EXEC_FLAG_BACKWARD))
|
||||
(void) ExecShutdownNode(planstate);
|
||||
|
||||
if (use_parallel_mode)
|
||||
ExitParallelMode();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user