Commit 90e43463 authored by jimw@mysql.com's avatar jimw@mysql.com

Don't allow startup when default storage engine is specified to be a

storage engine that is disabled. This was fixed once in 4.1, but regressed
in 5.0 because of changes to storage engine initialization. (Bug #9815)
parent 69d985cc
...@@ -3033,6 +3033,23 @@ server."); ...@@ -3033,6 +3033,23 @@ server.");
sql_print_error("Can't init databases"); sql_print_error("Can't init databases");
unireg_abort(1); unireg_abort(1);
} }
/*
Check that the default storage engine is actually available.
*/
if (!ha_storage_engine_is_enabled((enum db_type)
global_system_variables.table_type))
{
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));
unireg_abort(1);
}
global_system_variables.table_type= DB_TYPE_MYISAM;
}
tc_log= (total_ha_2pc > 1 ? (opt_bin_log ? tc_log= (total_ha_2pc > 1 ? (opt_bin_log ?
(TC_LOG *) &mysql_bin_log : (TC_LOG *) &mysql_bin_log :
(TC_LOG *) &tc_log_mmap) : (TC_LOG *) &tc_log_mmap) :
...@@ -6999,22 +7016,6 @@ static void get_options(int argc,char **argv) ...@@ -6999,22 +7016,6 @@ static void get_options(int argc,char **argv)
!opt_slow_log) !opt_slow_log)
sql_print_warning("options --log-slow-admin-statements and --log-queries-not-using-indexes have no effect if --log-slow-queries is not set"); sql_print_warning("options --log-slow-admin-statements and --log-queries-not-using-indexes have no effect if --log-slow-queries is not set");
/*
Check that the default storage engine is actually available.
*/
if (!ha_storage_engine_is_enabled((enum db_type)
global_system_variables.table_type))
{
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) if (argc > 0)
{ {
fprintf(stderr, "%s: Too many arguments (first extra is '%s').\nUse --help to get a list of available options\n", my_progname, *argv); fprintf(stderr, "%s: Too many arguments (first extra is '%s').\nUse --help to get a list of available options\n", my_progname, *argv);
......
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