mirror of
https://github.com/MariaDB/server.git
synced 2025-10-24 07:13:33 +03:00
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.
89 lines
2.8 KiB
Plaintext
89 lines
2.8 KiB
Plaintext
-- source include/have_binlog_format_mixed_or_statement.inc
|
|
-- source include/master-slave.inc
|
|
|
|
# Test is dependent on binlog positions
|
|
|
|
# prepare version for substitutions
|
|
let $VERSION=`select version()`;
|
|
|
|
# stop slave before he will start replication also sync with master
|
|
# for avoiding undetermenistic behaviour
|
|
save_master_pos;
|
|
connection slave;
|
|
sync_with_master;
|
|
stop slave;
|
|
|
|
connection master;
|
|
# create some events on master
|
|
create table t1(n int not null auto_increment primary key);
|
|
insert into t1 values (1),(2),(3),(4);
|
|
drop table t1;
|
|
create table t2(n int not null auto_increment primary key);
|
|
insert into t2 values (1),(2);
|
|
insert into t2 values (3),(4);
|
|
drop table t2;
|
|
|
|
# try to replicate all queries until drop of t1
|
|
connection slave;
|
|
start slave until master_log_file='master-bin.000001', master_log_pos=323;
|
|
sleep 2;
|
|
wait_for_slave_to_stop;
|
|
# here table should be still not deleted
|
|
select * from t1;
|
|
--replace_result $MASTER_MYPORT MASTER_MYPORT
|
|
--replace_column 1 # 9 # 11 # 23 # 33 #
|
|
--query_vertical SHOW SLAVE STATUS
|
|
|
|
# this should fail right after start
|
|
start slave until master_log_file='master-no-such-bin.000001', master_log_pos=291;
|
|
# again this table should be still not deleted
|
|
select * from t1;
|
|
sleep 2;
|
|
wait_for_slave_to_stop;
|
|
--replace_result $MASTER_MYPORT MASTER_MYPORT
|
|
--replace_column 1 # 9 # 11 # 23 # 33 #
|
|
--query_vertical SHOW SLAVE STATUS
|
|
|
|
# try replicate all up to and not including the second insert to t2;
|
|
start slave until relay_log_file='slave-relay-bin.000004', relay_log_pos=746;
|
|
sleep 2;
|
|
wait_for_slave_to_stop;
|
|
select * from t2;
|
|
--replace_result $MASTER_MYPORT MASTER_MYPORT
|
|
--replace_column 1 # 9 # 11 # 23 # 33 #
|
|
--query_vertical SHOW SLAVE STATUS
|
|
|
|
# clean up
|
|
start slave;
|
|
connection master;
|
|
save_master_pos;
|
|
connection slave;
|
|
sync_with_master;
|
|
stop slave;
|
|
|
|
# this should stop immediately as we are already there
|
|
start slave until master_log_file='master-bin.000001', master_log_pos=776;
|
|
sleep 2;
|
|
wait_for_slave_to_stop;
|
|
# here the sql slave thread should be stopped
|
|
--replace_result $MASTER_MYPORT MASTER_MYPORT bin.000005 bin.000004 bin.000006 bin.000004 bin.000007 bin.000004
|
|
--replace_column 1 # 9 # 23 # 33 #
|
|
--query_vertical SHOW SLAVE STATUS
|
|
|
|
#testing various error conditions
|
|
--error 1277
|
|
start slave until master_log_file='master-bin', master_log_pos=561;
|
|
--error 1277
|
|
start slave until master_log_file='master-bin.000001', master_log_pos=561, relay_log_pos=12;
|
|
--error 1277
|
|
start slave until master_log_file='master-bin.000001';
|
|
--error 1277
|
|
start slave until relay_log_file='slave-relay-bin.000002';
|
|
--error 1277
|
|
start slave until relay_log_file='slave-relay-bin.000002', master_log_pos=561;
|
|
# Warning should be given for second command
|
|
start slave sql_thread;
|
|
start slave until master_log_file='master-bin.000001', master_log_pos=776;
|
|
|
|
# End of 4.1 tests
|