aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/backend/executor/execUtils.c2
-rw-r--r--src/backend/executor/nodeGather.c7
-rw-r--r--src/backend/executor/nodeGatherMerge.c7
-rw-r--r--src/include/nodes/execnodes.h5
4 files changed, 21 insertions, 0 deletions
diff --git a/src/backend/executor/execUtils.c b/src/backend/executor/execUtils.c
index 5737f9f4ebd..6712302ec8c 100644
--- a/src/backend/executor/execUtils.c
+++ b/src/backend/executor/execUtils.c
@@ -158,6 +158,8 @@ CreateExecutorState(void)
estate->es_sourceText = NULL;
estate->es_use_parallel_mode = false;
+ estate->es_parallel_workers_to_launch = 0;
+ estate->es_parallel_workers_launched = 0;
estate->es_jit_flags = 0;
estate->es_jit = NULL;
diff --git a/src/backend/executor/nodeGather.c b/src/backend/executor/nodeGather.c
index 5d4ffe989cb..7f7edc7f9fc 100644
--- a/src/backend/executor/nodeGather.c
+++ b/src/backend/executor/nodeGather.c
@@ -182,6 +182,13 @@ ExecGather(PlanState *pstate)
/* We save # workers launched for the benefit of EXPLAIN */
node->nworkers_launched = pcxt->nworkers_launched;
+ /*
+ * Count number of workers originally wanted and actually
+ * launched.
+ */
+ estate->es_parallel_workers_to_launch += pcxt->nworkers_to_launch;
+ estate->es_parallel_workers_launched += pcxt->nworkers_launched;
+
/* Set up tuple queue readers to read the results. */
if (pcxt->nworkers_launched > 0)
{
diff --git a/src/backend/executor/nodeGatherMerge.c b/src/backend/executor/nodeGatherMerge.c
index 45f6017c29e..bc99c0b4485 100644
--- a/src/backend/executor/nodeGatherMerge.c
+++ b/src/backend/executor/nodeGatherMerge.c
@@ -223,6 +223,13 @@ ExecGatherMerge(PlanState *pstate)
/* We save # workers launched for the benefit of EXPLAIN */
node->nworkers_launched = pcxt->nworkers_launched;
+ /*
+ * Count number of workers originally wanted and actually
+ * launched.
+ */
+ estate->es_parallel_workers_to_launch += pcxt->nworkers_to_launch;
+ estate->es_parallel_workers_launched += pcxt->nworkers_launched;
+
/* Set up tuple queue readers to read the results. */
if (pcxt->nworkers_launched > 0)
{
diff --git a/src/include/nodes/execnodes.h b/src/include/nodes/execnodes.h
index aab59d681cf..e4698a28c4f 100644
--- a/src/include/nodes/execnodes.h
+++ b/src/include/nodes/execnodes.h
@@ -708,6 +708,11 @@ typedef struct EState
bool es_use_parallel_mode; /* can we use parallel workers? */
+ int es_parallel_workers_to_launch; /* number of workers to
+ * launch. */
+ int es_parallel_workers_launched; /* number of workers actually
+ * launched. */
+
/* The per-query shared memory area to use for parallel execution. */
struct dsa_area *es_query_dsa;