From cbd57af8ed17d75f9551da476c7ab5625e7a5f7d Mon Sep 17 00:00:00 2001 From: "sergefp@mysql.com" <> Date: Sun, 30 Jul 2006 00:02:09 +0400 Subject: [PATCH] BUG#14940: post-review fixes --- sql/opt_range.cc | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/sql/opt_range.cc b/sql/opt_range.cc index 634f08a5953..ea7654dc8aa 100644 --- a/sql/opt_range.cc +++ b/sql/opt_range.cc @@ -1872,14 +1872,17 @@ static int fill_used_fields_bitmap(PARAM *param) correlations between sets of rows they will return. For example, if values of tbl.key1 and tbl.key2 are independent (a right - assumption if we have no infromation about their correlation) then the + assumption if we have no information about their correlation) then the correct estimate will be: E(#rows("tbl.key1 < c1 AND tbl.key2 < c2")) = - = E(#rows(tbl.key1 < c1)) / total_rows(tbl) * E(#rows(tbl.key2 < c2) / - total_rows(tbl). + = E(#rows(tbl.key1 < c1)) / total_rows(tbl) * E(#rows(tbl.key2 < c2) - which is smaller than MIN(rows(tbl.key1 < c1), rows(tbl.key2 < c2)). + which is smaller than + + MIN(E(#rows(tbl.key1 < c1), E(#rows(tbl.key2 < c2))) + + which is currently produced. TODO * Change the value returned in quick_condition_rows from a pessimistic @@ -4469,8 +4472,7 @@ TRP_ROR_INTERSECT *get_best_covering_ror_intersect(PARAM *param, trp->read_cost= total_cost; trp->records= records; trp->cpk_scan= NULL; - if (records < param->table->quick_condition_rows) - param->table->quick_condition_rows= records; + set_if_smaller(param->table->quick_condition_rows, records); DBUG_PRINT("info", ("Returning covering ROR-intersect plan: cost %g, records %lu",