mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-3985 crash: uninstall soname 'a'
This commit is contained in:
@ -69,6 +69,8 @@ UNINSTALL PLUGIN EXAMPLE;
|
|||||||
ERROR 42000: PLUGIN EXAMPLE does not exist
|
ERROR 42000: PLUGIN EXAMPLE does not exist
|
||||||
UNINSTALL PLUGIN non_exist;
|
UNINSTALL PLUGIN non_exist;
|
||||||
ERROR 42000: PLUGIN non_exist does not exist
|
ERROR 42000: PLUGIN non_exist does not exist
|
||||||
|
UNINSTALL SONAME 'non_exist';
|
||||||
|
ERROR 42000: SONAME non_exist.so does not exist
|
||||||
#
|
#
|
||||||
# Bug#32034: check_func_enum() does not check correct values but set it
|
# Bug#32034: check_func_enum() does not check correct values but set it
|
||||||
# to impossible int val
|
# to impossible int val
|
||||||
|
@ -4,14 +4,14 @@
|
|||||||
CREATE TABLE t1(a int) ENGINE=EXAMPLE;
|
CREATE TABLE t1(a int) ENGINE=EXAMPLE;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
eval INSTALL PLUGIN example SONAME 'ha_example';
|
INSTALL PLUGIN example SONAME 'ha_example';
|
||||||
--replace_regex /\.dll/.so/
|
--replace_regex /\.dll/.so/
|
||||||
--error 1125
|
--error 1125
|
||||||
eval INSTALL PLUGIN EXAMPLE SONAME 'ha_example';
|
INSTALL PLUGIN EXAMPLE SONAME 'ha_example';
|
||||||
|
|
||||||
UNINSTALL PLUGIN example;
|
UNINSTALL PLUGIN example;
|
||||||
|
|
||||||
eval INSTALL SONAME 'ha_example';
|
INSTALL SONAME 'ha_example';
|
||||||
--replace_column 5 #
|
--replace_column 5 #
|
||||||
--replace_regex /\.dll/.so/
|
--replace_regex /\.dll/.so/
|
||||||
--query_vertical select * from information_schema.plugins where plugin_library like 'ha_example%'
|
--query_vertical select * from information_schema.plugins where plugin_library like 'ha_example%'
|
||||||
@ -28,7 +28,7 @@ set global example_enum_var= e1;
|
|||||||
show status like 'example%';
|
show status like 'example%';
|
||||||
show variables like 'example%';
|
show variables like 'example%';
|
||||||
|
|
||||||
eval UNINSTALL SONAME 'ha_example';
|
UNINSTALL SONAME 'ha_example';
|
||||||
--replace_column 5 #
|
--replace_column 5 #
|
||||||
--replace_regex /\.dll/.so/
|
--replace_regex /\.dll/.so/
|
||||||
--query_vertical select * from information_schema.plugins where plugin_library like 'ha_example%'
|
--query_vertical select * from information_schema.plugins where plugin_library like 'ha_example%'
|
||||||
@ -41,12 +41,18 @@ UNINSTALL PLUGIN EXAMPLE;
|
|||||||
--error 1305
|
--error 1305
|
||||||
UNINSTALL PLUGIN non_exist;
|
UNINSTALL PLUGIN non_exist;
|
||||||
|
|
||||||
|
#
|
||||||
|
# MDEV-3985 crash: uninstall soname 'a'
|
||||||
|
#
|
||||||
|
--replace_regex /\.dll/.so/
|
||||||
|
--error 1305
|
||||||
|
UNINSTALL SONAME 'non_exist';
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # Bug#32034: check_func_enum() does not check correct values but set it
|
--echo # Bug#32034: check_func_enum() does not check correct values but set it
|
||||||
--echo # to impossible int val
|
--echo # to impossible int val
|
||||||
--echo #
|
--echo #
|
||||||
eval INSTALL PLUGIN example SONAME 'ha_example';
|
INSTALL PLUGIN example SONAME 'ha_example';
|
||||||
|
|
||||||
SET GLOBAL example_enum_var= e1;
|
SET GLOBAL example_enum_var= e1;
|
||||||
SET GLOBAL example_enum_var= e2;
|
SET GLOBAL example_enum_var= e2;
|
||||||
@ -60,7 +66,7 @@ UNINSTALL PLUGIN example;
|
|||||||
#
|
#
|
||||||
# Bug #32757 hang with sql_mode set when setting some global variables
|
# Bug #32757 hang with sql_mode set when setting some global variables
|
||||||
#
|
#
|
||||||
eval INSTALL PLUGIN example SONAME 'ha_example';
|
INSTALL PLUGIN example SONAME 'ha_example';
|
||||||
|
|
||||||
select @@session.sql_mode into @old_sql_mode;
|
select @@session.sql_mode into @old_sql_mode;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates.
|
Copyright (c) 2005, 2012, Oracle and/or its affiliates.
|
||||||
Copyright (c) 2010, 2011, Monty Program Ab
|
Copyright (c) 2010, 2013, Monty Program Ab
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -2260,13 +2260,21 @@ bool mysql_uninstall_plugin(THD *thd, const LEX_STRING *name,
|
|||||||
{
|
{
|
||||||
fix_dl_name(thd->mem_root, &dl);
|
fix_dl_name(thd->mem_root, &dl);
|
||||||
st_plugin_dl *plugin_dl= plugin_dl_find(&dl);
|
st_plugin_dl *plugin_dl= plugin_dl_find(&dl);
|
||||||
struct st_maria_plugin *plugin;
|
if (plugin_dl)
|
||||||
for (plugin= plugin_dl->plugins; plugin->info; plugin++)
|
{
|
||||||
|
for (struct st_maria_plugin *plugin= plugin_dl->plugins;
|
||||||
|
plugin->info; plugin++)
|
||||||
{
|
{
|
||||||
LEX_STRING str= { const_cast<char*>(plugin->name), strlen(plugin->name) };
|
LEX_STRING str= { const_cast<char*>(plugin->name), strlen(plugin->name) };
|
||||||
error|= do_uninstall(thd, table, &str);
|
error|= do_uninstall(thd, table, &str);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
my_error(ER_SP_DOES_NOT_EXIST, MYF(0), "SONAME", dl.str);
|
||||||
|
error= true;
|
||||||
|
}
|
||||||
|
}
|
||||||
reap_plugins();
|
reap_plugins();
|
||||||
|
|
||||||
mysql_mutex_unlock(&LOCK_plugin);
|
mysql_mutex_unlock(&LOCK_plugin);
|
||||||
|
Reference in New Issue
Block a user