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"
25
#include <drizzled/constrained_value.h>
26
#include <drizzled/set_var.h>
27
#include <drizzled/show_type.h>
28
#include <drizzled/item_result.h>
29
#include <drizzled/base.h>
30
#include <drizzled/global_charset_info.h>
31
#include <drizzled/lex_string.h>
32
#include <drizzled/visibility.h>
40
39
typedef struct my_locale_st MY_LOCALE;
42
extern TYPELIB bool_typelib;
40
typedef struct st_typelib TYPELIB;
44
42
typedef int (*sys_check_func)(Session *, set_var *);
45
43
typedef bool (*sys_update_func)(Session *, set_var *);
56
54
extern const char *in_left_expr_name;
57
55
extern const char *in_additional_cond;
58
56
extern const char *in_having_cond;
59
extern char glob_hostname[FN_REFLEN];
60
57
extern boost::filesystem::path basedir;
61
58
extern boost::filesystem::path pid_file;
62
59
extern boost::filesystem::path secure_file_priv;
63
extern char system_time_zone[30];
64
60
extern char *opt_tc_log_file;
65
61
extern uint64_t session_startup_options;
66
62
extern uint32_t global_thread_id;
67
63
extern uint64_t table_cache_size;
68
extern uint64_t max_connect_errors;
69
64
extern back_log_constraints back_log;
70
65
extern uint32_t ha_open_options;
71
66
extern char *drizzled_bind_host;
74
69
extern uint32_t volatile thread_running;
75
70
extern uint32_t volatile global_read_lock;
76
71
extern bool opt_readonly;
77
extern char *default_tz_name;
78
72
extern const char *opt_scheduler;
73
extern size_t transaction_message_threshold;
80
75
uint64_t fix_unsigned(Session *, uint64_t, const struct option *);
77
DRIZZLED_API const std::string &getServerHostname();
82
78
int sys_var_init();
85
81
* A class which represents a variable, either global or
84
class DRIZZLED_API sys_var
91
87
std::string name; /**< The name of the variable */
317
313
{ return (unsigned char*) value; }
320
class sys_var_bool_ptr :public sys_var
316
class DRIZZLED_API sys_var_size_t_ptr_readonly :public sys_var_size_t_ptr
319
sys_var_size_t_ptr_readonly(const char *name_arg,
321
:sys_var_size_t_ptr(name_arg, value_arg)
323
bool is_readonly() const { return 1; }
326
class DRIZZLED_API sys_var_bool_ptr :public sys_var
322
328
bool default_value;
326
332
sys_after_update_func func= NULL) :
327
333
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);
335
bool check(Session *session, set_var *var);
333
336
virtual bool check_default(sql_var_t)
517
520
inline bool sys_var_constrained_value<uint64_t>::update(Session *, set_var *var)
519
value= var->save_result.uint64_t_value;
522
value= var->getInteger();
524
527
inline bool sys_var_constrained_value<uint32_t>::update(Session *, set_var *var)
526
value= var->save_result.uint32_t_value;
529
value= uint32_t(var->getInteger());
897
900
SHOW_TYPE show_type() { return SHOW_MY_BOOL; }
898
901
unsigned char *value_ptr(Session *session, sql_var_t type,
899
902
const LEX_STRING *base);
900
bool check(Session *session, set_var *var)
902
return check_enum(session, var, &bool_typelib);
903
bool check(Session *session, set_var *var);
904
904
bool check_update_type(Item_result)
909
class sys_var_session_enum :public sys_var_session
909
class DRIZZLED_API sys_var_session_enum :public sys_var_session
912
912
uint32_t drizzle_system_variables::*offset;
946
946
plugin::StorageEngine *drizzle_system_variables::*offset_arg)
947
947
:sys_var_session(name_arg), offset(offset_arg)
949
bool check(Session *session, set_var *var);
950
949
SHOW_TYPE show_type() { return SHOW_CHAR; }
951
950
bool check_update_type(Item_result type)
1017
class sys_var_collation :public sys_var_session
1016
class DRIZZLED_API sys_var_collation :public sys_var_session
1020
1019
sys_var_collation(const char *name_arg)
1021
1020
:sys_var_session(name_arg, NULL)
1023
bool check(Session *session, set_var *var);
1024
1022
SHOW_TYPE show_type() { return SHOW_CHAR; }
1025
1023
bool check_update_type(Item_result type)
1030
1028
virtual void set_default(Session *session, sql_var_t type)= 0;
1033
class sys_var_collation_sv :public sys_var_collation
1031
class DRIZZLED_API sys_var_collation_sv :public sys_var_collation
1035
1033
const CHARSET_INFO *drizzle_system_variables::*offset;
1036
1034
const CHARSET_INFO **global_default;
1079
1077
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
1080
class DRIZZLED_API sys_var_microseconds :public sys_var_session
1108
1082
uint64_t drizzle_system_variables::*offset;
1159
1132
drizzle_show_var* enumerate_sys_vars(Session *session);
1160
1133
void add_sys_var_to_list(sys_var *var, struct option *long_options);
1161
1134
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;
1135
sys_var *find_sys_var(const std::string &name);
1165
1136
extern sys_var_session_bit sys_autocommit;
1166
1137
const CHARSET_INFO *get_old_charset_by_name(const char *old_name);