diff options
Diffstat (limited to 'src/backend/executor/nodeGather.c')
-rw-r--r-- | src/backend/executor/nodeGather.c | 18 |
1 files changed, 7 insertions, 11 deletions
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. */ |