From f06ab0fc99daa9049f8b9f8992d403047efd41e1 Mon Sep 17 00:00:00 2001 From: Vladislav Vaintroub Date: Tue, 18 Apr 2017 17:20:55 +0000 Subject: [PATCH] MDEV-9566 Server code changes in preparation for mariabackup - Backup will load encryption plugins outside of mysqld. Thus, do not force loading MyISAM plugin in plugin_load. - init_signals() will be used in backup, make it global, not static. --- sql/mysqld.cc | 4 ++-- sql/sql_plugin.cc | 32 +++++++++++++++++++------------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 83829841b39..0bf57d9543b 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -3100,7 +3100,7 @@ LONG WINAPI my_unhandler_exception_filter(EXCEPTION_POINTERS *ex_pointers) } -static void init_signals(void) +void init_signals(void) { if(opt_console) SetConsoleCtrlHandler(console_event_handler,TRUE); @@ -3231,7 +3231,7 @@ static size_t my_setstacksize(pthread_attr_t *attr, size_t stacksize) #ifndef EMBEDDED_LIBRARY -static void init_signals(void) +void init_signals(void) { sigset_t set; struct sigaction sa; diff --git a/sql/sql_plugin.cc b/sql/sql_plugin.cc index eacf39098b4..469e96c5fee 100644 --- a/sql/sql_plugin.cc +++ b/sql/sql_plugin.cc @@ -1606,22 +1606,28 @@ int plugin_init(int *argc, char **argv, int flags) } } - /* First, we initialize only MyISAM - that should always succeed */ - plugin_ptr= plugin_find_internal(&MyISAM, MYSQL_STORAGE_ENGINE_PLUGIN); - DBUG_ASSERT(plugin_ptr); - DBUG_ASSERT(plugin_ptr->load_option == PLUGIN_FORCE); - - if (plugin_initialize(&tmp_root, plugin_ptr, argc, argv, false)) - goto err_unlock; - /* - set the global default storage engine variable so that it will - not be null in any child thread. + First, we initialize only MyISAM - that should almost always succeed + (almost always, because plugins can be loaded outside of the server, too). */ - global_system_variables.table_plugin= - intern_plugin_lock(NULL, plugin_int_to_ref(plugin_ptr)); - DBUG_ASSERT(plugin_ptr->ref_count == 1); + plugin_ptr= plugin_find_internal(&MyISAM, MYSQL_STORAGE_ENGINE_PLUGIN); + DBUG_ASSERT(plugin_ptr || !mysql_mandatory_plugins[0]); + if (plugin_ptr) + { + DBUG_ASSERT(plugin_ptr->load_option == PLUGIN_FORCE); + if (plugin_initialize(&tmp_root, plugin_ptr, argc, argv, false)) + goto err_unlock; + + /* + set the global default storage engine variable so that it will + not be null in any child thread. + */ + global_system_variables.table_plugin = + intern_plugin_lock(NULL, plugin_int_to_ref(plugin_ptr)); + DBUG_ASSERT(plugin_ptr->ref_count == 1); + + } mysql_mutex_unlock(&LOCK_plugin); /* Register (not initialize!) all dynamic plugins */