74
75
extern uint32_t global_thread_id;
75
76
extern uint64_t table_cache_size;
76
77
extern uint64_t max_connect_errors;
77
extern uint32_t back_log;
78
extern back_log_constraints back_log;
78
79
extern uint32_t ha_open_options;
79
80
extern char *drizzled_bind_host;
80
81
extern uint32_t dropping_tables;
90
91
void init_sys_var();
93
/****************************************************************************
94
Classes for parsing of the SET command
95
****************************************************************************/
97
class set_var_base :public memory::SqlAlloc
101
virtual ~set_var_base() {}
102
virtual int check(Session *session)=0; /* To check privileges etc. */
103
virtual int update(Session *session)=0; /* To set the value */
104
/* light check for PS */
107
/* MySQL internal variables */
108
class set_var :public set_var_base
116
const CHARSET_INFO *charset;
117
uint32_t uint32_t_value;
118
uint64_t uint64_t_value;
120
plugin::StorageEngine *storage_engine;
121
Time_zone *time_zone;
122
MY_LOCALE *locale_value;
124
LEX_STRING base; /* for structs */
126
set_var(sql_var_t type_arg, sys_var *var_arg,
127
const LEX_STRING *base_name_arg, Item *value_arg)
128
:var(var_arg), type(type_arg), base(*base_name_arg)
131
If the set value is a field, change it to a string to allow things like
132
SET table_type=MYISAM;
134
if (value_arg && value_arg->type() == Item::FIELD_ITEM)
136
Item_field *item= (Item_field*) value_arg;
137
if (!(value=new Item_string(item->field_name,
138
(uint32_t) strlen(item->field_name),
139
item->collation.collation)))
140
value=value_arg; /* Give error message later */
145
int check(Session *session);
146
int update(Session *session);
93
151
* A class which represents a variable, either global or
372
430
bool is_readonly() const { return true; }
434
class sys_var_constrained_value :
437
constrained_value<T> &value;
440
bool have_default_value;
442
sys_var_constrained_value(const char *name_arg,
443
constrained_value<T> &value_arg) :
447
have_default_value(false)
450
sys_var_constrained_value(const char *name_arg,
451
constrained_value<T> &value_arg,
452
T default_value_arg) :
455
default_value(default_value_arg),
456
have_default_value(true)
460
bool is_readonly() const
465
SHOW_TYPE show_type() { return SHOW_INT; }
467
bool update(Session *, set_var *var)
469
value= var->save_result.uint32_t_value;
473
bool check_default(sql_var_t)
475
return not have_default_value;
478
void set_default(Session *, sql_var_t)
480
value= default_value;
483
unsigned char *value_ptr(Session *, sql_var_t, const LEX_STRING *)
485
basic_value= T(value);
486
return (unsigned char*)&basic_value;
491
inline bool sys_var_constrained_value<const uint64_t>::is_readonly() const
497
inline bool sys_var_constrained_value<const uint32_t>::is_readonly() const
503
inline SHOW_TYPE sys_var_constrained_value<uint64_t>::show_type()
505
return SHOW_LONGLONG;
509
inline SHOW_TYPE sys_var_constrained_value<int64_t>::show_type()
511
return SHOW_LONGLONG;
515
inline SHOW_TYPE sys_var_constrained_value<uint32_t>::show_type()
521
inline SHOW_TYPE sys_var_constrained_value<int32_t>::show_type()
527
inline bool sys_var_constrained_value<uint64_t>::update(Session *, set_var *var)
529
value= var->save_result.uint64_t_value;
534
inline bool sys_var_constrained_value<uint32_t>::update(Session *, set_var *var)
536
value= var->save_result.uint32_t_value;
541
inline unsigned char *sys_var_constrained_value<const uint64_t>::value_ptr(Session *, sql_var_t, const LEX_STRING *)
543
return (unsigned char*)&basic_value;
547
inline unsigned char *sys_var_constrained_value<const uint32_t>::value_ptr(Session *, sql_var_t, const LEX_STRING *)
549
return (unsigned char*)&basic_value;
375
552
class sys_var_const_string :
912
/****************************************************************************
913
Classes for parsing of the SET command
914
****************************************************************************/
916
class set_var_base :public memory::SqlAlloc
920
virtual ~set_var_base() {}
921
virtual int check(Session *session)=0; /* To check privileges etc. */
922
virtual int update(Session *session)=0; /* To set the value */
923
/* light check for PS */
926
/* MySQL internal variables */
927
class set_var :public set_var_base
935
const CHARSET_INFO *charset;
936
uint32_t uint32_t_value;
937
uint64_t uint64_t_value;
939
plugin::StorageEngine *storage_engine;
940
Time_zone *time_zone;
941
MY_LOCALE *locale_value;
943
LEX_STRING base; /* for structs */
945
set_var(sql_var_t type_arg, sys_var *var_arg,
946
const LEX_STRING *base_name_arg, Item *value_arg)
947
:var(var_arg), type(type_arg), base(*base_name_arg)
950
If the set value is a field, change it to a string to allow things like
951
SET table_type=MYISAM;
953
if (value_arg && value_arg->type() == Item::FIELD_ITEM)
955
Item_field *item= (Item_field*) value_arg;
956
if (!(value=new Item_string(item->field_name,
957
(uint32_t) strlen(item->field_name),
958
item->collation.collation)))
959
value=value_arg; /* Give error message later */
964
int check(Session *session);
965
int update(Session *session);
969
1089
/* User variables like @my_own_variable */
971
1091
class set_var_user: public set_var_base