![]() |
MySQL 8.0.41
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) |
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) |
void | convert_underscore_to_dash (char *str, size_t len) |
malloc_unordered_map< std::string, st_bookmark * > * | get_bookmark_hash () |
#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 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 |