diff options
author | unknown <sanja@askmonty.org> | 2010-09-08 09:26:17 +0300 |
---|---|---|
committer | unknown <sanja@askmonty.org> | 2010-09-08 09:26:17 +0300 |
commit | 11dc256ca4ee1057d1e918326b8c76fdbbca63cd (patch) | |
tree | 8f59ac5856cdd8515b959711d450188651952d46 /mysql-test/t/subselect_cache.test | |
parent | d6a9b52269c2f64a8f793c4680eed9adece0a716 (diff) | |
download | mariadb-git-11dc256ca4ee1057d1e918326b8c76fdbbca63cd.tar.gz |
Diffstat (limited to 'mysql-test/t/subselect_cache.test')
-rw-r--r-- | mysql-test/t/subselect_cache.test | 83 |
1 files changed, 82 insertions, 1 deletions
diff --git a/mysql-test/t/subselect_cache.test b/mysql-test/t/subselect_cache.test index 796d299b41c..5340f5ead54 100644 --- a/mysql-test/t/subselect_cache.test +++ b/mysql-test/t/subselect_cache.test @@ -1472,7 +1472,7 @@ drop table t1,t2,t3; set @@optimizer_switch= default; # ---echo # LP BUG#615760 (double transformation) +--echo # LP BUG#615760 (part 1: double transformation) # create table t1 (a int); insert into t1 values (1),(2); @@ -1485,3 +1485,84 @@ select * from t1 where a in (select b from t2); drop table t1,t2; set @@optimizer_switch= default; + +# +--echo # LP BUG#615760 (part 2: incorrect heap table index flags) +# +SET SESSION optimizer_switch = 'index_merge=off,index_merge_union=off,index_merge_sort_union=off,index_merge_intersection=off,index_condition_pushdown=off,firstmatch=off,loosescan=off,materialization=off,semijoin=off,partial_match_rowid_merge=off,partial_match_table_scan=off,subquery_cache=on,table_elimination=off'; + +CREATE TABLE `t1` ( + `pk` int(11) NOT NULL AUTO_INCREMENT, + `col_int_nokey` int(11) DEFAULT NULL, + `col_int_key` int(11) DEFAULT NULL, + `col_varchar_key` varchar(1) DEFAULT NULL, + `col_varchar_nokey` varchar(1) DEFAULT NULL, + PRIMARY KEY (`pk`), + KEY `col_int_key` (`col_int_key`), + KEY `col_varchar_key` (`col_varchar_key`,`col_int_key`) +) ENGINE=MARIA AUTO_INCREMENT=30 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1; +INSERT INTO `t1` VALUES (10,7,8,'v','v'); +INSERT INTO `t1` VALUES (11,1,9,'r','r'); +INSERT INTO `t1` VALUES (12,5,9,'a','a'); +INSERT INTO `t1` VALUES (13,3,186,'m','m'); +INSERT INTO `t1` VALUES (14,6,NULL,'y','y'); +INSERT INTO `t1` VALUES (15,92,2,'j','j'); +INSERT INTO `t1` VALUES (16,7,3,'d','d'); +INSERT INTO `t1` VALUES (17,NULL,0,'z','z'); +INSERT INTO `t1` VALUES (18,3,133,'e','e'); +INSERT INTO `t1` VALUES (19,5,1,'h','h'); +INSERT INTO `t1` VALUES (20,1,8,'b','b'); +INSERT INTO `t1` VALUES (21,2,5,'s','s'); +INSERT INTO `t1` VALUES (22,NULL,5,'e','e'); +INSERT INTO `t1` VALUES (23,1,8,'j','j'); +INSERT INTO `t1` VALUES (24,0,6,'e','e'); +INSERT INTO `t1` VALUES (25,210,51,'f','f'); +INSERT INTO `t1` VALUES (26,8,4,'v','v'); +INSERT INTO `t1` VALUES (27,7,7,'x','x'); +INSERT INTO `t1` VALUES (28,5,6,'m','m'); +INSERT INTO `t1` VALUES (29,NULL,4,'c','c'); +CREATE TABLE `t2` ( + `pk` int(11) NOT NULL AUTO_INCREMENT, + `col_int_nokey` int(11) DEFAULT NULL, + `col_int_key` int(11) DEFAULT NULL, + `col_varchar_key` varchar(1) DEFAULT NULL, + `col_varchar_nokey` varchar(1) DEFAULT NULL, + PRIMARY KEY (`pk`), + KEY `col_int_key` (`col_int_key`), + KEY `col_varchar_key` (`col_varchar_key`,`col_int_key`) +) ENGINE=MARIA AUTO_INCREMENT=21 DEFAULT CHARSET=latin1 PAGE_CHECKSUM=1; +INSERT INTO `t2` VALUES (1,NULL,2,'w','w'); +INSERT INTO `t2` VALUES (2,7,9,'m','m'); +INSERT INTO `t2` VALUES (3,9,3,'m','m'); +INSERT INTO `t2` VALUES (4,7,9,'k','k'); +INSERT INTO `t2` VALUES (5,4,NULL,'r','r'); +INSERT INTO `t2` VALUES (6,2,9,'t','t'); +INSERT INTO `t2` VALUES (7,6,3,'j','j'); +INSERT INTO `t2` VALUES (8,8,8,'u','u'); +INSERT INTO `t2` VALUES (9,NULL,8,'h','h'); +INSERT INTO `t2` VALUES (10,5,53,'o','o'); +INSERT INTO `t2` VALUES (11,NULL,0,NULL,NULL); +INSERT INTO `t2` VALUES (12,6,5,'k','k'); +INSERT INTO `t2` VALUES (13,188,166,'e','e'); +INSERT INTO `t2` VALUES (14,2,3,'n','n'); +INSERT INTO `t2` VALUES (15,1,0,'t','t'); +INSERT INTO `t2` VALUES (16,1,1,'c','c'); +INSERT INTO `t2` VALUES (17,0,9,'m','m'); +INSERT INTO `t2` VALUES (18,9,5,'y','y'); +INSERT INTO `t2` VALUES (19,NULL,6,'f','f'); +INSERT INTO `t2` VALUES (20,4,2,'d','d'); + +# Here we just need plenty of different parameters to overflow +# temporary heap table of expression cache +SELECT table1 .`col_varchar_nokey` +FROM t2 table1 RIGHT JOIN t1 LEFT JOIN ( +SELECT SUBQUERY1_t2 .* +FROM t1 SUBQUERY1_t1 LEFT JOIN t2 SUBQUERY1_t2 ON SUBQUERY1_t2 .`col_int_key` = SUBQUERY1_t1 .`col_int_nokey` ) table3 STRAIGHT_JOIN ( ( +SELECT * +FROM t1 ) table4 JOIN ( t1 table5 JOIN t2 table6 ON table5 .`pk` ) ON table5 .`col_varchar_nokey` ) ON table6 .`pk` = table5 .`col_int_key` ON table5 .`col_varchar_nokey` ON table5 .`col_varchar_key` +WHERE table3 .`col_varchar_key` IN ( +SELECT `col_varchar_key` +FROM t2 ) AND table1 .`col_varchar_key` OR table1 .`pk` ; + +drop table t1,t2; +set @@optimizer_switch= default; |