#At file:///home/acorreia/workspace.sun/repository.mysql/bzrwork/bug-28976/mysql-5.1-bugteam/ based on revid:davi.arnaut@stripped
2936 Alfranio Correia 2009-06-13
BUG#28976 Mixing trans and non-trans tables in one transaction results in incorrect binlog
Mixing transactional and non-transactional tables on behalf of a transaction may
lead inconsistencies among masters and slaves. The problem stems from the fact
that although modifications done to non-transactional tables on behalf of a
transaction become immediately visible to the other connections it does not
immediately gets to the binary log and therefore consistency is broken.
After the WL#2687, it will be safe to use either the MIXED or ROW mode to do such
mix. Changes to non-transactional tables will immediately get to the binary log
as rows. Under the STATEMENT mode, however, changing non-transactional tables
before transactional ones is the only possible safe mix. This happen because it
is as if such changes had not been executed on the behalf of a transaction.
On the other hand, other combinations may hide a causal dependency, thus making
impossible to immediately write statements with non-transactional tables to the
binary log.
This patch guarantees that the safe mix under the STATEMENT mode is properly
handled and also classifies whether a statement is safe or not under such mode.
In a nutshell,
1 - Any update, delete or insert statement accessing a non-transactional table
is safe if it is issued on behalf of a transaction before any update, delete or
insert statement accessing a transactional table and issued on behalf of the same
transaction.
2 - Statements with only transactional tables are safe.
3 - Statements with transactional and non-transactional tables are unsafe.
added:
mysql-test/suite/rpl/include/rpl_mixed_engines.inc
mysql-test/suite/rpl/r/rpl_mixing_mixed_engines.result
mysql-test/suite/rpl/r/rpl_mixing_stmt_engines.result
mysql-test/suite/rpl/t/rpl_mixing_mixed_engines.test
mysql-test/suite/rpl/t/rpl_mixing_stmt_engines.test
modified:
sql/handler.h
sql/log.cc
sql/sql_base.cc
=== added file 'mysql-test/suite/rpl/include/rpl_mixed_engines.inc'
--- a/mysql-test/suite/rpl/include/rpl_mixed_engines.inc 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/rpl/include/rpl_mixed_engines.inc 2009-06-13 14:36:39 +0000
@@ -0,0 +1,905 @@
+###################################################################################
+# This test checks if transactions that mixes transactional and non-transactional
+# tables are correctly handled. Thus to check the behavior provided by the current
+# code we devide the test as follows:
+#
+# 1 - CREATING TABLES through SELECT * FROM
+# 2 - MIXING TRANSACTIONAL and NON-TRANSACTIONAL TABLES
+# 3 - CONCURRENCY:
+# 2.1 - NON-TRANSACT TABLES - SET AUTOCOMMIT = 0 | COMMIT
+# 2.2 - NON-TRANSACT TABLES - SET AUTOCOMMIT = 1 | START - COMMIT
+# 4 - SAVE POINTS
+###################################################################################
+
+--echo ###################################################################################
+--echo # CONFIGURATION
+--echo ###################################################################################
+connection master;
+
+CREATE TABLE t1 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
+CREATE TABLE t2 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
+CREATE TABLE t3 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
+CREATE TABLE t4 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
+CREATE TABLE t5 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
+CREATE TABLE t6 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
+CREATE TABLE t7 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
+CREATE TABLE t8 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
+CREATE TABLE t9 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
+
+INSERT INTO t1 VALUES("text 1", 1, "text 1"), ("text 2", 2, "text 2"), ("text 3", 3, "text 3");
+INSERT INTO t2 VALUES("text 1", 1, "text 1"), ("text 2", 2, "text 2"), ("text 3", 3, "text 3");
+INSERT INTO t3 VALUES("text 1", 1, "text 1"), ("text 2", 2, "text 2"), ("text 3", 3, "text 3");
+INSERT INTO t4 VALUES("text 1", 1, "text 1"), ("text 2", 2, "text 2"), ("text 3", 3, "text 3");
+INSERT INTO t5 VALUES("text 1", 1, "text 1"), ("text 2", 2, "text 2"), ("text 3", 3, "text 3");
+
+DELIMITER |;
+
+CREATE FUNCTION f1 () RETURNS VARCHAR(64)
+BEGIN
+ RETURN "Testing...";
+END|
+
+CREATE FUNCTION f2 () RETURNS VARCHAR(64)
+BEGIN
+ RETURN f1();
+END|
+
+CREATE PROCEDURE pc6 (IN x INT, IN y VARCHAR(64))
+BEGIN
+ INSERT INTO t6 VALUES (y,x,x);
+END|
+
+CREATE TRIGGER tr6_i BEFORE INSERT ON t6 FOR EACH ROW
+BEGIN
+ INSERT INTO t7 VALUES (NEW.a, NEW.b, NEW.c);
+ INSERT INTO t8 VALUES (NEW.a, NEW.b, NEW.c);
+ INSERT INTO t9 VALUES (NEW.a, NEW.b, NEW.c);
+END|
+
+DELIMITER ;|
+
+INSERT INTO t6 VALUES("text 100", 100, "text 100"), ("text 200", 200, "text 200"), ("text 300", 300, "text 300");
+INSERT INTO t7 VALUES("text 1", 1, "text 1"), ("text 2", 2, "text 2"), ("text 3", 3, "text 3");
+INSERT INTO t8 VALUES("text 1", 1, "text 1"), ("text 2", 2, "text 2"), ("text 3", 3, "text 3");
+INSERT INTO t9 VALUES("text 1", 1, "text 1"), ("text 2", 2, "text 2"), ("text 3", 3, "text 3");
+
+--echo ###################################################################################
+--echo # 1 - CREATING TABLES
+--echo ###################################################################################
+connection master;
+
+CREATE TABLE t10 SELECT * FROM t2;
+DROP TABLE t10;
+CREATE TABLE t11 SELECT * FROM t2;
+DROP TABLE t11;
+
+
+--echo ###################################################################################
+--echo # 2 - MIXING TRANSACTIONAL and NON-TRANSACTIONAL TABLES
+--echo ###################################################################################
+connection master;
+
+# Caching (C): (stmt-cache (s), trx-cache (t), ignored (i))
+# Flushing (F): (upon committing/rollingback a statement (d), upon
+# committing/rolling back a transaction (c/r), ignored (i))
+
+#
+# STMT ROW MIXED
+#
+
+let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
+--echo # C - T C - T C - T
+--echo #1.a) B T T C F - C F - C F - C
+--echo #
+BEGIN;
+INSERT INTO t2 VALUES ("new text 5", 5, "new text 5");
+INSERT INTO t3 VALUES ("new text 5", 5, "new text 5");
+COMMIT;
+
+--source include/show_binlog_events.inc
+
+--echo
+--echo
+--echo
+--echo
+let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
+--echo # C - T C - T C - T
+--echo #1.b) B T T R F - I F - I F - I
+--echo #
+BEGIN;
+INSERT INTO t2 VALUES ("new text 6", 6, "new text 6");
+INSERT INTO t3 VALUES ("new text 6", 6, "new text 6");
+ROLLBACK;
+
+--source include/show_binlog_events.inc
+
+--echo
+--echo
+--echo
+--echo
+let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
+--echo # C - T C - S(N) T(T) C - S(N) T(T)
+--echo #2.a) B T N C F - C F - D(N) C(T) F - D(N) C(T)
+--echo #
+BEGIN;
+INSERT INTO t2 VALUES ("new text 6", 6, "new text 6");
+INSERT INTO t1 VALUES ("new text 6", 6, "new text 6");
+COMMIT;
+
+--source include/show_binlog_events.inc
+
+--echo
+--echo
+--echo
+--echo
+let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
+--echo # C - T C - S(N) T(T) C - S(N) T(T)
+--echo #2.b) B T N R F - R F - D(N) I(T) F - D(N) I(T)
+--echo #
+BEGIN;
+INSERT INTO t2 VALUES ("new text 7", 7, "new text 7");
+INSERT INTO t1 VALUES ("new text 7", 7, "new text 7");
+ROLLBACK;
+
+--source include/show_binlog_events.inc
+
+--echo
+--echo
+--echo
+--echo
+let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
+--echo # C - T C - T C - T
+--echo #3.a) T F - C F - C F - C
+--echo #
+INSERT INTO t2 VALUES ("new text 8", 8, "new text 8");
+
+--source include/show_binlog_events.inc
+
+--echo
+--echo
+--echo
+--echo
+let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
+--echo # C - T C - T C - T
+--echo #3.b) T with error F - I F - I F - I
+--echo #
+--error ER_DUP_ENTRY
+INSERT INTO t2 VALUES ("new text 8", 8, "new text 8");
+
+--source include/show_binlog_events.inc
+
+--echo
+--echo
+--echo
+--echo
+let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
+--echo # C - S C - S C - S
+--echo #4.a) N F - D F - D F - D
+--echo #
+INSERT INTO t1 VALUES ("new text 9", 9, "new text 9");
+
+--source include/show_binlog_events.inc
+
+--echo
+--echo
+--echo
+--echo
+let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
+--echo # C - T C - S(N) T(T) C - S(N) T(T)
+--echo #5.a) M F - C F - D(N) C(T) F - D(N) C(T)
+--echo #
+DELETE FROM t1;
+INSERT INTO t1 SELECT * FROM t2;
+DELETE FROM t2;
+INSERT INTO t2 SELECT * FROM t1;
+INSERT INTO t6 VALUES ("new text 400", 400, '');
+INSERT INTO t6 VALUES("new text 500", 500, f1());
+CALL pc6(600, "Testing...");
+INSERT INTO t6 VALUES(700, 700, f2());
+UPDATE t8, t9, t6, t7 SET t8.a= "new text 8", t9.a= "new text 8", t6.a= "new text 8", t7.a= "new text 8" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+UPDATE t6, t7, t8, t9 SET t6.a= "new text 9", t7.a= "new text 9", t8.a= "new text 9", t9.a = "new text 9" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 10", t8.a= "new text 10", t9.a= "new text 10", t7.a = "new text 10" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 11", t8.a= "new text 11", t9.a= "new text 11", t7.a = "new text 11" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+
+--source include/show_binlog_events.inc
+
+--echo
+--echo
+--echo
+--echo
+let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
+--echo # C - T C - S(N) T(T) C - S(N) T(T)
+--echo #5.b) M with error F - R F - D(N) I(T) F - D(N) I(T)
+--echo #
+--error ER_DUP_ENTRY
+INSERT INTO t2 SELECT * FROM t1;
+
+--source include/show_binlog_events.inc
+
+--echo
+--echo
+--echo
+--echo
+let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
+--echo # C - S(N) T(T) C - S(N) T(T) C - S(N) T(T)
+--echo #6.a) B N N T C F - D(N) C(T) F - D(N) C(T) F - D(N) C(T)
+--echo #
+BEGIN;
+INSERT INTO t1 VALUES ("new text 10", 10, "new text 10");
+INSERT INTO t5 VALUES ("new text 10", 10, "new text 10");
+INSERT INTO t2 VALUES ("new text 10", 10, "new text 10");
+COMMIT;
+
+--source include/show_binlog_events.inc
+
+--echo
+--echo
+--echo
+--echo
+let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
+--echo # C - S(N) T(T) C - S(N) T(T) C - S(N) T(T)
+--echo #6.b) B N N T R F - D(N) R(T) F - D(N) I(T) F - D(N) I(T)
+--echo #
+BEGIN;
+INSERT INTO t1 VALUES ("new text 11", 11, "new text 11");
+INSERT INTO t5 VALUES ("new text 11", 11, "new text 11");
+INSERT INTO t2 VALUES ("new text 11", 11, "new text 11");
+ROLLBACK;
+
+--source include/show_binlog_events.inc
+
+--echo
+--echo
+--echo
+--echo
+let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
+--echo # C - S(N) C - S(N) C - S(N)
+--echo #7.a) B N N C F - D(N) F - D(N) F - D(N)
+--echo #
+BEGIN;
+INSERT INTO t1 VALUES ("new text 12", 12, "new text 12");
+INSERT INTO t5 VALUES ("new text 12", 12, "new text 12");
+COMMIT;
+
+--source include/show_binlog_events.inc
+
+--echo
+--echo
+--echo
+--echo
+let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
+--echo # C - S(N) C - S(N) C - S(N)
+--echo #7.b) B N N R F - D(N) F - D(N) F - D(N)
+--echo #
+BEGIN;
+INSERT INTO t1 VALUES ("new text 13", 13, "new text 13");
+INSERT INTO t5 VALUES ("new text 13", 13, "new text 13");
+ROLLBACK;
+
+--source include/show_binlog_events.inc
+
+--echo
+--echo
+--echo
+--echo
+let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
+--echo # C - T C - S(N) T(T) C - S(N) T(T)
+--echo #8.a) B M T C F - C F - D(N) C(T) F - D(N) C(T)
+--echo #
+DELETE FROM t1;
+BEGIN;
+INSERT INTO t1 SELECT * FROM t2;
+INSERT INTO t3 VALUES ("new text 14", 14, "new text 14");
+COMMIT;
+
+DELETE FROM t2;
+BEGIN;
+INSERT INTO t2 SELECT * FROM t1;
+INSERT INTO t3 VALUES ("new text 15", 15, "new text 15");
+COMMIT;
+
+BEGIN;
+INSERT INTO t6 VALUES ("new text 1200", 1200, '');
+INSERT INTO t7 VALUES ("new text 20", 20, '');
+COMMIT;
+
+BEGIN;
+INSERT INTO t6 VALUES("new text 1300", 1300, f1());
+INSERT INTO t7 VALUES ("new text 21", 21, '');
+COMMIT;
+
+BEGIN;
+CALL pc6(1400, "Testing...");
+INSERT INTO t7 VALUES ("new text 22", 22, '');
+COMMIT;
+
+BEGIN;
+INSERT INTO t6 VALUES(1500, 1500, f2());
+INSERT INTO t7 VALUES ("new text 23", 23, '');
+COMMIT;
+
+BEGIN;
+UPDATE t8, t9, t6, t7 SET t8.a= "new text 16", t9.a= "new text 16", t6.a= "new text 16", t7.a= "new text 16" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t7 VALUES ("new text 24", 24, '');
+COMMIT;
+
+BEGIN;
+UPDATE t6, t7, t8, t9 SET t6.a= "new text 17", t7.a= "new text 17", t8.a= "new text 17", t9.a = "new text 17" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t7 VALUES ("new text 25", 25, '');
+COMMIT;
+
+BEGIN;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 18", t8.a= "new text 18", t9.a= "new text 18", t7.a = "new text 18" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t7 VALUES ("new text 250", 250, '');
+COMMIT;
+
+BEGIN;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 19", t8.a= "new text 19", t9.a= "new text 19", t7.a = "new text 19" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t7 VALUES ("new text 26", 26, '');
+COMMIT;
+
+--source include/show_binlog_events.inc
+
+--echo
+--echo
+--echo
+--echo
+let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
+--echo # C - T C - S(N) T(T) C - S(N) T(T)
+--echo #8.b) B M T R F - R F - D(N) I(T) F - D(N) I(T)
+--echo #
+DELETE FROM t1;
+BEGIN;
+INSERT INTO t1 SELECT * FROM t2;
+INSERT INTO t3 VALUES ("new text 17", 17, "new text 17");
+ROLLBACK;
+
+DELETE FROM t2;
+BEGIN;
+INSERT INTO t2 SELECT * FROM t1;
+INSERT INTO t3 VALUES ("new text 18", 18, "new text 18");
+ROLLBACK;
+INSERT INTO t2 SELECT * FROM t1;
+
+BEGIN;
+INSERT INTO t6 VALUES ("new text 2000", 2000, '');
+INSERT INTO t7 VALUES ("new text 27", 27, '');
+ROLLBACK;
+
+BEGIN;
+INSERT INTO t6 VALUES("new text 2100", 2100, f1());
+INSERT INTO t7 VALUES ("new text 28", 28, '');
+ROLLBACK;
+
+BEGIN;
+CALL pc6(2200, "Testing...");
+INSERT INTO t7 VALUES ("new text 29", 29, '');
+ROLLBACK;
+
+BEGIN;
+INSERT INTO t6 VALUES(2300, 2300, f2());
+INSERT INTO t7 VALUES ("new text 30", 30, '');
+ROLLBACK;
+
+BEGIN;
+UPDATE t8, t9, t6, t7 SET t8.a= "new text 24", t9.a= "new text 24", t6.a= "new text 24", t7.a= "new text 24" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t7 VALUES ("new text 31", 31, '');
+ROLLBACK;
+
+BEGIN;
+UPDATE t6, t7, t8, t9 SET t6.a= "new text 25", t7.a= "new text 25", t8.a= "new text 25", t9.a = "new text 25" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t7 VALUES ("new text 32", 32, '');
+ROLLBACK;
+
+BEGIN;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 26", t8.a= "new text 26", t9.a= "new text 26", t7.a = "new text 26" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t7 VALUES ("new text 33", 33, '');
+ROLLBACK;
+
+BEGIN;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 27", t8.a= "new text 27", t9.a= "new text 27", t7.a = "new text 27" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t7 VALUES ("new text 34", 34, '');
+ROLLBACK;
+
+--source include/show_binlog_events.inc
+
+--echo
+--echo
+--echo
+--echo
+let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
+--echo # C - T C - S(N) T(T) C - S(N) T(T)
+--echo #9.a) B M N C F - C F - D(N) C(T) F - D(N) C(T)
+--echo #
+DELETE FROM t1;
+BEGIN;
+INSERT INTO t1 SELECT * FROM t2;
+INSERT INTO t5 VALUES ("new text 20", 20, "new text 20");
+COMMIT;
+
+DELETE FROM t2;
+BEGIN;
+INSERT INTO t2 SELECT * FROM t1;
+INSERT INTO t5 VALUES ("new text 21", 21, "new text 21");
+COMMIT;
+
+BEGIN;
+INSERT INTO t6 VALUES ("new text 2800", 2800, '');
+INSERT INTO t9 VALUES ("new text 35", 35, '');
+COMMIT;
+
+BEGIN;
+INSERT INTO t6 VALUES("new text 2900", 2900, f1());
+INSERT INTO t9 VALUES ("new text 36", 36, '');
+COMMIT;
+
+BEGIN;
+CALL pc6(3000, "Testing...");
+INSERT INTO t9 VALUES ("new text 37", 37, '');
+COMMIT;
+
+BEGIN;
+INSERT INTO t6 VALUES(3100, 3100, f2());
+INSERT INTO t9 VALUES ("new text 38", 38, '');
+COMMIT;
+
+BEGIN;
+UPDATE t8, t9, t6, t7 SET t8.a= "new text 32", t9.a= "new text 32", t6.a= "new text 32", t7.a= "new text 32" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t9 VALUES ("new text 39", 39, '');
+COMMIT;
+
+BEGIN;
+UPDATE t6, t7, t8, t9 SET t6.a= "new text 33", t7.a= "new text 33", t8.a= "new text 33", t9.a = "new text 33" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t9 VALUES ("new text 40", 40, '');
+COMMIT;
+
+BEGIN;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 34", t8.a= "new text 34", t9.a= "new text 34", t7.a = "new text 34" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t9 VALUES ("new text 41", 41, '');
+COMMIT;
+
+BEGIN;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 35", t8.a= "new text 35", t9.a= "new text 35", t7.a = "new text 35" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t9 VALUES ("new text 42", 43, '');
+COMMIT;
+
+--source include/show_binlog_events.inc
+
+--echo
+--echo
+--echo
+let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
+--echo # C - T C - S(N) T(T) C - S(N) T(T)
+--echo #9.b) B M N R F - R F - D(N) I(T) F - D(N) I(T)
+--echo #
+DELETE FROM t1;
+BEGIN;
+INSERT INTO t1 SELECT * FROM t2;
+INSERT INTO t5 VALUES ("new text 23", 23, "new text 23");
+ROLLBACK;
+
+DELETE FROM t2;
+BEGIN;
+INSERT INTO t2 SELECT * FROM t1;
+INSERT INTO t5 VALUES ("new text 24", 24, "new text 24");
+ROLLBACK;
+INSERT INTO t2 SELECT * FROM t1;
+
+BEGIN;
+INSERT INTO t6 VALUES ("new text 3600", 3600, '');
+INSERT INTO t9 VALUES ("new text 44", 44, '');
+ROLLBACK;
+
+BEGIN;
+INSERT INTO t6 VALUES("new text 3700", 3700, f1());
+INSERT INTO t9 VALUES ("new text 45", 45, '');
+ROLLBACK;
+
+BEGIN;
+CALL pc6(3800, "Testing...");
+INSERT INTO t9 VALUES ("new text 46", 46, '');
+ROLLBACK;
+
+BEGIN;
+INSERT INTO t6 VALUES(3900, 3900, f2());
+INSERT INTO t9 VALUES ("new text 47", 47, '');
+ROLLBACK;
+
+BEGIN;
+UPDATE t8, t9, t6, t7 SET t8.a= "new text 40", t9.a= "new text 40", t6.a= "new text 40", t7.a= "new text 40" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t9 VALUES ("new text 48", 48, '');
+ROLLBACK;
+
+BEGIN;
+UPDATE t6, t7, t8, t9 SET t6.a= "new text 41", t7.a= "new text 41", t8.a= "new text 41", t9.a = "new text 41" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t9 VALUES ("new text", 49, '');
+ROLLBACK;
+
+BEGIN;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 42", t8.a= "new text 42", t9.a= "new text 42", t7.a = "new text 42" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t9 VALUES ("new text 50", 50, '');
+ROLLBACK;
+
+BEGIN;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 43", t8.a= "new text 43", t9.a= "new text 43", t7.a = "new text 43" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t9 VALUES ("new text 51", 51, '');
+ROLLBACK;
+
+--source include/show_binlog_events.inc
+
+--echo
+--echo
+--echo
+--echo
+--echo
+let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
+--echo # C - S(N) T(M) C - S(N) T(T) C - S(N) T(T)
+--echo #10.a) B N M C F - D(N) C(M) F - D(N) C(T) F - D(N) C(T)
+--echo #
+DELETE FROM t1;
+BEGIN;
+INSERT INTO t5 VALUES ("new text 26", 26, "new text 26");
+INSERT INTO t1 SELECT * FROM t2;
+COMMIT;
+
+DELETE FROM t2;
+BEGIN;
+INSERT INTO t5 VALUES ("new text 27", 27, "new text 27");
+INSERT INTO t2 SELECT * FROM t1;
+COMMIT;
+
+BEGIN;
+INSERT INTO t9 VALUES ("new text 52", 52, '');
+INSERT INTO t6 VALUES ("new text 4400", 4400, '');
+COMMIT;
+
+BEGIN;
+INSERT INTO t9 VALUES ("new text 53", 53, '');
+INSERT INTO t6 VALUES("new text 4500", 4500, f1());
+COMMIT;
+
+BEGIN;
+INSERT INTO t9 VALUES ("new text 54", 54, '');
+CALL pc6(4600, "Testing...");
+COMMIT;
+
+BEGIN;
+INSERT INTO t9 VALUES ("new text 55", 55, '');
+INSERT INTO t6 VALUES(4700, 4700, f2());
+COMMIT;
+
+BEGIN;
+INSERT INTO t9 VALUES ("new text 56", 56, '');
+UPDATE t8, t9, t6, t7 SET t8.a= "new text 48", t9.a= "new text 48", t6.a= "new text 48", t7.a= "new text 48" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+COMMIT;
+
+BEGIN;
+INSERT INTO t9 VALUES ("new text 57", 57, '');
+UPDATE t6, t7, t8, t9 SET t6.a= "new text 49", t7.a= "new text 49", t8.a= "new text 49", t9.a = "new text 49" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+COMMIT;
+
+BEGIN;
+INSERT INTO t9 VALUES ("new text 58", 58, '');
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 50", t8.a= "new text 50", t9.a= "new text 50", t7.a = "new text 50" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+COMMIT;
+
+BEGIN;
+INSERT INTO t9 VALUES ("new text 59", 59, '');
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 51", t8.a= "new text 51", t9.a= "new text 51", t7.a = "new text 51" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+COMMIT;
+
+--source include/show_binlog_events.inc
+
+--echo
+--echo
+--echo
+--echo
+let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
+--echo # C - S(N) T(M) C - S(N) T(T) C - S(N) T(T)
+--echo #10.b) B N M R F - D(N) R(M) F - D(N) I(T) F - D(N) I(T)
+--echo #
+DELETE FROM t1;
+BEGIN;
+INSERT INTO t5 VALUES ("new text 29", 29, "new text 29");
+INSERT INTO t1 SELECT * FROM t2;
+ROLLBACK;
+
+DELETE FROM t2;
+BEGIN;
+INSERT INTO t5 VALUES ("new text 30", 30, "new text 30");
+INSERT INTO t2 SELECT * FROM t1;
+ROLLBACK;
+INSERT INTO t2 SELECT * FROM t1;
+
+BEGIN;
+INSERT INTO t9 VALUES ("new text 60", 60, '');
+INSERT INTO t6 VALUES ("new text 5200", 5200, '');
+ROLLBACK;
+
+BEGIN;
+INSERT INTO t9 VALUES ("new text 61", 61, '');
+INSERT INTO t6 VALUES("new text 5300", 5300, f1());
+ROLLBACK;
+
+BEGIN;
+INSERT INTO t9 VALUES ("new text 62", 62, '');
+CALL pc6(5400, "Testing...");
+ROLLBACK;
+
+BEGIN;
+INSERT INTO t9 VALUES ("new text 63", 63, '');
+INSERT INTO t6 VALUES(5500, 5500, f2());
+ROLLBACK;
+
+BEGIN;
+INSERT INTO t9 VALUES ("new text 64", 64, '');
+UPDATE t8, t9, t6, t7 SET t8.a= "new text 56", t9.a= "new text 56", t6.a= "new text 56", t7.a= "new text 56" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+ROLLBACK;
+
+BEGIN;
+INSERT INTO t9 VALUES ("new text 65", 65, '');
+UPDATE t6, t7, t8, t9 SET t6.a= "new text 57", t7.a= "new text 57", t8.a= "new text 57", t9.a = "new text 57" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+ROLLBACK;
+
+BEGIN;
+INSERT INTO t9 VALUES ("new text 66", 66, '');
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 58", t8.a= "new text 58", t9.a= "new text 58", t7.a = "new text 58" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+ROLLBACK;
+
+BEGIN;
+INSERT INTO t9 VALUES ("new text 67", 67, '');
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 59", t8.a= "new text 59", t9.a= "new text 59", t7.a = "new text 59" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+ROLLBACK;
+
+--source include/show_binlog_events.inc
+
+--echo
+--echo
+--echo
+--echo
+let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
+--echo # C - T C - S(N) T(T) C - S(N) T(T)
+--echo #11.a) B T M C F - C F - D(N) C(T) F - D(N) C(T)
+--echo #
+DELETE FROM t1;
+BEGIN;
+INSERT INTO t3 VALUES ("new text 68", 68, "new text 68");
+INSERT INTO t1 SELECT * FROM t2;
+COMMIT;
+
+DELETE FROM t2;
+BEGIN;
+INSERT INTO t3 VALUES ("new text 69", 69, "new text 69");
+INSERT INTO t2 SELECT * FROM t1;
+COMMIT;
+
+BEGIN;
+INSERT INTO t7 VALUES ("new text 70", 70, '');
+INSERT INTO t6 VALUES ("new text 5600", 5600, '');
+COMMIT;
+
+BEGIN;
+INSERT INTO t7 VALUES ("new text 89", 89, '');
+INSERT INTO t6 VALUES("new text 5700", 5700, f1());
+COMMIT;
+
+BEGIN;
+INSERT INTO t7 VALUES ("new text 71", 71, '');
+CALL pc6(5800, "Testing...");
+COMMIT;
+
+BEGIN;
+INSERT INTO t7 VALUES ("new text 72", 72, '');
+INSERT INTO t6 VALUES(5900, 5900, f2());
+COMMIT;
+
+BEGIN;
+INSERT INTO t7 VALUES ("new text 73", 73, '');
+UPDATE t8, t9, t6, t7 SET t8.a= "new text 74", t9.a= "new text 74", t6.a= "new text 74", t7.a= "new text 74" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+COMMIT;
+
+BEGIN;
+INSERT INTO t7 VALUES ("new text 75", 75, '');
+UPDATE t6, t7, t8, t9 SET t6.a= "new text 76", t7.a= "new text 76", t8.a= "new text 76", t9.a = "new text 76" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+COMMIT;
+
+BEGIN;
+INSERT INTO t7 VALUES ("new text 77", 77, '');
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 78", t8.a= "new text 78", t9.a= "new text 78", t7.a = "new text 78" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+COMMIT;
+
+BEGIN;
+INSERT INTO t7 VALUES ("new text 79", 79, '');
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 80", t8.a= "new text 80", t9.a= "new text 80", t7.a = "new text 80" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+COMMIT;
+
+--source include/show_binlog_events.inc
+
+--echo
+--echo
+--echo
+--echo
+let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1);
+--echo # C - T C - S(N) T(T) C - S(N) T(T)
+--echo #11.b) B T M R F - R F - D(N) I(T) F - D(N) I(T)
+--echo #
+DELETE FROM t1;
+BEGIN;
+INSERT INTO t3 VALUES ("new text 80", 80, "new text 80");
+INSERT INTO t1 SELECT * FROM t2;
+ROLLBACK;
+
+DELETE FROM t2;
+BEGIN;
+INSERT INTO t3 VALUES ("new text 81", 81, "new text 81");
+INSERT INTO t2 SELECT * FROM t1;
+ROLLBACK;
+INSERT INTO t2 SELECT * FROM t1;
+
+BEGIN;
+INSERT INTO t7 VALUES ("new text 82", 82, '');
+INSERT INTO t6 VALUES ("new text 6000", 6000, '');
+ROLLBACK;
+
+BEGIN;
+INSERT INTO t7 VALUES ("new text 83", 83, '');
+INSERT INTO t6 VALUES("new text 6100", 6100, f1());
+ROLLBACK;
+
+BEGIN;
+INSERT INTO t7 VALUES ("new text 84", 84, '');
+CALL pc6(6200, "Testing...");
+ROLLBACK;
+
+BEGIN;
+INSERT INTO t7 VALUES ("new text 85", 85, '');
+INSERT INTO t6 VALUES(6300, 6300, f2());
+ROLLBACK;
+
+BEGIN;
+INSERT INTO t7 VALUES ("new text 85", 85, '');
+UPDATE t8, t9, t6, t7 SET t8.a= "new text 74", t9.a= "new text 74", t6.a= "new text 74", t7.a= "new text 74" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+ROLLBACK;
+
+BEGIN;
+INSERT INTO t7 VALUES ("new text 86", 86, '');
+UPDATE t6, t7, t8, t9 SET t6.a= "new text 76", t7.a= "new text 76", t8.a= "new text 76", t9.a = "new text 76" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+ROLLBACK;
+
+BEGIN;
+INSERT INTO t7 VALUES ("new text 87", 87, '');
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 78", t8.a= "new text 78", t9.a= "new text 78", t7.a = "new text 78" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+ROLLBACK;
+
+BEGIN;
+INSERT INTO t7 VALUES ("new text 88", 88, '');
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 80", t8.a= "new text 80", t9.a= "new text 80", t7.a = "new text 80" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+ROLLBACK;
+
+--source include/show_binlog_events.inc
+
+connection master;
+sync_slave_with_master;
+
+--exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/test-master.sql
+--exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/test-slave.sql
+--diff_files $MYSQLTEST_VARDIR/tmp/test-master.sql $MYSQLTEST_VARDIR/tmp/test-slave.sql
+
+
+--echo ###################################################################################
+--echo # 3 - CONCURRENCY
+--echo ###################################################################################
+connect (conn1, 127.0.0.1,root,,);
+connect (conn2, 127.0.0.1,root,,);
+
+echo ***** NON-TRANSACT TABLES - SET AUTOCOMMIT = 0 | COMMIT;
+connection master;
+
+INSERT INTO t1 VALUES ("new text 109", 109, "");
+INSERT INTO t1 VALUES ("new text 1010", 1010, "");
+
+echo ***** conn1: begin;
+connection conn1;
+SET AUTOCOMMIT= 0;
+
+echo ***** conn2: begin and update t1;
+connection conn2;
+SET AUTOCOMMIT= 0;
+UPDATE t1 SET a = "new text 1011" WHERE b = 109;
+
+echo ***** conn1: delete from t1 and commit;
+connection conn1;
+DELETE FROM t1 WHERE b = 109;
+DELETE FROM t1 WHERE b = 1010;
+COMMIT;
+
+echo ***** conn2: commit;
+connection conn2;
+COMMIT;
+
+connection master;
+sync_slave_with_master;
+
+--exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/test-master.sql
+--exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/test-slave.sql
+--diff_files $MYSQLTEST_VARDIR/tmp/test-master.sql $MYSQLTEST_VARDIR/tmp/test-slave.sql
+
+echo ***** NON-TRANSACT TABLES - SET AUTOCOMMIT = 1 | START - COMMIT;
+connection master;
+INSERT INTO t1 VALUES ("new text 1012", 1012, "");
+INSERT INTO t1 VALUES ("new text 1013", 1013, "");
+
+echo ***** conn1: begin;
+connection conn1;
+SET AUTOCOMMIT= 1;
+BEGIN;
+
+echo ***** conn2: begin and update t1;
+connection conn2;
+SET AUTOCOMMIT= 1;
+BEGIN;
+UPDATE t1 SET a = "new text 1014" WHERE b = 1012;
+
+echo ***** conn1: delete from t1 and commit;
+connection conn1;
+DELETE FROM t1 WHERE b = 1012;
+DELETE FROM t1 WHERE b = 1013;
+COMMIT;
+
+echo ***** conn2: commit;
+connection conn2;
+COMMIT;
+
+connection master;
+sync_slave_with_master;
+
+--exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/test-master.sql
+--exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/test-slave.sql
+--diff_files $MYSQLTEST_VARDIR/tmp/test-master.sql $MYSQLTEST_VARDIR/tmp/test-slave.sql
+
+
+--echo ###################################################################################
+--echo # 4 - SAVE POINTS
+--echo ###################################################################################
+connection master;
+
+BEGIN;
+INSERT INTO t2 VALUES ("new text 400", 400, "new text 400");
+INSERT INTO t3 VALUES ("new text 401", 401, "new text 401");
+SAVEPOINT sv;
+INSERT INTO t1 VALUES ("new text 402", 402, "new text 402");
+INSERT INTO t3 VALUES ("new text 403", 403, "new text 403");
+ROLLBACK TO sv;
+COMMIT;
+
+sync_slave_with_master;
+
+connection master;
+
+--exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/test-master.sql
+--exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/test-slave.sql
+--diff_files $MYSQLTEST_VARDIR/tmp/test-master.sql $MYSQLTEST_VARDIR/tmp/test-slave.sql
+
+
+--echo ###################################################################################
+--echo # CLEAN
+--echo ###################################################################################
+
+connection master;
+DROP TABLE t1;
+DROP TABLE t2;
+DROP TABLE t3;
+DROP TABLE t4;
+DROP TABLE t5;
+DROP TABLE t6;
+DROP TABLE t7;
+DROP TABLE t8;
+DROP TABLE t9;
+DROP PROCEDURE pc6;
+DROP FUNCTION f1;
+DROP FUNCTION f2;
+
+sync_slave_with_master;
+
+disconnect conn1;
+disconnect conn2;
=== added file 'mysql-test/suite/rpl/r/rpl_mixing_mixed_engines.result'
--- a/mysql-test/suite/rpl/r/rpl_mixing_mixed_engines.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/rpl/r/rpl_mixing_mixed_engines.result 2009-06-13 14:36:39 +0000
@@ -0,0 +1,1801 @@
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+###################################################################################
+# CONFIGURATION
+###################################################################################
+CREATE TABLE t1 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
+CREATE TABLE t2 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
+CREATE TABLE t3 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
+CREATE TABLE t4 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
+CREATE TABLE t5 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
+CREATE TABLE t6 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
+CREATE TABLE t7 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
+CREATE TABLE t8 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
+CREATE TABLE t9 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
+INSERT INTO t1 VALUES("text 1", 1, "text 1"), ("text 2", 2, "text 2"), ("text 3", 3, "text 3");
+INSERT INTO t2 VALUES("text 1", 1, "text 1"), ("text 2", 2, "text 2"), ("text 3", 3, "text 3");
+INSERT INTO t3 VALUES("text 1", 1, "text 1"), ("text 2", 2, "text 2"), ("text 3", 3, "text 3");
+INSERT INTO t4 VALUES("text 1", 1, "text 1"), ("text 2", 2, "text 2"), ("text 3", 3, "text 3");
+INSERT INTO t5 VALUES("text 1", 1, "text 1"), ("text 2", 2, "text 2"), ("text 3", 3, "text 3");
+CREATE FUNCTION f1 () RETURNS VARCHAR(64)
+BEGIN
+RETURN "Testing...";
+END|
+CREATE FUNCTION f2 () RETURNS VARCHAR(64)
+BEGIN
+RETURN f1();
+END|
+CREATE PROCEDURE pc6 (IN x INT, IN y VARCHAR(64))
+BEGIN
+INSERT INTO t6 VALUES (y,x,x);
+END|
+CREATE TRIGGER tr6_i BEFORE INSERT ON t6 FOR EACH ROW
+BEGIN
+INSERT INTO t7 VALUES (NEW.a, NEW.b, NEW.c);
+INSERT INTO t8 VALUES (NEW.a, NEW.b, NEW.c);
+INSERT INTO t9 VALUES (NEW.a, NEW.b, NEW.c);
+END|
+INSERT INTO t6 VALUES("text 100", 100, "text 100"), ("text 200", 200, "text 200"), ("text 300", 300, "text 300");
+INSERT INTO t7 VALUES("text 1", 1, "text 1"), ("text 2", 2, "text 2"), ("text 3", 3, "text 3");
+INSERT INTO t8 VALUES("text 1", 1, "text 1"), ("text 2", 2, "text 2"), ("text 3", 3, "text 3");
+INSERT INTO t9 VALUES("text 1", 1, "text 1"), ("text 2", 2, "text 2"), ("text 3", 3, "text 3");
+###################################################################################
+# 1 - CREATING TABLES
+###################################################################################
+CREATE TABLE t10 SELECT * FROM t2;
+DROP TABLE t10;
+CREATE TABLE t11 SELECT * FROM t2;
+DROP TABLE t11;
+###################################################################################
+# 2 - MIXING TRANSACTIONAL and NON-TRANSACTIONAL TABLES
+###################################################################################
+# C - T C - T C - T
+#1.a) B T T C F - C F - C F - C
+#
+BEGIN;
+INSERT INTO t2 VALUES ("new text 5", 5, "new text 5");
+INSERT INTO t3 VALUES ("new text 5", 5, "new text 5");
+COMMIT;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t2 VALUES ("new text 5", 5, "new text 5")
+master-bin.000001 # Query # # use `test`; INSERT INTO t3 VALUES ("new text 5", 5, "new text 5")
+master-bin.000001 # Xid # # COMMIT /* XID */
+
+
+
+
+# C - T C - T C - T
+#1.b) B T T R F - I F - I F - I
+#
+BEGIN;
+INSERT INTO t2 VALUES ("new text 6", 6, "new text 6");
+INSERT INTO t3 VALUES ("new text 6", 6, "new text 6");
+ROLLBACK;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+
+
+
+
+# C - T C - S(N) T(T) C - S(N) T(T)
+#2.a) B T N C F - C F - D(N) C(T) F - D(N) C(T)
+#
+BEGIN;
+INSERT INTO t2 VALUES ("new text 6", 6, "new text 6");
+INSERT INTO t1 VALUES ("new text 6", 6, "new text 6");
+COMMIT;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t2 VALUES ("new text 6", 6, "new text 6")
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+
+
+
+
+# C - T C - S(N) T(T) C - S(N) T(T)
+#2.b) B T N R F - R F - D(N) I(T) F - D(N) I(T)
+#
+BEGIN;
+INSERT INTO t2 VALUES ("new text 7", 7, "new text 7");
+INSERT INTO t1 VALUES ("new text 7", 7, "new text 7");
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t2 VALUES ("new text 7", 7, "new text 7")
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+
+
+
+
+# C - T C - T C - T
+#3.a) T F - C F - C F - C
+#
+INSERT INTO t2 VALUES ("new text 8", 8, "new text 8");
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t2 VALUES ("new text 8", 8, "new text 8")
+master-bin.000001 # Xid # # COMMIT /* XID */
+
+
+
+
+# C - T C - T C - T
+#3.b) T with error F - I F - I F - I
+#
+INSERT INTO t2 VALUES ("new text 8", 8, "new text 8");
+ERROR 23000: Duplicate entry '8' for key 'PRIMARY'
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+
+
+
+
+# C - S C - S C - S
+#4.a) N F - D F - D F - D
+#
+INSERT INTO t1 VALUES ("new text 9", 9, "new text 9");
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+
+
+
+
+# C - T C - S(N) T(T) C - S(N) T(T)
+#5.a) M F - C F - D(N) C(T) F - D(N) C(T)
+#
+DELETE FROM t1;
+INSERT INTO t1 SELECT * FROM t2;
+DELETE FROM t2;
+INSERT INTO t2 SELECT * FROM t1;
+INSERT INTO t6 VALUES ("new text 400", 400, '');
+INSERT INTO t6 VALUES("new text 500", 500, f1());
+CALL pc6(600, "Testing...");
+INSERT INTO t6 VALUES(700, 700, f2());
+UPDATE t8, t9, t6, t7 SET t8.a= "new text 8", t9.a= "new text 8", t6.a= "new text 8", t7.a= "new text 8" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+UPDATE t6, t7, t8, t9 SET t6.a= "new text 9", t7.a= "new text 9", t8.a= "new text 9", t9.a = "new text 9" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 10", t8.a= "new text 10", t9.a= "new text 10", t7.a = "new text 10" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 11", t8.a= "new text 11", t9.a= "new text 11", t7.a = "new text 11" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Delete_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t2)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+
+
+
+
+# C - T C - S(N) T(T) C - S(N) T(T)
+#5.b) M with error F - R F - D(N) I(T) F - D(N) I(T)
+#
+INSERT INTO t2 SELECT * FROM t1;
+ERROR 23000: Duplicate entry '6' for key 'PRIMARY'
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+
+
+
+
+# C - S(N) T(T) C - S(N) T(T) C - S(N) T(T)
+#6.a) B N N T C F - D(N) C(T) F - D(N) C(T) F - D(N) C(T)
+#
+BEGIN;
+INSERT INTO t1 VALUES ("new text 10", 10, "new text 10");
+INSERT INTO t5 VALUES ("new text 10", 10, "new text 10");
+INSERT INTO t2 VALUES ("new text 10", 10, "new text 10");
+COMMIT;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t5)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO t2 VALUES ("new text 10", 10, "new text 10")
+master-bin.000001 # Xid # # COMMIT /* XID */
+
+
+
+
+# C - S(N) T(T) C - S(N) T(T) C - S(N) T(T)
+#6.b) B N N T R F - D(N) R(T) F - D(N) I(T) F - D(N) I(T)
+#
+BEGIN;
+INSERT INTO t1 VALUES ("new text 11", 11, "new text 11");
+INSERT INTO t5 VALUES ("new text 11", 11, "new text 11");
+INSERT INTO t2 VALUES ("new text 11", 11, "new text 11");
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t5)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO t2 VALUES ("new text 11", 11, "new text 11")
+master-bin.000001 # Query # # ROLLBACK
+
+
+
+
+# C - S(N) C - S(N) C - S(N)
+#7.a) B N N C F - D(N) F - D(N) F - D(N)
+#
+BEGIN;
+INSERT INTO t1 VALUES ("new text 12", 12, "new text 12");
+INSERT INTO t5 VALUES ("new text 12", 12, "new text 12");
+COMMIT;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t5)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+
+
+
+
+# C - S(N) C - S(N) C - S(N)
+#7.b) B N N R F - D(N) F - D(N) F - D(N)
+#
+BEGIN;
+INSERT INTO t1 VALUES ("new text 13", 13, "new text 13");
+INSERT INTO t5 VALUES ("new text 13", 13, "new text 13");
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t5)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+
+
+
+
+# C - T C - S(N) T(T) C - S(N) T(T)
+#8.a) B M T C F - C F - D(N) C(T) F - D(N) C(T)
+#
+DELETE FROM t1;
+BEGIN;
+INSERT INTO t1 SELECT * FROM t2;
+INSERT INTO t3 VALUES ("new text 14", 14, "new text 14");
+COMMIT;
+DELETE FROM t2;
+BEGIN;
+INSERT INTO t2 SELECT * FROM t1;
+INSERT INTO t3 VALUES ("new text 15", 15, "new text 15");
+COMMIT;
+BEGIN;
+INSERT INTO t6 VALUES ("new text 1200", 1200, '');
+INSERT INTO t7 VALUES ("new text 20", 20, '');
+COMMIT;
+BEGIN;
+INSERT INTO t6 VALUES("new text 1300", 1300, f1());
+INSERT INTO t7 VALUES ("new text 21", 21, '');
+COMMIT;
+BEGIN;
+CALL pc6(1400, "Testing...");
+INSERT INTO t7 VALUES ("new text 22", 22, '');
+COMMIT;
+BEGIN;
+INSERT INTO t6 VALUES(1500, 1500, f2());
+INSERT INTO t7 VALUES ("new text 23", 23, '');
+COMMIT;
+BEGIN;
+UPDATE t8, t9, t6, t7 SET t8.a= "new text 16", t9.a= "new text 16", t6.a= "new text 16", t7.a= "new text 16" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t7 VALUES ("new text 24", 24, '');
+COMMIT;
+BEGIN;
+UPDATE t6, t7, t8, t9 SET t6.a= "new text 17", t7.a= "new text 17", t8.a= "new text 17", t9.a = "new text 17" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t7 VALUES ("new text 25", 25, '');
+COMMIT;
+BEGIN;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 18", t8.a= "new text 18", t9.a= "new text 18", t7.a = "new text 18" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t7 VALUES ("new text 250", 250, '');
+COMMIT;
+BEGIN;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 19", t8.a= "new text 19", t9.a= "new text 19", t7.a = "new text 19" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t7 VALUES ("new text 26", 26, '');
+COMMIT;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Delete_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO t3 VALUES ("new text 14", 14, "new text 14")
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t2)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO t3 VALUES ("new text 15", 15, "new text 15")
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 20", 20, '')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 21", 21, '')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 22", 22, '')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 23", 23, '')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 24", 24, '')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 25", 25, '')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 250", 250, '')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 26", 26, '')
+master-bin.000001 # Xid # # COMMIT /* XID */
+
+
+
+
+# C - T C - S(N) T(T) C - S(N) T(T)
+#8.b) B M T R F - R F - D(N) I(T) F - D(N) I(T)
+#
+DELETE FROM t1;
+BEGIN;
+INSERT INTO t1 SELECT * FROM t2;
+INSERT INTO t3 VALUES ("new text 17", 17, "new text 17");
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+DELETE FROM t2;
+BEGIN;
+INSERT INTO t2 SELECT * FROM t1;
+INSERT INTO t3 VALUES ("new text 18", 18, "new text 18");
+ROLLBACK;
+INSERT INTO t2 SELECT * FROM t1;
+BEGIN;
+INSERT INTO t6 VALUES ("new text 2000", 2000, '');
+INSERT INTO t7 VALUES ("new text 27", 27, '');
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t6 VALUES("new text 2100", 2100, f1());
+INSERT INTO t7 VALUES ("new text 28", 28, '');
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+CALL pc6(2200, "Testing...");
+INSERT INTO t7 VALUES ("new text 29", 29, '');
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t6 VALUES(2300, 2300, f2());
+INSERT INTO t7 VALUES ("new text 30", 30, '');
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+UPDATE t8, t9, t6, t7 SET t8.a= "new text 24", t9.a= "new text 24", t6.a= "new text 24", t7.a= "new text 24" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t7 VALUES ("new text 31", 31, '');
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+UPDATE t6, t7, t8, t9 SET t6.a= "new text 25", t7.a= "new text 25", t8.a= "new text 25", t9.a = "new text 25" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t7 VALUES ("new text 32", 32, '');
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 26", t8.a= "new text 26", t9.a= "new text 26", t7.a = "new text 26" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t7 VALUES ("new text 33", 33, '');
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 27", t8.a= "new text 27", t9.a= "new text 27", t7.a = "new text 27" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t7 VALUES ("new text 34", 34, '');
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Delete_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO t3 VALUES ("new text 17", 17, "new text 17")
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t2)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 27", 27, '')
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 28", 28, '')
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 29", 29, '')
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 30", 30, '')
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 31", 31, '')
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 32", 32, '')
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 33", 33, '')
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 34", 34, '')
+master-bin.000001 # Query # # ROLLBACK
+
+
+
+
+# C - T C - S(N) T(T) C - S(N) T(T)
+#9.a) B M N C F - C F - D(N) C(T) F - D(N) C(T)
+#
+DELETE FROM t1;
+BEGIN;
+INSERT INTO t1 SELECT * FROM t2;
+INSERT INTO t5 VALUES ("new text 20", 20, "new text 20");
+COMMIT;
+DELETE FROM t2;
+BEGIN;
+INSERT INTO t2 SELECT * FROM t1;
+INSERT INTO t5 VALUES ("new text 21", 21, "new text 21");
+COMMIT;
+BEGIN;
+INSERT INTO t6 VALUES ("new text 2800", 2800, '');
+INSERT INTO t9 VALUES ("new text 35", 35, '');
+COMMIT;
+BEGIN;
+INSERT INTO t6 VALUES("new text 2900", 2900, f1());
+INSERT INTO t9 VALUES ("new text 36", 36, '');
+COMMIT;
+BEGIN;
+CALL pc6(3000, "Testing...");
+INSERT INTO t9 VALUES ("new text 37", 37, '');
+COMMIT;
+BEGIN;
+INSERT INTO t6 VALUES(3100, 3100, f2());
+INSERT INTO t9 VALUES ("new text 38", 38, '');
+COMMIT;
+BEGIN;
+UPDATE t8, t9, t6, t7 SET t8.a= "new text 32", t9.a= "new text 32", t6.a= "new text 32", t7.a= "new text 32" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t9 VALUES ("new text 39", 39, '');
+COMMIT;
+BEGIN;
+UPDATE t6, t7, t8, t9 SET t6.a= "new text 33", t7.a= "new text 33", t8.a= "new text 33", t9.a = "new text 33" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t9 VALUES ("new text 40", 40, '');
+COMMIT;
+BEGIN;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 34", t8.a= "new text 34", t9.a= "new text 34", t7.a = "new text 34" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t9 VALUES ("new text 41", 41, '');
+COMMIT;
+BEGIN;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 35", t8.a= "new text 35", t9.a= "new text 35", t7.a = "new text 35" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t9 VALUES ("new text 42", 43, '');
+COMMIT;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Delete_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t5)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t2)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t5)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+
+
+
+# C - T C - S(N) T(T) C - S(N) T(T)
+#9.b) B M N R F - R F - D(N) I(T) F - D(N) I(T)
+#
+DELETE FROM t1;
+BEGIN;
+INSERT INTO t1 SELECT * FROM t2;
+INSERT INTO t5 VALUES ("new text 23", 23, "new text 23");
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+DELETE FROM t2;
+BEGIN;
+INSERT INTO t2 SELECT * FROM t1;
+INSERT INTO t5 VALUES ("new text 24", 24, "new text 24");
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+INSERT INTO t2 SELECT * FROM t1;
+BEGIN;
+INSERT INTO t6 VALUES ("new text 3600", 3600, '');
+INSERT INTO t9 VALUES ("new text 44", 44, '');
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t6 VALUES("new text 3700", 3700, f1());
+INSERT INTO t9 VALUES ("new text 45", 45, '');
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+CALL pc6(3800, "Testing...");
+INSERT INTO t9 VALUES ("new text 46", 46, '');
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t6 VALUES(3900, 3900, f2());
+INSERT INTO t9 VALUES ("new text 47", 47, '');
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+UPDATE t8, t9, t6, t7 SET t8.a= "new text 40", t9.a= "new text 40", t6.a= "new text 40", t7.a= "new text 40" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t9 VALUES ("new text 48", 48, '');
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+UPDATE t6, t7, t8, t9 SET t6.a= "new text 41", t7.a= "new text 41", t8.a= "new text 41", t9.a = "new text 41" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t9 VALUES ("new text", 49, '');
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 42", t8.a= "new text 42", t9.a= "new text 42", t7.a = "new text 42" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t9 VALUES ("new text 50", 50, '');
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 43", t8.a= "new text 43", t9.a= "new text 43", t7.a = "new text 43" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+INSERT INTO t9 VALUES ("new text 51", 51, '');
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Delete_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t5)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t2)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t5)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t2)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+
+
+
+
+
+# C - S(N) T(M) C - S(N) T(T) C - S(N) T(T)
+#10.a) B N M C F - D(N) C(M) F - D(N) C(T) F - D(N) C(T)
+#
+DELETE FROM t1;
+BEGIN;
+INSERT INTO t5 VALUES ("new text 26", 26, "new text 26");
+INSERT INTO t1 SELECT * FROM t2;
+COMMIT;
+DELETE FROM t2;
+BEGIN;
+INSERT INTO t5 VALUES ("new text 27", 27, "new text 27");
+INSERT INTO t2 SELECT * FROM t1;
+COMMIT;
+BEGIN;
+INSERT INTO t9 VALUES ("new text 52", 52, '');
+INSERT INTO t6 VALUES ("new text 4400", 4400, '');
+COMMIT;
+BEGIN;
+INSERT INTO t9 VALUES ("new text 53", 53, '');
+INSERT INTO t6 VALUES("new text 4500", 4500, f1());
+COMMIT;
+BEGIN;
+INSERT INTO t9 VALUES ("new text 54", 54, '');
+CALL pc6(4600, "Testing...");
+COMMIT;
+BEGIN;
+INSERT INTO t9 VALUES ("new text 55", 55, '');
+INSERT INTO t6 VALUES(4700, 4700, f2());
+COMMIT;
+BEGIN;
+INSERT INTO t9 VALUES ("new text 56", 56, '');
+UPDATE t8, t9, t6, t7 SET t8.a= "new text 48", t9.a= "new text 48", t6.a= "new text 48", t7.a= "new text 48" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+COMMIT;
+BEGIN;
+INSERT INTO t9 VALUES ("new text 57", 57, '');
+UPDATE t6, t7, t8, t9 SET t6.a= "new text 49", t7.a= "new text 49", t8.a= "new text 49", t9.a = "new text 49" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+COMMIT;
+BEGIN;
+INSERT INTO t9 VALUES ("new text 58", 58, '');
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 50", t8.a= "new text 50", t9.a= "new text 50", t7.a = "new text 50" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+COMMIT;
+BEGIN;
+INSERT INTO t9 VALUES ("new text 59", 59, '');
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 51", t8.a= "new text 51", t9.a= "new text 51", t7.a = "new text 51" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+COMMIT;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Delete_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t5)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t5)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t2)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+
+
+
+
+# C - S(N) T(M) C - S(N) T(T) C - S(N) T(T)
+#10.b) B N M R F - D(N) R(M) F - D(N) I(T) F - D(N) I(T)
+#
+DELETE FROM t1;
+BEGIN;
+INSERT INTO t5 VALUES ("new text 29", 29, "new text 29");
+INSERT INTO t1 SELECT * FROM t2;
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+DELETE FROM t2;
+BEGIN;
+INSERT INTO t5 VALUES ("new text 30", 30, "new text 30");
+INSERT INTO t2 SELECT * FROM t1;
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+INSERT INTO t2 SELECT * FROM t1;
+BEGIN;
+INSERT INTO t9 VALUES ("new text 60", 60, '');
+INSERT INTO t6 VALUES ("new text 5200", 5200, '');
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t9 VALUES ("new text 61", 61, '');
+INSERT INTO t6 VALUES("new text 5300", 5300, f1());
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t9 VALUES ("new text 62", 62, '');
+CALL pc6(5400, "Testing...");
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t9 VALUES ("new text 63", 63, '');
+INSERT INTO t6 VALUES(5500, 5500, f2());
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t9 VALUES ("new text 64", 64, '');
+UPDATE t8, t9, t6, t7 SET t8.a= "new text 56", t9.a= "new text 56", t6.a= "new text 56", t7.a= "new text 56" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t9 VALUES ("new text 65", 65, '');
+UPDATE t6, t7, t8, t9 SET t6.a= "new text 57", t7.a= "new text 57", t8.a= "new text 57", t9.a = "new text 57" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t9 VALUES ("new text 66", 66, '');
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 58", t8.a= "new text 58", t9.a= "new text 58", t7.a = "new text 58" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t9 VALUES ("new text 67", 67, '');
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 59", t8.a= "new text 59", t9.a= "new text 59", t7.a = "new text 59" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Delete_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t5)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t5)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t2)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t2)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+
+
+
+
+# C - T C - S(N) T(T) C - S(N) T(T)
+#11.a) B T M C F - C F - D(N) C(T) F - D(N) C(T)
+#
+DELETE FROM t1;
+BEGIN;
+INSERT INTO t3 VALUES ("new text 68", 68, "new text 68");
+INSERT INTO t1 SELECT * FROM t2;
+COMMIT;
+DELETE FROM t2;
+BEGIN;
+INSERT INTO t3 VALUES ("new text 69", 69, "new text 69");
+INSERT INTO t2 SELECT * FROM t1;
+COMMIT;
+BEGIN;
+INSERT INTO t7 VALUES ("new text 70", 70, '');
+INSERT INTO t6 VALUES ("new text 5600", 5600, '');
+COMMIT;
+BEGIN;
+INSERT INTO t7 VALUES ("new text 89", 89, '');
+INSERT INTO t6 VALUES("new text 5700", 5700, f1());
+COMMIT;
+BEGIN;
+INSERT INTO t7 VALUES ("new text 71", 71, '');
+CALL pc6(5800, "Testing...");
+COMMIT;
+BEGIN;
+INSERT INTO t7 VALUES ("new text 72", 72, '');
+INSERT INTO t6 VALUES(5900, 5900, f2());
+COMMIT;
+BEGIN;
+INSERT INTO t7 VALUES ("new text 73", 73, '');
+UPDATE t8, t9, t6, t7 SET t8.a= "new text 74", t9.a= "new text 74", t6.a= "new text 74", t7.a= "new text 74" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+COMMIT;
+BEGIN;
+INSERT INTO t7 VALUES ("new text 75", 75, '');
+UPDATE t6, t7, t8, t9 SET t6.a= "new text 76", t7.a= "new text 76", t8.a= "new text 76", t9.a = "new text 76" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+COMMIT;
+BEGIN;
+INSERT INTO t7 VALUES ("new text 77", 77, '');
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 78", t8.a= "new text 78", t9.a= "new text 78", t7.a = "new text 78" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+COMMIT;
+BEGIN;
+INSERT INTO t7 VALUES ("new text 79", 79, '');
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 80", t8.a= "new text 80", t9.a= "new text 80", t7.a = "new text 80" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+COMMIT;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Delete_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t3 VALUES ("new text 68", 68, "new text 68")
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t3 VALUES ("new text 69", 69, "new text 69")
+master-bin.000001 # Table_map # # table_id: # (test.t2)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 70", 70, '')
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 89", 89, '')
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 71", 71, '')
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 72", 72, '')
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 73", 73, '')
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 75", 75, '')
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 77", 77, '')
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 79", 79, '')
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+
+
+
+
+# C - T C - S(N) T(T) C - S(N) T(T)
+#11.b) B T M R F - R F - D(N) I(T) F - D(N) I(T)
+#
+DELETE FROM t1;
+BEGIN;
+INSERT INTO t3 VALUES ("new text 80", 80, "new text 80");
+INSERT INTO t1 SELECT * FROM t2;
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+DELETE FROM t2;
+BEGIN;
+INSERT INTO t3 VALUES ("new text 81", 81, "new text 81");
+INSERT INTO t2 SELECT * FROM t1;
+ROLLBACK;
+INSERT INTO t2 SELECT * FROM t1;
+BEGIN;
+INSERT INTO t7 VALUES ("new text 82", 82, '');
+INSERT INTO t6 VALUES ("new text 6000", 6000, '');
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t7 VALUES ("new text 83", 83, '');
+INSERT INTO t6 VALUES("new text 6100", 6100, f1());
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t7 VALUES ("new text 84", 84, '');
+CALL pc6(6200, "Testing...");
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t7 VALUES ("new text 85", 85, '');
+INSERT INTO t6 VALUES(6300, 6300, f2());
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t7 VALUES ("new text 85", 85, '');
+UPDATE t8, t9, t6, t7 SET t8.a= "new text 74", t9.a= "new text 74", t6.a= "new text 74", t7.a= "new text 74" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t7 VALUES ("new text 86", 86, '');
+UPDATE t6, t7, t8, t9 SET t6.a= "new text 76", t7.a= "new text 76", t8.a= "new text 76", t9.a = "new text 76" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t7 VALUES ("new text 87", 87, '');
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 78", t8.a= "new text 78", t9.a= "new text 78", t7.a = "new text 78" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t7 VALUES ("new text 88", 88, '');
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 80", t8.a= "new text 80", t9.a= "new text 80", t7.a = "new text 80" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Delete_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # COMMIT
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t3 VALUES ("new text 80", 80, "new text 80")
+master-bin.000001 # Table_map # # table_id: # (test.t1)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Table_map # # table_id: # (test.t2)
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 82", 82, '')
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 83", 83, '')
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 84", 84, '')
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 85", 85, '')
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: #
+master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 85", 85, '')
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 86", 86, '')
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 87", 87, '')
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 88", 88, '')
+master-bin.000001 # Table_map # # table_id: # (test.t6)
+master-bin.000001 # Table_map # # table_id: # (test.t8)
+master-bin.000001 # Table_map # # table_id: # (test.t9)
+master-bin.000001 # Table_map # # table_id: # (test.t7)
+master-bin.000001 # Update_rows # # table_id: #
+master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
+master-bin.000001 # Query # # ROLLBACK
+###################################################################################
+# 3 - CONCURRENCY
+###################################################################################
+***** NON-TRANSACT TABLES - SET AUTOCOMMIT = 0 | COMMIT
+INSERT INTO t1 VALUES ("new text 109", 109, "");
+INSERT INTO t1 VALUES ("new text 1010", 1010, "");
+***** conn1: begin
+SET AUTOCOMMIT= 0;
+***** conn2: begin and update t1
+SET AUTOCOMMIT= 0;
+UPDATE t1 SET a = "new text 1011" WHERE b = 109;
+***** conn1: delete from t1 and commit
+DELETE FROM t1 WHERE b = 109;
+DELETE FROM t1 WHERE b = 1010;
+COMMIT;
+***** conn2: commit
+COMMIT;
+***** NON-TRANSACT TABLES - SET AUTOCOMMIT = 1 | START - COMMIT
+INSERT INTO t1 VALUES ("new text 1012", 1012, "");
+INSERT INTO t1 VALUES ("new text 1013", 1013, "");
+***** conn1: begin
+SET AUTOCOMMIT= 1;
+BEGIN;
+***** conn2: begin and update t1
+SET AUTOCOMMIT= 1;
+BEGIN;
+UPDATE t1 SET a = "new text 1014" WHERE b = 1012;
+***** conn1: delete from t1 and commit
+DELETE FROM t1 WHERE b = 1012;
+DELETE FROM t1 WHERE b = 1013;
+COMMIT;
+***** conn2: commit
+COMMIT;
+###################################################################################
+# 4 - SAVE POINTS
+###################################################################################
+BEGIN;
+INSERT INTO t2 VALUES ("new text 400", 400, "new text 400");
+INSERT INTO t3 VALUES ("new text 401", 401, "new text 401");
+SAVEPOINT sv;
+INSERT INTO t1 VALUES ("new text 402", 402, "new text 402");
+INSERT INTO t3 VALUES ("new text 403", 403, "new text 403");
+ROLLBACK TO sv;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+COMMIT;
+###################################################################################
+# CLEAN
+###################################################################################
+DROP TABLE t1;
+DROP TABLE t2;
+DROP TABLE t3;
+DROP TABLE t4;
+DROP TABLE t5;
+DROP TABLE t6;
+DROP TABLE t7;
+DROP TABLE t8;
+DROP TABLE t9;
+DROP PROCEDURE pc6;
+DROP FUNCTION f1;
+DROP FUNCTION f2;
=== added file 'mysql-test/suite/rpl/r/rpl_mixing_stmt_engines.result'
--- a/mysql-test/suite/rpl/r/rpl_mixing_stmt_engines.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/rpl/r/rpl_mixing_stmt_engines.result 2009-06-13 14:36:39 +0000
@@ -0,0 +1,1521 @@
+stop slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+reset master;
+reset slave;
+drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9;
+start slave;
+###################################################################################
+# CONFIGURATION
+###################################################################################
+CREATE TABLE t1 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
+CREATE TABLE t2 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
+CREATE TABLE t3 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
+CREATE TABLE t4 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
+CREATE TABLE t5 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
+CREATE TABLE t6 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
+CREATE TABLE t7 (a text, b int PRIMARY KEY, c text) ENGINE = Innodb;
+CREATE TABLE t8 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
+CREATE TABLE t9 (a text, b int PRIMARY KEY, c text) ENGINE = MyISAM;
+INSERT INTO t1 VALUES("text 1", 1, "text 1"), ("text 2", 2, "text 2"), ("text 3", 3, "text 3");
+INSERT INTO t2 VALUES("text 1", 1, "text 1"), ("text 2", 2, "text 2"), ("text 3", 3, "text 3");
+INSERT INTO t3 VALUES("text 1", 1, "text 1"), ("text 2", 2, "text 2"), ("text 3", 3, "text 3");
+INSERT INTO t4 VALUES("text 1", 1, "text 1"), ("text 2", 2, "text 2"), ("text 3", 3, "text 3");
+INSERT INTO t5 VALUES("text 1", 1, "text 1"), ("text 2", 2, "text 2"), ("text 3", 3, "text 3");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+CREATE FUNCTION f1 () RETURNS VARCHAR(64)
+BEGIN
+RETURN "Testing...";
+END|
+CREATE FUNCTION f2 () RETURNS VARCHAR(64)
+BEGIN
+RETURN f1();
+END|
+CREATE PROCEDURE pc6 (IN x INT, IN y VARCHAR(64))
+BEGIN
+INSERT INTO t6 VALUES (y,x,x);
+END|
+CREATE TRIGGER tr6_i BEFORE INSERT ON t6 FOR EACH ROW
+BEGIN
+INSERT INTO t7 VALUES (NEW.a, NEW.b, NEW.c);
+INSERT INTO t8 VALUES (NEW.a, NEW.b, NEW.c);
+INSERT INTO t9 VALUES (NEW.a, NEW.b, NEW.c);
+END|
+INSERT INTO t6 VALUES("text 100", 100, "text 100"), ("text 200", 200, "text 200"), ("text 300", 300, "text 300");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t7 VALUES("text 1", 1, "text 1"), ("text 2", 2, "text 2"), ("text 3", 3, "text 3");
+INSERT INTO t8 VALUES("text 1", 1, "text 1"), ("text 2", 2, "text 2"), ("text 3", 3, "text 3");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t9 VALUES("text 1", 1, "text 1"), ("text 2", 2, "text 2"), ("text 3", 3, "text 3");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+###################################################################################
+# 1 - CREATING TABLES
+###################################################################################
+CREATE TABLE t10 SELECT * FROM t2;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+DROP TABLE t10;
+CREATE TABLE t11 SELECT * FROM t2;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+DROP TABLE t11;
+###################################################################################
+# 2 - MIXING TRANSACTIONAL and NON-TRANSACTIONAL TABLES
+###################################################################################
+# C - T C - T C - T
+#1.a) B T T C F - C F - C F - C
+#
+BEGIN;
+INSERT INTO t2 VALUES ("new text 5", 5, "new text 5");
+INSERT INTO t3 VALUES ("new text 5", 5, "new text 5");
+COMMIT;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t2 VALUES ("new text 5", 5, "new text 5")
+master-bin.000001 # Query # # use `test`; INSERT INTO t3 VALUES ("new text 5", 5, "new text 5")
+master-bin.000001 # Xid # # COMMIT /* XID */
+
+
+
+
+# C - T C - T C - T
+#1.b) B T T R F - I F - I F - I
+#
+BEGIN;
+INSERT INTO t2 VALUES ("new text 6", 6, "new text 6");
+INSERT INTO t3 VALUES ("new text 6", 6, "new text 6");
+ROLLBACK;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+
+
+
+
+# C - T C - S(N) T(T) C - S(N) T(T)
+#2.a) B T N C F - C F - D(N) C(T) F - D(N) C(T)
+#
+BEGIN;
+INSERT INTO t2 VALUES ("new text 6", 6, "new text 6");
+INSERT INTO t1 VALUES ("new text 6", 6, "new text 6");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t2 VALUES ("new text 6", 6, "new text 6")
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES ("new text 6", 6, "new text 6")
+master-bin.000001 # Xid # # COMMIT /* XID */
+
+
+
+
+# C - T C - S(N) T(T) C - S(N) T(T)
+#2.b) B T N R F - R F - D(N) I(T) F - D(N) I(T)
+#
+BEGIN;
+INSERT INTO t2 VALUES ("new text 7", 7, "new text 7");
+INSERT INTO t1 VALUES ("new text 7", 7, "new text 7");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t2 VALUES ("new text 7", 7, "new text 7")
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES ("new text 7", 7, "new text 7")
+master-bin.000001 # Query # # ROLLBACK
+
+
+
+
+# C - T C - T C - T
+#3.a) T F - C F - C F - C
+#
+INSERT INTO t2 VALUES ("new text 8", 8, "new text 8");
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t2 VALUES ("new text 8", 8, "new text 8")
+master-bin.000001 # Xid # # COMMIT /* XID */
+
+
+
+
+# C - T C - T C - T
+#3.b) T with error F - I F - I F - I
+#
+INSERT INTO t2 VALUES ("new text 8", 8, "new text 8");
+ERROR 23000: Duplicate entry '8' for key 'PRIMARY'
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+
+
+
+
+# C - S C - S C - S
+#4.a) N F - D F - D F - D
+#
+INSERT INTO t1 VALUES ("new text 9", 9, "new text 9");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES ("new text 9", 9, "new text 9")
+
+
+
+
+# C - T C - S(N) T(T) C - S(N) T(T)
+#5.a) M F - C F - D(N) C(T) F - D(N) C(T)
+#
+DELETE FROM t1;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t1 SELECT * FROM t2;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+DELETE FROM t2;
+INSERT INTO t2 SELECT * FROM t1;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t6 VALUES ("new text 400", 400, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t6 VALUES("new text 500", 500, f1());
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+CALL pc6(600, "Testing...");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t6 VALUES(700, 700, f2());
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+UPDATE t8, t9, t6, t7 SET t8.a= "new text 8", t9.a= "new text 8", t6.a= "new text 8", t7.a= "new text 8" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+UPDATE t6, t7, t8, t9 SET t6.a= "new text 9", t7.a= "new text 9", t8.a= "new text 9", t9.a = "new text 9" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 10", t8.a= "new text 10", t9.a= "new text 10", t7.a = "new text 10" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 11", t8.a= "new text 11", t9.a= "new text 11", t7.a = "new text 11" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DELETE FROM t1
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 SELECT * FROM t2
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES ("new text 400", 400, '')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES("new text 500", 500, f1())
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES ( NAME_CONST('y',_latin1'Testing...' COLLATE 'latin1_swedish_ci'), NAME_CONST('x',600), NAME_CONST('x',600))
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES(700, 700, f2())
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t8, t9, t6, t7 SET t8.a= "new text 8", t9.a= "new text 8", t6.a= "new text 8", t7.a= "new text 8" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t6, t7, t8, t9 SET t6.a= "new text 9", t7.a= "new text 9", t8.a= "new text 9", t9.a = "new text 9" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t6, t8, t9, t7 SET t6.a= "new text 10", t8.a= "new text 10", t9.a= "new text 10", t7.a = "new text 10" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t6, t8, t9, t7 SET t6.a= "new text 11", t8.a= "new text 11", t9.a= "new text 11", t7.a = "new text 11" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Xid # # COMMIT /* XID */
+
+
+
+
+# C - T C - S(N) T(T) C - S(N) T(T)
+#5.b) M with error F - R F - D(N) I(T) F - D(N) I(T)
+#
+INSERT INTO t2 SELECT * FROM t1;
+ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+
+
+
+
+# C - S(N) T(T) C - S(N) T(T) C - S(N) T(T)
+#6.a) B N N T C F - D(N) C(T) F - D(N) C(T) F - D(N) C(T)
+#
+BEGIN;
+INSERT INTO t1 VALUES ("new text 10", 10, "new text 10");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t5 VALUES ("new text 10", 10, "new text 10");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t2 VALUES ("new text 10", 10, "new text 10");
+COMMIT;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES ("new text 10", 10, "new text 10")
+master-bin.000001 # Query # # use `test`; INSERT INTO t5 VALUES ("new text 10", 10, "new text 10")
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t2 VALUES ("new text 10", 10, "new text 10")
+master-bin.000001 # Xid # # COMMIT /* XID */
+
+
+
+
+# C - S(N) T(T) C - S(N) T(T) C - S(N) T(T)
+#6.b) B N N T R F - D(N) R(T) F - D(N) I(T) F - D(N) I(T)
+#
+BEGIN;
+INSERT INTO t1 VALUES ("new text 11", 11, "new text 11");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t5 VALUES ("new text 11", 11, "new text 11");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t2 VALUES ("new text 11", 11, "new text 11");
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES ("new text 11", 11, "new text 11")
+master-bin.000001 # Query # # use `test`; INSERT INTO t5 VALUES ("new text 11", 11, "new text 11")
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t2 VALUES ("new text 11", 11, "new text 11")
+master-bin.000001 # Query # # ROLLBACK
+
+
+
+
+# C - S(N) C - S(N) C - S(N)
+#7.a) B N N C F - D(N) F - D(N) F - D(N)
+#
+BEGIN;
+INSERT INTO t1 VALUES ("new text 12", 12, "new text 12");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t5 VALUES ("new text 12", 12, "new text 12");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES ("new text 12", 12, "new text 12")
+master-bin.000001 # Query # # use `test`; INSERT INTO t5 VALUES ("new text 12", 12, "new text 12")
+
+
+
+
+# C - S(N) C - S(N) C - S(N)
+#7.b) B N N R F - D(N) F - D(N) F - D(N)
+#
+BEGIN;
+INSERT INTO t1 VALUES ("new text 13", 13, "new text 13");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t5 VALUES ("new text 13", 13, "new text 13");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES ("new text 13", 13, "new text 13")
+master-bin.000001 # Query # # use `test`; INSERT INTO t5 VALUES ("new text 13", 13, "new text 13")
+
+
+
+
+# C - T C - S(N) T(T) C - S(N) T(T)
+#8.a) B M T C F - C F - D(N) C(T) F - D(N) C(T)
+#
+DELETE FROM t1;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+BEGIN;
+INSERT INTO t1 SELECT * FROM t2;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t3 VALUES ("new text 14", 14, "new text 14");
+COMMIT;
+DELETE FROM t2;
+BEGIN;
+INSERT INTO t2 SELECT * FROM t1;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t3 VALUES ("new text 15", 15, "new text 15");
+COMMIT;
+BEGIN;
+INSERT INTO t6 VALUES ("new text 1200", 1200, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t7 VALUES ("new text 20", 20, '');
+COMMIT;
+BEGIN;
+INSERT INTO t6 VALUES("new text 1300", 1300, f1());
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t7 VALUES ("new text 21", 21, '');
+COMMIT;
+BEGIN;
+CALL pc6(1400, "Testing...");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t7 VALUES ("new text 22", 22, '');
+COMMIT;
+BEGIN;
+INSERT INTO t6 VALUES(1500, 1500, f2());
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t7 VALUES ("new text 23", 23, '');
+COMMIT;
+BEGIN;
+UPDATE t8, t9, t6, t7 SET t8.a= "new text 16", t9.a= "new text 16", t6.a= "new text 16", t7.a= "new text 16" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t7 VALUES ("new text 24", 24, '');
+COMMIT;
+BEGIN;
+UPDATE t6, t7, t8, t9 SET t6.a= "new text 17", t7.a= "new text 17", t8.a= "new text 17", t9.a = "new text 17" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t7 VALUES ("new text 25", 25, '');
+COMMIT;
+BEGIN;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 18", t8.a= "new text 18", t9.a= "new text 18", t7.a = "new text 18" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t7 VALUES ("new text 250", 250, '');
+COMMIT;
+BEGIN;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 19", t8.a= "new text 19", t9.a= "new text 19", t7.a = "new text 19" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t7 VALUES ("new text 26", 26, '');
+COMMIT;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DELETE FROM t1
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 SELECT * FROM t2
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t3 VALUES ("new text 14", 14, "new text 14")
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
+master-bin.000001 # Query # # use `test`; INSERT INTO t3 VALUES ("new text 15", 15, "new text 15")
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES ("new text 1200", 1200, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 20", 20, '')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES("new text 1300", 1300, f1())
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 21", 21, '')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES ( NAME_CONST('y',_latin1'Testing...' COLLATE 'latin1_swedish_ci'), NAME_CONST('x',1400), NAME_CONST('x',1400))
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 22", 22, '')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES(1500, 1500, f2())
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 23", 23, '')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t8, t9, t6, t7 SET t8.a= "new text 16", t9.a= "new text 16", t6.a= "new text 16", t7.a= "new text 16" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 24", 24, '')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t6, t7, t8, t9 SET t6.a= "new text 17", t7.a= "new text 17", t8.a= "new text 17", t9.a = "new text 17" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 25", 25, '')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t6, t8, t9, t7 SET t6.a= "new text 18", t8.a= "new text 18", t9.a= "new text 18", t7.a = "new text 18" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 250", 250, '')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t6, t8, t9, t7 SET t6.a= "new text 19", t8.a= "new text 19", t9.a= "new text 19", t7.a = "new text 19" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 26", 26, '')
+master-bin.000001 # Xid # # COMMIT /* XID */
+
+
+
+
+# C - T C - S(N) T(T) C - S(N) T(T)
+#8.b) B M T R F - R F - D(N) I(T) F - D(N) I(T)
+#
+DELETE FROM t1;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+BEGIN;
+INSERT INTO t1 SELECT * FROM t2;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t3 VALUES ("new text 17", 17, "new text 17");
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+DELETE FROM t2;
+BEGIN;
+INSERT INTO t2 SELECT * FROM t1;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t3 VALUES ("new text 18", 18, "new text 18");
+ROLLBACK;
+INSERT INTO t2 SELECT * FROM t1;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+BEGIN;
+INSERT INTO t6 VALUES ("new text 2000", 2000, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t7 VALUES ("new text 27", 27, '');
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t6 VALUES("new text 2100", 2100, f1());
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t7 VALUES ("new text 28", 28, '');
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+CALL pc6(2200, "Testing...");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t7 VALUES ("new text 29", 29, '');
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t6 VALUES(2300, 2300, f2());
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t7 VALUES ("new text 30", 30, '');
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+UPDATE t8, t9, t6, t7 SET t8.a= "new text 24", t9.a= "new text 24", t6.a= "new text 24", t7.a= "new text 24" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t7 VALUES ("new text 31", 31, '');
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+UPDATE t6, t7, t8, t9 SET t6.a= "new text 25", t7.a= "new text 25", t8.a= "new text 25", t9.a = "new text 25" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t7 VALUES ("new text 32", 32, '');
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 26", t8.a= "new text 26", t9.a= "new text 26", t7.a = "new text 26" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t7 VALUES ("new text 33", 33, '');
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 27", t8.a= "new text 27", t9.a= "new text 27", t7.a = "new text 27" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t7 VALUES ("new text 34", 34, '');
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DELETE FROM t1
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 SELECT * FROM t2
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t3 VALUES ("new text 17", 17, "new text 17")
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES ("new text 2000", 2000, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 27", 27, '')
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES("new text 2100", 2100, f1())
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 28", 28, '')
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES ( NAME_CONST('y',_latin1'Testing...' COLLATE 'latin1_swedish_ci'), NAME_CONST('x',2200), NAME_CONST('x',2200))
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 29", 29, '')
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES(2300, 2300, f2())
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 30", 30, '')
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t8, t9, t6, t7 SET t8.a= "new text 24", t9.a= "new text 24", t6.a= "new text 24", t7.a= "new text 24" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 31", 31, '')
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t6, t7, t8, t9 SET t6.a= "new text 25", t7.a= "new text 25", t8.a= "new text 25", t9.a = "new text 25" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 32", 32, '')
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t6, t8, t9, t7 SET t6.a= "new text 26", t8.a= "new text 26", t9.a= "new text 26", t7.a = "new text 26" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 33", 33, '')
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t6, t8, t9, t7 SET t6.a= "new text 27", t8.a= "new text 27", t9.a= "new text 27", t7.a = "new text 27" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 34", 34, '')
+master-bin.000001 # Query # # ROLLBACK
+
+
+
+
+# C - T C - S(N) T(T) C - S(N) T(T)
+#9.a) B M N C F - C F - D(N) C(T) F - D(N) C(T)
+#
+DELETE FROM t1;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+BEGIN;
+INSERT INTO t1 SELECT * FROM t2;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t5 VALUES ("new text 20", 20, "new text 20");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+DELETE FROM t2;
+BEGIN;
+INSERT INTO t2 SELECT * FROM t1;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t5 VALUES ("new text 21", 21, "new text 21");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+BEGIN;
+INSERT INTO t6 VALUES ("new text 2800", 2800, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t9 VALUES ("new text 35", 35, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+BEGIN;
+INSERT INTO t6 VALUES("new text 2900", 2900, f1());
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t9 VALUES ("new text 36", 36, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+BEGIN;
+CALL pc6(3000, "Testing...");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t9 VALUES ("new text 37", 37, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+BEGIN;
+INSERT INTO t6 VALUES(3100, 3100, f2());
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t9 VALUES ("new text 38", 38, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+BEGIN;
+UPDATE t8, t9, t6, t7 SET t8.a= "new text 32", t9.a= "new text 32", t6.a= "new text 32", t7.a= "new text 32" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t9 VALUES ("new text 39", 39, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+BEGIN;
+UPDATE t6, t7, t8, t9 SET t6.a= "new text 33", t7.a= "new text 33", t8.a= "new text 33", t9.a = "new text 33" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t9 VALUES ("new text 40", 40, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+BEGIN;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 34", t8.a= "new text 34", t9.a= "new text 34", t7.a = "new text 34" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t9 VALUES ("new text 41", 41, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+BEGIN;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 35", t8.a= "new text 35", t9.a= "new text 35", t7.a = "new text 35" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t9 VALUES ("new text 42", 43, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DELETE FROM t1
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 SELECT * FROM t2
+master-bin.000001 # Query # # use `test`; INSERT INTO t5 VALUES ("new text 20", 20, "new text 20")
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
+master-bin.000001 # Query # # use `test`; INSERT INTO t5 VALUES ("new text 21", 21, "new text 21")
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES ("new text 2800", 2800, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 35", 35, '')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES("new text 2900", 2900, f1())
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 36", 36, '')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES ( NAME_CONST('y',_latin1'Testing...' COLLATE 'latin1_swedish_ci'), NAME_CONST('x',3000), NAME_CONST('x',3000))
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 37", 37, '')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES(3100, 3100, f2())
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 38", 38, '')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t8, t9, t6, t7 SET t8.a= "new text 32", t9.a= "new text 32", t6.a= "new text 32", t7.a= "new text 32" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 39", 39, '')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t6, t7, t8, t9 SET t6.a= "new text 33", t7.a= "new text 33", t8.a= "new text 33", t9.a = "new text 33" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 40", 40, '')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t6, t8, t9, t7 SET t6.a= "new text 34", t8.a= "new text 34", t9.a= "new text 34", t7.a = "new text 34" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 41", 41, '')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t6, t8, t9, t7 SET t6.a= "new text 35", t8.a= "new text 35", t9.a= "new text 35", t7.a = "new text 35" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 42", 43, '')
+master-bin.000001 # Xid # # COMMIT /* XID */
+
+
+
+# C - T C - S(N) T(T) C - S(N) T(T)
+#9.b) B M N R F - R F - D(N) I(T) F - D(N) I(T)
+#
+DELETE FROM t1;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+BEGIN;
+INSERT INTO t1 SELECT * FROM t2;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t5 VALUES ("new text 23", 23, "new text 23");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+DELETE FROM t2;
+BEGIN;
+INSERT INTO t2 SELECT * FROM t1;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t5 VALUES ("new text 24", 24, "new text 24");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+INSERT INTO t2 SELECT * FROM t1;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+BEGIN;
+INSERT INTO t6 VALUES ("new text 3600", 3600, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t9 VALUES ("new text 44", 44, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t6 VALUES("new text 3700", 3700, f1());
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t9 VALUES ("new text 45", 45, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+CALL pc6(3800, "Testing...");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t9 VALUES ("new text 46", 46, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t6 VALUES(3900, 3900, f2());
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t9 VALUES ("new text 47", 47, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+UPDATE t8, t9, t6, t7 SET t8.a= "new text 40", t9.a= "new text 40", t6.a= "new text 40", t7.a= "new text 40" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t9 VALUES ("new text 48", 48, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+UPDATE t6, t7, t8, t9 SET t6.a= "new text 41", t7.a= "new text 41", t8.a= "new text 41", t9.a = "new text 41" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t9 VALUES ("new text", 49, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 42", t8.a= "new text 42", t9.a= "new text 42", t7.a = "new text 42" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t9 VALUES ("new text 50", 50, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 43", t8.a= "new text 43", t9.a= "new text 43", t7.a = "new text 43" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t9 VALUES ("new text 51", 51, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DELETE FROM t1
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 SELECT * FROM t2
+master-bin.000001 # Query # # use `test`; INSERT INTO t5 VALUES ("new text 23", 23, "new text 23")
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
+master-bin.000001 # Query # # use `test`; INSERT INTO t5 VALUES ("new text 24", 24, "new text 24")
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES ("new text 3600", 3600, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 44", 44, '')
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES("new text 3700", 3700, f1())
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 45", 45, '')
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES ( NAME_CONST('y',_latin1'Testing...' COLLATE 'latin1_swedish_ci'), NAME_CONST('x',3800), NAME_CONST('x',3800))
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 46", 46, '')
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES(3900, 3900, f2())
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 47", 47, '')
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t8, t9, t6, t7 SET t8.a= "new text 40", t9.a= "new text 40", t6.a= "new text 40", t7.a= "new text 40" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 48", 48, '')
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t6, t7, t8, t9 SET t6.a= "new text 41", t7.a= "new text 41", t8.a= "new text 41", t9.a = "new text 41" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text", 49, '')
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t6, t8, t9, t7 SET t6.a= "new text 42", t8.a= "new text 42", t9.a= "new text 42", t7.a = "new text 42" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 50", 50, '')
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t6, t8, t9, t7 SET t6.a= "new text 43", t8.a= "new text 43", t9.a= "new text 43", t7.a = "new text 43" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 51", 51, '')
+master-bin.000001 # Query # # ROLLBACK
+
+
+
+
+
+# C - S(N) T(M) C - S(N) T(T) C - S(N) T(T)
+#10.a) B N M C F - D(N) C(M) F - D(N) C(T) F - D(N) C(T)
+#
+DELETE FROM t1;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+BEGIN;
+INSERT INTO t5 VALUES ("new text 26", 26, "new text 26");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t1 SELECT * FROM t2;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+DELETE FROM t2;
+BEGIN;
+INSERT INTO t5 VALUES ("new text 27", 27, "new text 27");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t2 SELECT * FROM t1;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+BEGIN;
+INSERT INTO t9 VALUES ("new text 52", 52, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t6 VALUES ("new text 4400", 4400, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+BEGIN;
+INSERT INTO t9 VALUES ("new text 53", 53, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t6 VALUES("new text 4500", 4500, f1());
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+BEGIN;
+INSERT INTO t9 VALUES ("new text 54", 54, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+CALL pc6(4600, "Testing...");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+BEGIN;
+INSERT INTO t9 VALUES ("new text 55", 55, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t6 VALUES(4700, 4700, f2());
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+BEGIN;
+INSERT INTO t9 VALUES ("new text 56", 56, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+UPDATE t8, t9, t6, t7 SET t8.a= "new text 48", t9.a= "new text 48", t6.a= "new text 48", t7.a= "new text 48" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+BEGIN;
+INSERT INTO t9 VALUES ("new text 57", 57, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+UPDATE t6, t7, t8, t9 SET t6.a= "new text 49", t7.a= "new text 49", t8.a= "new text 49", t9.a = "new text 49" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+BEGIN;
+INSERT INTO t9 VALUES ("new text 58", 58, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 50", t8.a= "new text 50", t9.a= "new text 50", t7.a = "new text 50" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+BEGIN;
+INSERT INTO t9 VALUES ("new text 59", 59, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 51", t8.a= "new text 51", t9.a= "new text 51", t7.a = "new text 51" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DELETE FROM t1
+master-bin.000001 # Query # # use `test`; INSERT INTO t5 VALUES ("new text 26", 26, "new text 26")
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 SELECT * FROM t2
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; INSERT INTO t5 VALUES ("new text 27", 27, "new text 27")
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 52", 52, '')
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES ("new text 4400", 4400, '')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 53", 53, '')
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES("new text 4500", 4500, f1())
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 54", 54, '')
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES ( NAME_CONST('y',_latin1'Testing...' COLLATE 'latin1_swedish_ci'), NAME_CONST('x',4600), NAME_CONST('x',4600))
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 55", 55, '')
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES(4700, 4700, f2())
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 56", 56, '')
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t8, t9, t6, t7 SET t8.a= "new text 48", t9.a= "new text 48", t6.a= "new text 48", t7.a= "new text 48" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 57", 57, '')
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t6, t7, t8, t9 SET t6.a= "new text 49", t7.a= "new text 49", t8.a= "new text 49", t9.a = "new text 49" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 58", 58, '')
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t6, t8, t9, t7 SET t6.a= "new text 50", t8.a= "new text 50", t9.a= "new text 50", t7.a = "new text 50" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 59", 59, '')
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t6, t8, t9, t7 SET t6.a= "new text 51", t8.a= "new text 51", t9.a= "new text 51", t7.a = "new text 51" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Xid # # COMMIT /* XID */
+
+
+
+
+# C - S(N) T(M) C - S(N) T(T) C - S(N) T(T)
+#10.b) B N M R F - D(N) R(M) F - D(N) I(T) F - D(N) I(T)
+#
+DELETE FROM t1;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+BEGIN;
+INSERT INTO t5 VALUES ("new text 29", 29, "new text 29");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t1 SELECT * FROM t2;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+DELETE FROM t2;
+BEGIN;
+INSERT INTO t5 VALUES ("new text 30", 30, "new text 30");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t2 SELECT * FROM t1;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+INSERT INTO t2 SELECT * FROM t1;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+BEGIN;
+INSERT INTO t9 VALUES ("new text 60", 60, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t6 VALUES ("new text 5200", 5200, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t9 VALUES ("new text 61", 61, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t6 VALUES("new text 5300", 5300, f1());
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t9 VALUES ("new text 62", 62, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+CALL pc6(5400, "Testing...");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t9 VALUES ("new text 63", 63, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t6 VALUES(5500, 5500, f2());
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t9 VALUES ("new text 64", 64, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+UPDATE t8, t9, t6, t7 SET t8.a= "new text 56", t9.a= "new text 56", t6.a= "new text 56", t7.a= "new text 56" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t9 VALUES ("new text 65", 65, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+UPDATE t6, t7, t8, t9 SET t6.a= "new text 57", t7.a= "new text 57", t8.a= "new text 57", t9.a = "new text 57" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t9 VALUES ("new text 66", 66, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 58", t8.a= "new text 58", t9.a= "new text 58", t7.a = "new text 58" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t9 VALUES ("new text 67", 67, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 59", t8.a= "new text 59", t9.a= "new text 59", t7.a = "new text 59" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DELETE FROM t1
+master-bin.000001 # Query # # use `test`; INSERT INTO t5 VALUES ("new text 29", 29, "new text 29")
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 SELECT * FROM t2
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; INSERT INTO t5 VALUES ("new text 30", 30, "new text 30")
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 60", 60, '')
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES ("new text 5200", 5200, '')
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 61", 61, '')
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES("new text 5300", 5300, f1())
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 62", 62, '')
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES ( NAME_CONST('y',_latin1'Testing...' COLLATE 'latin1_swedish_ci'), NAME_CONST('x',5400), NAME_CONST('x',5400))
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 63", 63, '')
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES(5500, 5500, f2())
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 64", 64, '')
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t8, t9, t6, t7 SET t8.a= "new text 56", t9.a= "new text 56", t6.a= "new text 56", t7.a= "new text 56" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 65", 65, '')
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t6, t7, t8, t9 SET t6.a= "new text 57", t7.a= "new text 57", t8.a= "new text 57", t9.a = "new text 57" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 66", 66, '')
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t6, t8, t9, t7 SET t6.a= "new text 58", t8.a= "new text 58", t9.a= "new text 58", t7.a = "new text 58" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # use `test`; INSERT INTO t9 VALUES ("new text 67", 67, '')
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; UPDATE t6, t8, t9, t7 SET t6.a= "new text 59", t8.a= "new text 59", t9.a= "new text 59", t7.a = "new text 59" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Query # # ROLLBACK
+
+
+
+
+# C - T C - S(N) T(T) C - S(N) T(T)
+#11.a) B T M C F - C F - D(N) C(T) F - D(N) C(T)
+#
+DELETE FROM t1;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+BEGIN;
+INSERT INTO t3 VALUES ("new text 68", 68, "new text 68");
+INSERT INTO t1 SELECT * FROM t2;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+DELETE FROM t2;
+BEGIN;
+INSERT INTO t3 VALUES ("new text 69", 69, "new text 69");
+INSERT INTO t2 SELECT * FROM t1;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+BEGIN;
+INSERT INTO t7 VALUES ("new text 70", 70, '');
+INSERT INTO t6 VALUES ("new text 5600", 5600, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+BEGIN;
+INSERT INTO t7 VALUES ("new text 89", 89, '');
+INSERT INTO t6 VALUES("new text 5700", 5700, f1());
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+BEGIN;
+INSERT INTO t7 VALUES ("new text 71", 71, '');
+CALL pc6(5800, "Testing...");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+BEGIN;
+INSERT INTO t7 VALUES ("new text 72", 72, '');
+INSERT INTO t6 VALUES(5900, 5900, f2());
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+BEGIN;
+INSERT INTO t7 VALUES ("new text 73", 73, '');
+UPDATE t8, t9, t6, t7 SET t8.a= "new text 74", t9.a= "new text 74", t6.a= "new text 74", t7.a= "new text 74" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+BEGIN;
+INSERT INTO t7 VALUES ("new text 75", 75, '');
+UPDATE t6, t7, t8, t9 SET t6.a= "new text 76", t7.a= "new text 76", t8.a= "new text 76", t9.a = "new text 76" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+BEGIN;
+INSERT INTO t7 VALUES ("new text 77", 77, '');
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 78", t8.a= "new text 78", t9.a= "new text 78", t7.a = "new text 78" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+BEGIN;
+INSERT INTO t7 VALUES ("new text 79", 79, '');
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 80", t8.a= "new text 80", t9.a= "new text 80", t7.a = "new text 80" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+COMMIT;
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DELETE FROM t1
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t3 VALUES ("new text 68", 68, "new text 68")
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 SELECT * FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t3 VALUES ("new text 69", 69, "new text 69")
+master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 70", 70, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES ("new text 5600", 5600, '')
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 89", 89, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES("new text 5700", 5700, f1())
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 71", 71, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES ( NAME_CONST('y',_latin1'Testing...' COLLATE 'latin1_swedish_ci'), NAME_CONST('x',5800), NAME_CONST('x',5800))
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 72", 72, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES(5900, 5900, f2())
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 73", 73, '')
+master-bin.000001 # Query # # use `test`; UPDATE t8, t9, t6, t7 SET t8.a= "new text 74", t9.a= "new text 74", t6.a= "new text 74", t7.a= "new text 74" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 75", 75, '')
+master-bin.000001 # Query # # use `test`; UPDATE t6, t7, t8, t9 SET t6.a= "new text 76", t7.a= "new text 76", t8.a= "new text 76", t9.a = "new text 76" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 77", 77, '')
+master-bin.000001 # Query # # use `test`; UPDATE t6, t8, t9, t7 SET t6.a= "new text 78", t8.a= "new text 78", t9.a= "new text 78", t7.a = "new text 78" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 79", 79, '')
+master-bin.000001 # Query # # use `test`; UPDATE t6, t8, t9, t7 SET t6.a= "new text 80", t8.a= "new text 80", t9.a= "new text 80", t7.a = "new text 80" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Xid # # COMMIT /* XID */
+
+
+
+
+# C - T C - S(N) T(T) C - S(N) T(T)
+#11.b) B T M R F - R F - D(N) I(T) F - D(N) I(T)
+#
+DELETE FROM t1;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+BEGIN;
+INSERT INTO t3 VALUES ("new text 80", 80, "new text 80");
+INSERT INTO t1 SELECT * FROM t2;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+DELETE FROM t2;
+BEGIN;
+INSERT INTO t3 VALUES ("new text 81", 81, "new text 81");
+INSERT INTO t2 SELECT * FROM t1;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+INSERT INTO t2 SELECT * FROM t1;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+BEGIN;
+INSERT INTO t7 VALUES ("new text 82", 82, '');
+INSERT INTO t6 VALUES ("new text 6000", 6000, '');
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t7 VALUES ("new text 83", 83, '');
+INSERT INTO t6 VALUES("new text 6100", 6100, f1());
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t7 VALUES ("new text 84", 84, '');
+CALL pc6(6200, "Testing...");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t7 VALUES ("new text 85", 85, '');
+INSERT INTO t6 VALUES(6300, 6300, f2());
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t7 VALUES ("new text 85", 85, '');
+UPDATE t8, t9, t6, t7 SET t8.a= "new text 74", t9.a= "new text 74", t6.a= "new text 74", t7.a= "new text 74" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t7 VALUES ("new text 86", 86, '');
+UPDATE t6, t7, t8, t9 SET t6.a= "new text 76", t7.a= "new text 76", t8.a= "new text 76", t9.a = "new text 76" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t7 VALUES ("new text 87", 87, '');
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 78", t8.a= "new text 78", t9.a= "new text 78", t7.a = "new text 78" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+BEGIN;
+INSERT INTO t7 VALUES ("new text 88", 88, '');
+UPDATE t6, t8, t9, t7 SET t6.a= "new text 80", t8.a= "new text 80", t9.a= "new text 80", t7.a = "new text 80" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+ROLLBACK;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+show binlog events from <binlog_start>;
+Log_name Pos Event_type Server_id End_log_pos Info
+master-bin.000001 # Query # # use `test`; DELETE FROM t1
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t3 VALUES ("new text 80", 80, "new text 80")
+master-bin.000001 # Query # # use `test`; INSERT INTO t1 SELECT * FROM t2
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; DELETE FROM t2
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t2 SELECT * FROM t1
+master-bin.000001 # Xid # # COMMIT /* XID */
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 82", 82, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES ("new text 6000", 6000, '')
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 83", 83, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES("new text 6100", 6100, f1())
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 84", 84, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES ( NAME_CONST('y',_latin1'Testing...' COLLATE 'latin1_swedish_ci'), NAME_CONST('x',6200), NAME_CONST('x',6200))
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 85", 85, '')
+master-bin.000001 # Query # # use `test`; INSERT INTO t6 VALUES(6300, 6300, f2())
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 85", 85, '')
+master-bin.000001 # Query # # use `test`; UPDATE t8, t9, t6, t7 SET t8.a= "new text 74", t9.a= "new text 74", t6.a= "new text 74", t7.a= "new text 74" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 86", 86, '')
+master-bin.000001 # Query # # use `test`; UPDATE t6, t7, t8, t9 SET t6.a= "new text 76", t7.a= "new text 76", t8.a= "new text 76", t9.a = "new text 76" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 87", 87, '')
+master-bin.000001 # Query # # use `test`; UPDATE t6, t8, t9, t7 SET t6.a= "new text 78", t8.a= "new text 78", t9.a= "new text 78", t7.a = "new text 78" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Query # # ROLLBACK
+master-bin.000001 # Query # # BEGIN
+master-bin.000001 # Query # # use `test`; INSERT INTO t7 VALUES ("new text 88", 88, '')
+master-bin.000001 # Query # # use `test`; UPDATE t6, t8, t9, t7 SET t6.a= "new text 80", t8.a= "new text 80", t9.a= "new text 80", t7.a = "new text 80" where t8.b = t9.b and t9.b = t6.b and t6.b = t7.b and t7.b = 100
+master-bin.000001 # Query # # ROLLBACK
+###################################################################################
+# 3 - CONCURRENCY
+###################################################################################
+***** NON-TRANSACT TABLES - SET AUTOCOMMIT = 0 | COMMIT
+INSERT INTO t1 VALUES ("new text 109", 109, "");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t1 VALUES ("new text 1010", 1010, "");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+***** conn1: begin
+SET AUTOCOMMIT= 0;
+***** conn2: begin and update t1
+SET AUTOCOMMIT= 0;
+UPDATE t1 SET a = "new text 1011" WHERE b = 109;
+***** conn1: delete from t1 and commit
+DELETE FROM t1 WHERE b = 109;
+DELETE FROM t1 WHERE b = 1010;
+COMMIT;
+***** conn2: commit
+COMMIT;
+***** NON-TRANSACT TABLES - SET AUTOCOMMIT = 1 | START - COMMIT
+INSERT INTO t1 VALUES ("new text 1012", 1012, "");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t1 VALUES ("new text 1013", 1013, "");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+***** conn1: begin
+SET AUTOCOMMIT= 1;
+BEGIN;
+***** conn2: begin and update t1
+SET AUTOCOMMIT= 1;
+BEGIN;
+UPDATE t1 SET a = "new text 1014" WHERE b = 1012;
+***** conn1: delete from t1 and commit
+DELETE FROM t1 WHERE b = 1012;
+DELETE FROM t1 WHERE b = 1013;
+COMMIT;
+***** conn2: commit
+COMMIT;
+###################################################################################
+# 4 - SAVE POINTS
+###################################################################################
+BEGIN;
+INSERT INTO t2 VALUES ("new text 400", 400, "new text 400");
+INSERT INTO t3 VALUES ("new text 401", 401, "new text 401");
+SAVEPOINT sv;
+INSERT INTO t1 VALUES ("new text 402", 402, "new text 402");
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+INSERT INTO t3 VALUES ("new text 403", 403, "new text 403");
+ROLLBACK TO sv;
+Warnings:
+Warning 1196 Some non-transactional changed tables couldn't be rolled back
+COMMIT;
+###################################################################################
+# CLEAN
+###################################################################################
+DROP TABLE t1;
+DROP TABLE t2;
+DROP TABLE t3;
+DROP TABLE t4;
+DROP TABLE t5;
+DROP TABLE t6;
+DROP TABLE t7;
+DROP TABLE t8;
+DROP TABLE t9;
+DROP PROCEDURE pc6;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+DROP FUNCTION f1;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
+DROP FUNCTION f2;
+Warnings:
+Note 1592 Statement may not be safe to log in statement format.
=== added file 'mysql-test/suite/rpl/t/rpl_mixing_mixed_engines.test'
--- a/mysql-test/suite/rpl/t/rpl_mixing_mixed_engines.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/rpl/t/rpl_mixing_mixed_engines.test 2009-06-13 14:36:39 +0000
@@ -0,0 +1,5 @@
+--source include/have_binlog_format_mixed.inc
+--source include/master-slave.inc
+--source include/have_innodb.inc
+
+--source suite/rpl/include/rpl_mixed_engines.inc
=== added file 'mysql-test/suite/rpl/t/rpl_mixing_stmt_engines.test'
--- a/mysql-test/suite/rpl/t/rpl_mixing_stmt_engines.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/rpl/t/rpl_mixing_stmt_engines.test 2009-06-13 14:36:39 +0000
@@ -0,0 +1,5 @@
+--source include/have_binlog_format_statement.inc
+--source include/master-slave.inc
+--source include/have_innodb.inc
+
+--source suite/rpl/include/rpl_mixed_engines.inc
=== modified file 'sql/handler.h'
--- a/sql/handler.h 2009-05-04 10:00:15 +0000
+++ b/sql/handler.h 2009-06-13 14:36:39 +0000
@@ -761,8 +761,23 @@ struct THD_TRANS
saved value.
*/
bool modified_non_trans_table;
-
- void reset() { no_2pc= FALSE; modified_non_trans_table= FALSE; }
+ /*
+ The purpose of this flag is to keep track of transactional tables that were
+ modified in scope of:
+ - transaction, when the variable is a member of THD::transaction.all
+ - top-level statement or sub-statement, when the variable is a member of
+ THD::transaction.stmt
+
+ The flag has the same life cyle as the modified_non_trans_table.
+ */
+ bool modified_trans_table;
+
+ void reset()
+ {
+ no_2pc= FALSE;
+ modified_non_trans_table= FALSE;
+ modified_trans_table= FALSE;
+ }
};
=== modified file 'sql/log.cc'
--- a/sql/log.cc 2009-05-31 09:15:35 +0000
+++ b/sql/log.cc 2009-06-13 14:36:39 +0000
@@ -3971,7 +3971,8 @@ bool MYSQL_BIN_LOG::write(Log_event *eve
(binlog_trx_data*) thd_get_ha_data(thd, binlog_hton);
IO_CACHE *trans_log= &trx_data->trans_log;
my_off_t trans_log_pos= my_b_tell(trans_log);
- if (event_info->get_cache_stmt() || trans_log_pos != 0)
+ if (event_info->get_cache_stmt() ||
+ (trans_log_pos != 0 && thd->transaction.all.modified_trans_table))
{
DBUG_PRINT("info", ("Using trans_log: cache: %d, trans_log_pos: %lu",
event_info->get_cache_stmt(),
=== modified file 'sql/sql_base.cc'
--- a/sql/sql_base.cc 2009-05-30 13:32:28 +0000
+++ b/sql/sql_base.cc 2009-06-13 14:36:39 +0000
@@ -5102,7 +5102,10 @@ int decide_logging_format(THD *thd, TABL
HA_BINLOG_ROW_CAPABLE | HA_BINLOG_STMT_CAPABLE;
my_bool multi_engine= FALSE;
- void* prev_ht= NULL;
+ my_bool mixed_engine= FALSE;
+ my_bool trans_engine= TRUE;
+ TABLE* prev_write_table= NULL;
+ TABLE* prev_access_table= NULL;
for (TABLE_LIST *table= tables; table; table= table->next_global)
{
if (table->placeholder())
@@ -5116,13 +5119,29 @@ int decide_logging_format(THD *thd, TABL
table->table_name,
FLAGSTR(flags, HA_BINLOG_STMT_CAPABLE),
FLAGSTR(flags, HA_BINLOG_ROW_CAPABLE)));
- if (prev_ht && prev_ht != table->table->file->ht)
+ if (prev_write_table && prev_write_table->file->ht != table->table->file->ht)
multi_engine= TRUE;
- prev_ht= table->table->file->ht;
+ trans_engine= trans_engine && table->table->file->has_transactions();
+ thd->transaction.stmt.modified_trans_table=
+ thd->transaction.stmt.modified_trans_table ||
+ table->table->file->has_transactions();
+ prev_write_table= table->table;
flags_all_set &= flags;
flags_some_set |= flags;
}
- }
+ if (prev_access_table && prev_access_table->file->ht != table->table->file->ht)
+ mixed_engine= mixed_engine || (prev_access_table->file->has_transactions() !=
+ table->table->file->has_transactions());
+ prev_access_table= table->table;
+ }
+ thd->transaction.all.modified_trans_table=
+ thd->transaction.all.modified_trans_table ||
+ thd->transaction.stmt.modified_trans_table;
+
+ if (mixed_engine ||
+ (thd->transaction.all.modified_trans_table && !trans_engine))
+ thd->lex->set_stmt_unsafe();
+
DBUG_PRINT("info", ("flags_all_set: %s%s",
FLAGSTR(flags_all_set, HA_BINLOG_STMT_CAPABLE),
@@ -5193,9 +5212,7 @@ int decide_logging_format(THD *thd, TABL
*/
if (thd->lex->is_stmt_unsafe() ||
(flags_all_set & HA_BINLOG_STMT_CAPABLE) == 0)
- {
thd->set_current_stmt_binlog_row_based_if_mixed();
- }
}
return 0;
Attachment: [text/bzr-bundle]
| Thread |
|---|
| • bzr commit into mysql-5.1-bugteam branch (alfranio.correia:2936)Bug#28976 | Alfranio Correia | 13 Jun |