Chuck, hi.
both patch are okay except I'd like to see problem description
outlined in the comments.
cheers,
Andrei
> Below is the list of changes that have just been committed into a local
> 5.1 repository of cbell. When cbell does a push these changes will
> be propagated to the main repository and, within 24 hours after the
> push, to the public repository.
> For information on how to access the public repository
> see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
>
> ChangeSet@stripped, 2007-08-30 15:07:39-04:00, cbell@mysql_cab_desk. +9 -0
> BUG#26395 : if crash during autocommit update to transactional table on master,
> slave fails
>
> This patch includes updates to the rpl tests affected by adding code to
> the mysql-5.0 tree to prevent crash during autocommit if transaction is
> aborted before COMMIT is issued (or read). This is accomplished by
> adding a BEGIN when a transaction engine is used in MYSQL_BIN_LOG::write().
>
> mysql-test/extra/rpl_tests/rpl_ndb_apply_status.test@stripped, 2007-08-30
> 15:07:33-04:00, cbell@mysql_cab_desk. +0 -11
> BUG#26395 : if crash during autocommit update to transactional table on master,
> slave fails
>
> This patch removes the portion of the test that described this bug report.
I was asking why in the previous mail. Could you paste that
answer into these comments?
>
> mysql-test/suite/rpl/r/rpl_extraCol_innodb.result@stripped, 2007-08-30 15:07:33-04:00,
> cbell@mysql_cab_desk. +1 -0
> BUG#26395 : if crash during autocommit update to transactional table on master,
> slave fails
>
> Corrected result file.
>
> mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result@stripped, 2007-08-30 15:07:34-04:00,
> cbell@mysql_cab_desk. +71 -0
> BUG#26395 if crash during autocommit update to transactional table on master,
> slave fails
>
> New result file due to the extra BEGIN statements in the binlog.
>
> mysql-test/suite/rpl/r/rpl_row_create_table.result@stripped, 2007-08-30 15:07:34-04:00,
> cbell@mysql_cab_desk. +9 -8
> BUG#26395 if crash during autocommit update to transactional table on master,
> slave fails
>
> New result file due to the extra BEGIN statements in the binlog.
>
> mysql-test/suite/rpl/r/rpl_row_log_innodb.result@stripped, 2007-08-30 15:07:35-04:00,
> cbell@mysql_cab_desk. +16 -8
> BUG#26395 if crash during autocommit update to transactional table on master,
> slave fails
>
> New result file due to the extra BEGIN statements in the binlog.
>
> mysql-test/suite/rpl/r/rpl_truncate_3innodb.result@stripped, 2007-08-30 15:07:35-04:00,
> cbell@mysql_cab_desk. +12 -0
> BUG#26395 if crash during autocommit update to transactional table on master,
> slave fails
>
> New result file due to the extra BEGIN statements in the binlog.
>
> mysql-test/suite/rpl_ndb/r/rpl_ndb_mix_innodb.result@stripped, 2007-08-30
> 15:07:35-04:00, cbell@mysql_cab_desk. +0 -7
> BUG#26395 : if crash during autocommit update to transactional table on master,
> slave fails
>
> Corrected result file.
>
> mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result@stripped, 2007-08-30
> 15:07:36-04:00, cbell@mysql_cab_desk. +0 -7
> BUG#26395 : if crash during autocommit update to transactional table on master,
> slave fails
>
> Corrected result file.
>
> sql/log.cc@stripped, 2007-08-30 15:07:36-04:00, cbell@mysql_cab_desk. +4 -0
> BUG#26395 : if crash during autocommit update to transactional table on master,
> slave fails
>
> This patch adds the code to enable detection of the bug via debug.
>
> diff -Nrup a/mysql-test/extra/rpl_tests/rpl_ndb_apply_status.test
> b/mysql-test/extra/rpl_tests/rpl_ndb_apply_status.test
> --- a/mysql-test/extra/rpl_tests/rpl_ndb_apply_status.test 2007-06-21 15:53:45
> -04:00
> +++ b/mysql-test/extra/rpl_tests/rpl_ndb_apply_status.test 2007-08-30 15:07:33
> -04:00
> @@ -50,17 +50,6 @@ insert into t1 values (1,2);
> --echo
>
> connection master;
> -# here is actually a bug, since there is no begin statement, the
> -# query is autocommitted, and end_pos shows end of the insert and not
> -# end of the commit
> ---replace_result $start_pos <start_pos>
> ---replace_column 5 #
> ---eval show binlog events from $start_pos limit 1
> ---echo
> ---replace_result $start_pos <start_pos> $end_pos <end_pos>
> ---replace_column 2 #
> ---replace_regex /\/\* xid=.* \*\//\/* XID *\// /table_id: [0-9]+/table_id: #/
> ---eval show binlog events from $start_pos limit 1,1
>
> --echo
>
> diff -Nrup a/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result
> b/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result
> --- a/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result 2007-08-16 11:26:29 -04:00
> +++ b/mysql-test/suite/rpl/r/rpl_extraCol_innodb.result 2007-08-30 15:07:33 -04:00
> @@ -723,6 +723,7 @@ c1 c2 c3 c4 c5 c6 c7
> 1 1.00 Replication Testing Extra Col b1b1b1b1b1b1b1b1 Kyle 1 CURRENT_TIMESTAMP
> 2 2.00 This Test Should work b1b1b1b1b1b1b1b1 JOE 1 CURRENT_TIMESTAMP
> 3 3.00 If is does not, I will open a bug b1b1b1b1b1b1b1b1 QA 1 CURRENT_TIMESTAMP
> +5 2.00 Replication Testing b1b1b1b1b1b1b1b1 Buda 2 CURRENT_TIMESTAMP
> *** DROP TABLE t15 ***
> DROP TABLE t15;
> *** Create t16 on slave ***
> diff -Nrup a/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result
> b/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result
> --- a/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result 2007-08-20 05:24:21 -04:00
> +++ b/mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result 2007-08-30 15:07:34 -04:00
> @@ -835,108 +835,158 @@ master-bin.000001 # Format_desc 1 # Serv
> master-bin.000001 # Query 1 # CREATE DATABASE test_rpl
> master-bin.000001 # Query 1 # use `test_rpl`; CREATE TABLE t1 (a int auto_increment
> not null, b char(254), PRIMARY KEY(a)) ENGINE=innodb
> master-bin.000001 # Query 1 # use `test_rpl`; CREATE TABLE t2 (a int auto_increment
> not null, b char(254), PRIMARY KEY(a)) ENGINE=innodb
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text
> 1')
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(2, 't1, text
> 2')
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t2 VALUES(1, 't2, text
> 1')
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 WHERE a = 1
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Table_map 1 # table_id: # (test_rpl.t2)
> master-bin.000001 # Delete_rows 1 # table_id: # flags: STMT_END_F
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text
> 1')
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Table_map 1 # table_id: # (test_rpl.t1)
> master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t2 SELECT * FROM t1
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t2 VALUES (1, 't1, text
> 1') ON DUPLICATE KEY UPDATE b = 't2, text 1'
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 WHERE a = 2
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2 WHERE a = 2
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Begin_load_query 1 # ;file_id=#;block_len=#
> master-bin.000001 # Execute_load_query 1 # use `test_rpl`; LOAD DATA INFILE
> '../tmp/rpl_mixed.dat' INTO TABLE t1 FIELDS TERMINATED BY '|' ;file_id=#
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text
> 1')
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(2, 't1, text
> 2')
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(3, 't1, text
> 3')
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; REPLACE INTO t1 VALUES(1, 't1, text
> 11')
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Table_map 1 # table_id: # (test_rpl.t1)
> master-bin.000001 # Update_rows 1 # table_id: # flags: STMT_END_F
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; REPLACE INTO t1 SET a=3, b='t1, text
> 33'
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 WHERE a = 2
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text
> 1')
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 'CCC')
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(2, 'DDD')
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t2 VALUES(1, 'DDD')
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t2 VALUES(2, 'CCC')
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text
> 1')
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t2 VALUES(1, 't2, text
> 1')
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text
> 1')
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; TRUNCATE t1
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 't1, text
> 1')
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t2 VALUES(1, 't2, text
> 1')
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; UPDATE t1 SET b = 't1, text 1 updated'
> WHERE a = 1
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; UPDATE t1, t2 SET t1.b = 'test', t2.b
> = 'test'
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
> master-bin.000001 # Xid 1 # #
> master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> @@ -952,10 +1002,13 @@ master-bin.000001 # Query 1 # use `test_
> master-bin.000001 # Table_map 1 # table_id: # (test_rpl.t1)
> master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 WHERE a = 7
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
> master-bin.000001 # Xid 1 # #
> master-bin.000001 # Query 1 # use `test_rpl`; CREATE USER
> 'user_test_rpl'@'localhost' IDENTIFIED BY PASSWORD
> '*1111111111111111111111111111111111111111'
> @@ -964,6 +1017,7 @@ master-bin.000001 # Query 1 # use `test_
> master-bin.000001 # Query 1 # use `test_rpl`; SET PASSWORD FOR
> 'user_test_rpl'@'localhost'='*0000000000000000000000000000000000000000'
> master-bin.000001 # Query 1 # use `test_rpl`; RENAME USER
> 'user_test_rpl'@'localhost' TO 'user_test_rpl_2'@'localhost'
> master-bin.000001 # Query 1 # use `test_rpl`; DROP USER
> 'user_test_rpl_2'@'localhost'
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(100, 'test')
> master-bin.000001 # Xid 1 # #
> master-bin.000001 # Query 1 # use `test_rpl`; ANALYZE TABLE t1
> @@ -977,50 +1031,65 @@ master-bin.000001 # Query 1 # use `test_
> BEGIN
> UPDATE t1 SET b = UUID() WHERE a = 202;
> END
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(201, 'test
> 201')
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; UPDATE t1 SET b = 'test' WHERE a =
> 201
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(202, 'test
> 202')
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Table_map 1 # table_id: # (test_rpl.t1)
> master-bin.000001 # Update_rows 1 # table_id: # flags: STMT_END_F
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1 WHERE a = 202
> master-bin.000001 # Xid 1 # #
> master-bin.000001 # Query 1 # use `test_rpl`; ALTER PROCEDURE p1 COMMENT 'p1'
> master-bin.000001 # Query 1 # use `test_rpl`; DROP PROCEDURE p1
> master-bin.000001 # Query 1 # use `test_rpl`; DROP PROCEDURE p2
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
> master-bin.000001 # Xid 1 # #
> master-bin.000001 # Query 1 # use `test_rpl`; CREATE DEFINER=`root`@`localhost`
> TRIGGER tr1 BEFORE INSERT ON t1
> FOR EACH ROW BEGIN
> INSERT INTO t2 SET a = NEW.a, b = NEW.b;
> END
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Table_map 1 # table_id: # (test_rpl.t1)
> master-bin.000001 # Table_map 1 # table_id: # (test_rpl.t2)
> master-bin.000001 # Write_rows 1 # table_id: #
> master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
> master-bin.000001 # Xid 1 # #
> master-bin.000001 # Query 1 # use `test_rpl`; DROP TRIGGER tr1
> master-bin.000001 # Query 1 # use `test_rpl`; GRANT EVENT ON *.* TO
> 'root'@'localhost'
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 'test1')
> master-bin.000001 # Xid 1 # #
> master-bin.000001 # Query 1 # use `test_rpl`; CREATE EVENT e1 ON SCHEDULE EVERY '1'
> SECOND COMMENT 'e_second_comment' DO DELETE FROM t1
> master-bin.000001 # Query 1 # use `test_rpl`; ALTER EVENT e1 RENAME TO e2
> master-bin.000001 # Query 1 # use `test_rpl`; DROP EVENT e2
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(1, 'test1')
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; INSERT INTO t1 VALUES(2, 'test2')
> master-bin.000001 # Xid 1 # #
> master-bin.000001 # Query 1 # use `test_rpl`; CREATE ALGORITHM=UNDEFINED
> DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS SELECT * FROM t1 WHERE a = 1
> @@ -1028,8 +1097,10 @@ master-bin.000001 # Query 1 # use `test_
> master-bin.000001 # Query 1 # use `test_rpl`; ALTER ALGORITHM=UNDEFINED
> DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS SELECT * FROM t1 WHERE a = 2
> master-bin.000001 # Query 1 # use `test_rpl`; DROP VIEW v1
> master-bin.000001 # Query 1 # use `test_rpl`; DROP VIEW v2
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t1
> master-bin.000001 # Xid 1 # #
> +master-bin.000001 # Query 1 # use `test_rpl`; BEGIN
> master-bin.000001 # Query 1 # use `test_rpl`; DELETE FROM t2
> master-bin.000001 # Xid 1 # #
> drop database test_rpl;
> diff -Nrup a/mysql-test/suite/rpl/r/rpl_row_create_table.result
> b/mysql-test/suite/rpl/r/rpl_row_create_table.result
> --- a/mysql-test/suite/rpl/r/rpl_row_create_table.result 2007-08-02 16:15:03 -04:00
> +++ b/mysql-test/suite/rpl/r/rpl_row_create_table.result 2007-08-30 15:07:34 -04:00
> @@ -398,14 +398,15 @@ SELECT * FROM t2 ORDER BY a;
> a
> SHOW BINLOG EVENTS FROM 637;
> Log_name Pos Event_type Server_id End_log_pos Info
> -# 637 Query # 717 use `test`; TRUNCATE TABLE t2
> -# 717 Xid # 744 COMMIT /* XID */
> -# 744 Query # 812 use `test`; BEGIN
> -# 812 Table_map # 853 table_id: # (test.t2)
> -# 853 Write_rows # 897 table_id: # flags: STMT_END_F
> -# 897 Table_map # 938 table_id: # (test.t2)
> -# 938 Write_rows # 977 table_id: # flags: STMT_END_F
> -# 977 Query # 1048 use `test`; ROLLBACK
> +# 637 Query # 705 use `test`; BEGIN
> +# 705 Query # 785 use `test`; TRUNCATE TABLE t2
> +# 785 Xid # 812 COMMIT /* XID */
> +# 812 Query # 880 use `test`; BEGIN
> +# 880 Table_map # 921 table_id: # (test.t2)
> +# 921 Write_rows # 965 table_id: # flags: STMT_END_F
> +# 965 Table_map # 1006 table_id: # (test.t2)
> +# 1006 Write_rows # 1045 table_id: # flags: STMT_END_F
> +# 1045 Query # 1116 use `test`; ROLLBACK
> SELECT * FROM t2 ORDER BY a;
> a
> DROP TABLE t1,t2;
> diff -Nrup a/mysql-test/suite/rpl/r/rpl_row_log_innodb.result
> b/mysql-test/suite/rpl/r/rpl_row_log_innodb.result
> --- a/mysql-test/suite/rpl/r/rpl_row_log_innodb.result 2007-07-29 18:10:17 -04:00
> +++ b/mysql-test/suite/rpl/r/rpl_row_log_innodb.result 2007-08-30 15:07:35 -04:00
> @@ -20,11 +20,13 @@ show binlog events;
> Log_name Pos Event_type Server_id End_log_pos Info
> master-bin.000001 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4
> master-bin.000001 # Query 1 # use `test`; create table t1(n int not null
> auto_increment primary key)ENGINE=InnoDB
> +master-bin.000001 # Query 1 # use `test`; BEGIN
> master-bin.000001 # Table_map 1 # table_id: # (test.t1)
> master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
> master-bin.000001 # Xid 1 # COMMIT /* XID */
> master-bin.000001 # Query 1 # use `test`; drop table t1
> master-bin.000001 # Query 1 # use `test`; create table t1 (word char(20) not
> null)ENGINE=InnoDB
> +master-bin.000001 # Query 1 # use `test`; BEGIN
> master-bin.000001 # Table_map 1 # table_id: # (test.t1)
> master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
> master-bin.000001 # Xid 1 # COMMIT /* XID */
> @@ -34,10 +36,10 @@ master-bin.000001 # Query 1 # use `test`
> show binlog events from 106 limit 2;
> Log_name Pos Event_type Server_id End_log_pos Info
> master-bin.000001 # Query 1 # use `test`; create table t1(n int not null
> auto_increment primary key)ENGINE=InnoDB
> -master-bin.000001 # Table_map 1 # table_id: # (test.t1)
> +master-bin.000001 # Query 1 # use `test`; BEGIN
> show binlog events from 106 limit 2,1;
> Log_name Pos Event_type Server_id End_log_pos Info
> -master-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
> +master-bin.000001 # Table_map 1 # table_id: # (test.t1)
> flush logs;
> create table t3 (a int)ENGINE=InnoDB;
> select * from t1 order by 1 asc;
> @@ -194,11 +196,13 @@ insert into t2 values (1);
> show binlog events from <binlog_start>;
> Log_name Pos Event_type Server_id End_log_pos Info
> master-bin.000001 # Query # # use `test`; create table t1(n int not null
> auto_increment primary key)ENGINE=InnoDB
> +master-bin.000001 # Query # # use `test`; BEGIN
> 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 # # use `test`; drop table t1
> master-bin.000001 # Query # # use `test`; create table t1 (word char(20) not
> null)ENGINE=InnoDB
> +master-bin.000001 # Query # # use `test`; BEGIN
> 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 */
> @@ -208,27 +212,30 @@ Log_name Pos Event_type Server_id End_lo
> master-bin.000002 # Format_desc 1 # Server ver: VERSION, Binlog ver: 4
> master-bin.000002 # Query 1 # use `test`; create table t3 (a int)ENGINE=InnoDB
> master-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=InnoDB
> +master-bin.000002 # Query 1 # use `test`; BEGIN
> master-bin.000002 # Table_map 1 # table_id: # (test.t2)
> master-bin.000002 # Write_rows 1 # table_id: # flags: STMT_END_F
> master-bin.000002 # Xid 1 # COMMIT /* XID */
> show binary logs;
> Log_name File_size
> -master-bin.000001 1320
> -master-bin.000002 406
> +master-bin.000001 1456
> +master-bin.000002 474
> start slave;
> show binary logs;
> Log_name File_size
> -slave-bin.000001 1418
> -slave-bin.000002 307
> +slave-bin.000001 1536
> +slave-bin.000002 366
> show binlog events in 'slave-bin.000001' from 4;
> Log_name Pos Event_type Server_id End_log_pos Info
> slave-bin.000001 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4
> slave-bin.000001 # Query 1 # use `test`; create table t1(n int not null
> auto_increment primary key)ENGINE=InnoDB
> +slave-bin.000001 # Query 1 # BEGIN
> slave-bin.000001 # Table_map 1 # table_id: # (test.t1)
> slave-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
> slave-bin.000001 # Xid 1 # COMMIT /* XID */
> slave-bin.000001 # Query 1 # use `test`; drop table t1
> slave-bin.000001 # Query 1 # use `test`; create table t1 (word char(20) not
> null)ENGINE=InnoDB
> +slave-bin.000001 # Query 1 # BEGIN
> slave-bin.000001 # Table_map 1 # table_id: # (test.t1)
> slave-bin.000001 # Write_rows 1 # table_id: # flags: STMT_END_F
> slave-bin.000001 # Xid 1 # COMMIT /* XID */
> @@ -238,6 +245,7 @@ show binlog events in 'slave-bin.000002'
> Log_name Pos Event_type Server_id End_log_pos Info
> slave-bin.000002 # Format_desc 2 # Server ver: VERSION, Binlog ver: 4
> slave-bin.000002 # Query 1 # use `test`; create table t2 (n int)ENGINE=InnoDB
> +slave-bin.000002 # Query 1 # BEGIN
> slave-bin.000002 # Table_map 1 # table_id: # (test.t2)
> slave-bin.000002 # Write_rows 1 # table_id: # flags: STMT_END_F
> slave-bin.000002 # Xid 1 # COMMIT /* XID */
> @@ -248,7 +256,7 @@ Master_User root
> Master_Port MASTER_PORT
> Connect_Retry 1
> Master_Log_File master-bin.000002
> -Read_Master_Log_Pos 406
> +Read_Master_Log_Pos 474
> Relay_Log_File #
> Relay_Log_Pos #
> Relay_Master_Log_File master-bin.000002
> @@ -263,7 +271,7 @@ Replicate_Wild_Ignore_Table
> Last_Errno 0
> Last_Error
> Skip_Counter 0
> -Exec_Master_Log_Pos 406
> +Exec_Master_Log_Pos 474
> Relay_Log_Space #
> Until_Condition None
> Until_Log_File
> diff -Nrup a/mysql-test/suite/rpl/r/rpl_truncate_3innodb.result
> b/mysql-test/suite/rpl/r/rpl_truncate_3innodb.result
> --- a/mysql-test/suite/rpl/r/rpl_truncate_3innodb.result 2007-06-27 08:27:24 -04:00
> +++ b/mysql-test/suite/rpl/r/rpl_truncate_3innodb.result 2007-08-30 15:07:35 -04:00
> @@ -32,8 +32,10 @@ DROP TABLE t1;
> show binlog events from <binlog_start>;
> Log_name Pos Event_type Server_id End_log_pos Info
> master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT, b LONG)
> ENGINE=InnoDB
> +master-bin.000001 # Query # # use `test`; BEGIN
> master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (1,1), (2,2)
> master-bin.000001 # Xid # # COMMIT /* XID */
> +master-bin.000001 # Query # # use `test`; BEGIN
> master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
> master-bin.000001 # Xid # # COMMIT /* XID */
> master-bin.000001 # Query # # use `test`; DROP TABLE t1
> @@ -65,8 +67,10 @@ DROP TABLE t1;
> show binlog events from <binlog_start>;
> Log_name Pos Event_type Server_id End_log_pos Info
> master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT, b LONG)
> ENGINE=InnoDB
> +master-bin.000001 # Query # # use `test`; BEGIN
> master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (1,1), (2,2)
> master-bin.000001 # Xid # # COMMIT /* XID */
> +master-bin.000001 # Query # # use `test`; BEGIN
> master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
> master-bin.000001 # Xid # # COMMIT /* XID */
> master-bin.000001 # Query # # use `test`; DROP TABLE t1
> @@ -98,9 +102,11 @@ DROP TABLE t1;
> show binlog events from <binlog_start>;
> Log_name Pos Event_type Server_id End_log_pos Info
> master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT, b LONG)
> ENGINE=InnoDB
> +master-bin.000001 # Query # # use `test`; BEGIN
> 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 # # use `test`; BEGIN
> master-bin.000001 # Query # # use `test`; TRUNCATE TABLE t1
> master-bin.000001 # Xid # # COMMIT /* XID */
> master-bin.000001 # Query # # use `test`; DROP TABLE t1
> @@ -132,8 +138,10 @@ DROP TABLE t1;
> show binlog events from <binlog_start>;
> Log_name Pos Event_type Server_id End_log_pos Info
> master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT, b LONG)
> ENGINE=InnoDB
> +master-bin.000001 # Query # # use `test`; BEGIN
> master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (1,1), (2,2)
> master-bin.000001 # Xid # # COMMIT /* XID */
> +master-bin.000001 # Query # # use `test`; BEGIN
> master-bin.000001 # Query # # use `test`; DELETE FROM t1
> master-bin.000001 # Xid # # COMMIT /* XID */
> master-bin.000001 # Query # # use `test`; DROP TABLE t1
> @@ -165,8 +173,10 @@ DROP TABLE t1;
> show binlog events from <binlog_start>;
> Log_name Pos Event_type Server_id End_log_pos Info
> master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT, b LONG)
> ENGINE=InnoDB
> +master-bin.000001 # Query # # use `test`; BEGIN
> master-bin.000001 # Query # # use `test`; INSERT INTO t1 VALUES (1,1), (2,2)
> master-bin.000001 # Xid # # COMMIT /* XID */
> +master-bin.000001 # Query # # use `test`; BEGIN
> master-bin.000001 # Query # # use `test`; DELETE FROM t1
> master-bin.000001 # Xid # # COMMIT /* XID */
> master-bin.000001 # Query # # use `test`; DROP TABLE t1
> @@ -199,9 +209,11 @@ DROP TABLE t1;
> show binlog events from <binlog_start>;
> Log_name Pos Event_type Server_id End_log_pos Info
> master-bin.000001 # Query # # use `test`; CREATE TABLE t1 (a INT, b LONG)
> ENGINE=InnoDB
> +master-bin.000001 # Query # # use `test`; BEGIN
> 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 # # use `test`; BEGIN
> master-bin.000001 # Table_map # # table_id: # (test.t1)
> master-bin.000001 # Delete_rows # # table_id: # flags: STMT_END_F
> master-bin.000001 # Xid # # COMMIT /* XID */
> diff -Nrup a/mysql-test/suite/rpl_ndb/r/rpl_ndb_mix_innodb.result
> b/mysql-test/suite/rpl_ndb/r/rpl_ndb_mix_innodb.result
> --- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_mix_innodb.result 2007-07-04 17:30:47
> -04:00
> +++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_mix_innodb.result 2007-08-30 15:07:35
> -04:00
> @@ -20,13 +20,6 @@ from mysql.ndb_apply_status;
> @log_name:=log_name @start_pos:=start_pos @end_pos:=end_pos
> <log_name> <start_pos> <end_pos>
>
> -show binlog events from <start_pos> limit 1;
> -Log_name Pos Event_type Server_id End_log_pos Info
> -master-bin.000001 <start_pos> Query 1 # use `test`; insert into t1 values
> (1,2)
> -
> -show binlog events from <start_pos> limit 1,1;
> -Log_name Pos Event_type Server_id End_log_pos Info
> -master-bin.000001 # Xid 1 445 COMMIT /* XID */
>
> begin;
> insert into t1 values (2,3);
> diff -Nrup a/mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result
> b/mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result
> --- a/mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result 2007-07-04 16:06:25
> -04:00
> +++ b/mysql-test/suite/rpl_ndb/r/rpl_ndb_stm_innodb.result 2007-08-30 15:07:36
> -04:00
> @@ -20,13 +20,6 @@ from mysql.ndb_apply_status;
> @log_name:=log_name @start_pos:=start_pos @end_pos:=end_pos
> <log_name> <start_pos> <end_pos>
>
> -show binlog events from <start_pos> limit 1;
> -Log_name Pos Event_type Server_id End_log_pos Info
> -master-bin.000001 <start_pos> Query 1 # use `test`; insert into t1 values
> (1,2)
> -
> -show binlog events from <start_pos> limit 1,1;
> -Log_name Pos Event_type Server_id End_log_pos Info
> -master-bin.000001 # Xid 1 445 COMMIT /* XID */
>
> begin;
> insert into t1 values (2,3);
> diff -Nrup a/sql/log.cc b/sql/log.cc
> --- a/sql/log.cc 2007-08-27 07:43:57 -04:00
> +++ b/sql/log.cc 2007-08-30 15:07:36 -04:00
> @@ -3987,8 +3987,12 @@ bool MYSQL_BIN_LOG::write(THD *thd, IO_C
> if ((write_error= write_cache(cache, false, false)))
> goto err;
>
> + DBUG_EXECUTE_IF("half_binlogged_transaction", goto DBUG_skip_commit;);
> if (commit_event && commit_event->write(&log_file))
> goto err;
> +#ifndef DBUG_OFF
> +DBUG_skip_commit:
> +#endif
> if (flush_and_sync())
> goto err;
> DBUG_EXECUTE_IF("half_binlogged_transaction", abort(););