| 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 |