mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +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:
6
sql/sp.h
6
sql/sp.h
@@ -157,6 +157,7 @@ public:
|
||||
}
|
||||
virtual enum_sp_type type() const= 0;
|
||||
virtual LEX_CSTRING type_lex_cstring() const= 0;
|
||||
virtual enum_sql_command sqlcom_create() const= 0;
|
||||
virtual enum_sql_command sqlcom_drop() const= 0;
|
||||
virtual LEX_CSTRING empty_body_lex_cstring(sql_mode_t mode) const
|
||||
{
|
||||
@@ -257,6 +258,7 @@ public:
|
||||
static LEX_CSTRING m_type_str= { STRING_WITH_LEN("PROCEDURE")};
|
||||
return m_type_str;
|
||||
}
|
||||
enum_sql_command sqlcom_create() const { return SQLCOM_CREATE_PROCEDURE; }
|
||||
enum_sql_command sqlcom_drop() const { return SQLCOM_DROP_PROCEDURE; }
|
||||
LEX_CSTRING empty_body_lex_cstring(sql_mode_t mode) const;
|
||||
const char *show_create_routine_col1_caption() const
|
||||
@@ -308,6 +310,7 @@ public:
|
||||
static LEX_CSTRING m_type_str= { STRING_WITH_LEN("FUNCTION")};
|
||||
return m_type_str;
|
||||
}
|
||||
enum_sql_command sqlcom_create() const { return SQLCOM_CREATE_FUNCTION; }
|
||||
enum_sql_command sqlcom_drop() const { return SQLCOM_DROP_FUNCTION; }
|
||||
LEX_CSTRING empty_body_lex_cstring(sql_mode_t mode) const;
|
||||
const char *show_create_routine_col1_caption() const
|
||||
@@ -378,6 +381,7 @@ public:
|
||||
static LEX_CSTRING m_type_str= {STRING_WITH_LEN("PACKAGE")};
|
||||
return m_type_str;
|
||||
}
|
||||
enum_sql_command sqlcom_create() const { return SQLCOM_CREATE_PACKAGE; }
|
||||
enum_sql_command sqlcom_drop() const { return SQLCOM_DROP_PACKAGE; }
|
||||
LEX_CSTRING empty_body_lex_cstring(sql_mode_t mode) const
|
||||
{
|
||||
@@ -412,6 +416,7 @@ public:
|
||||
static LEX_CSTRING m_type_str= {STRING_WITH_LEN("PACKAGE BODY")};
|
||||
return m_type_str;
|
||||
}
|
||||
enum_sql_command sqlcom_create() const { return SQLCOM_CREATE_PACKAGE_BODY; }
|
||||
enum_sql_command sqlcom_drop() const { return SQLCOM_DROP_PACKAGE_BODY; }
|
||||
LEX_CSTRING empty_body_lex_cstring(sql_mode_t mode) const
|
||||
{
|
||||
@@ -446,6 +451,7 @@ public:
|
||||
static LEX_CSTRING m_type_str= { STRING_WITH_LEN("TRIGGER")};
|
||||
return m_type_str;
|
||||
}
|
||||
enum_sql_command sqlcom_create() const { return SQLCOM_CREATE_TRIGGER; }
|
||||
enum_sql_command sqlcom_drop() const { return SQLCOM_DROP_TRIGGER; }
|
||||
MDL_key::enum_mdl_namespace get_mdl_type() const
|
||||
{
|
||||
|
Reference in New Issue
Block a user