release_memory_at_gather_merge_shutdown_v1.patch
application/octet-stream
Filename: release_memory_at_gather_merge_shutdown_v1.patch
Type: application/octet-stream
Part: 0
Patch
Format: unified
Series: patch v1
| File | + | − |
|---|---|---|
| src/backend/executor/nodeGatherMerge.c | 6 | 3 |
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;