From: Marc Alff Date: April 26 2010 1:32pm Subject: bzr commit into mysql-next-mr-bugfixing branch (marc.alff:3151) List-Archive: http://lists.mysql.com/commits/106526 Message-Id: <20100426133225.5189949339C@MarcBook.local> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="Boundary_(ID_7Y2+21zpvHtYnHq7zq+Axg)" --Boundary_(ID_7Y2+21zpvHtYnHq7zq+Axg) MIME-version: 1.0 Content-type: text/plain; CHARSET=US-ASCII Content-transfer-encoding: 7BIT Content-disposition: inline #At file:///Users/malff/BZR_TREE/mysql-next-mr-bugfixing-53148/ based on revid:marc.alff@stripped 3151 Marc Alff 2010-04-26 [merge] local merge modified: mysql-test/suite/rpl/r/rpl_temp_temporary.result mysql-test/suite/rpl/t/rpl_temp_temporary.test sql/log_event.cc sql/sql_class.cc sql/sql_class.h sql/sql_parse.cc === modified file 'mysql-test/suite/rpl/r/rpl_temp_temporary.result' --- a/mysql-test/suite/rpl/r/rpl_temp_temporary.result 2010-04-20 09:10:43 +0000 +++ b/mysql-test/suite/rpl/r/rpl_temp_temporary.result 2010-04-26 09:02:29 +0000 @@ -174,6 +174,48 @@ master-bin.000001 # Query # # BEGIN master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS `tmp2` /* generated by server */ master-bin.000001 # Query # # use `test`; DROP TEMPORARY TABLE IF EXISTS `tmp3` /* generated by server */ master-bin.000001 # Query # # ROLLBACK +######################################################################## +# VERIFY ITEM 7 +######################################################################## +SET BINLOG_FORMAT=STATEMENT; +CREATE TEMPORARY TABLE tmp1(id int) engine= MyIsam; +CREATE TABLE t_myisam (f1 BIGINT) ENGINE = MyISAM; +CREATE TABLE t_innodb (f1 BIGINT) ENGINE = Innodb; +BEGIN; +INSERT INTO t_myisam VALUES(CONNECTION_ID()); +INSERT INTO tmp1 VALUES(1); +INSERT INTO t_myisam VALUES(1); +Warnings: +Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction. +INSERT INTO t_innodb VALUES(1); +INSERT INTO t_myisam VALUES(CONNECTION_ID()); +Warnings: +Note 1592 Unsafe statement binlogged in statement format since BINLOG_FORMAT = STATEMENT. Reason for unsafeness: Non-transactional reads or writes are unsafe if they occur after transactional reads or writes inside a transaction. +INSERT INTO t_innodb VALUES(1); +COMMIT; +DROP TABLE t_myisam; +DROP TABLE t_innodb; +show binlog events from ; +Log_name Pos Event_type Server_id End_log_pos Info +master-bin.000001 # Query # # use `test`; CREATE TEMPORARY TABLE tmp1(id int) engine= MyIsam +master-bin.000001 # Query # # use `test`; CREATE TABLE t_myisam (f1 BIGINT) ENGINE = MyISAM +master-bin.000001 # Query # # use `test`; CREATE TABLE t_innodb (f1 BIGINT) ENGINE = Innodb +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO t_myisam VALUES(CONNECTION_ID()) +master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO t_myisam VALUES(1) +master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO t_myisam VALUES(CONNECTION_ID()) +master-bin.000001 # Query # # COMMIT +master-bin.000001 # Query # # BEGIN +master-bin.000001 # Query # # use `test`; INSERT INTO tmp1 VALUES(1) +master-bin.000001 # Query # # use `test`; INSERT INTO t_innodb VALUES(1) +master-bin.000001 # Query # # use `test`; INSERT INTO t_innodb VALUES(1) +master-bin.000001 # Xid # # COMMIT /* XID */ +master-bin.000001 # Query # # use `test`; DROP TABLE t_myisam +master-bin.000001 # Query # # use `test`; DROP TABLE t_innodb ################################################################################### # CHECK CONSISTENCY ################################################################################### === modified file 'mysql-test/suite/rpl/t/rpl_temp_temporary.test' --- a/mysql-test/suite/rpl/t/rpl_temp_temporary.test 2010-04-20 09:10:43 +0000 +++ b/mysql-test/suite/rpl/t/rpl_temp_temporary.test 2010-04-26 09:02:29 +0000 @@ -34,6 +34,10 @@ # the CREATE TEMPORARY is not logged and the DROP TEMPORARY is extended with # the IF EXISTS clause. # +# 7 - It also verifies if the CONNECTION_ID along with a non-transactional +# table is written outside the transaction boundaries and is not classified +# as unsafe. See BUG#53075. +# ################################################################################ source include/master-slave.inc; @@ -163,6 +167,29 @@ DROP TEMPORARY TABLE tmp3; ROLLBACK; source include/show_binlog_events.inc; +--echo ######################################################################## +--echo # VERIFY ITEM 7 +--echo ######################################################################## + +SET BINLOG_FORMAT=STATEMENT; +let $binlog_start= query_get_value("SHOW MASTER STATUS", Position, 1); + +CREATE TEMPORARY TABLE tmp1(id int) engine= MyIsam; +CREATE TABLE t_myisam (f1 BIGINT) ENGINE = MyISAM; +CREATE TABLE t_innodb (f1 BIGINT) ENGINE = Innodb; + +BEGIN; +INSERT INTO t_myisam VALUES(CONNECTION_ID()); +INSERT INTO tmp1 VALUES(1); +INSERT INTO t_myisam VALUES(1); +INSERT INTO t_innodb VALUES(1); +INSERT INTO t_myisam VALUES(CONNECTION_ID()); +INSERT INTO t_innodb VALUES(1); +COMMIT; +DROP TABLE t_myisam; +DROP TABLE t_innodb; +source include/show_binlog_events.inc; + --echo ################################################################################### --echo # CHECK CONSISTENCY --echo ################################################################################### @@ -172,3 +199,5 @@ sync_slave_with_master; --exec $MYSQL_DUMP --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/test-nmt-master.sql --exec $MYSQL_DUMP_SLAVE --compact --order-by-primary --skip-extended-insert --no-create-info test > $MYSQLTEST_VARDIR/tmp/test-nmt-slave.sql --diff_files $MYSQLTEST_VARDIR/tmp/test-nmt-master.sql $MYSQLTEST_VARDIR/tmp/test-nmt-slave.sql + + === modified file 'sql/log_event.cc' --- a/sql/log_event.cc 2010-04-20 11:58:28 +0000 +++ b/sql/log_event.cc 2010-04-26 09:06:35 +0000 @@ -679,7 +679,7 @@ Log_event::Log_event(THD* thd_arg, uint1 server_id= thd->server_id; when= thd->start_time; cache_type= (using_trans || stmt_has_updated_trans_table(thd) - || thd->thread_specific_used + || thd->thread_temporary_used ? Log_event::EVENT_TRANSACTIONAL_CACHE : Log_event::EVENT_STMT_CACHE); } @@ -2553,7 +2553,7 @@ Query_log_event::Query_log_event(THD* th else { cache_type= ((using_trans || stmt_has_updated_trans_table(thd) || - force_trans || thd->thread_specific_used) + force_trans || thd->thread_temporary_used) ? Log_event::EVENT_TRANSACTIONAL_CACHE : Log_event::EVENT_STMT_CACHE); } === modified file 'sql/sql_class.cc' --- a/sql/sql_class.cc 2010-04-20 11:58:28 +0000 +++ b/sql/sql_class.cc 2010-04-26 09:06:35 +0000 @@ -3736,6 +3736,7 @@ int THD::decide_logging_format(TABLE_LIS trans_non_trans_access_engines= (prev_trans != act_trans); multi_access_engine= TRUE; } + thread_temporary_used |= table->table->s->tmp_table; prev_access_table= table->table; } === modified file 'sql/sql_class.h' --- a/sql/sql_class.h 2010-04-20 11:58:28 +0000 +++ b/sql/sql_class.h 2010-04-26 09:06:35 +0000 @@ -2108,6 +2108,11 @@ public: /** is set if some thread specific value(s) used in a statement. */ bool thread_specific_used; + /** + is set if a statement accesses a temporary table created through + CREATE TEMPORARY TABLE. + */ + bool thread_temporary_used; bool charset_is_system_charset, charset_is_collation_connection; bool charset_is_character_set_filesystem; bool enable_slow_log; /* enable slow log for current statement */ === modified file 'sql/sql_parse.cc' --- a/sql/sql_parse.cc 2010-04-21 07:35:37 +0000 +++ b/sql/sql_parse.cc 2010-04-26 09:06:35 +0000 @@ -5530,7 +5530,7 @@ void THD::reset_for_next_command() thd->transaction.all.modified_non_trans_table= FALSE; } DBUG_ASSERT(thd->security_ctx== &thd->main_security_ctx); - thd->thread_specific_used= FALSE; + thd->thread_specific_used= thd->thread_temporary_used= FALSE; if (opt_bin_log) { --Boundary_(ID_7Y2+21zpvHtYnHq7zq+Axg) MIME-version: 1.0 Content-type: text/bzr-bundle; CHARSET=US-ASCII; name="bzr/marc.alff@stripped" Content-transfer-encoding: 7BIT Content-disposition: inline; filename="bzr/marc.alff@stripped" # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: marc.alff@stripped # target_branch: file:///Users/malff/BZR_TREE/mysql-next-mr-bugfixing-\ # 53148/ # testament_sha1: e226b636dff2cecb0723c57611c79a4ea4bfb4c7 # timestamp: 2010-04-26 07:32:23 -0600 # base_revision_id: marc.alff@stripped\ # swbssp5043br8sm2 # # Begin bundle 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 w937R/+LuSKcKEgdpBAVgA== --Boundary_(ID_7Y2+21zpvHtYnHq7zq+Axg)--