source include/master-slave.inc;
source include/have_innodb.inc;

--echo # Verify the statements can be binlogged correctly when error happens
--echo # ------------------------------------------------------------------
CREATE TABLE t1(c1 INT KEY) ENGINE=MyISAM;
CREATE TABLE t2(c1 INT KEY) ENGINE=MyISAM;
INSERT INTO t1 VALUES(1);
INSERT INTO t2 VALUES(1);

--echo
--echo # Nothing is inserted.
let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
--error 1062
INSERT INTO t1 VALUES(1),(2);
source include/show_binlog_events.inc;

--echo
--echo # A row is inserted.
--error 1062
INSERT INTO t1 VALUES(2),(1);
--source include/sync_slave_sql_with_master.inc
let $diff_tables= master:test.t1, slave:test.t1;
source include/diff_tables.inc;

--echo
--echo # Nothing is inserted.
connection master;
let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
--error 1062
INSERT INTO t1 SELECT 1 UNION SELECT 2;
source include/show_binlog_events.inc;

--echo
--echo # A row is inserted.
--error 1062
INSERT INTO t1 SELECT 3 UNION SELECT 2;
--source include/sync_slave_sql_with_master.inc
source include/diff_tables.inc;


--echo
--echo # A row is updated.
connection master;
let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
--error 1062
UPDATE t1 SET c1=4;
--source include/sync_slave_sql_with_master.inc
source include/diff_tables.inc;

--echo # Nothing is updated.
connection master;
let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
--error 1062
UPDATE t1 SET c1=4;
source include/show_binlog_events.inc;

--echo
--echo # A row is updated.
connection master;
--error 1062
UPDATE t1, t2 SET t1.c1= 5, t2.c1=5;
--source include/sync_slave_sql_with_master.inc
source include/diff_tables.inc;

--echo
--echo Nothing is updated.
connection master;
let $binlog_start= query_get_value(SHOW MASTER STATUS, Position, 1);
--error 1062
UPDATE t1, t2 SET t1.c1= 5, t2.c1=5;
source include/show_binlog_events.inc;

DROP TABLE t1, t2;
source include/rpl_end.inc;
