List:Commits« Previous MessageNext Message »
From:Mats Kindahl Date:June 21 2007 11:08pm
Subject:bk commit into 5.1 tree (mats:1.2532) BUG#23051
View as plain text  
Below is the list of changes that have just been committed into a local
5.1 repository of mats. When mats 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-06-22 01:08:26+02:00, mats@stripped +3 -0
  BUG#23051 (READ COMMITTED breaks mixed and statement-based replication):
  Minor fixes to get proper detection of transaction isolation level when
  inside external_lock().

  mysql-test/t/disabled.def@stripped, 2007-06-22 01:08:19+02:00, mats@stripped +0 -1
    Enabling innodb.test again.

  mysql-test/t/innodb.test@stripped, 2007-06-22 01:08:20+02:00, mats@stripped +6 -2
    Fixing some error codes. Test currently requires MIXED or ROW mode since
    READ-COMMITTED and READ-UNCOMMITTED are not safe for STATEMENT mode, i.e.,
    when the binary log is enabled.

  storage/innobase/handler/ha_innodb.cc@stripped, 2007-06-22 01:08:20+02:00, mats@stripped +4 -3
    Using tx_isolation since trx->isolation_level is not defined when
    inside external_lock().

# This is a BitKeeper patch.  What follows are the unified diffs for the
# set of deltas contained in the patch.  The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User:	mats
# Host:	kindahl-laptop.dnsalias.net
# Root:	/home/bk/b23051-mysql-5.1-rpl

--- 1.264/mysql-test/t/disabled.def	2007-06-22 01:08:33 +02:00
+++ 1.265/mysql-test/t/disabled.def	2007-06-22 01:08:33 +02:00
@@ -19,7 +19,6 @@
 im_life_cycle            : BUG#27851 Instance manager dies on ASSERT in ~Thread_registry() or from not being able to close a mysqld instance.
 im_instance_conf         : BUG#28743 Instance manager generates warnings in test suite
 im_utils                 : BUG#28743 Instance manager generates warnings in test suite
-innodb                   : Disabling test case awaiting reply from Innobase
 concurrent_innodb        : BUG#21579 2006-08-11 mleich innodb_concurrent random failures with varying differences
 ndb_autodiscover         : BUG#18952 2006-02-16 jmiller Needs to be fixed w.r.t binlog
 ndb_autodiscover2        : BUG#18952 2006-02-16 jmiller Needs to be fixed w.r.t binlog

--- 1.166/mysql-test/t/innodb.test	2007-06-22 01:08:33 +02:00
+++ 1.167/mysql-test/t/innodb.test	2007-06-22 01:08:33 +02:00
@@ -15,6 +15,10 @@
 -- source include/have_innodb.inc
 -- source include/have_log_bin.inc
 
+# Disabling it temporarily for statement-based logging since some
+# tests are not safe while binlog is on.
+-- source include/have_binlog_format_mixed_or_row.inc
+
 #
 # Small basic test with ignore
 #
@@ -775,7 +779,7 @@
 insert into t1 values (1,1),(2,2);
 insert into t2 values (1,1),(4,4);
 reset master;
---error ER_DUP_ENTRY_WITH_KEY_NAME
+--error ER_DUP_ENTRY
 UPDATE t2,t1 SET t2.a=t1.a+2;
 # check
 select * from t2 /* must be (3,1), (4,4) */;
@@ -787,7 +791,7 @@
 insert into t1 values (1,2),(3,4),(4,4);
 insert into t2 values (1,2),(3,4),(4,4);
 reset master;
---error ER_DUP_ENTRY_WITH_KEY_NAME
+--error ER_DUP_ENTRY
 UPDATE t2,t1  SET t2.a=t2.b where t2.a=t1.a;
 show master status /* there must be no UPDATE query event */;
 

--- 1.342/storage/innobase/handler/ha_innodb.cc	2007-06-22 01:08:33 +02:00
+++ 1.343/storage/innobase/handler/ha_innodb.cc	2007-06-22 01:08:33 +02:00
@@ -6267,16 +6267,17 @@
         if (lock_type == F_WRLCK)
         {
                 ulong const binlog_format= thd->variables.binlog_format;
-                if (trx->isolation_level <= TRX_ISO_READ_COMMITTED &&
+                ulong const tx_isolation = thd_tx_isolation(current_thd);
+                if (tx_isolation <= ISO_READ_COMMITTED &&
                     binlog_format == BINLOG_FORMAT_STMT)
                 {
                         char buf[256];
                         bool const read_uncommitted =
                           trx->isolation_level == TRX_ISO_READ_UNCOMMITTED;
                         my_snprintf(buf, sizeof(buf),
-                                    "Transaction level 'READ %sCOMMITTED' in"
+                                    "Transaction level '%s' in"
                                     " InnoDB is not safe for binlog mode '%s'",
-                                    read_uncommitted ? "UN" : "",
+                                    tx_isolation_names[tx_isolation],
                                     binlog_format_names[binlog_format]);
                         my_error(ER_BINLOG_LOGGING_IMPOSSIBLE, MYF(0), buf);
                         return HA_ERR_LOGGING_IMPOSSIBLE;
Thread
bk commit into 5.1 tree (mats:1.2532) BUG#23051Mats Kindahl22 Jun