Commit a6ae1c2d authored by Yuchen Pei's avatar Yuchen Pei

MDEV-32487 Check plugin is ready when resolving storage engine

This handles the situation when one thread is still initiating a
storage engine plugin, while another is creating a table using it.
parent 1e5b0ff9
......@@ -291,13 +291,20 @@ plugin_ref ha_resolve_by_name(THD *thd, const LEX_CSTRING *name,
}
/*
Resolve the storage engine by name.
Succeed if the storage engine is found and initialised. Otherwise
fail if the sql mode contains NO_ENGINE_SUBSTITUTION.
*/
bool
Storage_engine_name::resolve_storage_engine_with_error(THD *thd,
handlerton **ha,
bool tmp_table)
{
if (plugin_ref plugin= ha_resolve_by_name(thd, &m_storage_engine_name,
tmp_table))
plugin_ref plugin;
if ((plugin= ha_resolve_by_name(thd, &m_storage_engine_name, tmp_table)) &&
(plugin_ref_to_int(plugin)->state == PLUGIN_IS_READY))
{
*ha= plugin_hton(plugin);
return false;
......
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