Commit 8d919770 authored by monty@mishka.local's avatar monty@mishka.local

Fixed core dump with long timezone names

Don't abort on bootstrap if a wrong --default-storage-engine is specified
parent ab939dce
......@@ -163,13 +163,8 @@ my_bool ha_storage_engine_is_enabled(enum db_type database_type)
enum db_type ha_checktype(enum db_type database_type)
{
show_table_type_st *types;
for (types= sys_table_types; types->type; types++)
{
if ((database_type == types->db_type) &&
(*types->value == SHOW_OPTION_YES))
return database_type;
}
if (ha_storage_engine_is_enabled(database_type))
return database_type;
switch (database_type) {
#ifndef NO_HASH
......
......@@ -2426,8 +2426,10 @@ static int init_common_variables(const char *conf_file_name, int argc,
{
struct tm tm_tmp;
localtime_r(&start_time,&tm_tmp);
strmov(system_time_zone, tzname[tm_tmp.tm_isdst != 0 ? 1 : 0]);
}
strmake(system_time_zone, tzname[tm_tmp.tm_isdst != 0 ? 1 : 0],
sizeof(system_time_zone)-1);
}
#endif
/*
We set SYSTEM time zone as reasonable default and
......@@ -3081,7 +3083,8 @@ we force server id to 2, but this MySQL server will not act as a slave.");
if (opt_bootstrap)
{
int error=bootstrap(stdin);
select_thread_in_use= 0; // Allow 'kill' to work
int error= bootstrap(stdin);
end_thr_alarm(1); // Don't allow alarms
unireg_abort(error ? 1 : 0);
}
......@@ -6184,9 +6187,10 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
case OPT_STORAGE_ENGINE:
{
if ((enum db_type)((global_system_variables.table_type=
ha_resolve_by_name(argument, strlen(argument)))) == DB_TYPE_UNKNOWN)
ha_resolve_by_name(argument, strlen(argument)))) ==
DB_TYPE_UNKNOWN)
{
fprintf(stderr,"Unknown table type: %s\n",argument);
fprintf(stderr,"Unknown/unsupported table type: %s\n",argument);
exit(1);
}
break;
......@@ -6442,10 +6446,14 @@ static void get_options(int argc,char **argv)
if (!ha_storage_engine_is_enabled((enum db_type)
global_system_variables.table_type))
{
sql_print_error("Default storage engine (%s) is not available",
ha_get_storage_engine((enum db_type)
global_system_variables.table_type));
exit(1);
if (!opt_bootstrap)
{
sql_print_error("Default storage engine (%s) is not available",
ha_get_storage_engine((enum db_type)
global_system_variables.table_type));
exit(1);
}
global_system_variables.table_type= DB_TYPE_MYISAM;
}
if (argc > 0)
......
......@@ -2985,8 +2985,8 @@ bool sys_var_thd_storage_engine::check(THD *thd, set_var *var)
enum db_type db_type;
if (!(res=var->value->val_str(&str)) ||
!(var->save_result.ulong_value=
(ulong) (db_type= ha_resolve_by_name(res->ptr(), res->length()))) ||
ha_checktype(db_type) != db_type)
(ulong) (db_type= ha_resolve_by_name(res->ptr(), res->length()))) ||
ha_checktype(db_type) != db_type)
{
value= res ? res->c_ptr() : "NULL";
goto err;
......
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