MySQL  8.0.17
Source Code Documentation
sql_plugin_var.h
Go to the documentation of this file.
1 /* Copyright (c) 2017, 2019, Oracle and/or its affiliates. All rights reserved.
2 
3  This program is free software; you can redistribute it and/or modify
4  it under the terms of the GNU General Public License, version 2.0,
5  as published by the Free Software Foundation.
6 
7  This program is also distributed with certain software (including
8  but not limited to OpenSSL) that is licensed under separate terms,
9  as designated in a particular file or component or in included license
10  documentation. The authors of MySQL hereby grant you an additional
11  permission to link the program and your derivative works with the
12  separately licensed software that they have included with MySQL.
13 
14  This program is distributed in the hope that it will be useful,
15  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  GNU General Public License, version 2.0, for more details.
18 
19  You should have received a copy of the GNU General Public License
20  along with this program; if not, write to the Free Software
21  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
22 
23 #ifndef _sql_comp_common_h
24 #define _sql_comp_common_h
25 
26 #include <string.h>
27 #include <sys/types.h>
28 #include <new>
29 #include <string>
30 
31 #include "lex_string.h"
32 #include "map_helpers.h"
33 #include "memory_debugging.h"
34 #include "my_compiler.h"
35 #include "my_getopt.h"
36 #include "my_inttypes.h"
37 #include "my_sys.h"
38 #include "mysql/plugin.h"
39 #include "mysql/psi/psi_base.h"
42 #include "sql/set_var.h"
43 
44 class Item;
45 class THD;
46 struct MEM_ROOT;
47 struct SYS_VAR;
48 struct TYPELIB;
49 struct st_plugin_int;
50 
51 /*
52  Below define's are used for internal purpose(i.e used by plugin and
53  component infrastuctures, These are not supposed to be used in other files.
54 */
55 #define OPTION_SET_LIMITS(type, options, opt) \
56  options->var_type = type; \
57  options->def_value = (opt)->def_val; \
58  options->min_value = (opt)->min_val; \
59  options->max_value = (opt)->max_val; \
60  options->block_size = (long)(opt)->blk_sz
61 
62 #define OPTION_SET_LIMITS_DOUBLE(options, opt) \
63  options->var_type = GET_DOUBLE; \
64  options->def_value = (longlong)getopt_double2ulonglong((opt)->def_val); \
65  options->min_value = (longlong)getopt_double2ulonglong((opt)->min_val); \
66  options->max_value = getopt_double2ulonglong((opt)->max_val); \
67  options->block_size = (long)(opt)->blk_sz;
68 
69 /****************************************************************************
70  Internal type declarations for variables support
71 ****************************************************************************/
72 
73 #undef MYSQL_SYSVAR_NAME
74 #define MYSQL_SYSVAR_NAME(name) name
75 #define PLUGIN_VAR_TYPEMASK 0x007f
76 #define PLUGIN_VAR_WITH_SIGN_TYPEMASK 0x00ff
77 
78 #define EXTRA_OPTIONS 3 /* options for: 'foo', 'plugin-foo' and NULL */
79 
80 /*
81  Below typedef's are used for internal purpose(i.e used by plugin and
82  component infrastuctures, These are not supposed to be used in other files.
83 */
84 typedef DECLARE_MYSQL_SYSVAR_BASIC(sysvar_bool_t, bool);
85 typedef DECLARE_MYSQL_THDVAR_BASIC(thdvar_bool_t, bool);
86 typedef DECLARE_MYSQL_SYSVAR_BASIC(sysvar_str_t, char *);
87 typedef DECLARE_MYSQL_THDVAR_BASIC(thdvar_str_t, char *);
88 
89 typedef DECLARE_MYSQL_SYSVAR_TYPELIB(sysvar_enum_t, unsigned long);
90 typedef DECLARE_MYSQL_THDVAR_TYPELIB(thdvar_enum_t, unsigned long);
91 typedef DECLARE_MYSQL_SYSVAR_TYPELIB(sysvar_set_t, ulonglong);
92 typedef DECLARE_MYSQL_THDVAR_TYPELIB(thdvar_set_t, ulonglong);
93 
94 typedef DECLARE_MYSQL_SYSVAR_SIMPLE(sysvar_int_t, int);
95 typedef DECLARE_MYSQL_SYSVAR_SIMPLE(sysvar_long_t, long);
96 typedef DECLARE_MYSQL_SYSVAR_SIMPLE(sysvar_longlong_t, longlong);
97 typedef DECLARE_MYSQL_SYSVAR_SIMPLE(sysvar_uint_t, uint);
98 typedef DECLARE_MYSQL_SYSVAR_SIMPLE(sysvar_ulong_t, ulong);
99 typedef DECLARE_MYSQL_SYSVAR_SIMPLE(sysvar_ulonglong_t, ulonglong);
100 typedef DECLARE_MYSQL_SYSVAR_SIMPLE(sysvar_double_t, double);
101 
102 typedef DECLARE_MYSQL_THDVAR_SIMPLE(thdvar_int_t, int);
103 typedef DECLARE_MYSQL_THDVAR_SIMPLE(thdvar_long_t, long);
104 typedef DECLARE_MYSQL_THDVAR_SIMPLE(thdvar_longlong_t, longlong);
105 typedef DECLARE_MYSQL_THDVAR_SIMPLE(thdvar_uint_t, uint);
106 typedef DECLARE_MYSQL_THDVAR_SIMPLE(thdvar_ulong_t, ulong);
107 typedef DECLARE_MYSQL_THDVAR_SIMPLE(thdvar_ulonglong_t, ulonglong);
108 typedef DECLARE_MYSQL_THDVAR_SIMPLE(thdvar_double_t, double);
109 
110 /****************************************************************************
111  default variable data check and update functions
112 ****************************************************************************/
113 int check_func_bool(THD *, SYS_VAR *, void *save, st_mysql_value *value);
114 
115 int check_func_int(THD *thd, SYS_VAR *var, void *save, st_mysql_value *value);
116 
117 int check_func_long(THD *thd, SYS_VAR *var, void *save, st_mysql_value *value);
118 
119 int check_func_longlong(THD *thd, SYS_VAR *var, void *save,
121 
122 int check_func_str(THD *thd, SYS_VAR *, void *save, st_mysql_value *value);
123 
124 int check_func_enum(THD *, SYS_VAR *var, void *save, st_mysql_value *value);
125 
126 int check_func_set(THD *, SYS_VAR *var, void *save, st_mysql_value *value);
127 
128 int check_func_double(THD *thd, SYS_VAR *var, void *save,
130 
131 void update_func_bool(THD *, SYS_VAR *, void *tgt, const void *save);
132 
133 void update_func_int(THD *, SYS_VAR *, void *tgt, const void *save);
134 
135 void update_func_long(THD *, SYS_VAR *, void *tgt, const void *save);
136 
137 void update_func_longlong(THD *, SYS_VAR *, void *tgt, const void *save);
138 
139 void update_func_str(THD *, SYS_VAR *, void *tgt, const void *save);
140 
141 void update_func_double(THD *, SYS_VAR *, void *tgt, const void *save);
142 
144 
146 const char *item_val_str(st_mysql_value *value, char *buffer, int *length);
147 int item_val_int(st_mysql_value *value, long long *buf);
149 int item_val_real(st_mysql_value *value, double *buf);
150 
151 void plugin_opt_set_limits(struct my_option *, const SYS_VAR *);
152 
153 uchar *intern_sys_var_ptr(THD *thd, int offset, bool global_lock);
154 
155 bool plugin_var_memalloc_global_update(THD *thd, SYS_VAR *var, char **dest,
156  const char *value);
157 bool plugin_var_memalloc_session_update(THD *thd, SYS_VAR *var, char **dest,
158  const char *value);
159 
160 /*
161  stored in bookmark_hash, this structure is never removed from the
162  hash and is used to mark a single offset for a thd local variable
163  even if plugins have been uninstalled and reinstalled, repeatedly.
164  This structure is allocated from plugin_mem_root.
165 
166  The key format is as follows:
167  1 byte - variable type code
168  name_len bytes - variable name
169  '\0' - end of key
170 */
171 struct st_bookmark {
172  size_t name_len;
173  int offset;
175  char key[1];
176 };
177 
178 st_bookmark *find_bookmark(const char *plugin, const char *name, int flags);
179 
180 /*
181  skeleton of a plugin variable - portion of structure common to all.
182 */
183 struct SYS_VAR {
185 };
186 
187 inline void convert_underscore_to_dash(char *str, size_t len) {
188  for (char *p = str; p <= str + len; p++)
189  if (*p == '_') *p = '-';
190 }
191 
192 /*
193  sys_var class for access to all plugin variables visible to the user
194 */
195 class sys_var_pluginvar : public sys_var {
196  static bool on_check_pluginvar(sys_var *self, THD *, set_var *var);
197 
198  public:
199  bool is_plugin;
202  /**
203  variable name from whatever is hard-coded in the plugin source
204  and doesn't have pluginname- prefix is replaced by an allocated name
205  with a plugin prefix. When plugin is uninstalled we need to restore the
206  pointer to point to the hard-coded value, because plugin may be
207  installed/uninstalled many times without reloading the shared object.
208  */
209  const char *orig_pluginvar_name;
210 
211  static void *operator new(size_t size, MEM_ROOT *mem_root,
212  const std::nothrow_t &arg MY_ATTRIBUTE((unused)) =
213  std::nothrow) noexcept {
214  return mem_root->Alloc(size);
215  }
216 
217  static void *operator new(size_t size) {
218  return my_malloc(PSI_NOT_INSTRUMENTED, size, MYF(0));
219  }
220 
221  static void operator delete(void *ptr_arg MY_ATTRIBUTE((unused)),
222  size_t size MY_ATTRIBUTE((unused))) {
223  TRASH(ptr_arg, size);
224  }
225 
226  static void operator delete(
227  void *, MEM_ROOT *, const std::nothrow_t &)noexcept { /* never called */
228  }
229 
230  static void operator delete(void *ptr) { my_free(ptr); }
231 
232  sys_var_pluginvar(sys_var_chain *chain, const char *name_arg,
233  SYS_VAR *plugin_var_arg)
234  : sys_var(
235  chain, name_arg, plugin_var_arg->comment,
236  (plugin_var_arg->flags & PLUGIN_VAR_THDLOCAL ? SESSION : GLOBAL) |
237  (plugin_var_arg->flags & PLUGIN_VAR_READONLY ? READONLY : 0) |
238  (plugin_var_arg->flags & PLUGIN_VAR_INVISIBLE ? INVISIBLE : 0) |
239  (plugin_var_arg->flags & PLUGIN_VAR_PERSIST_AS_READ_ONLY
241  : 0),
242  0, (plugin_var_arg->flags & PLUGIN_VAR_NOCMDOPT) ? -1 : 0,
243  (plugin_var_arg->flags & PLUGIN_VAR_NOCMDARG
244  ? NO_ARG
245  : (plugin_var_arg->flags & PLUGIN_VAR_OPCMDARG
246  ? OPT_ARG
247  : (plugin_var_arg->flags & PLUGIN_VAR_RQCMDARG
248  ? REQUIRED_ARG
249  : REQUIRED_ARG))),
250  pluginvar_show_type(plugin_var_arg), 0, 0, VARIABLE_NOT_IN_BINLOG,
251  (plugin_var_arg->flags & PLUGIN_VAR_NODEFAULT) ? on_check_pluginvar
252  : NULL,
254  plugin_var(plugin_var_arg),
255  orig_pluginvar_name(plugin_var_arg->name) {
256  plugin_var->name = name_arg;
257  is_plugin = true;
258  }
259  sys_var_pluginvar *cast_pluginvar() { return this; }
264  uchar *do_value_ptr(THD *running_thd, THD *target_thd, enum_var_type type,
265  LEX_STRING *base);
267  return do_value_ptr(thd, thd, type, base);
268  }
269  const uchar *session_value_ptr(THD *running_thd, THD *target_thd,
270  LEX_STRING *base) {
271  return do_value_ptr(running_thd, target_thd, OPT_SESSION, base);
272  }
273  const uchar *global_value_ptr(THD *thd, LEX_STRING *base) {
274  return do_value_ptr(thd, OPT_GLOBAL, base);
275  }
276  bool do_check(THD *thd, set_var *var);
277  virtual void session_save_default(THD *, set_var *) {}
278  virtual void saved_value_to_string(THD *thd, set_var *var, char *def_val);
279  virtual void global_save_default(THD *, set_var *) {}
280  bool session_update(THD *thd, set_var *var);
281  bool global_update(THD *thd, set_var *var);
282  bool is_default(THD *thd, set_var *var);
287  source.m_source = src->m_source;
288  }
290  return (plugin_var->flags & PLUGIN_VAR_NOPERSIST);
291  }
292  void set_is_plugin(bool val) { is_plugin = val; }
293 };
294 
295 /*
296  hidden part of opaque value passed to variable check functions.
297  Used to provide a object-like structure to non C++ consumers.
298 */
301 };
302 
303 // Defined in sql_plugin.cc, but declared here since sql_plugin.h has so
304 // many users and would like not to include "map_helpers.h".
306 
307 #endif
#define TRASH(A, B)
Put bad content in memory to be sure it will segfault if dereferenced.
Definition: memory_debugging.h:70
LEX_CSTRING name
Definition: set_var.h:105
Definition: sql_plugin_ref.h:44
bool do_check(THD *thd, set_var *var)
Definition: sql_plugin_var.cc:319
Definition: set_var.h:108
unsigned long long int ulonglong
Definition: my_inttypes.h:74
#define PLUGIN_VAR_RQCMDARG
Argument required for cmd line.
Definition: component_sys_var_service.h:83
unsigned char uchar
Definition: my_inttypes.h:51
const uchar * session_value_ptr(THD *running_thd, THD *target_thd, LEX_STRING *base)
A pointer to a value of the variable for SHOW.
Definition: sql_plugin_var.h:269
SHOW_TYPE show_type()
typedef DECLARE_MYSQL_THDVAR_TYPELIB(thdvar_enum_t, unsigned long)
int offset
Definition: sql_plugin_var.h:173
"public" interface to sys_var - server configuration variables.
Item_result
Type of the user defined function return slot and arguments
Definition: udf_registration_types.h:38
uchar * intern_sys_var_ptr(THD *thd, int offset, bool global_lock)
Definition: sql_plugin_var.cc:188
bool session_update(THD *thd, set_var *var)
Definition: sql_plugin_var.cc:333
Definition: mysql_lex_string.h:34
Definition: set_var.h:111
uint version
Definition: sql_plugin_var.h:174
const string name("\ame\)
char buffer[STRING_BUFFER]
Definition: test_sql_9_sessions.cc:57
Definition: sql_plugin_var.h:299
Definition: sql_plugin_var.h:183
Some integer typedefs for easier portability.
TYPELIB * plugin_var_typelib(void)
Definition: sql_plugin_var.cc:289
Definition: set_var.h:135
#define PLUGIN_VAR_NOPERSIST
SET PERSIST_ONLY is prohibited for read only variables.
Definition: component_sys_var_service.h:87
sys_var_pluginvar(sys_var_chain *chain, const char *name_arg, SYS_VAR *plugin_var_arg)
Definition: sql_plugin_var.h:232
static const int PARSE_NORMAL
Definition: set_var.h:129
Item * item
Definition: sql_plugin_var.h:300
#define PLUGIN_VAR_NOCMDOPT
Not a command line option.
Definition: component_sys_var_service.h:81
ulonglong get_max_value()
Definition: sql_plugin_var.cc:492
void update_func_str(THD *, SYS_VAR *, void *tgt, const void *save)
Definition: sql_plugin_var.cc:820
typedef DECLARE_MYSQL_SYSVAR_TYPELIB(sysvar_enum_t, unsigned long)
Sergei Dialog Client Authentication NULL
Definition: dialog.cc:352
void convert_underscore_to_dash(char *str, size_t len)
Definition: sql_plugin_var.h:187
SYS_VAR * plugin_var
Definition: sql_plugin_var.h:201
static struct st_mysql_daemon plugin
Definition: test_services_host_application_signal.cc:130
bool check_update_type(Item_result type)
Definition: sql_plugin_var.cc:258
#define PSI_NOT_INSTRUMENTED
Definition: validate_password_imp.cc:38
void my_free(void *ptr)
Frees the memory pointed by the ptr.
Definition: my_memory.cc:81
int check_func_double(THD *thd, SYS_VAR *var, void *save, st_mysql_value *value)
Definition: sql_plugin_var.cc:791
void update_func_longlong(THD *, SYS_VAR *, void *tgt, const void *save)
Definition: sql_plugin_var.cc:816
Definition: set_var.h:79
SHOW_TYPE pluginvar_show_type(SYS_VAR *plugin_var)
Definition: sql_plugin_var.cc:153
Definition: set_var.h:107
int check_func_str(THD *thd, SYS_VAR *, void *save, st_mysql_value *value)
Definition: sql_plugin_var.cc:719
Performance schema instrumentation interface.
set_var_base descendant for assignments to the system variables.
Definition: set_var.h:386
strcpy(retval, s)
#define PLUGIN_VAR_NOCMDARG
No argument for cmd line.
Definition: component_sys_var_service.h:82
#define PLUGIN_VAR_OPCMDARG
Argument optional for cmd line.
Definition: component_sys_var_service.h:84
const char * orig_pluginvar_name
variable name from whatever is hard-coded in the plugin source and doesn&#39;t have pluginname- prefix is...
Definition: sql_plugin_var.h:209
There can be some variables which needs to be set before plugin is loaded.
Definition: set_var.h:126
Various macros useful for communicating with memory debuggers, such as Valgrind.
Definition: plugin.h:745
uchar * do_value_ptr(THD *thd, enum_var_type type, LEX_STRING *base)
Definition: sql_plugin_var.h:266
int flags
or&#39;ed flag_enum values
Definition: set_var.h:144
void update_func_int(THD *, SYS_VAR *, void *tgt, const void *save)
Definition: sql_plugin_var.cc:808
A class representing one system variable - that is something that can be accessed as @global...
Definition: set_var.h:102
int check_func_longlong(THD *thd, SYS_VAR *var, void *save, st_mysql_value *value)
Definition: sql_plugin_var.cc:697
std::unordered_map, but with my_malloc, so that you can track the memory used using PSI memory keys...
Definition: map_helpers.h:175
enum enum_mysql_show_type SHOW_TYPE
Definition: set_var.h:68
Definition: set_var.h:89
void plugin_opt_set_limits(struct my_option *, const SYS_VAR *)
Definition: sql_plugin_var.cc:860
void update_func_double(THD *, SYS_VAR *, void *tgt, const void *save)
Definition: sql_plugin_var.cc:824
Header for compiler-dependent features.
int check_func_set(THD *, SYS_VAR *var, void *save, st_mysql_value *value)
Definition: sql_plugin_var.cc:759
st_bookmark * find_bookmark(const char *plugin, const char *name, int flags)
Definition: sql_plugin_var.cc:833
bool is_default(THD *thd, set_var *var)
Definition: sql_plugin_var.cc:428
Definition: sql_plugin_var.h:195
unsigned int len
Definition: dbug_analyze.cc:216
Definition: item.h:666
unsigned int uint
Definition: uca-dump.cc:29
#define PLUGIN_VAR_NODEFAULT
SET DEFAULT is prohibited.
Definition: component_sys_var_service.h:85
long long int longlong
Definition: my_inttypes.h:73
#define MYF(v)
Definition: my_inttypes.h:124
Definition: my_getopt.h:90
Definition: my_getopt.h:78
int item_val_int(st_mysql_value *value, long long *buf)
Definition: sql_plugin_var.cc:239
#define PLUGIN_VAR_PERSIST_AS_READ_ONLY
There can be some variables which needs to be set before plugin is loaded but not after plugin is loa...
Definition: plugin.h:195
longlong get_min_value()
Definition: sql_plugin_var.cc:470
void set_arg_source(get_opt_arg_source *src)
Definition: sql_plugin_var.h:285
Definition: my_getopt.h:78
Common header for many mysys elements.
char key[1]
Definition: sql_plugin_var.h:175
typedef DECLARE_MYSQL_THDVAR_SIMPLE(thdvar_int_t, int)
bool global_update(THD *thd, set_var *var)
Definition: sql_plugin_var.cc:355
Definition: typelib.h:34
int check_func_long(THD *thd, SYS_VAR *var, void *save, st_mysql_value *value)
Definition: sql_plugin_var.cc:676
static MEM_ROOT mem_root
Definition: client_plugin.cc:107
size_t name_len
Definition: sql_plugin_var.h:172
static bool on_check_pluginvar(sys_var *self, THD *, set_var *var)
Enforce the NO DEFAULT policy for plugin system variables.
Definition: sql_plugin_var.cc:538
int check_func_enum(THD *, SYS_VAR *var, void *save, st_mysql_value *value)
Definition: sql_plugin_var.cc:731
enum_var_type
Definition: set_var.h:87
int item_val_real(st_mysql_value *value, double *buf)
Definition: sql_plugin_var.cc:251
void update_func_long(THD *, SYS_VAR *, void *tgt, const void *save)
Definition: sql_plugin_var.cc:812
int type
Definition: http_common.h:411
Definition: my_getopt.h:78
Definition: my_getopt.h:80
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.
Definition: sql_plugin_var.cc:118
st_plugin_int * plugin
Definition: sql_plugin_var.h:200
Definition: set_var.h:113
void set_is_plugin(bool val)
Definition: sql_plugin_var.h:292
#define PLUGIN_VAR_THDLOCAL
Variable is per-connection.
Definition: component_sys_var_service.h:78
bool is_non_persistent()
Definition: sql_plugin_var.h:289
int item_value_type(st_mysql_value *value)
Definition: sql_plugin_var.cc:214
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.
Definition: sql_plugin_var.cc:64
char m_path_name[FN_REFLEN]
config file path OR compiled default values
Definition: my_getopt.h:84
void * Alloc(size_t length)
Allocate memory.
Definition: my_alloc.h:134
sys_var_pluginvar * cast_pluginvar()
downcast for sys_var_pluginvar.
Definition: sql_plugin_var.h:259
const char * p
Definition: ctype-mb.cc:1232
const string value("\alue\)
typedef DECLARE_MYSQL_THDVAR_BASIC(thdvar_bool_t, bool)
enum enum_variable_source m_source
Definition: my_getopt.h:85
The MEM_ROOT is a simple arena, where allocations are carved out of larger blocks.
Definition: my_alloc.h:77
virtual void session_save_default(THD *, set_var *)
save the session default value of the variable in var
Definition: sql_plugin_var.h:277
#define PLUGIN_VAR_READONLY
Server variable is read only.
Definition: component_sys_var_service.h:79
void update_func_bool(THD *, SYS_VAR *, void *tgt, const void *save)
Definition: sql_plugin_var.cc:804
static int flags[50]
Definition: hp_test1.cc:39
const char * item_val_str(st_mysql_value *value, char *buffer, int *length)
Definition: sql_plugin_var.cc:225
void * my_malloc(PSI_memory_key key, size_t size, int flags)
Below functions are used by the components.
Definition: my_memory.cc:57
bool is_plugin
Definition: sql_plugin_var.h:199
int check_func_int(THD *thd, SYS_VAR *var, void *save, st_mysql_value *value)
Definition: sql_plugin_var.cc:655
typedef DECLARE_MYSQL_SYSVAR_SIMPLE(sysvar_int_t, int)
malloc_unordered_map< std::string, st_bookmark * > * get_bookmark_hash()
Definition: sql_plugin.cc:489
uchar * real_value_ptr(THD *thd, enum_var_type type)
Definition: sql_plugin_var.cc:278
typedef DECLARE_MYSQL_SYSVAR_BASIC(sysvar_bool_t, bool)
unsigned long ulong
Definition: my_inttypes.h:48
int check_func_bool(THD *, SYS_VAR *, void *save, st_mysql_value *value)
Definition: sql_plugin_var.cc:633
int item_is_unsigned(st_mysql_value *value)
Definition: sql_plugin_var.cc:246
struct get_opt_arg_source source
Definition: set_var.h:154
bool length(const dd::Spatial_reference_system *srs, const Geometry *g1, double *length, bool *null) noexcept
Computes the length of linestrings and multilinestrings.
Definition: length.cc:75
MYSQL_PLUGIN_VAR_HEADER
Definition: sql_plugin_var.h:184
const uchar * global_value_ptr(THD *thd, LEX_STRING *base)
Definition: sql_plugin_var.h:273
Definition: sql_plugin_var.h:171
virtual void global_save_default(THD *, set_var *)
save the global default value of the variable in var
Definition: sql_plugin_var.h:279
#define comment
Definition: lexyy.cc:959
#define PLUGIN_VAR_INVISIBLE
Definition: plugin.h:196
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_class.h:777
virtual void saved_value_to_string(THD *thd, set_var *var, char *def_val)
This function converts value stored in save_result to string.
Definition: sql_plugin_var.cc:547
Definition: set_var.h:90
uchar * do_value_ptr(THD *running_thd, THD *target_thd, enum_var_type type, LEX_STRING *base)
Definition: sql_plugin_var.cc:305