summaryrefslogtreecommitdiff
path: root/mysql-test/t/subselect_sj_mat.test
diff options
context:
space:
mode:
authorSergey Petrunya <psergey@askmonty.org>2012-03-12 18:08:40 +0400
committerSergey Petrunya <psergey@askmonty.org>2012-03-12 18:08:40 +0400
commit50ff30d892215457c91730cb96c2a8940892114e (patch)
tree55ba87689d1598289a4e0f0435be27fd7899cb4f /mysql-test/t/subselect_sj_mat.test
parentd028d986a9a0a53567f1eda29d407a6d73bb8733 (diff)
parentf92cfdb8a9ff7f8287239c39ce4735789a23e3df (diff)
downloadmariadb-git-50ff30d892215457c91730cb96c2a8940892114e.tar.gz
Merge
Diffstat (limited to 'mysql-test/t/subselect_sj_mat.test')
-rw-r--r--mysql-test/t/subselect_sj_mat.test40
1 files changed, 40 insertions, 0 deletions
diff --git a/mysql-test/t/subselect_sj_mat.test b/mysql-test/t/subselect_sj_mat.test
index 78dad76738c..a077e9b5af5 100644
--- a/mysql-test/t/subselect_sj_mat.test
+++ b/mysql-test/t/subselect_sj_mat.test
@@ -1602,6 +1602,46 @@ SET optimizer_switch=@save_optimizer_switch;
DROP TABLE t1,t2;
+--echo #
+--echo # BUG#946055: Crash with semijoin IN subquery when hash join is used
+--echo #
+
+CREATE TABLE t1 (a int);
+INSERT INTO t1 VALUES (7);
+
+CREATE TABLE t2 (b int, c int, d varchar(1), e varchar(1), KEY (c), KEY (d, c));
+
+INSERT INTO t2 VALUES
+ (4,2,'v','v'), (6,1,'v','v'), (0,5,'x','x'), (7,1,'x','x'),
+ (7,3,'i','i'), (7,1,'e','e'), (1,4,'p','p'), (1,2,'j','j');
+
+SET @save_optimizer_switch=@@optimizer_switch;
+SET @save_join_cache_level=@@join_cache_level;
+
+SET join_cache_level=2;
+EXPLAIN
+SELECT a, c FROM t1, t2
+ WHERE (a, c) IN (SELECT s1.b, s1.c FROM t2 AS s1, t2 AS s2
+ WHERE s2.d = s1.e AND s1.e = (SELECT MAX(e) FROM t2));
+SELECT a, c FROM t1, t2
+ WHERE (a, c) IN (SELECT s1.b, s1.c FROM t2 AS s1, t2 AS s2
+ WHERE s2.d = s1.e AND s1.e = (SELECT MAX(e) FROM t2));
+
+SET optimizer_switch='join_cache_hashed=on';
+SET join_cache_level=4;
+EXPLAIN
+SELECT a, c FROM t1, t2
+ WHERE (a, c) IN (SELECT s1.b, s1.c FROM t2 AS s1, t2 AS s2
+ WHERE s2.d = s1.e AND s1.e = (SELECT MAX(e) FROM t2));
+SELECT a, c FROM t1, t2
+ WHERE (a, c) IN (SELECT s1.b, s1.c FROM t2 AS s1, t2 AS s2
+ WHERE s2.d = s1.e AND s1.e = (SELECT MAX(e) FROM t2));
+
+SET optimizer_switch=@save_optimizer_switch;
+SET join_cache_level=@save_join_cache_level;
+
+DROP TABLE t1,t2;
+
--echo #
--echo # BUG#952297: Server crashes on 2nd execution of PS in Field::is_null with semijoin+materialization
--echo #