diff options
author | Alexey Botchkov <holyfoot@mysql.com> | 2008-09-30 10:41:30 +0500 |
---|---|---|
committer | Alexey Botchkov <holyfoot@mysql.com> | 2008-09-30 10:41:30 +0500 |
commit | b8734a1ce2d835729ffaf0058aaf75275c88aaca (patch) | |
tree | 8a16772a4457293b0a451ce254d10697da8c8b7d | |
parent | 1e26e74c2a7192e4b8c94210b1e9829f7e53b2f1 (diff) | |
parent | ce64a16b75746848c8d5a89cfb726a38691c9d6f (diff) | |
download | mariadb-git-b8734a1ce2d835729ffaf0058aaf75275c88aaca.tar.gz |
merging
-rw-r--r-- | mysql-test/r/sp-error.result | 7 | ||||
-rw-r--r-- | mysql-test/t/sp-error.test | 8 | ||||
-rw-r--r-- | sql/sp_head.cc | 6 |
3 files changed, 20 insertions, 1 deletions
diff --git a/mysql-test/r/sp-error.result b/mysql-test/r/sp-error.result index cc383d003e9..2f8f71077a6 100644 --- a/mysql-test/r/sp-error.result +++ b/mysql-test/r/sp-error.result @@ -1628,6 +1628,13 @@ 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| drop procedure if exists p1; create procedure p1() begin diff --git a/mysql-test/t/sp-error.test b/mysql-test/t/sp-error.test index 1e329f7fe79..5437f3a156f 100644 --- a/mysql-test/t/sp-error.test +++ b/mysql-test/t/sp-error.test @@ -2362,6 +2362,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 ;| # diff --git a/sql/sp_head.cc b/sql/sp_head.cc index d1f920fd3a5..cf6610dfa11 100644 --- a/sql/sp_head.cc +++ b/sql/sp_head.cc @@ -1940,7 +1940,11 @@ sp_head::execute_procedure(THD *thd, List<Item> *args) we'll leave it here. */ if (!thd->in_sub_stmt) - close_thread_tables(thd); + { + thd->lex->unit.cleanup(); + close_thread_tables(thd); + thd->rollback_item_tree_changes(); + } DBUG_PRINT("info",(" %.*s: eval args done", (int) m_name.length, m_name.str)); |