]> granicus.if.org Git - postgresql/commit
Change the division of labor between grouping_planner and query_planner
authorTom Lane <tgl@sss.pgh.pa.us>
Sat, 27 Aug 2005 22:13:44 +0000 (22:13 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Sat, 27 Aug 2005 22:13:44 +0000 (22:13 +0000)
commit4e5fbb34b361102df41642a6ed9676b8b6a1e75f
tree56acd956f301ecd6f33904d5ac05d984ac6bd413
parent9e56c5a4cff7edb145729c7ba2b19dd8cf1c45cf
Change the division of labor between grouping_planner and query_planner
so that the latter estimates the number of groups that grouping will
produce.  This is needed because it is primarily query_planner that
makes the decision between fast-start and fast-finish plans, and in the
original coding it was unable to make more than a crude rule-of-thumb
choice when the query involved grouping.  This revision helps us make
saner choices for queries like SELECT ... GROUP BY ... LIMIT, as in a
recent example from Mark Kirkwood.  Also move the responsibility for
canonicalizing sort_pathkeys and group_pathkeys into query_planner;
this information has to be available anyway to support the first change,
and doing it this way lets us get rid of compare_noncanonical_pathkeys
entirely.
src/backend/nodes/outfuncs.c
src/backend/optimizer/path/pathkeys.c
src/backend/optimizer/plan/planmain.c
src/backend/optimizer/plan/planner.c
src/include/nodes/relation.h
src/include/optimizer/paths.h
src/include/optimizer/planmain.h