aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/nodeGather.c
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2017-02-22 07:59:27 +0530
committerRobert Haas <rhaas@postgresql.org>2017-02-22 08:08:07 +0530
commitacf555bc53acb589b5a2827e65d655fa8c9adee0 (patch)
tree78ba8654993bf1c9dc443b2b7e29c5ac421d1a1d /src/backend/executor/nodeGather.c
parentd912dd062b64287adcabab4180abafefd07cea14 (diff)
downloadpostgresql-acf555bc53acb589b5a2827e65d655fa8c9adee0.tar.gz
postgresql-acf555bc53acb589b5a2827e65d655fa8c9adee0.zip
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
Diffstat (limited to 'src/backend/executor/nodeGather.c')
-rw-r--r--src/backend/executor/nodeGather.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/backend/executor/nodeGather.c b/src/backend/executor/nodeGather.c
index a1a3561d48c..32c97d390e0 100644
--- a/src/backend/executor/nodeGather.c
+++ b/src/backend/executor/nodeGather.c
@@ -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));
}
/*