Parallel executor support.
Robert Haas <rhaas@postgresql.org>
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
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/executor/execParallel.c | added | +585 −0 |
| src/backend/executor/instrument.c | modified | +78 −0 |
| src/backend/executor/Makefile | modified | +2 −1 |
| src/backend/executor/tqueue.c | modified | +3 −1 |
| src/backend/nodes/copyfuncs.c | modified | +1 −0 |
| src/backend/nodes/outfuncs.c | modified | +1 −0 |
| src/backend/nodes/params.c | modified | +155 −0 |
| src/backend/nodes/readfuncs.c | modified | +1 −0 |
| src/backend/optimizer/plan/planner.c | modified | +1 −0 |
| src/backend/optimizer/plan/setrefs.c | modified | +5 −0 |
| src/backend/utils/adt/datum.c | modified | +118 −0 |
| src/include/executor/execParallel.h | added | +36 −0 |
| src/include/executor/instrument.h | modified | +5 −0 |
| src/include/nodes/params.h | modified | +3 −0 |
| src/include/nodes/plannodes.h | modified | +1 −0 |
| src/include/nodes/relation.h | modified | +2 −0 |
| src/include/utils/datum.h | modified | +10 −0 |