diff --git a/mysql-test/r/select_safe.result b/mysql-test/r/select_safe.result index 7a29db42dd9..5d458c40f34 100644 --- a/mysql-test/r/select_safe.result +++ b/mysql-test/r/select_safe.result @@ -60,9 +60,6 @@ a b 3 a 4 a 5 a -SELECT @@MAX_SEEKS_FOR_KEY; -@@MAX_SEEKS_FOR_KEY -4294967295 analyze table t1; Table Op Msg_type Msg_text test.t1 analyze status OK diff --git a/mysql-test/r/variables.result b/mysql-test/r/variables.result index 8ab591e18d0..932be65532b 100644 --- a/mysql-test/r/variables.result +++ b/mysql-test/r/variables.result @@ -526,14 +526,10 @@ ERROR HY000: Variable 'warning_count' is a read only variable set @@global.error_count=1; ERROR HY000: Variable 'error_count' is a read only variable set @@max_heap_table_size= 4294967296; -select @@max_heap_table_size; -@@max_heap_table_size -4294967296 +select @@max_heap_table_size > 0; +@@max_heap_table_size > 0 +1 set global max_heap_table_size= 4294967296; -select @@max_heap_table_size; -@@max_heap_table_size -4294967296 -set @@max_heap_table_size= 4294967296; -select @@max_heap_table_size; -@@max_heap_table_size -4294967296 +select @@global.max_heap_table_size > 0; +@@global.max_heap_table_size > 0 +1 diff --git a/mysql-test/t/select_safe.test b/mysql-test/t/select_safe.test index 5b2dfb00bb7..7515ff40ab9 100644 --- a/mysql-test/t/select_safe.test +++ b/mysql-test/t/select_safe.test @@ -56,7 +56,6 @@ SELECT * from t1; # # Test MAX_SEEKS_FOR_KEY # -SELECT @@MAX_SEEKS_FOR_KEY; analyze table t1; insert into t1 values (null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"),(null,"a"); explain select STRAIGHT_JOIN * from t1,t1 as t2 where t1.b=t2.b; diff --git a/mysql-test/t/variables.test b/mysql-test/t/variables.test index e6efb86e325..e32a6209a2d 100644 --- a/mysql-test/t/variables.test +++ b/mysql-test/t/variables.test @@ -408,11 +408,9 @@ set @@warning_count=1; set @@global.error_count=1; # -# Bug #10351: Setting max_heap_table_size to 4G fails +# Bug #10351: Setting ulong variable to > MAX_ULONG fails on 32-bit platform # set @@max_heap_table_size= 4294967296; -select @@max_heap_table_size; +select @@max_heap_table_size > 0; set global max_heap_table_size= 4294967296; -select @@max_heap_table_size; -set @@max_heap_table_size= 4294967296; -select @@max_heap_table_size; +select @@global.max_heap_table_size > 0; diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 7afb70c32a8..798bd25fa7c 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -5371,7 +5371,7 @@ The minimum value for this variable is 4096.", "Limit assumed max number of seeks when looking up rows based on a key", (gptr*) &global_system_variables.max_seeks_for_key, (gptr*) &max_system_variables.max_seeks_for_key, 0, GET_ULONG, - REQUIRED_ARG, UINT_MAX32, 1, UINT_MAX32, 0, 1, 0 }, + REQUIRED_ARG, ~0L, 1, ~0L, 0, 1, 0 }, {"max_sort_length", OPT_MAX_SORT_LENGTH, "The number of bytes to use when sorting BLOB or TEXT values (only the first max_sort_length bytes of each value are used; the rest are ignored).", (gptr*) &global_system_variables.max_sort_length, diff --git a/sql/set_var.cc b/sql/set_var.cc index 5cdd4081614..9526cc79c56 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -1422,6 +1422,12 @@ bool sys_var_thd_ulong::update(THD *thd, set_var *var) { ulonglong tmp= var->save_result.ulonglong_value; +#if SIZEOF_LONG != SIZEOF_LONGLONG + /* Avoid overflow on 32-bit platforms. */ + if (tmp > ULONG_MAX) + tmp= ULONG_MAX; +#endif + /* Don't use bigger value than given with --maximum-variable-name=.. */ if ((ulong) tmp > max_system_variables.*offset) tmp= max_system_variables.*offset;