diff options
author | unknown <monty@mashka.mysql.fi> | 2002-12-05 19:38:42 +0200 |
---|---|---|
committer | unknown <monty@mashka.mysql.fi> | 2002-12-05 19:38:42 +0200 |
commit | 6d33f73416b5576b4e48412fd3a7342385c1c747 (patch) | |
tree | 56f9dc35fe3c9e6c4f341e577ff3db68855d9e81 /sql/ha_innodb.cc | |
parent | 930b3fa897112c49392c2154de1ec21b9e44edda (diff) | |
parent | 9b5167eeac3e8d14134769334d94f260cb5db277 (diff) | |
download | mariadb-git-6d33f73416b5576b4e48412fd3a7342385c1c747.tar.gz |
Merge with 4.0.6
BitKeeper/etc/ignore:
auto-union
acinclude.m4:
Auto merged
configure.in:
Auto merged
heap/hp_delete.c:
Auto merged
heap/hp_scan.c:
Auto merged
include/my_base.h:
Auto merged
libmysql/libmysql.c:
Auto merged
libmysqld/lib_sql.cc:
Auto merged
myisam/mi_check.c:
Auto merged
myisam/mi_rnext_same.c:
Auto merged
myisam/sort.c:
Auto merged
mysql-test/r/alter_table.result:
Auto merged
mysql-test/r/distinct.result:
Auto merged
mysql-test/r/func_math.result:
Auto merged
mysql-test/r/group_by.result:
Auto merged
mysql-test/r/innodb.result:
Auto merged
mysql-test/r/select.result:
Auto merged
mysql-test/t/group_by.test:
Auto merged
mysql-test/t/select.test:
Auto merged
mysys/hash.c:
Auto merged
sql/field.h:
Auto merged
sql/field_conv.cc:
Auto merged
sql/ha_innodb.cc:
Auto merged
sql/handler.cc:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_func.h:
Auto merged
sql/log.cc:
Auto merged
sql/mysql_priv.h:
Auto merged
sql/mysqld.cc:
Auto merged
sql/opt_sum.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/set_var.h:
Auto merged
sql/sql_analyse.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_show.cc:
Auto merged
sql/sql_table.cc:
Auto merged
sql/sql_udf.cc:
Auto merged
sql/structs.h:
Auto merged
sql/uniques.cc:
Auto merged
strings/strto.c:
Auto merged
vio/vio.c:
Auto merged
BitKeeper/triggers/post-commit:
Add changeset to commit messages
sql-bench/crash-me.sh:
Use version from 4.0
sql-bench/server-cfg.sh:
Use version from 4.0
Diffstat (limited to 'sql/ha_innodb.cc')
-rw-r--r-- | sql/ha_innodb.cc | 108 |
1 files changed, 66 insertions, 42 deletions
diff --git a/sql/ha_innodb.cc b/sql/ha_innodb.cc index 7787b543f34..14810bada31 100644 --- a/sql/ha_innodb.cc +++ b/sql/ha_innodb.cc @@ -90,10 +90,11 @@ long innobase_mirrored_log_groups, innobase_log_files_in_group, are determined in innobase_init below: */ char* innobase_data_home_dir = NULL; +char* innobase_data_file_path = NULL; char* innobase_log_group_home_dir = NULL; char* innobase_log_arch_dir = NULL; -/* The following has a midleading name: starting from 4.0.5 this also -affects Windows */ +/* The following has a misleading name: starting from 4.0.5, this also +affects Windows: */ char* innobase_unix_file_flush_method = NULL; /* Below we have boolean-valued start-up parameters, and their default @@ -104,14 +105,7 @@ my_bool innobase_log_archive = FALSE; my_bool innobase_use_native_aio = FALSE; my_bool innobase_fast_shutdown = TRUE; -/* - Set default InnoDB data file size to 10 MB and let it be - auto-extending. Thus users can use InnoDB without having to - specify any startup options. -*/ - -char *innobase_data_file_path= (char*) "ibdata1:10M:autoextend"; -static char *internal_innobase_data_file_path=0; +static char *internal_innobase_data_file_path = NULL; /* The following counter is used to convey information to InnoDB about server activity: in selects it is not sensible to call @@ -650,46 +644,59 @@ innobase_init(void) DBUG_ENTER("innobase_init"); - os_innodb_umask = (ulint)my_umask; + os_innodb_umask = (ulint)my_umask; - /* - When using the embedded server, the datadirectory is not - in the current directory. - */ - if (mysql_embedded) - default_path=mysql_real_data_home; - else - { - /* It's better to use current lib, to keep path's short */ - current_dir[0] = FN_CURLIB; - current_dir[1] = FN_LIBCHAR; - current_dir[2] = 0; - default_path=current_dir; + /* First calculate the default path for innodb_data_home_dir etc., + in case the user has not given any value. + + Note that when using the embedded server, the datadirectory is not + necessarily the current directory of this program. */ + + if (mysql_embedded) { + default_path = mysql_real_data_home; + } else { + /* It's better to use current lib, to keep paths short */ + current_dir[0] = FN_CURLIB; + current_dir[1] = FN_LIBCHAR; + current_dir[2] = 0; + default_path = current_dir; } + ut_a(default_path); + if (specialflag & SPECIAL_NO_PRIOR) { srv_set_thread_priorities = FALSE; } else { srv_set_thread_priorities = TRUE; srv_query_thread_priority = QUERY_PRIOR; } + + /* Set InnoDB initialization parameters according to the values + read from MySQL .cnf file */ - /* - Set InnoDB initialization parameters according to the values - read from MySQL .cnf file - */ + /*--------------- Data files -------------------------*/ - // Make a copy of innobase_data_file_path to not modify the original - internal_innobase_data_file_path=my_strdup(innobase_data_file_path, - MYF(MY_WME)); + /* The default dir for data files is the datadir of MySQL */ srv_data_home = (innobase_data_home_dir ? innobase_data_home_dir : default_path); - srv_arch_dir = (innobase_log_arch_dir ? innobase_log_arch_dir : - default_path); - ret = (bool) - srv_parse_data_file_paths_and_sizes(internal_innobase_data_file_path, + /* Set default InnoDB data file size to 10 MB and let it be + auto-extending. Thus users can use InnoDB in >= 4.0 without having + to specify any startup options. */ + + if (!innobase_data_file_path) { + innobase_data_file_path = (char*) "ibdata1:10M:autoextend"; + } + + /* Since InnoDB edits the argument in the next call, we make another + copy of it: */ + + internal_innobase_data_file_path = my_strdup(innobase_data_file_path, + MYF(MY_WME)); + + ret = (bool) srv_parse_data_file_paths_and_sizes( + internal_innobase_data_file_path, &srv_data_file_names, &srv_data_file_sizes, &srv_data_file_is_raw_partition, @@ -697,12 +704,26 @@ innobase_init(void) &srv_auto_extend_last_data_file, &srv_last_file_size_max); if (ret == FALSE) { - sql_print_error("InnoDB: syntax error in innodb_data_file_path"); - DBUG_RETURN(TRUE); + sql_print_error( + "InnoDB: syntax error in innodb_data_file_path"); + DBUG_RETURN(TRUE); } - if (!innobase_log_group_home_dir) - innobase_log_group_home_dir= default_path; + /* -------------- Log files ---------------------------*/ + + /* The default dir for log files is the datadir of MySQL */ + + if (!innobase_log_group_home_dir) { + innobase_log_group_home_dir = default_path; + } + + /* Since innodb_log_arch_dir has no relevance under MySQL, + starting from 4.0.6 we always set it the same as + innodb_log_group_home_dir: */ + + innobase_log_arch_dir = innobase_log_group_home_dir; + + srv_arch_dir = innobase_log_arch_dir; ret = (bool) srv_parse_log_group_home_dirs(innobase_log_group_home_dir, @@ -716,9 +737,9 @@ innobase_init(void) DBUG_RETURN(TRUE); } - srv_file_flush_method_str = (innobase_unix_file_flush_method ? - innobase_unix_file_flush_method : - NULL); + /* --------------------------------------------------*/ + + srv_file_flush_method_str = innobase_unix_file_flush_method; srv_n_log_groups = (ulint) innobase_mirrored_log_groups; srv_n_log_files = (ulint) innobase_log_files_in_group; @@ -741,7 +762,9 @@ innobase_init(void) srv_fast_shutdown = (ibool) innobase_fast_shutdown; srv_print_verbose_log = mysql_embedded ? 0 : 1; + if (strcmp(default_charset_info->name, "latin1") == 0) { + /* Store the character ordering table to InnoDB. For non-latin1 charsets we use the MySQL comparison functions, and consequently we do not need to know @@ -4179,3 +4202,4 @@ ha_innobase::get_auto_increment() } #endif /* HAVE_INNOBASE_DB */ + |