24
24
#include <boost/filesystem.hpp>
27
#include "drizzled/function/func.h"
28
#include "drizzled/function/set_user_var.h"
29
#include "drizzled/item/string.h"
30
#include "drizzled/item/field.h"
26
32
#include "drizzled/constrained_value.h"
27
33
#include "drizzled/set_var.h"
28
34
#include "drizzled/show_type.h"
91
98
std::string name; /**< The name of the variable */
92
sys_check_func check_func;
93
99
sys_after_update_func after_update; /**< Function pointer triggered after the variable's value is updated */
94
100
struct option *option_limits; /**< Updated by by sys_var_init() */
95
101
bool m_allow_empty_value; /**< Does variable allow an empty value? */
97
sys_var(const std::string &name_arg,
98
sys_after_update_func func= NULL,
99
sys_check_func check_func_arg= NULL)
103
sys_var(const std::string name_arg, sys_after_update_func func= NULL)
102
check_func(check_func_arg),
103
106
after_update(func),
105
107
m_allow_empty_value(true)
107
109
virtual ~sys_var() {}
224
230
{ return (unsigned char*) value; }
227
class sys_var_uint32_t_ptr_readonly :
228
public sys_var_uint32_t_ptr
231
sys_var_uint32_t_ptr_readonly(const char *name_arg,
232
uint32_t *value_ptr_arg) :
233
sys_var_uint32_t_ptr(name_arg, value_ptr_arg)
236
sys_var_uint32_t_ptr_readonly(const char *name_arg,
237
uint32_t *value_ptr_arg,
238
sys_after_update_func func) :
239
sys_var_uint32_t_ptr(name_arg, value_ptr_arg, func)
242
bool is_readonly() const
249
234
class sys_var_uint64_t_ptr :public sys_var
252
const uint64_t default_value;
253
bool have_default_value;
255
sys_var_uint64_t_ptr(const char *name_arg, uint64_t *value_ptr_arg) :
257
value(value_ptr_arg),
259
have_default_value(false)
262
sys_var_uint64_t_ptr(const char *name_arg,
263
uint64_t *value_ptr_arg,
264
const uint64_t default_value_in) :
266
value(value_ptr_arg),
267
default_value(default_value_in),
268
have_default_value(true)
271
sys_var_uint64_t_ptr(const char *name_arg,
272
uint64_t *value_ptr_arg,
273
sys_after_update_func func) :
274
sys_var(name_arg,func),
275
value(value_ptr_arg),
277
have_default_value(false)
280
sys_var_uint64_t_ptr(const char *name_arg,
281
uint64_t *value_ptr_arg,
282
sys_after_update_func func,
283
const uint64_t default_value_in) :
284
sys_var(name_arg,func),
285
value(value_ptr_arg),
286
default_value(default_value_in),
287
have_default_value(true)
238
sys_var_uint64_t_ptr(const char *name_arg, uint64_t *value_ptr_arg)
239
:sys_var(name_arg),value(value_ptr_arg)
241
sys_var_uint64_t_ptr(const char *name_arg, uint64_t *value_ptr_arg,
242
sys_after_update_func func)
243
:sys_var(name_arg,func), value(value_ptr_arg)
290
245
bool update(Session *session, set_var *var);
291
246
void set_default(Session *session, sql_var_t type);
292
virtual bool check_default(sql_var_t)
294
return (not have_default_value) && option_limits == 0;
296
247
SHOW_TYPE show_type() { return SHOW_LONGLONG; }
297
248
unsigned char *value_ptr(Session *, sql_var_t,
298
249
const LEX_STRING *)
320
271
class sys_var_bool_ptr :public sys_var
325
sys_var_bool_ptr(const std::string &name_arg, bool *value_arg,
326
sys_after_update_func func= NULL) :
327
sys_var(name_arg, func), default_value(*value_arg), value(value_arg)
275
sys_var_bool_ptr(const char *name_arg, bool *value_arg)
276
:sys_var(name_arg),value(value_arg)
329
278
bool check(Session *session, set_var *var)
331
280
return check_enum(session, var, &bool_typelib);
333
virtual bool check_default(sql_var_t)
337
282
bool update(Session *session, set_var *var);
338
283
void set_default(Session *session, sql_var_t type);
339
284
SHOW_TYPE show_type() { return SHOW_MY_BOOL; }
360
305
char *value; // Pointer to allocated string
361
306
uint32_t value_length;
307
sys_check_func check_func;
362
308
sys_update_func update_func;
363
309
sys_set_default_func set_default_func;
364
310
sys_var_str(const char *name_arg,
365
sys_check_func check_func_arg,
366
sys_update_func update_func_arg,
367
sys_set_default_func set_default_func_arg,
369
sys_var(name_arg, NULL, check_func_arg),
371
update_func(update_func_arg),
372
set_default_func(set_default_func_arg)
311
sys_check_func check_func_arg,
312
sys_update_func update_func_arg,
313
sys_set_default_func set_default_func_arg,
315
:sys_var(name_arg), value(value_arg), check_func(check_func_arg),
316
update_func(update_func_arg),set_default_func(set_default_func_arg)
374
318
bool check(Session *session, set_var *var);
375
319
bool update(Session *session, set_var *var)
434
378
constrained_value<T> &value;
381
bool have_default_value;
438
383
sys_var_constrained_value(const char *name_arg,
439
384
constrained_value<T> &value_arg) :
440
385
sys_var(name_arg),
441
386
value(value_arg),
442
default_value(value_arg.get())
445
sys_var_constrained_value(const char *name_arg,
446
constrained_value<T> &value_arg,
447
sys_after_update_func after_update_func_arg) :
448
sys_var(name_arg, after_update_func_arg),
450
default_value(value_arg.get())
453
sys_var_constrained_value(const char *name_arg,
454
constrained_value<T> &value_arg,
455
sys_check_func check_func_arg) :
456
sys_var(name_arg, NULL, check_func_arg),
458
default_value(value_arg.get())
388
have_default_value(false)
391
sys_var_constrained_value(const char *name_arg,
392
constrained_value<T> &value_arg,
393
T default_value_arg) :
396
default_value(default_value_arg),
397
have_default_value(true)
485
424
unsigned char *value_ptr(Session *, sql_var_t, const LEX_STRING *)
487
basic_value= value.get();
426
basic_value= T(value);
488
427
return (unsigned char*)&basic_value;
432
inline bool sys_var_constrained_value<const uint64_t>::is_readonly() const
438
inline bool sys_var_constrained_value<const uint32_t>::is_readonly() const
493
444
inline SHOW_TYPE sys_var_constrained_value<uint64_t>::show_type()
495
446
return SHOW_LONGLONG;
531
class sys_var_constrained_value_readonly :
532
public sys_var_constrained_value<T>
535
sys_var_constrained_value_readonly(const char *name_arg,
536
constrained_value<T> &value_arg) :
537
sys_var_constrained_value<T>(name_arg, value_arg)
540
sys_var_constrained_value_readonly(const char *name_arg,
541
constrained_value<T> &value_arg,
542
T default_value_arg) :
543
sys_var_constrained_value<T>(name_arg, value_arg, default_value_arg)
547
bool is_readonly() const
553
class sys_var_std_string :
557
sys_check_func check_func;
558
sys_update_func update_func;
559
sys_set_default_func set_default_func;
561
sys_var_std_string(const std::string &name_arg,
562
std::string &value_arg,
563
sys_check_func check_func_arg= NULL,
564
sys_update_func update_func_arg= NULL) :
567
check_func(check_func_arg),
568
update_func(update_func_arg)
571
inline void set(char *val_in)
576
void set_check_func(sys_check_func check_func_arg= NULL)
578
check_func= check_func_arg;
581
void set_update_func(sys_update_func update_func_arg= NULL)
583
update_func= update_func_arg;
586
bool check(Session *session, set_var *var);
588
bool update(Session *session, set_var *var)
590
if (update_func != NULL)
592
return (*update_func)(session, var);
596
SHOW_TYPE show_type() { return SHOW_CHAR; }
597
unsigned char *value_ptr(Session *, sql_var_t, const LEX_STRING *)
599
return (unsigned char*)(value.c_str());
601
bool check_update_type(Item_result type)
603
return type != STRING_RESULT; /* Only accept strings */
605
bool check_default(sql_var_t)
607
bool is_readonly() const { return false; }
482
inline unsigned char *sys_var_constrained_value<const uint64_t>::value_ptr(Session *, sql_var_t, const LEX_STRING *)
484
return (unsigned char*)&basic_value;
488
inline unsigned char *sys_var_constrained_value<const uint32_t>::value_ptr(Session *, sql_var_t, const LEX_STRING *)
490
return (unsigned char*)&basic_value;
610
493
class sys_var_const_string :
1159
1042
drizzle_show_var* enumerate_sys_vars(Session *session);
1043
void drizzle_add_plugin_sysvar(sys_var_pluginvar *var);
1044
void drizzle_del_plugin_sysvar();
1160
1045
void add_sys_var_to_list(sys_var *var, struct option *long_options);
1161
1046
void add_sys_var_to_list(sys_var *var);
1162
sys_var *find_sys_var(const char *str, uint32_t length=0);
1047
sys_var *find_sys_var(Session *session, const char *str, uint32_t length=0);
1163
1048
bool not_all_support_one_shot(List<set_var_base> *var_list);
1164
1049
extern sys_var_session_time_zone sys_time_zone;
1165
1050
extern sys_var_session_bit sys_autocommit;