| 1 | /*-------------------------------------------------------------------- |
|---|---|
| 2 | * execParallel.h |
| 3 | * POSTGRES parallel execution interface |
| 4 | * |
| 5 | * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group |
| 6 | * Portions Copyright (c) 1994, Regents of the University of California |
| 7 | * |
| 8 | * IDENTIFICATION |
| 9 | * src/include/executor/execParallel.h |
| 10 | *-------------------------------------------------------------------- |
| 11 | */ |
| 12 | |
| 13 | #ifndef EXECPARALLEL_H |
| 14 | #define EXECPARALLEL_H |
| 15 | |
| 16 | #include "access/parallel.h" |
| 17 | #include "nodes/execnodes.h" |
| 18 | #include "nodes/parsenodes.h" |
| 19 | #include "nodes/plannodes.h" |
| 20 | #include "utils/dsa.h" |
| 21 | |
| 22 | typedef struct SharedExecutorInstrumentation SharedExecutorInstrumentation; |
| 23 | |
| 24 | typedef struct ParallelExecutorInfo |
| 25 | { |
| 26 | PlanState *planstate; /* plan subtree we're running in parallel */ |
| 27 | ParallelContext *pcxt; /* parallel context we're using */ |
| 28 | BufferUsage *buffer_usage; /* points to bufusage area in DSM */ |
| 29 | SharedExecutorInstrumentation *instrumentation; /* optional */ |
| 30 | struct SharedJitInstrumentation *jit_instrumentation; /* optional */ |
| 31 | dsa_area *area; /* points to DSA area in DSM */ |
| 32 | dsa_pointer param_exec; /* serialized PARAM_EXEC parameters */ |
| 33 | bool finished; /* set true by ExecParallelFinish */ |
| 34 | /* These two arrays have pcxt->nworkers_launched entries: */ |
| 35 | shm_mq_handle **tqueue; /* tuple queues for worker output */ |
| 36 | struct TupleQueueReader **reader; /* tuple reader/writer support */ |
| 37 | } ParallelExecutorInfo; |
| 38 | |
| 39 | extern ParallelExecutorInfo *ExecInitParallelPlan(PlanState *planstate, |
| 40 | EState *estate, Bitmapset *sendParam, int nworkers, |
| 41 | int64 tuples_needed); |
| 42 | extern void ExecParallelCreateReaders(ParallelExecutorInfo *pei); |
| 43 | extern void ExecParallelFinish(ParallelExecutorInfo *pei); |
| 44 | extern void ExecParallelCleanup(ParallelExecutorInfo *pei); |
| 45 | extern void ExecParallelReinitialize(PlanState *planstate, |
| 46 | ParallelExecutorInfo *pei, Bitmapset *sendParam); |
| 47 | |
| 48 | extern void ParallelQueryMain(dsm_segment *seg, shm_toc *toc); |
| 49 | |
| 50 | #endif /* EXECPARALLEL_H */ |
| 51 |