📄 sp-error.test
字号:
--error 1424select bug11394(2)|drop function bug11394|create function bug11394_1(i int) returns intbegin if i <= 0 then return 0; else return (select bug11394_1(i-1)); end if;end|# The following statement will crash because some LEX members responsible# for selects cannot be used in reentrant fashion.--error 1424select bug11394_1(2)|drop function bug11394_1|# Note that the following should be allowed since it does not contains# recursioncreate function bug11394_2(i int) returns int return i|select bug11394_2(bug11394_2(10))|drop function bug11394_2|create procedure bug11394(i int, j int)begin if i > 0 then call bug11394(i - 1,(select 1)); end if;end|--error ER_SP_RECURSION_LIMITcall bug11394(2, 1)|set @@max_sp_recursion_depth=10|call bug11394(2, 1)|set @@max_sp_recursion_depth=default|drop procedure bug11394|delimiter ;|## BUG 12490 (Packets out of order if calling HELP CONTENTS from Stored Procedure)#--error ER_SP_BADSTATEMENTCREATE PROCEDURE BUG_12490() HELP CONTENTS;--error ER_SP_BADSTATEMENTCREATE FUNCTION BUG_12490() RETURNS INT HELP CONTENTS;CREATE TABLE t_bug_12490(a int);--error ER_SP_BADSTATEMENTCREATE TRIGGER BUG_12490 BEFORE UPDATE ON t_bug_12490 FOR EACH ROW HELP CONTENTS;DROP TABLE t_bug_12490;## Bug#11834 "Re-execution of prepared statement with dropped function# crashes server". Also tests handling of prepared stmts which use# stored functions but does not require prelocking.#--disable_warningsdrop function if exists bug11834_1;drop function if exists bug11834_2;--enable_warningscreate function bug11834_1() returns int return 10;create function bug11834_2() returns int return bug11834_1();prepare stmt from "select bug11834_2()";execute stmt;# Re-execution of statement should not crash server.execute stmt;drop function bug11834_1;# Attempt to execute statement should return proper error and # should not crash server.--error ER_SP_DOES_NOT_EXISTexecute stmt;deallocate prepare stmt;drop function bug11834_2;## Bug#12953 "Stored procedures: crash if OPTIMIZE TABLE in function"#delimiter |;--disable_warningsDROP FUNCTION IF EXISTS bug12953|--enable_warnings--error ER_SP_NO_RETSETCREATE FUNCTION bug12953() RETURNS INTBEGIN OPTIMIZE TABLE t1; RETURN 1;END|delimiter ;|## Bug##12995 "Inside function "Table 't4' was not locked with LOCK TABLES"#delimiter |;--disable_warningsDROP FUNCTION IF EXISTS bug12995|--enable_warnings--error ER_SP_BADSTATEMENTCREATE FUNCTION bug12995() RETURNS INTBEGIN HANDLER t1 OPEN; RETURN 1;END|--error ER_SP_BADSTATEMENTCREATE FUNCTION bug12995() RETURNS INTBEGIN HANDLER t1 READ FIRST; RETURN 1;END|--error ER_SP_BADSTATEMENTCREATE FUNCTION bug12995() RETURNS INTBEGIN HANDLER t1 CLOSE; RETURN 1;END|--error 1305SELECT bug12995()|delimiter ;|## BUG#12712: SET AUTOCOMMIT should fail within SP/functions/triggers#--disable_warningsdrop procedure if exists bug12712;drop function if exists bug12712;--enable_warnings# Can...create procedure bug12712() set session autocommit = 0;select @@autocommit;set @au = @@autocommit;call bug12712();select @@autocommit;set session autocommit = @au;delimiter |;create function bug12712() returns intbegin call bug12712(); return 0;end|# Can't...--error ER_SP_CANT_SET_AUTOCOMMITset @x = bug12712()|drop procedure bug12712|drop function bug12712|--error ER_SP_CANT_SET_AUTOCOMMITcreate function bug12712() returns intbegin set session autocommit = 0; return 0;end|--error ER_SP_CANT_SET_AUTOCOMMITcreate function bug12712() returns intbegin set @@autocommit = 0; return 0;end|--error ER_SP_CANT_SET_AUTOCOMMITcreate function bug12712() returns intbegin set local autocommit = 0; return 0;end|delimiter ;|--error ER_SP_CANT_SET_AUTOCOMMITcreate trigger bug12712 before insert on t1 for each row set session autocommit = 0;## BUG#9367: Stored procedures: client hang after "show warnings"#--disable_parsing--disable_warningsdrop procedure if exists bug9367;--enable_warningscreate table t1 (s1 int);select s1 from t1;delimiter |;create procedure bug9367()begin declare v int; declare c cursor for select s1 from t1; open c; show warnings; fetch c into v; select v;end|delimiter ;|call bug9367();drop procedure bug9367;drop table t1;--enable_parsing## BUG#13510: Setting password local variable changes current password#delimiter |;--disable_warningsdrop procedure if exists bug13510_1|drop procedure if exists bug13510_2|drop procedure if exists bug13510_3|drop procedure if exists bug13510_4|--enable_warnings--error ER_SP_BAD_VAR_SHADOWcreate procedure bug13510_1()begin declare password varchar(10); set password = 'foo1'; select password;end|# Check that an error message is sent--error ER_PARSE_ERRORset names='foo2'|--error ER_SP_BAD_VAR_SHADOWcreate procedure bug13510_2()begin declare names varchar(10); set names = 'foo2'; select names;end|create procedure bug13510_3()begin declare password varchar(10); set `password` = 'foo3'; select password;end|create procedure bug13510_4()begin declare names varchar(10); set `names` = 'foo4'; select names;end|call bug13510_3()|call bug13510_4()|drop procedure bug13510_3|drop procedure bug13510_4|## Test that statements which implicitly commit transaction are prohibited# in stored function and triggers. Attempt to create function or trigger# containing such statement should produce error (includes test for# bug #13627).#--disable_warningsdrop function if exists bug_13627_f|--enable_warningsCREATE TABLE t1 (a int)|-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN DROP TRIGGER test1; END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE FUNCTION bug_13627_f() returns int BEGIN DROP TRIGGER test1; return 1; END |-- error ER_SP_BADSTATEMENTCREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN load table t1 from master; END |-- error ER_SP_BADSTATEMENTCREATE FUNCTION bug_13627_f() returns int BEGIN load table t1 from master; return 1; END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create table t2 (a int); END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE FUNCTION bug_13627_f() returns int BEGIN create table t2 (a int); return 1; END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create index t1_i on t1 (a); END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE FUNCTION bug_13627_f() returns int BEGIN create index t1_i on t1 (a); return 1; END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN alter table t1 add column b int; END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE FUNCTION bug_13627_f() returns int BEGIN alter table t1 add column b int; return 1; END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN rename table t1 to t2; END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE FUNCTION bug_13627_f() returns int BEGIN rename table t1 to t2; return 1; END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN truncate table t1; END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE FUNCTION bug_13627_f() returns int BEGIN truncate table t1; return 1; END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN drop table t1; END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE FUNCTION bug_13627_f() returns int BEGIN drop table t1; return 1; END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN drop index t1_i on t1; END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE FUNCTION bug_13627_f() returns int BEGIN drop index t1_i on t1; return 1; END |-- error ER_SP_BADSTATEMENTCREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN unlock tables; END |-- error ER_SP_BADSTATEMENTCREATE FUNCTION bug_13627_f() returns int BEGIN unlock tables; return 1; END |-- error ER_SP_BADSTATEMENTCREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN LOCK TABLE t1 READ; END |-- error ER_SP_BADSTATEMENTCREATE FUNCTION bug_13627_f() returns int BEGIN LOCK TABLE t1 READ; return 1; END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create database mysqltest; END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE FUNCTION bug_13627_f() returns int BEGIN create database mysqltest; return 1; END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN drop database mysqltest; END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE FUNCTION bug_13627_f() returns int BEGIN drop database mysqltest; return 1; END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create user 'mysqltest_1'; END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE FUNCTION bug_13627_f() returns int BEGIN create user 'mysqltest_1'; return 1; END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN drop user 'mysqltest_1'; END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE FUNCTION bug_13627_f() returns int BEGIN drop user 'mysqltest_1'; return 1; END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN rename user 'mysqltest_2' to 'mysqltest_1'; END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE FUNCTION bug_13627_f() returns int BEGIN rename user 'mysqltest_2' to 'mysqltest_1'; return 1; END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create view v1 as select 1; END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE FUNCTION bug_13627_f() returns int BEGIN create view v1 as select 1; return 1; END |-- error ER_SP_BADSTATEMENTCREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN alter view v1 as select 1; END |-- error ER_SP_BADSTATEMENTCREATE FUNCTION bug_13627_f() returns int BEGIN alter view v1 as select 1; return 1; END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN drop view v1; END |-- error ER_COMMIT_NOT_ALLOWED_IN_SF_OR_TRGCREATE FUNCTION bug_13627_f() returns int BEGIN drop view v1; return 1; END |-- error ER_SP_NO_RECURSIVE_CREATECREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create trigger tr2 before insert on t1 for each row do select 1; END |-- error ER_SP_NO_RECURSIVE_CREATECREATE FUNCTION bug_13627_f() returns int BEGIN create trigger tr2 before insert on t1 for each row do select 1; return 1; END |-- error ER_SP_NO_DROP_SPCREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN drop function bug_13627_f; END |-- error ER_SP_NO_DROP_SPCREATE FUNCTION bug_13627_f() returns int BEGIN drop function bug_13627_f; return 1; END |-- error ER_SP_NO_RECURSIVE_CREATECREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN create function f2 () returns int return 1; END |-- error ER_SP_NO_RECURSIVE_CREATECREATE FUNCTION bug_13627_f() returns int BEGIN create function f2 () returns int return 1; return 1; END |CREATE TRIGGER tr1 BEFORE INSERT ON t1 FOR EACH ROW BEGIN CREATE TEMPORARY TABLE t2 (a int); DROP TEMPORARY TABLE t2; END |CREATE FUNCTION bug_13627_f() returns int BEGIN CREATE TEMPORARY TABLE t2 (a int); DROP TEMPORARY TABLE t2; return 1; END |drop table t1|drop function bug_13627_f|delimiter ;|# BUG#12329: "Bogus error msg when executing PS with stored procedure after# SP was re-created". See also test for related bug#13399 in trigger.testdrop function if exists bug12329;--enable_warningscreate table t1 as select 1 a;create table t2 as select 1 a;create function bug12329() returns int return (select a from t1);prepare stmt1 from 'select bug12329()';execute stmt1;drop function bug12329;create function bug12329() returns int return (select a+100 from t2);select bug12329();# Until we implement proper mechanism for invalidation of PS/SP when table# or SP's are changed the following statement will fail with 'Table ... was# not locked' error (this mechanism should be based on the new TDC).--error ER_NO_SUCH_TABLE execute stmt1;deallocate prepare stmt1;drop function bug12329; drop table t1, t2;## Bug#13514 "server crash when create a stored procedure before choose a# database" and# Bug#13587 "Server crash when SP is created without database# selected"#create database mysqltest1;use mysqltest1;drop database mysqltest1;--error ER_NO_DB_ERROR create function f1() returns int return 1;delimiter |;--error ER_NO_DB_ERROR create procedure p1(out param1 int)begin select count(*) into param1 from t3;end|delimiter ;|use test;## BUG#13037: undefined variable in IF cause erroneous error-message#--disable_warningsDROP PROCEDURE IF EXISTS bug13037_p1;DROP PROCEDURE IF EXISTS bug13037_p2;DROP PROCEDURE IF EXISTS bug13037_p3;--enable_warningsdelimiter |;CREATE PROCEDURE bug13037_p1()BEGIN IF bug13037_foo THEN SELECT 1; END IF;END|CREATE PROCEDURE bug13037_p2()BEGIN SET @bug13037_foo = bug13037_bar;END|CREATE PROCEDURE bug13037_p3()BEGIN SELECT bug13037_foo;END|delimiter ;|--echo--error 1054CALL bug13037_p1();--error 1054CALL bug13037_p2();--error 1054CALL bug13037_p3();--error 1054CALL bug13037_p1();--error 1054CALL bug13037_p2();--error 1054CALL bug13037_p3();DROP PROCEDURE bug13037_p1;DROP PROCEDURE bug13037_p2;DROP PROCEDURE bug13037_p3;## Bug#14569 "editing a stored procedure kills mysqld-nt"#create database mysqltest1;create database mysqltest2;use mysqltest1;drop database mysqltest1;create procedure mysqltest2.p1() select version();--error ER_NO_DB_ERROR create procedure p2() select version();use mysqltest2;--replace_column 5 '0000-00-00 00:00:00' 6 '0000-00-00 00:00:00'show procedure status;drop database mysqltest2;use test;## Bug#13012 "SP: REPAIR/BACKUP/RESTORE TABLE crashes the server"#delimiter |;--disable_warningsDROP FUNCTION IF EXISTS bug13012|--enable_warnings--error ER_SP_NO_RETSETCREATE FUNCTION bug13012() RETURNS INTBEGIN REPAIR TABLE t1; RETURN 1;END|--error ER_SP_NO_RETSETCREATE FUNCTION bug13012() RETURNS INTBEGIN BACKUP TABLE t1 TO '/tmp'; RETURN 1;END|--error ER_SP_NO_RETSETCREATE FUNCTION bug13012() RETURNS INTBEGIN RESTORE TABLE t1 FROM '/tmp'; RETURN 1;END|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -