List:Commits« Previous MessageNext Message »
From:Mats Kindahl Date:June 22 2007 1:14am
Subject:bk commit into 5.1 tree (mats:1.2533)
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:14:14+02:00, mats@stripped +11 -0
  Cset exclude: mats@stripped|ChangeSet|20070621230826|48585
  Cset exclude: mats@stripped|ChangeSet|20070621120246|34871
  Cset exclude: mats@stripped|ChangeSet|20070614113331|56683
  Cset exclude: mats@stripped|ChangeSet|20070612194700|55030

  include/my_base.h@stripped, 2007-06-22 01:14:08+02:00, mats@stripped +0
-0
    Exclude

  mysql-test/r/binlog_innodb.result@stripped, 2007-06-22 01:14:09+02:00,
mats@stripped +0 -0
    Exclude

  mysql-test/r/binlog_tx_isolation.result@stripped, 2007-06-22 01:14:09+02:00,
mats@stripped +0 -0
    Exclude

  mysql-test/t/binlog_innodb.test@stripped, 2007-06-22 01:14:09+02:00,
mats@stripped +0 -0
    Exclude

  mysql-test/t/disabled.def@stripped, 2007-06-22 01:14:09+02:00,
mats@stripped +0 -0
    Exclude

  mysql-test/t/innodb.test@stripped, 2007-06-22 01:14:09+02:00,
mats@stripped +0 -0
    Exclude

  sql/handler.h@stripped, 2007-06-22 01:14:08+02:00, mats@stripped +0 -0
    Exclude

  sql/share/errmsg.txt@stripped, 2007-06-22 01:14:09+02:00, mats@stripped
+0 -0
    Exclude

  sql/sql_base.cc@stripped, 2007-06-22 01:14:08+02:00, mats@stripped +0 -0
    Exclude

  storage/innobase/handler/ha_innodb.cc@stripped, 2007-06-22 01:14:09+02:00,
mats@stripped +0 -0
    Exclude

  storage/innobase/handler/ha_innodb.h@stripped, 2007-06-22 01:14:09+02:00,
mats@stripped +0 -0
    Exclude

# 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.102/include/my_base.h	2007-06-22 01:14:22 +02:00
+++ 1.103/include/my_base.h	2007-06-22 01:14:22 +02:00
@@ -396,9 +396,7 @@
 #define HA_ERR_AUTOINC_READ_FAILED 166   /* Failed to get next autoinc value */
 #define HA_ERR_AUTOINC_ERANGE    167     /* Failed to set row autoinc value */
 #define HA_ERR_GENERIC           168     /* Generic error */
-#define HA_ERR_LOGGING_IMPOSSIBLE 169 /* It is not possible to log this
-                                         statement */
-#define HA_ERR_LAST              169 /*Copy last error nr.*/
+#define HA_ERR_LAST              168 /*Copy last error nr.*/
 /* Add error numbers before HA_ERR_LAST and change it accordingly. */
 #define HA_ERR_ERRORS            (HA_ERR_LAST - HA_ERR_FIRST + 1)
 

--- 1.264/sql/handler.h	2007-06-22 01:14:22 +02:00
+++ 1.265/sql/handler.h	2007-06-22 01:14:22 +02:00
@@ -1727,8 +1727,6 @@
 	/* Some extern variables used with handlers */
 
 extern const char *ha_row_type[];
-extern const char *tx_isolation_names[];
-extern const char *binlog_format_names[];
 extern TYPELIB tx_isolation_typelib;
 extern TYPELIB myisam_stats_method_typelib;
 extern ulong total_ha, total_ha_2pc;

--- 1.410/sql/sql_base.cc	2007-06-22 01:14:22 +02:00
+++ 1.411/sql/sql_base.cc	2007-06-22 01:14:22 +02:00
@@ -4020,24 +4020,18 @@
     int error= 0;
     if (binlog_flags == 0)
     {
-      my_error((error= ER_BINLOG_LOGGING_IMPOSSIBLE), MYF(0),
-               "Statement cannot be logged to the binary log in"
-               " row-based nor statement-based format");
+      error= ER_BINLOG_ENGINES_INCOMPATIBLE;
     }
     else if (thd->variables.binlog_format == BINLOG_FORMAT_STMT &&
              (binlog_flags & HA_BINLOG_STMT_CAPABLE) == 0)
     {
-      my_error((error= ER_BINLOG_LOGGING_IMPOSSIBLE), MYF(0),
-                "Statement-based format required for this statement,"
-                " but not allowed by this combination of engines");
+      error= ER_BINLOG_STMT_FORMAT_FORBIDDEN;
     }
     else if ((thd->variables.binlog_format == BINLOG_FORMAT_ROW ||
               thd->lex->is_stmt_unsafe()) &&
              (binlog_flags & HA_BINLOG_ROW_CAPABLE) == 0)
     {
-      my_error((error= ER_BINLOG_LOGGING_IMPOSSIBLE), MYF(0),
-                "Row-based format required for this statement,"
-                " but not allowed by this combination of engines");
+      error= ER_BINLOG_ROW_FORMAT_FORBIDDEN;
     }
 
     DBUG_PRINT("info", ("error: %d", error));
@@ -4045,6 +4039,7 @@
     if (error)
     {
       ha_rollback_stmt(thd);
+      my_error(error, MYF(0));
       return -1;
     }
 

--- 1.159/sql/share/errmsg.txt	2007-06-22 01:14:22 +02:00
+++ 1.160/sql/share/errmsg.txt	2007-06-22 01:14:22 +02:00
@@ -6074,5 +6074,9 @@
         eng "Failed to create %s"
 ER_SLAVE_MASTER_COM_FAILURE
         eng "Master command %s failed: %s"
-ER_BINLOG_LOGGING_IMPOSSIBLE
-        eng "Binary logging not possible. Message: %s"
+ER_BINLOG_ENGINES_INCOMPATIBLE
+        eng "It is not possible to log anything with this combination of engines"
+ER_BINLOG_STMT_FORMAT_FORBIDDEN
+        eng "Attempting to log statement in in statement format, but statement format is
not possible with this combination of engines"
+ER_BINLOG_ROW_FORMAT_FORBIDDEN
+        eng "Attempting to log statement in in row format, but row format is not possible
with this combination of engines"

--- 1.265/mysql-test/t/disabled.def	2007-06-22 01:14:22 +02:00
+++ 1.266/mysql-test/t/disabled.def	2007-06-22 01:14:22 +02:00
@@ -19,6 +19,7 @@
 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.2/mysql-test/r/binlog_innodb.result	2007-06-22 01:14:22 +02:00
+++ 1.3/mysql-test/r/binlog_innodb.result	2007-06-22 01:14:22 +02:00
@@ -1,114 +1,2 @@
-SET BINLOG_FORMAT=MIXED;
-RESET MASTER;
-CREATE TABLE t1 (a INT PRIMARY KEY, b INT) ENGINE=INNODB;
-INSERT INTO t1 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6);
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-UPDATE t1 SET b = 2*a WHERE a > 1;
-COMMIT;
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
-UPDATE t1 SET b = a * a WHERE a > 3;
-COMMIT;
-SET BINLOG_FORMAT=STATEMENT;
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
-UPDATE t1 SET b = 1*a WHERE a > 1;
 ERROR HY000: Binary logging not possible. Message: Transaction level 'READ-UNCOMMITTED'
in InnoDB is not safe for binlog mode 'STATEMENT'
-COMMIT;
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
-UPDATE t1 SET b = 2*a WHERE a > 2;
 ERROR HY000: Binary logging not possible. Message: Transaction level 'READ-COMMITTED' in
InnoDB is not safe for binlog mode 'STATEMENT'
-COMMIT;
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-UPDATE t1 SET b = 3*a WHERE a > 3;
-COMMIT;
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
-UPDATE t1 SET b = 4*a WHERE a > 4;
-COMMIT;
-SET BINLOG_FORMAT=MIXED;
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
-UPDATE t1 SET b = 1*a WHERE a > 1;
-COMMIT;
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
-UPDATE t1 SET b = 2*a WHERE a > 2;
-COMMIT;
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-UPDATE t1 SET b = 3*a WHERE a > 3;
-COMMIT;
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
-UPDATE t1 SET b = 4*a WHERE a > 4;
-COMMIT;
-SET BINLOG_FORMAT=ROW;
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
-UPDATE t1 SET b = 1*a WHERE a > 1;
-COMMIT;
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
-UPDATE t1 SET b = 2*a WHERE a > 2;
-COMMIT;
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-UPDATE t1 SET b = 3*a WHERE a > 3;
-COMMIT;
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
-UPDATE t1 SET b = 4*a WHERE a > 4;
-COMMIT;
-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 PRIMARY KEY, b INT)
ENGINE=INNODB
-master-bin.000001	#	Query	#	#	use `test`; INSERT INTO t1 VALUES
(1,1),(2,2),(3,3),(4,4),(5,5),(6,6)
-master-bin.000001	#	Xid	#	#	COMMIT /* XID */
-master-bin.000001	#	Query	#	#	use `test`; BEGIN
-master-bin.000001	#	Query	#	#	use `test`; UPDATE t1 SET b = 2*a WHERE a > 1
-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	#	Update_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`; UPDATE t1 SET b = 3*a WHERE a > 3
-master-bin.000001	#	Xid	#	#	COMMIT /* XID */
-master-bin.000001	#	Query	#	#	use `test`; BEGIN
-master-bin.000001	#	Query	#	#	use `test`; UPDATE t1 SET b = 4*a WHERE a > 4
-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	#	Update_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	#	Update_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`; UPDATE t1 SET b = 3*a WHERE a > 3
-master-bin.000001	#	Xid	#	#	COMMIT /* XID */
-master-bin.000001	#	Query	#	#	use `test`; BEGIN
-master-bin.000001	#	Query	#	#	use `test`; UPDATE t1 SET b = 4*a WHERE a > 4
-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	#	Update_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	#	Update_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	#	Update_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	#	Update_rows	#	#	table_id: # flags: STMT_END_F
-master-bin.000001	#	Xid	#	#	COMMIT /* XID */
-DROP TABLE t1;

--- 1.1/mysql-test/r/binlog_tx_isolation.result	2007-06-22 01:14:22 +02:00
+++ 1.2/mysql-test/r/binlog_tx_isolation.result	2007-06-22 01:14:22 +02:00
@@ -1,48 +0,0 @@
-CREATE TABLE t1 (a INT PRIMARY KEY, b INT) ENGINE=INNODB;
-INSERT INTO t1 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6);
-SET BINLOG_FORMAT=STATEMENT;
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
-ERROR HY000: Transaction isolation level 'READ-COMMITTED' is not safe for 'STATEMENT'
binlog mode
-UPDATE t1 SET b = a*a WHERE a > 1;
-COMMIT;
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
-UPDATE t1 SET b = a*a WHERE a > 1;
-COMMIT;
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
-UPDATE t1 SET b = a*a WHERE a > 1;
-COMMIT;
-SET BINLOG_FORMAT=MIXED;
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
-ERROR HY000: Transaction isolation level 'READ-COMMITTED' is not safe for 'MIXED' binlog
mode
-UPDATE t1 SET b = a*a*a WHERE a > 2;
-COMMIT;
-SET BINLOG_FORMAT=ROW;
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
-UPDATE t1 SET b = a*a*a*a WHERE a > 3;
-COMMIT;
-SELECT @@session.tx_isolation, @@session.binlog_format;
-@@session.tx_isolation	READ-COMMITTED
-@@session.binlog_format	ROW
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
-SET BINLOG_FORMAT=MIXED;
-ERROR HY000: Transaction isolation level 'READ-COMMITTED' prevents leaving 'ROW' binlog
mode
-UPDATE t1 SET b = a*a*a*a WHERE a > 3;
-COMMIT;
-SELECT @@session.tx_isolation, @@session.binlog_format;
-@@session.tx_isolation	READ-COMMITTED
-@@session.binlog_format	ROW
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
-SET BINLOG_FORMAT=STATEMENT;
-ERROR HY000: Transaction isolation level 'READ-COMMITTED' prevents leaving 'ROW' binlog
mode
-UPDATE t1 SET b = a*a*a*a WHERE a > 3;
-COMMIT;
-SELECT @@session.tx_isolation, @@session.binlog_format;
-@@session.tx_isolation	READ-COMMITTED
-@@session.binlog_format	ROW

--- 1.2/mysql-test/t/binlog_innodb.test	2007-06-22 01:14:22 +02:00
+++ 1.3/mysql-test/t/binlog_innodb.test	2007-06-22 01:14:22 +02:00
@@ -1,96 +1 @@
-source include/have_innodb.inc;
 source include/have_log_bin.inc;
-
-SET BINLOG_FORMAT=MIXED;
-
-RESET MASTER;
-
-CREATE TABLE t1 (a INT PRIMARY KEY, b INT) ENGINE=INNODB;
-INSERT INTO t1 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6);
-
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-# Should be logged as statement
-UPDATE t1 SET b = 2*a WHERE a > 1;
-COMMIT;
-
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
-# Should be logged as rows
-UPDATE t1 SET b = a * a WHERE a > 3;
-COMMIT;
-
-# Check that errors are generated when trying to use READ COMMITTED
-# transaction isolation level in STATEMENT binlog mode.
-
-SET BINLOG_FORMAT=STATEMENT;
-
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
-error ER_BINLOG_LOGGING_IMPOSSIBLE;
-UPDATE t1 SET b = 1*a WHERE a > 1;
-COMMIT;
-
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
-error ER_BINLOG_LOGGING_IMPOSSIBLE;
-UPDATE t1 SET b = 2*a WHERE a > 2;
-COMMIT;
-
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-UPDATE t1 SET b = 3*a WHERE a > 3;
-COMMIT;
-
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
-UPDATE t1 SET b = 4*a WHERE a > 4;
-COMMIT;
-
-SET BINLOG_FORMAT=MIXED;
-
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
-UPDATE t1 SET b = 1*a WHERE a > 1;
-COMMIT;
-
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
-UPDATE t1 SET b = 2*a WHERE a > 2;
-COMMIT;
-
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-UPDATE t1 SET b = 3*a WHERE a > 3;
-COMMIT;
-
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
-UPDATE t1 SET b = 4*a WHERE a > 4;
-COMMIT;
-
-SET BINLOG_FORMAT=ROW;
-
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
-UPDATE t1 SET b = 1*a WHERE a > 1;
-COMMIT;
-
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
-UPDATE t1 SET b = 2*a WHERE a > 2;
-COMMIT;
-
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-UPDATE t1 SET b = 3*a WHERE a > 3;
-COMMIT;
-
-BEGIN;
-SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE;
-UPDATE t1 SET b = 4*a WHERE a > 4;
-COMMIT;
-
-source include/show_binlog_events.inc;
-
-DROP TABLE t1;

--- 1.167/mysql-test/t/innodb.test	2007-06-22 01:14:22 +02:00
+++ 1.168/mysql-test/t/innodb.test	2007-06-22 01:14:22 +02:00
@@ -15,10 +15,6 @@
 -- 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
 #
@@ -779,7 +775,7 @@
 insert into t1 values (1,1),(2,2);
 insert into t2 values (1,1),(4,4);
 reset master;
---error ER_DUP_ENTRY
+--error ER_DUP_ENTRY_WITH_KEY_NAME
 UPDATE t2,t1 SET t2.a=t1.a+2;
 # check
 select * from t2 /* must be (3,1), (4,4) */;
@@ -791,7 +787,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
+--error ER_DUP_ENTRY_WITH_KEY_NAME
 UPDATE t2,t1  SET t2.a=t2.b where t2.a=t1.a;
 show master status /* there must be no UPDATE query event */;
 

--- 1.343/storage/innobase/handler/ha_innodb.cc	2007-06-22 01:14:22 +02:00
+++ 1.344/storage/innobase/handler/ha_innodb.cc	2007-06-22 01:14:22 +02:00
@@ -958,7 +958,6 @@
 		  HA_CAN_SQL_HANDLER |
 		  HA_PRIMARY_KEY_REQUIRED_FOR_POSITION |
 		  HA_PRIMARY_KEY_IN_READ_INDEX |
-                  HA_BINLOG_ROW_CAPABLE |
 		  HA_CAN_GEOMETRY | HA_PARTIAL_COLUMN_READ |
 		  HA_TABLE_SCAN_ON_INDEX),
   start_of_scan(0),
@@ -2269,21 +2268,6 @@
 	return(ROW_TYPE_NOT_USED);
 }
 
-
-
-/********************************************************************
-Get the table flags to use for the statement. */
-handler::Table_flags
-ha_innobase::table_flags() const
-{
-       /* Need to use tx_isolation here since table flags is (also)
-          called before prebuilt is inited. */
-        ulong const tx_isolation = thd_tx_isolation(current_thd);
-        if (tx_isolation <= ISO_READ_COMMITTED)
-                return int_table_flags;
-        return int_table_flags | HA_BINLOG_STMT_CAPABLE;
-}
-
 /********************************************************************
 Gives the file extension of an InnoDB single-table tablespace. */
 static const char* ha_innobase_exts[] = {
@@ -6259,31 +6243,6 @@
 	DBUG_PRINT("enter",("lock_type: %d", lock_type));
 
 	update_thd(thd);
-
-        /* Statement based binlogging does not work in isolation level
-           READ UNCOMMITTED and READ COMMITTED since the necessary
-           locks cannot be taken. In this case, we print an
-           informative error message and return with an error. */
-        if (lock_type == F_WRLCK)
-        {
-                ulong const binlog_format= thd->variables.binlog_format;
-                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 '%s' in"
-                                    " InnoDB is not safe for binlog mode '%s'",
-                                    tx_isolation_names[tx_isolation],
-                                    binlog_format_names[binlog_format]);
-                        my_error(ER_BINLOG_LOGGING_IMPOSSIBLE, MYF(0), buf);
-                        return HA_ERR_LOGGING_IMPOSSIBLE;
-                }
-        }
-
 
 	trx = prebuilt->trx;
 

--- 1.141/storage/innobase/handler/ha_innodb.h	2007-06-22 01:14:22 +02:00
+++ 1.142/storage/innobase/handler/ha_innodb.h	2007-06-22 01:14:22 +02:00
@@ -54,7 +54,7 @@
 	ulong		upd_and_key_val_buff_len;
 					/* the length of each of the previous
 					two buffers */
-	Table_flags	int_table_flags;
+	ulong		int_table_flags;
 	uint		primary_key;
 	ulong		start_of_scan;	/* this is set to 1 when we are
 					starting a table scan but have not
@@ -84,7 +84,7 @@
 	const char* table_type() const { return("InnoDB");}
 	const char *index_type(uint key_number) { return "BTREE"; }
 	const char** bas_ext() const;
-	Table_flags table_flags() const;
+	ulonglong table_flags() const { return int_table_flags; }
 	ulong index_flags(uint idx, uint part, bool all_parts) const
 	{
 	  return (HA_READ_NEXT |
Thread
bk commit into 5.1 tree (mats:1.2533)Mats Kindahl22 Jun