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
Branch
------
master
Details
-------
http://git.postgresql.org/pg/commitdiff/d1b7c1ffe72e86932b5395f29e006c3f503bc53d
Modified Files
--------------
src/backend/executor/Makefile | 3 +-
src/backend/executor/execParallel.c | 585 ++++++++++++++++++++++++++++++++++
src/backend/executor/instrument.c | 78 +++++
src/backend/executor/tqueue.c | 4 +-
src/backend/nodes/copyfuncs.c | 1 +
src/backend/nodes/outfuncs.c | 1 +
src/backend/nodes/params.c | 155 +++++++++
src/backend/nodes/readfuncs.c | 1 +
src/backend/optimizer/plan/planner.c | 1 +
src/backend/optimizer/plan/setrefs.c | 5 +
src/backend/utils/adt/datum.c | 118 +++++++
src/include/executor/execParallel.h | 36 +++
src/include/executor/instrument.h | 5 +
src/include/nodes/params.h | 3 +
src/include/nodes/plannodes.h | 1 +
src/include/nodes/relation.h | 2 +
src/include/utils/datum.h | 10 +
17 files changed, 1007 insertions(+), 2 deletions(-)