Commit 06bac1a7 authored by Sergei Golubchik's avatar Sergei Golubchik

MDEV-4529 Assertion `tmp->state == 4' fails on mix of INSTALL SONAME / UNINSTALL PLUGIN

fix incorrect assert
parent db6c4e1c
...@@ -173,3 +173,22 @@ select 1; ...@@ -173,3 +173,22 @@ select 1;
UNINSTALL PLUGIN example; UNINSTALL PLUGIN example;
UNINSTALL PLUGIN MyISAM; UNINSTALL PLUGIN MyISAM;
ERROR HY000: Built-in plugins cannot be deleted ERROR HY000: Built-in plugins cannot be deleted
select plugin_name from information_schema.plugins where plugin_library like 'ha_example%';
plugin_name
install soname 'ha_example';
select plugin_name from information_schema.plugins where plugin_library like 'ha_example%';
plugin_name
EXAMPLE
UNUSABLE
uninstall plugin example;
select plugin_name from information_schema.plugins where plugin_library like 'ha_example%';
plugin_name
UNUSABLE
install soname 'ha_example';
select plugin_name from information_schema.plugins where plugin_library like 'ha_example%';
plugin_name
EXAMPLE
UNUSABLE
uninstall soname 'ha_example';
select plugin_name from information_schema.plugins where plugin_library like 'ha_example%';
plugin_name
...@@ -155,3 +155,17 @@ UNINSTALL PLUGIN example; ...@@ -155,3 +155,17 @@ UNINSTALL PLUGIN example;
--error ER_PLUGIN_DELETE_BUILTIN --error ER_PLUGIN_DELETE_BUILTIN
UNINSTALL PLUGIN MyISAM; UNINSTALL PLUGIN MyISAM;
#
# MDEV-4529 Assertion `tmp->state == 4' fails on mix of INSTALL SONAME / UNINSTALL PLUGIN
#
select plugin_name from information_schema.plugins where plugin_library like 'ha_example%';
install soname 'ha_example';
select plugin_name from information_schema.plugins where plugin_library like 'ha_example%';
uninstall plugin example;
select plugin_name from information_schema.plugins where plugin_library like 'ha_example%';
install soname 'ha_example';
select plugin_name from information_schema.plugins where plugin_library like 'ha_example%';
uninstall soname 'ha_example';
select plugin_name from information_schema.plugins where plugin_library like 'ha_example%';
...@@ -2032,9 +2032,13 @@ static bool finalize_install(THD *thd, TABLE *table, const LEX_STRING *name) ...@@ -2032,9 +2032,13 @@ static bool finalize_install(THD *thd, TABLE *table, const LEX_STRING *name)
ER_CANT_INITIALIZE_UDF, ER(ER_CANT_INITIALIZE_UDF), ER_CANT_INITIALIZE_UDF, ER(ER_CANT_INITIALIZE_UDF),
name->str, "Plugin is disabled"); name->str, "Plugin is disabled");
} }
else if (tmp->state != PLUGIN_IS_UNINITIALIZED)
{
/* already installed */
return 0;
}
else else
{ {
DBUG_ASSERT(tmp->state == PLUGIN_IS_UNINITIALIZED);
if (plugin_initialize(tmp)) if (plugin_initialize(tmp))
{ {
report_error(REPORT_TO_USER, ER_CANT_INITIALIZE_UDF, name->str, report_error(REPORT_TO_USER, ER_CANT_INITIALIZE_UDF, name->str,
......
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