List:Commits« Previous MessageNext Message »
From:Jon Olav Hauglid Date:May 12 2011 3:02pm
Subject:bzr commit into mysql-trunk-mtr branch (jon.hauglid:3078)
View as plain text  
#At file:///export/home/x/mysql-trunk-test/ based on revid:bjorn.munch@stripped

 3078 Jon Olav Hauglid	2011-05-12 [merge]
      Merge from mysql-5.5 to mysql-trunk
      Text conflict in sql/log.cc

    modified:
      mysql-test/suite/binlog/r/binlog_innodb_row.result
      mysql-test/suite/binlog/t/binlog_innodb_row.test
      sql/binlog.cc
=== modified file 'mysql-test/suite/binlog/r/binlog_innodb_row.result'
--- a/mysql-test/suite/binlog/r/binlog_innodb_row.result	2010-08-20 02:59:58 +0000
+++ b/mysql-test/suite/binlog/r/binlog_innodb_row.result	2011-05-12 12:56:00 +0000
@@ -59,3 +59,20 @@ show binlog events from <binlog_start>;
 Log_name	Pos	Event_type	Server_id	End_log_pos	Info
 master-bin.000001	#	Query	#	#	use `test`; DROP TEMPORARY TABLE IF EXISTS `t1` /* generated by server */
 ###############################################
+#
+# Bug#12346411 SQL/LOG.CC:6509: ASSERTION `PREPARED_XIDS > 0' FAILED
+#
+DROP TABLE IF EXISTS t1, t2;
+CREATE TABLE t1(a INT PRIMARY KEY) engine=innodb;
+CREATE TABLE t2(a INT) engine=myisam;
+INSERT INTO t1 VALUES (1);
+START TRANSACTION;
+INSERT INTO t2 VALUES (1);
+INSERT IGNORE INTO t1 VALUES (1);
+COMMIT;
+INSERT INTO t1 VALUES (2);
+START TRANSACTION;
+INSERT INTO t2 VALUES (2);
+UPDATE IGNORE t1 SET a=1 WHERE a=2;
+COMMIT;
+DROP TABLE t1, t2;

=== modified file 'mysql-test/suite/binlog/t/binlog_innodb_row.test'
--- a/mysql-test/suite/binlog/t/binlog_innodb_row.test	2010-03-09 23:41:21 +0000
+++ b/mysql-test/suite/binlog/t/binlog_innodb_row.test	2011-05-12 12:56:00 +0000
@@ -77,3 +77,29 @@ DROP TEMPORARY TABLE t1;
 -- echo ###############################################
 -- source include/show_binlog_events.inc
 -- echo ###############################################
+
+
+--echo #
+--echo # Bug#12346411 SQL/LOG.CC:6509: ASSERTION `PREPARED_XIDS > 0' FAILED
+--echo #
+
+--disable_warnings
+DROP TABLE IF EXISTS t1, t2;
+--enable_warnings
+
+CREATE TABLE t1(a INT PRIMARY KEY) engine=innodb;
+CREATE TABLE t2(a INT) engine=myisam;
+
+INSERT INTO t1 VALUES (1);
+START TRANSACTION;
+INSERT INTO t2 VALUES (1);
+INSERT IGNORE INTO t1 VALUES (1);
+COMMIT;
+
+INSERT INTO t1 VALUES (2);
+START TRANSACTION;
+INSERT INTO t2 VALUES (2);
+UPDATE IGNORE t1 SET a=1 WHERE a=2;
+COMMIT;
+
+DROP TABLE t1, t2;

=== modified file 'sql/binlog.cc'
--- a/sql/binlog.cc	2011-04-04 08:47:25 +0000
+++ b/sql/binlog.cc	2011-05-12 15:02:29 +0000
@@ -4573,8 +4573,11 @@ int MYSQL_BIN_LOG::unlog(ulong cookie, m
 {
   DBUG_ENTER("MYSQL_BIN_LOG::unlog");
   mysql_mutex_lock(&LOCK_prep_xids);
-  DBUG_ASSERT(prepared_xids > 0);
-  if (--prepared_xids == 0) {
+  // prepared_xids can be 0 if the transaction had ignorable errors.
+  DBUG_ASSERT(prepared_xids >= 0);
+  if (prepared_xids > 0)
+    prepared_xids--;
+  if (prepared_xids == 0) {
     DBUG_PRINT("info", ("prepared_xids=%lu", prepared_xids));
     mysql_cond_signal(&COND_prep_xids);
   }

No bundle (reason: revision is a merge (you can force generation of a bundle with env var BZR_FORCE_BUNDLE=1)).
Thread
bzr commit into mysql-trunk-mtr branch (jon.hauglid:3078) Jon Olav Hauglid12 May