mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Fix for bug 1974
This commit is contained in:
@ -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)
|
||||
|
Reference in New Issue
Block a user