1
0
mirror of https://github.com/MariaDB/server.git synced 2026-10-23 18:49:29 +03:00

MDEV-30645: CREATE TRIGGER FOR { STARTUP | SHUTDOWN }

Extended the system table mysql.event to support creation of
system triggers (startup, shutdown, logon, logoff) and ddl triggers.

The system table mysql.event is extended with three columns
  `kind`, `when`, `ddl_type`.
For the task MDEV-30645 only the column `kind` is required,
the other two columns are required for the tasks
   MENT-2355, MENT-2291
but since it is better to reduce a number of times the system table
is changed and as a consequences a number of upgrades to be run,
the entire set of columns is added at once.

Type of the columns `kind` and `ddl_type` are specified as SET to allow
storing of triggers that handle several events.
This commit is contained in:
Dmitry Shulga
2026-10-14 12:00:03 +07:00
parent 327437ade1
commit 7d9e6a2c8e
13 changed files with 76 additions and 2 deletions

View File

@@ -56,6 +56,9 @@ event CREATE TABLE `event` (
`collation_connection` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`db_collation` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`body_utf8` longblob DEFAULT NULL,
`kind` set('SCHEDULE','STARTUP','SHUTDOWN','LOGON','LOGOFF','DDL') NOT NULL DEFAULT 'SCHEDULE',
`when` enum('BEFORE','AFTER') DEFAULT NULL,
`ddl_type` set('CREATE','ALTER','DROP','TRUNCATE','ANALYZE','RENAME','GRANT','REVOKE','COMMENT','ANY_DDL') DEFAULT NULL,
PRIMARY KEY (`db`,`name`)
) ENGINE=Aria DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci PAGE_CHECKSUM=1 TRANSACTIONAL=1 COMMENT='Events'
Phase 1/8: Checking and upgrading mysql database
@@ -277,6 +280,9 @@ event CREATE TABLE `event` (
`collation_connection` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`db_collation` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`body_utf8` longblob DEFAULT NULL,
`kind` set('SCHEDULE','STARTUP','SHUTDOWN','LOGON','LOGOFF','DDL') NOT NULL DEFAULT 'SCHEDULE',
`when` enum('BEFORE','AFTER') DEFAULT NULL,
`ddl_type` set('CREATE','ALTER','DROP','TRUNCATE','ANALYZE','RENAME','GRANT','REVOKE','COMMENT','ANY_DDL') DEFAULT NULL,
PRIMARY KEY (`db`,`name`)
) ENGINE=Aria DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci PAGE_CHECKSUM=1 TRANSACTIONAL=1 COMMENT='Events'
# Emulate that tables were created with utf8mb4 by an older version
@@ -544,6 +550,9 @@ Create Table CREATE TABLE `event` (
`collation_connection` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`db_collation` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`body_utf8` longblob DEFAULT NULL,
`kind` set('SCHEDULE','STARTUP','SHUTDOWN','LOGON','LOGOFF','DDL') NOT NULL DEFAULT 'SCHEDULE',
`when` enum('BEFORE','AFTER') DEFAULT NULL,
`ddl_type` set('CREATE','ALTER','DROP','TRUNCATE','ANALYZE','RENAME','GRANT','REVOKE','COMMENT','ANY_DDL') DEFAULT NULL,
PRIMARY KEY (`db`,`name`)
) ENGINE=Aria DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci PAGE_CHECKSUM=1 TRANSACTIONAL=1 COMMENT='Events'
SET GLOBAL event_scheduler=OFF;

File diff suppressed because one or more lines are too long

View File

@@ -188,6 +188,9 @@ event CREATE TABLE `event` (
`collation_connection` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`db_collation` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`body_utf8` longblob DEFAULT NULL,
`kind` set('SCHEDULE','STARTUP','SHUTDOWN','LOGON','LOGOFF','DDL') NOT NULL DEFAULT 'SCHEDULE',
`when` enum('BEFORE','AFTER') DEFAULT NULL,
`ddl_type` set('CREATE','ALTER','DROP','TRUNCATE','ANALYZE','RENAME','GRANT','REVOKE','COMMENT','ANY_DDL') DEFAULT NULL,
PRIMARY KEY (`db`,`name`)
) ENGINE=Aria DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci PAGE_CHECKSUM=1 TRANSACTIONAL=1 COMMENT='Events'
show create table general_log;

View File

@@ -226,6 +226,9 @@ event CREATE TABLE `event` (
`collation_connection` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`db_collation` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`body_utf8` longblob DEFAULT NULL,
`kind` set('SCHEDULE','STARTUP','SHUTDOWN','LOGON','LOGOFF','DDL') NOT NULL DEFAULT 'SCHEDULE',
`when` enum('BEFORE','AFTER') DEFAULT NULL,
`ddl_type` set('CREATE','ALTER','DROP','TRUNCATE','ANALYZE','RENAME','GRANT','REVOKE','COMMENT','ANY_DDL') DEFAULT NULL,
PRIMARY KEY (`db`,`name`)
) ENGINE=Aria DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci PAGE_CHECKSUM=1 TRANSACTIONAL=1 COMMENT='Events'
show create table general_log;

View File

@@ -230,6 +230,9 @@ event CREATE TABLE `event` (
`collation_connection` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`db_collation` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`body_utf8` longblob DEFAULT NULL,
`kind` set('SCHEDULE','STARTUP','SHUTDOWN','LOGON','LOGOFF','DDL') NOT NULL DEFAULT 'SCHEDULE',
`when` enum('BEFORE','AFTER') DEFAULT NULL,
`ddl_type` set('CREATE','ALTER','DROP','TRUNCATE','ANALYZE','RENAME','GRANT','REVOKE','COMMENT','ANY_DDL') DEFAULT NULL,
PRIMARY KEY (`db`,`name`)
) ENGINE=Aria DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci PAGE_CHECKSUM=1 TRANSACTIONAL=1 COMMENT='Events'
show create table general_log;

View File

@@ -210,6 +210,9 @@ event CREATE TABLE `event` (
`collation_connection` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`db_collation` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`body_utf8` longblob DEFAULT NULL,
`kind` set('SCHEDULE','STARTUP','SHUTDOWN','LOGON','LOGOFF','DDL') NOT NULL DEFAULT 'SCHEDULE',
`when` enum('BEFORE','AFTER') DEFAULT NULL,
`ddl_type` set('CREATE','ALTER','DROP','TRUNCATE','ANALYZE','RENAME','GRANT','REVOKE','COMMENT','ANY_DDL') DEFAULT NULL,
PRIMARY KEY (`db`,`name`)
) ENGINE=Aria DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci PAGE_CHECKSUM=1 TRANSACTIONAL=1 COMMENT='Events'
show create table general_log;

View File

@@ -231,6 +231,9 @@ event CREATE TABLE `event` (
`collation_connection` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`db_collation` char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin DEFAULT NULL,
`body_utf8` longblob DEFAULT NULL,
`kind` set('SCHEDULE','STARTUP','SHUTDOWN','LOGON','LOGOFF','DDL') NOT NULL DEFAULT 'SCHEDULE',
`when` enum('BEFORE','AFTER') DEFAULT NULL,
`ddl_type` set('CREATE','ALTER','DROP','TRUNCATE','ANALYZE','RENAME','GRANT','REVOKE','COMMENT','ANY_DDL') DEFAULT NULL,
PRIMARY KEY (`db`,`name`)
) ENGINE=Aria DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci PAGE_CHECKSUM=1 TRANSACTIONAL=1 COMMENT='Events'
show create table general_log;

View File

@@ -52,11 +52,13 @@ def mysql event comment 16 '' NO char 64 192 NULL NULL NULL utf8mb3 utf8mb3_bin
def mysql event created 8 current_timestamp() NO timestamp NULL NULL NULL NULL 0 NULL NULL timestamp on update current_timestamp() select,insert,update,references NEVER NULL NO NO
def mysql event db 1 '' NO char 64 192 NULL NULL NULL utf8mb3 utf8mb3_bin char(64) PRI select,insert,update,references NEVER NULL NO NO
def mysql event db_collation 21 NULL YES char 64 192 NULL NULL NULL utf8mb3 utf8mb3_bin char(64) select,insert,update,references NEVER NULL NO NO
def mysql event ddl_type 25 NULL YES set 70 210 NULL NULL NULL utf8mb3 utf8mb3_general_ci set('CREATE','ALTER','DROP','TRUNCATE','ANALYZE','RENAME','GRANT','REVOKE','COMMENT','ANY_DDL') select,insert,update,references NEVER NULL NO NO
def mysql event definer 4 '' NO varchar 384 1152 NULL NULL NULL utf8mb3 utf8mb3_bin varchar(384) select,insert,update,references NEVER NULL NO NO
def mysql event ends 12 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime select,insert,update,references NEVER NULL NO NO
def mysql event execute_at 5 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime select,insert,update,references NEVER NULL NO NO
def mysql event interval_field 7 NULL YES enum 18 54 NULL NULL NULL utf8mb3 utf8mb3_general_ci enum('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND') select,insert,update,references NEVER NULL NO NO
def mysql event interval_value 6 NULL YES int NULL NULL 10 0 NULL NULL NULL int(11) select,insert,update,references NEVER NULL NO NO
def mysql event kind 23 'SCHEDULE' NO set 42 126 NULL NULL NULL utf8mb3 utf8mb3_general_ci set('SCHEDULE','STARTUP','SHUTDOWN','LOGON','LOGOFF','DDL') select,insert,update,references NEVER NULL NO NO
def mysql event last_executed 10 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime select,insert,update,references NEVER NULL NO NO
def mysql event modified 9 '0000-00-00 00:00:00' NO timestamp NULL NULL NULL NULL 0 NULL NULL timestamp select,insert,update,references NEVER NULL NO NO
def mysql event name 2 '' NO char 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci char(64) PRI select,insert,update,references NEVER NULL NO NO
@@ -66,6 +68,7 @@ def mysql event sql_mode 15 '' NO set 561 1683 NULL NULL NULL utf8mb3 utf8mb3_ge
def mysql event starts 11 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime select,insert,update,references NEVER NULL NO NO
def mysql event status 13 'ENABLED' NO enum 18 54 NULL NULL NULL utf8mb3 utf8mb3_general_ci enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') select,insert,update,references NEVER NULL NO NO
def mysql event time_zone 18 'SYSTEM' NO char 64 64 NULL NULL NULL latin1 latin1_swedish_ci char(64) select,insert,update,references NEVER NULL NO NO
def mysql event when 24 NULL YES enum 6 18 NULL NULL NULL utf8mb3 utf8mb3_general_ci enum('BEFORE','AFTER') select,insert,update,references NEVER NULL NO NO
def mysql func dl 3 '' NO char 128 384 NULL NULL NULL utf8mb3 utf8mb3_bin char(128) select,insert,update,references NEVER NULL NO NO
def mysql func name 1 '' NO char 64 192 NULL NULL NULL utf8mb3 utf8mb3_bin char(64) PRI select,insert,update,references NEVER NULL NO NO
def mysql func ret 2 0 NO tinyint NULL NULL 3 0 NULL NULL NULL tinyint(1) select,insert,update,references NEVER NULL NO NO
@@ -396,6 +399,9 @@ NULL mysql event originator int NULL NULL NULL NULL int(10) unsigned
3.0000 mysql event collation_connection char 64 192 utf8mb3 utf8mb3_bin char(64)
3.0000 mysql event db_collation char 64 192 utf8mb3 utf8mb3_bin char(64)
1.0000 mysql event body_utf8 longblob 4294967295 4294967295 NULL NULL longblob
3.0000 mysql event kind set 42 126 utf8mb3 utf8mb3_general_ci set('SCHEDULE','STARTUP','SHUTDOWN','LOGON','LOGOFF','DDL')
3.0000 mysql event when enum 6 18 utf8mb3 utf8mb3_general_ci enum('BEFORE','AFTER')
3.0000 mysql event ddl_type set 70 210 utf8mb3 utf8mb3_general_ci set('CREATE','ALTER','DROP','TRUNCATE','ANALYZE','RENAME','GRANT','REVOKE','COMMENT','ANY_DDL')
3.0000 mysql func name char 64 192 utf8mb3 utf8mb3_bin char(64)
NULL mysql func ret tinyint NULL NULL NULL NULL tinyint(1)
3.0000 mysql func dl char 128 384 utf8mb3 utf8mb3_bin char(128)

View File

@@ -52,11 +52,13 @@ def mysql event comment 16 '' NO char 64 192 NULL NULL NULL utf8mb3 utf8mb3_bin
def mysql event created 8 current_timestamp() NO timestamp NULL NULL NULL NULL 0 NULL NULL timestamp on update current_timestamp() NEVER NULL NO NO
def mysql event db 1 '' NO char 64 192 NULL NULL NULL utf8mb3 utf8mb3_bin char(64) PRI NEVER NULL NO NO
def mysql event db_collation 21 NULL YES char 64 192 NULL NULL NULL utf8mb3 utf8mb3_bin char(64) NEVER NULL NO NO
def mysql event ddl_type 25 NULL YES set 70 210 NULL NULL NULL utf8mb3 utf8mb3_general_ci set('CREATE','ALTER','DROP','TRUNCATE','ANALYZE','RENAME','GRANT','REVOKE','COMMENT','ANY_DDL') NEVER NULL NO NO
def mysql event definer 4 '' NO varchar 384 1152 NULL NULL NULL utf8mb3 utf8mb3_bin varchar(384) NEVER NULL NO NO
def mysql event ends 12 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime NEVER NULL NO NO
def mysql event execute_at 5 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime NEVER NULL NO NO
def mysql event interval_field 7 NULL YES enum 18 54 NULL NULL NULL utf8mb3 utf8mb3_general_ci enum('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND') NEVER NULL NO NO
def mysql event interval_value 6 NULL YES int NULL NULL 10 0 NULL NULL NULL int(11) NEVER NULL NO NO
def mysql event kind 23 'SCHEDULE' NO set 42 126 NULL NULL NULL utf8mb3 utf8mb3_general_ci set('SCHEDULE','STARTUP','SHUTDOWN','LOGON','LOGOFF','DDL') NEVER NULL NO NO
def mysql event last_executed 10 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime NEVER NULL NO NO
def mysql event modified 9 '0000-00-00 00:00:00' NO timestamp NULL NULL NULL NULL 0 NULL NULL timestamp NEVER NULL NO NO
def mysql event name 2 '' NO char 64 192 NULL NULL NULL utf8mb3 utf8mb3_general_ci char(64) PRI NEVER NULL NO NO
@@ -66,6 +68,7 @@ def mysql event sql_mode 15 '' NO set 561 1683 NULL NULL NULL utf8mb3 utf8mb3_ge
def mysql event starts 11 NULL YES datetime NULL NULL NULL NULL 0 NULL NULL datetime NEVER NULL NO NO
def mysql event status 13 'ENABLED' NO enum 18 54 NULL NULL NULL utf8mb3 utf8mb3_general_ci enum('ENABLED','DISABLED','SLAVESIDE_DISABLED') NEVER NULL NO NO
def mysql event time_zone 18 'SYSTEM' NO char 64 64 NULL NULL NULL latin1 latin1_swedish_ci char(64) NEVER NULL NO NO
def mysql event when 24 NULL YES enum 6 18 NULL NULL NULL utf8mb3 utf8mb3_general_ci enum('BEFORE','AFTER') NEVER NULL NO NO
def mysql func dl 3 '' NO char 128 384 NULL NULL NULL utf8mb3 utf8mb3_bin char(128) NEVER NULL NO NO
def mysql func name 1 '' NO char 64 192 NULL NULL NULL utf8mb3 utf8mb3_bin char(64) PRI NEVER NULL NO NO
def mysql func ret 2 0 NO tinyint NULL NULL 3 0 NULL NULL NULL tinyint(1) NEVER NULL NO NO
@@ -393,6 +396,9 @@ NULL mysql event originator int NULL NULL NULL NULL int(10) unsigned
3.0000 mysql event collation_connection char 64 192 utf8mb3 utf8mb3_bin char(64)
3.0000 mysql event db_collation char 64 192 utf8mb3 utf8mb3_bin char(64)
1.0000 mysql event body_utf8 longblob 4294967295 4294967295 NULL NULL longblob
3.0000 mysql event kind set 42 126 utf8mb3 utf8mb3_general_ci set('SCHEDULE','STARTUP','SHUTDOWN','LOGON','LOGOFF','DDL')
3.0000 mysql event when enum 6 18 utf8mb3 utf8mb3_general_ci enum('BEFORE','AFTER')
3.0000 mysql event ddl_type set 70 210 utf8mb3 utf8mb3_general_ci set('CREATE','ALTER','DROP','TRUNCATE','ANALYZE','RENAME','GRANT','REVOKE','COMMENT','ANY_DDL')
3.0000 mysql func name char 64 192 utf8mb3 utf8mb3_bin char(64)
NULL mysql func ret tinyint NULL NULL NULL NULL tinyint(1)
3.0000 mysql func dl char 128 384 utf8mb3 utf8mb3_bin char(128)

View File

@@ -169,7 +169,7 @@ PREPARE stmt FROM @str;
EXECUTE stmt;
DROP PREPARE stmt;
CREATE TABLE IF NOT EXISTS event ( db char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL default '', name char(64) NOT NULL default '', body longblob NOT NULL, definer varchar(384) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL default '', execute_at DATETIME default NULL, interval_value int(11) default NULL, interval_field ENUM('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND') default NULL, created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, modified TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00', last_executed DATETIME default NULL, starts DATETIME default NULL, ends DATETIME default NULL, status ENUM('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL default 'ENABLED', on_completion ENUM('DROP','PRESERVE') NOT NULL default 'DROP', sql_mode set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT','TIME_ROUND_FRACTIONAL') DEFAULT '' NOT NULL, comment char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL default '', originator INTEGER UNSIGNED NOT NULL, time_zone char(64) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT 'SYSTEM', character_set_client char(32) collate utf8mb3_bin, collation_connection char(64) collate utf8mb3_bin, db_collation char(64) collate utf8mb3_bin, body_utf8 longblob, PRIMARY KEY (db, name) ) engine=Aria transactional=1 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT 'Events';
CREATE TABLE IF NOT EXISTS event ( db char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL default '', name char(64) NOT NULL default '', body longblob NOT NULL, definer varchar(384) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL default '', execute_at DATETIME default NULL, interval_value int(11) default NULL, interval_field ENUM('YEAR','QUARTER','MONTH','DAY','HOUR','MINUTE','WEEK','SECOND','MICROSECOND','YEAR_MONTH','DAY_HOUR','DAY_MINUTE','DAY_SECOND','HOUR_MINUTE','HOUR_SECOND','MINUTE_SECOND','DAY_MICROSECOND','HOUR_MICROSECOND','MINUTE_MICROSECOND','SECOND_MICROSECOND') default NULL, created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, modified TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00', last_executed DATETIME default NULL, starts DATETIME default NULL, ends DATETIME default NULL, status ENUM('ENABLED','DISABLED','SLAVESIDE_DISABLED') NOT NULL default 'ENABLED', on_completion ENUM('DROP','PRESERVE') NOT NULL default 'DROP', sql_mode set('REAL_AS_FLOAT','PIPES_AS_CONCAT','ANSI_QUOTES','IGNORE_SPACE','IGNORE_BAD_TABLE_OPTIONS','ONLY_FULL_GROUP_BY','NO_UNSIGNED_SUBTRACTION','NO_DIR_IN_CREATE','POSTGRESQL','ORACLE','MSSQL','DB2','MAXDB','NO_KEY_OPTIONS','NO_TABLE_OPTIONS','NO_FIELD_OPTIONS','MYSQL323','MYSQL40','ANSI','NO_AUTO_VALUE_ON_ZERO','NO_BACKSLASH_ESCAPES','STRICT_TRANS_TABLES','STRICT_ALL_TABLES','NO_ZERO_IN_DATE','NO_ZERO_DATE','INVALID_DATES','ERROR_FOR_DIVISION_BY_ZERO','TRADITIONAL','NO_AUTO_CREATE_USER','HIGH_NOT_PRECEDENCE','NO_ENGINE_SUBSTITUTION','PAD_CHAR_TO_FULL_LENGTH','EMPTY_STRING_IS_NULL','SIMULTANEOUS_ASSIGNMENT','TIME_ROUND_FRACTIONAL') DEFAULT '' NOT NULL, comment char(64) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NOT NULL default '', originator INTEGER UNSIGNED NOT NULL, time_zone char(64) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL DEFAULT 'SYSTEM', character_set_client char(32) collate utf8mb3_bin, collation_connection char(64) collate utf8mb3_bin, db_collation char(64) collate utf8mb3_bin, body_utf8 longblob, kind SET ('SCHEDULE', 'STARTUP', 'SHUTDOWN', 'LOGON', 'LOGOFF', 'DDL') NOT NULL DEFAULT 'SCHEDULE', `when` ENUM ('BEFORE', 'AFTER') DEFAULT NULL, ddl_type SET ('CREATE', 'ALTER', 'DROP', 'TRUNCATE','ANALYZE', 'RENAME', 'GRANT', 'REVOKE', 'COMMENT', 'ANY_DDL') DEFAULT NULL, PRIMARY KEY (db, name) ) engine=Aria transactional=1 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci COMMENT 'Events';
SET @create_innodb_table_stats="CREATE TABLE IF NOT EXISTS innodb_table_stats (
database_name VARCHAR(64) NOT NULL,

View File

@@ -685,6 +685,24 @@ ALTER TABLE event MODIFY body_utf8 longblob DEFAULT NULL;
alter table event MODIFY definer varchar(384) collate utf8mb3_bin NOT NULL DEFAULT '';
# The following modifications of the table mysql.event is for upcomming
# support of the tasks:
# MDEV-30645: CREATE TRIGGER FOR { STARTUP | SHUTDOWN }
# MENT-2355: Logon/logoff triggers
# MENT-2291: Triggers on DDL events
# Make changes in the system table mysql.events once as part of
# the task MDEV-30645. Core implementation of the features for
# the tasks MENT-2355, MENT-2291 will be done later
ALTER TABLE event ADD kind SET ('SCHEDULE', 'STARTUP', 'SHUTDOWN',
'LOGON', 'LOGOFF', 'DDL') NOT NULL DEFAULT 'SCHEDULE';
# The column `when` is used only for triggers on DDL statements (kind = 'DDL').
# For other kind of system triggers this column has the value NULL.
ALTER TABLE event ADD `when` ENUM ('BEFORE', 'AFTER') DEFAULT NULL;
# The column `ddl_type` is used only for triggers on DDL statements (kind = 'DDL').
# For other kind of system triggers this column has the value NULL.
ALTER TABLE event ADD ddl_type SET ('CREATE', 'ALTER', 'DROP', 'TRUNCATE',
'ANALYZE', 'RENAME', 'GRANT', 'REVOKE',
'COMMENT', 'ANY_DDL') DEFAULT NULL;
# Enable event scheduler if the event table was not up to date before.
set global event_scheduler=original;

View File

@@ -162,6 +162,23 @@ const TABLE_FIELD_TYPE event_table_fields[ET_FIELD_COUNT] =
{ STRING_WITH_LEN("body_utf8") },
{ STRING_WITH_LEN("longblob") + CAN_BE_NULL },
{ NULL, 0 }
},
{
{ STRING_WITH_LEN("kind") },
{ STRING_WITH_LEN("set('SCHEDULE','STARTUP','SHUTDOWN',"
"'LOGON','LOGOFF','DDL')") },
{ NULL, 0 }
},
{
{ STRING_WITH_LEN("when") },
{ STRING_WITH_LEN("enum('BEFORE','AFTER')") },
{ NULL, 0 }
},
{
{ STRING_WITH_LEN("ddl_type") },
{ STRING_WITH_LEN("set('CREATE','ALTER','DROP','TRUNCATE',"
"'ANALYZE','RENAME','GRANT','REVOKE')") },
{ NULL, 0 }
}
};

View File

@@ -53,6 +53,9 @@ enum enum_events_table_field
ET_FIELD_COLLATION_CONNECTION,
ET_FIELD_DB_COLLATION,
ET_FIELD_BODY_UTF8,
ET_FIELD_KIND,
ET_FIELD_WHEN,
ET_FIELD_DDL_TYPE,
ET_FIELD_COUNT /* a cool trick to count the number of fields :) */
};