Commit 194e43ee authored by unknown's avatar unknown

Bug#8759 (Stored Procedures: SQLSTATE '00000' should be illegal)

Fixed the parser to reject SQLSTATE '00000',
since '00000' is the successful completion condition,
and can not be caught by an exception handler in SQL.


mysql-test/r/sp-error.result:
  Bug#8759 (Stored Procedures: SQLSTATE '00000' should be illegal)
mysql-test/t/sp-error.test:
  Bug#8759 (Stored Procedures: SQLSTATE '00000' should be illegal)
sql/sp_pcontext.cc:
  Bug#8759 (Stored Procedures: SQLSTATE '00000' should be illegal)
parent 6c61454b
...@@ -1638,3 +1638,15 @@ Warning 1287 The syntax 'TYPE=storage_engine' is deprecated and will be removed ...@@ -1638,3 +1638,15 @@ Warning 1287 The syntax 'TYPE=storage_engine' is deprecated and will be removed
call p1(); call p1();
call p1(); call p1();
drop procedure p1; drop procedure p1;
drop procedure if exists proc_8759;
create procedure proc_8759()
begin
declare should_be_illegal condition for sqlstate '00000';
declare continue handler for should_be_illegal set @x=0;
end$$
ERROR 42000: Bad SQLSTATE: '00000'
create procedure proc_8759()
begin
declare continue handler for sqlstate '00000' set @x=0;
end$$
ERROR 42000: Bad SQLSTATE: '00000'
...@@ -2386,6 +2386,32 @@ call p1(); ...@@ -2386,6 +2386,32 @@ call p1();
call p1(); call p1();
drop procedure p1; drop procedure p1;
#
# Bug#8759 (Stored Procedures: SQLSTATE '00000' should be illegal)
#
--disable_warnings
drop procedure if exists proc_8759;
--enable_warnings
delimiter $$;
--error ER_SP_BAD_SQLSTATE
create procedure proc_8759()
begin
declare should_be_illegal condition for sqlstate '00000';
declare continue handler for should_be_illegal set @x=0;
end$$
--error ER_SP_BAD_SQLSTATE
create procedure proc_8759()
begin
declare continue handler for sqlstate '00000' set @x=0;
end$$
delimiter ;$$
# #
# BUG#NNNN: New bug synopsis # BUG#NNNN: New bug synopsis
# #
......
...@@ -51,6 +51,8 @@ sp_cond_check(LEX_STRING *sqlstate) ...@@ -51,6 +51,8 @@ sp_cond_check(LEX_STRING *sqlstate)
(c < 'A' || 'Z' < c)) (c < 'A' || 'Z' < c))
return FALSE; return FALSE;
} }
if (strcmp(sqlstate->str, "00000") == 0)
return FALSE;
return TRUE; return TRUE;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment