Commit 1fb33e4a 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 36c75351
......@@ -173,3 +173,22 @@ select 1;
UNINSTALL PLUGIN example;
UNINSTALL PLUGIN MyISAM;
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;
--error ER_PLUGIN_DELETE_BUILTIN
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)
ER_CANT_INITIALIZE_UDF, ER(ER_CANT_INITIALIZE_UDF),
name->str, "Plugin is disabled");
}
else if (tmp->state != PLUGIN_IS_UNINITIALIZED)
{
/* already installed */
return 0;
}
else
{
DBUG_ASSERT(tmp->state == PLUGIN_IS_UNINITIALIZED);
if (plugin_initialize(tmp))
{
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