summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/r/variables.result12
-rw-r--r--mysql-test/t/variables.test10
-rw-r--r--sql/item.h1
-rw-r--r--sql/mysqld.cc2
-rw-r--r--sql/set_var.cc4
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:
{