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
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
8629f2e3
Commit
8629f2e3
authored
Jan 25, 2008
by
acurtis/antony@ltamd64.xiphis.org
Browse files
Options
Browse Files
Download
Plain Diff
Merge xiphis.org:/anubis/antony/work/bug33358.2
into xiphis.org:/anubis/antony/work/bug33358.2-merge-5.1
parents
07084c1d
98515df2
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
57 additions
and
18 deletions
+57
-18
mysql-test/r/plugin_load.result
mysql-test/r/plugin_load.result
+3
-0
mysql-test/t/plugin_load-master.opt
mysql-test/t/plugin_load-master.opt
+3
-0
mysql-test/t/plugin_load.test
mysql-test/t/plugin_load.test
+3
-0
sql/sql_plugin.cc
sql/sql_plugin.cc
+48
-18
No files found.
mysql-test/r/plugin_load.result
0 → 100644
View file @
8629f2e3
SELECT @@global.example_enum_var = 'e2';
@@global.example_enum_var = 'e2'
1
mysql-test/t/plugin_load-master.opt
0 → 100644
View file @
8629f2e3
$EXAMPLE_PLUGIN_OPT
"--plugin-load=;EXAMPLE=ha_example.so;"
--plugin-example-enum-var=e2
mysql-test/t/plugin_load.test
0 → 100644
View file @
8629f2e3
--
source
include
/
have_example_plugin
.
inc
SELECT
@@
global
.
example_enum_var
=
'e2'
;
sql/sql_plugin.cc
View file @
8629f2e3
...
...
@@ -1412,7 +1412,11 @@ static bool plugin_load_list(MEM_ROOT *tmp_root, int *argc, char **argv,
while
(
list
)
{
if
(
p
==
buffer
+
sizeof
(
buffer
)
-
1
)
break
;
{
sql_print_error
(
"plugin-load parameter too long"
);
DBUG_RETURN
(
TRUE
);
}
switch
((
*
(
p
++
)
=
*
(
list
++
)))
{
case
'\0'
:
list
=
NULL
;
/* terminate the loop */
...
...
@@ -1421,10 +1425,17 @@ static bool plugin_load_list(MEM_ROOT *tmp_root, int *argc, char **argv,
case
':'
:
/* can't use this as delimiter as it may be drive letter */
#endif
case
';'
:
name
.
str
[
name
.
length
]
=
'\0'
;
if
(
str
!=
&
dl
)
// load all plugins in named module
str
->
str
[
str
->
length
]
=
'\0'
;
if
(
str
==
&
name
)
// load all plugins in named module
{
if
(
!
name
.
length
)
{
p
--
;
/* reset pointer */
continue
;
}
dl
=
name
;
pthread_mutex_lock
(
&
LOCK_plugin
);
if
((
plugin_dl
=
plugin_dl_add
(
&
dl
,
REPORT_TO_LOG
)))
{
for
(
plugin
=
plugin_dl
->
plugins
;
plugin
->
info
;
plugin
++
)
...
...
@@ -1434,7 +1445,10 @@ static bool plugin_load_list(MEM_ROOT *tmp_root, int *argc, char **argv,
free_root
(
tmp_root
,
MYF
(
MY_MARK_BLOCKS_FREE
));
if
(
plugin_add
(
tmp_root
,
&
name
,
&
dl
,
argc
,
argv
,
REPORT_TO_LOG
))
{
pthread_mutex_unlock
(
&
LOCK_plugin
);
goto
error
;
}
}
plugin_dl_del
(
&
dl
);
// reduce ref count
}
...
...
@@ -1442,9 +1456,14 @@ static bool plugin_load_list(MEM_ROOT *tmp_root, int *argc, char **argv,
else
{
free_root
(
tmp_root
,
MYF
(
MY_MARK_BLOCKS_FREE
));
pthread_mutex_lock
(
&
LOCK_plugin
);
if
(
plugin_add
(
tmp_root
,
&
name
,
&
dl
,
argc
,
argv
,
REPORT_TO_LOG
))
{
pthread_mutex_unlock
(
&
LOCK_plugin
);
goto
error
;
}
}
pthread_mutex_unlock
(
&
LOCK_plugin
);
name
.
length
=
dl
.
length
=
0
;
dl
.
str
=
NULL
;
name
.
str
=
p
=
buffer
;
str
=
&
name
;
...
...
@@ -1453,6 +1472,7 @@ static bool plugin_load_list(MEM_ROOT *tmp_root, int *argc, char **argv,
case
'#'
:
if
(
str
==
&
name
)
{
name
.
str
[
name
.
length
]
=
'\0'
;
str
=
&
dl
;
str
->
str
=
p
;
continue
;
...
...
@@ -2999,7 +3019,8 @@ static int construct_options(MEM_ROOT *mem_root, struct st_plugin_int *tmp,
DBUG_RETURN
(
-
1
);
}
if
(
opt
->
flags
&
PLUGIN_VAR_NOCMDOPT
)
if
((
opt
->
flags
&
(
PLUGIN_VAR_NOCMDOPT
|
PLUGIN_VAR_THDLOCAL
))
==
PLUGIN_VAR_NOCMDOPT
)
continue
;
if
(
!
opt
->
name
)
...
...
@@ -3009,7 +3030,7 @@ static int construct_options(MEM_ROOT *mem_root, struct st_plugin_int *tmp,
DBUG_RETURN
(
-
1
);
}
if
(
!
(
v
=
find_bookmark
(
name
,
opt
->
name
,
opt
->
flags
)
))
if
(
!
(
opt
->
flags
&
PLUGIN_VAR_THDLOCAL
))
{
optnamelen
=
strlen
(
opt
->
name
);
optname
=
(
char
*
)
alloc_root
(
mem_root
,
namelen
+
optnamelen
+
2
);
...
...
@@ -3017,7 +3038,23 @@ static int construct_options(MEM_ROOT *mem_root, struct st_plugin_int *tmp,
optnamelen
=
namelen
+
optnamelen
+
1
;
}
else
optname
=
(
char
*
)
memdup_root
(
mem_root
,
v
->
key
+
1
,
(
optnamelen
=
v
->
name_len
)
+
1
);
{
/* this should not fail because register_var should create entry */
if
(
!
(
v
=
find_bookmark
(
name
,
opt
->
name
,
opt
->
flags
)))
{
sql_print_error
(
"Thread local variable '%s' not allocated "
"in plugin '%s'."
,
opt
->
name
,
plugin_name
);
DBUG_RETURN
(
-
1
);
}
*
(
int
*
)(
opt
+
1
)
=
offset
=
v
->
offset
;
if
(
opt
->
flags
&
PLUGIN_VAR_NOCMDOPT
)
continue
;
optname
=
(
char
*
)
memdup_root
(
mem_root
,
v
->
key
+
1
,
(
optnamelen
=
v
->
name_len
)
+
1
);
}
/* convert '_' to '-' */
for
(
p
=
optname
;
*
p
;
p
++
)
...
...
@@ -3029,20 +3066,13 @@ static int construct_options(MEM_ROOT *mem_root, struct st_plugin_int *tmp,
options
->
app_type
=
opt
;
options
->
id
=
(
options
-
1
)
->
id
+
1
;
if
(
opt
->
flags
&
PLUGIN_VAR_THDLOCAL
)
*
(
int
*
)(
opt
+
1
)
=
offset
=
v
->
offset
;
plugin_opt_set_limits
(
options
,
opt
);
if
((
opt
->
flags
&
PLUGIN_VAR_TYPEMASK
)
!=
PLUGIN_VAR_ENUM
&&
(
opt
->
flags
&
PLUGIN_VAR_TYPEMASK
)
!=
PLUGIN_VAR_SET
)
{
if
(
opt
->
flags
&
PLUGIN_VAR_THDLOCAL
)
options
->
value
=
options
->
u_max_value
=
(
uchar
**
)
(
global_system_variables
.
dynamic_variables_ptr
+
offset
);
else
options
->
value
=
options
->
u_max_value
=
*
(
uchar
***
)
(
opt
+
1
);
}
if
(
opt
->
flags
&
PLUGIN_VAR_THDLOCAL
)
options
->
value
=
options
->
u_max_value
=
(
uchar
**
)
(
global_system_variables
.
dynamic_variables_ptr
+
offset
);
else
options
->
value
=
options
->
u_max_value
=
*
(
uchar
***
)
(
opt
+
1
);
options
[
1
]
=
options
[
0
];
options
[
1
].
name
=
p
=
(
char
*
)
alloc_root
(
mem_root
,
optnamelen
+
8
);
...
...
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