#!!! notice !!!
# Any small change to this file in the main branch
# should be done or reviewed by the maintainer!
-diff -ruN /dev/null b/patch_info/log_warnings_suppress.patch
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ b/patch_info/log_warnings_suppress.patch 2011-04-09 18:48:59.000000000 +0400
+--- /dev/null
++++ b/patch_info/log_warnings_suppress.patch
@@ -0,0 +1,9 @@
+File=log_warnings_suppress.patch
+Name=Disable log warnings for enumerated warnings (old name:suppress_log_warning_1592.patch)
+Changelog
+2011-01-05 rename patch suppress_log_warning_1592.patch to log_warnings_silence.patch. Also remove boolean system variable "suppress_log_warning_1592" and add set varbile "log_warnings_silence" (possible values: 1592)
+2011-02-21 rename patch log_warning_silence.patch to log_warnings_suppress.patch. Also rename variable "log_warning_silence" to "log_warning_suppress".
-diff -ruN a/sql/mysqld.cc b/sql/mysqld.cc
---- a/sql/mysqld.cc 2011-04-09 18:48:59.000000000 +0400
-+++ b/sql/mysqld.cc 2011-04-09 18:48:59.000000000 +0400
-@@ -623,6 +623,8 @@
+--- a/sql/mysqld.cc
++++ b/sql/mysqld.cc
+@@ -628,6 +628,8 @@
SHOW_COMP_OPTION have_crypt, have_compress;
SHOW_COMP_OPTION have_profiling;
/* Thread specific variables */
pthread_key(MEM_ROOT**,THR_MALLOC);
-diff -ruN a/sql/mysqld.h b/sql/mysqld.h
---- a/sql/mysqld.h 2011-04-09 18:48:58.000000000 +0400
-+++ b/sql/mysqld.h 2011-04-09 18:48:59.000000000 +0400
+--- a/sql/mysqld.h
++++ b/sql/mysqld.h
@@ -228,6 +228,8 @@
extern TYPELIB thread_handling_typelib;
extern my_decimal decimal_zero;
+extern ulonglong opt_log_warnings_suppress;
+
- extern pthread_key(MEM_ROOT**,THR_MALLOC);
-
- #ifdef HAVE_PSI_INTERFACE
-diff -ruN a/sql/sql_class.cc b/sql/sql_class.cc
---- a/sql/sql_class.cc 2011-04-09 18:48:50.000000000 +0400
-+++ b/sql/sql_class.cc 2011-04-09 18:48:59.000000000 +0400
-@@ -4575,7 +4575,7 @@
+ /*
+ THR_MALLOC is a key which will be used to set/get MEM_ROOT** for a thread,
+ using my_pthread_setspecific_ptr()/my_thread_getspecific_ptr().
+--- a/sql/sql_class.cc
++++ b/sql/sql_class.cc
+@@ -5024,7 +5024,7 @@
ER_BINLOG_UNSAFE_STATEMENT,
ER(ER_BINLOG_UNSAFE_STATEMENT),
ER(LEX::binlog_stmt_unsafe_errcode[unsafe_type]));
{
char buf[MYSQL_ERRMSG_SIZE * 2];
sprintf(buf, ER(ER_BINLOG_UNSAFE_STATEMENT),
-diff -ruN a/sql/sql_class.h b/sql/sql_class.h
---- a/sql/sql_class.h 2011-04-09 18:48:53.000000000 +0400
-+++ b/sql/sql_class.h 2011-04-09 18:48:59.000000000 +0400
-@@ -90,6 +90,7 @@
+--- a/sql/sql_class.h
++++ b/sql/sql_class.h
+@@ -87,6 +87,7 @@
SLOG_F_TMP_TABLE, SLOG_F_TMP_DISK, SLOG_F_FILESORT,
SLOG_F_FILESORT_DISK
};
enum enum_slave_exec_mode { SLAVE_EXEC_MODE_STRICT,
SLAVE_EXEC_MODE_IDEMPOTENT,
SLAVE_EXEC_MODE_LAST_BIT};
-diff -ruN a/sql/sys_vars.cc b/sql/sys_vars.cc
---- a/sql/sys_vars.cc 2011-04-09 18:48:55.000000000 +0400
-+++ b/sql/sys_vars.cc 2011-04-09 18:48:59.000000000 +0400
-@@ -1470,6 +1470,15 @@
+--- a/sql/sys_vars.cc
++++ b/sql/sys_vars.cc
+@@ -1499,6 +1499,15 @@
READ_ONLY GLOBAL_VAR(mysqld_port), CMD_LINE(REQUIRED_ARG, 'P'),
VALID_RANGE(0, UINT_MAX32), DEFAULT(0), BLOCK_SIZE(1));
static Sys_var_ulong Sys_preload_buff_size(
"preload_buffer_size",
"The size of the buffer that is allocated when preloading indexes",
+--- /dev/null
++++ b/mysql-test/r/percona_log_warnings_suppress.result
+@@ -0,0 +1,31 @@
++SET @old_log_warnings = @@log_warnings;
++SET @old_log_warnings_suppress = @@log_warnings_suppress;
++DROP TABLE IF EXISTS t1;
++CREATE TABLE t1 (a VARCHAR(36), b VARCHAR(20));
++SET GLOBAL log_warnings_suppress='';
++SET GLOBAL LOG_WARNINGS=0;
++SHOW GLOBAL VARIABLES LIKE 'log_warnings_suppress';
++Variable_name Value
++log_warnings_suppress
++INSERT INTO t1 VALUES(UUID(), 'suppress_1592');
++Warnings:
++Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave.
++SET GLOBAL LOG_WARNINGS=1;
++INSERT INTO t1 VALUES(UUID(), 'suppress_1592');
++Warnings:
++Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave.
++SET GLOBAL log_warnings_suppress='1592';
++SET GLOBAL LOG_WARNINGS=0;
++INSERT INTO t1 VALUES(UUID(), 'suppress_1592');
++Warnings:
++Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave.
++SET GLOBAL LOG_WARNINGS=1;
++INSERT INTO t1 VALUES(UUID(), 'suppress_1592');
++Warnings:
++Note 1592 Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave.
++DROP TABLE t1;
++SET GLOBAL log_warnings = @old_log_warnings;
++SET GLOBAL log_warnings_suppress = @old_log_warnings_suppress;
++# Count the number of times the "Unsafe" message was printed
++# to the error log.
++Occurrences: 1
+--- /dev/null
++++ b/mysql-test/t/percona_log_warnings_suppress-master.opt
+@@ -0,0 +1 @@
++--log-error
+--- /dev/null
++++ b/mysql-test/t/percona_log_warnings_suppress.test
+@@ -0,0 +1,47 @@
++-- source include/have_log_bin.inc
++-- source include/have_binlog_format_statement.inc
++
++SET @old_log_warnings = @@log_warnings;
++SET @old_log_warnings_suppress = @@log_warnings_suppress;
++
++--disable_warnings
++DROP TABLE IF EXISTS t1;
++--enable_warnings
++CREATE TABLE t1 (a VARCHAR(36), b VARCHAR(20));
++SET GLOBAL log_warnings_suppress='';
++SET GLOBAL LOG_WARNINGS=0;
++SHOW GLOBAL VARIABLES LIKE 'log_warnings_suppress';
++INSERT INTO t1 VALUES(UUID(), 'suppress_1592');
++SET GLOBAL LOG_WARNINGS=1;
++INSERT INTO t1 VALUES(UUID(), 'suppress_1592');
++SET GLOBAL log_warnings_suppress='1592';
++SET GLOBAL LOG_WARNINGS=0;
++INSERT INTO t1 VALUES(UUID(), 'suppress_1592');
++SET GLOBAL LOG_WARNINGS=1;
++INSERT INTO t1 VALUES(UUID(), 'suppress_1592');
++DROP TABLE t1;
++
++SET GLOBAL log_warnings = @old_log_warnings;
++SET GLOBAL log_warnings_suppress = @old_log_warnings_suppress;
++
++let $log_error_= `SELECT @@GLOBAL.log_error`;
++if(!`select LENGTH('$log_error_')`)
++{
++ # MySQL Server on windows is started with --console and thus
++ # does not know the location of its .err log, use default location
++ let $log_error_ = $MYSQLTEST_VARDIR/log/mysqld.1.err;
++}
++# Assign env variable LOG_ERROR
++let LOG_ERROR=$log_error_;
++
++--echo # Count the number of times the "Unsafe" message was printed
++--echo # to the error log.
++
++perl;
++ use strict;
++ my $log_error= $ENV{'LOG_ERROR'} or die "LOG_ERROR not set";
++ open(FILE, "$log_error") or die("Unable to open $log_error: $!\n");
++ my $count = () = grep(/suppress_1592/g,<FILE>);
++ print "Occurrences: $count\n";
++ close(FILE);
++EOF
+--- a/mysql-test/r/mysqld--help-notwin.result
++++ b/mysql-test/r/mysqld--help-notwin.result
+@@ -281,6 +281,9 @@
+ --log-tc-size=# Size of transaction coordinator log.
+ -W, --log-warnings[=#]
+ Log some not critical warnings to the log file
++ --log-warnings-suppress=name
++ disable logging of enumerated warnings: 1592: unsafe
++ statements for binary logging; possible values : [1592]
+ --long-query-time=# Log all queries that have taken more than long_query_time
+ seconds to execute to file. The argument will be treated
+ as a decimal value with microsecond precision
+@@ -865,6 +868,7 @@
+ log-tc tc.log
+ log-tc-size 24576
+ log-warnings 1
++log-warnings-suppress
+ long-query-time 10
+ low-priority-updates FALSE
+ lower-case-table-names 1