MySQL 8.2.0
Source Code Documentation
sql_plugin_var.h
Go to the documentation of this file.
1/* Copyright (c) 2017, 2023, Oracle and/or its affiliates.
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"
39#include "mysql/plugin.h"
42#include "sql/set_var.h"
43
44class Item;
45class THD;
46struct MEM_ROOT;
47struct SYS_VAR;
48struct TYPELIB;
49struct 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*/
84typedef DECLARE_MYSQL_SYSVAR_BASIC(sysvar_bool_t, bool);
85typedef DECLARE_MYSQL_THDVAR_BASIC(thdvar_bool_t, bool);
86typedef DECLARE_MYSQL_SYSVAR_BASIC(sysvar_str_t, char *);
87typedef DECLARE_MYSQL_THDVAR_BASIC(thdvar_str_t, char *);
88
89typedef DECLARE_MYSQL_SYSVAR_TYPELIB(sysvar_enum_t, unsigned long);
90typedef DECLARE_MYSQL_THDVAR_TYPELIB(thdvar_enum_t, unsigned long);
93
94typedef DECLARE_MYSQL_SYSVAR_SIMPLE(sysvar_int_t, int);
95typedef DECLARE_MYSQL_SYSVAR_SIMPLE(sysvar_long_t, long);
96typedef DECLARE_MYSQL_SYSVAR_SIMPLE(sysvar_longlong_t, longlong);
97typedef DECLARE_MYSQL_SYSVAR_SIMPLE(sysvar_uint_t, uint);
98typedef DECLARE_MYSQL_SYSVAR_SIMPLE(sysvar_ulong_t, ulong);
99typedef DECLARE_MYSQL_SYSVAR_SIMPLE(sysvar_ulonglong_t, ulonglong);
100typedef DECLARE_MYSQL_SYSVAR_SIMPLE(sysvar_double_t, double);
101
102typedef DECLARE_MYSQL_THDVAR_SIMPLE(thdvar_int_t, int);
103typedef DECLARE_MYSQL_THDVAR_SIMPLE(thdvar_long_t, long);
104typedef DECLARE_MYSQL_THDVAR_SIMPLE(thdvar_longlong_t, longlong);
105typedef DECLARE_MYSQL_THDVAR_SIMPLE(thdvar_uint_t, uint);
106typedef DECLARE_MYSQL_THDVAR_SIMPLE(thdvar_ulong_t, ulong);
107typedef DECLARE_MYSQL_THDVAR_SIMPLE(thdvar_ulonglong_t, ulonglong);
108typedef DECLARE_MYSQL_THDVAR_SIMPLE(thdvar_double_t, double);
109
110/****************************************************************************
111 default variable data check and update functions
112****************************************************************************/
113int check_func_bool(THD *, SYS_VAR *, void *save, st_mysql_value *value);
114
115int check_func_int(THD *thd, SYS_VAR *var, void *save, st_mysql_value *value);
116
117int check_func_long(THD *thd, SYS_VAR *var, void *save, st_mysql_value *value);
118
119int check_func_longlong(THD *thd, SYS_VAR *var, void *save,
120 st_mysql_value *value);
121
122int check_func_str(THD *thd, SYS_VAR *, void *save, st_mysql_value *value);
123
124int check_func_enum(THD *, SYS_VAR *var, void *save, st_mysql_value *value);
125
126int check_func_set(THD *, SYS_VAR *var, void *save, st_mysql_value *value);
127
128int check_func_double(THD *thd, SYS_VAR *var, void *save,
129 st_mysql_value *value);
130
131void update_func_bool(THD *, SYS_VAR *, void *tgt, const void *save);
132
133void update_func_int(THD *, SYS_VAR *, void *tgt, const void *save);
134
135void update_func_long(THD *, SYS_VAR *, void *tgt, const void *save);
136
137void update_func_longlong(THD *, SYS_VAR *, void *tgt, const void *save);
138
139void update_func_str(THD *, SYS_VAR *, void *tgt, const void *save);
140
141void update_func_double(THD *, SYS_VAR *, void *tgt, const void *save);
142
144const void *pluginvar_default_value(SYS_VAR *plugin_var);
145
147const char *item_val_str(st_mysql_value *value, char *buffer, int *length);
148int item_val_int(st_mysql_value *value, long long *buf);
150int item_val_real(st_mysql_value *value, double *buf);
151
152void plugin_opt_set_limits(struct my_option *, const SYS_VAR *);
153
154uchar *intern_sys_var_ptr(THD *thd, int offset, bool global_lock);
155
156bool plugin_var_memalloc_global_update(THD *thd, SYS_VAR *var, char **dest,
157 const char *value);
158bool plugin_var_memalloc_session_update(THD *thd, SYS_VAR *var, char **dest,
159 const char *value);
160
161/*
162 stored in bookmark_hash, this structure is never removed from the
163 hash and is used to mark a single offset for a thd local variable
164 even if plugins have been uninstalled and reinstalled, repeatedly.
165 This structure is allocated from plugin_mem_root.
166
167 The key format is as follows:
168 1 byte - variable type code
169 name_len bytes - variable name
170 '\0' - end of key
171*/
173 size_t name_len;
176 char key[1];
177};
178
179st_bookmark *find_bookmark(const char *plugin, const char *name, int flags);
180
181/*
182 skeleton of a plugin variable - portion of structure common to all.
183*/
184struct SYS_VAR {
186};
187
188inline void convert_underscore_to_dash(char *str, size_t len) {
189 for (char *p = str; p <= str + len; p++)
190 if (*p == '_') *p = '-';
191}
192
193/*
194 sys_var class for access to all plugin variables visible to the user
195*/
197 static bool on_check_pluginvar(sys_var *self, THD *, set_var *var);
198
199 public:
203 /**
204 variable name from whatever is hard-coded in the plugin source
205 and doesn't have pluginname- prefix is replaced by an allocated name
206 with a plugin prefix. When plugin is uninstalled we need to restore the
207 pointer to point to the hard-coded value, because plugin may be
208 installed/uninstalled many times without reloading the shared object.
209 */
211
212 static void *operator new(size_t size, MEM_ROOT *mem_root,
213 const std::nothrow_t &arg
214 [[maybe_unused]] = std::nothrow) noexcept {
215 return mem_root->Alloc(size);
216 }
217
218 static void *operator new(size_t size) {
219 return my_malloc(PSI_NOT_INSTRUMENTED, size, MYF(0));
220 }
221
222 static void operator delete(void *ptr_arg [[maybe_unused]],
223 size_t size [[maybe_unused]]) {
224 TRASH(ptr_arg, size);
225 }
226
227 static void operator delete(
228 void *, MEM_ROOT *, const std::nothrow_t &) noexcept { /* never called */
229 }
230
231 static void operator delete(void *ptr) { my_free(ptr); }
232
233 sys_var_pluginvar(sys_var_chain *chain, const char *name_arg,
234 SYS_VAR *plugin_var_arg)
235 : sys_var(
236 chain, name_arg, plugin_var_arg->comment,
237 (plugin_var_arg->flags & PLUGIN_VAR_THDLOCAL ? SESSION : GLOBAL) |
238 (plugin_var_arg->flags & PLUGIN_VAR_READONLY ? READONLY : 0) |
239 (plugin_var_arg->flags & PLUGIN_VAR_INVISIBLE ? INVISIBLE : 0) |
240 (plugin_var_arg->flags & PLUGIN_VAR_PERSIST_AS_READ_ONLY
242 : 0) |
243 (plugin_var_arg->flags & PLUGIN_VAR_SENSITIVE ? SENSITIVE : 0),
244 0, (plugin_var_arg->flags & PLUGIN_VAR_NOCMDOPT) ? -1 : 0,
245 (plugin_var_arg->flags & PLUGIN_VAR_NOCMDARG
246 ? NO_ARG
247 : (plugin_var_arg->flags & PLUGIN_VAR_OPCMDARG
248 ? OPT_ARG
249 : (plugin_var_arg->flags & PLUGIN_VAR_RQCMDARG
251 : REQUIRED_ARG))),
252 pluginvar_show_type(plugin_var_arg),
253 (intptr)pluginvar_default_value(plugin_var_arg), nullptr,
255 (plugin_var_arg->flags & PLUGIN_VAR_NODEFAULT) ? on_check_pluginvar
256 : nullptr,
258 plugin_var(plugin_var_arg),
259 orig_pluginvar_name(plugin_var_arg->name) {
260 plugin_var->name = name_arg;
261 is_plugin = true;
262 }
263 sys_var_pluginvar *cast_pluginvar() override { return this; }
264 bool check_update_type(Item_result type) override;
268 uchar *do_value_ptr(THD *running_thd, THD *target_thd, enum_var_type type,
269 std::string_view keycache_name);
271 std::string_view keycache_name) {
272 return do_value_ptr(thd, thd, type, keycache_name);
273 }
274 const uchar *session_value_ptr(THD *running_thd, THD *target_thd,
275 std::string_view keycache_name) override {
276 return do_value_ptr(running_thd, target_thd, OPT_SESSION, keycache_name);
277 }
279 std::string_view keycache_name) override {
280 return do_value_ptr(thd, OPT_GLOBAL, keycache_name);
281 }
282 bool do_check(THD *thd, set_var *var) override;
283 void session_save_default(THD *, set_var *) override {}
284 void saved_value_to_string(THD *thd, set_var *var, char *def_val) override;
285 void global_save_default(THD *, set_var *) override {}
286 bool session_update(THD *thd, set_var *var) override;
287 bool global_update(THD *thd, set_var *var) override;
288 longlong get_min_value() override;
289 ulonglong get_max_value() override;
290 void set_arg_source(get_opt_arg_source *src) override {
291 strcpy(source.m_path_name, src->m_path_name);
292 source.m_source = src->m_source;
293 }
294 bool is_non_persistent() override {
295 return (plugin_var->flags & PLUGIN_VAR_NOPERSIST);
296 }
297 void set_is_plugin(bool val) override { is_plugin = val; }
298};
299
300/*
301 hidden part of opaque value passed to variable check functions.
302 Used to provide a object-like structure to non C++ consumers.
303*/
306};
307
308// Defined in sql_plugin.cc, but declared here since sql_plugin.h has so
309// many users and would like not to include "map_helpers.h".
311
312#endif
Kerberos Client Authentication nullptr
Definition: auth_kerberos_client_plugin.cc:250
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:932
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:35
std::unordered_map, but with my_malloc, so that you can track the memory used using PSI memory keys.
Definition: map_helpers.h:147
set_var_base descendant for assignments to the system variables.
Definition: set_var.h:977
Definition: sql_plugin_var.h:196
TYPELIB * plugin_var_typelib(void)
Definition: sql_plugin_var.cc:332
SYS_VAR * plugin_var
Definition: sql_plugin_var.h:202
uchar * do_value_ptr(THD *thd, enum_var_type type, std::string_view keycache_name)
Definition: sql_plugin_var.h:270
bool is_plugin
Definition: sql_plugin_var.h:200
void set_arg_source(get_opt_arg_source *src) override
Definition: sql_plugin_var.h:290
void global_save_default(THD *, set_var *) override
save the global default value of the variable in var
Definition: sql_plugin_var.h:285
void session_save_default(THD *, set_var *) override
save the session default value of the variable in var
Definition: sql_plugin_var.h:283
bool is_non_persistent() override
Definition: sql_plugin_var.h:294
sys_var_pluginvar(sys_var_chain *chain, const char *name_arg, SYS_VAR *plugin_var_arg)
Definition: sql_plugin_var.h:233
st_plugin_int * plugin
Definition: sql_plugin_var.h:201
bool session_update(THD *thd, set_var *var) override
Definition: sql_plugin_var.cc:377
ulonglong get_max_value() override
Definition: sql_plugin_var.cc:445
const uchar * session_value_ptr(THD *running_thd, THD *target_thd, std::string_view keycache_name) override
A pointer to a value of the variable for SHOW.
Definition: sql_plugin_var.h:274
bool check_update_type(Item_result type) override
Definition: sql_plugin_var.cc:301
void set_is_plugin(bool val) override
Definition: sql_plugin_var.h:297
uchar * do_value_ptr(THD *running_thd, THD *target_thd, enum_var_type type, std::string_view keycache_name)
Definition: sql_plugin_var.cc:348
const uchar * global_value_ptr(THD *thd, std::string_view keycache_name) override
Definition: sql_plugin_var.h:278
const char * orig_pluginvar_name
variable name from whatever is hard-coded in the plugin source and doesn't have pluginname- prefix is...
Definition: sql_plugin_var.h:210
void saved_value_to_string(THD *thd, set_var *var, char *def_val) override
This function converts value stored in save_result to string.
Definition: sql_plugin_var.cc:499
uchar * real_value_ptr(THD *thd, enum_var_type type)
Definition: sql_plugin_var.cc:321
sys_var_pluginvar * cast_pluginvar() override
downcast for sys_var_pluginvar.
Definition: sql_plugin_var.h:263
longlong get_min_value() override
Definition: sql_plugin_var.cc:423
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:491
bool do_check(THD *thd, set_var *var) override
Definition: sql_plugin_var.cc:363
SHOW_TYPE show_type()
bool global_update(THD *thd, set_var *var) override
Definition: sql_plugin_var.cc:400
A class representing one system variable - that is something that can be accessed as @global....
Definition: set_var.h:105
LEX_CSTRING name
Definition: set_var.h:108
@ SESSION
Definition: set_var.h:128
@ GLOBAL
Definition: set_var.h:127
@ INVISIBLE
Definition: set_var.h:133
@ SENSITIVE
Sensitive variable.
Definition: set_var.h:151
@ READONLY
Definition: set_var.h:131
@ PERSIST_AS_READ_ONLY
There can be some variables which needs to be set before plugin is loaded.
Definition: set_var.h:146
@ VARIABLE_NOT_IN_BINLOG
Definition: set_var.h:160
struct get_opt_arg_source source
Definition: set_var.h:185
int flags
or'ed flag_enum values
Definition: set_var.h:170
static const int PARSE_NORMAL
Definition: set_var.h:154
static MEM_ROOT mem_root
Definition: client_plugin.cc:113
const char * p
Definition: ctype-mb.cc:1234
#define PLUGIN_VAR_OPCMDARG
Argument optional for cmd line.
Definition: system_variables_bits.h:69
#define PLUGIN_VAR_NOPERSIST
SET PERSIST_ONLY is prohibited for read only variables.
Definition: system_variables_bits.h:72
#define PLUGIN_VAR_THDLOCAL
Variable is per-connection.
Definition: system_variables_bits.h:63
#define PLUGIN_VAR_RQCMDARG
Argument required for cmd line.
Definition: system_variables_bits.h:68
#define PLUGIN_VAR_READONLY
Server variable is read only.
Definition: system_variables_bits.h:64
#define PLUGIN_VAR_NOCMDOPT
Not a command line option.
Definition: system_variables_bits.h:66
#define PLUGIN_VAR_SENSITIVE
Sensitive variable.
Definition: system_variables_bits.h:76
#define PLUGIN_VAR_NOCMDARG
No argument for cmd line.
Definition: system_variables_bits.h:67
#define PLUGIN_VAR_PERSIST_AS_READ_ONLY
Definition: system_variables_bits.h:74
#define PLUGIN_VAR_INVISIBLE
Variable should not be shown.
Definition: system_variables_bits.h:75
#define PLUGIN_VAR_NODEFAULT
SET DEFAULT is prohibited.
Definition: system_variables_bits.h:70
static int flags[50]
Definition: hp_test1.cc:39
#define comment
Definition: lexyy.cc:959
Various macros useful for communicating with memory debuggers, such as Valgrind.
void TRASH(void *ptr, size_t length)
Put bad content in memory to be sure it will segfault if dereferenced.
Definition: memory_debugging.h:70
Header for compiler-dependent features.
@ OPT_ARG
Definition: my_getopt.h:80
@ REQUIRED_ARG
Definition: my_getopt.h:80
@ NO_ARG
Definition: my_getopt.h:80
Some integer typedefs for easier portability.
unsigned long long int ulonglong
Definition: my_inttypes.h:55
unsigned char uchar
Definition: my_inttypes.h:51
intptr_t intptr
Definition: my_inttypes.h:69
long long int longlong
Definition: my_inttypes.h:54
#define MYF(v)
Definition: my_inttypes.h:96
void * my_malloc(PSI_memory_key key, size_t size, int flags)
Allocates size bytes of memory.
Definition: my_memory.cc:56
void my_free(void *ptr)
Frees the memory pointed by the ptr.
Definition: my_memory.cc:80
Common header for many mysys elements.
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1085
Definition: buf0block_hint.cc:29
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
mutable_buffer buffer(void *p, size_t n) noexcept
Definition: buffer.h:417
Performance schema instrumentation interface.
required string type
Definition: replication_group_member_actions.proto:33
"public" interface to sys_var - server configuration variables.
enum enum_mysql_show_type SHOW_TYPE
Definition: set_var.h:73
enum_var_type
Definition: set_var.h:90
@ OPT_GLOBAL
Definition: set_var.h:93
@ OPT_SESSION
Definition: set_var.h:92
int check_func_str(THD *thd, SYS_VAR *, void *save, st_mysql_value *value)
Definition: sql_plugin_var.cc:671
typedef DECLARE_MYSQL_THDVAR_SIMPLE(thdvar_int_t, int)
typedef DECLARE_MYSQL_SYSVAR_BASIC(sysvar_bool_t, bool)
const char * item_val_str(st_mysql_value *value, char *buffer, int *length)
Definition: sql_plugin_var.cc:268
malloc_unordered_map< std::string, st_bookmark * > * get_bookmark_hash()
Definition: sql_plugin.cc:507
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:122
int check_func_bool(THD *, SYS_VAR *, void *save, st_mysql_value *value)
Definition: sql_plugin_var.cc:585
void update_func_long(THD *, SYS_VAR *, void *tgt, const void *save)
Definition: sql_plugin_var.cc:766
void update_func_bool(THD *, SYS_VAR *, void *tgt, const void *save)
Definition: sql_plugin_var.cc:758
st_bookmark * find_bookmark(const char *plugin, const char *name, int flags)
Definition: sql_plugin_var.cc:787
int check_func_enum(THD *, SYS_VAR *var, void *save, st_mysql_value *value)
Definition: sql_plugin_var.cc:683
typedef DECLARE_MYSQL_THDVAR_BASIC(thdvar_bool_t, bool)
void update_func_double(THD *, SYS_VAR *, void *tgt, const void *save)
Definition: sql_plugin_var.cc:778
int check_func_long(THD *thd, SYS_VAR *var, void *save, st_mysql_value *value)
Definition: sql_plugin_var.cc:628
typedef DECLARE_MYSQL_THDVAR_TYPELIB(thdvar_enum_t, unsigned long)
SHOW_TYPE pluginvar_show_type(SYS_VAR *plugin_var)
Definition: sql_plugin_var.cc:157
void update_func_longlong(THD *, SYS_VAR *, void *tgt, const void *save)
Definition: sql_plugin_var.cc:770
const void * pluginvar_default_value(SYS_VAR *plugin_var)
Definition: sql_plugin_var.cc:186
int check_func_set(THD *, SYS_VAR *var, void *save, st_mysql_value *value)
Definition: sql_plugin_var.cc:712
void update_func_int(THD *, SYS_VAR *, void *tgt, const void *save)
Definition: sql_plugin_var.cc:762
void update_func_str(THD *, SYS_VAR *, void *tgt, const void *save)
Definition: sql_plugin_var.cc:774
int check_func_longlong(THD *thd, SYS_VAR *var, void *save, st_mysql_value *value)
Definition: sql_plugin_var.cc:649
int item_val_int(st_mysql_value *value, long long *buf)
Definition: sql_plugin_var.cc:282
uchar * intern_sys_var_ptr(THD *thd, int offset, bool global_lock)
Definition: sql_plugin_var.cc:231
int check_func_int(THD *thd, SYS_VAR *var, void *save, st_mysql_value *value)
Definition: sql_plugin_var.cc:607
int item_is_unsigned(st_mysql_value *value)
Definition: sql_plugin_var.cc:289
int check_func_double(THD *thd, SYS_VAR *var, void *save, st_mysql_value *value)
Definition: sql_plugin_var.cc:745
void convert_underscore_to_dash(char *str, size_t len)
Definition: sql_plugin_var.h:188
int item_val_real(st_mysql_value *value, double *buf)
Definition: sql_plugin_var.cc:294
int item_value_type(st_mysql_value *value)
Definition: sql_plugin_var.cc:257
void plugin_opt_set_limits(struct my_option *, const SYS_VAR *)
Definition: sql_plugin_var.cc:812
typedef DECLARE_MYSQL_SYSVAR_SIMPLE(sysvar_int_t, int)
typedef DECLARE_MYSQL_SYSVAR_TYPELIB(sysvar_enum_t, unsigned long)
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:68
case opt name
Definition: sslopt-case.h:32
The MEM_ROOT is a simple arena, where allocations are carved out of larger blocks.
Definition: my_alloc.h:82
void * Alloc(size_t length)
Allocate memory.
Definition: my_alloc.h:144
Definition: plugin.h:67
MYSQL_PLUGIN_VAR_HEADER
Definition: plugin.h:68
Definition: typelib.h:34
Definition: my_getopt.h:82
char m_path_name[FN_REFLEN]
config file path OR compiled default values
Definition: my_getopt.h:86
enum enum_variable_source m_source
Definition: my_getopt.h:87
Definition: my_getopt.h:92
Definition: sql_plugin_var.h:172
int offset
Definition: sql_plugin_var.h:174
char key[1]
Definition: sql_plugin_var.h:176
uint version
Definition: sql_plugin_var.h:175
size_t name_len
Definition: sql_plugin_var.h:173
Definition: sql_plugin_var.h:304
Item * item
Definition: sql_plugin_var.h:305
Definition: system_variables_bits.h:93
Definition: sql_plugin_ref.h:44
Definition: set_var.h:80
Item_result
Type of the user defined function return slot and arguments.
Definition: udf_registration_types.h:38
#define PSI_NOT_INSTRUMENTED
Definition: validate_password_imp.cc:41