Commit 4934c9be authored by unknown's avatar unknown
Browse files

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)


sql/mysqld.cc:
  Move check of whether default storage engine is available to after
  storage engine initialization.
parent e2220f47
Loading
Loading
Loading
Loading
+17 −16
Original line number Diff line number Diff line
@@ -3033,6 +3033,23 @@ server.");
    sql_print_error("Can't init databases");
    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 *) &mysql_bin_log :
                               (TC_LOG *) &tc_log_mmap) :
@@ -6999,22 +7016,6 @@ static void get_options(int argc,char **argv)
      !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");

  /*
    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)
  {
    fprintf(stderr, "%s: Too many arguments (first extra is '%s').\nUse --help to get a list of available options\n", my_progname, *argv);