1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-27 18:02:13 +03:00

MDEV-32101 CREATE PACKAGE [BODY] for sql_mode=DEFAULT

This patch adds PACKAGE support with SQL/PSM dialect for sql_mode=DEFAULT:

- CREATE PACKAGE
- DROP PACKAGE
- CREATE PACKAGE BODY
- DROP PACKAGE BODY
- Package function and procedure invocation from outside of the package:
    -- using two step identifiers
    SELECT pkg.f1();
    CALL pkg.p1()

    -- using three step identifiers
    SELECT db.pkg.f1();
    CALL db.pkg.p1();

This is a non-standard MariaDB extension.

However, later this code can be used to implement
the SQL Standard and DB2 dialects of CREATE MODULE.
This commit is contained in:
Alexander Barkov
2023-09-04 15:28:50 +04:00
parent 9bd95e914f
commit aed9c656a9
21 changed files with 4866 additions and 3547 deletions

View File

@ -0,0 +1,46 @@
#
# CREATE PACKAGE for sql_mode='';
# Resebmles SQL Standard 'CREATE MODULE'.
#
SET sql_mode='';
DELIMITER $$;
CREATE OR REPLACE PACKAGE pkg
PROCEDURE p1();
FUNCTION f1() RETURNS INT;
END;
$$
DELIMITER ;$$
DELIMITER $$;
CREATE OR REPLACE PACKAGE BODY pkg
-- variable declarations
DECLARE a INT DEFAULT 11;
DECLARE b INT DEFAULT 10;
-- routine declarations
PROCEDURE p1()
BEGIN
SELECT CURRENT_USER;
END;
FUNCTION f1() RETURNS INT
BEGIN
RETURN a;
END;
-- initialization section
SET a=a-b;
END;
$$
DELIMITER ;$$
SHOW CREATE PACKAGE pkg;
SHOW CREATE PACKAGE BODY pkg;
CALL pkg.p1();
SELECT pkg.f1();
DROP PACKAGE pkg;