📄 sp-error.test
字号:
declare v int; replace t1 set v = 5;end|--error 1054call bug2329_1()|--error 1054call bug2329_2()|drop procedure bug2329_1|drop procedure bug2329_2|## BUG#3287#create function bug3287() returns intbegin declare v int default null; case when v is not null then return 1; end case; return 2;end|--error 1339select bug3287()|drop function bug3287|create procedure bug3287(x int)case xwhen 0 then insert into test.t1 values (x, 0.1);when 1 then insert into test.t1 values (x, 1.1);end case|--error 1339call bug3287(2)|drop procedure bug3287|## BUG#3297#--disable_warningsdrop table if exists t3|--enable_warningscreate table t3 (s1 int, primary key (s1))|insert into t3 values (5),(6)|create procedure bug3279(out y int) begin declare x int default 0; begin declare exit handler for sqlexception set x = x+1; insert into t3 values (5); end; if x < 2 then set x = x+1; insert into t3 values (6); end if; set y = x;end|set @x = 0|--error 1062call bug3279(@x)|select @x|drop procedure bug3279|drop table t3|## BUG#3339#--error 1049create procedure nodb.bug3339() begin end|## BUG#2653#create procedure bug2653_1(a int, out b int) set b = aa|create procedure bug2653_2(a int, out b int)begin if aa < 0 then set b = - a; else set b = a; end if;end|--error 1054call bug2653_1(1, @b)|--error 1054call bug2653_2(2, @b)|drop procedure bug2653_1|drop procedure bug2653_2|## BUG#4344#--error 1357create procedure bug4344() drop procedure bug4344|--error 1357create procedure bug4344() drop function bug4344|## BUG#3294: Stored procedure crash if table dropped before use# (Actually, when an error occurs within an error handler.)--disable_warningsdrop procedure if exists bug3294|--enable_warningscreate procedure bug3294()begin declare continue handler for sqlexception drop table t5; drop table t5; drop table t5;end|create table t5 (x int)|--error 1051call bug3294()|drop procedure bug3294|## BUG#876: Stored Procedures: Invalid SQLSTATE is allowed in # a DECLARE ? HANDLER FOR stmt.#--disable_warningsdrop procedure if exists bug8776_1|drop procedure if exists bug8776_2|drop procedure if exists bug8776_3|drop procedure if exists bug8776_4|--enable_warnings--error ER_SP_BAD_SQLSTATEcreate procedure bug8776_1()begin declare continue handler for sqlstate '42S0200test' begin end; begin end;end|--error ER_SP_BAD_SQLSTATEcreate procedure bug8776_2()begin declare continue handler for sqlstate '4200' begin end; begin end;end|--error ER_SP_BAD_SQLSTATEcreate procedure bug8776_3()begin declare continue handler for sqlstate '420000' begin end; begin end;end|--error ER_SP_BAD_SQLSTATEcreate procedure bug8776_4()begin declare continue handler for sqlstate '42x00' begin end; begin end;end|## BUG#6600: Stored procedure crash after repeated calls with check table#--error ER_SP_BADSTATEMENTcreate procedure bug6600() check table t1|# Check these two as well, while we're at it. (Although it isn't really# related to the bug report, but to the fix.)--error ER_SP_BADSTATEMENTcreate procedure bug6600() lock table t1 read|--error ER_SP_BADSTATEMENTcreate procedure bug6600() unlock table t1|## BUG#9566: explicit LOCK TABLE and store procedures result in illegal state## We should not think that mysql.proc table does not exist if we are unable# to open it under LOCK TABLE or in prelocked mode.#--disable_warningsdrop procedure if exists bug9566|--enable_warningscreate procedure bug9566()begin select * from t1;end|lock table t1 read|# This should fail since we forgot to lock mysql.proc for writing# explicitly, and we can't open mysql.proc for _writing_ if there# are locked tables.--error 1100alter procedure bug9566 comment 'Some comment'|unlock tables|# This should succeeddrop procedure bug9566|## BUG#7299: Stored procedures: exception handler catches not-found conditions#--disable_warningsdrop procedure if exists bug7299|--enable_warningscreate procedure bug7299()begin declare v int; declare c cursor for select val from t1; declare exit handler for sqlexception select 'Error!'; open c; fetch c into v;end|delete from t1|--error ER_SP_FETCH_NO_DATAcall bug7299()|drop procedure bug7299|## BUG#9073: Able to declare two handlers for same condition in same scope#--error ER_SP_DUP_HANDLERcreate procedure bug9073()begin declare continue handler for sqlexception select 1; declare continue handler for sqlexception select 2;end|--error ER_SP_DUP_HANDLERcreate procedure bug9073()begin declare condname1 condition for 1234; declare continue handler for condname1 select 1; declare exit handler for condname1 select 2;end|--error ER_SP_DUP_HANDLERcreate procedure bug9073()begin declare condname1 condition for sqlstate '42000'; declare condname2 condition for sqlstate '42000'; declare exit handler for condname1 select 1; declare continue handler for condname2 select 2;end|--error ER_SP_DUP_HANDLERcreate procedure bug9073()begin declare condname1 condition for sqlstate '42000'; declare exit handler for condname1 select 1; declare exit handler for sqlstate '42000' select 2;end|# This should still work.--disable_warningsdrop procedure if exists bug9073|--enable_warningscreate procedure bug9073()begin declare condname1 condition for sqlstate '42000'; declare continue handler for condname1 select 1; begin declare exit handler for sqlstate '42000' select 2; begin declare continue handler for sqlstate '42000' select 3; end; end;end|drop procedure bug9073|## BUG#7047: Stored procedure crash if alter procedure#--error ER_SP_NO_DROP_SPcreate procedure bug7047() alter procedure bug7047|--error ER_SP_NO_DROP_SPcreate function bug7047() returns intbegin alter function bug7047; return 0;end|## BUG#8408: Stored procedure crash if function contains SHOW# BUG#9058: Stored Procedures: Crash if function included SELECT## Some things are caught when parsing--error ER_SP_NO_RETSETcreate function bug8408() returns intbegin select * from t1; return 0;end|--error ER_SP_NO_RETSETcreate function bug8408() returns intbegin show warnings; return 0;end|--error ER_SP_NO_RETSETcreate function bug8408(a int) returns intbegin declare b int; select b; return b;end|--disable_warningsdrop function if exists bug8408_f|drop procedure if exists bug8408_p|--enable_warnings# Some things must be caught at invokation timecreate function bug8408_f() returns intbegin call bug8408_p(); return 0;end|create procedure bug8408_p() select * from t1|call bug8408_p()|--error ER_SP_NO_RETSETselect bug8408_f()|drop procedure bug8408_p|drop function bug8408_f|# But this is okcreate function bug8408() returns intbegin declare n int default 0; select count(*) into n from t1; return n;end|insert into t1 value (2, 2.7), (3, 3.14), (7, 7.0)|select *,bug8408() from t1|drop function bug8408|delete from t1|## BUG#10537: Server crashes while loading data file into table through# procedure.# Disable load until it's PS and SP safe--disable_warningsdrop procedure if exists bug10537|--enable_warnings--error ER_SP_BADSTATEMENTcreate procedure bug10537() load data local infile '/tmp/somefile' into table t1|## BUG#8409: Stored procedure crash if function contains FLUSH#--disable_warningsdrop function if exists bug8409|--enable_warnings--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRGcreate function bug8409() returns intbegin flush tables; return 5;end|--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRGcreate function bug8409() returns int begin reset query cache;return 1; end|--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRGcreate function bug8409() returns int begin reset master;return 1; end|--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRGcreate function bug8409() returns int begin reset slave;return 1; end|--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRGcreate function bug8409() returns int begin flush hosts;return 1; end|--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRGcreate function bug8409() returns int begin flush privileges;return 1; end|--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRGcreate function bug8409() returns int begin flush tables with read lock;return 1; end|--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRGcreate function bug8409() returns int begin flush tables;return 1; end|--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRGcreate function bug8409() returns int begin flush logs;return 1; end|--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRGcreate function bug8409() returns int begin flush status;return 1; end|--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRGcreate function bug8409() returns int begin flush slave;return 1; end|--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRGcreate function bug8409() returns int begin flush master;return 1; end|--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRGcreate function bug8409() returns int begin flush des_key_file;return 1; end|--error ER_STMT_NOT_ALLOWED_IN_SF_OR_TRGcreate function bug8409() returns int begin flush user_resources;return 1; end|## BUG#9529: Stored Procedures: No Warning on truncation of procedure name# during creation.# BUG#17015: Routine name truncation not an error# When we started using utf8 for mysql.proc, this limit appeared# to be higher, but in reality the names were truncated.--error ER_TOO_LONG_IDENTcreate procedure bug9529_901234567890123456789012345678901234567890123456789012345()beginend|--disable_warningsdrop procedure if exists bug17015_0123456789012345678901234567890123456789012345678901234|--enable_warnings# Check the upper limit, just to make sure.create procedure bug17015_0123456789012345678901234567890123456789012345678901234()beginend|--replace_column 5 '0000-00-00 00:00:00' 6 '0000-00-00 00:00:00'show procedure status like 'bug17015%'|drop procedure bug17015_0123456789012345678901234567890123456789012345678901234|## BUG#10969: Stored procedures: crash if default() function#--disable_warningsdrop procedure if exists bug10969|--enable_warnings--error ER_WRONG_COLUMN_NAMEcreate procedure bug10969()begin declare s1 int default 0; select default(s1) from t30;end|# This should workcreate procedure bug10969()begin declare s1 int default 0; select default(t30.s1) from t30;end|drop procedure bug10969|drop table t1|delimiter ;|# BUG#9814: Closing a cursor that is not open create table t1(f1 int);create table t2(f1 int); delimiter |;CREATE PROCEDURE SP001()P1: BEGIN DECLARE ENDTABLE INT DEFAULT 0; DECLARE TEMP_NUM INT; DECLARE TEMP_SUM INT; DECLARE C1 CURSOR FOR SELECT F1 FROM t1; DECLARE C2 CURSOR FOR SELECT F1 FROM t2; DECLARE CONTINUE HANDLER FOR NOT FOUND SET ENDTABLE = 1; SET ENDTABLE=0; SET TEMP_SUM=0; SET TEMP_NUM=0; OPEN C1; FETCH C1 INTO TEMP_NUM; WHILE ENDTABLE = 0 DO SET TEMP_SUM=TEMP_NUM+TEMP_SUM; FETCH C1 INTO TEMP_NUM; END WHILE; SELECT TEMP_SUM; CLOSE C1; CLOSE C1; SELECT 'end of proc';END P1|delimiter ;|--error 1326call SP001();drop procedure SP001;drop table t1, t2;# Bug #11394 "Recursion in SP crash server" and bug #11600 "Stored# procedures: crash with function calling itself".# We have to disable recursion since in many cases LEX and many# Item's can't be used in reentrant way nowdays.delimiter |;--disable_warningsdrop function if exists bug11394|drop function if exists bug11394_1|drop function if exists bug11394_2|drop procedure if exists bug11394|--enable_warningscreate function bug11394(i int) returns intbegin if i <= 0 then return 0; else return (i in (100, 200, bug11394(i-1), 400)); end if;end|# If we allow recursive functions without additional modifications# this will crash server since Item for "IN" is not reenterable.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -