mirror of
https://github.com/MariaDB/server.git
synced 2025-07-27 18:02:13 +03:00
Bug#21462 (Stored procedures with no arguments require parenthesis)
The syntax of the CALL statement, to invoke a stored procedure, has been changed to make the use of parenthesis optional in the argument list. With this change, "CALL p;" is equivalent to "CALL p();". While the SQL spec does not explicitely mandate this syntax, supporting it is needed for practical reasons, for integration with JDBC / ODBC connectors. Also, warnings in the sql/sql_yacc.yy file, which were not reported by Bison 2.1 but are now reported by Bison 2.2, have been fixed. The warning found were: bison -y -p MYSQL -d --debug --verbose sql_yacc.yy sql_yacc.yy:653.9-18: warning: symbol UNLOCK_SYM redeclared sql_yacc.yy:656.9-17: warning: symbol UNTIL_SYM redeclared sql_yacc.yy:658.9-18: warning: symbol UPDATE_SYM redeclared sql_yacc.yy:5169.11-5174.11: warning: unused value: $2 sql_yacc.yy:5208.11-5220.11: warning: unused value: $5 sql_yacc.yy:5221.11-5234.11: warning: unused value: $5 conflicts: 249 shift/reduce "unused value: $2" correspond to the $$=$1 assignment in the 1st {} block in table_ref -> join_table {} {}, which does not procude a result ($$) for the rule but an intermediate $2 value for the action instead. "unused value: $5" are similar, with $$ assignments in {} actions blocks which are not for the final reduce. mysql-test/r/sp.result: New test case for Bug#21462 mysql-test/t/sp.test: New test case for Bug#21462 sql/sql_yacc.yy: "CALL p;" syntax for calling a stored procedure Fixed bison 2.2 warnings.
This commit is contained in:
@ -5470,5 +5470,32 @@ CAD
|
||||
CHF
|
||||
DROP FUNCTION bug21493|
|
||||
DROP TABLE t3,t4|
|
||||
drop procedure if exists proc_21462_a|
|
||||
drop procedure if exists proc_21462_b|
|
||||
create procedure proc_21462_a()
|
||||
begin
|
||||
select "Called A";
|
||||
end|
|
||||
create procedure proc_21462_b(x int)
|
||||
begin
|
||||
select "Called B";
|
||||
end|
|
||||
call proc_21462_a|
|
||||
Called A
|
||||
Called A
|
||||
call proc_21462_a()|
|
||||
Called A
|
||||
Called A
|
||||
call proc_21462_a(1)|
|
||||
ERROR 42000: Incorrect number of arguments for PROCEDURE test.proc_21462_a; expected 0, got 1
|
||||
call proc_21462_b|
|
||||
ERROR 42000: Incorrect number of arguments for PROCEDURE test.proc_21462_b; expected 1, got 0
|
||||
call proc_21462_b()|
|
||||
ERROR 42000: Incorrect number of arguments for PROCEDURE test.proc_21462_b; expected 1, got 0
|
||||
call proc_21462_b(1)|
|
||||
Called B
|
||||
Called B
|
||||
drop procedure proc_21462_a|
|
||||
drop procedure proc_21462_b|
|
||||
End of 5.0 tests
|
||||
drop table t1,t2;
|
||||
|
@ -6420,6 +6420,39 @@ SELECT bug21493(Member_ID) FROM t3|
|
||||
DROP FUNCTION bug21493|
|
||||
DROP TABLE t3,t4|
|
||||
|
||||
#
|
||||
# Bug#21462 Stored procedures with no arguments require parenthesis
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
drop procedure if exists proc_21462_a|
|
||||
drop procedure if exists proc_21462_b|
|
||||
--enable_warnings
|
||||
|
||||
create procedure proc_21462_a()
|
||||
begin
|
||||
select "Called A";
|
||||
end|
|
||||
|
||||
create procedure proc_21462_b(x int)
|
||||
begin
|
||||
select "Called B";
|
||||
end|
|
||||
|
||||
call proc_21462_a|
|
||||
call proc_21462_a()|
|
||||
-- error ER_SP_WRONG_NO_OF_ARGS
|
||||
call proc_21462_a(1)|
|
||||
|
||||
-- error ER_SP_WRONG_NO_OF_ARGS
|
||||
call proc_21462_b|
|
||||
-- error ER_SP_WRONG_NO_OF_ARGS
|
||||
call proc_21462_b()|
|
||||
call proc_21462_b(1)|
|
||||
|
||||
drop procedure proc_21462_a|
|
||||
drop procedure proc_21462_b|
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user