summaryrefslogtreecommitdiff
path: root/sql/sql_select.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/sql_select.cc')
-rw-r--r--sql/sql_select.cc15
1 files changed, 12 insertions, 3 deletions
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index b5f76608672..3ccebf688e2 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -13197,7 +13197,8 @@ remove_eq_conds(THD *thd, COND *cond, Item::cond_result *cond_value)
else
{
Item *list_item;
- Item *new_list_item;
+ Item *new_list_item;
+ uint cnt= new_item_and_list->elements;
List_iterator<Item> it(*new_item_and_list);
while ((list_item= it++))
{
@@ -13211,7 +13212,9 @@ remove_eq_conds(THD *thd, COND *cond, Item::cond_result *cond_value)
it.replace(new_list_item);
new_list_item->update_used_tables();
}
- li.replace(*new_item_and_list);
+ li.replace(*new_item_and_list);
+ for (cnt--; cnt; cnt--)
+ item= li++;
}
cond_and_list->concat((List<Item>*) cond_equal_items);
}
@@ -13232,7 +13235,13 @@ remove_eq_conds(THD *thd, COND *cond, Item::cond_result *cond_value)
if (new_item->type() == Item::COND_ITEM &&
((Item_cond*) new_item)->functype() ==
((Item_cond*) cond)->functype())
- li.replace(*((Item_cond*) new_item)->argument_list());
+ {
+ List<Item> *arg_list= ((Item_cond*) new_item)->argument_list();
+ uint cnt= arg_list->elements;
+ li.replace(*arg_list);
+ for ( cnt--; cnt; cnt--)
+ item= li++;
+ }
else
li.replace(new_item);
}