1 -- source include/not_ndb_default.inc
2 -- source include/have_binlog_format_row.inc
3 -- source include/master-slave.inc
5 # Note: The test is dependent on binlog positions
7 # Create some events on master
9 CREATE TABLE t1(n INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
10 INSERT INTO t1 VALUES (1),(2),(3),(4);
12 # Save master log position for query DROP TABLE t1
14 let $master_pos_drop_t1= query_get_value(SHOW BINLOG EVENTS, Pos, 7);
15 let $master_log_file= query_get_value(SHOW BINLOG EVENTS, Log_name, 7);
17 CREATE TABLE t2(n INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
18 # Save master log position for query CREATE TABLE t2
20 let $master_pos_create_t2= query_get_value(SHOW BINLOG EVENTS, Pos, 8);
22 INSERT INTO t2 VALUES (1),(2);
24 # Save master log position for query INSERT INTO t2 VALUES (1),(2);
25 let $master_pos_insert1_t2= query_get_value(SHOW BINLOG EVENTS, End_log_pos, 12);
26 sync_slave_with_master;
28 # Save relay log position for query INSERT INTO t2 VALUES (1),(2);
29 let $relay_pos_insert1_t2= query_get_value(show slave status, Relay_Log_Pos, 1);
32 INSERT INTO t2 VALUES (3),(4);
34 # Save master log position for query INSERT INTO t2 VALUES (1),(2);
35 let $master_pos_drop_t2= query_get_value(SHOW BINLOG EVENTS, End_log_pos, 17);
36 sync_slave_with_master;
38 --source include/stop_slave.inc
42 eval CHANGE MASTER TO MASTER_USER='root', MASTER_CONNECT_RETRY=1, MASTER_HOST='127.0.0.1', MASTER_PORT=$MASTER_MYPORT;
45 # Try to replicate all queries until drop of t1
47 echo START SLAVE UNTIL MASTER_LOG_FILE='$master_log_file', MASTER_LOG_POS=master_pos_drop_t1;
49 eval START SLAVE UNTIL MASTER_LOG_FILE='$master_log_file', MASTER_LOG_POS=$master_pos_drop_t1;
51 --source include/wait_for_slave_sql_to_stop.inc
53 # Here table should be still not deleted
55 --let $slave_param= Exec_Master_Log_Pos
56 --let $slave_param_value= $master_pos_drop_t1
57 --source include/check_slave_param.inc
59 # This should fail right after start
60 --replace_result 291 MASTER_LOG_POS
61 START SLAVE UNTIL MASTER_LOG_FILE='master-no-such-bin.000001', MASTER_LOG_POS=291;
62 --source include/wait_for_slave_sql_to_stop.inc
63 # again this table should be still not deleted
66 --let $slave_param= Exec_Master_Log_Pos
67 --let $slave_param_value= $master_pos_drop_t1
68 --source include/check_slave_param.inc
70 # Try replicate all up to and not including the second insert to t2;
71 echo START SLAVE UNTIL RELAY_LOG_FILE='slave-relay-bin.000002', RELAY_LOG_POS=relay_pos_insert1_t2;
73 eval START SLAVE UNTIL RELAY_LOG_FILE='slave-relay-bin.000002', RELAY_LOG_POS=$relay_pos_insert1_t2;
75 --source include/wait_for_slave_sql_to_stop.inc
78 --let $slave_param= Exec_Master_Log_Pos
79 --let $slave_param_value= $master_pos_insert1_t2
80 --source include/check_slave_param.inc
84 --source include/wait_for_slave_to_start.inc
86 sync_slave_with_master;
87 --source include/stop_slave.inc
89 # This should stop immediately as we are already there
90 echo START SLAVE SQL_THREAD UNTIL MASTER_LOG_FILE='$master_log_file', MASTER_LOG_POS=master_pos_create_t2;
92 eval START SLAVE SQL_THREAD UNTIL MASTER_LOG_FILE='$master_log_file', MASTER_LOG_POS=$master_pos_create_t2;
94 let $slave_param= Until_Log_Pos;
95 let $slave_param_value= $master_pos_create_t2;
96 --source include/wait_for_slave_param.inc
97 --source include/wait_for_slave_sql_to_stop.inc
98 # here the sql slave thread should be stopped
99 --let $slave_param= Exec_Master_Log_Pos
100 --let $slave_param_value= $master_pos_drop_t2
101 --source include/check_slave_param.inc
103 #testing various error conditions
104 --replace_result 561 MASTER_LOG_POS
106 START SLAVE UNTIL MASTER_LOG_FILE='master-bin', MASTER_LOG_POS=561;
107 --replace_result 561 MASTER_LOG_POS 12 RELAY_LOG_POS
109 START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=561, RELAY_LOG_POS=12;
111 START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001';
113 START SLAVE UNTIL RELAY_LOG_FILE='slave-relay-bin.000009';
114 --replace_result 561 MASTER_LOG_POS
116 START SLAVE UNTIL RELAY_LOG_FILE='slave-relay-bin.000002', MASTER_LOG_POS=561;
117 # Warning should be given for second command
119 --replace_result 740 MASTER_LOG_POS
120 START SLAVE UNTIL MASTER_LOG_FILE='master-bin.000001', MASTER_LOG_POS=740;
122 --source include/stop_slave.inc
123 # Clear slave IO error.
126 --let $rpl_only_running_threads= 1
127 --source include/rpl_end.inc