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, sys_after_update_func func= NULL)
97
sys_var(const std::string name_arg, sys_after_update_func func= NULL)
100
100
after_update(func),
102
101
m_allow_empty_value(true)
104
103
virtual ~sys_var() {}
229
228
class sys_var_uint64_t_ptr :public sys_var
232
const uint64_t default_value;
233
bool have_default_value;
235
sys_var_uint64_t_ptr(const char *name_arg, uint64_t *value_ptr_arg) :
237
value(value_ptr_arg),
239
have_default_value(false)
242
sys_var_uint64_t_ptr(const char *name_arg,
243
uint64_t *value_ptr_arg,
244
const uint64_t default_value_in) :
246
value(value_ptr_arg),
247
default_value(default_value_in),
248
have_default_value(true)
251
sys_var_uint64_t_ptr(const char *name_arg,
252
uint64_t *value_ptr_arg,
253
sys_after_update_func func) :
254
sys_var(name_arg,func),
255
value(value_ptr_arg),
257
have_default_value(false)
260
sys_var_uint64_t_ptr(const char *name_arg,
261
uint64_t *value_ptr_arg,
262
sys_after_update_func func,
263
const uint64_t default_value_in) :
264
sys_var(name_arg,func),
265
value(value_ptr_arg),
266
default_value(default_value_in),
267
have_default_value(true)
232
sys_var_uint64_t_ptr(const char *name_arg, uint64_t *value_ptr_arg)
233
:sys_var(name_arg),value(value_ptr_arg)
235
sys_var_uint64_t_ptr(const char *name_arg, uint64_t *value_ptr_arg,
236
sys_after_update_func func)
237
:sys_var(name_arg,func), value(value_ptr_arg)
270
239
bool update(Session *session, set_var *var);
271
240
void set_default(Session *session, sql_var_t type);
272
virtual bool check_default(sql_var_t)
274
return (not have_default_value) && option_limits == 0;
276
241
SHOW_TYPE show_type() { return SHOW_LONGLONG; }
277
242
unsigned char *value_ptr(Session *, sql_var_t,
278
243
const LEX_STRING *)
304
sys_var_bool_ptr(const std::string &name_arg, bool *value_arg,
305
sys_after_update_func func= NULL) :
306
sys_var(name_arg, func), value(value_arg)
269
sys_var_bool_ptr(const char *name_arg, bool *value_arg)
270
:sys_var(name_arg),value(value_arg)
308
272
bool check(Session *session, set_var *var)
310
274
return check_enum(session, var, &bool_typelib);
522
class sys_var_std_string :
526
sys_check_func check_func;
527
sys_update_func update_func;
528
sys_set_default_func set_default_func;
530
sys_var_std_string(const std::string &name_arg,
531
std::string &value_arg,
532
sys_check_func check_func_arg= NULL,
533
sys_update_func update_func_arg= NULL) :
536
check_func(check_func_arg),
537
update_func(update_func_arg)
540
inline void set(char *val_in)
545
void set_check_func(sys_check_func check_func_arg= NULL)
547
check_func= check_func_arg;
550
void set_update_func(sys_update_func update_func_arg= NULL)
552
update_func= update_func_arg;
555
bool check(Session *session, set_var *var);
557
bool update(Session *session, set_var *var)
559
if (update_func != NULL)
561
return (*update_func)(session, var);
565
SHOW_TYPE show_type() { return SHOW_CHAR; }
566
unsigned char *value_ptr(Session *, sql_var_t, const LEX_STRING *)
568
return (unsigned char*)(value.c_str());
570
bool check_update_type(Item_result type)
572
return type != STRING_RESULT; /* Only accept strings */
574
bool check_default(sql_var_t)
576
bool is_readonly() const { return false; }
579
486
class sys_var_const_string :