mirror of
https://github.com/MariaDB/server.git
synced 2026-01-06 05:22:24 +03:00
Backport of Bug#15192 to mysql-next-mr
------------------------------------------------------------ revno: 2597.4.17 revision-id: sp1r-davi@mysql.com/endora.local-20080328174753-24337 parent: sp1r-anozdrin/alik@quad.opbmk-20080328140038-16479 committer: davi@mysql.com/endora.local timestamp: Fri 2008-03-28 14:47:53 -0300 message: Bug#15192 "fatal errors" are caught by handlers in stored procedures The problem is that fatal errors (e.g.: out of memory) were being caught by stored procedure exception handlers which could cause the execution to not be stopped due to a continue handler. The solution is to not call any exception handler if the error is fatal and send the fatal error to the client.
This commit is contained in:
@@ -2420,6 +2420,27 @@ end$$
|
||||
delimiter ;$$
|
||||
|
||||
|
||||
#
|
||||
# Bug#15192: "fatal errors" are caught by handlers in stored procedures
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
drop procedure if exists p1;
|
||||
--enable_warnings
|
||||
set @old_recursion_depth = @@max_sp_recursion_depth;
|
||||
set @@max_sp_recursion_depth = 255;
|
||||
delimiter |;
|
||||
create procedure p1(a int)
|
||||
begin
|
||||
declare continue handler for sqlexception select 'exception';
|
||||
call p1(a+1);
|
||||
end|
|
||||
delimiter ;|
|
||||
--error 0,ER_STACK_OVERRUN_NEED_MORE
|
||||
call p1(1);
|
||||
set @@max_sp_recursion_depth = @old_recursion_depth;
|
||||
drop procedure p1;
|
||||
|
||||
#
|
||||
# BUG#NNNN: New bug synopsis
|
||||
#
|
||||
|
||||
Reference in New Issue
Block a user