mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Check that the default storage engine is really available, and
refuse to start up if it is not. (Bug #9815) sql/handler.cc: Add ha_storage_engine_is_enabled function. sql/handler.h: Declare ha_storage_engine_is_enabled() sql/mysqld.cc: Abort startup if the specified default storage engine is not available.
This commit is contained in:
@ -145,6 +145,20 @@ const char *ha_get_storage_engine(enum db_type db_type)
|
|||||||
return "none";
|
return "none";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
my_bool ha_storage_engine_is_enabled(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 TRUE;
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* Use other database handler if databasehandler is not incompiled */
|
/* Use other database handler if databasehandler is not incompiled */
|
||||||
|
|
||||||
enum db_type ha_checktype(enum db_type database_type)
|
enum db_type ha_checktype(enum db_type database_type)
|
||||||
|
@ -542,6 +542,7 @@ int ha_init(void);
|
|||||||
int ha_panic(enum ha_panic_function flag);
|
int ha_panic(enum ha_panic_function flag);
|
||||||
void ha_close_connection(THD* thd);
|
void ha_close_connection(THD* thd);
|
||||||
enum db_type ha_checktype(enum db_type database_type);
|
enum db_type ha_checktype(enum db_type database_type);
|
||||||
|
my_bool ha_storage_engine_is_enabled(enum db_type database_type);
|
||||||
int ha_create_table(const char *name, HA_CREATE_INFO *create_info,
|
int ha_create_table(const char *name, HA_CREATE_INFO *create_info,
|
||||||
bool update_create_info);
|
bool update_create_info);
|
||||||
int ha_create_table_from_engine(THD* thd, const char *db, const char *name,
|
int ha_create_table_from_engine(THD* thd, const char *db, const char *name,
|
||||||
|
@ -6435,6 +6435,18 @@ static void get_options(int argc,char **argv)
|
|||||||
sql_print_warning("this binary does not contain BDB storage engine");
|
sql_print_warning("this binary does not contain BDB storage engine");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
Check that the default storage engine is actually available.
|
||||||
|
*/
|
||||||
|
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 (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);
|
||||||
|
Reference in New Issue
Block a user