mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
031ee043fb
The patch adds DYNAMIC_ARRAY all_status_vars, which is now the sole source of status information for SHOW STATUS. Status variables can be added to and removed from the array dynamically. SHOW STATUS command uses this array instead of static array from mysqld.cc Compatibility with the old, global list of status variables is preserved in init_server_components(), where this global list is simply appended to all_status_vars. include/plugin.h: WL#2935 - SHOW STATUS support in plugins plugin/fulltext/plugin_example.c: WL#2935 - SHOW STATUS support in plugins example sql/ha_innodb.cc: s/struct show_var_st/SHOW_VAR/ sql/ha_innodb.h: s/struct show_var_st/SHOW_VAR/ sql/mysql_priv.h: WL#2935 - SHOW STATUS support in plugins add_status_vars(), remove_status_vars() sql/mysqld.cc: bug: plugin_free must be called even with --skip-grants add_status_vars()/free_status_vars(), remove unused SHOW_xxx_CONST s/struct show_var_st/SHOW_VAR/ sql/set_var.cc: s/struct show_var_st/SHOW_VAR/ sql/sql_parse.cc: s/struct show_var_st/SHOW_VAR/ sql/sql_plugin.cc: WL#2935 - SHOW STATUS support in plugins sql/sql_plugin.h: WL#2935 - SHOW STATUS support in plugins sql/sql_show.cc: WL#2935 - SHOW STATUS support in plugins DYNAMIC_ARRAY all_status_vars, add_status_vars(), remove_status_vars() s/struct show_var_st/SHOW_VAR/ sql/structs.h: WL#2935 - SHOW STATUS support in plugins SHOW STATUS definitions moved to include/plugin.h and sql_plugin.h s/struct show_var_st/SHOW_VAR/
83 lines
2.7 KiB
C
83 lines
2.7 KiB
C
/* Copyright (C) 2005 MySQL AB
|
|
|
|
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
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program; if not, write to the Free Software
|
|
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
|
|
|
#ifndef _sql_plugin_h
|
|
#define _sql_plugin_h
|
|
|
|
/*
|
|
the following #define adds server-only members to enum_mysql_show_type,
|
|
that is defined in plugin.h
|
|
*/
|
|
#define SHOW_FUNC SHOW_FUNC, SHOW_KEY_CACHE_LONG, SHOW_KEY_CACHE_LONGLONG, \
|
|
SHOW_LONG_STATUS, SHOW_DOUBLE_STATUS, SHOW_HAVE, \
|
|
SHOW_HA_ROWS, SHOW_SYS, SHOW_LONG_NOFLUSH
|
|
#include <plugin.h>
|
|
#undef SHOW_FUNC
|
|
typedef enum enum_mysql_show_type SHOW_TYPE;
|
|
typedef struct st_mysql_show_var SHOW_VAR;
|
|
|
|
#define MYSQL_ANY_PLUGIN -1
|
|
|
|
enum enum_plugin_state
|
|
{
|
|
PLUGIN_IS_FREED= 0,
|
|
PLUGIN_IS_DELETED,
|
|
PLUGIN_IS_UNINITIALIZED,
|
|
PLUGIN_IS_READY
|
|
};
|
|
|
|
/* A handle for the dynamic library containing a plugin or plugins. */
|
|
|
|
struct st_plugin_dl
|
|
{
|
|
LEX_STRING dl;
|
|
void *handle;
|
|
struct st_mysql_plugin *plugins;
|
|
int version;
|
|
uint ref_count; /* number of plugins loaded from the library */
|
|
};
|
|
|
|
/* A handle of a plugin */
|
|
|
|
struct st_plugin_int
|
|
{
|
|
LEX_STRING name;
|
|
struct st_mysql_plugin *plugin;
|
|
struct st_plugin_dl *plugin_dl;
|
|
enum enum_plugin_state state;
|
|
uint ref_count; /* number of threads using the plugin */
|
|
};
|
|
|
|
extern char *opt_plugin_dir_ptr;
|
|
extern char opt_plugin_dir[FN_REFLEN];
|
|
extern LEX_STRING plugin_type_names[];
|
|
extern int plugin_init(void);
|
|
extern void plugin_load(void);
|
|
extern void plugin_free(void);
|
|
extern my_bool plugin_is_ready(LEX_STRING *name, int type);
|
|
extern st_plugin_int *plugin_lock(LEX_STRING *name, int type);
|
|
extern void plugin_unlock(struct st_plugin_int *plugin);
|
|
extern my_bool mysql_install_plugin(THD *thd, LEX_STRING *name, LEX_STRING *dl);
|
|
extern my_bool mysql_uninstall_plugin(THD *thd, LEX_STRING *name);
|
|
|
|
extern my_bool plugin_register_builtin(struct st_mysql_plugin *plugin);
|
|
|
|
typedef my_bool (plugin_foreach_func)(THD *thd,
|
|
st_plugin_int *plugin,
|
|
void *arg);
|
|
extern my_bool plugin_foreach(THD *thd, plugin_foreach_func *func,
|
|
int type, void *arg);
|
|
#endif
|