Commit 7da456ca authored by malff@lambda.hsd1.co.comcast.net.'s avatar malff@lambda.hsd1.co.comcast.net.
Browse files

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.
parent 9d03658b
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -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'
+26 −0
Original line number Diff line number Diff line
@@ -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
#
+2 −0
Original line number Diff line number Diff line
@@ -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;
}