Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
9aac2bf8
Commit
9aac2bf8
authored
Aug 23, 2018
by
Sergei Golubchik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
MDEV-16294 post-merge cleanups
Closes #757
parent
65180225
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
24 additions
and
40 deletions
+24
-40
mysql-test/main/plugin.result
mysql-test/main/plugin.result
+1
-2
mysql-test/main/plugin.test
mysql-test/main/plugin.test
+4
-2
sql/sql_plugin.cc
sql/sql_plugin.cc
+17
-36
sql/sql_yacc.yy
sql/sql_yacc.yy
+2
-0
No files found.
mysql-test/main/plugin.result
View file @
9aac2bf8
...
@@ -332,10 +332,9 @@ RENAME TABLE t1 TO t2;
...
@@ -332,10 +332,9 @@ RENAME TABLE t1 TO t2;
ERROR 42S02: Table 'test.t1' doesn't exist
ERROR 42S02: Table 'test.t1' doesn't exist
DROP TABLE t1;
DROP TABLE t1;
#
#
# INSTALL IF NOT EXISTS
[PLUGIN name]
SONAME library /
# INSTALL IF NOT EXISTS
PLUGIN name
SONAME library /
# UNINSTALL IF EXISTS PLUGIN|SONAME name
# UNINSTALL IF EXISTS PLUGIN|SONAME name
#
#
#
select PLUGIN_NAME,PLUGIN_STATUS,PLUGIN_TYPE from information_schema.plugins where plugin_library like 'ha_example%';
select PLUGIN_NAME,PLUGIN_STATUS,PLUGIN_TYPE from information_schema.plugins where plugin_library like 'ha_example%';
PLUGIN_NAME PLUGIN_STATUS PLUGIN_TYPE
PLUGIN_NAME PLUGIN_STATUS PLUGIN_TYPE
INSTALL PLUGIN IF NOT EXISTS example SONAME 'ha_example';
INSTALL PLUGIN IF NOT EXISTS example SONAME 'ha_example';
...
...
mysql-test/main/plugin.test
View file @
9aac2bf8
...
@@ -267,10 +267,9 @@ RENAME TABLE t1 TO t2;
...
@@ -267,10 +267,9 @@ RENAME TABLE t1 TO t2;
DROP
TABLE
t1
;
DROP
TABLE
t1
;
--
echo
#
--
echo
#
--
echo
# INSTALL IF NOT EXISTS
[PLUGIN name]
SONAME library /
--
echo
# INSTALL IF NOT EXISTS
PLUGIN name
SONAME library /
--
echo
# UNINSTALL IF EXISTS PLUGIN|SONAME name
--
echo
# UNINSTALL IF EXISTS PLUGIN|SONAME name
--
echo
#
--
echo
#
--
echo
#
select
PLUGIN_NAME
,
PLUGIN_STATUS
,
PLUGIN_TYPE
from
information_schema
.
plugins
where
plugin_library
like
'ha_example%'
;
select
PLUGIN_NAME
,
PLUGIN_STATUS
,
PLUGIN_TYPE
from
information_schema
.
plugins
where
plugin_library
like
'ha_example%'
;
INSTALL
PLUGIN
IF
NOT
EXISTS
example
SONAME
'ha_example'
;
INSTALL
PLUGIN
IF
NOT
EXISTS
example
SONAME
'ha_example'
;
...
@@ -297,9 +296,12 @@ select PLUGIN_NAME,PLUGIN_STATUS,PLUGIN_TYPE from information_schema.plugins whe
...
@@ -297,9 +296,12 @@ select PLUGIN_NAME,PLUGIN_STATUS,PLUGIN_TYPE from information_schema.plugins whe
UNINSTALL
SONAME
IF
EXISTS
'ha_example'
;
UNINSTALL
SONAME
IF
EXISTS
'ha_example'
;
--
replace_regex
/
\
.
dll
/.
so
/
UNINSTALL
SONAME
IF
EXISTS
'ha_example'
;
UNINSTALL
SONAME
IF
EXISTS
'ha_example'
;
--
replace_regex
/
\
.
dll
/.
so
/
SHOW
WARNINGS
;
SHOW
WARNINGS
;
select
PLUGIN_NAME
,
PLUGIN_STATUS
,
PLUGIN_TYPE
from
information_schema
.
plugins
where
plugin_library
like
'ha_example%'
;
select
PLUGIN_NAME
,
PLUGIN_STATUS
,
PLUGIN_TYPE
from
information_schema
.
plugins
where
plugin_library
like
'ha_example%'
;
--
replace_regex
/
\
.
dll
/.
so
/
--
error
1305
--
error
1305
UNINSTALL
SONAME
'ha_example'
;
UNINSTALL
SONAME
'ha_example'
;
sql/sql_plugin.cc
View file @
9aac2bf8
...
@@ -1079,7 +1079,7 @@ static st_plugin_int *plugin_insert_or_reuse(struct st_plugin_int *plugin)
...
@@ -1079,7 +1079,7 @@ static st_plugin_int *plugin_insert_or_reuse(struct st_plugin_int *plugin)
Requires that a write-lock is held on LOCK_system_variables_hash
Requires that a write-lock is held on LOCK_system_variables_hash
*/
*/
static
enum
install_status
plugin_add
(
MEM_ROOT
*
tmp_root
,
bool
if_not_exists
,
static
enum
install_status
plugin_add
(
MEM_ROOT
*
tmp_root
,
bool
if_not_exists
,
const
LEX_CSTRING
*
name
,
LEX_CSTRING
*
dl
,
myf
MyFlags
)
const
LEX_CSTRING
*
name
,
LEX_CSTRING
*
dl
,
myf
MyFlags
)
{
{
struct
st_plugin_int
tmp
,
*
maybe_dupe
;
struct
st_plugin_int
tmp
,
*
maybe_dupe
;
struct
st_maria_plugin
*
plugin
;
struct
st_maria_plugin
*
plugin
;
...
@@ -1090,15 +1090,9 @@ static enum install_status plugin_add(MEM_ROOT *tmp_root, bool if_not_exists,
...
@@ -1090,15 +1090,9 @@ static enum install_status plugin_add(MEM_ROOT *tmp_root, bool if_not_exists,
if
(
name
->
str
&&
plugin_find_internal
(
name
,
MYSQL_ANY_PLUGIN
))
if
(
name
->
str
&&
plugin_find_internal
(
name
,
MYSQL_ANY_PLUGIN
))
{
{
if
(
if_not_exists
)
if
(
if_not_exists
)
{
MyFlags
|=
ME_NOTE
;
my_error
(
ER_PLUGIN_INSTALLED
,
MyFlags
|
ME_NOTE
,
name
->
str
);
my_error
(
ER_PLUGIN_INSTALLED
,
MyFlags
,
name
->
str
);
DBUG_RETURN
(
INSTALL_FAIL_WARN_OK
);
DBUG_RETURN
(
if_not_exists
?
INSTALL_FAIL_WARN_OK
:
INSTALL_FAIL_NOT_OK
);
}
else
{
my_error
(
ER_PLUGIN_INSTALLED
,
MyFlags
,
name
->
str
);
DBUG_RETURN
(
INSTALL_FAIL_NOT_OK
);
}
}
}
/* Clear the whole struct to catch future extensions. */
/* Clear the whole struct to catch future extensions. */
bzero
((
char
*
)
&
tmp
,
sizeof
(
tmp
));
bzero
((
char
*
)
&
tmp
,
sizeof
(
tmp
));
...
@@ -1881,7 +1875,7 @@ static void plugin_load(MEM_ROOT *tmp_root)
...
@@ -1881,7 +1875,7 @@ static void plugin_load(MEM_ROOT *tmp_root)
static
bool
plugin_load_list
(
MEM_ROOT
*
tmp_root
,
const
char
*
list
)
static
bool
plugin_load_list
(
MEM_ROOT
*
tmp_root
,
const
char
*
list
)
{
{
char
buffer
[
FN_REFLEN
];
char
buffer
[
FN_REFLEN
];
LEX_STRING
name
=
{
buffer
,
0
},
dl
=
{
NULL
,
0
},
*
str
=
&
name
;
LEX_
C
STRING
name
=
{
buffer
,
0
},
dl
=
{
NULL
,
0
},
*
str
=
&
name
;
char
*
p
=
buffer
;
char
*
p
=
buffer
;
DBUG_ENTER
(
"plugin_load_list"
);
DBUG_ENTER
(
"plugin_load_list"
);
while
(
list
)
while
(
list
)
...
@@ -1900,7 +1894,7 @@ static bool plugin_load_list(MEM_ROOT *tmp_root, const char *list)
...
@@ -1900,7 +1894,7 @@ static bool plugin_load_list(MEM_ROOT *tmp_root, const char *list)
#ifndef __WIN__
#ifndef __WIN__
case
':'
:
/* can't use this as delimiter as it may be drive letter */
case
':'
:
/* can't use this as delimiter as it may be drive letter */
#endif
#endif
str
->
str
[
str
->
length
]
=
'\0'
;
p
[
-
1
]
=
0
;
if
(
str
==
&
name
)
// load all plugins in named module
if
(
str
==
&
name
)
// load all plugins in named module
{
{
if
(
!
name
.
length
)
if
(
!
name
.
length
)
...
@@ -1913,7 +1907,7 @@ static bool plugin_load_list(MEM_ROOT *tmp_root, const char *list)
...
@@ -1913,7 +1907,7 @@ static bool plugin_load_list(MEM_ROOT *tmp_root, const char *list)
mysql_mutex_lock
(
&
LOCK_plugin
);
mysql_mutex_lock
(
&
LOCK_plugin
);
free_root
(
tmp_root
,
MYF
(
MY_MARK_BLOCKS_FREE
));
free_root
(
tmp_root
,
MYF
(
MY_MARK_BLOCKS_FREE
));
name
.
str
=
0
;
// load everything
name
.
str
=
0
;
// load everything
if
(
plugin_add
(
tmp_root
,
false
,
(
LEX_CSTRING
*
)
&
name
,
(
LEX_CSTRING
*
)
&
dl
,
if
(
plugin_add
(
tmp_root
,
false
,
&
name
,
&
dl
,
MYF
(
ME_ERROR_LOG
))
!=
INSTALL_GOOD
)
MYF
(
ME_ERROR_LOG
))
!=
INSTALL_GOOD
)
goto
error
;
goto
error
;
}
}
...
@@ -1921,7 +1915,7 @@ static bool plugin_load_list(MEM_ROOT *tmp_root, const char *list)
...
@@ -1921,7 +1915,7 @@ static bool plugin_load_list(MEM_ROOT *tmp_root, const char *list)
{
{
free_root
(
tmp_root
,
MYF
(
MY_MARK_BLOCKS_FREE
));
free_root
(
tmp_root
,
MYF
(
MY_MARK_BLOCKS_FREE
));
mysql_mutex_lock
(
&
LOCK_plugin
);
mysql_mutex_lock
(
&
LOCK_plugin
);
if
(
plugin_add
(
tmp_root
,
false
,
(
LEX_CSTRING
*
)
&
name
,
(
LEX_CSTRING
*
)
&
dl
,
if
(
plugin_add
(
tmp_root
,
false
,
&
name
,
&
dl
,
MYF
(
ME_ERROR_LOG
))
!=
INSTALL_GOOD
)
MYF
(
ME_ERROR_LOG
))
!=
INSTALL_GOOD
)
goto
error
;
goto
error
;
}
}
...
@@ -1934,7 +1928,7 @@ static bool plugin_load_list(MEM_ROOT *tmp_root, const char *list)
...
@@ -1934,7 +1928,7 @@ static bool plugin_load_list(MEM_ROOT *tmp_root, const char *list)
case
'#'
:
case
'#'
:
if
(
str
==
&
name
)
if
(
str
==
&
name
)
{
{
name
.
str
[
name
.
length
]
=
'\0'
;
p
[
-
1
]
=
0
;
str
=
&
dl
;
str
=
&
dl
;
str
->
str
=
p
;
str
->
str
=
p
;
continue
;
continue
;
...
@@ -2205,7 +2199,8 @@ bool mysql_install_plugin(THD *thd, const LEX_CSTRING *name,
...
@@ -2205,7 +2199,8 @@ bool mysql_install_plugin(THD *thd, const LEX_CSTRING *name,
mysql_audit_acquire_plugins
(
thd
,
event_class_mask
);
mysql_audit_acquire_plugins
(
thd
,
event_class_mask
);
mysql_mutex_lock
(
&
LOCK_plugin
);
mysql_mutex_lock
(
&
LOCK_plugin
);
error
=
plugin_add
(
thd
->
mem_root
,
thd
->
lex
->
create_info
.
if_not_exists
(),
name
,
&
dl
,
MYF
(
0
));
error
=
plugin_add
(
thd
->
mem_root
,
thd
->
lex
->
create_info
.
if_not_exists
(),
name
,
&
dl
,
MYF
(
0
));
if
(
unlikely
(
error
!=
INSTALL_GOOD
))
if
(
unlikely
(
error
!=
INSTALL_GOOD
))
goto
err
;
goto
err
;
...
@@ -2249,17 +2244,9 @@ static bool do_uninstall(THD *thd, TABLE *table, const LEX_CSTRING *name)
...
@@ -2249,17 +2244,9 @@ static bool do_uninstall(THD *thd, TABLE *table, const LEX_CSTRING *name)
if
(
!
(
plugin
=
plugin_find_internal
(
name
,
MYSQL_ANY_PLUGIN
))
||
if
(
!
(
plugin
=
plugin_find_internal
(
name
,
MYSQL_ANY_PLUGIN
))
||
plugin
->
state
&
(
PLUGIN_IS_UNINITIALIZED
|
PLUGIN_IS_DYING
))
plugin
->
state
&
(
PLUGIN_IS_UNINITIALIZED
|
PLUGIN_IS_DYING
))
{
{
if
(
thd
->
lex
->
if_exists
())
myf
MyFlags
=
thd
->
lex
->
if_exists
()
?
ME_NOTE
:
0
;
{
my_error
(
ER_SP_DOES_NOT_EXIST
,
MyFlags
,
"PLUGIN"
,
name
->
str
);
push_warning_printf
(
thd
,
Sql_condition
::
WARN_LEVEL_NOTE
,
ER_SP_DOES_NOT_EXIST
,
return
!
MyFlags
;
ER_THD
(
thd
,
ER_SP_DOES_NOT_EXIST
),
"PLUGIN"
,
name
->
str
);
return
0
;
}
else
{
my_error
(
ER_SP_DOES_NOT_EXIST
,
MYF
(
0
),
"PLUGIN"
,
name
->
str
);
return
1
;
}
}
}
if
(
!
plugin
->
plugin_dl
)
if
(
!
plugin
->
plugin_dl
)
{
{
...
@@ -2381,15 +2368,9 @@ bool mysql_uninstall_plugin(THD *thd, const LEX_CSTRING *name,
...
@@ -2381,15 +2368,9 @@ bool mysql_uninstall_plugin(THD *thd, const LEX_CSTRING *name,
}
}
else
else
{
{
if
(
thd
->
lex
->
if_exists
())
myf
MyFlags
=
thd
->
lex
->
if_exists
()
?
ME_NOTE
:
0
;
{
my_error
(
ER_SP_DOES_NOT_EXIST
,
MyFlags
,
"SONAME"
,
dl
.
str
);
my_error
(
ER_SP_DOES_NOT_EXIST
,
ME_NOTE
,
"SONAME"
,
dl
.
str
);
error
|=
!
MyFlags
;
}
else
{
error
=
true
;
my_error
(
ER_SP_DOES_NOT_EXIST
,
MYF
(
0
),
"SONAME"
,
dl
.
str
);
}
}
}
}
}
reap_plugins
();
reap_plugins
();
...
...
sql/sql_yacc.yy
View file @
9aac2bf8
...
@@ -17513,6 +17513,7 @@ uninstall:
...
@@ -17513,6 +17513,7 @@ uninstall:
UNINSTALL_SYM PLUGIN_SYM opt_if_exists ident
UNINSTALL_SYM PLUGIN_SYM opt_if_exists ident
{
{
LEX *lex= Lex;
LEX *lex= Lex;
lex->check_opt.init();
if (lex->add_create_options_with_check($3))
if (lex->add_create_options_with_check($3))
MYSQL_YYABORT;
MYSQL_YYABORT;
lex->sql_command= SQLCOM_UNINSTALL_PLUGIN;
lex->sql_command= SQLCOM_UNINSTALL_PLUGIN;
...
@@ -17521,6 +17522,7 @@ uninstall:
...
@@ -17521,6 +17522,7 @@ uninstall:
| UNINSTALL_SYM SONAME_SYM opt_if_exists TEXT_STRING_sys
| UNINSTALL_SYM SONAME_SYM opt_if_exists TEXT_STRING_sys
{
{
LEX *lex= Lex;
LEX *lex= Lex;
lex->check_opt.init();
if (lex->add_create_options_with_check($3))
if (lex->add_create_options_with_check($3))
MYSQL_YYABORT;
MYSQL_YYABORT;
lex->sql_command= SQLCOM_UNINSTALL_PLUGIN;
lex->sql_command= SQLCOM_UNINSTALL_PLUGIN;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment