diff options
-rw-r--r-- | mysql-test/r/innodb_mysql.result | 13 | ||||
-rw-r--r-- | mysql-test/t/innodb_mysql.test | 15 | ||||
-rw-r--r-- | sql/sql_class.cc | 5 |
3 files changed, 32 insertions, 1 deletions
diff --git a/mysql-test/r/innodb_mysql.result b/mysql-test/r/innodb_mysql.result index 985f4d2b464..8e31389b6cd 100644 --- a/mysql-test/r/innodb_mysql.result +++ b/mysql-test/r/innodb_mysql.result @@ -1668,3 +1668,16 @@ explain select a from t2 where a=b; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 index NULL a 10 NULL # Using where; Using index drop table t1, t2; +SET SESSION BINLOG_FORMAT=STATEMENT; +SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; +SHOW VARIABLES LIKE 'log_bin'; +Variable_name Value +log_bin OFF +SELECT @@session.binlog_format; +@@session.binlog_format +STATEMENT +SELECT @@session.tx_isolation; +@@session.tx_isolation +READ-COMMITTED +CREATE TABLE t1 ( a INT ) ENGINE=InnoDB; +INSERT INTO t1 VALUES(1); diff --git a/mysql-test/t/innodb_mysql.test b/mysql-test/t/innodb_mysql.test index bcdb1328cb7..4aaef57e068 100644 --- a/mysql-test/t/innodb_mysql.test +++ b/mysql-test/t/innodb_mysql.test @@ -29,3 +29,18 @@ insert into t2 select @a:=A.a+10*(B.a + 10*C.a),@a, @a from t1 A, t1 B, t1 C; explain select a from t2 where a=b; drop table t1, t2; +# +# Bug #40360: Binlog related errors with binlog off +# +# This bug is triggered when the binlog format is STATEMENT and the +# binary log is turned off. In this case, no error should be shown for +# the statement since there are no replication issues. + +SET SESSION BINLOG_FORMAT=STATEMENT; +SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; +SHOW VARIABLES LIKE 'log_bin'; +SELECT @@session.binlog_format; +SELECT @@session.tx_isolation; +CREATE TABLE t1 ( a INT ) ENGINE=InnoDB; +INSERT INTO t1 VALUES(1); + diff --git a/sql/sql_class.cc b/sql/sql_class.cc index e63eed2d23c..12b773c91d0 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -2852,7 +2852,10 @@ extern "C" int thd_non_transactional_update(const MYSQL_THD thd) extern "C" int thd_binlog_format(const MYSQL_THD thd) { - return (int) thd->variables.binlog_format; + if (mysql_bin_log.is_open() && (thd->options & OPTION_BIN_LOG)) + return (int) thd->variables.binlog_format; + else + return BINLOG_FORMAT_UNSPEC; } extern "C" void thd_mark_transaction_to_rollback(MYSQL_THD thd, bool all) |