17
17
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
20
#ifndef DRIZZLED_SYS_VAR_H
21
#define DRIZZLED_SYS_VAR_H
24
23
#include <boost/filesystem.hpp>
26
#include "drizzled/constrained_value.h"
27
#include "drizzled/set_var.h"
28
#include "drizzled/show_type.h"
29
#include "drizzled/typelib.h"
30
#include "drizzled/item_result.h"
31
#include "drizzled/base.h"
32
#include "drizzled/global_charset_info.h"
33
#include "drizzled/lex_string.h"
40
typedef struct my_locale_st MY_LOCALE;
42
extern TYPELIB bool_typelib;
25
#include <drizzled/common_fwd.h>
26
#include <drizzled/constrained_value.h>
27
#include <drizzled/set_var.h>
28
#include <drizzled/show_type.h>
29
#include <drizzled/item_result.h>
30
#include <drizzled/base.h>
31
#include <drizzled/global_charset_info.h>
32
#include <drizzled/lex_string.h>
33
#include <drizzled/visibility.h>
44
37
typedef int (*sys_check_func)(Session *, set_var *);
45
38
typedef bool (*sys_update_func)(Session *, set_var *);
56
49
extern const char *in_left_expr_name;
57
50
extern const char *in_additional_cond;
58
51
extern const char *in_having_cond;
59
extern char glob_hostname[FN_REFLEN];
60
52
extern boost::filesystem::path basedir;
61
53
extern boost::filesystem::path pid_file;
62
54
extern boost::filesystem::path secure_file_priv;
63
extern char system_time_zone[30];
64
55
extern char *opt_tc_log_file;
65
56
extern uint64_t session_startup_options;
66
57
extern uint32_t global_thread_id;
67
58
extern uint64_t table_cache_size;
68
extern uint64_t max_connect_errors;
69
59
extern back_log_constraints back_log;
70
60
extern uint32_t ha_open_options;
71
61
extern char *drizzled_bind_host;
74
64
extern uint32_t volatile thread_running;
75
65
extern uint32_t volatile global_read_lock;
76
66
extern bool opt_readonly;
77
extern char *default_tz_name;
78
67
extern const char *opt_scheduler;
68
extern size_t transaction_message_threshold;
80
70
uint64_t fix_unsigned(Session *, uint64_t, const struct option *);
72
DRIZZLED_API const std::string &getServerHostname();
82
73
int sys_var_init();
85
76
* A class which represents a variable, either global or
79
class DRIZZLED_API sys_var
91
82
std::string name; /**< The name of the variable */
317
308
{ return (unsigned char*) value; }
320
class sys_var_bool_ptr :public sys_var
311
class DRIZZLED_API sys_var_size_t_ptr_readonly :public sys_var_size_t_ptr
314
sys_var_size_t_ptr_readonly(const char *name_arg,
316
:sys_var_size_t_ptr(name_arg, value_arg)
318
bool is_readonly() const { return 1; }
321
class DRIZZLED_API sys_var_bool_ptr :public sys_var
322
323
bool default_value;
326
327
sys_after_update_func func= NULL) :
327
328
sys_var(name_arg, func), default_value(*value_arg), value(value_arg)
329
bool check(Session *session, set_var *var)
331
return check_enum(session, var, &bool_typelib);
330
bool check(Session *session, set_var *var);
333
331
virtual bool check_default(sql_var_t)
517
515
inline bool sys_var_constrained_value<uint64_t>::update(Session *, set_var *var)
519
value= var->save_result.uint64_t_value;
517
value= var->getInteger();
524
522
inline bool sys_var_constrained_value<uint32_t>::update(Session *, set_var *var)
526
value= var->save_result.uint32_t_value;
524
value= uint32_t(var->getInteger());
897
895
SHOW_TYPE show_type() { return SHOW_MY_BOOL; }
898
896
unsigned char *value_ptr(Session *session, sql_var_t type,
899
897
const LEX_STRING *base);
900
bool check(Session *session, set_var *var)
902
return check_enum(session, var, &bool_typelib);
898
bool check(Session *session, set_var *var);
904
899
bool check_update_type(Item_result)
909
class sys_var_session_enum :public sys_var_session
904
class DRIZZLED_API sys_var_session_enum :public sys_var_session
912
907
uint32_t drizzle_system_variables::*offset;
946
941
plugin::StorageEngine *drizzle_system_variables::*offset_arg)
947
942
:sys_var_session(name_arg), offset(offset_arg)
949
bool check(Session *session, set_var *var);
950
944
SHOW_TYPE show_type() { return SHOW_CHAR; }
951
945
bool check_update_type(Item_result type)
1017
class sys_var_collation :public sys_var_session
1011
class DRIZZLED_API sys_var_collation :public sys_var_session
1020
1014
sys_var_collation(const char *name_arg)
1021
1015
:sys_var_session(name_arg, NULL)
1023
bool check(Session *session, set_var *var);
1024
1017
SHOW_TYPE show_type() { return SHOW_CHAR; }
1025
1018
bool check_update_type(Item_result type)
1030
1023
virtual void set_default(Session *session, sql_var_t type)= 0;
1033
class sys_var_collation_sv :public sys_var_collation
1026
class DRIZZLED_API sys_var_collation_sv :public sys_var_collation
1035
const CHARSET_INFO *drizzle_system_variables::*offset;
1036
const CHARSET_INFO **global_default;
1028
const charset_info_st *drizzle_system_variables::*offset;
1029
const charset_info_st **global_default;
1038
1031
sys_var_collation_sv(const char *name_arg,
1039
const CHARSET_INFO *drizzle_system_variables::*offset_arg,
1040
const CHARSET_INFO **global_default_arg)
1032
const charset_info_st *drizzle_system_variables::*offset_arg,
1033
const charset_info_st **global_default_arg)
1041
1034
:sys_var_collation(name_arg),
1042
1035
offset(offset_arg), global_default(global_default_arg)
1079
1072
bool is_readonly(void) const { return 1; }
1083
class sys_var_session_time_zone :public sys_var_session
1086
sys_var_session_time_zone(const char *name_arg)
1087
:sys_var_session(name_arg, NULL)
1091
bool check(Session *session, set_var *var);
1092
SHOW_TYPE show_type() { return SHOW_CHAR; }
1093
bool check_update_type(Item_result type)
1095
return type != STRING_RESULT; /* Only accept strings */
1097
bool check_default(sql_var_t)
1099
bool update(Session *session, set_var *var);
1100
unsigned char *value_ptr(Session *session, sql_var_t type,
1101
const LEX_STRING *base);
1102
virtual void set_default(Session *session, sql_var_t type);
1106
class sys_var_microseconds :public sys_var_session
1075
class DRIZZLED_API sys_var_microseconds :public sys_var_session
1108
1077
uint64_t drizzle_system_variables::*offset;
1159
1127
drizzle_show_var* enumerate_sys_vars(Session *session);
1160
1128
void add_sys_var_to_list(sys_var *var, struct option *long_options);
1161
1129
void add_sys_var_to_list(sys_var *var);
1162
sys_var *find_sys_var(const char *str, uint32_t length=0);
1163
bool not_all_support_one_shot(List<set_var_base> *var_list);
1164
extern sys_var_session_time_zone sys_time_zone;
1130
sys_var *find_sys_var(const std::string &name);
1165
1131
extern sys_var_session_bit sys_autocommit;
1166
const CHARSET_INFO *get_old_charset_by_name(const char *old_name);
1132
const charset_info_st *get_old_charset_by_name(const char *old_name);
1168
1134
extern sys_var_str sys_var_general_log_path, sys_var_slow_log_path;
1170
1136
} /* namespace drizzled */
1172
#endif /* DRIZZLED_SYS_VAR_H */