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

sql_mode=ORACLE: Do not require BEGIN..END in multi-statement exception handlers in THEN clause

    XMLWordPrintable

    Details

    • Sprint:
      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) requires extra BEGIN..END in multi-statement exception handlers in THEN clause:

      SET sql_mode=ORACLE;
      DROP PROCEDURE p1;
      DELIMITER /
      CREATE PROCEDURE p1 AS
      BEGIN
        INSERT INTO t1 (a) VALUES (10);
      EXCEPTION
        WHEN DUP_VAL_ON_INDEX THEN
        BEGIN
          NULL;
          NULL;
        END;
        WHEN OTHERS THEN
        BEGIN
          NULL;
          NULL;
        END;
      END;
      /
      DELIMITER ;
      

      For better Oracle compatibility, we'll fix it not to require BEGIN..END, to make this work:

      SET sql_mode=ORACLE;
      DROP PROCEDURE p1;
      DELIMITER /
      CREATE PROCEDURE p1 AS
      BEGIN
        INSERT INTO t1 (a) VALUES (10);
      EXCEPTION
        WHEN DUP_VAL_ON_INDEX THEN
          NULL;
          NULL;
        WHEN OTHERS THEN
          NULL;
          NULL;
      END;
      /
      DELIMITER ;
      

        Attachments

          Activity

            People

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

              Dates

              • Created:
                Updated:
                Resolved: