Log Message:
-----------
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.
Modified Files:
--------------
pgsql/src/backend/nodes:
outfuncs.c (r1.259 -> r1.260)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/nodes/outfuncs.c.diff?r1=1.259&r2=1.260)
pgsql/src/backend/optimizer/path:
pathkeys.c (r1.71 -> r1.72)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/path/pathkeys.c.diff?r1=1.71&r2=1.72)
pgsql/src/backend/optimizer/plan:
planmain.c (r1.86 -> r1.87)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/plan/planmain.c.diff?r1=1.86&r2=1.87)
planner.c (r1.191 -> r1.192)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/optimizer/plan/planner.c.diff?r1=1.191&r2=1.192)
pgsql/src/include/nodes:
relation.h (r1.117 -> r1.118)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/nodes/relation.h.diff?r1=1.117&r2=1.118)
pgsql/src/include/optimizer:
paths.h (r1.86 -> r1.87)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/optimizer/paths.h.diff?r1=1.86&r2=1.87)
planmain.h (r1.87 -> r1.88)
(http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/optimizer/planmain.h.diff?r1=1.87&r2=1.88)
---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?
http://archives.postgresql.org