]> granicus.if.org Git - postgresql/commit
First phase of implementing hash-based grouping/aggregation. An AGG plan
authorTom Lane <tgl@sss.pgh.pa.us>
Wed, 6 Nov 2002 00:00:45 +0000 (00:00 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Wed, 6 Nov 2002 00:00:45 +0000 (00:00 +0000)
commitf6dba10e623fa575c8446f854aa63c97d4fedea3
tree2c5eb86c8e2961c90b524b49f25e3c25efa6eee2
parenta8c18b980e1e00fe08ac02562f81e3e64d4e9fd4
First phase of implementing hash-based grouping/aggregation.  An AGG plan
node now does its own grouping of the input rows, and has no need for a
preceding GROUP node in the plan pipeline.  This allows elimination of
the misnamed tuplePerGroup option for GROUP, and actually saves more code
in nodeGroup.c than it costs in nodeAgg.c, as well as being presumably
faster.  Restructure the API of query_planner so that we do not commit to
using a sorted or unsorted plan in query_planner; instead grouping_planner
makes the decision.  (Right now it isn't any smarter than query_planner
was, but that will change as soon as it has the option to select a hash-
based aggregation step.)  Despite all the hackery, no initdb needed since
only in-memory node types changed.
22 files changed:
src/backend/commands/explain.c
src/backend/executor/nodeAgg.c
src/backend/executor/nodeGroup.c
src/backend/nodes/copyfuncs.c
src/backend/nodes/equalfuncs.c
src/backend/nodes/outfuncs.c
src/backend/nodes/readfuncs.c
src/backend/optimizer/README
src/backend/optimizer/geqo/geqo_misc.c
src/backend/optimizer/path/allpaths.c
src/backend/optimizer/plan/createplan.c
src/backend/optimizer/plan/planmain.c
src/backend/optimizer/plan/planner.c
src/backend/optimizer/util/pathnode.c
src/include/nodes/execnodes.h
src/include/nodes/nodes.h
src/include/nodes/parsenodes.h
src/include/nodes/plannodes.h
src/include/nodes/relation.h
src/include/optimizer/geqo_misc.h
src/include/optimizer/pathnode.h
src/include/optimizer/planmain.h