aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2005-08-27 22:37:00 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2005-08-27 22:37:00 +0000
commit974e3cf30afe783c26cfcdc0658833a682f6b357 (patch)
tree1ffd184cdf50d4ae847f3476e856c9ac59d00c6b /src
parent4e5fbb34b361102df41642a6ed9676b8b6a1e75f (diff)
downloadpostgresql-974e3cf30afe783c26cfcdc0658833a682f6b357.tar.gz
postgresql-974e3cf30afe783c26cfcdc0658833a682f6b357.zip
cost_agg really ought to charge something per output tuple; else there
are cases where it appears to have zero run cost.
Diffstat (limited to 'src')
-rw-r--r--src/backend/optimizer/path/costsize.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/backend/optimizer/path/costsize.c b/src/backend/optimizer/path/costsize.c
index b70b544e221..24af7afe799 100644
--- a/src/backend/optimizer/path/costsize.c
+++ b/src/backend/optimizer/path/costsize.c
@@ -49,7 +49,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/optimizer/path/costsize.c,v 1.146 2005/06/05 22:32:55 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/optimizer/path/costsize.c,v 1.147 2005/08/27 22:37:00 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -872,7 +872,7 @@ cost_agg(Path *path, PlannerInfo *root,
* for grouping comparisons.
*
* We will produce a single output tuple if not grouping, and a tuple per
- * group otherwise.
+ * group otherwise. We charge cpu_tuple_cost for each output tuple.
*
* Note: in this cost model, AGG_SORTED and AGG_HASHED have exactly the
* same total CPU cost, but AGG_SORTED has lower startup cost. If the
@@ -888,7 +888,7 @@ cost_agg(Path *path, PlannerInfo *root,
startup_cost = input_total_cost;
startup_cost += cpu_operator_cost * (input_tuples + 1) * numAggs;
/* we aren't grouping */
- total_cost = startup_cost;
+ total_cost = startup_cost + cpu_tuple_cost;
}
else if (aggstrategy == AGG_SORTED)
{
@@ -899,6 +899,7 @@ cost_agg(Path *path, PlannerInfo *root,
total_cost += cpu_operator_cost * input_tuples * numGroupCols;
total_cost += cpu_operator_cost * input_tuples * numAggs;
total_cost += cpu_operator_cost * numGroups * numAggs;
+ total_cost += cpu_tuple_cost * numGroups;
}
else
{
@@ -908,6 +909,7 @@ cost_agg(Path *path, PlannerInfo *root,
startup_cost += cpu_operator_cost * input_tuples * numAggs;
total_cost = startup_cost;
total_cost += cpu_operator_cost * numGroups * numAggs;
+ total_cost += cpu_tuple_cost * numGroups;
}
path->startup_cost = startup_cost;