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
Message: Re: [HACKERS] [POC] Faster processing at Gather node

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;