diff options
-rw-r--r-- | mysql-test/r/variables.result | 12 | ||||
-rw-r--r-- | mysql-test/t/variables.test | 10 | ||||
-rw-r--r-- | sql/item.h | 1 | ||||
-rw-r--r-- | sql/mysqld.cc | 2 | ||||
-rw-r--r-- | sql/set_var.cc | 4 |
5 files changed, 26 insertions, 3 deletions
diff --git a/mysql-test/r/variables.result b/mysql-test/r/variables.result index 5468508165c..8ab591e18d0 100644 --- a/mysql-test/r/variables.result +++ b/mysql-test/r/variables.result @@ -525,3 +525,15 @@ set @@warning_count=1; 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 +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 diff --git a/mysql-test/t/variables.test b/mysql-test/t/variables.test index c3ffdc79c16..e6efb86e325 100644 --- a/mysql-test/t/variables.test +++ b/mysql-test/t/variables.test @@ -406,3 +406,13 @@ drop table t1; set @@warning_count=1; --error 1238 set @@global.error_count=1; + +# +# Bug #10351: Setting max_heap_table_size to 4G fails +# +set @@max_heap_table_size= 4294967296; +select @@max_heap_table_size; +set global max_heap_table_size= 4294967296; +select @@max_heap_table_size; +set @@max_heap_table_size= 4294967296; +select @@max_heap_table_size; diff --git a/sql/item.h b/sql/item.h index 5a1cf193806..69ec9d84eef 100644 --- a/sql/item.h +++ b/sql/item.h @@ -1142,6 +1142,7 @@ class Item_uint :public Item_int public: Item_uint(const char *str_arg, uint length); Item_uint(uint32 i) :Item_int((ulonglong) i, 10) {} + Item_uint(ulong i) :Item_int((ulonglong) i, 10) {} Item_uint(const char *str_arg, longlong i, uint length); double val_real() { DBUG_ASSERT(fixed == 1); return ulonglong2double((ulonglong)value); } diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 798bd25fa7c..7afb70c32a8 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, ~0L, 1, ~0L, 0, 1, 0 }, + REQUIRED_ARG, UINT_MAX32, 1, UINT_MAX32, 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 09581aed217..5cdd4081614 100644 --- a/sql/set_var.cc +++ b/sql/set_var.cc @@ -1679,7 +1679,7 @@ Item *sys_var::item(THD *thd, enum_var_type var_type, LEX_STRING *base) pthread_mutex_lock(&LOCK_global_system_variables); value= *(uint*) value_ptr(thd, var_type, base); pthread_mutex_unlock(&LOCK_global_system_variables); - return new Item_uint((int32) value); + return new Item_uint((uint32) value); } case SHOW_LONG: { @@ -1687,7 +1687,7 @@ Item *sys_var::item(THD *thd, enum_var_type var_type, LEX_STRING *base) pthread_mutex_lock(&LOCK_global_system_variables); value= *(ulong*) value_ptr(thd, var_type, base); pthread_mutex_unlock(&LOCK_global_system_variables); - return new Item_uint((int32) value); + return new Item_uint(value); } case SHOW_LONGLONG: { |