reset master; reset master; create database mysqltest; use mysqltest; create table t1 (a int primary key) engine=ndb; create table t2 (a int primary key) engine=ndb; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info binlog.000001 # Query # # create database mysqltest binlog.000001 # Query # # use `mysqltest`; create table t1 (a int primary key) engine=ndb binlog.000001 # Query # # use `test`; create table t2 (a int primary key) engine=ndb include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info binlog.000001 # Query # # create database mysqltest binlog.000001 # Query # # use `mysqltest`; create table t1 (a int primary key) engine=ndb binlog.000001 # Query # # use `test`; create table t2 (a int primary key) engine=ndb reset master; reset master; alter table t2 add column (b int); Warnings: Warning 1478 Converted FIXED field 'b' to DYNAMIC to enable online ADD COLUMN include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info binlog.000001 # Query # # use `test`; alter table t2 add column (b int) reset master; reset master; ALTER DATABASE mysqltest CHARACTER SET latin1; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info binlog.000001 # Query # # ALTER DATABASE mysqltest CHARACTER SET latin1 drop table mysqltest.t1; reset master; reset master; use test; insert into t2 values (1,2); drop database mysqltest; create table t1 (a int primary key) engine=ndb; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info binlog.000001 # Query # # BEGIN binlog.000001 # Table_map # # table_id: # (test.t2) binlog.000001 # Table_map # # table_id: # (mysql.ndb_apply_status) binlog.000001 # Write_rows # # table_id: # binlog.000001 # Write_rows # # table_id: # flags: STMT_END_F binlog.000001 # Query # # COMMIT binlog.000001 # Query # # drop database mysqltest binlog.000001 # Query # # use `test`; create table t1 (a int primary key) engine=ndb drop table t2; reset master; reset master; CREATE LOGFILE GROUP lg1 ADD UNDOFILE 'undofile.dat' INITIAL_SIZE 16M UNDO_BUFFER_SIZE = 1M ENGINE=NDB; ALTER LOGFILE GROUP lg1 ADD UNDOFILE 'undofile02.dat' INITIAL_SIZE = 4M ENGINE=NDB; CREATE TABLESPACE ts1 ADD DATAFILE 'datafile.dat' USE LOGFILE GROUP lg1 INITIAL_SIZE 12M ENGINE NDB; ALTER TABLESPACE ts1 ADD DATAFILE 'datafile02.dat' INITIAL_SIZE = 4M; ALTER TABLESPACE ts1 DROP DATAFILE 'datafile.dat'; ALTER TABLESPACE ts1 DROP DATAFILE 'datafile02.dat'; DROP TABLESPACE ts1; DROP LOGFILE GROUP lg1 ENGINE =NDB; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info binlog.000001 # Query # # CREATE LOGFILE GROUP lg1 ADD UNDOFILE 'undofile.dat' INITIAL_SIZE 16M UNDO_BUFFER_SIZE = 1M ENGINE=NDB binlog.000001 # Query # # ALTER LOGFILE GROUP lg1 ADD UNDOFILE 'undofile02.dat' INITIAL_SIZE = 4M ENGINE=NDB binlog.000001 # Query # # CREATE TABLESPACE ts1 ADD DATAFILE 'datafile.dat' USE LOGFILE GROUP lg1 INITIAL_SIZE 12M ENGINE NDB binlog.000001 # Query # # ALTER TABLESPACE ts1 ADD DATAFILE 'datafile02.dat' INITIAL_SIZE = 4M binlog.000001 # Query # # ALTER TABLESPACE ts1 DROP DATAFILE 'datafile.dat' binlog.000001 # Query # # ALTER TABLESPACE ts1 DROP DATAFILE 'datafile02.dat' binlog.000001 # Query # # DROP TABLESPACE ts1 binlog.000001 # Query # # DROP LOGFILE GROUP lg1 ENGINE =NDB drop table t1; reset master; show tables; Tables_in_test reset master; show tables; Tables_in_test create table t1 (a int key) engine=ndb; create table t2 (a int key) engine=ndb; create table t3 (a int key) engine=ndb; rename table t3 to t4, t2 to t3, t1 to t2, t4 to t1; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info binlog.000001 # Query # # use `test`; create table t1 (a int key) engine=ndb binlog.000001 # Query # # use `test`; create table t2 (a int key) engine=ndb binlog.000001 # Query # # use `test`; create table t3 (a int key) engine=ndb binlog.000001 # Query # # use `test`; rename table `test`.`t3` to `test`.`t4` binlog.000001 # Query # # use `test`; rename table `test`.`t2` to `test`.`t3` binlog.000001 # Query # # use `test`; rename table `test`.`t1` to `test`.`t2` binlog.000001 # Query # # use `test`; rename table `test`.`t4` to `test`.`t1` drop table t1; drop table t2; drop table t3; reset master; show tables; Tables_in_test reset master; show tables; Tables_in_test create table t1 (a int key) engine=ndb; insert into t1 values(1); rename table t1 to t2; insert into t2 values(2); drop table t2; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info binlog.000001 # Query # # use `test`; create table t1 (a int key) engine=ndb binlog.000001 # Query # # BEGIN binlog.000001 # Table_map # # table_id: # (test.t1) binlog.000001 # Table_map # # table_id: # (mysql.ndb_apply_status) binlog.000001 # Write_rows # # table_id: # binlog.000001 # Write_rows # # table_id: # flags: STMT_END_F binlog.000001 # Query # # COMMIT binlog.000001 # Query # # use `test`; rename table `test`.`t1` to `test`.`t2` binlog.000001 # Query # # BEGIN binlog.000001 # Table_map # # table_id: # (test.t2) binlog.000001 # Table_map # # table_id: # (mysql.ndb_apply_status) binlog.000001 # Write_rows # # table_id: # binlog.000001 # Write_rows # # table_id: # flags: STMT_END_F binlog.000001 # Query # # COMMIT binlog.000001 # Query # # use `test`; DROP TABLE `t2` /* generated by server */ reset master; reset master; use test; The relative order between DML and DDL statements below are expected to follow the same order in binlog as shown below. create database mysqltest; create table t1 (a int primary key) engine=ndb; insert into t1 values (1); drop database mysqltest; drop table t1; create database mysqltest; create table t1 (a int primary key) engine=ndb; insert into t1 values (1); drop database mysqltest; drop table t1; create database mysqltest; create table t1 (a int primary key) engine=ndb; insert into t1 values (1); drop database mysqltest; drop table t1; create database mysqltest; create table t1 (a int primary key) engine=ndb; insert into t1 values (1); drop database mysqltest; drop table t1; create database mysqltest; create table t1 (a int primary key) engine=ndb; insert into t1 values (1); drop database mysqltest; drop table t1; create table dummy (dummyk int primary key) engine = ndb; drop table dummy; include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info binlog.000001 # Query # # create database mysqltest binlog.000001 # Query # # use `test`; create table t1 (a int primary key) engine=ndb binlog.000001 # Query # # BEGIN binlog.000001 # Table_map # # table_id: # (test.t1) binlog.000001 # Table_map # # table_id: # (mysql.ndb_apply_status) binlog.000001 # Write_rows # # table_id: # binlog.000001 # Write_rows # # table_id: # flags: STMT_END_F binlog.000001 # Query # # COMMIT binlog.000001 # Query # # drop database mysqltest binlog.000001 # Query # # use `test`; drop table `test`.`t1` binlog.000001 # Query # # create database mysqltest binlog.000001 # Query # # use `test`; create table t1 (a int primary key) engine=ndb binlog.000001 # Query # # BEGIN binlog.000001 # Table_map # # table_id: # (test.t1) binlog.000001 # Table_map # # table_id: # (mysql.ndb_apply_status) binlog.000001 # Write_rows # # table_id: # binlog.000001 # Write_rows # # table_id: # flags: STMT_END_F binlog.000001 # Query # # COMMIT binlog.000001 # Query # # drop database mysqltest binlog.000001 # Query # # use `test`; drop table `test`.`t1` binlog.000001 # Query # # create database mysqltest binlog.000001 # Query # # use `test`; create table t1 (a int primary key) engine=ndb binlog.000001 # Query # # BEGIN binlog.000001 # Table_map # # table_id: # (test.t1) binlog.000001 # Table_map # # table_id: # (mysql.ndb_apply_status) binlog.000001 # Write_rows # # table_id: # binlog.000001 # Write_rows # # table_id: # flags: STMT_END_F binlog.000001 # Query # # COMMIT binlog.000001 # Query # # drop database mysqltest binlog.000001 # Query # # use `test`; drop table `test`.`t1` binlog.000001 # Query # # create database mysqltest binlog.000001 # Query # # use `test`; create table t1 (a int primary key) engine=ndb binlog.000001 # Query # # BEGIN binlog.000001 # Table_map # # table_id: # (test.t1) binlog.000001 # Table_map # # table_id: # (mysql.ndb_apply_status) binlog.000001 # Write_rows # # table_id: # binlog.000001 # Write_rows # # table_id: # flags: STMT_END_F binlog.000001 # Query # # COMMIT binlog.000001 # Query # # drop database mysqltest binlog.000001 # Query # # use `test`; drop table `test`.`t1` binlog.000001 # Query # # create database mysqltest binlog.000001 # Query # # use `test`; create table t1 (a int primary key) engine=ndb binlog.000001 # Query # # BEGIN binlog.000001 # Table_map # # table_id: # (test.t1) binlog.000001 # Table_map # # table_id: # (mysql.ndb_apply_status) binlog.000001 # Write_rows # # table_id: # binlog.000001 # Write_rows # # table_id: # flags: STMT_END_F binlog.000001 # Query # # COMMIT binlog.000001 # Query # # drop database mysqltest binlog.000001 # Query # # use `test`; drop table `test`.`t1` binlog.000001 # Query # # use `test`; create table dummy (dummyk int primary key) engine = ndb binlog.000001 # Query # # use `test`; DROP TABLE `dummy` /* generated by server */ CREATE TABLE progress( cnt int, stop_flag int ) ENGINE NDB; insert into progress value(0,0); Start background load distributing schema changes. call p1(); Restart mysqld 'server2' # restart Checking for schema ops. still making progress Restart mysqld 'server2' # restart Checking for schema ops. still making progress Restart mysqld 'server2' # restart Checking for schema ops. still making progress Restart mysqld 'server2' # restart Checking for schema ops. still making progress Stopping background load distributing schema changes. update progress set stop_flag=1; Wait for background schema distribution load to complete. Cleanup drop procedure p1; drop table progress; # # WL#12936 : Implement DDL transaction context logger in ndbcluster # reset master; show tables; Tables_in_test reset master; show tables; Tables_in_test # Setup CREATE TABLE t1 ( a int, b int ) ENGINE NDB; INSERT INTO t1 VALUES (1, NULL); CREATE TABLE t2 ( a int, b int not null ) ENGINE NDB AS SELECT * FROM t1; ERROR 23000: Column 'b' cannot be null # Verify that table does not exist SELECT * FROM t2; ERROR 42S02: Table 'test.t2' doesn't exist # Verify that the CREATE TABLE t2 query is not present in binlog include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info binlog.000001 # Query # # use `test`; CREATE TABLE t1 ( a int, b int ) ENGINE NDB binlog.000001 # Query # # BEGIN binlog.000001 # Table_map # # table_id: # (test.t1) binlog.000001 # Table_map # # table_id: # (mysql.ndb_apply_status) binlog.000001 # Write_rows # # table_id: # binlog.000001 # Write_rows # # table_id: # flags: STMT_END_F binlog.000001 # Query # # COMMIT # Table should not exist in participant also SELECT * FROM t2; ERROR 42S02: Table 'test.t2' doesn't exist # Verify that the CREATE TABLE t2 query is present in binlog include/show_binlog_events.inc Log_name Pos Event_type Server_id End_log_pos Info binlog.000001 # Query # # use `test`; CREATE TABLE t1 ( a int, b int ) ENGINE NDB binlog.000001 # Query # # BEGIN binlog.000001 # Table_map # # table_id: # (test.t1) binlog.000001 # Table_map # # table_id: # (mysql.ndb_apply_status) binlog.000001 # Write_rows # # table_id: # binlog.000001 # Write_rows # # table_id: # flags: STMT_END_F binlog.000001 # Query # # COMMIT binlog.000001 # Query # # use `test`; CREATE TABLE t2 ( a int, b int not null ) ENGINE NDB AS SELECT * FROM t1 #Cleanup DROP TABLE t1;