mirror of
https://github.com/MariaDB/server.git
synced 2025-02-04 21:02:17 +01:00
6aa9a552c2
There are a few different cases to consider Logging of CREATE TABLE and CREATE TABLE ... LIKE - If REPLACE is used and there was an existing table, DDL log the drop of the table. - If discovery of table is to be done - DDL LOG create table else - DDL log create table (with engine type) - create the table - If table was created - Log entry to binary log with xid - Mark DDL log completed Crash recovery: - If query was in binary log do nothing and exit - If discoverted table - Delete the .frm file -else - Drop created table and frm file - If table was dropped, write a DROP TABLE statement in binary log CREATE TABLE ... SELECT required a little more work as when one is using statement logging the query is written to the binary log before commit is done. This was fixed by adding a DROP TABLE to the binary log during crash recovery if the ddl log entry was not closed. In this case the binary log will contain: CREATE TABLE xxx ... SELECT .... DROP TABLE xxx; Other things: - Added debug_crash_here() functionality to Aria to be able to test crash in create table between the creation of the .MAI and the .MAD files.
45 lines
956 B
Text
45 lines
956 B
Text
#
|
|
# MDEV-18686 Verify that the Annotate_rows_log_event is written only
|
|
# once per statement into binlog.
|
|
#
|
|
--source include/galera_cluster.inc
|
|
|
|
CREATE TABLE t1 (f1 INT PRIMARY KEY);
|
|
|
|
#
|
|
# Unit ROW
|
|
#
|
|
SET SESSION wsrep_trx_fragment_unit='ROWS';
|
|
SET SESSION wsrep_trx_fragment_size=1;
|
|
|
|
--let $start_pos= query_get_value(SHOW MASTER STATUS, Position, 1)
|
|
|
|
INSERT INTO t1 VALUES (1), (2);
|
|
|
|
#
|
|
# Unit BYTE
|
|
#
|
|
SET SESSION wsrep_trx_fragment_unit='BYTES';
|
|
SET SESSION wsrep_trx_fragment_size=1;
|
|
|
|
INSERT INTO t1 VALUES (3), (4);
|
|
|
|
#
|
|
# Unit STATEMENT
|
|
#
|
|
SET SESSION wsrep_trx_fragment_unit='STATEMENTS';
|
|
SET SESSION wsrep_trx_fragment_size=1;
|
|
|
|
INSERT INTO t1 VALUES (5), (6);
|
|
|
|
#
|
|
# Reset to default settings
|
|
#
|
|
SET SESSION wsrep_trx_fragment_unit=default;
|
|
SET SESSION wsrep_trx_fragment_size=default;
|
|
|
|
--replace_regex /table_id: [0-9]+/table_id: #/ /xid=[0-9]+/xid=#/
|
|
--replace_column 2 # 5 #
|
|
--eval SHOW BINLOG EVENTS IN 'mysqld-bin.000002' FROM $start_pos
|
|
|
|
DROP TABLE t1;
|