23
23
#include <boost/filesystem.hpp>
25
#include <drizzled/common_fwd.h>
25
26
#include <drizzled/constrained_value.h>
26
27
#include <drizzled/set_var.h>
27
28
#include <drizzled/show_type.h>
28
29
#include <drizzled/item_result.h>
29
30
#include <drizzled/base.h>
30
#include <drizzled/global_charset_info.h>
31
#include <drizzled/charset.h>
31
32
#include <drizzled/lex_string.h>
32
33
#include <drizzled/visibility.h>
34
35
namespace drizzled {
39
typedef struct my_locale_st MY_LOCALE;
40
typedef struct st_typelib TYPELIB;
42
37
typedef int (*sys_check_func)(Session *, set_var *);
43
38
typedef bool (*sys_update_func)(Session *, set_var *);
44
39
typedef void (*sys_after_update_func)(Session *, sql_var_t);
57
52
extern boost::filesystem::path basedir;
58
53
extern boost::filesystem::path pid_file;
59
54
extern boost::filesystem::path secure_file_priv;
60
extern char *opt_tc_log_file;
61
55
extern uint64_t session_startup_options;
62
56
extern uint32_t global_thread_id;
63
57
extern uint64_t table_cache_size;
64
58
extern back_log_constraints back_log;
65
59
extern uint32_t ha_open_options;
66
extern char *drizzled_bind_host;
60
extern const char *drizzled_bind_host;
67
61
extern uint32_t dropping_tables;
68
62
extern bool opt_endinfo;
69
63
extern uint32_t volatile thread_running;
72
66
extern const char *opt_scheduler;
73
67
extern size_t transaction_message_threshold;
75
uint64_t fix_unsigned(Session *, uint64_t, const struct option *);
69
uint64_t fix_unsigned(Session*, uint64_t, const option&);
77
71
DRIZZLED_API const std::string &getServerHostname();
78
72
int sys_var_init();
185
176
* A base class for all variables that require its access to
186
177
* be guarded with a mutex.
188
class DRIZZLED_API sys_var_global: public sys_var
179
class DRIZZLED_API sys_var_global : public sys_var
191
182
pthread_mutex_t *guard;
193
sys_var_global(const char *name_arg,
194
sys_after_update_func after_update_arg,
195
pthread_mutex_t *guard_arg)
197
sys_var(name_arg, after_update_arg),
184
sys_var_global(const char *name_arg, sys_after_update_func after_update_arg, pthread_mutex_t *guard_arg) :
185
sys_var(name_arg, after_update_arg),
202
class DRIZZLED_API sys_var_uint32_t_ptr :public sys_var
190
class DRIZZLED_API sys_var_uint32_t_ptr : public sys_var
206
sys_var_uint32_t_ptr(const char *name_arg,
207
uint32_t *value_ptr_arg)
208
:sys_var(name_arg),value(value_ptr_arg)
194
sys_var_uint32_t_ptr(const char *name_arg, uint32_t *value_ptr_arg) :
195
sys_var(name_arg), value(value_ptr_arg)
210
sys_var_uint32_t_ptr(const char *name_arg,
211
uint32_t *value_ptr_arg,
212
sys_after_update_func func)
213
:sys_var(name_arg,func), value(value_ptr_arg)
197
sys_var_uint32_t_ptr(const char *name_arg, uint32_t *value_ptr_arg, sys_after_update_func func) :
198
sys_var(name_arg,func), value(value_ptr_arg)
215
200
bool check(Session *session, set_var *var);
216
201
bool update(Session *session, set_var *var);
217
202
void set_default(Session *session, sql_var_t type);
218
203
SHOW_TYPE show_type() { return SHOW_INT; }
219
unsigned char *value_ptr(Session *, sql_var_t, const LEX_STRING *)
204
unsigned char *value_ptr(Session *, sql_var_t)
220
205
{ return (unsigned char*) value; }
223
class DRIZZLED_API sys_var_uint32_t_ptr_readonly :
224
public sys_var_uint32_t_ptr
208
class DRIZZLED_API sys_var_uint32_t_ptr_readonly : public sys_var_uint32_t_ptr
227
sys_var_uint32_t_ptr_readonly(const char *name_arg,
228
uint32_t *value_ptr_arg) :
211
sys_var_uint32_t_ptr_readonly(const char *name_arg, uint32_t *value_ptr_arg) :
229
212
sys_var_uint32_t_ptr(name_arg, value_ptr_arg)
290
273
return (not have_default_value) && option_limits == 0;
292
275
SHOW_TYPE show_type() { return SHOW_LONGLONG; }
293
unsigned char *value_ptr(Session *, sql_var_t,
276
unsigned char *value_ptr(Session *, sql_var_t)
295
277
{ return (unsigned char*) value; }
309
291
bool update(Session *session, set_var *var);
310
292
void set_default(Session *session, sql_var_t type);
311
293
SHOW_TYPE show_type() { return SHOW_SIZE; }
312
unsigned char *value_ptr(Session *, sql_var_t, const LEX_STRING *)
294
unsigned char *value_ptr(Session *, sql_var_t)
313
295
{ return (unsigned char*) value; }
340
322
bool update(Session *session, set_var *var);
341
323
void set_default(Session *session, sql_var_t type);
342
324
SHOW_TYPE show_type() { return SHOW_MY_BOOL; }
343
unsigned char *value_ptr(Session *, sql_var_t, const LEX_STRING *)
325
unsigned char *value_ptr(Session *, sql_var_t)
344
326
{ return (unsigned char*) value; }
345
327
bool check_update_type(Item_result)
384
366
(*set_default_func)(session, type);
386
368
SHOW_TYPE show_type() { return SHOW_CHAR; }
387
unsigned char *value_ptr(Session *, sql_var_t, const LEX_STRING *)
369
unsigned char *value_ptr(Session *, sql_var_t)
388
370
{ return (unsigned char*) value; }
389
371
bool check_update_type(Item_result type)
776
758
bool update(Session *session, set_var *var);
777
759
void set_default(Session *session, sql_var_t type);
778
760
SHOW_TYPE show_type() { return SHOW_INT; }
779
unsigned char *value_ptr(Session *session, sql_var_t type,
780
const LEX_STRING *base);
761
unsigned char *value_ptr(Session *session, sql_var_t type);
797
778
bool update(Session *session, set_var *var);
798
779
void set_default(Session *session, sql_var_t type);
799
780
SHOW_TYPE show_type() { return SHOW_HA_ROWS; }
800
unsigned char *value_ptr(Session *session, sql_var_t type,
801
const LEX_STRING *base);
781
unsigned char *value_ptr(Session *session, sql_var_t type);
830
810
bool update(Session *session, set_var *var);
831
811
void set_default(Session *session, sql_var_t type);
832
812
SHOW_TYPE show_type() { return SHOW_LONGLONG; }
833
unsigned char *value_ptr(Session *session, sql_var_t type,
834
const LEX_STRING *base);
813
unsigned char *value_ptr(Session *session, sql_var_t type);
835
814
bool check(Session *session, set_var *var);
836
815
bool check_default(sql_var_t type)
870
849
bool update(Session *session, set_var *var);
871
850
void set_default(Session *session, sql_var_t type);
872
851
SHOW_TYPE show_type() { return SHOW_SIZE; }
873
unsigned char *value_ptr(Session *session, sql_var_t type,
874
const LEX_STRING *base);
852
unsigned char *value_ptr(Session *session, sql_var_t type);
875
853
bool check(Session *session, set_var *var);
876
854
bool check_default(sql_var_t type)
898
876
bool update(Session *session, set_var *var);
899
877
void set_default(Session *session, sql_var_t type);
900
878
SHOW_TYPE show_type() { return SHOW_MY_BOOL; }
901
unsigned char *value_ptr(Session *session, sql_var_t type,
902
const LEX_STRING *base);
879
unsigned char *value_ptr(Session *session, sql_var_t type);
903
880
bool check(Session *session, set_var *var);
904
881
bool check_update_type(Item_result)
930
907
bool update(Session *session, set_var *var);
931
908
void set_default(Session *session, sql_var_t type);
932
909
SHOW_TYPE show_type() { return SHOW_CHAR; }
933
unsigned char *value_ptr(Session *session, sql_var_t type,
934
const LEX_STRING *base);
910
unsigned char *value_ptr(Session *session, sql_var_t type);
935
911
bool check_update_type(Item_result)
954
930
void set_default(Session *session, sql_var_t type);
955
931
bool update(Session *session, set_var *var);
956
unsigned char *value_ptr(Session *session, sql_var_t type,
957
const LEX_STRING *base);
932
unsigned char *value_ptr(Session *session, sql_var_t type);
960
935
class DRIZZLED_API sys_var_session_bit :public sys_var_session
977
952
bool check_type(sql_var_t type) { return type == OPT_GLOBAL; }
978
953
SHOW_TYPE show_type() { return SHOW_MY_BOOL; }
979
unsigned char *value_ptr(Session *session, sql_var_t type,
980
const LEX_STRING *base);
954
unsigned char *value_ptr(Session *session, sql_var_t type);
983
957
/* some variables that require special handling */
1008
981
bool update(Session *session, set_var *var);
1009
982
bool check_type(sql_var_t type) { return type == OPT_GLOBAL; }
1010
983
SHOW_TYPE show_type() { return SHOW_LONGLONG; }
1011
unsigned char *value_ptr(Session *session, sql_var_t type,
1012
const LEX_STRING *base);
984
unsigned char *value_ptr(Session *session, sql_var_t type);
1031
1003
class DRIZZLED_API sys_var_collation_sv :public sys_var_collation
1033
const CHARSET_INFO *drizzle_system_variables::*offset;
1034
const CHARSET_INFO **global_default;
1005
const charset_info_st *drizzle_system_variables::*offset;
1006
const charset_info_st **global_default;
1036
1008
sys_var_collation_sv(const char *name_arg,
1037
const CHARSET_INFO *drizzle_system_variables::*offset_arg,
1038
const CHARSET_INFO **global_default_arg)
1009
const charset_info_st *drizzle_system_variables::*offset_arg,
1010
const charset_info_st **global_default_arg)
1039
1011
:sys_var_collation(name_arg),
1040
1012
offset(offset_arg), global_default(global_default_arg)
1044
1016
bool update(Session *session, set_var *var);
1045
1017
void set_default(Session *session, sql_var_t type);
1046
unsigned char *value_ptr(Session *session, sql_var_t type,
1047
const LEX_STRING *base);
1018
unsigned char *value_ptr(Session *session, sql_var_t type);
1050
1021
/* Variable that you can only read from */
1068
1039
bool check_type(sql_var_t type) { return type != var_type; }
1069
1040
bool check_update_type(Item_result)
1071
unsigned char *value_ptr(Session *session, sql_var_t,
1042
unsigned char *value_ptr(Session *session, sql_var_t)
1074
1044
return (*value_ptr_func)(session);
1111
1081
bool check_default(sql_var_t)
1113
1083
bool update(Session *session, set_var *var);
1114
unsigned char *value_ptr(Session *session, sql_var_t type,
1115
const LEX_STRING *base);
1084
unsigned char *value_ptr(Session *session, sql_var_t type);
1116
1085
virtual void set_default(Session *session, sql_var_t type);
1121
1088
/* For sql_yacc */
1122
1089
struct sys_var_with_base
1125
LEX_STRING base_name;
1092
lex_string_t base_name;
1129
1096
Prototypes for helper functions
1132
drizzle_show_var* enumerate_sys_vars(Session *session);
1133
void add_sys_var_to_list(sys_var *var, struct option *long_options);
1134
void add_sys_var_to_list(sys_var *var);
1135
sys_var *find_sys_var(const std::string &name);
1136
extern sys_var_session_bit sys_autocommit;
1137
const CHARSET_INFO *get_old_charset_by_name(const char *old_name);
1099
drizzle_show_var* enumerate_sys_vars(Session*);
1100
void add_sys_var_to_list(sys_var*, option*);
1101
void add_sys_var_to_list(sys_var*);
1102
sys_var* find_sys_var(const std::string&);
1139
1104
extern sys_var_str sys_var_general_log_path, sys_var_slow_log_path;
1141
1106
} /* namespace drizzled */