~ubuntu-branches/ubuntu/trusty/drizzle/trusty

« back to all changes in this revision

Viewing changes to drizzled/sys_var.h

  • Committer: Package Import Robot
  • Author(s): Clint Byrum
  • Date: 2012-06-19 10:46:49 UTC
  • mfrom: (1.1.6)
  • mto: This revision was merged to the branch mainline in revision 29.
  • Revision ID: package-import@ubuntu.com-20120619104649-e2l0ggd4oz3um0f4
Tags: upstream-7.1.36-stable
ImportĀ upstreamĀ versionĀ 7.1.36-stable

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
#include <string>
23
23
#include <boost/filesystem.hpp>
24
24
 
 
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>
33
34
 
34
35
namespace drizzled {
35
36
 
36
 
class Session;
37
 
class sys_var;
38
 
class Time_zone;
39
 
typedef struct my_locale_st MY_LOCALE;
40
 
typedef struct st_typelib TYPELIB;
41
 
 
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;
74
68
 
75
 
uint64_t fix_unsigned(Session *, uint64_t, const struct option *);
 
69
uint64_t fix_unsigned(Session*, uint64_t, const option&);
76
70
 
77
71
DRIZZLED_API const std::string &getServerHostname();
78
72
int sys_var_init();
158
152
  {
159
153
    return SHOW_UNDEF;
160
154
  }
161
 
  virtual unsigned char *value_ptr(Session *, sql_var_t, const LEX_STRING *)
162
 
  {
163
 
    return 0;
164
 
  }
 
155
  virtual unsigned char *value_ptr(Session*, sql_var_t) = 0;
165
156
  virtual bool check_type(sql_var_t type)
166
157
  {
167
158
    return type != OPT_GLOBAL;
174
165
  {
175
166
    return option_limits == 0;
176
167
  }
177
 
  Item *item(Session *session, sql_var_t type, const LEX_STRING *base);
 
168
  Item *item(Session*, sql_var_t);
178
169
  virtual bool is_readonly() const
179
170
  {
180
171
    return 0;
185
176
 * A base class for all variables that require its access to
186
177
 * be guarded with a mutex.
187
178
 */
188
 
class DRIZZLED_API sys_var_global: public sys_var
 
179
class DRIZZLED_API sys_var_global : public sys_var
189
180
{
190
181
protected:
191
182
  pthread_mutex_t *guard;
192
183
public:
193
 
  sys_var_global(const char *name_arg,
194
 
                 sys_after_update_func after_update_arg,
195
 
                 pthread_mutex_t *guard_arg)
196
 
    :
197
 
      sys_var(name_arg, after_update_arg), 
198
 
      guard(guard_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), 
 
186
    guard(guard_arg) 
199
187
  {}
200
188
};
201
189
 
202
 
class DRIZZLED_API sys_var_uint32_t_ptr :public sys_var
 
190
class DRIZZLED_API sys_var_uint32_t_ptr : public sys_var
203
191
{
204
192
  uint32_t *value;
205
193
public:
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)
209
196
  {  }
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)
214
199
  {  }
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; }
221
206
};
222
207
 
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
225
209
{
226
210
public:
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)
230
213
  {}
231
214
 
242
225
};
243
226
 
244
227
 
245
 
class DRIZZLED_API sys_var_uint64_t_ptr :public sys_var
 
228
class DRIZZLED_API sys_var_uint64_t_ptr : public sys_var
246
229
{
247
230
  uint64_t *value;
248
231
  const uint64_t default_value;
290
273
    return (not have_default_value) && option_limits == 0;
291
274
  }
292
275
  SHOW_TYPE show_type() { return SHOW_LONGLONG; }
293
 
  unsigned char *value_ptr(Session *, sql_var_t,
294
 
                           const LEX_STRING *)
 
276
  unsigned char *value_ptr(Session *, sql_var_t)
295
277
  { return (unsigned char*) value; }
296
278
};
297
279
 
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; }
314
296
};
315
297
 
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)
346
328
  { return 0; }
384
366
    (*set_default_func)(session, type);
385
367
  }
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)
390
372
  {
418
400
    return true;
419
401
  }
420
402
  SHOW_TYPE show_type() { return SHOW_CHAR; }
421
 
  unsigned char *value_ptr(Session *, sql_var_t, const LEX_STRING *)
 
403
  unsigned char *value_ptr(Session *, sql_var_t)
422
404
  {
423
405
    return (unsigned char*)(value.file_string().c_str());
424
406
  }
485
467
    value= default_value;
486
468
  }
487
469
 
488
 
  unsigned char *value_ptr(Session *, sql_var_t, const LEX_STRING *)
 
470
  unsigned char *value_ptr(Session *, sql_var_t)
489
471
  {
490
472
    basic_value= value.get();
491
473
    return (unsigned char*)&basic_value;
597
579
    return false;
598
580
  }
599
581
  SHOW_TYPE show_type() { return SHOW_CHAR; }
600
 
  unsigned char *value_ptr(Session *, sql_var_t, const LEX_STRING *)
 
582
  unsigned char *value_ptr(Session *, sql_var_t)
601
583
  {
602
584
    return (unsigned char*)(value.c_str());
603
585
  }
633
615
    return true;
634
616
  }
635
617
  SHOW_TYPE show_type() { return SHOW_CHAR; }
636
 
  unsigned char *value_ptr(Session *, sql_var_t, const LEX_STRING *)
 
618
  unsigned char *value_ptr(Session *, sql_var_t)
637
619
  {
638
620
    return (unsigned char*)(value.c_str());
639
621
  }
668
650
    return true;
669
651
  }
670
652
  SHOW_TYPE show_type() { return SHOW_CHAR; }
671
 
  unsigned char *value_ptr(Session *, sql_var_t, const LEX_STRING *)
 
653
  unsigned char *value_ptr(Session *, sql_var_t)
672
654
  {
673
655
    return (unsigned char*)(value.c_str());
674
656
  }
701
683
    return 1;
702
684
  }
703
685
  SHOW_TYPE show_type() { return SHOW_CHAR; }
704
 
  unsigned char *value_ptr(Session *, sql_var_t, const LEX_STRING *)
 
686
  unsigned char *value_ptr(Session *, sql_var_t)
705
687
  {
706
688
    return (unsigned char*) value;
707
689
  }
731
713
    return 1;
732
714
  }
733
715
  SHOW_TYPE show_type() { return SHOW_CHAR; }
734
 
  unsigned char *value_ptr(Session *, sql_var_t, const LEX_STRING *)
 
716
  unsigned char *value_ptr(Session *, sql_var_t)
735
717
  {
736
718
    return (unsigned char*) *value;
737
719
  }
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);
781
762
};
782
763
 
783
764
 
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);
802
782
};
803
783
 
804
784
 
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)
837
816
  {
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)
877
855
  {
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)
905
882
  { return 0; }
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)
936
912
  { return 0; }
937
913
};
953
929
  }
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);
958
933
};
959
934
 
960
935
class DRIZZLED_API sys_var_session_bit :public sys_var_session
976
951
  { return 0; }
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);
981
955
};
982
956
 
983
957
/* some variables that require special handling */
994
968
  bool check_default(sql_var_t)
995
969
  { return 0; }
996
970
  SHOW_TYPE show_type(void) { return SHOW_LONG; }
997
 
  unsigned char *value_ptr(Session *session, sql_var_t type,
998
 
                           const LEX_STRING *base);
 
971
  unsigned char *value_ptr(Session *session, sql_var_t type);
999
972
};
1000
973
 
1001
974
 
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);
1013
985
};
1014
986
 
1015
987
 
1030
1002
 
1031
1003
class DRIZZLED_API sys_var_collation_sv :public sys_var_collation
1032
1004
{
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;
1035
1007
public:
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)
1041
1013
  {
1043
1015
  }
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);
1048
1019
};
1049
1020
 
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)
1070
1041
  { return 1; }
1071
 
  unsigned char *value_ptr(Session *session, sql_var_t,
1072
 
                           const LEX_STRING *)
 
1042
  unsigned char *value_ptr(Session *session, sql_var_t)
1073
1043
  {
1074
1044
    return (*value_ptr_func)(session);
1075
1045
  }
1111
1081
  bool check_default(sql_var_t)
1112
1082
  { return 0; }
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);
1117
1086
};
1118
1087
 
1119
 
 
1120
 
 
1121
1088
/* For sql_yacc */
1122
1089
struct sys_var_with_base
1123
1090
{
1124
 
  sys_var *var;
1125
 
  LEX_STRING base_name;
 
1091
  sys_var* var;
 
1092
  lex_string_t base_name;
1126
1093
};
1127
1094
 
1128
1095
/*
1129
1096
  Prototypes for helper functions
1130
1097
*/
1131
1098
 
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&);
1138
1103
 
1139
1104
extern sys_var_str sys_var_general_log_path, sys_var_slow_log_path;
1140
1105
 
1141
1106
} /* namespace drizzled */
1142