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)
This commit is contained in:
unknown 2008-03-21 12:08:04 -06:00
parent 6c61454bcd
commit 194e43ee68
3 changed files with 40 additions and 0 deletions

View File

@ -1638,3 +1638,15 @@ Warning 1287 The syntax 'TYPE=storage_engine' is deprecated and will be removed
call p1();
call 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'

View File

@ -2386,6 +2386,32 @@ call p1();
call 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
#

View File

@ -51,6 +51,8 @@ sp_cond_check(LEX_STRING *sqlstate)
(c < 'A' || 'Z' < c))
return FALSE;
}
if (strcmp(sqlstate->str, "00000") == 0)
return FALSE;
return TRUE;
}