mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-7149 Constant propagation erroneously applied for LIKE
Simply disallowing equality propagation into LIKE. A more delicate fix is be possible, but it would need too many changes, which is not desirable in 10.0 at this point.
This commit is contained in:
39
mysql-test/include/ctype_like_cond_propagation.inc
Normal file
39
mysql-test/include/ctype_like_cond_propagation.inc
Normal file
@ -0,0 +1,39 @@
|
||||
--echo #
|
||||
--echo # MDEV-7149 Constant condition propagation erroneously applied for LIKE
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='a';
|
||||
SELECT * FROM t1 WHERE CONCAT(c1) LIKE 'a ';
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='a' AND CONCAT(c1) LIKE 'a ';
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE CONCAT(c1)='a' AND CONCAT(c1) LIKE 'a ';
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
INSERT INTO t1 VALUES ('a'),('a ');
|
||||
SELECT * FROM t1 WHERE 'a'=CONCAT(c1);
|
||||
SELECT * FROM t1 WHERE 'a ' LIKE CONCAT(c1);
|
||||
SELECT * FROM t1 WHERE 'a'=CONCAT(c1) AND 'a ' LIKE CONCAT(c1);
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE 'a'=CONCAT(c1) AND 'a ' LIKE CONCAT(c1);
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
INSERT INTO t1 VALUES ('%'),('% ');
|
||||
SELECT * FROM t1 WHERE '% '=CONCAT(c1);
|
||||
SELECT * FROM t1 WHERE 'a' LIKE CONCAT(c1);
|
||||
SELECT * FROM t1 WHERE '% '=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE '% '=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
DROP TABLE t1;
|
||||
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a', 10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
INSERT INTO t1 VALUES ('%'),('% ');
|
||||
SELECT * FROM t1 WHERE '%'=CONCAT(c1);
|
||||
SELECT * FROM t1 WHERE 'a' LIKE CONCAT(c1);
|
||||
SELECT * FROM t1 WHERE '%'=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE '%'=CONCAT(c1) AND 'a' LIKE CONCAT(c1);
|
||||
DROP TABLE t1;
|
@ -0,0 +1,16 @@
|
||||
--echo #
|
||||
--echo # MDEV-7149 Constant condition propagation erroneously applied for LIKE
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 AS SELECT REPEAT('a',10) AS c1 LIMIT 0;
|
||||
SHOW CREATE TABLE t1;
|
||||
INSERT INTO t1 VALUES ('ae'),('ä');
|
||||
SELECT * FROM t1 WHERE c1='ä';
|
||||
SELECT * FROM t1 WHERE c1 LIKE 'ae';
|
||||
SELECT * FROM t1 WHERE c1='ä' AND c1 LIKE 'ae';
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE c1='ä' AND c1 LIKE 'ae';
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='ä';
|
||||
SELECT * FROM t1 WHERE CONCAT(c1) LIKE 'ae';
|
||||
SELECT * FROM t1 WHERE CONCAT(c1)='ä' AND CONCAT(c1) LIKE 'ae';
|
||||
EXPLAIN EXTENDED SELECT * FROM t1 WHERE CONCAT(c1)='ä' AND CONCAT(c1) LIKE 'ae';
|
||||
DROP TABLE IF EXISTS t1;
|
Reference in New Issue
Block a user