Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-10142 PL/SQL parser
  3. MDEV-12089

sql_mode=ORACLE: Understand optional routine name after the END keyword

    XMLWordPrintable

Details

    • 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)

      Attachments

        Activity

          People

            bar Alexander Barkov
            bar Alexander Barkov
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Git Integration

                Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.