* Set up tuple queue readers to read the results of a parallel subplan. * * This is separate from ExecInitParallelPlan() because we can launch the * worker processes and let them start doing something before we do this. */
| 872 | * worker processes and let them start doing something before we do this. |
| 873 | */ |
| 874 | void |
| 875 | ExecParallelCreateReaders(ParallelExecutorInfo *pei) |
| 876 | { |
| 877 | int nworkers = pei->pcxt->nworkers_launched; |
| 878 | int i; |
| 879 | |
| 880 | Assert(pei->reader == NULL); |
| 881 | |
| 882 | if (nworkers > 0) |
| 883 | { |
| 884 | pei->reader = (TupleQueueReader **) |
| 885 | palloc(nworkers * sizeof(TupleQueueReader *)); |
| 886 | |
| 887 | for (i = 0; i < nworkers; i++) |
| 888 | { |
| 889 | shm_mq_set_handle(pei->tqueue[i], |
| 890 | pei->pcxt->worker[i].bgwhandle); |
| 891 | pei->reader[i] = CreateTupleQueueReader(pei->tqueue[i]); |
| 892 | } |
| 893 | } |
| 894 | } |
| 895 | |
| 896 | /* |
| 897 | * Re-initialize the parallel executor shared memory state before launching |
no test coverage detected