summaryrefslogtreecommitdiff
path: root/sql/sql_select.cc
diff options
context:
space:
mode:
authorIgor Babaev <igor@askmonty.org>2013-08-29 21:02:42 -0700
committerIgor Babaev <igor@askmonty.org>2013-08-29 21:02:42 -0700
commit576a2b153320ab1fbfd4df06a30bf1f52e569cba (patch)
tree90a72321752ae4420ea3651bbd7df6ec24b2d9f2 /sql/sql_select.cc
parent37f18d2318c966b84a5e91a31c0985a9b2d0d9fd (diff)
downloadmariadb-git-576a2b153320ab1fbfd4df06a30bf1f52e569cba.tar.gz
Fixed bug mdev-4971.
The function propagate_new_equalities() did not updated properly the references to inherited multiple equalities.
Diffstat (limited to 'sql/sql_select.cc')
-rw-r--r--sql/sql_select.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 79b11fa934f..4543176ea5e 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -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);