diff --git a/src/backend/executor/nodeGatherMerge.c b/src/backend/executor/nodeGatherMerge.c index 4a8a59e..2843e42 100644 --- a/src/backend/executor/nodeGatherMerge.c +++ b/src/backend/executor/nodeGatherMerge.c @@ -311,6 +311,12 @@ ExecShutdownGatherMerge(GatherMergeState *node) static void ExecShutdownGatherMergeWorkers(GatherMergeState *node) { + /* + * Free any unused tuples, so we don't leak memory across rescans or after + * shutdown. + */ + gather_merge_clear_tuples(node); + if (node->pei != NULL) ExecParallelFinish(node->pei); @@ -335,9 +341,6 @@ ExecReScanGatherMerge(GatherMergeState *node) /* Make sure any existing workers are gracefully shut down */ ExecShutdownGatherMergeWorkers(node); - /* Free any unused tuples, so we don't leak memory across rescans */ - gather_merge_clear_tuples(node); - /* Mark node so that shared state will be rebuilt at next call */ node->initialized = false; node->gm_initialized = false;