Commit 458f0751 authored by unknown's avatar unknown
Browse files

Fix for Bug#3754 "SET GLOBAL myisam_max_sort_file_size doesn't

work as expected": precision-losing conversion removed from 
sys_var_thd_ulonglong.


mysql-test/r/variables.result:
  Test case for Bug#3754
mysql-test/t/variables.test:
  Test case for Bug#3754
sql/set_var.cc:
  Fix for Bug#3754: precision-losing conversion removed from 
  sys_var_thd_ulonglong.
parent efbf373b
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -377,3 +377,7 @@ select 1;
1
select @@session.key_buffer_size;
Variable 'key_buffer_size' is a GLOBAL variable
set global myisam_max_sort_file_size=4294967296;
show global variables like 'myisam_max_sort_file_size';
Variable_name	Value
myisam_max_sort_file_size	4294967296
+7 −1
Original line number Diff line number Diff line
@@ -269,3 +269,9 @@ select 1;

--error 1238
select @@session.key_buffer_size;

# Bug#3754 SET GLOBAL myisam_max_sort_file_size doesn't work as
# expected: check that there is no overflow when 64-bit unsigned
# variables are set
set global myisam_max_sort_file_size=4294967296;
show global variables like 'myisam_max_sort_file_size';
+2 −2
Original line number Diff line number Diff line
@@ -965,11 +965,11 @@ bool sys_var_thd_ulonglong::update(THD *thd, set_var *var)
{
  ulonglong tmp= var->value->val_int();

  if ((ulonglong) tmp > max_system_variables.*offset)
  if (tmp > max_system_variables.*offset)
    tmp= max_system_variables.*offset;

  if (option_limits)
    tmp= (ulong) getopt_ull_limit_value(tmp, option_limits);
    tmp= getopt_ull_limit_value(tmp, option_limits);
  if (var->type == OPT_GLOBAL)
  {
    /* Lock is needed to make things safe on 32 bit systems */