summaryrefslogtreecommitdiffstats
path: root/storage/rocksdb/mysql-test/rocksdb_rpl/t/rpl_skip_trx_api_binlog_format.test
blob: 1ea9add80190be79d7dc6d5590860fc4c9074858 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# Checks if the slave stops executing transactions when master's binlog format
# is STATEMENT but rpl_skip_tx_api is enabled
-- source include/have_rocksdb.inc
-- source include/master-slave.inc

call mtr.add_suppression("Master's binlog format is not ROW but rpl_skip_tx_api is enabled on the slave");

connection slave;
let $old_rpl_skip_tx_api= `SELECT @@global.rpl_skip_tx_api`;
set global rpl_skip_tx_api=ON;

connection master;
let $old_rocksdb_unsafe_for_binlog= `SELECT @@global.rocksdb_unsafe_for_binlog`;
set global rocksdb_unsafe_for_binlog=1;
create table t1(a int);
set session binlog_format=STATEMENT;
insert into t1 values(1);

# Wait till we hit the binlog format mismatch error
connection slave;
let $slave_sql_errno= convert_error(ER_MTS_INCONSISTENT_DATA); # 1756
let $show_slave_sql_error= 1;
source include/wait_for_slave_sql_error.inc;

# Print table
connection slave;
echo "Table after error";
select * from t1;

connection slave;
# Turn off rpl_skip_tx_api and start the slave again
set global rpl_skip_tx_api=OFF;
source include/start_slave.inc;

connection slave;
source include/sync_slave_sql_with_master.inc;

connection slave;
# Print table again
echo "Table after error fixed";
select * from t1;

# Cleanup
connection master;
drop table t1;
eval set global rocksdb_unsafe_for_binlog=$old_rocksdb_unsafe_for_binlog;
sync_slave_with_master;

connection slave;
eval set global rpl_skip_tx_api=$old_rpl_skip_tx_api;

-- source include/rpl_end.inc