List:Commits« Previous MessageNext Message »
From:Andrei Elkin Date:August 31 2007 12:09pm
Subject:Re: bk commit into 5.1 tree (cbell:1.2569) BUG#26395
View as plain text  
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(););

Thread
bk commit into 5.1 tree (cbell:1.2569) BUG#26395cbell30 Aug
  • Re: bk commit into 5.1 tree (cbell:1.2569) BUG#26395Andrei Elkin31 Aug