Commit fd7cbdc4 authored by Georgi Kodinov's avatar Georgi Kodinov

merge

parents 86d35d20 5a9b624a
...@@ -3025,6 +3025,24 @@ Warnings: ...@@ -3025,6 +3025,24 @@ Warnings:
Note 1003 select 1 AS `1` from `test`.`t1` `t2` left join `test`.`t1` on(1) where 1 Note 1003 select 1 AS `1` from `test`.`t1` `t2` left join `test`.`t1` on(1) where 1
DEALLOCATE PREPARE stmt; DEALLOCATE PREPARE stmt;
DROP TABLE t1; DROP TABLE t1;
#
# Bug#54488 crash when using explain and prepared statements with subqueries
#
CREATE TABLE t1(f1 INT);
INSERT INTO t1 VALUES (1),(1);
PREPARE stmt FROM 'EXPLAIN SELECT 1 FROM t1 WHERE (SELECT (SELECT 1 FROM t1 GROUP BY f1))';
EXECUTE stmt;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
3 SUBQUERY t1 ALL NULL NULL NULL NULL 2 Using temporary; Using filesort
EXECUTE stmt;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 2
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
3 SUBQUERY t1 ALL NULL NULL NULL NULL 2 Using temporary; Using filesort
DEALLOCATE PREPARE stmt;
DROP TABLE t1;
End of 5.1 tests. End of 5.1 tests.
......
...@@ -3090,6 +3090,17 @@ EXECUTE stmt; ...@@ -3090,6 +3090,17 @@ EXECUTE stmt;
DEALLOCATE PREPARE stmt; DEALLOCATE PREPARE stmt;
DROP TABLE t1; DROP TABLE t1;
--echo #
--echo # Bug#54488 crash when using explain and prepared statements with subqueries
--echo #
CREATE TABLE t1(f1 INT);
INSERT INTO t1 VALUES (1),(1);
PREPARE stmt FROM 'EXPLAIN SELECT 1 FROM t1 WHERE (SELECT (SELECT 1 FROM t1 GROUP BY f1))';
EXECUTE stmt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
DROP TABLE t1;
--echo --echo
--echo End of 5.1 tests. --echo End of 5.1 tests.
......
...@@ -1911,7 +1911,10 @@ int subselect_single_select_engine::exec() ...@@ -1911,7 +1911,10 @@ int subselect_single_select_engine::exec()
} }
if (!select_lex->uncacheable && thd->lex->describe && if (!select_lex->uncacheable && thd->lex->describe &&
!(join->select_options & SELECT_DESCRIBE) && !(join->select_options & SELECT_DESCRIBE) &&
join->need_tmp && item->const_item()) join->need_tmp)
{
item->update_used_tables();
if (item->const_item())
{ {
/* /*
Force join->join_tmp creation, because this subquery will be replaced Force join->join_tmp creation, because this subquery will be replaced
...@@ -1924,6 +1927,7 @@ int subselect_single_select_engine::exec() ...@@ -1924,6 +1927,7 @@ int subselect_single_select_engine::exec()
if (join->init_save_join_tab()) if (join->init_save_join_tab())
DBUG_RETURN(1); /* purecov: inspected */ DBUG_RETURN(1); /* purecov: inspected */
} }
}
if (item->engine_changed) if (item->engine_changed)
{ {
DBUG_RETURN(1); DBUG_RETURN(1);
......
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