mirror of
https://github.com/MariaDB/server.git
synced 2025-09-03 20:43:11 +03:00
The purpose of this task is to ensure that DROP TRIGGER is atomic. Description of how atomic drop trigger works: Logging of DROP TRIGGER Log the following information: db table name trigger name xid /* Used to check if query was already logged to binary log */ initial length of the .TRG file query if there is space for it, if not log a zero length query. Recovery operations: - Delete if exists 'database/trigger_name.TRN~' - If this file existed, it means that we crashed before the trigger was deleted and there is nothing else to do. - Get length of .TRG file - If file length is unchanged, trigger was not dropped. Nothing else to do. - Log original query to binary, if it was stored in the ddl log. If it was not stored (long query string), log the following query to binary log: use `database` ; DROP TRIGGER IF EXISTS `trigger_name` /* generated by ddl log */; Other things: - Added trigger name and DDL_LOG_STATE to drop_trigger() Trigger name was added to make the interface more consistent and more general.
50 lines
2.1 KiB
Plaintext
50 lines
2.1 KiB
Plaintext
"engine: aria crash point: ddl_log_drop_before_drop_trigger position: 1"
|
|
t1.TRG
|
|
t1_trg.TRN
|
|
t2_trg.TRN
|
|
"engine: aria crash point: ddl_log_drop_before_drop_trigger position: 2"
|
|
t1.TRG
|
|
t2_trg.TRN
|
|
master-bin.000001 # Query # # use `test`; DROP TRIGGER t1_trg
|
|
"engine: aria crash point: ddl_log_drop_before_drop_trn position: 1"
|
|
t1.TRG
|
|
t2_trg.TRN
|
|
master-bin.000002 # Query # # use `test`; DROP TRIGGER t1_trg
|
|
"engine: aria crash point: ddl_log_drop_before_drop_trn position: 2"
|
|
master-bin.000001 # Query # # use `test`; DROP TRIGGER t1_trg
|
|
master-bin.000002 # Query # # use `test`; DROP TRIGGER t2_trg /* some comment */
|
|
"engine: aria crash point: ddl_log_drop_after_drop_trigger position: 1"
|
|
t1.TRG
|
|
t2_trg.TRN
|
|
master-bin.000002 # Query # # use `test`; DROP TRIGGER t1_trg
|
|
"engine: aria crash point: ddl_log_drop_after_drop_trigger position: 2"
|
|
master-bin.000001 # Query # # use `test`; DROP TRIGGER t1_trg
|
|
master-bin.000002 # Query # # use `test`; DROP TRIGGER t2_trg /* some comment */
|
|
"engine: aria crash point: definition_file_after_create position: 1"
|
|
t1.TRG
|
|
t1_trg.TRN
|
|
t2_trg.TRN
|
|
"engine: aria crash point: definition_file_after_create position: 2"
|
|
"No crash!"
|
|
master-bin.000001 # Query # # use `test`; DROP TRIGGER t1_trg
|
|
master-bin.000001 # Query # # use `test`; DROP TRIGGER t2_trg /* some comment */
|
|
"engine: aria crash point: ddl_log_drop_before_binlog position: 1"
|
|
t1.TRG
|
|
t2_trg.TRN
|
|
master-bin.000002 # Query # # use `test`; DROP TRIGGER t1_trg
|
|
"engine: aria crash point: ddl_log_drop_before_binlog position: 2"
|
|
master-bin.000001 # Query # # use `test`; DROP TRIGGER t1_trg
|
|
master-bin.000002 # Query # # use `test`; DROP TRIGGER t2_trg /* some comment */
|
|
"engine: aria crash point: ddl_log_drop_after_binlog position: 1"
|
|
t1.TRG
|
|
t2_trg.TRN
|
|
master-bin.000001 # Query # # use `test`; DROP TRIGGER t1_trg
|
|
"engine: aria crash point: ddl_log_drop_after_binlog position: 2"
|
|
master-bin.000001 # Query # # use `test`; DROP TRIGGER t1_trg
|
|
master-bin.000001 # Query # # use `test`; DROP TRIGGER t2_trg /* some comment */
|
|
|
|
# Test deleting not existing trigger
|
|
#
|
|
Warnings:
|
|
Note 1360 Trigger does not exist
|