diff options
author | Georgi Kodinov <Georgi.Kodinov@Oracle.com> | 2011-03-25 14:55:22 +0200 |
---|---|---|
committer | Georgi Kodinov <Georgi.Kodinov@Oracle.com> | 2011-03-25 14:55:22 +0200 |
commit | 0d01bcca9d6ed0ab184467583cb711811d292f8d (patch) | |
tree | 8c4c01d03f3a1044ed7659c2307aadd489f5cc30 /sql/sys_vars.cc | |
parent | 11ca6e2ca403e2eb6e79b92110032cfe01a9d8bb (diff) | |
parent | dcf6b68d08acfbfdc3183b0a13f041af51573eb1 (diff) | |
download | mariadb-git-0d01bcca9d6ed0ab184467583cb711811d292f8d.tar.gz |
Merged bug #11766769 to 5.5.
Added back the specific warning number.
Diffstat (limited to 'sql/sys_vars.cc')
-rw-r--r-- | sql/sys_vars.cc | 40 |
1 files changed, 38 insertions, 2 deletions
diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc index 1a7097e4bdf..ad7bf3fef2a 100644 --- a/sql/sys_vars.cc +++ b/sql/sys_vars.cc @@ -1030,13 +1030,32 @@ static bool session_readonly(sys_var *self, THD *thd, set_var *var) self->name.str, "GLOBAL"); return true; } + +static bool +check_max_allowed_packet(sys_var *self, THD *thd, set_var *var) +{ + longlong val; + if (session_readonly(self, thd, var)) + return true; + + val= var->save_result.ulonglong_value; + if (val < (longlong) global_system_variables.net_buffer_length) + { + push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN, + WARN_OPTION_BELOW_LIMIT, ER(WARN_OPTION_BELOW_LIMIT), + "max_allowed_packet", "net_buffer_length"); + } + return false; +} + + static Sys_var_ulong Sys_max_allowed_packet( "max_allowed_packet", "Max packet length to send to or receive from the server", SESSION_VAR(max_allowed_packet), CMD_LINE(REQUIRED_ARG), VALID_RANGE(1024, 1024*1024*1024), DEFAULT(1024*1024), BLOCK_SIZE(1024), NO_MUTEX_GUARD, NOT_IN_BINLOG, - ON_CHECK(session_readonly)); + ON_CHECK(check_max_allowed_packet)); static Sys_var_ulonglong Sys_max_binlog_cache_size( "max_binlog_cache_size", @@ -1267,12 +1286,29 @@ static Sys_var_mybool Sys_named_pipe( DEFAULT(FALSE)); #endif + +static bool +check_net_buffer_length(sys_var *self, THD *thd, set_var *var) +{ + longlong val; + if (session_readonly(self, thd, var)) + return true; + + val= var->save_result.ulonglong_value; + if (val > (longlong) global_system_variables.max_allowed_packet) + { + push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN, + WARN_OPTION_BELOW_LIMIT, ER(WARN_OPTION_BELOW_LIMIT), + "max_allowed_packet", "net_buffer_length"); + } + return false; +} static Sys_var_ulong Sys_net_buffer_length( "net_buffer_length", "Buffer length for TCP/IP and socket communication", SESSION_VAR(net_buffer_length), CMD_LINE(REQUIRED_ARG), VALID_RANGE(1024, 1024*1024), DEFAULT(16384), BLOCK_SIZE(1024), - NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(session_readonly)); + NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(check_net_buffer_length)); static bool fix_net_read_timeout(sys_var *self, THD *thd, enum_var_type type) { |