summaryrefslogtreecommitdiffstats
path: root/mysql-test/suite/rpl/r/rpl_row_conflicts.result
diff options
context:
space:
mode:
Diffstat (limited to 'mysql-test/suite/rpl/r/rpl_row_conflicts.result')
-rw-r--r--mysql-test/suite/rpl/r/rpl_row_conflicts.result117
1 files changed, 117 insertions, 0 deletions
diff --git a/mysql-test/suite/rpl/r/rpl_row_conflicts.result b/mysql-test/suite/rpl/r/rpl_row_conflicts.result
new file mode 100644
index 00000000..5f957380
--- /dev/null
+++ b/mysql-test/suite/rpl/r/rpl_row_conflicts.result
@@ -0,0 +1,117 @@
+include/master-slave.inc
+[connection master]
+connection slave;
+call mtr.add_suppression("Slave: Can\'t find record in \'t1\' error.* .*");
+call mtr.add_suppression("Can't find record in 't.'");
+connection slave;
+SET @old_slave_exec_mode= @@global.slave_exec_mode;
+######## Run with slave_exec_mode=STRICT ########
+SET @@global.slave_exec_mode = 'STRICT';
+==== Initialize ====
+connection master;
+CREATE TABLE t1(a INT PRIMARY KEY);
+connection slave;
+==== Test: SQL thread sees 'INSERT' of existing key ====
+---- Prepare slave so that it will get duplicate key error ----
+INSERT INTO t1 VALUES (1);
+---- Insert rows on master ----
+connection master;
+INSERT INTO t1 VALUES (1);
+SELECT * FROM t1;
+a
+1
+connection slave;
+---- Wait until slave stops with an error ----
+include/wait_for_slave_sql_error.inc [errno=1062]
+Last_SQL_Error (expected "duplicate key" error)
+Could not execute Write_rows_v1 event on table test.t1; Duplicate entry '1' for key 'PRIMARY', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log master-bin.000001, end_log_pos END_LOG_POS
+call mtr.add_suppression("Slave SQL.*Duplicate entry .1. for key .PRIMARY.* error.* 1062");
+SELECT * FROM t1;
+a
+1
+---- Resolve the conflict on the slave and restart SQL thread ----
+DELETE FROM t1 WHERE a = 1;
+START SLAVE SQL_THREAD;
+include/wait_for_slave_sql_to_start.inc
+---- Sync slave and verify that there is no error ----
+Last_SQL_Error = '' (expected no error)
+SELECT * FROM t1;
+a
+1
+==== Test: SQL thread sees 'DELETE' of non-existing row ====
+---- On master, insert two rows, the second with binlogging off ----
+connection master;
+DELETE FROM t1;
+INSERT INTO t1 VALUES (1);
+connection slave;
+DELETE FROM t1 WHERE a = 1;
+---- On master, remove the row that does not exist on slave ----
+connection master;
+DELETE FROM t1 WHERE a = 1;
+SELECT * FROM t1;
+a
+connection slave;
+---- Wait until slave stops with an error ----
+call mtr.add_suppression("Slave SQL.*Can.t find record in .t1., error.* 1032");
+include/wait_for_slave_sql_error.inc [errno=1032]
+Last_SQL_Error (expected "duplicate key" error)
+Could not execute Delete_rows_v1 event on table test.t1; Can't find record in 't1', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log master-bin.000001, end_log_pos END_LOG_POS
+SELECT * FROM t1;
+a
+---- Resolve the conflict on the slave and restart SQL thread ----
+INSERT INTO t1 VALUES (1);
+START SLAVE SQL_THREAD;
+include/wait_for_slave_sql_to_start.inc
+---- Sync slave and verify that there is no error ----
+Last_SQL_Error = (expected no error)
+SELECT * FROM t1;
+a
+==== Clean up ====
+connection master;
+DROP TABLE t1;
+connection slave;
+include/rpl_reset.inc
+######## Run with slave_exec_mode=IDEMPOTENT ########
+set @@global.slave_exec_mode= 'IDEMPOTENT';
+==== Initialize ====
+connection master;
+CREATE TABLE t1(a INT PRIMARY KEY);
+connection slave;
+==== Test: SQL thread sees 'INSERT' of existing key ====
+---- Prepare slave so that it will get duplicate key error ----
+INSERT INTO t1 VALUES (1);
+---- Insert rows on master ----
+connection master;
+INSERT INTO t1 VALUES (1);
+SELECT * FROM t1;
+a
+1
+connection slave;
+---- Sync slave and verify that there is no error ----
+Last_SQL_Error = '' (expected no error)
+SELECT * FROM t1;
+a
+1
+==== Test: SQL thread sees 'DELETE' of non-existing row ====
+---- On master, insert two rows, the second with binlogging off ----
+connection master;
+DELETE FROM t1;
+INSERT INTO t1 VALUES (1);
+connection slave;
+DELETE FROM t1 WHERE a = 1;
+---- On master, remove the row that does not exist on slave ----
+connection master;
+DELETE FROM t1 WHERE a = 1;
+SELECT * FROM t1;
+a
+connection slave;
+---- Sync slave and verify that there is no error ----
+Last_SQL_Error = (expected no error)
+SELECT * FROM t1;
+a
+==== Clean up ====
+connection master;
+DROP TABLE t1;
+connection slave;
+SET @@global.slave_exec_mode= @old_slave_exec_mode;
+include/rpl_end.inc