diff options
author | unknown <sergefp@mysql.com> | 2005-07-04 23:00:23 +0000 |
---|---|---|
committer | unknown <sergefp@mysql.com> | 2005-07-04 23:00:23 +0000 |
commit | b87b32555eb8bbc0d31afa5e61c6e3b9c74e8f6e (patch) | |
tree | 37c95f642beb357948fb19974de6dcf0b8499ec8 /mysql-test/t/sp-error.test | |
parent | 428830c50024475e85e12f6b188879c2de536529 (diff) | |
download | mariadb-git-b87b32555eb8bbc0d31afa5e61c6e3b9c74e8f6e.tar.gz |
Fix for BUG#9814: Clear thd->net.no_send_error before each SP instruction
execution. Failure to do so caused the erroneous statements to send nothing
and hang the client.
mysql-test/r/sp-error.result:
Testcase for BUG#9814. Note that the result demonstrates that currently
mysql-test-run ignores errors in multi-statement if they arrive after first
resultset has been received.
mysql-test/t/sp-error.test:
Testcase for BUG#09814.
Diffstat (limited to 'mysql-test/t/sp-error.test')
-rw-r--r-- | mysql-test/t/sp-error.test | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/mysql-test/t/sp-error.test b/mysql-test/t/sp-error.test index f5a9e53e710..e8243dfd343 100644 --- a/mysql-test/t/sp-error.test +++ b/mysql-test/t/sp-error.test @@ -2,6 +2,10 @@ # Stored PROCEDURE error tests # +--disable_warnings +drop table if exists t1, t2; +--enable_warnings + # Make sure we don't have any procedures left. delete from mysql.proc; @@ -933,3 +937,37 @@ create procedure p() execute stmt; create function f() returns int begin execute stmt; deallocate prepare stmt; +# BUG#9814: Closing a cursor that is not open +create table t1(f1 int); +create table t2(f1 int); + +delimiter |; +CREATE PROCEDURE SP001() +P1: BEGIN + DECLARE ENDTABLE INT DEFAULT 0; + DECLARE TEMP_NUM INT; + DECLARE TEMP_SUM INT; + DECLARE C1 CURSOR FOR SELECT F1 FROM t1; + DECLARE C2 CURSOR FOR SELECT F1 FROM t2; + DECLARE CONTINUE HANDLER FOR NOT FOUND SET ENDTABLE = 1; + + SET ENDTABLE=0; + SET TEMP_SUM=0; + SET TEMP_NUM=0; + + OPEN C1; + + FETCH C1 INTO TEMP_NUM; + WHILE ENDTABLE = 0 DO + SET TEMP_SUM=TEMP_NUM+TEMP_SUM; + FETCH C1 INTO TEMP_NUM; + END WHILE; + SELECT TEMP_SUM; + CLOSE C1; + CLOSE C1; + SELECT 'end of proc'; +END P1| +delimiter ;| +call SP001(); +drop procedure SP001; +drop table t1, t2; |