List:Commits« Previous MessageNext Message »
From:Mats Kindahl Date:October 4 2007 8:54am
Subject:Re: bk commit into 5.0 tree (kaa:1.2516) BUG#29446
View as plain text  
Hi Alexey!

Patch looks good. OK to push.

Just my few cents,
Mats Kindahl

Alexey Kopytov wrote:
> Below is the list of changes that have just been committed into a local
> 5.0 repository of kaa. When kaa does a push these changes will
> be propagated to the main repository and, within 24 hours after the
> push, to the public repository.
> For information on how to access the public repository
> see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
>
> ChangeSet@stripped, 2007-10-04 12:34:00+04:00, kaa@polly.(none) +4 -0
>   Issue a warning if a user sets an option or a variable to a value that is greater
> than a defined maximum for the option/variable.
>   
>   This is for bug #29446 "Specifying a myisam_sort_buffer > 4GB on 64 bit machines
> not possible". Support for myisam_sort_buffer_size > 4 GB on 64-bit Windows will be
> looked at later in 5.2.
>
>   mysql-test/r/variables.result@stripped, 2007-10-04 12:33:56+04:00, kaa@polly.(none) +2
> -0
>     Fixed the test.
>
>   mysql-test/t/variables.test@stripped, 2007-10-04 12:33:56+04:00, kaa@polly.(none) +1
> -0
>     Fixed the test.
>
>   mysys/my_getopt.c@stripped, 2007-10-04 12:33:56+04:00, kaa@polly.(none) +16 -0
>     Print a warning to the error log if a user sets an option to a value greater than
> the option's maximum value.
>
>   sql/set_var.cc@stripped, 2007-10-04 12:33:56+04:00, kaa@polly.(none) +15 -0
>     Issue an SQL warning if a user assignes a value greater than the variable's
> maximum value.
>
> diff -Nrup a/mysql-test/r/variables.result b/mysql-test/r/variables.result
> --- a/mysql-test/r/variables.result	2007-04-09 16:58:53 +04:00
> +++ b/mysql-test/r/variables.result	2007-10-04 12:33:56 +04:00
> @@ -218,6 +218,8 @@ show variables like 'net_buffer_length';
>  Variable_name	Value
>  net_buffer_length	1024
>  set net_buffer_length=2000000000;
> +Warnings:
> +Warning	1292	Truncated incorrect net_buffer_length value: '2000000000'
>  show variables like 'net_buffer_length';
>  Variable_name	Value
>  net_buffer_length	1048576
> diff -Nrup a/mysql-test/t/variables.test b/mysql-test/t/variables.test
> --- a/mysql-test/t/variables.test	2007-04-09 16:58:53 +04:00
> +++ b/mysql-test/t/variables.test	2007-10-04 12:33:56 +04:00
> @@ -139,6 +139,7 @@ show global variables like 'net_%';
>  show session variables like 'net_%';
>  set net_buffer_length=1;
>  show variables like 'net_buffer_length';
> +--warning 1292
>  set net_buffer_length=2000000000;
>  show variables like 'net_buffer_length';
>  
> diff -Nrup a/mysys/my_getopt.c b/mysys/my_getopt.c
> --- a/mysys/my_getopt.c	2007-02-22 17:59:54 +03:00
> +++ b/mysys/my_getopt.c	2007-10-04 12:33:56 +04:00
> @@ -19,6 +19,7 @@
>  #include <my_sys.h>
>  #include <mysys_err.h>
>  #include <my_getopt.h>
> +#include <errno.h>
>  
>  static void default_reporter(enum loglevel level, const char *format, ...);
>  my_error_reporter my_getopt_error_reporter= &default_reporter;
> @@ -693,7 +694,15 @@ static longlong eval_num_suffix (char *a
>    longlong num;
>    
>    *error= 0;
> +  errno= 0;
>    num= strtoll(argument, &endchar, 10);
> +  if (errno == ERANGE)
> +  {
> +    my_getopt_error_reporter(ERROR_LEVEL,
> +                             "Incorrect integer value: '%s'", argument);
> +    *error= 1;
> +    return 0;
> +  }
>    if (*endchar == 'k' || *endchar == 'K')
>      num*= 1024L;
>    else if (*endchar == 'm' || *endchar == 'M')
> @@ -730,7 +739,14 @@ static longlong getopt_ll(char *arg, con
>    num= eval_num_suffix(arg, err, (char*) optp->name);
>    if (num > 0 && (ulonglong) num > (ulonglong) optp->max_value
> &&
>        optp->max_value) /* if max value is not set -> no upper limit */
> +  {
> +    char buf[22];
> +    my_getopt_error_reporter(WARNING_LEVEL,
> +                             "Truncated incorrect %s value: '%s'", 
> +                             optp->name, llstr(num, buf));
> +    
>      num= (ulonglong) optp->max_value;
> +  }
>    num= ((num - optp->sub_size) / block_size);
>    num= (longlong) (num * block_size);
>    return max(num, optp->min_value);
> diff -Nrup a/sql/set_var.cc b/sql/set_var.cc
> --- a/sql/set_var.cc	2007-07-30 19:27:30 +04:00
> +++ b/sql/set_var.cc	2007-10-04 12:33:56 +04:00
> @@ -1532,16 +1532,31 @@ bool sys_var_thd_ulong::check(THD *thd, 
>  bool sys_var_thd_ulong::update(THD *thd, set_var *var)
>  {
>    ulonglong tmp= var->save_result.ulonglong_value;
> +  char buf[22];
> +  bool truncated= false;
>  
>    /* Don't use bigger value than given with --maximum-variable-name=.. */
>    if ((ulong) tmp > max_system_variables.*offset)
> +  {
> +    truncated= true;
> +    llstr(tmp, buf);
>      tmp= max_system_variables.*offset;
> +  }
>  
>  #if SIZEOF_LONG == 4
>    /* Avoid overflows on 32 bit systems */
>    if (tmp > (ulonglong) ~(ulong) 0)
> +  {
> +    truncated= true;
> +    llstr(tmp, buf);
>      tmp= ((ulonglong) ~(ulong) 0);
> +  }
>  #endif
> +  if (truncated)
> +    push_warning_printf(thd, MYSQL_ERROR::WARN_LEVEL_WARN,
> +                        ER_TRUNCATED_WRONG_VALUE,
> +                        ER(ER_TRUNCATED_WRONG_VALUE), name,
> +                        buf);
>  
>    if (option_limits)
>      tmp= (ulong) getopt_ull_limit_value(tmp, option_limits);
>
>   


-- 
Mats Kindahl
Lead Software Developer
Replication Team
MySQL AB, www.mysql.com


Thread
bk commit into 5.0 tree (kaa:1.2516) BUG#29446Alexey Kopytov4 Oct
  • Re: bk commit into 5.0 tree (kaa:1.2516) BUG#29446Mats Kindahl4 Oct