~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/set_var.h

  • Committer: Brian Aker
  • Date: 2010-02-04 15:58:21 UTC
  • mfrom: (1280.1.9 build)
  • Revision ID: brian@gaz-20100204155821-bi4txluiivy043sb
Rollup of Brian, Jay

Show diffs side-by-side

added added

removed removed

Lines of Context:
45
45
typedef struct my_locale_st MY_LOCALE;
46
46
 
47
47
extern TYPELIB bool_typelib;
48
 
extern TYPELIB optimizer_switch_typelib;
49
48
 
50
49
typedef int (*sys_check_func)(Session *,  set_var *);
51
50
typedef bool (*sys_update_func)(Session *, set_var *);
79
78
extern char *drizzled_bind_host;
80
79
extern uint32_t dropping_tables;
81
80
extern bool opt_endinfo;
82
 
extern bool locked_in_memory;
83
81
extern uint32_t volatile thread_running;
84
82
extern uint32_t volatile global_read_lock;
85
83
extern bool opt_readonly;
181
179
  }
182
180
  virtual bool check(Session *session, set_var *var);
183
181
  bool check_enum(Session *session, set_var *var, const TYPELIB *enum_names);
184
 
  bool check_set(Session *session, set_var *var, TYPELIB *enum_names);
185
182
  virtual bool update(Session *session, set_var *var)=0;
186
183
  virtual void set_default(Session *, enum_var_type)
187
184
  {}
426
423
};
427
424
 
428
425
 
429
 
class sys_var_enum :public sys_var
430
 
{
431
 
  uint32_t *value;
432
 
  TYPELIB *enum_names;
433
 
public:
434
 
  sys_var_enum(sys_var_chain *chain, const char *name_arg, uint32_t *value_arg,
435
 
               TYPELIB *typelib, sys_after_update_func func)
436
 
    :sys_var(name_arg,func), value(value_arg), enum_names(typelib)
437
 
  { chain_sys_var(chain); }
438
 
  bool check(Session *session, set_var *var)
439
 
  {
440
 
    return check_enum(session, var, enum_names);
441
 
  }
442
 
  bool update(Session *session, set_var *var);
443
 
  SHOW_TYPE show_type() { return SHOW_CHAR; }
444
 
  unsigned char *value_ptr(Session *session, enum_var_type type,
445
 
                           const LEX_STRING *base);
446
 
  bool check_update_type(Item_result)
447
 
  { return 0; }
448
 
};
449
 
 
450
 
 
451
 
class sys_var_enum_const :public sys_var
452
 
{
453
 
  uint32_t SV::*offset;
454
 
  TYPELIB *enum_names;
455
 
public:
456
 
  sys_var_enum_const(sys_var_chain *chain, const char *name_arg, uint32_t SV::*offset_arg,
457
 
      TYPELIB *typelib, sys_after_update_func func)
458
 
    :sys_var(name_arg,func), offset(offset_arg), enum_names(typelib)
459
 
  { chain_sys_var(chain); }
460
 
  bool check(Session *, set_var *)
461
 
  { return 1; }
462
 
  bool update(Session *, set_var *)
463
 
  { return 1; }
464
 
  SHOW_TYPE show_type() { return SHOW_CHAR; }
465
 
  bool check_update_type(Item_result)
466
 
  { return 1; }
467
 
  bool is_readonly() const { return 1; }
468
 
  unsigned char *value_ptr(Session *session, enum_var_type type,
469
 
                           const LEX_STRING *base);
470
 
};
471
 
 
472
 
 
473
426
class sys_var_session :public sys_var
474
427
{
475
428
public:
667
620
};
668
621
 
669
622
 
670
 
 
671
 
class sys_var_session_optimizer_switch :public sys_var_session_enum
672
 
{
673
 
public:
674
 
  sys_var_session_optimizer_switch(sys_var_chain *chain, const char *name_arg,
675
 
                                   uint32_t SV::*offset_arg)
676
 
    :sys_var_session_enum(chain, name_arg, offset_arg, &optimizer_switch_typelib)
677
 
  {}
678
 
  bool check(Session *session, set_var *var)
679
 
  {
680
 
    return check_set(session, var, enum_names);
681
 
  }
682
 
  void set_default(Session *session, enum_var_type type);
683
 
  unsigned char *value_ptr(Session *session, enum_var_type type,
684
 
                           const LEX_STRING *base);
685
 
  static bool symbolic_mode_representation(Session *session, uint32_t sql_mode,
686
 
                                           LEX_STRING *rep);
687
 
};
688
 
 
689
 
 
690
623
class sys_var_session_storage_engine :public sys_var_session
691
624
{
692
625
protected:
830
763
};
831
764
 
832
765
 
833
 
class sys_var_have_option: public sys_var
834
 
{
835
 
protected:
836
 
  virtual SHOW_COMP_OPTION get_option() = 0;
837
 
public:
838
 
  sys_var_have_option(sys_var_chain *chain, const char *variable_name):
839
 
    sys_var(variable_name)
840
 
  { chain_sys_var(chain); }
841
 
  unsigned char *value_ptr(Session *, enum_var_type,
842
 
                           const LEX_STRING *)
843
 
  {
844
 
    return (unsigned char*) show_comp_option_name[get_option()];
845
 
  }
846
 
  bool update(Session *, set_var *) { return 1; }
847
 
  bool check_default(enum_var_type)
848
 
  { return 1; }
849
 
  bool check_type(enum_var_type type) { return type != OPT_GLOBAL; }
850
 
  bool check_update_type(Item_result)
851
 
  { return 1; }
852
 
  SHOW_TYPE show_type() { return SHOW_CHAR; }
853
 
  bool is_readonly() const { return 1; }
854
 
};
855
 
 
856
 
 
857
 
class sys_var_have_variable: public sys_var_have_option
858
 
{
859
 
  SHOW_COMP_OPTION *have_variable;
860
 
 
861
 
public:
862
 
  sys_var_have_variable(sys_var_chain *chain, const char *variable_name,
863
 
                        SHOW_COMP_OPTION *have_variable_arg):
864
 
    sys_var_have_option(chain, variable_name),
865
 
    have_variable(have_variable_arg)
866
 
  { }
867
 
  SHOW_COMP_OPTION get_option() { return *have_variable; }
868
 
};
869
 
 
870
 
 
871
 
class sys_var_have_plugin: public sys_var_have_option
872
 
{
873
 
  const char *plugin_name_str;
874
 
  const uint32_t plugin_name_len;
875
 
  const int plugin_type;
876
 
 
877
 
public:
878
 
  sys_var_have_plugin(sys_var_chain *chain, const char *variable_name,
879
 
                      const char *plugin_name_str_arg, uint32_t plugin_name_len_arg,
880
 
                      int plugin_type_arg):
881
 
    sys_var_have_option(chain, variable_name),
882
 
    plugin_name_str(plugin_name_str_arg), plugin_name_len(plugin_name_len_arg),
883
 
    plugin_type(plugin_type_arg)
884
 
  { }
885
 
  /* the following method is declared in sql_plugin.cc */
886
 
  SHOW_COMP_OPTION get_option();
887
 
};
888
 
 
889
 
 
890
766
class sys_var_session_time_zone :public sys_var_session
891
767
{
892
768
public: