~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sys_var.h

  • Committer: Mark Atwood
  • Date: 2011-10-08 04:50:51 UTC
  • mfrom: (2430.1.1 rf)
  • Revision ID: me@mark.atwood.name-20111008045051-6ha1qiy7k2a9c3jv
Tags: 2011.10.27
mergeĀ lp:~olafvdspek/drizzle/refactor2

Show diffs side-by-side

added added

removed removed

Lines of Context:
153
153
  {
154
154
    return SHOW_UNDEF;
155
155
  }
156
 
  virtual unsigned char *value_ptr(Session*, sql_var_t) = 0;
 
156
  virtual unsigned char *value_ptr(Session *, sql_var_t, const lex_string_t *)
 
157
  {
 
158
    return 0;
 
159
  }
157
160
  virtual bool check_type(sql_var_t type)
158
161
  {
159
162
    return type != OPT_GLOBAL;
166
169
  {
167
170
    return option_limits == 0;
168
171
  }
169
 
  Item *item(Session*, sql_var_t);
 
172
  Item *item(Session *session, sql_var_t type, const lex_string_t *base);
170
173
  virtual bool is_readonly() const
171
174
  {
172
175
    return 0;
177
180
 * A base class for all variables that require its access to
178
181
 * be guarded with a mutex.
179
182
 */
180
 
class DRIZZLED_API sys_var_global : public sys_var
 
183
class DRIZZLED_API sys_var_global: public sys_var
181
184
{
182
185
protected:
183
186
  pthread_mutex_t *guard;
184
187
public:
185
 
  sys_var_global(const char *name_arg, sys_after_update_func after_update_arg, pthread_mutex_t *guard_arg) :
186
 
    sys_var(name_arg, after_update_arg), 
187
 
    guard(guard_arg) 
 
188
  sys_var_global(const char *name_arg,
 
189
                 sys_after_update_func after_update_arg,
 
190
                 pthread_mutex_t *guard_arg)
 
191
    :
 
192
      sys_var(name_arg, after_update_arg), 
 
193
      guard(guard_arg) 
188
194
  {}
189
195
};
190
196
 
191
 
class DRIZZLED_API sys_var_uint32_t_ptr : public sys_var
 
197
class DRIZZLED_API sys_var_uint32_t_ptr :public sys_var
192
198
{
193
199
  uint32_t *value;
194
200
public:
195
 
  sys_var_uint32_t_ptr(const char *name_arg, uint32_t *value_ptr_arg) :
196
 
    sys_var(name_arg), value(value_ptr_arg)
 
201
  sys_var_uint32_t_ptr(const char *name_arg,
 
202
                       uint32_t *value_ptr_arg)
 
203
    :sys_var(name_arg),value(value_ptr_arg)
197
204
  {  }
198
 
  sys_var_uint32_t_ptr(const char *name_arg, uint32_t *value_ptr_arg, sys_after_update_func func) :
199
 
    sys_var(name_arg,func), value(value_ptr_arg)
 
205
  sys_var_uint32_t_ptr(const char *name_arg,
 
206
                       uint32_t *value_ptr_arg,
 
207
                       sys_after_update_func func)
 
208
    :sys_var(name_arg,func), value(value_ptr_arg)
200
209
  {  }
201
210
  bool check(Session *session, set_var *var);
202
211
  bool update(Session *session, set_var *var);
203
212
  void set_default(Session *session, sql_var_t type);
204
213
  SHOW_TYPE show_type() { return SHOW_INT; }
205
 
  unsigned char *value_ptr(Session *, sql_var_t)
 
214
  unsigned char *value_ptr(Session *, sql_var_t, const lex_string_t *)
206
215
  { return (unsigned char*) value; }
207
216
};
208
217
 
209
 
class DRIZZLED_API sys_var_uint32_t_ptr_readonly : public sys_var_uint32_t_ptr
 
218
class DRIZZLED_API sys_var_uint32_t_ptr_readonly :
 
219
  public sys_var_uint32_t_ptr
210
220
{
211
221
public:
212
 
  sys_var_uint32_t_ptr_readonly(const char *name_arg, uint32_t *value_ptr_arg) :
 
222
  sys_var_uint32_t_ptr_readonly(const char *name_arg,
 
223
                                uint32_t *value_ptr_arg) :
213
224
    sys_var_uint32_t_ptr(name_arg, value_ptr_arg)
214
225
  {}
215
226
 
226
237
};
227
238
 
228
239
 
229
 
class DRIZZLED_API sys_var_uint64_t_ptr : public sys_var
 
240
class DRIZZLED_API sys_var_uint64_t_ptr :public sys_var
230
241
{
231
242
  uint64_t *value;
232
243
  const uint64_t default_value;
274
285
    return (not have_default_value) && option_limits == 0;
275
286
  }
276
287
  SHOW_TYPE show_type() { return SHOW_LONGLONG; }
277
 
  unsigned char *value_ptr(Session *, sql_var_t)
 
288
  unsigned char *value_ptr(Session *, sql_var_t,
 
289
                           const lex_string_t *)
278
290
  { return (unsigned char*) value; }
279
291
};
280
292
 
292
304
  bool update(Session *session, set_var *var);
293
305
  void set_default(Session *session, sql_var_t type);
294
306
  SHOW_TYPE show_type() { return SHOW_SIZE; }
295
 
  unsigned char *value_ptr(Session *, sql_var_t)
 
307
  unsigned char *value_ptr(Session *, sql_var_t, const lex_string_t *)
296
308
  { return (unsigned char*) value; }
297
309
};
298
310
 
323
335
  bool update(Session *session, set_var *var);
324
336
  void set_default(Session *session, sql_var_t type);
325
337
  SHOW_TYPE show_type() { return SHOW_MY_BOOL; }
326
 
  unsigned char *value_ptr(Session *, sql_var_t)
 
338
  unsigned char *value_ptr(Session *, sql_var_t, const lex_string_t *)
327
339
  { return (unsigned char*) value; }
328
340
  bool check_update_type(Item_result)
329
341
  { return 0; }
367
379
    (*set_default_func)(session, type);
368
380
  }
369
381
  SHOW_TYPE show_type() { return SHOW_CHAR; }
370
 
  unsigned char *value_ptr(Session *, sql_var_t)
 
382
  unsigned char *value_ptr(Session *, sql_var_t, const lex_string_t *)
371
383
  { return (unsigned char*) value; }
372
384
  bool check_update_type(Item_result type)
373
385
  {
401
413
    return true;
402
414
  }
403
415
  SHOW_TYPE show_type() { return SHOW_CHAR; }
404
 
  unsigned char *value_ptr(Session *, sql_var_t)
 
416
  unsigned char *value_ptr(Session *, sql_var_t, const lex_string_t *)
405
417
  {
406
418
    return (unsigned char*)(value.file_string().c_str());
407
419
  }
468
480
    value= default_value;
469
481
  }
470
482
 
471
 
  unsigned char *value_ptr(Session *, sql_var_t)
 
483
  unsigned char *value_ptr(Session *, sql_var_t, const lex_string_t *)
472
484
  {
473
485
    basic_value= value.get();
474
486
    return (unsigned char*)&basic_value;
580
592
    return false;
581
593
  }
582
594
  SHOW_TYPE show_type() { return SHOW_CHAR; }
583
 
  unsigned char *value_ptr(Session *, sql_var_t)
 
595
  unsigned char *value_ptr(Session *, sql_var_t, const lex_string_t *)
584
596
  {
585
597
    return (unsigned char*)(value.c_str());
586
598
  }
616
628
    return true;
617
629
  }
618
630
  SHOW_TYPE show_type() { return SHOW_CHAR; }
619
 
  unsigned char *value_ptr(Session *, sql_var_t)
 
631
  unsigned char *value_ptr(Session *, sql_var_t, const lex_string_t *)
620
632
  {
621
633
    return (unsigned char*)(value.c_str());
622
634
  }
651
663
    return true;
652
664
  }
653
665
  SHOW_TYPE show_type() { return SHOW_CHAR; }
654
 
  unsigned char *value_ptr(Session *, sql_var_t)
 
666
  unsigned char *value_ptr(Session *, sql_var_t, const lex_string_t *)
655
667
  {
656
668
    return (unsigned char*)(value.c_str());
657
669
  }
684
696
    return 1;
685
697
  }
686
698
  SHOW_TYPE show_type() { return SHOW_CHAR; }
687
 
  unsigned char *value_ptr(Session *, sql_var_t)
 
699
  unsigned char *value_ptr(Session *, sql_var_t, const lex_string_t *)
688
700
  {
689
701
    return (unsigned char*) value;
690
702
  }
714
726
    return 1;
715
727
  }
716
728
  SHOW_TYPE show_type() { return SHOW_CHAR; }
717
 
  unsigned char *value_ptr(Session *, sql_var_t)
 
729
  unsigned char *value_ptr(Session *, sql_var_t, const lex_string_t *)
718
730
  {
719
731
    return (unsigned char*) *value;
720
732
  }
759
771
  bool update(Session *session, set_var *var);
760
772
  void set_default(Session *session, sql_var_t type);
761
773
  SHOW_TYPE show_type() { return SHOW_INT; }
762
 
  unsigned char *value_ptr(Session *session, sql_var_t type);
 
774
  unsigned char *value_ptr(Session *session, sql_var_t type,
 
775
                           const lex_string_t *base);
763
776
};
764
777
 
765
778
 
779
792
  bool update(Session *session, set_var *var);
780
793
  void set_default(Session *session, sql_var_t type);
781
794
  SHOW_TYPE show_type() { return SHOW_HA_ROWS; }
782
 
  unsigned char *value_ptr(Session *session, sql_var_t type);
 
795
  unsigned char *value_ptr(Session *session, sql_var_t type,
 
796
                           const lex_string_t *base);
783
797
};
784
798
 
785
799
 
811
825
  bool update(Session *session, set_var *var);
812
826
  void set_default(Session *session, sql_var_t type);
813
827
  SHOW_TYPE show_type() { return SHOW_LONGLONG; }
814
 
  unsigned char *value_ptr(Session *session, sql_var_t type);
 
828
  unsigned char *value_ptr(Session *session, sql_var_t type,
 
829
                           const lex_string_t *base);
815
830
  bool check(Session *session, set_var *var);
816
831
  bool check_default(sql_var_t type)
817
832
  {
850
865
  bool update(Session *session, set_var *var);
851
866
  void set_default(Session *session, sql_var_t type);
852
867
  SHOW_TYPE show_type() { return SHOW_SIZE; }
853
 
  unsigned char *value_ptr(Session *session, sql_var_t type);
 
868
  unsigned char *value_ptr(Session *session, sql_var_t type,
 
869
                           const lex_string_t *base);
854
870
  bool check(Session *session, set_var *var);
855
871
  bool check_default(sql_var_t type)
856
872
  {
877
893
  bool update(Session *session, set_var *var);
878
894
  void set_default(Session *session, sql_var_t type);
879
895
  SHOW_TYPE show_type() { return SHOW_MY_BOOL; }
880
 
  unsigned char *value_ptr(Session *session, sql_var_t type);
 
896
  unsigned char *value_ptr(Session *session, sql_var_t type,
 
897
                           const lex_string_t *base);
881
898
  bool check(Session *session, set_var *var);
882
899
  bool check_update_type(Item_result)
883
900
  { return 0; }
908
925
  bool update(Session *session, set_var *var);
909
926
  void set_default(Session *session, sql_var_t type);
910
927
  SHOW_TYPE show_type() { return SHOW_CHAR; }
911
 
  unsigned char *value_ptr(Session *session, sql_var_t type);
 
928
  unsigned char *value_ptr(Session *session, sql_var_t type,
 
929
                           const lex_string_t *base);
912
930
  bool check_update_type(Item_result)
913
931
  { return 0; }
914
932
};
930
948
  }
931
949
  void set_default(Session *session, sql_var_t type);
932
950
  bool update(Session *session, set_var *var);
933
 
  unsigned char *value_ptr(Session *session, sql_var_t type);
 
951
  unsigned char *value_ptr(Session *session, sql_var_t type,
 
952
                           const lex_string_t *base);
934
953
};
935
954
 
936
955
class DRIZZLED_API sys_var_session_bit :public sys_var_session
952
971
  { return 0; }
953
972
  bool check_type(sql_var_t type) { return type == OPT_GLOBAL; }
954
973
  SHOW_TYPE show_type() { return SHOW_MY_BOOL; }
955
 
  unsigned char *value_ptr(Session *session, sql_var_t type);
 
974
  unsigned char *value_ptr(Session *session, sql_var_t type,
 
975
                           const lex_string_t *base);
956
976
};
957
977
 
958
978
/* some variables that require special handling */
969
989
  bool check_default(sql_var_t)
970
990
  { return 0; }
971
991
  SHOW_TYPE show_type(void) { return SHOW_LONG; }
972
 
  unsigned char *value_ptr(Session *session, sql_var_t type);
 
992
  unsigned char *value_ptr(Session *session, sql_var_t type,
 
993
                           const lex_string_t *base);
973
994
};
974
995
 
975
996
 
982
1003
  bool update(Session *session, set_var *var);
983
1004
  bool check_type(sql_var_t type) { return type == OPT_GLOBAL; }
984
1005
  SHOW_TYPE show_type() { return SHOW_LONGLONG; }
985
 
  unsigned char *value_ptr(Session *session, sql_var_t type);
 
1006
  unsigned char *value_ptr(Session *session, sql_var_t type,
 
1007
                           const lex_string_t *base);
986
1008
};
987
1009
 
988
1010
 
1016
1038
  }
1017
1039
  bool update(Session *session, set_var *var);
1018
1040
  void set_default(Session *session, sql_var_t type);
1019
 
  unsigned char *value_ptr(Session *session, sql_var_t type);
 
1041
  unsigned char *value_ptr(Session *session, sql_var_t type,
 
1042
                           const lex_string_t *base);
1020
1043
};
1021
1044
 
1022
1045
/* Variable that you can only read from */
1040
1063
  bool check_type(sql_var_t type) { return type != var_type; }
1041
1064
  bool check_update_type(Item_result)
1042
1065
  { return 1; }
1043
 
  unsigned char *value_ptr(Session *session, sql_var_t)
 
1066
  unsigned char *value_ptr(Session *session, sql_var_t,
 
1067
                           const lex_string_t *)
1044
1068
  {
1045
1069
    return (*value_ptr_func)(session);
1046
1070
  }
1082
1106
  bool check_default(sql_var_t)
1083
1107
  { return 0; }
1084
1108
  bool update(Session *session, set_var *var);
1085
 
  unsigned char *value_ptr(Session *session, sql_var_t type);
 
1109
  unsigned char *value_ptr(Session *session, sql_var_t type,
 
1110
                           const lex_string_t *base);
1086
1111
  virtual void set_default(Session *session, sql_var_t type);
1087
1112
};
1088
1113
 
 
1114
 
 
1115
 
1089
1116
/* For sql_yacc */
1090
1117
struct sys_var_with_base
1091
1118
{
1092
 
  sys_var* var;
 
1119
  sys_var *var;
1093
1120
  lex_string_t base_name;
1094
1121
};
1095
1122
 
1097
1124
  Prototypes for helper functions
1098
1125
*/
1099
1126
 
1100
 
drizzle_show_var* enumerate_sys_vars(Session*);
1101
 
void add_sys_var_to_list(sys_var*, option*);
1102
 
void add_sys_var_to_list(sys_var*);
1103
 
sys_var* find_sys_var(const std::string&);
 
1127
drizzle_show_var* enumerate_sys_vars(Session *session);
 
1128
void add_sys_var_to_list(sys_var *var, struct option *long_options);
 
1129
void add_sys_var_to_list(sys_var *var);
 
1130
sys_var *find_sys_var(const std::string &name);
 
1131
extern sys_var_session_bit sys_autocommit;
 
1132
const charset_info_st *get_old_charset_by_name(const char *old_name);
1104
1133
 
1105
1134
extern sys_var_str sys_var_general_log_path, sys_var_slow_log_path;
1106
1135
 
1107
1136
} /* namespace drizzled */
 
1137