MySQL 9.1.0
Source Code Documentation
|
#include <string.h>
#include <sys/types.h>
#include <new>
#include <string>
#include "lex_string.h"
#include "map_helpers.h"
#include "memory_debugging.h"
#include "my_compiler.h"
#include "my_getopt.h"
#include "my_inttypes.h"
#include "my_sys.h"
#include "mysql/components/services/bits/psi_bits.h"
#include "mysql/plugin.h"
#include "mysql/service_mysql_alloc.h"
#include "mysql/udf_registration_types.h"
#include "sql/set_var.h"
Go to the source code of this file.
Classes | |
struct | st_bookmark |
struct | SYS_VAR |
class | sys_var_pluginvar |
struct | st_item_value_holder |
Macros | |
#define | OPTION_SET_LIMITS(type, options, opt) |
#define | OPTION_SET_LIMITS_DOUBLE(options, opt) |
#define | MYSQL_SYSVAR_NAME(name) name |
#define | PLUGIN_VAR_TYPEMASK 0x007f |
#define | PLUGIN_VAR_WITH_SIGN_TYPEMASK 0x00ff |
#define | EXTRA_OPTIONS 3 /* options for: 'foo', 'plugin-foo' and NULL */ |
Functions | |
typedef | DECLARE_MYSQL_SYSVAR_BASIC (sysvar_bool_t, bool) |
typedef | DECLARE_MYSQL_THDVAR_BASIC (thdvar_bool_t, bool) |
typedef | DECLARE_MYSQL_SYSVAR_BASIC (sysvar_str_t, char *) |
typedef | DECLARE_MYSQL_THDVAR_BASIC (thdvar_str_t, char *) |
typedef | DECLARE_MYSQL_SYSVAR_TYPELIB (sysvar_enum_t, unsigned long) |
typedef | DECLARE_MYSQL_THDVAR_TYPELIB (thdvar_enum_t, unsigned long) |
typedef | DECLARE_MYSQL_SYSVAR_TYPELIB (sysvar_set_t, ulonglong) |
typedef | DECLARE_MYSQL_THDVAR_TYPELIB (thdvar_set_t, ulonglong) |
typedef | DECLARE_MYSQL_SYSVAR_SIMPLE (sysvar_int_t, int) |
typedef | DECLARE_MYSQL_SYSVAR_SIMPLE (sysvar_long_t, long) |
typedef | DECLARE_MYSQL_SYSVAR_SIMPLE (sysvar_longlong_t, longlong) |
typedef | DECLARE_MYSQL_SYSVAR_SIMPLE (sysvar_uint_t, uint) |
typedef | DECLARE_MYSQL_SYSVAR_SIMPLE (sysvar_ulong_t, ulong) |
typedef | DECLARE_MYSQL_SYSVAR_SIMPLE (sysvar_ulonglong_t, ulonglong) |
typedef | DECLARE_MYSQL_SYSVAR_SIMPLE (sysvar_double_t, double) |
typedef | DECLARE_MYSQL_THDVAR_SIMPLE (thdvar_int_t, int) |
typedef | DECLARE_MYSQL_THDVAR_SIMPLE (thdvar_long_t, long) |
typedef | DECLARE_MYSQL_THDVAR_SIMPLE (thdvar_longlong_t, longlong) |
typedef | DECLARE_MYSQL_THDVAR_SIMPLE (thdvar_uint_t, uint) |
typedef | DECLARE_MYSQL_THDVAR_SIMPLE (thdvar_ulong_t, ulong) |
typedef | DECLARE_MYSQL_THDVAR_SIMPLE (thdvar_ulonglong_t, ulonglong) |
typedef | DECLARE_MYSQL_THDVAR_SIMPLE (thdvar_double_t, double) |
int | check_func_bool (THD *, SYS_VAR *, void *save, st_mysql_value *value) |
int | check_func_int (THD *thd, SYS_VAR *var, void *save, st_mysql_value *value) |
int | check_func_long (THD *thd, SYS_VAR *var, void *save, st_mysql_value *value) |
int | check_func_longlong (THD *thd, SYS_VAR *var, void *save, st_mysql_value *value) |
int | check_func_str (THD *thd, SYS_VAR *, void *save, st_mysql_value *value) |
int | check_func_enum (THD *, SYS_VAR *var, void *save, st_mysql_value *value) |
int | check_func_set (THD *, SYS_VAR *var, void *save, st_mysql_value *value) |
int | check_func_double (THD *thd, SYS_VAR *var, void *save, st_mysql_value *value) |
void | update_func_bool (THD *, SYS_VAR *, void *tgt, const void *save) |
void | update_func_int (THD *, SYS_VAR *, void *tgt, const void *save) |
void | update_func_long (THD *, SYS_VAR *, void *tgt, const void *save) |
void | update_func_longlong (THD *, SYS_VAR *, void *tgt, const void *save) |
void | update_func_str (THD *, SYS_VAR *, void *tgt, const void *save) |
void | update_func_double (THD *, SYS_VAR *, void *tgt, const void *save) |
SHOW_TYPE | pluginvar_show_type (SYS_VAR *plugin_var) |
const void * | pluginvar_default_value (SYS_VAR *plugin_var) |
int | item_value_type (st_mysql_value *value) |
const char * | item_val_str (st_mysql_value *value, char *buffer, int *length) |
int | item_val_int (st_mysql_value *value, long long *buf) |
int | item_is_unsigned (st_mysql_value *value) |
int | item_val_real (st_mysql_value *value, double *buf) |
void | plugin_opt_set_limits (struct my_option *, const SYS_VAR *) |
uchar * | intern_sys_var_ptr (THD *thd, int offset, bool global_lock) |
bool | plugin_var_memalloc_global_update (THD *thd, SYS_VAR *var, char **dest, const char *value) |
Set value for global variable with PLUGIN_VAR_MEMALLOC flag. More... | |
bool | plugin_var_memalloc_session_update (THD *thd, SYS_VAR *var, char **dest, const char *value) |
Set value for thread local variable with PLUGIN_VAR_MEMALLOC flag. More... | |
st_bookmark * | find_bookmark (const char *plugin, const char *name, int flags) |
st_bookmark * | register_var (const char *plugin, const char *name, int flags) |
bool * | mysql_sys_var_bool (THD *thd, int offset) |
For correctness and simplicity's sake, a pointer to a function must be compatible with pointed-to type, that is, the return and parameters types must be the same. More... | |
int * | mysql_sys_var_int (THD *thd, int offset) |
unsigned int * | mysql_sys_var_uint (THD *thd, int offset) |
unsigned long * | mysql_sys_var_ulong (THD *thd, int offset) |
unsigned long long * | mysql_sys_var_ulonglong (THD *thd, int offset) |
char ** | mysql_sys_var_str (THD *thd, int offset) |
double * | mysql_sys_var_double (THD *thd, int offset) |
void | convert_underscore_to_dash (char *str, size_t len) |
malloc_unordered_map< std::string, st_bookmark * > * | get_bookmark_hash () |
Variables | |
MEM_ROOT | plugin_mem_root |
uint | global_variables_dynamic_size |
malloc_unordered_map< std::string, st_bookmark * > * | bookmark_hash |
malloc_unordered_map< std::string, st_bookmark * > * | malloced_string_type_sysvars_bookmark_hash |
Hash for system variables of string type with MEMALLOC flag. More... | |
#define OPTION_SET_LIMITS_DOUBLE | ( | options, | |
opt | |||
) |
#define PLUGIN_VAR_TYPEMASK 0x007f |
#define PLUGIN_VAR_WITH_SIGN_TYPEMASK 0x00ff |
int check_func_bool | ( | THD * | , |
SYS_VAR * | , | ||
void * | save, | ||
st_mysql_value * | value | ||
) |
int check_func_double | ( | THD * | thd, |
SYS_VAR * | var, | ||
void * | save, | ||
st_mysql_value * | value | ||
) |
int check_func_enum | ( | THD * | , |
SYS_VAR * | var, | ||
void * | save, | ||
st_mysql_value * | value | ||
) |
int check_func_int | ( | THD * | thd, |
SYS_VAR * | var, | ||
void * | save, | ||
st_mysql_value * | value | ||
) |
int check_func_long | ( | THD * | thd, |
SYS_VAR * | var, | ||
void * | save, | ||
st_mysql_value * | value | ||
) |
int check_func_longlong | ( | THD * | thd, |
SYS_VAR * | var, | ||
void * | save, | ||
st_mysql_value * | value | ||
) |
int check_func_set | ( | THD * | , |
SYS_VAR * | var, | ||
void * | save, | ||
st_mysql_value * | value | ||
) |
int check_func_str | ( | THD * | thd, |
SYS_VAR * | , | ||
void * | save, | ||
st_mysql_value * | value | ||
) |
|
inline |
typedef DECLARE_MYSQL_SYSVAR_BASIC | ( | sysvar_bool_t | , |
bool | |||
) |
typedef DECLARE_MYSQL_SYSVAR_BASIC | ( | sysvar_str_t | , |
char * | |||
) |
typedef DECLARE_MYSQL_SYSVAR_SIMPLE | ( | sysvar_double_t | , |
double | |||
) |
typedef DECLARE_MYSQL_SYSVAR_SIMPLE | ( | sysvar_int_t | , |
int | |||
) |
typedef DECLARE_MYSQL_SYSVAR_SIMPLE | ( | sysvar_long_t | , |
long | |||
) |
typedef DECLARE_MYSQL_SYSVAR_SIMPLE | ( | sysvar_longlong_t | , |
longlong | |||
) |
typedef DECLARE_MYSQL_SYSVAR_SIMPLE | ( | sysvar_uint_t | , |
uint | |||
) |
typedef DECLARE_MYSQL_SYSVAR_SIMPLE | ( | sysvar_ulong_t | , |
ulong | |||
) |
typedef DECLARE_MYSQL_SYSVAR_SIMPLE | ( | sysvar_ulonglong_t | , |
ulonglong | |||
) |
typedef DECLARE_MYSQL_SYSVAR_TYPELIB | ( | sysvar_enum_t | , |
unsigned long | |||
) |
typedef DECLARE_MYSQL_SYSVAR_TYPELIB | ( | sysvar_set_t | , |
ulonglong | |||
) |
typedef DECLARE_MYSQL_THDVAR_BASIC | ( | thdvar_bool_t | , |
bool | |||
) |
typedef DECLARE_MYSQL_THDVAR_BASIC | ( | thdvar_str_t | , |
char * | |||
) |
typedef DECLARE_MYSQL_THDVAR_SIMPLE | ( | thdvar_double_t | , |
double | |||
) |
typedef DECLARE_MYSQL_THDVAR_SIMPLE | ( | thdvar_int_t | , |
int | |||
) |
typedef DECLARE_MYSQL_THDVAR_SIMPLE | ( | thdvar_long_t | , |
long | |||
) |
typedef DECLARE_MYSQL_THDVAR_SIMPLE | ( | thdvar_longlong_t | , |
longlong | |||
) |
typedef DECLARE_MYSQL_THDVAR_SIMPLE | ( | thdvar_uint_t | , |
uint | |||
) |
typedef DECLARE_MYSQL_THDVAR_SIMPLE | ( | thdvar_ulong_t | , |
ulong | |||
) |
typedef DECLARE_MYSQL_THDVAR_SIMPLE | ( | thdvar_ulonglong_t | , |
ulonglong | |||
) |
typedef DECLARE_MYSQL_THDVAR_TYPELIB | ( | thdvar_enum_t | , |
unsigned long | |||
) |
typedef DECLARE_MYSQL_THDVAR_TYPELIB | ( | thdvar_set_t | , |
ulonglong | |||
) |
st_bookmark * find_bookmark | ( | const char * | plugin, |
const char * | name, | ||
int | flags | ||
) |
malloc_unordered_map< std::string, st_bookmark * > * get_bookmark_hash | ( | ) |
int item_is_unsigned | ( | st_mysql_value * | value | ) |
int item_val_int | ( | st_mysql_value * | value, |
long long * | buf | ||
) |
int item_val_real | ( | st_mysql_value * | value, |
double * | buf | ||
) |
const char * item_val_str | ( | st_mysql_value * | value, |
char * | buffer, | ||
int * | length | ||
) |
int item_value_type | ( | st_mysql_value * | value | ) |
bool * mysql_sys_var_bool | ( | THD * | thd, |
int | offset | ||
) |
For correctness and simplicity's sake, a pointer to a function must be compatible with pointed-to type, that is, the return and parameters types must be the same.
Thus, a callback function is defined for each scalar type. The functions are assigned in construct_options to their respective types.
double * mysql_sys_var_double | ( | THD * | thd, |
int | offset | ||
) |
int * mysql_sys_var_int | ( | THD * | thd, |
int | offset | ||
) |
char ** mysql_sys_var_str | ( | THD * | thd, |
int | offset | ||
) |
unsigned int * mysql_sys_var_uint | ( | THD * | thd, |
int | offset | ||
) |
unsigned long * mysql_sys_var_ulong | ( | THD * | thd, |
int | offset | ||
) |
unsigned long long * mysql_sys_var_ulonglong | ( | THD * | thd, |
int | offset | ||
) |
bool plugin_var_memalloc_global_update | ( | THD * | thd, |
SYS_VAR * | var, | ||
char ** | dest, | ||
const char * | value | ||
) |
Set value for global variable with PLUGIN_VAR_MEMALLOC flag.
[in] | thd | Thread context. |
[in] | var | Plugin variable. |
[in,out] | dest | Destination memory pointer. |
[in] | value | '\0'-terminated new value. |
false | Success |
true | Failure |
bool plugin_var_memalloc_session_update | ( | THD * | thd, |
SYS_VAR * | var, | ||
char ** | dest, | ||
const char * | value | ||
) |
Set value for thread local variable with PLUGIN_VAR_MEMALLOC flag.
[in] | thd | Thread context. |
[in] | var | Plugin variable. |
[in,out] | dest | Destination memory pointer. |
[in] | value | '\0'-terminated new value. |
Most plugin variable values are stored on dynamic_variables_ptr. Releasing memory occupied by these values is as simple as freeing dynamic_variables_ptr.
An exception to the rule are PLUGIN_VAR_MEMALLOC variables, which are stored on individual memory hunks. All of these hunks has to be freed when it comes to cleanup.
It may happen that a plugin was uninstalled and descriptors of it's variables are lost. In this case it is impossible to locate corresponding values.
In addition to allocating and setting variable value, new element is added to dynamic_variables_allocs list. When thread is done, it has to call plugin_var_memalloc_free() to release memory used by PLUGIN_VAR_MEMALLOC variables.
If var is NULL, variable update function is not called. This is needed when we take snapshot of system variables during thread initialization.
false | Success |
true | Failure |
const void * pluginvar_default_value | ( | SYS_VAR * | plugin_var | ) |
st_bookmark * register_var | ( | const char * | plugin, |
const char * | name, | ||
int | flags | ||
) |
|
extern |
|
extern |
|
extern |
Hash for system variables of string type with MEMALLOC flag.
|
extern |