aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/nodeGather.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/executor/nodeGather.c')
-rw-r--r--src/backend/executor/nodeGather.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/backend/executor/nodeGather.c b/src/backend/executor/nodeGather.c
index 639f4f5af88..0298c65d065 100644
--- a/src/backend/executor/nodeGather.c
+++ b/src/backend/executor/nodeGather.c
@@ -38,6 +38,7 @@
#include "executor/nodeSubplan.h"
#include "executor/tqueue.h"
#include "miscadmin.h"
+#include "optimizer/planmain.h"
#include "pgstat.h"
#include "utils/memutils.h"
#include "utils/rel.h"
@@ -73,7 +74,8 @@ ExecInitGather(Gather *node, EState *estate, int eflags)
gatherstate->ps.ExecProcNode = ExecGather;
gatherstate->initialized = false;
- gatherstate->need_to_scan_locally = !node->single_copy;
+ gatherstate->need_to_scan_locally =
+ !node->single_copy && parallel_leader_participation;
gatherstate->tuples_needed = -1;
/*
@@ -193,9 +195,9 @@ ExecGather(PlanState *pstate)
node->nextreader = 0;
}
- /* Run plan locally if no workers or not single-copy. */
+ /* Run plan locally if no workers or enabled and not single-copy. */
node->need_to_scan_locally = (node->nreaders == 0)
- || !gather->single_copy;
+ || (!gather->single_copy && parallel_leader_participation);
node->initialized = true;
}