summaryrefslogtreecommitdiff
path: root/sql/opt_range.cc
diff options
context:
space:
mode:
authorigor@rurik.mysql.com <>2003-11-28 15:28:21 -0800
committerigor@rurik.mysql.com <>2003-11-28 15:28:21 -0800
commit2cd53b7ac62ce5d945373e9939e4902a88b1de45 (patch)
tree40201d44e1c79ef4a6f6096f7f06d2f26f0dc9ea /sql/opt_range.cc
parent1a3a62c3908ccfc78f443f1720453be6d7d87eab (diff)
parent82270288de9244ff2b1ae5a58d66add2a13d6e70 (diff)
downloadmariadb-git-2cd53b7ac62ce5d945373e9939e4902a88b1de45.tar.gz
Merge rurik.mysql.com:/home/igor/mysql-5.0
into rurik.mysql.com:/home/igor/dev/mysql-5.0-0
Diffstat (limited to 'sql/opt_range.cc')
-rw-r--r--sql/opt_range.cc23
1 files changed, 13 insertions, 10 deletions
diff --git a/sql/opt_range.cc b/sql/opt_range.cc
index 789c9cb9f3e..593ed7c6f53 100644
--- a/sql/opt_range.cc
+++ b/sql/opt_range.cc
@@ -1018,6 +1018,7 @@ int SQL_SELECT::test_quick_select(THD *thd, key_map keys_to_use,
List_iterator_fast<SEL_IMERGE> it(tree->merges);
while ((imerge= it++))
{
+ bool imerge_failed= false;
double imerge_cost= 0;
ha_rows imerge_total_records= 0;
double tree_read_time;
@@ -1036,21 +1037,23 @@ int SQL_SELECT::test_quick_select(THD *thd, key_map keys_to_use,
&tree_read_time, &tree_records,
&(imerge->best_keys[ptree -
imerge->trees])))
- goto imerge_fail;
-
+ imerge_failed= true;
imerge_cost += tree_read_time;
imerge_total_records += tree_records;
}
- imerge_total_records= min(imerge_total_records,
- head->file->records);
- imerge_cost += imerge_total_records / TIME_FOR_COMPARE;
- if (imerge_cost < min_imerge_cost)
+
+ if (!imerge_failed)
{
- min_imerge= imerge;
- min_imerge_cost= imerge_cost;
- min_imerge_records= imerge_total_records;
+ imerge_total_records= min(imerge_total_records,
+ head->file->records);
+ imerge_cost += imerge_total_records / TIME_FOR_COMPARE;
+ if (imerge_cost < min_imerge_cost)
+ {
+ min_imerge= imerge;
+ min_imerge_cost= imerge_cost;
+ min_imerge_records= imerge_total_records;
+ }
}
-imerge_fail:;
}
if (!min_imerge)