mirror of
https://github.com/MariaDB/server.git
synced 2025-02-01 11:31:51 +01:00
19c380aaff
Non-transactional updates that take place inside a transaction present problems for logging because they are visible to other clients before the transaction is committed, and they are not rolled back even if the transaction is rolled back. It is not always possible to log correctly in statement format when both transactional and non-transactional tables are used in the same transaction. In the current patch, we ensure that such scenario is completely safe under the ROW and MIXED modes.
43 lines
1.7 KiB
Text
43 lines
1.7 KiB
Text
-- source include/have_binlog_format_mixed.inc
|
|
-- source include/not_ndb_default.inc
|
|
-- source include/master-slave.inc
|
|
|
|
# Test that the slave temporarily switches to ROW when seeing row
|
|
# events when it is in MIXED mode
|
|
|
|
--echo **** On Master ****
|
|
CREATE TABLE t1 (a INT, b LONG);
|
|
INSERT INTO t1 VALUES (1,1), (2,2);
|
|
INSERT INTO t1 VALUES (3,UUID()), (4,UUID());
|
|
let $VERSION=`select version()`;
|
|
--replace_result $VERSION VERSION
|
|
--replace_column 2 # 5 #
|
|
--replace_regex /table_id: [0-9]+/table_id: #/
|
|
SHOW BINLOG EVENTS;
|
|
sync_slave_with_master;
|
|
--echo **** On Slave ****
|
|
--replace_result $MASTER_MYPORT MASTER_PORT
|
|
--replace_column 1 # 7 # 8 # 9 # 22 # 23 # 33 # 34 # 35 #
|
|
--query_vertical SHOW SLAVE STATUS
|
|
--replace_result $VERSION VERSION
|
|
--replace_column 2 # 5 #
|
|
--replace_regex /table_id: [0-9]+/table_id: #/
|
|
SHOW BINLOG EVENTS;
|
|
|
|
--exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/rpl_rbr_to_sbr_master.sql
|
|
--exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/rpl_rbr_to_sbr_slave.sql
|
|
|
|
connection master;
|
|
DROP TABLE IF EXISTS t1;
|
|
|
|
# Let's compare. Note: If they match test will pass, if they do not match
|
|
# the test will show that the diff statement failed and not reject file
|
|
# will be created. You will need to go to the mysql-test dir and diff
|
|
# the files your self to see what is not matching
|
|
|
|
diff_files $MYSQLTEST_VARDIR/tmp/rpl_rbr_to_sbr_master.sql $MYSQLTEST_VARDIR/tmp/rpl_rbr_to_sbr_slave.sql;
|
|
|
|
# If all is good, we can remove the files
|
|
|
|
--remove_file $MYSQLTEST_VARDIR/tmp/rpl_rbr_to_sbr_master.sql
|
|
--remove_file $MYSQLTEST_VARDIR/tmp/rpl_rbr_to_sbr_slave.sql
|