summaryrefslogtreecommitdiff
path: root/sql/sql_plugin.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/sql_plugin.cc')
-rw-r--r--sql/sql_plugin.cc30
1 files changed, 18 insertions, 12 deletions
diff --git a/sql/sql_plugin.cc b/sql/sql_plugin.cc
index 6107595e930..e9fc0f62617 100644
--- a/sql/sql_plugin.cc
+++ b/sql/sql_plugin.cc
@@ -1620,22 +1620,28 @@ int plugin_init(int *argc, char **argv, int flags)
}
}
- /* First, we initialize only MyISAM - that should always succeed */
+ /*
+ First, we initialize only MyISAM - that should almost always succeed
+ (almost always, because plugins can be loaded outside of the server, too).
+ */
plugin_ptr= plugin_find_internal(&MyISAM, MYSQL_STORAGE_ENGINE_PLUGIN);
- DBUG_ASSERT(plugin_ptr);
- DBUG_ASSERT(plugin_ptr->load_option == PLUGIN_FORCE);
+ 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;
+ 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);
+ /*
+ 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 */