mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
e3cfb7c803
Logging logic: - Log tables, just before they are dropped, to the ddl log - After the last table for the statement is dropped, log an xid for the whole ddl log event In case of crash: - Remove first any active DROP TABLE events from the ddl log that matches xids found in binary log (this mean the drop was successful and was propery logged). - Loop over all active DROP TABLE events - Ensure that the table is completely dropped - Write a DROP TABLE entry to the binary log with the dropped tables. Other things: - Added code to ha_drop_table() to be able to tell the difference if a get_new_handler() failed because of out-of-memory or because the handler refused/was not able to create a a handler. This was needed to get sequences to work as sequences needs a share object to be passed to get_new_handler() - TC_LOG_BINLOG::recover() was changed to always collect Xid's from the binary log and always call ddl_log_close_binlogged_events(). This was needed to be able to collect DROP TABLE events with embedded Xid's (used by ddl log). - Added a new variable "$grep_script" to binlog filter to be able to find only rows that matches a regexp. - Had to adjust some test that changed because drop statements are a bit larger in the binary log than before (as we have to store the xid) Other things: - MDEV-25588 Atomic DDL: Binlog query event written upon recovery is corrupt fixed (in the original commit).
20 lines
1.3 KiB
Text
20 lines
1.3 KiB
Text
"engine: aria crash point: ddl_log_drop_before_delete_view position: 1"
|
|
v2.frm
|
|
master-bin.000002 # Query # # DROP VIEW IF EXISTS `test`.`v1` /* generated by ddl recovery */
|
|
"engine: aria crash point: ddl_log_drop_before_delete_view position: 2"
|
|
master-bin.000002 # Query # # DROP VIEW IF EXISTS `test`.`v1`,`test`.`v2` /* generated by ddl recovery */
|
|
"engine: aria crash point: ddl_log_drop_after_delete_view position: 1"
|
|
v2.frm
|
|
master-bin.000002 # Query # # DROP VIEW IF EXISTS `test`.`v1` /* generated by ddl recovery */
|
|
"engine: aria crash point: ddl_log_drop_after_delete_view position: 2"
|
|
master-bin.000002 # Query # # DROP VIEW IF EXISTS `test`.`v1`,`test`.`v2` /* generated by ddl recovery */
|
|
"engine: aria crash point: ddl_log_drop_before_binlog position: 1"
|
|
master-bin.000002 # Query # # DROP VIEW IF EXISTS `test`.`v1`,`test`.`v2` /* generated by ddl recovery */
|
|
"engine: aria crash point: ddl_log_drop_before_binlog position: 2"
|
|
"No crash!"
|
|
master-bin.000001 # Query # # use `test`; DROP VIEW v1,v2
|
|
"engine: aria crash point: ddl_log_drop_after_binlog position: 1"
|
|
master-bin.000001 # Query # # use `test`; DROP VIEW v1,v2
|
|
"engine: aria crash point: ddl_log_drop_after_binlog position: 2"
|
|
"No crash!"
|
|
master-bin.000001 # Query # # use `test`; DROP VIEW v1,v2
|