summaryrefslogtreecommitdiff
path: root/mysql-test/suite/compat/oracle/t/sp-goto.test
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/suite/compat/oracle/t/sp-goto.test')
-rw-r--r--mysql-test/suite/compat/oracle/t/sp-goto.test98
1 files changed, 97 insertions, 1 deletions
diff --git a/mysql-test/suite/compat/oracle/t/sp-goto.test b/mysql-test/suite/compat/oracle/t/sp-goto.test
index df7f1132666..9c15d10b3de 100644
--- a/mysql-test/suite/compat/oracle/t/sp-goto.test
+++ b/mysql-test/suite/compat/oracle/t/sp-goto.test
@@ -869,4 +869,100 @@ insert into t1 values (1);
insert into t1 values (null);
SELECT * FROM t1;
DROP TRIGGER trg1;
-DROP TABLE t1; \ No newline at end of file
+DROP TABLE t1;
+
+
+--echo #
+--echo # MDEV-20667 Server crash on pop_cursor
+--echo #
+
+CREATE TABLE t1 (a VARCHAR(6));
+DELIMITER //;
+CREATE PROCEDURE p1() IS
+BEGIN
+ IF 1=2 THEN
+ BEGIN
+ DECLARE
+ CURSOR cur1 IS SELECT a FROM t1 ;
+ BEGIN
+ GOTO iac_err;
+ END;
+ END;
+ END IF;
+ IF 1=1 THEN
+ GOTO iac_err;
+ END IF;
+<< iac_err >>
+ RETURN;
+END//
+DELIMITER ;//
+CALL p1();
+DROP PROCEDURE p1;
+DROP TABLE t1;
+
+
+DELIMITER //;
+CREATE PROCEDURE p1() IS
+BEGIN
+ IF 1=2 THEN
+ BEGIN
+ DECLARE
+ CURSOR cur1 IS SELECT a FROM t1 ;
+ BEGIN
+ GOTO iac_err;
+ END;
+ END;
+ END IF;
+ IF 1=1 THEN
+ GOTO iac_err;
+ END IF;
+<< iac_err >>
+ RETURN ;
+END//
+DELIMITER ;//
+CALL p1;
+DROP PROCEDURE p1;
+
+
+DELIMITER //;
+CREATE PROCEDURE p1() IS
+BEGIN
+ IF 1=2 THEN
+ BEGIN
+ DECLARE
+ CURSOR cur1 IS SELECT a FROM t1 ;
+ BEGIN
+ GOTO iac_err;
+ END;
+ END;
+ END IF;
+ GOTO iac_err;
+<< iac_err >>
+ RETURN ;
+END//
+DELIMITER ;//
+CALL p1;
+DROP PROCEDURE p1;
+
+
+DELIMITER //;
+CREATE PROCEDURE p1() IS
+BEGIN
+ IF 1=2 THEN
+ BEGIN
+ DECLARE
+ CONTINUE HANDLER FOR SQLSTATE '23000' SET @x2 = 1;
+ BEGIN
+ GOTO iac_err;
+ END;
+ END;
+ END IF;
+ IF 1=1 THEN
+ GOTO iac_err;
+ END IF;
+<<iac_err >>
+ RETURN;
+END//
+DELIMITER ;//
+CALL p1;
+DROP PROCEDURE p1;