Commit 241e97fb authored by osku's avatar osku

Support >4GB buffer pool and log files on 64-bit Windows. Fixes bug

#12701.

Synced from MySQL.
parent 05392a9d
...@@ -141,15 +141,16 @@ uint innobase_init_flags = 0; ...@@ -141,15 +141,16 @@ uint innobase_init_flags = 0;
ulong innobase_cache_size = 0; ulong innobase_cache_size = 0;
ulong innobase_large_page_size = 0; ulong innobase_large_page_size = 0;
/* The default values for the following, type long, start-up parameters /* The default values for the following, type long or longlong, start-up
are declared in mysqld.cc: */ parameters are declared in mysqld.cc: */
long innobase_mirrored_log_groups, innobase_log_files_in_group, long innobase_mirrored_log_groups, innobase_log_files_in_group,
innobase_log_file_size, innobase_log_buffer_size, innobase_log_buffer_size, innobase_buffer_pool_awe_mem_mb,
innobase_buffer_pool_awe_mem_mb, innobase_additional_mem_pool_size, innobase_file_io_threads,
innobase_buffer_pool_size, innobase_additional_mem_pool_size, innobase_lock_wait_timeout, innobase_force_recovery,
innobase_file_io_threads, innobase_lock_wait_timeout, innobase_open_files;
innobase_force_recovery, innobase_open_files;
longlong innobase_buffer_pool_size, innobase_log_file_size;
/* The default values for the following char* start-up parameters /* The default values for the following char* start-up parameters
are determined in innobase_init below: */ are determined in innobase_init below: */
...@@ -1230,6 +1231,25 @@ innobase_init(void) ...@@ -1230,6 +1231,25 @@ innobase_init(void)
ut_a(DATA_MYSQL_TRUE_VARCHAR == (ulint)MYSQL_TYPE_VARCHAR); ut_a(DATA_MYSQL_TRUE_VARCHAR == (ulint)MYSQL_TYPE_VARCHAR);
/* Check that values don't overflow on 32-bit systems. */
if (sizeof(ulint) == 4) {
if (innobase_buffer_pool_size > UINT_MAX32) {
sql_print_error(
"innobase_buffer_pool_size can't be over 4GB"
" on 32-bit systems");
DBUG_RETURN(0);
}
if (innobase_log_file_size > UINT_MAX32) {
sql_print_error(
"innobase_log_file_size can't be over 4GB"
" on 32-bit systems");
DBUG_RETURN(0);
}
}
os_innodb_umask = (ulint)my_umask; os_innodb_umask = (ulint)my_umask;
/* First calculate the default path for innodb_data_home_dir etc., /* First calculate the default path for innodb_data_home_dir etc.,
......
...@@ -218,8 +218,9 @@ extern ulong innobase_large_page_size; ...@@ -218,8 +218,9 @@ extern ulong innobase_large_page_size;
extern char *innobase_home, *innobase_tmpdir, *innobase_logdir; extern char *innobase_home, *innobase_tmpdir, *innobase_logdir;
extern long innobase_lock_scan_time; extern long innobase_lock_scan_time;
extern long innobase_mirrored_log_groups, innobase_log_files_in_group; extern long innobase_mirrored_log_groups, innobase_log_files_in_group;
extern long innobase_log_file_size, innobase_log_buffer_size; extern longlong innobase_buffer_pool_size, innobase_log_file_size;
extern long innobase_buffer_pool_size, innobase_additional_mem_pool_size; extern long innobase_log_buffer_size;
extern long innobase_additional_mem_pool_size;
extern long innobase_buffer_pool_awe_mem_mb; extern long innobase_buffer_pool_awe_mem_mb;
extern long innobase_file_io_threads, innobase_lock_wait_timeout; extern long innobase_file_io_threads, innobase_lock_wait_timeout;
extern long innobase_force_recovery; extern long innobase_force_recovery;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment