summaryrefslogtreecommitdiff
path: root/mysql-test/t
diff options
context:
space:
mode:
authorunknown <timour@askmonty.org>2010-11-22 16:32:36 +0200
committerunknown <timour@askmonty.org>2010-11-22 16:32:36 +0200
commitfb215f76bbcbb11177adfb04978b66b3151e7f4d (patch)
tree138b9175aa0cd3e90147e25ff40d10333eccfdd7 /mysql-test/t
parent0a31c4ffc3ce1577c4a76cbc6d755493a6c152ee (diff)
downloadmariadb-git-fb215f76bbcbb11177adfb04978b66b3151e7f4d.tar.gz
Fix LP BUG#680005
Analysis: This another instance of the problem fixed in LP BUG#675981 - evaluation of subqueries during EXPLAIN when the subquery plan is incomplete because JOIN::optimize() generally doesn't create complete execution plans for EXPLAIN statements. In this case the call path is: mysql_explain_union -> outer_join.exec -> outer_join.init_execution -> create_sort_index -> filesort -> find_all_keys -> SQL_SELECT::skip_record -> outer_where_clause.val_int -> ... -> subselect_join.exec -> ... -> sub_select_cache When calling sub_select_cache JOIN_TAB::cache is NULL because the cache objects are not created for EXPLAIN statements. Solution: Delay the call to init_execution() after all EXPLAIN related processing is completed. Thus init_execution() is not called at all during EXPLAIN.
Diffstat (limited to 'mysql-test/t')
-rw-r--r--mysql-test/t/subselect4.test32
1 files changed, 32 insertions, 0 deletions
diff --git a/mysql-test/t/subselect4.test b/mysql-test/t/subselect4.test
index cc58b14db36..286fd321afe 100644
--- a/mysql-test/t/subselect4.test
+++ b/mysql-test/t/subselect4.test
@@ -419,6 +419,38 @@ WHERE f1 IN (SELECT t1.f2 FROM t1 JOIN t3 ON t3.f4);
drop table t1, t2, t3;
--echo #
+--echo # LP BUG#680005 Second assertion `cache != __null' failed in
+--echo # sub_select_cache() on EXPLAIN
+--echo #
+
+CREATE TABLE t1 (f1 int,f2 int,f4 int,f6 int,KEY (f4)) ;
+INSERT IGNORE INTO t1 VALUES
+('1','5','1','0'),('2','1','1','0'),('2','2','2','0'),('0',NULL,'0','0'),
+('2','1','2','0'),('2','0','0','0'),('2','2','2','0'),('2','8','2','0'),
+('2','7','2','0'),('2','5','2','0'),('2',NULL,'1','0');
+
+CREATE TABLE t2 (f3 int) ;
+INSERT IGNORE INTO t2 VALUES ('7');
+
+CREATE TABLE t3 (f3 int) ;
+INSERT IGNORE INTO t3 VALUES ('2');
+
+EXPLAIN
+SELECT t1.f4
+FROM t2 JOIN t1 ON t1.f6
+WHERE
+( t1.f2 ) IN (SELECT SUBQUERY2_t1.f3
+ FROM t3 AS SUBQUERY2_t1
+ JOIN
+ (t1 AS SUBQUERY2_t2
+ JOIN
+ t1 AS SUBQUERY2_t3 ON SUBQUERY2_t3.f1)
+ ON SUBQUERY2_t3.f2)
+GROUP BY t1.f4 ORDER BY t1.f1 LIMIT 10;
+
+drop table t1, t2, t3;
+
+--echo #
--echo # BUG#52317: Assertion failing in Field_varstring::store()
--echo # at field.cc:6833
--echo #