mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
WL#2936 - Falcon & MySQL plugin interface: server variables
Added initialization for the plugin structure created in plugin_add(). Made a correct argument vector in mysql_install_plugin(): handle_options() assumes that arg0 (program name) always exists.
This commit is contained in:
parent
f49eb3fde8
commit
98ff6f0a95
3 changed files with 36 additions and 4 deletions
|
@ -111,6 +111,9 @@ int handle_options(int *argc, char ***argv,
|
|||
int error, i;
|
||||
|
||||
LINT_INIT(opt_found);
|
||||
/* handle_options() assumes arg0 (program name) always exists */
|
||||
DBUG_ASSERT(argc && *argc >= 1);
|
||||
DBUG_ASSERT(argv && *argv);
|
||||
(*argc)--; /* Skip the program name */
|
||||
(*argv)++; /* --- || ---- */
|
||||
init_variables(longopts);
|
||||
|
|
|
@ -215,6 +215,29 @@ static struct st_mysql_show_var simple_status[]=
|
|||
{0,0,0}
|
||||
};
|
||||
|
||||
/*
|
||||
Plugin system variables.
|
||||
*/
|
||||
|
||||
static long sysvar_one_value;
|
||||
static char *sysvar_two_value;
|
||||
|
||||
static MYSQL_SYSVAR_LONG(simple_sysvar_one, sysvar_one_value,
|
||||
PLUGIN_VAR_RQCMDARG,
|
||||
"Simple fulltext parser example system variable number one. Give a number.",
|
||||
NULL, NULL, 100L, 10L, ~0L, 0);
|
||||
|
||||
static MYSQL_SYSVAR_STR(simple_sysvar_two, sysvar_two_value,
|
||||
PLUGIN_VAR_RQCMDARG | PLUGIN_VAR_MEMALLOC,
|
||||
"Simple fulltext parser example system variable number two. Give a string.",
|
||||
NULL, NULL, NULL);
|
||||
|
||||
static struct st_mysql_sys_var* simple_system_variables[]= {
|
||||
MYSQL_SYSVAR(simple_sysvar_one),
|
||||
MYSQL_SYSVAR(simple_sysvar_two),
|
||||
NULL
|
||||
};
|
||||
|
||||
/*
|
||||
Plugin library descriptor
|
||||
*/
|
||||
|
@ -231,8 +254,8 @@ mysql_declare_plugin(ftexample)
|
|||
simple_parser_plugin_deinit,/* deinit function (when unloaded) */
|
||||
0x0001, /* version */
|
||||
simple_status, /* status variables */
|
||||
NULL, /* system variables */
|
||||
NULL /* config options */
|
||||
simple_system_variables, /* system variables */
|
||||
NULL
|
||||
}
|
||||
mysql_declare_plugin_end;
|
||||
|
||||
|
|
|
@ -701,6 +701,8 @@ static bool plugin_add(MEM_ROOT *tmp_root,
|
|||
sql_print_error(ER(ER_UDF_EXISTS), name->str);
|
||||
DBUG_RETURN(TRUE);
|
||||
}
|
||||
/* Clear the whole struct to catch future extensions. */
|
||||
bzero((char*) &tmp, sizeof(tmp));
|
||||
if (! (tmp.plugin_dl= plugin_dl_add(dl, report)))
|
||||
DBUG_RETURN(TRUE);
|
||||
/* Find plugin by name */
|
||||
|
@ -1569,7 +1571,8 @@ bool mysql_install_plugin(THD *thd, const LEX_STRING *name, const LEX_STRING *dl
|
|||
{
|
||||
TABLE_LIST tables;
|
||||
TABLE *table;
|
||||
int error, argc=0;
|
||||
int error, argc;
|
||||
char *argv[2];
|
||||
struct st_plugin_int *tmp;
|
||||
DBUG_ENTER("mysql_install_plugin");
|
||||
|
||||
|
@ -1585,7 +1588,10 @@ bool mysql_install_plugin(THD *thd, const LEX_STRING *name, const LEX_STRING *dl
|
|||
|
||||
pthread_mutex_lock(&LOCK_plugin);
|
||||
rw_wrlock(&LOCK_system_variables_hash);
|
||||
error= plugin_add(thd->mem_root, name, dl, &argc, NULL, REPORT_TO_USER);
|
||||
argv[0]= ""; /* handle_options() assumes arg0 (program name) always exists */
|
||||
argv[1]= NULL;
|
||||
argc= 1;
|
||||
error= plugin_add(thd->mem_root, name, dl, &argc, argv, REPORT_TO_USER);
|
||||
rw_unlock(&LOCK_system_variables_hash);
|
||||
|
||||
if (error || !(tmp= plugin_find_internal(name, MYSQL_ANY_PLUGIN)))
|
||||
|
|
Loading…
Reference in a new issue