summaryrefslogtreecommitdiff
path: root/mysql-test/t/select.test
diff options
context:
space:
mode:
authorunknown <igor@rurik.mysql.com>2006-09-29 07:43:25 -0700
committerunknown <igor@rurik.mysql.com>2006-09-29 07:43:25 -0700
commitaf2ba777c3abeb5721fbc14e9d094ffa620c75a5 (patch)
tree96d1f2a44ecf76c4d86d94e0eb4e9cd925d087ca /mysql-test/t/select.test
parent78bf02870c9a277ae785ab5705b4a5c0556b149e (diff)
downloadmariadb-git-af2ba777c3abeb5721fbc14e9d094ffa620c75a5.tar.gz
Fixed bug #22753.
After the patch for big 21698 equality propagation stopped working for BETWEEN and IN predicates with STRING arguments. This changeset completes the solution of the above patch. mysql-test/r/select.result: Added a test case for bug #22735. mysql-test/t/select.test: Added a test case for bug #22735. sql/item_cmpfunc.h: Fixed bug #22753. After the patch for big 21698 equality propagation stopped working for BETWEEN and IN predicates with STRING arguments. This changeset completes the solution of the above patch. Added an implementation of the subst_argument_checker method for Item_func_opt_neg (the direct ancestor of Item_func_between and Item_func_in) which allows equality propagation for BETWEEN and IN predicates.
Diffstat (limited to 'mysql-test/t/select.test')
-rw-r--r--mysql-test/t/select.test29
1 files changed, 28 insertions, 1 deletions
diff --git a/mysql-test/t/select.test b/mysql-test/t/select.test
index 36b3749b4d7..861b9160644 100644
--- a/mysql-test/t/select.test
+++ b/mysql-test/t/select.test
@@ -2996,5 +2996,32 @@ SELECT * FROM t1 LEFT JOIN t2 ON t2.b=t1.a INNER JOIN t3 ON t3.d=t1.id
SELECT * FROM t1 LEFT JOIN t2 ON t2.b=t1.a INNER JOIN t3 ON t3.d=t1.id
WHERE t1.id=2;
-
DROP TABLE t1,t2,t3;
+
+#
+# Bug #22735: no equality propagation for BETWEEN and IN with STRING arguments
+#
+
+CREATE TABLE t1 (pk varchar(10) PRIMARY KEY, fk varchar(16));
+CREATE TABLE t2 (pk varchar(16) PRIMARY KEY, fk varchar(10));
+
+INSERT INTO t1 VALUES
+ ('d','dddd'), ('i','iii'), ('a','aa'), ('b','bb'), ('g','gg'),
+ ('e','eee'), ('c','cccc'), ('h','hhh'), ('j','jjj'), ('f','fff');
+INSERT INTO t2 VALUES
+ ('jjj', 'j'), ('cc','c'), ('ccc','c'), ('aaa', 'a'), ('jjjj','j'),
+ ('hhh','h'), ('gg','g'), ('fff','f'), ('ee','e'), ('ffff','f'),
+ ('bbb','b'), ('ff','f'), ('cccc','c'), ('dddd','d'), ('jj','j'),
+ ('aaaa','a'), ('bb','b'), ('eeee','e'), ('aa','a'), ('hh','h');
+
+EXPLAIN SELECT t2.*
+ FROM t1 JOIN t2 ON t2.fk=t1.pk
+ WHERE t2.fk < 'c' AND t2.pk=t1.fk;
+EXPLAIN SELECT t2.*
+ FROM t1 JOIN t2 ON t2.fk=t1.pk
+ WHERE t2.fk BETWEEN 'a' AND 'b' AND t2.pk=t1.fk;
+EXPLAIN SELECT t2.*
+ FROM t1 JOIN t2 ON t2.fk=t1.pk
+ WHERE t2.fk IN ('a','b') AND t2.pk=t1.fk;
+
+DROP TABLE t1,t2;