Skip to content

Commit

Permalink
MDEV-27095 installing one spider plugin should not trigger others
Browse files Browse the repository at this point in the history
There are several plugins in ha_spider: spider, spider_alloc_mem,
spider_wrapper_protocols, spider_rewrite etc.

INSTALL PLUGIN foo SONAME ha_spider causes all the other ones to be
installed by the init queries where foo is any of the plugins.

This introduces unnecessary complexiy. For example it reads
mysql.plugins to find all other plugins, causing the hack of moving
spider plugin init to a separate thread.

To install all spider related plugins, install soname ha_spider should
be used instead.

This also fixes spurious rows in mysql.plugin when installing say only
the spider plugin with `plugin-load-add=SPIDER=ha_spider.so`:

select * from mysql.plugin;
name	dl
spider_alloc_mem	ha_spider.so # should not be here
spider_wrapper_protocols	ha_spider.so # should not be here

Adapted from part of the reverted commit
c160a11.
  • Loading branch information
mariadb-YuchenPei committed Dec 7, 2023
1 parent 66fafdb commit f0af56b
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 100 deletions.
4 changes: 2 additions & 2 deletions storage/spider/mysql-test/spider/include/init_spider.inc
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ let $VERSION_COMPILE_OS_WIN=
`SELECT IF(@@version_compile_os like 'Win%', 1, 0)`;
if ($VERSION_COMPILE_OS_WIN)
{
INSTALL PLUGIN spider SONAME 'ha_spider.dll';
INSTALL SONAME 'ha_spider';
if ($CHILD2_1_MYPORT)
{
eval CREATE SERVER s_2_1 FOREIGN DATA WRAPPER mysql OPTIONS (
Expand Down Expand Up @@ -66,7 +66,7 @@ if ($VERSION_COMPILE_OS_WIN)
}
if (!$VERSION_COMPILE_OS_WIN)
{
INSTALL PLUGIN spider SONAME 'ha_spider.so';
INSTALL SONAME 'ha_spider';
if ($CHILD2_1_MYSOCK)
{
eval CREATE SERVER s_2_1 FOREIGN DATA WRAPPER mysql OPTIONS (
Expand Down
98 changes: 0 additions & 98 deletions storage/spider/spd_init_query.h
Original file line number Diff line number Diff line change
Expand Up @@ -612,57 +612,6 @@ static LEX_STRING spider_init_queries[] = {
"create procedure mysql.spider_plugin_installer()"
"begin"
" set @win_plugin := IF(@@version_compile_os like 'Win%', 1, 0);"
/*
Install spider plugin
*/
/*
" set @have_spider_i_s_plugin := 0;"
" select @have_spider_i_s_plugin := 1 from INFORMATION_SCHEMA.plugins"
" where PLUGIN_NAME = 'SPIDER';"
" set @have_spider_plugin := 0;"
" select @have_spider_plugin := 1 from mysql.plugin"
" where name = 'spider';"
" if @have_spider_i_s_plugin = 0 then"
" if @have_spider_plugin = 1 then"
" / *"
" spider plugin is present in mysql.plugin but not in"
" information_schema.plugins. Remove spider plugin entry"
" in mysql.plugin first."
" * /"
" delete from mysql.plugin where name = 'spider';"
" end if;"
" if @win_plugin = 0 then "
" install plugin spider soname 'ha_spider.so';"
" else"
" install plugin spider soname 'ha_spider.dll';"
" end if;"
" end if;"
*/
/*
Install spider_alloc_mem plugin
*/
" set @have_spider_i_s_alloc_mem_plugin := 0;"
" select @have_spider_i_s_alloc_mem_plugin := 1"
" from INFORMATION_SCHEMA.plugins"
" where PLUGIN_NAME = 'SPIDER_ALLOC_MEM';"
" set @have_spider_alloc_mem_plugin := 0;"
" select @have_spider_alloc_mem_plugin := 1 from mysql.plugin"
" where name = 'spider_alloc_mem';"
" if @have_spider_i_s_alloc_mem_plugin = 0 then"
" if @have_spider_alloc_mem_plugin = 1 then"
" /*"
" spider_alloc_mem plugin is present in mysql.plugin but not in"
" information_schema.plugins. Remove spider_alloc_mem plugin entry"
" in mysql.plugin first."
" */"
" delete from mysql.plugin where name = 'spider_alloc_mem';"
" end if;"
" if @win_plugin = 0 then "
" install plugin spider_alloc_mem soname 'ha_spider.so';"
" else"
" install plugin spider_alloc_mem soname 'ha_spider.dll';"
" end if;"
" end if;"
" set @have_spider_direct_sql_udf := 0;"
" select @have_spider_direct_sql_udf := 1 from mysql.func"
" where name = 'spider_direct_sql';"
Expand Down Expand Up @@ -723,53 +672,6 @@ static LEX_STRING spider_init_queries[] = {
" soname 'ha_spider.dll';"
" end if;"
" end if;"
" if @server_name = 'MariaDB' and"
" ("
" @server_major_version > 10 or"
" ("
" @server_major_version = 10 and"
" @server_minor_version >= 6"
" )"
" )"
" then"
/*
Install spider_rewrite plugin
*/
" set @have_spider_i_s_rewrite_plugin := 0;"
" select @have_spider_i_s_rewrite_plugin := 1"
" from INFORMATION_SCHEMA.plugins"
" where PLUGIN_NAME = 'SPIDER_REWRITE';"
" set @have_spider_rewrite_plugin := 0;"
" select @have_spider_rewrite_plugin := 1 from mysql.plugin"
" where name = 'spider_rewrite';"
" if @have_spider_i_s_rewrite_plugin = 0 then"
" if @have_spider_rewrite_plugin = 1 then"
" /*"
" spider_rewrite plugin is present in mysql.plugin but not in"
" information_schema.plugins. Remove spider_rewrite plugin entry"
" in mysql.plugin first."
" */"
" delete from mysql.plugin where name = 'spider_rewrite';"
" end if;"
" if @win_plugin = 0 then "
" install plugin spider_rewrite soname 'ha_spider.so';"
" else"
" install plugin spider_rewrite soname 'ha_spider.dll';"
" end if;"
" end if;"
" set @have_spider_flush_rewrite_cache_udf := 0;"
" select @have_spider_flush_rewrite_cache_udf := 1 from mysql.func"
" where name = 'spider_flush_rewrite_cache';"
" if @have_spider_flush_rewrite_cache_udf = 0 then"
" if @win_plugin = 0 then "
" create function spider_flush_rewrite_cache returns int"
" soname 'ha_spider.so';"
" else"
" create function spider_flush_rewrite_cache returns int"
" soname 'ha_spider.dll';"
" end if;"
" end if;"
" end if;"
"end;"
)},
{C_STRING_WITH_LEN(
Expand Down

0 comments on commit f0af56b

Please sign in to comment.