1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

Fixed BUG#3287: Stored Procedure Case Statement Not SQL:2003 Compliant.

include/mysqld_error.h:
  New error code for missing ELSE in SP CASE statement.
include/sql_state.h:
  New error code for missing ELSE in SP CASE statement.
mysql-test/r/sp-error.result:
  Test case for missing ELSE in SP CASE statement.
mysql-test/t/sp-error.test:
  Test case for missing ELSE in SP CASE statement.
sql/share/czech/errmsg.txt:
  New error message for missing ELSE in SP CASE statement.
sql/share/danish/errmsg.txt:
  New error message for missing ELSE in SP CASE statement.
sql/share/dutch/errmsg.txt:
  New error message for missing ELSE in SP CASE statement.
sql/share/english/errmsg.txt:
  New error message for missing ELSE in SP CASE statement.
sql/share/estonian/errmsg.txt:
  New error message for missing ELSE in SP CASE statement.
sql/share/french/errmsg.txt:
  New error message for missing ELSE in SP CASE statement.
sql/share/german/errmsg.txt:
  New error message for missing ELSE in SP CASE statement.
sql/share/greek/errmsg.txt:
  New error message for missing ELSE in SP CASE statement.
sql/share/hungarian/errmsg.txt:
  New error message for missing ELSE in SP CASE statement.
sql/share/italian/errmsg.txt:
  New error message for missing ELSE in SP CASE statement.
sql/share/japanese/errmsg.txt:
  New error message for missing ELSE in SP CASE statement.
sql/share/korean/errmsg.txt:
  New error message for missing ELSE in SP CASE statement.
sql/share/norwegian-ny/errmsg.txt:
  New error message for missing ELSE in SP CASE statement.
sql/share/norwegian/errmsg.txt:
  New error message for missing ELSE in SP CASE statement.
sql/share/polish/errmsg.txt:
  New error message for missing ELSE in SP CASE statement.
sql/share/portuguese/errmsg.txt:
  New error message for missing ELSE in SP CASE statement.
sql/share/romanian/errmsg.txt:
  New error message for missing ELSE in SP CASE statement.
sql/share/russian/errmsg.txt:
  New error message for missing ELSE in SP CASE statement.
sql/share/serbian/errmsg.txt:
  New error message for missing ELSE in SP CASE statement.
sql/share/slovak/errmsg.txt:
  New error message for missing ELSE in SP CASE statement.
sql/share/spanish/errmsg.txt:
  New error message for missing ELSE in SP CASE statement.
sql/share/swedish/errmsg.txt:
  New error message for missing ELSE in SP CASE statement.
sql/share/ukrainian/errmsg.txt:
  New error message for missing ELSE in SP CASE statement.
sql/sql_yacc.yy:
  Generate run-time error instruction when no ELSE in SP CASE statement.
This commit is contained in:
unknown
2004-03-29 12:29:06 +02:00
parent 7456a3e92f
commit 5c7f368b78
28 changed files with 83 additions and 3 deletions

View File

@ -342,4 +342,5 @@
#define ER_SP_NO_USE 1323 #define ER_SP_NO_USE 1323
#define ER_SP_VARCOND_AFTER_CURSHNDLR 1324 #define ER_SP_VARCOND_AFTER_CURSHNDLR 1324
#define ER_SP_CURSOR_AFTER_HANDLER 1325 #define ER_SP_CURSOR_AFTER_HANDLER 1325
#define ER_ERROR_MESSAGES 326 #define ER_SP_CASE_NOT_FOUND 1326
#define ER_ERROR_MESSAGES 327

View File

@ -199,3 +199,4 @@ ER_SP_SUBSELECT_NYI, "0A000", "",
ER_SP_NO_USE, "42000", "", ER_SP_NO_USE, "42000", "",
ER_SP_VARCOND_AFTER_CURSHNDLR, "42000", "", ER_SP_VARCOND_AFTER_CURSHNDLR, "42000", "",
ER_SP_CURSOR_AFTER_HANDLER, "42000", "", ER_SP_CURSOR_AFTER_HANDLER, "42000", "",
ER_SP_CASE_NOT_FOUND, "20000", "",

View File

@ -341,4 +341,25 @@ call bug2329_2()|
ERROR 42S22: Unknown column 'v' in 'field list' ERROR 42S22: Unknown column 'v' in 'field list'
drop procedure bug2329_1| drop procedure bug2329_1|
drop procedure bug2329_2| drop procedure bug2329_2|
create function bug3287() returns int
begin
declare v int default null;
case
when v is not null then return 1;
end case;
return 2;
end|
select bug3287()|
ERROR 20000: Case not found for CASE statement
drop function bug3287|
create procedure bug3287(x int)
case x
when 0 then
insert into test.t1 values (x, 0.1);
when 1 then
insert into test.t1 values (x, 1.1);
end case|
call bug3287(2)|
ERROR 20000: Case not found for CASE statement
drop procedure bug3287|
drop table t1| drop table t1|

View File

@ -473,6 +473,33 @@ call bug2329_2()|
drop procedure bug2329_1| drop procedure bug2329_1|
drop procedure bug2329_2| drop procedure bug2329_2|
#
# BUG#3287
#
create function bug3287() returns int
begin
declare v int default null;
case
when v is not null then return 1;
end case;
return 2;
end|
--error 1326
select bug3287()|
drop function bug3287|
create procedure bug3287(x int)
case x
when 0 then
insert into test.t1 values (x, 0.1);
when 1 then
insert into test.t1 values (x, 1.1);
end case|
--error 1326
call bug3287(2)|
drop procedure bug3287|
drop table t1| drop table t1|
delimiter ;| delimiter ;|

View File

@ -338,3 +338,4 @@ character-set=latin2
"USE is not allowed in a stored procedure" "USE is not allowed in a stored procedure"
"Variable or condition declaration after cursor or handler declaration" "Variable or condition declaration after cursor or handler declaration"
"Cursor declaration after handler declaration" "Cursor declaration after handler declaration"
"Case not found for CASE statement"

View File

@ -332,3 +332,4 @@ character-set=latin1
"USE is not allowed in a stored procedure" "USE is not allowed in a stored procedure"
"Variable or condition declaration after cursor or handler declaration" "Variable or condition declaration after cursor or handler declaration"
"Cursor declaration after handler declaration" "Cursor declaration after handler declaration"
"Case not found for CASE statement"

View File

@ -340,3 +340,4 @@ character-set=latin1
"USE is not allowed in a stored procedure" "USE is not allowed in a stored procedure"
"Variable or condition declaration after cursor or handler declaration" "Variable or condition declaration after cursor or handler declaration"
"Cursor declaration after handler declaration" "Cursor declaration after handler declaration"
"Case not found for CASE statement"

View File

@ -329,3 +329,4 @@ character-set=latin1
"USE is not allowed in a stored procedure" "USE is not allowed in a stored procedure"
"Variable or condition declaration after cursor or handler declaration" "Variable or condition declaration after cursor or handler declaration"
"Cursor declaration after handler declaration" "Cursor declaration after handler declaration"
"Case not found for CASE statement"

View File

@ -334,3 +334,4 @@ character-set=latin7
"USE is not allowed in a stored procedure" "USE is not allowed in a stored procedure"
"Variable or condition declaration after cursor or handler declaration" "Variable or condition declaration after cursor or handler declaration"
"Cursor declaration after handler declaration" "Cursor declaration after handler declaration"
"Case not found for CASE statement"

View File

@ -329,3 +329,4 @@ character-set=latin1
"USE is not allowed in a stored procedure" "USE is not allowed in a stored procedure"
"Variable or condition declaration after cursor or handler declaration" "Variable or condition declaration after cursor or handler declaration"
"Cursor declaration after handler declaration" "Cursor declaration after handler declaration"
"Case not found for CASE statement"

View File

@ -341,3 +341,4 @@ character-set=latin1
"USE is not allowed in a stored procedure" "USE is not allowed in a stored procedure"
"Variable or condition declaration after cursor or handler declaration" "Variable or condition declaration after cursor or handler declaration"
"Cursor declaration after handler declaration" "Cursor declaration after handler declaration"
"Case not found for CASE statement"

View File

@ -329,3 +329,4 @@ character-set=greek
"USE is not allowed in a stored procedure" "USE is not allowed in a stored procedure"
"Variable or condition declaration after cursor or handler declaration" "Variable or condition declaration after cursor or handler declaration"
"Cursor declaration after handler declaration" "Cursor declaration after handler declaration"
"Case not found for CASE statement"

View File

@ -331,3 +331,4 @@ character-set=latin2
"USE is not allowed in a stored procedure" "USE is not allowed in a stored procedure"
"Variable or condition declaration after cursor or handler declaration" "Variable or condition declaration after cursor or handler declaration"
"Cursor declaration after handler declaration" "Cursor declaration after handler declaration"
"Case not found for CASE statement"

View File

@ -329,3 +329,4 @@ character-set=latin1
"USE is not allowed in a stored procedure" "USE is not allowed in a stored procedure"
"Variable or condition declaration after cursor or handler declaration" "Variable or condition declaration after cursor or handler declaration"
"Cursor declaration after handler declaration" "Cursor declaration after handler declaration"
"Case not found for CASE statement"

View File

@ -331,3 +331,4 @@ character-set=ujis
"USE is not allowed in a stored procedure" "USE is not allowed in a stored procedure"
"Variable or condition declaration after cursor or handler declaration" "Variable or condition declaration after cursor or handler declaration"
"Cursor declaration after handler declaration" "Cursor declaration after handler declaration"
"Case not found for CASE statement"

View File

@ -329,3 +329,4 @@ character-set=euckr
"USE is not allowed in a stored procedure" "USE is not allowed in a stored procedure"
"Variable or condition declaration after cursor or handler declaration" "Variable or condition declaration after cursor or handler declaration"
"Cursor declaration after handler declaration" "Cursor declaration after handler declaration"
"Case not found for CASE statement"

View File

@ -331,3 +331,4 @@ character-set=latin1
"USE is not allowed in a stored procedure" "USE is not allowed in a stored procedure"
"Variable or condition declaration after cursor or handler declaration" "Variable or condition declaration after cursor or handler declaration"
"Cursor declaration after handler declaration" "Cursor declaration after handler declaration"
"Case not found for CASE statement"

View File

@ -331,3 +331,4 @@ character-set=latin1
"USE is not allowed in a stored procedure" "USE is not allowed in a stored procedure"
"Variable or condition declaration after cursor or handler declaration" "Variable or condition declaration after cursor or handler declaration"
"Cursor declaration after handler declaration" "Cursor declaration after handler declaration"
"Case not found for CASE statement"

View File

@ -333,3 +333,4 @@ character-set=latin2
"USE is not allowed in a stored procedure" "USE is not allowed in a stored procedure"
"Variable or condition declaration after cursor or handler declaration" "Variable or condition declaration after cursor or handler declaration"
"Cursor declaration after handler declaration" "Cursor declaration after handler declaration"
"Case not found for CASE statement"

View File

@ -330,3 +330,4 @@ character-set=latin1
"USE is not allowed in a stored procedure" "USE is not allowed in a stored procedure"
"Variable or condition declaration after cursor or handler declaration" "Variable or condition declaration after cursor or handler declaration"
"Cursor declaration after handler declaration" "Cursor declaration after handler declaration"
"Case not found for CASE statement"

View File

@ -333,3 +333,4 @@ character-set=latin2
"USE is not allowed in a stored procedure" "USE is not allowed in a stored procedure"
"Variable or condition declaration after cursor or handler declaration" "Variable or condition declaration after cursor or handler declaration"
"Cursor declaration after handler declaration" "Cursor declaration after handler declaration"
"Case not found for CASE statement"

View File

@ -331,3 +331,4 @@ character-set=koi8r
"USE is not allowed in a stored procedure" "USE is not allowed in a stored procedure"
"Variable or condition declaration after cursor or handler declaration" "Variable or condition declaration after cursor or handler declaration"
"Cursor declaration after handler declaration" "Cursor declaration after handler declaration"
"Case not found for CASE statement"

View File

@ -324,3 +324,4 @@ character-set=cp1250
"USE is not allowed in a stored procedure" "USE is not allowed in a stored procedure"
"Variable or condition declaration after cursor or handler declaration" "Variable or condition declaration after cursor or handler declaration"
"Cursor declaration after handler declaration" "Cursor declaration after handler declaration"
"Case not found for CASE statement"

View File

@ -337,3 +337,4 @@ character-set=latin2
"USE is not allowed in a stored procedure" "USE is not allowed in a stored procedure"
"Variable or condition declaration after cursor or handler declaration" "Variable or condition declaration after cursor or handler declaration"
"Cursor declaration after handler declaration" "Cursor declaration after handler declaration"
"Case not found for CASE statement"

View File

@ -331,3 +331,4 @@ character-set=latin1
"USE is not allowed in a stored procedure" "USE is not allowed in a stored procedure"
"Variable or condition declaration after cursor or handler declaration" "Variable or condition declaration after cursor or handler declaration"
"Cursor declaration after handler declaration" "Cursor declaration after handler declaration"
"Case not found for CASE statement"

View File

@ -329,3 +329,4 @@ character-set=latin1
"USE is not allowed in a stored procedure" "USE is not allowed in a stored procedure"
"Variable or condition declaration after cursor or handler declaration" "Variable or condition declaration after cursor or handler declaration"
"Cursor declaration after handler declaration" "Cursor declaration after handler declaration"
"Case not found for CASE statement"

View File

@ -334,3 +334,4 @@ character-set=koi8u
"USE is not allowed in a stored procedure" "USE is not allowed in a stored procedure"
"Variable or condition declaration after cursor or handler declaration" "Variable or condition declaration after cursor or handler declaration"
"Cursor declaration after handler declaration" "Cursor declaration after handler declaration"
"Case not found for CASE statement"

View File

@ -1908,9 +1908,16 @@ sp_case:
; ;
sp_whens: sp_whens:
/* Empty */ {} /* Empty */
| WHEN_SYM sp_case {} {
sp_head *sp= Lex->sphead;
uint ip= sp->instructions();
sp_instr_error *i= new sp_instr_error(ip, ER_SP_CASE_NOT_FOUND);
sp->add_instr(i);
}
| ELSE sp_proc_stmts {} | ELSE sp_proc_stmts {}
| WHEN_SYM sp_case {}
; ;
sp_labeled_control: sp_labeled_control: