/* ---------------------------------------------------------------- * ExecShutdownGatherMergeWorkers * * Stop all the parallel workers. * ---------------------------------------------------------------- */ static void ExecShutdownGatherMergeWorkers(GatherMergeState *node) { if (node->pei != NULL) ExecParallelFinish(node->pei); /* Flush local copy of reader array */ if (node->reader) pfree(node->reader); node->reader = NULL; }
/* ---------------------------------------------------------------- * ExecShutdownGatherWorkers * * Destroy the parallel workers. Collect all the stats after * workers are stopped, else some work done by workers won't be * accounted. * ---------------------------------------------------------------- */ static void ExecShutdownGatherWorkers(GatherState *node) { /* Shut down tuple queue readers before shutting down workers. */ if (node->reader != NULL) { int i; for (i = 0; i < node->nreaders; ++i) DestroyTupleQueueReader(node->reader[i]); node->reader = NULL; } /* Now shut down the workers. */ if (node->pei != NULL) ExecParallelFinish(node->pei); }