diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2005-08-27 22:13:44 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2005-08-27 22:13:44 +0000 |
commit | 4e5fbb34b361102df41642a6ed9676b8b6a1e75f (patch) | |
tree | 56acd956f301ecd6f33904d5ac05d984ac6bd413 /src/backend/nodes/outfuncs.c | |
parent | 9e56c5a4cff7edb145729c7ba2b19dd8cf1c45cf (diff) | |
download | postgresql-4e5fbb34b361102df41642a6ed9676b8b6a1e75f.tar.gz postgresql-4e5fbb34b361102df41642a6ed9676b8b6a1e75f.zip |
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.
Diffstat (limited to 'src/backend/nodes/outfuncs.c')
-rw-r--r-- | src/backend/nodes/outfuncs.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/backend/nodes/outfuncs.c b/src/backend/nodes/outfuncs.c index c3a19431c48..d6d12363883 100644 --- a/src/backend/nodes/outfuncs.c +++ b/src/backend/nodes/outfuncs.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/nodes/outfuncs.c,v 1.259 2005/08/01 20:31:08 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/nodes/outfuncs.c,v 1.260 2005/08/27 22:13:43 tgl Exp $ * * NOTES * Every node type that can appear in stored rules' parsetrees *must* @@ -1169,6 +1169,9 @@ _outPlannerInfo(StringInfo str, PlannerInfo *node) WRITE_NODE_FIELD(full_join_clauses); WRITE_NODE_FIELD(in_info_list); WRITE_NODE_FIELD(query_pathkeys); + WRITE_NODE_FIELD(group_pathkeys); + WRITE_NODE_FIELD(sort_pathkeys); + WRITE_FLOAT_FIELD(tuple_fraction, "%.4f"); WRITE_BOOL_FIELD(hasJoinRTEs); WRITE_BOOL_FIELD(hasOuterJoins); WRITE_BOOL_FIELD(hasHavingQual); |