1
1
/* -*- mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
2
2
* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
4
* Copyright (C) 2008 Sun Microsystems, Inc.
4
* Copyright (C) 2008 Sun Microsystems
6
6
* This program is free software; you can redistribute it and/or modify
7
7
* it under the terms of the GNU General Public License as published by
91
92
std::string name; /**< The name of the variable */
92
sys_check_func check_func;
93
93
sys_after_update_func after_update; /**< Function pointer triggered after the variable's value is updated */
94
94
struct option *option_limits; /**< Updated by by sys_var_init() */
95
95
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)
97
sys_var(const std::string &name_arg, sys_after_update_func func= NULL)
102
check_func(check_func_arg),
103
100
after_update(func),
104
101
option_limits(NULL),
105
102
m_allow_empty_value(true)
224
225
{ 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
229
class sys_var_uint64_t_ptr :public sys_var
320
300
class sys_var_bool_ptr :public sys_var
325
304
sys_var_bool_ptr(const std::string &name_arg, bool *value_arg,
326
305
sys_after_update_func func= NULL) :
327
sys_var(name_arg, func), default_value(*value_arg), value(value_arg)
306
sys_var(name_arg, func), value(value_arg)
329
308
bool check(Session *session, set_var *var)
331
310
return check_enum(session, var, &bool_typelib);
333
virtual bool check_default(sql_var_t)
337
312
bool update(Session *session, set_var *var);
338
313
void set_default(Session *session, sql_var_t type);
339
314
SHOW_TYPE show_type() { return SHOW_MY_BOOL; }
360
335
char *value; // Pointer to allocated string
361
336
uint32_t value_length;
337
sys_check_func check_func;
362
338
sys_update_func update_func;
363
339
sys_set_default_func set_default_func;
364
340
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)
341
sys_check_func check_func_arg,
342
sys_update_func update_func_arg,
343
sys_set_default_func set_default_func_arg,
345
:sys_var(name_arg), value(value_arg), check_func(check_func_arg),
346
update_func(update_func_arg),set_default_func(set_default_func_arg)
374
348
bool check(Session *session, set_var *var);
375
349
bool update(Session *session, set_var *var)
434
408
constrained_value<T> &value;
411
bool have_default_value;
438
413
sys_var_constrained_value(const char *name_arg,
439
414
constrained_value<T> &value_arg) :
440
415
sys_var(name_arg),
441
416
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())
418
have_default_value(false)
421
sys_var_constrained_value(const char *name_arg,
422
constrained_value<T> &value_arg,
423
T default_value_arg) :
426
default_value(default_value_arg),
427
have_default_value(true)
469
438
bool update(Session *, set_var *var)
471
value= uint32_t(var->getInteger());
440
value= var->save_result.uint32_t_value;
475
444
bool check_default(sql_var_t)
446
return not have_default_value;
480
449
void set_default(Session *, sql_var_t)
517
486
inline bool sys_var_constrained_value<uint64_t>::update(Session *, set_var *var)
519
value= var->getInteger();
488
value= var->save_result.uint64_t_value;
524
493
inline bool sys_var_constrained_value<uint32_t>::update(Session *, set_var *var)
526
value= uint32_t(var->getInteger());
495
value= var->save_result.uint32_t_value;
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; }
610
522
class sys_var_const_string :
946
858
plugin::StorageEngine *drizzle_system_variables::*offset_arg)
947
859
:sys_var_session(name_arg), offset(offset_arg)
861
bool check(Session *session, set_var *var);
949
862
SHOW_TYPE show_type() { return SHOW_CHAR; }
950
863
bool check_update_type(Item_result type)
1019
932
sys_var_collation(const char *name_arg)
1020
933
:sys_var_session(name_arg, NULL)
935
bool check(Session *session, set_var *var);
1022
936
SHOW_TYPE show_type() { return SHOW_CHAR; }
1023
937
bool check_update_type(Item_result type)
1155
1071
drizzle_show_var* enumerate_sys_vars(Session *session);
1072
void drizzle_add_plugin_sysvar(sys_var_pluginvar *var);
1073
void drizzle_del_plugin_sysvar();
1156
1074
void add_sys_var_to_list(sys_var *var, struct option *long_options);
1157
1075
void add_sys_var_to_list(sys_var *var);
1158
sys_var *find_sys_var(const std::string &name);
1076
sys_var *find_sys_var(Session *session, const char *str, uint32_t length=0);
1077
bool not_all_support_one_shot(List<set_var_base> *var_list);
1159
1078
extern sys_var_session_time_zone sys_time_zone;
1160
1079
extern sys_var_session_bit sys_autocommit;
1161
1080
const CHARSET_INFO *get_old_charset_by_name(const char *old_name);