Commit 97354b19 authored by unknown's avatar unknown

Merge gkodinov@bk-internal.mysql.com:/home/bk/mysql-5.0-bugteam

into  magare.gmz:/home/kgeorge/mysql/autopush/B36011-take2-5.0-bugteam

parents 21b8d8b5 0fb1527e
...@@ -4381,4 +4381,19 @@ t1.a= (select b from t2 limit 1) and not ...@@ -4381,4 +4381,19 @@ t1.a= (select b from t2 limit 1) and not
t1.a= (select a from t2 limit 1) ; t1.a= (select a from t2 limit 1) ;
a a
drop table t1, t2; drop table t1, t2;
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (1),(2);
EXPLAIN EXTENDED SELECT 1 FROM t1 WHERE 1 IN (SELECT 1 FROM t1 GROUP BY a);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 2 Using temporary; Using filesort
Warnings:
Note 1003 select 1 AS `1` from `test`.`t1` where <in_optimizer>(1,<exists>(select 1 AS `1` from `test`.`t1` group by `test`.`t1`.`a` having (<cache>(1) = <ref_null_helper>(1))))
EXPLAIN EXTENDED SELECT 1 FROM t1 WHERE 1 IN (SELECT 1 FROM t1 WHERE a > 3 GROUP BY a);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 2 Using where; Using temporary; Using filesort
Warnings:
Note 1003 select 1 AS `1` from `test`.`t1` where <in_optimizer>(1,<exists>(select 1 AS `1` from `test`.`t1` where (`test`.`t1`.`a` > 3) group by `test`.`t1`.`a` having (<cache>(1) = <ref_null_helper>(1))))
DROP TABLE t1;
End of 5.0 tests. End of 5.0 tests.
...@@ -3271,5 +3271,16 @@ select t1.a from t1 where ...@@ -3271,5 +3271,16 @@ select t1.a from t1 where
drop table t1, t2; drop table t1, t2;
#
# Bug #36011: Server crash with explain extended on query with dependent
# subqueries
#
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (1),(2);
EXPLAIN EXTENDED SELECT 1 FROM t1 WHERE 1 IN (SELECT 1 FROM t1 GROUP BY a);
EXPLAIN EXTENDED SELECT 1 FROM t1 WHERE 1 IN (SELECT 1 FROM t1 WHERE a > 3 GROUP BY a);
DROP TABLE t1;
--echo End of 5.0 tests. --echo End of 5.0 tests.
...@@ -2104,11 +2104,12 @@ JOIN::exec() ...@@ -2104,11 +2104,12 @@ JOIN::exec()
/* /*
With EXPLAIN EXTENDED we have to restore original ref_array With EXPLAIN EXTENDED we have to restore original ref_array
for a derived table which is always materialized. for a derived table which is always materialized.
We also need to do this when we have temp table(s).
Otherwise we would not be able to print the query correctly. Otherwise we would not be able to print the query correctly.
*/ */
if (items0 && if (items0 && (thd->lex->describe & DESCRIBE_EXTENDED) &&
(thd->lex->describe & DESCRIBE_EXTENDED) && (select_lex->linkage == DERIVED_TABLE_TYPE ||
select_lex->linkage == DERIVED_TABLE_TYPE) exec_tmp_table1 || exec_tmp_table2))
set_items_ref_array(items0); set_items_ref_array(items0);
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment