From: Dao-Gang.Qu Date: December 3 2009 2:31am Subject: bzr commit into mysql-5.1-bugteam branch (Dao-Gang.Qu:3233) Bug#42851 List-Archive: http://lists.mysql.com/commits/92579 X-Bug: 42851 Message-Id: <200912030232.nB32WDiu015756@daogangqu-desktop> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1908271716==" --===============1908271716== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/daogangqu/mysql/bzrwork/bugtest/mysql-5.1-bugteam/ based on revid:dao-gang.qu@stripped 3233 Dao-Gang.Qu@stripped 2009-12-03 Bug #42851 Spurious "Statement is not safe to log in statement format." warnings The unsafe warnings in error log make error log grow too large. To fix the problem, the unsafe warnings only will be written to error log, when the level of --log-warnings option >= 2. @ mysql-test/suite/rpl/r/rpl_unsafe_warnings.result Test Result for BUG#42851 @ mysql-test/suite/rpl/t/rpl_unsafe_warnings.test Added the test file to verify the unsafe warnings will be written to error log when the level of --log-warnings option >= 2, and the 'SHOW WARNINGS' is not controlled by --log-warnings option. added: mysql-test/suite/rpl/r/rpl_unsafe_warnings.result mysql-test/suite/rpl/t/rpl_unsafe_warnings.test modified: sql/sql_class.cc === added file 'mysql-test/suite/rpl/r/rpl_unsafe_warnings.result' --- a/mysql-test/suite/rpl/r/rpl_unsafe_warnings.result 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/rpl/r/rpl_unsafe_warnings.result 2009-12-03 02:30:51 +0000 @@ -0,0 +1,77 @@ +stop slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +reset master; +reset slave; +drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t9; +start slave; +set @save_log_warnings= @@global.log_warnings; +CREATE TABLE `t1` ( +`recNo` int(10) unsigned NOT NULL AUTO_INCREMENT, +`string` varchar(64) NOT NULL, +`inUseBy` varchar(38) NOT NULL DEFAULT '', +`tsLastUpdated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE +CURRENT_TIMESTAMP, +PRIMARY KEY (`recNo`), +KEY `tsLastUpdated` (`tsLastUpdated`), +KEY `inUseBy` (`inUseBy`) +); +INSERT INTO t1 SET string='one'; +INSERT INTO t1 SET string='two'; +INSERT INTO t1 SET string='three'; +set @@global.log_warnings= 0; +select @@global.log_warnings; +@@global.log_warnings +0 +UPDATE t1 SET inUseBy='me' WHERE inUseBy='' limit 1; +# When the --log-warnings option is set to 0, Test the unsafe +# warning will be displayed by 'SHOW WARNINGS', but it will not +# be written to error log. +SHOW WARNINGS; +Level Code Message +Note 1592 Statement may not be safe to log in statement format. +set @@global.log_warnings= 1; +select @@global.log_warnings; +@@global.log_warnings +1 +UPDATE t1 SET inUseBy='me' WHERE inUseBy='' limit 2; +# When the --log-warnings option is set to 1, Test the unsafe +# warning will be displayed by 'SHOW WARNINGS', but it will not +# be written to error log. +SHOW WARNINGS; +Level Code Message +Note 1592 Statement may not be safe to log in statement format. +set @@global.log_warnings= 2; +select @@global.log_warnings; +@@global.log_warnings +2 +UPDATE t1 SET inUseBy='me' WHERE inUseBy='' limit 3; +# When the --log-warnings option is set to 2, Test the unsafe +# warning will be displayed by 'SHOW WARNINGS', and it also will +# be written to error log. +SHOW WARNINGS; +Level Code Message +Note 1592 Statement may not be safe to log in statement format. +set @@global.log_warnings= 3; +select @@global.log_warnings; +@@global.log_warnings +3 +UPDATE t1 SET inUseBy='me' WHERE inUseBy='' limit 4; +# When the --log-warnings option is set to 3, Test the unsafe +# warning will be displayed by 'SHOW WARNINGS', and it also will +# be written to error log. +SHOW WARNINGS; +Level Code Message +Note 1592 Statement may not be safe to log in statement format. +set @@global.log_warnings= 500; +select @@global.log_warnings; +@@global.log_warnings +500 +UPDATE t1 SET inUseBy='me' WHERE inUseBy='' limit 5; +# When the --log-warnings option is set to 500, Test the unsafe +# warning will be displayed by 'SHOW WARNINGS', and it also will +# be written to error log. +SHOW WARNINGS; +Level Code Message +Note 1592 Statement may not be safe to log in statement format. +set @@global.log_warnings= @save_log_warnings; +drop table t1; === added file 'mysql-test/suite/rpl/t/rpl_unsafe_warnings.test' --- a/mysql-test/suite/rpl/t/rpl_unsafe_warnings.test 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/rpl/t/rpl_unsafe_warnings.test 2009-12-03 02:30:51 +0000 @@ -0,0 +1,75 @@ +# +# BUG#42851 +# This test verifies if the unsafe warnings will be written to error log +# when the level of --log-warnings option >= 2, and the 'SHOW WARNINGS' +# is not controlled by --log-warnings option. +# + +source include/master-slave.inc; +source include/have_binlog_format_statement.inc; + +set @save_log_warnings= @@global.log_warnings; +# create table +CREATE TABLE `t1` ( + `recNo` int(10) unsigned NOT NULL AUTO_INCREMENT, + `string` varchar(64) NOT NULL, + `inUseBy` varchar(38) NOT NULL DEFAULT '', + `tsLastUpdated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE +CURRENT_TIMESTAMP, + PRIMARY KEY (`recNo`), + KEY `tsLastUpdated` (`tsLastUpdated`), + KEY `inUseBy` (`inUseBy`) +); +# insert test data +INSERT INTO t1 SET string='one'; +INSERT INTO t1 SET string='two'; +INSERT INTO t1 SET string='three'; + +--disable_warnings + +set @@global.log_warnings= 0; +select @@global.log_warnings; +UPDATE t1 SET inUseBy='me' WHERE inUseBy='' limit 1; +--echo # When the --log-warnings option is set to 0, Test the unsafe +--echo # warning will be displayed by 'SHOW WARNINGS', but it will not +--echo # be written to error log. +SHOW WARNINGS; + +set @@global.log_warnings= 1; +select @@global.log_warnings; +UPDATE t1 SET inUseBy='me' WHERE inUseBy='' limit 2; +--echo # When the --log-warnings option is set to 1, Test the unsafe +--echo # warning will be displayed by 'SHOW WARNINGS', but it will not +--echo # be written to error log. +SHOW WARNINGS; + +set @@global.log_warnings= 2; +select @@global.log_warnings; +UPDATE t1 SET inUseBy='me' WHERE inUseBy='' limit 3; +--echo # When the --log-warnings option is set to 2, Test the unsafe +--echo # warning will be displayed by 'SHOW WARNINGS', and it also will +--echo # be written to error log. +SHOW WARNINGS; + +set @@global.log_warnings= 3; +select @@global.log_warnings; +UPDATE t1 SET inUseBy='me' WHERE inUseBy='' limit 4; +--echo # When the --log-warnings option is set to 3, Test the unsafe +--echo # warning will be displayed by 'SHOW WARNINGS', and it also will +--echo # be written to error log. +SHOW WARNINGS; + +set @@global.log_warnings= 500; +select @@global.log_warnings; +UPDATE t1 SET inUseBy='me' WHERE inUseBy='' limit 5; +--echo # When the --log-warnings option is set to 500, Test the unsafe +--echo # warning will be displayed by 'SHOW WARNINGS', and it also will +--echo # be written to error log. +SHOW WARNINGS; + +--enable_warnings + +set @@global.log_warnings= @save_log_warnings; +drop table t1; +sync_slave_with_master; + === modified file 'sql/sql_class.cc' --- a/sql/sql_class.cc 2009-11-01 23:13:11 +0000 +++ b/sql/sql_class.cc 2009-12-03 02:30:51 +0000 @@ -3859,7 +3859,11 @@ int THD::binlog_query(THD::enum_binlog_q push_warning(this, MYSQL_ERROR::WARN_LEVEL_NOTE, ER_BINLOG_UNSAFE_STATEMENT, ER(ER_BINLOG_UNSAFE_STATEMENT)); - if (global_system_variables.log_warnings && + /* + The unsafe warning will be written to error log, when + the level of --log-warnings option >= 2. + */ + if (global_system_variables.log_warnings >= 2 && !(binlog_flags & BINLOG_FLAG_UNSAFE_STMT_PRINTED)) { sql_print_warning("%s Statement: %.*s", --===============1908271716== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/dao-gang.qu@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: dao-gang.qu@stripped # target_branch: file:///home/daogangqu/mysql/bzrwork/bugtest/mysql-\ # 5.1-bugteam/ # testament_sha1: 7214f3f1273025598f1dcd89ca591d5b50129e67 # timestamp: 2009-12-03 10:31:13 +0800 # base_revision_id: dao-gang.qu@stripped\ # 0mqlv9ffjfr72imi # # Begin bundle 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 nZnl8N9+nsdIeNTG+2sT/8XckU4UJCFA/MhA --===============1908271716==--