mirror of
https://github.com/postgres/postgres.git
synced 2025-04-27 22:56:53 +03:00
Shut down Gather's children before shutting down Gather itself.
It turns out that the original shutdown order here does not work well. Multiple people attempting to develop further parallel query patches have discovered that they need to do cleanup before the DSM goes away, and you can't do that if the parent node gets cleaned up first. Patch by me, reviewed by KaiGai Kohei and Dilip Kumar. Discussion: http://postgr.es/m/CA+TgmoY6bOc1YnhcAQnMfCBDbsJzROQ3sYxSAL-SYB5tMJcTKg@mail.gmail.com Discussion: http://postgr.es/m/9A28C8860F777E439AA12E8AEA7694F8012AEB82@BPXM15GP.gisp.nec.co.jp Discussion: http://postgr.es/m/CA+TgmoYuPOc=+xrG1v0fCsoLbKAab9F1ddOeaaiLMzKOiBar1Q@mail.gmail.com
This commit is contained in:
parent
d912dd062b
commit
acf555bc53
@ -815,6 +815,8 @@ ExecShutdownNode(PlanState *node)
|
||||
if (node == NULL)
|
||||
return false;
|
||||
|
||||
planstate_tree_walker(node, ExecShutdownNode, NULL);
|
||||
|
||||
switch (nodeTag(node))
|
||||
{
|
||||
case T_GatherState:
|
||||
@ -824,5 +826,5 @@ ExecShutdownNode(PlanState *node)
|
||||
break;
|
||||
}
|
||||
|
||||
return planstate_tree_walker(node, ExecShutdownNode, NULL);
|
||||
return false;
|
||||
}
|
||||
|
@ -229,10 +229,10 @@ ExecGather(GatherState *node)
|
||||
void
|
||||
ExecEndGather(GatherState *node)
|
||||
{
|
||||
ExecEndNode(outerPlanState(node)); /* let children clean up first */
|
||||
ExecShutdownGather(node);
|
||||
ExecFreeExprContext(&node->ps);
|
||||
ExecClearTuple(node->ps.ps_ResultTupleSlot);
|
||||
ExecEndNode(outerPlanState(node));
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
x
Reference in New Issue
Block a user