diff options
Diffstat (limited to 'mysql-test/t/subselect_cache.test')
-rw-r--r-- | mysql-test/t/subselect_cache.test | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/mysql-test/t/subselect_cache.test b/mysql-test/t/subselect_cache.test index 9045c7f0e14..e8dd256b20b 100644 --- a/mysql-test/t/subselect_cache.test +++ b/mysql-test/t/subselect_cache.test @@ -1566,3 +1566,48 @@ FROM t2 ) AND table1 .`col_varchar_key` OR table1 .`pk` ; drop table t1,t2; set @@optimizer_switch= default; + +# +--echo # LP BUG#615378 (incorrect NULL result returning in Item_cache) +# +# if bug present here will be valgrind warnings (due to attempt to process +# uninialized decimal value) but the result will be correct (due to +# Item::null_value) + +CREATE TABLE `t1` ( + `pk` int(11) NOT NULL AUTO_INCREMENT, + `col_varchar_key` varchar(1) DEFAULT NULL, + PRIMARY KEY (`pk`), + KEY `col_varchar_key` (`col_varchar_key`) +) DEFAULT CHARSET=latin1; +INSERT INTO `t1` VALUES (10,'v'); +INSERT INTO `t1` VALUES (11,'r'); +CREATE TABLE `t2` ( + `pk` int(11) NOT NULL AUTO_INCREMENT, + `col_varchar_key` varchar(1) DEFAULT NULL, + PRIMARY KEY (`pk`), + KEY `col_varchar_key` (`col_varchar_key`) +) DEFAULT CHARSET=latin1; +INSERT INTO `t2` VALUES (1,'r'); +INSERT INTO `t2` VALUES (2,'c'); +CREATE TABLE `t3` ( + `pk` int(11) NOT NULL AUTO_INCREMENT, + `col_varchar_key` varchar(1) DEFAULT NULL, + PRIMARY KEY (`pk`), + KEY `col_varchar_key` (`col_varchar_key`) +) DEFAULT CHARSET=latin1; +INSERT INTO `t3` VALUES (1,'w'); + +SELECT SUM( DISTINCT table2 . `pk` ) AS field2 , +(SELECT SUM( SUBQUERY1_t2 . `pk` ) AS SUBQUERY1_field1 + FROM t2 AS SUBQUERY1_t2 STRAIGHT_JOIN + t3 AS SUBQUERY1_t3 ON (SUBQUERY1_t3 . `pk` = SUBQUERY1_t2 . `pk` ) + WHERE table1 . `col_varchar_key` ) AS field3 +FROM ( t1 AS table1 LEFT JOIN + ( t2 AS table2 STRAIGHT_JOIN + t3 AS table3 ON (table3 . `pk` = table2 . `pk` ) ) + ON (table3 . `col_varchar_key` = table1 . `col_varchar_key` ) ) +WHERE ( table1 . `pk` < 5 ) OR ( table1 . `col_varchar_key` IS NOT NULL) +GROUP BY field3 +HAVING (field3 <= 'h' AND field2 != 4) ; +drop tables t1, t2, t3; |