Support parallel aggregation.

Parallel workers can now partially aggregate the data and pass the

transition values back to the leader, which can combine the partial

results to produce the final answer.

David Rowley, based on earlier work by Haribabu Kommi. Reviewed by

Álvaro Herrera, Tomas Vondra, Amit Kapila, James Sewell, and me.

Branch

------

master

Details

-------

http://git.postgresql.org/pg/commitdiff/e06a38965b3bcdaa881e7e06892d4d8ab6c2c980

Modified Files

--------------

src/backend/executor/execQual.c | 8 +

src/backend/nodes/copyfuncs.c | 1 +

src/backend/nodes/equalfuncs.c | 1 +

src/backend/nodes/nodeFuncs.c | 2 +-

src/backend/nodes/outfuncs.c | 1 +

src/backend/nodes/readfuncs.c | 1 +

src/backend/optimizer/path/allpaths.c | 3 +-

src/backend/optimizer/path/costsize.c | 12 +-

src/backend/optimizer/plan/createplan.c | 4 +-

src/backend/optimizer/plan/planner.c | 520 ++++++++++++++++++++++++++++----

src/backend/optimizer/plan/setrefs.c | 251 ++++++++++++++-

src/backend/optimizer/prep/prepunion.c | 4 +-

src/backend/optimizer/util/clauses.c | 79 +++++

src/backend/optimizer/util/pathnode.c | 16 +-

src/backend/optimizer/util/tlist.c | 45 +++

src/backend/parser/parse_func.c | 3 +-

src/include/catalog/catversion.h | 2 +-

src/include/nodes/primnodes.h | 11 +-

src/include/nodes/relation.h | 2 +

src/include/optimizer/clauses.h | 18 ++

src/include/optimizer/cost.h | 2 +-

src/include/optimizer/pathnode.h | 7 +-

src/include/optimizer/tlist.h | 1 +

23 files changed, 911 insertions(+), 83 deletions(-)