Commit aaf9fb0d authored by Igor Babaev's avatar Igor Babaev

Fixed LP bug #776274,

The bug was introduced by the patch that fixed bug 717577.
parent 8ac88c88
...@@ -5018,3 +5018,16 @@ WHERE t7.f71>0; ...@@ -5018,3 +5018,16 @@ WHERE t7.f71>0;
f23 f23
DROP TABLE t1,t2,t3,t4,t5,t6,t7; DROP TABLE t1,t2,t3,t4,t5,t6,t7;
End of 5.1 tests End of 5.1 tests
#
# BUG#776274: substitution of a single row table
#
CREATE TABLE t1 (a int NOT NULL , b int);
INSERT INTO t1 VALUES (2,2);
SELECT * FROM t1 WHERE a = b;
a b
2 2
EXPLAIN
SELECT * FROM t1 WHERE a = b;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 system NULL NULL NULL NULL 1
DROP TABLE t1;
...@@ -5025,6 +5025,19 @@ WHERE t7.f71>0; ...@@ -5025,6 +5025,19 @@ WHERE t7.f71>0;
f23 f23
DROP TABLE t1,t2,t3,t4,t5,t6,t7; DROP TABLE t1,t2,t3,t4,t5,t6,t7;
End of 5.1 tests End of 5.1 tests
#
# BUG#776274: substitution of a single row table
#
CREATE TABLE t1 (a int NOT NULL , b int);
INSERT INTO t1 VALUES (2,2);
SELECT * FROM t1 WHERE a = b;
a b
2 2
EXPLAIN
SELECT * FROM t1 WHERE a = b;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 system NULL NULL NULL NULL 1
DROP TABLE t1;
set join_cache_level=default; set join_cache_level=default;
show variables like 'join_cache_level'; show variables like 'join_cache_level';
Variable_name Value Variable_name Value
......
...@@ -5018,3 +5018,16 @@ WHERE t7.f71>0; ...@@ -5018,3 +5018,16 @@ WHERE t7.f71>0;
f23 f23
DROP TABLE t1,t2,t3,t4,t5,t6,t7; DROP TABLE t1,t2,t3,t4,t5,t6,t7;
End of 5.1 tests End of 5.1 tests
#
# BUG#776274: substitution of a single row table
#
CREATE TABLE t1 (a int NOT NULL , b int);
INSERT INTO t1 VALUES (2,2);
SELECT * FROM t1 WHERE a = b;
a b
2 2
EXPLAIN
SELECT * FROM t1 WHERE a = b;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 system NULL NULL NULL NULL 1
DROP TABLE t1;
...@@ -4211,3 +4211,17 @@ SELECT t2.f23 FROM ...@@ -4211,3 +4211,17 @@ SELECT t2.f23 FROM
DROP TABLE t1,t2,t3,t4,t5,t6,t7; DROP TABLE t1,t2,t3,t4,t5,t6,t7;
--echo End of 5.1 tests --echo End of 5.1 tests
--echo #
--echo # BUG#776274: substitution of a single row table
--echo #
CREATE TABLE t1 (a int NOT NULL , b int);
INSERT INTO t1 VALUES (2,2);
SELECT * FROM t1 WHERE a = b;
EXPLAIN
SELECT * FROM t1 WHERE a = b;
DROP TABLE t1;
...@@ -5740,18 +5740,19 @@ void Item_equal::update_const() ...@@ -5740,18 +5740,19 @@ void Item_equal::update_const()
List_iterator<Item> it(equal_items); List_iterator<Item> it(equal_items);
if (with_const) if (with_const)
it++; it++;
Item *item= it++; Item *item;
while (item) while ((item= it++))
{ {
if (item->const_item()) if (item->const_item())
{ {
it.remove(); if (item == equal_items.head())
Item *next_item= it++; with_const= TRUE;
add_const(item); else
item= next_item; {
} it.remove();
else add_const(item);
item= it++; }
}
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment