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:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user