1
0
mirror of https://github.com/MariaDB/server.git synced 2025-10-12 12:25:37 +03:00

Fixed bug mdev-4971.

The function propagate_new_equalities() did not updated properly
the references to inherited multiple equalities.
This commit is contained in:
Igor Babaev
2013-08-29 21:02:42 -07:00
parent 37f18d2318
commit 576a2b1533
6 changed files with 102 additions and 2 deletions

View File

@@ -13188,7 +13188,8 @@ void propagate_new_equalities(THD *thd, Item *cond,
{
Item_cond_and *cond_and= (Item_cond_and *) cond;
List<Item_equal> *cond_equalities= &cond_and->cond_equal.current_level;
inherited= cond_and->cond_equal.upper_levels;
cond_and->cond_equal.upper_levels= inherited;
inherited= &cond_and->cond_equal;
if (!cond_equalities->is_empty() && cond_equalities != new_equalities)
{
Item_equal *equal_item;
@@ -13223,6 +13224,7 @@ void propagate_new_equalities(THD *thd, Item *cond,
Item_equal *equal_item;
List_iterator<Item_equal> it(*new_equalities);
Item_equal *equality= (Item_equal *) cond;
equality->upper_levels= inherited;
while ((equal_item= it++))
{
equality->merge_with_check(equal_item, true);