diff options
author | Igor Babaev <igor@askmonty.org> | 2013-04-29 20:31:40 -0700 |
---|---|---|
committer | Igor Babaev <igor@askmonty.org> | 2013-04-29 20:31:40 -0700 |
commit | 86f43c30771cdfbb38f1a958de0e7f131451a988 (patch) | |
tree | 6b2d12c8e8af0ae11fe7fde9844159d38b1956fb /mysql-test/r/select.result | |
parent | ea4a417a8d456e8e09b6b4306f22c7c20b3e594c (diff) | |
download | mariadb-git-86f43c30771cdfbb38f1a958de0e7f131451a988.tar.gz |
Fixed bug mdev-4274.
This bug was the result of incompleteness of the patch for bug mdev-4177.
When an OR condition is simplified to a single conjunct it is merged
into the embedding AND condition. Multiple equalities are also merged,
and any field item involved in those equality should acquire a pointer
to a the multiple equality formed by this merge.
Diffstat (limited to 'mysql-test/r/select.result')
-rw-r--r-- | mysql-test/r/select.result | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/mysql-test/r/select.result b/mysql-test/r/select.result index 3d1dc5ec170..953b1409827 100644 --- a/mysql-test/r/select.result +++ b/mysql-test/r/select.result @@ -5049,6 +5049,7 @@ SELECT 1 FROM t1 GROUP BY 1; 1 1 drop table t1; +set sql_buffer_result= 0; End of 5.1 tests # # BUG#776274: substitution of a single row table @@ -5132,4 +5133,38 @@ AND Time_zone_id = Time_zone_id OR Time_zone_id <> Time_zone_id ) AND Use_leap_seconds <> 'N'; Time_zone_id Use_leap_seconds +# +# Bug mdev-4274: result of simplification of OR badly merged +# into embedding AND +# +CREATE TABLE t1 (a int, b int, INDEX idx(b)) ENGINE=MyISAM; +INSERT INTO t1 VALUES (8,8); +CREATE TABLE t2 (c int, INDEX idx(c)) ENGINE=MyISAM; +INSERT INTO t2 VALUES (8), (9); +EXPLAIN EXTENDED +SELECT * FROM t1 INNER JOIN t2 ON ( c = a ) +WHERE 1 IS NULL OR b < 33 AND b = c; +id select_type table type possible_keys key key_len ref rows filtered Extra +1 SIMPLE t1 system idx NULL NULL NULL 1 100.00 +1 SIMPLE t2 ref idx idx 5 const 1 100.00 Using index +Warnings: +Note 1003 select 8 AS `a`,8 AS `b`,`test`.`t2`.`c` AS `c` from `test`.`t1` join `test`.`t2` where ((`test`.`t2`.`c` = 8) and (8 < 33)) +SELECT * FROM t1 INNER JOIN t2 ON ( c = a ) +WHERE 1 IS NULL OR b < 33 AND b = c; +a b c +8 8 8 +DROP TABLE t1,t2; +# +# Bug mdev-4413: another manifestations of bug mdev-2474 +# (valgrind complains) +# +CREATE TABLE t1 (a int, b int) ENGINE=MyISAM; +INSERT INTO t1 VALUES (7,1); +CREATE TABLE t2 (c int) ENGINE=MyISAM; +INSERT INTO t2 VALUES (0), (8); +SELECT * FROM t1, t2 +WHERE c = a AND +( 0 OR ( b BETWEEN 45 AND 300 OR a > 45 AND a < 100 ) AND b = c ); +a b c +DROP TABLE t1, t2; End of 5.3 tests |