mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 21:12:26 +01:00
Bug#37949 Crash if argument to SP is a subquery that returns more than one row
JOIN for the subselect wasn't cleaned if we came upon an error during sub_select() execution. That leads to the assertion failure in close_thread_tables() part of the 6.0 code backported per-file comments: mysql-test/r/sp-error.result Bug#37949 Crash if argument to SP is a subquery that returns more than one row test result mysql-test/t/sp-error.test Bug#37949 Crash if argument to SP is a subquery that returns more than one row test case sql/sp_head.cc Bug#37949 Crash if argument to SP is a subquery that returns more than one row lex->unit.cleanup() call added if not substatement
This commit is contained in:
parent
cd9aef82d7
commit
b6f4b1c083
3 changed files with 20 additions and 1 deletions
|
@ -1513,3 +1513,10 @@ end loop label1;
|
|||
end loop;
|
||||
end|
|
||||
ERROR 42000: End-label label1 without match
|
||||
CREATE TABLE t1 (a INT)|
|
||||
INSERT INTO t1 VALUES (1),(2)|
|
||||
CREATE PROCEDURE p1(a INT) BEGIN END|
|
||||
CALL p1((SELECT * FROM t1))|
|
||||
ERROR 21000: Subquery returns more than 1 row
|
||||
DROP PROCEDURE IF EXISTS p1|
|
||||
DROP TABLE t1|
|
||||
|
|
|
@ -2173,6 +2173,14 @@ begin
|
|||
end loop;
|
||||
end|
|
||||
|
||||
CREATE TABLE t1 (a INT)|
|
||||
INSERT INTO t1 VALUES (1),(2)|
|
||||
CREATE PROCEDURE p1(a INT) BEGIN END|
|
||||
--error ER_SUBQUERY_NO_1_ROW
|
||||
CALL p1((SELECT * FROM t1))|
|
||||
DROP PROCEDURE IF EXISTS p1|
|
||||
DROP TABLE t1|
|
||||
|
||||
delimiter ;|
|
||||
|
||||
#
|
||||
|
|
|
@ -1762,7 +1762,11 @@ sp_head::execute_procedure(THD *thd, List<Item> *args)
|
|||
we'll leave it here.
|
||||
*/
|
||||
if (!thd->in_sub_stmt)
|
||||
close_thread_tables(thd, 0, 0);
|
||||
{
|
||||
thd->lex->unit.cleanup();
|
||||
close_thread_tables(thd);
|
||||
thd->rollback_item_tree_changes();
|
||||
}
|
||||
|
||||
DBUG_PRINT("info",(" %.*s: eval args done", m_name.length, m_name.str));
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue