diff options
author | Robert Haas <rhaas@postgresql.org> | 2015-09-28 21:55:57 -0400 |
---|---|---|
committer | Robert Haas <rhaas@postgresql.org> | 2015-09-28 21:55:57 -0400 |
commit | d1b7c1ffe72e86932b5395f29e006c3f503bc53d (patch) | |
tree | 9758eda06ae19401beef3c74373ecb076e9f9238 /src/include/executor/execParallel.h | |
parent | 0557dc276f1022965f72dc8bcfc820dfd83a7dc2 (diff) | |
download | postgresql-d1b7c1ffe72e86932b5395f29e006c3f503bc53d.tar.gz postgresql-d1b7c1ffe72e86932b5395f29e006c3f503bc53d.zip |
Parallel executor support.
This code provides infrastructure for a parallel leader to start up
parallel workers to execute subtrees of the plan tree being executed
in the master. User-supplied parameters from ParamListInfo are passed
down, but PARAM_EXEC parameters are not. Various other constructs,
such as initplans, subplans, and CTEs, are also not currently shared.
Nevertheless, there's enough here to support a basic implementation of
parallel query, and we can lift some of the current restrictions as
needed.
Amit Kapila and Robert Haas
Diffstat (limited to 'src/include/executor/execParallel.h')
-rw-r--r-- | src/include/executor/execParallel.h | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/include/executor/execParallel.h b/src/include/executor/execParallel.h new file mode 100644 index 00000000000..4fc797ad982 --- /dev/null +++ b/src/include/executor/execParallel.h @@ -0,0 +1,36 @@ +/*-------------------------------------------------------------------- + * execParallel.h + * POSTGRES parallel execution interface + * + * Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * IDENTIFICATION + * src/include/executor/execParallel.h + *-------------------------------------------------------------------- + */ + +#ifndef EXECPARALLEL_H +#define EXECPARALLEL_H + +#include "access/parallel.h" +#include "nodes/execnodes.h" +#include "nodes/parsenodes.h" +#include "nodes/plannodes.h" + +typedef struct SharedExecutorInstrumentation SharedExecutorInstrumentation; + +typedef struct ParallelExecutorInfo +{ + PlanState *planstate; + ParallelContext *pcxt; + BufferUsage *buffer_usage; + SharedExecutorInstrumentation *instrumentation; + shm_mq_handle **tqueue; +} ParallelExecutorInfo; + +extern ParallelExecutorInfo *ExecInitParallelPlan(PlanState *planstate, + EState *estate, int nworkers); +extern void ExecParallelFinish(ParallelExecutorInfo *pei); + +#endif /* EXECPARALLEL_H */ |