~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/sys_var.h

  • Committer: Mark Atwood
  • Date: 2011-11-08 19:06:32 UTC
  • mfrom: (2445.1.22 rf)
  • Revision ID: me@mark.atwood.name-20111108190632-7pfvz4ggbolmlnnu
mergeĀ lp:~olafvdspek/drizzle/refactor10

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