1
0
mirror of https://github.com/MariaDB/server.git synced 2025-12-24 11:21:21 +03:00

Merge 5.3->5.5

This commit is contained in:
Igor Babaev
2013-05-04 21:56:45 -07:00
11 changed files with 246 additions and 2 deletions

View File

@@ -13478,7 +13478,27 @@ internal_remove_eq_conds(THD *thd, COND *cond, Item::cond_result *cond_value)
if (new_item_and_list->is_empty())
li.remove();
else
{
Item *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++))
{
uchar* is_subst_valid= (uchar *) Item::ANY_SUBST;
new_list_item=
list_item->compile(&Item::subst_argument_checker,
&is_subst_valid,
&Item::equal_fields_propagator,
(uchar *) &cond_and->cond_equal);
if (new_list_item != list_item)
it.replace(new_list_item);
new_list_item->update_used_tables();
}
li.replace(*new_item_and_list);
for (cnt--; cnt; cnt--)
item= li++;
}
cond_and_list->concat((List<Item>*) cond_equal_items);
}
else if (new_item->type() == Item::FUNC_ITEM &&
@@ -13498,7 +13518,13 @@ internal_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);
}