diff options
author | igor@rurik.mysql.com <> | 2003-11-28 15:28:21 -0800 |
---|---|---|
committer | igor@rurik.mysql.com <> | 2003-11-28 15:28:21 -0800 |
commit | 2cd53b7ac62ce5d945373e9939e4902a88b1de45 (patch) | |
tree | 40201d44e1c79ef4a6f6096f7f06d2f26f0dc9ea /sql/opt_range.cc | |
parent | 1a3a62c3908ccfc78f443f1720453be6d7d87eab (diff) | |
parent | 82270288de9244ff2b1ae5a58d66add2a13d6e70 (diff) | |
download | mariadb-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.cc | 23 |
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) |