summaryrefslogtreecommitdiff
path: root/mysql-test/t/sp-code.test
diff options
context:
space:
mode:
authorunknown <thek@adventure.(none)>2007-05-07 10:26:20 +0200
committerunknown <thek@adventure.(none)>2007-05-07 10:26:20 +0200
commitd3693efe8a89029c7b4bf404e4182850d4f7f4c4 (patch)
tree3254a83ac5e3b28b0760e66ce4f52272ab8b1631 /mysql-test/t/sp-code.test
parent034c11f3cdac8b2b39dd8593d1fbad5b92f98879 (diff)
parent72569cc66d2a1d8edcc3e368213619f7ea855329 (diff)
downloadmariadb-git-d3693efe8a89029c7b4bf404e4182850d4f7f4c4.tar.gz
Merge adventure.(none):/home/thek/Development/cpp/bug26977/my50-bug26977
into adventure.(none):/home/thek/Development/cpp/bug26977/my51-bug26977 mysql-test/r/sp-code.result: Auto merged mysql-test/t/sp-code.test: Auto merged sql/sp_head.cc: Auto merged sql/sp_head.h: Auto merged
Diffstat (limited to 'mysql-test/t/sp-code.test')
-rw-r--r--mysql-test/t/sp-code.test75
1 files changed, 75 insertions, 0 deletions
diff --git a/mysql-test/t/sp-code.test b/mysql-test/t/sp-code.test
index 1b33680cfaf..3bfa2ad74ea 100644
--- a/mysql-test/t/sp-code.test
+++ b/mysql-test/t/sp-code.test
@@ -446,6 +446,81 @@ SHOW PROCEDURE CODE p1;
DROP PROCEDURE p1;
+#
+# Bug#26977 exception handlers never hreturn
+#
+--disable_warnings
+drop table if exists t1;
+drop procedure if exists proc_26977_broken;
+drop procedure if exists proc_26977_works;
+--enable_warnings
+
+create table t1(a int unique);
+
+delimiter //;
+
+create procedure proc_26977_broken(v int)
+begin
+ declare i int default 5;
+
+ declare continue handler for sqlexception
+ begin
+ select 'caught something';
+ retry:
+ while i > 0 do
+ begin
+ set i = i - 1;
+ select 'looping', i;
+ end;
+ end while retry;
+ end;
+
+ select 'do something';
+ insert into t1 values (v);
+ select 'do something again';
+ insert into t1 values (v);
+end//
+
+create procedure proc_26977_works(v int)
+begin
+ declare i int default 5;
+
+ declare continue handler for sqlexception
+ begin
+ select 'caught something';
+ retry:
+ while i > 0 do
+ begin
+ set i = i - 1;
+ select 'looping', i;
+ end;
+ end while retry;
+ select 'optimizer: keep hreturn';
+ end;
+
+ select 'do something';
+ insert into t1 values (v);
+ select 'do something again';
+ insert into t1 values (v);
+end//
+delimiter ;//
+
+show procedure code proc_26977_broken;
+
+show procedure code proc_26977_works;
+
+## This caust an error because of jump short cut
+## optimization.
+call proc_26977_broken(1);
+
+## This works
+call proc_26977_works(2);
+
+drop table t1;
+drop procedure proc_26977_broken;
+drop procedure proc_26977_works;
+
+
--echo End of 5.0 tests.
#