diff options
author | unknown <pem@mysql.com> | 2003-03-05 19:45:17 +0100 |
---|---|---|
committer | unknown <pem@mysql.com> | 2003-03-05 19:45:17 +0100 |
commit | f74b36a24266e290cf23c7d06333c3a558e33af9 (patch) | |
tree | e234a7655df51a3c25765f6ba7d58d0148fbd99c /mysql-test | |
parent | f519382d2bf276a9beb5d123fde93ec4cdfdefea (diff) | |
download | mariadb-git-f74b36a24266e290cf23c7d06333c3a558e33af9.tar.gz |
Improved error handling regarding SPs (with info like names etc in the output).
Disabled queries in FUNCTIONs.
include/mysqld_error.h:
New error message for queries in FUNCTIONs.
mysql-test/t/sp.test:
Moved error tests to sp-error.test.
sql/share/czech/errmsg.txt:
New error message for queries in FUNCTIONs.
Improved most of the SP error messages with added info.
sql/share/danish/errmsg.txt:
New error message for queries in FUNCTIONs.
Improved most of the SP error messages with added info.
sql/share/dutch/errmsg.txt:
New error message for queries in FUNCTIONs.
Improved most of the SP error messages with added info.
sql/share/english/errmsg.txt:
New error message for queries in FUNCTIONs.
Improved most of the SP error messages with added info.
sql/share/estonian/errmsg.txt:
New error message for queries in FUNCTIONs.
Improved most of the SP error messages with added info.
sql/share/french/errmsg.txt:
New error message for queries in FUNCTIONs.
Improved most of the SP error messages with added info.
sql/share/german/errmsg.txt:
New error message for queries in FUNCTIONs.
Improved most of the SP error messages with added info.
sql/share/greek/errmsg.txt:
New error message for queries in FUNCTIONs.
Improved most of the SP error messages with added info.
sql/share/hungarian/errmsg.txt:
New error message for queries in FUNCTIONs.
Improved most of the SP error messages with added info.
sql/share/italian/errmsg.txt:
New error message for queries in FUNCTIONs.
Improved most of the SP error messages with added info.
sql/share/japanese/errmsg.txt:
New error message for queries in FUNCTIONs.
Improved most of the SP error messages with added info.
sql/share/korean/errmsg.txt:
New error message for queries in FUNCTIONs.
Improved most of the SP error messages with added info.
sql/share/norwegian-ny/errmsg.txt:
New error message for queries in FUNCTIONs.
Improved most of the SP error messages with added info.
sql/share/norwegian/errmsg.txt:
New error message for queries in FUNCTIONs.
Improved most of the SP error messages with added info.
sql/share/polish/errmsg.txt:
New error message for queries in FUNCTIONs.
Improved most of the SP error messages with added info.
sql/share/portuguese/errmsg.txt:
New error message for queries in FUNCTIONs.
Improved most of the SP error messages with added info.
sql/share/romanian/errmsg.txt:
New error message for queries in FUNCTIONs.
Improved most of the SP error messages with added info.
sql/share/russian/errmsg.txt:
New error message for queries in FUNCTIONs.
Improved most of the SP error messages with added info.
sql/share/serbian/errmsg.txt:
New error message for queries in FUNCTIONs.
Improved most of the SP error messages with added info.
sql/share/slovak/errmsg.txt:
New error message for queries in FUNCTIONs.
Improved most of the SP error messages with added info.
sql/share/spanish/errmsg.txt:
New error message for queries in FUNCTIONs.
Improved most of the SP error messages with added info.
sql/share/swedish/errmsg.txt:
New error message for queries in FUNCTIONs.
Improved most of the SP error messages with added info.
sql/share/ukrainian/errmsg.txt:
New error message for queries in FUNCTIONs.
Improved most of the SP error messages with added info.
sql/sp_head.cc:
Added debug output to sp_instr_jump::execute(). (Moved from sp_head.h)
sql/sp_head.h:
Moved sp_instr_jump::execute() to sp_head.cc.
sql/sql_lex.h:
Added SQLCOM_CREATE_SPFUNCTION (for improved error handling).
sql/sql_parse.cc:
Improved error handling regarding SPs (adding info like names etc in output).
sql/sql_yacc.yy:
Improved error handling regarding SPs (adding info like names etc in output).
Disabled queries in FUNCTIONS (since it can't work anyway).
Diffstat (limited to 'mysql-test')
-rw-r--r-- | mysql-test/r/sp-error.result | 70 | ||||
-rw-r--r-- | mysql-test/t/sp-error.test | 110 | ||||
-rw-r--r-- | mysql-test/t/sp.test | 18 |
3 files changed, 180 insertions, 18 deletions
diff --git a/mysql-test/r/sp-error.result b/mysql-test/r/sp-error.result new file mode 100644 index 00000000000..ee99e871c3e --- /dev/null +++ b/mysql-test/r/sp-error.result @@ -0,0 +1,70 @@ +delete from mysql.proc; +create procedure proc1() +set @x = 42; +create function func1() returns int +return 42; +create procedure foo() +create procedure bar() set @x=3; +Can't create a PROCEDURE from within another stored routine +create procedure foo() +create function bar() returns double return 2.3; +Can't create a FUNCTION from within another stored routine +create procedure proc1() +set @x = 42; +PROCEDURE proc1 already exists +create function func1() returns int +return 42; +FUNCTION func1 already exists +alter procedure foo; +PROCEDURE foo does not exist +alter function foo; +FUNCTION foo does not exist +drop procedure foo; +PROCEDURE foo does not exist +drop function foo; +FUNCTION foo does not exist +call foo(); +PROCEDURE foo does not exist +create procedure foo() +foo: loop +leave bar; +end loop; +LEAVE with no matching label: bar +create procedure foo() +foo: loop +iterate bar; +end loop; +ITERATE with no matching label: bar +create procedure foo() +foo: loop +foo: loop +set @x=2; +end loop foo; +end loop foo; +Redefining label foo +create procedure foo() +foo: loop +set @x=2; +end loop bar; +End-label bar without match +create procedure foo(out x int) +begin +declare y int; +set x = y; +end; +Referring to uninitialized variable y +create procedure foo(x int) +select * from test.t1; +SELECT in a stored procedure must have INTO +create procedure foo() +return 42; +RETURN is only allowed in a FUNCTION +create function foo() returns int +begin +declare x int; +select max(c) into x from test.t; +return x; +end; +Queries, like SELECT, INSERT, UPDATE (and others), are not allowed in a FUNCTION +drop procedure proc1; +drop function func1; diff --git a/mysql-test/t/sp-error.test b/mysql-test/t/sp-error.test new file mode 100644 index 00000000000..e3577803a47 --- /dev/null +++ b/mysql-test/t/sp-error.test @@ -0,0 +1,110 @@ +# +# Stored PROCEDURE error tests +# + +# Make sure we don't have any procedures left. +delete from mysql.proc; + +delimiter |; + +# Check that we get the right error, i.e. UDF declaration parses correctly, +# but foo.so doesn't exist. +# QQ This generates an error message containing a misleading errno which +# might vary between systems (it usually doesn't have anything to do with +# the actual failing dlopen()). +#--error 1126 +#create function foo returns real soname "foo.so"| + +create procedure proc1() + set @x = 42| + +create function func1() returns int + return 42| + +# Can't create recursively +--error 1250 +create procedure foo() + create procedure bar() set @x=3| +--error 1250 +create procedure foo() + create function bar() returns double return 2.3| + +# Already exists +--error 1251 +create procedure proc1() + set @x = 42| +--error 1251 +create function func1() returns int + return 42| + +# Does not exist +--error 1252 +alter procedure foo| +--error 1252 +alter function foo| +--error 1252 +drop procedure foo| +--error 1252 +drop function foo| +--error 1252 +call foo()| + +# LEAVE/ITERATE with no match +--error 1255 +create procedure foo() +foo: loop + leave bar; +end loop| +--error 1255 +create procedure foo() +foo: loop + iterate bar; +end loop| + +# Redefining label +--error 1256 +create procedure foo() +foo: loop + foo: loop + set @x=2; + end loop foo; +end loop foo| + +# End label mismatch +--error 1257 +create procedure foo() +foo: loop + set @x=2; +end loop bar| + +# Referring to undef variable +--error 1258 +create procedure foo(out x int) +begin + declare y int; + set x = y; +end| + +# We require INTO in SELECTs (for now; this might change in the future) +--error 1259 +create procedure foo(x int) + select * from test.t1| + +# RETURN in FUNCTION only +--error 1260 +create procedure foo() + return 42| + +# Doesn't allow queries in FUNCTIONs (for now :-( ) +--error 1261 +create function foo() returns int +begin + declare x int; + select max(c) into x from test.t; + return x; +end| + +drop procedure proc1| +drop function func1| + +delimiter ;| diff --git a/mysql-test/t/sp.test b/mysql-test/t/sp.test index 3b690f8b542..d56d5859940 100644 --- a/mysql-test/t/sp.test +++ b/mysql-test/t/sp.test @@ -213,16 +213,6 @@ until x = 0 end repeat| drop procedure b2| -# Btw, this should generate an error (for now; this might change in the future) ---error 1259 -create procedure b3(x int) -repeat - select * from test.t1; # No INTO! - insert into test.t1 values (repeat("b3",3), x); - set x = x-1; -until x = 0 end repeat| - - # Labelled WHILE with ITERATE (pointless really) create procedure c(x int) hmm: while x > 0 do @@ -398,14 +388,6 @@ end| #drop table t2| drop procedure create_select| -# Check that we get the right error, i.e. UDF declaration parses correctly, -# but foo.so doesn't exist. -# QQ This generates an error message containing a misleading errno which -# might vary between systems (it usually doesn't have anything to do with -# the actual failing dlopen()). -#--error 1126 -#create function foo returns real soname "foo.so"| - # A minimal, constant FUNCTION. create function e() returns double return 2.7182818284590452354| |