Details
-
Technical task
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
None
-
10.2.2-3, 10.2.2-1, 10.2.2-2, 10.2.2-4, 10.1.18
Description
When running with sql_mode=ORACLE, MariaDB (the bb-10.2-compatibility branch) does not understand the optional function or procedure name after the END keyword which ends the entire routine definition. We'll extend the parser to understand the optional name, so this script is parsed without syntax errors:
SET sql_mode=ORACLE; |
DROP PROCEDURE p1; |
DELIMITER /
|
CREATE PROCEDURE p1 AS |
BEGIN
|
END p1; -- Notice p1 |
/
|
DELIMITER ;
|
In case of stand-alone routines we'll also allow qualified names: END test.p1;
Originally this task included changes for package routines, but it does not any more:
Optional routine names are also possible inside a package body definition:
DELIMITER $$
|
CREATE PACKAGE BODY test2 AS |
FUNCTION f1 RETURN INT AS |
BEGIN |
RETURN 10; |
END f1; |
PROCEDURE p1 AS |
BEGIN |
NULL; |
END p1; |
END test2; |
$$
|
DELIMITER ;
|
DROP PACKAGE test2; |
In case of package routines the name specified in END cannot be qualified.
If the name specified in CREATE does not match the name specified in END, an error will be reported.
Under terms of this patch we'll only fix traditional (stand-alone) stored functions and procedures.
Handling the name after the END for package routines will be done in package related tasks (e.g. MDEV-10591 or MDEV-11952)