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
22typedef struct SharedExecutorInstrumentation SharedExecutorInstrumentation;
23
24typedef 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
39extern ParallelExecutorInfo *ExecInitParallelPlan(PlanState *planstate,
40 EState *estate, Bitmapset *sendParam, int nworkers,
41 int64 tuples_needed);
42extern void ExecParallelCreateReaders(ParallelExecutorInfo *pei);
43extern void ExecParallelFinish(ParallelExecutorInfo *pei);
44extern void ExecParallelCleanup(ParallelExecutorInfo *pei);
45extern void ExecParallelReinitialize(PlanState *planstate,
46 ParallelExecutorInfo *pei, Bitmapset *sendParam);
47
48extern void ParallelQueryMain(dsm_segment *seg, shm_toc *toc);
49
50#endif /* EXECPARALLEL_H */
51