diff options
Diffstat (limited to 'src/backend/executor')
-rw-r--r-- | src/backend/executor/execParallel.c | 2 | ||||
-rw-r--r-- | src/backend/executor/nodeGather.c | 18 |
2 files changed, 8 insertions, 12 deletions
diff --git a/src/backend/executor/execParallel.c b/src/backend/executor/execParallel.c index 95e8e41d2bb..93c786abdbe 100644 --- a/src/backend/executor/execParallel.c +++ b/src/backend/executor/execParallel.c @@ -522,7 +522,7 @@ ExecParallelFinish(ParallelExecutorInfo *pei) WaitForParallelWorkersToFinish(pei->pcxt); /* Next, accumulate buffer usage. */ - for (i = 0; i < pei->pcxt->nworkers; ++i) + for (i = 0; i < pei->pcxt->nworkers_launched; ++i) InstrAccumParallelQuery(&pei->buffer_usage[i]); /* Finally, accumulate instrumentation, if any. */ diff --git a/src/backend/executor/nodeGather.c b/src/backend/executor/nodeGather.c index 16c981b48b2..3f0ed696327 100644 --- a/src/backend/executor/nodeGather.c +++ b/src/backend/executor/nodeGather.c @@ -153,7 +153,6 @@ ExecGather(GatherState *node) if (gather->num_workers > 0 && IsInParallelMode()) { ParallelContext *pcxt; - bool got_any_worker = false; /* Initialize the workers required to execute Gather node. */ if (!node->pei) @@ -169,29 +168,26 @@ ExecGather(GatherState *node) LaunchParallelWorkers(pcxt); /* Set up tuple queue readers to read the results. */ - if (pcxt->nworkers > 0) + if (pcxt->nworkers_launched > 0) { node->nreaders = 0; node->reader = - palloc(pcxt->nworkers * sizeof(TupleQueueReader *)); + palloc(pcxt->nworkers_launched * sizeof(TupleQueueReader *)); - for (i = 0; i < pcxt->nworkers; ++i) + for (i = 0; i < pcxt->nworkers_launched; ++i) { - if (pcxt->worker[i].bgwhandle == NULL) - continue; - shm_mq_set_handle(node->pei->tqueue[i], pcxt->worker[i].bgwhandle); node->reader[node->nreaders++] = CreateTupleQueueReader(node->pei->tqueue[i], fslot->tts_tupleDescriptor); - got_any_worker = true; } } - - /* No workers? Then never mind. */ - if (!got_any_worker) + else + { + /* No workers? Then never mind. */ ExecShutdownGatherWorkers(node); + } } /* Run plan locally if no workers or not single-copy. */ |