mirror of
https://github.com/MariaDB/server.git
synced 2025-02-01 11:31:51 +01:00
7be4bc4e55
The following is an excerption from the WL. 1. Change so that MIXED is default format 1.1 to change the default for command line --binlog-format 1.2 to alter global_system_variables.binlog_format calculation basing on command line --binlog-format parameter and its default. 2. Change test suite so that more testing is done by MIXED format. 2.1 to check if there are test cases requiring --binlog-foramt=statement via `source include/have_binlog_format_statement.inc' and affected by altering the latter to be "mixed". 2.2 to check the content of such vulnerable cases to find if extending to the mixed does not modify results. In that case simply substitute source arguments as explained. 2.3 if a test in mixed mode deals with features triggering row-binlogging then if necessary we can switch explicitly to statement mode or create another test to run with non-recommended STATEMENT mode Particullarily, extracting INSERT DELAYED binlogging subtest for statement mode is performed, and the snippet is moved into a separate test file. Note that since now all three modes verify this use case through 3 different tests. No changes in item 3 of HLD appeared to be needed.
47 lines
1.8 KiB
Text
47 lines
1.8 KiB
Text
-- source include/have_row_based.inc
|
|
-- source include/have_binlog_format_mixed_or_statement.inc
|
|
-- source include/master-slave.inc
|
|
|
|
# Test that the slave temporarily switches to ROW when seeing binrow
|
|
# events when it is in STATEMENT or MIXED mode
|
|
|
|
SET BINLOG_FORMAT=MIXED;
|
|
SET GLOBAL BINLOG_FORMAT=MIXED;
|
|
SELECT @@GLOBAL.BINLOG_FORMAT, @@SESSION.BINLOG_FORMAT;
|
|
|
|
--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 # 8 # 9 # 23 # 33 #
|
|
--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
|
|
|
|
--exec diff $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
|
|
|
|
system rm $MYSQLTEST_VARDIR/tmp/rpl_rbr_to_sbr_master.sql;
|
|
system rm $MYSQLTEST_VARDIR/tmp/rpl_rbr_to_sbr_slave.sql;
|