~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/set_var.h

enable subselect_not, subselect_no_mat and variables tests, some other misc clean up on other tests

Show diffs side-by-side

added added

removed removed

Lines of Context:
80
80
  const char *name;
81
81
 
82
82
  sys_after_update_func after_update;
83
 
  bool no_support_one_shot;
84
83
  sys_var(const char *name_arg, sys_after_update_func func= NULL,
85
84
          Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
86
 
    :name(name_arg), after_update(func), no_support_one_shot(1),
 
85
    :name(name_arg), after_update(func),
87
86
    binlog_status(binlog_status_arg),
88
87
    m_allow_empty_value(true)
89
88
  {}
722
721
  sys_var_collation(const char *name_arg,
723
722
                    Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
724
723
    :sys_var_session(name_arg, NULL, binlog_status_arg)
725
 
  {
726
 
    no_support_one_shot= 0;
727
 
  }
 
724
  { }
728
725
  bool check(Session *session, set_var *var);
729
726
  SHOW_TYPE show_type() { return SHOW_CHAR; }
730
727
  bool check_update_type(Item_result type)
735
732
  virtual void set_default(Session *session, enum_var_type type)= 0;
736
733
};
737
734
 
738
 
class sys_var_character_set :public sys_var_session
739
 
{
740
 
public:
741
 
  bool nullable;
742
 
  sys_var_character_set(const char *name_arg, bool is_nullable= 0,
743
 
                        Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
744
 
    :sys_var_session(name_arg, NULL, binlog_status_arg), nullable(is_nullable)
745
 
  {
746
 
    /*
747
 
      In fact only almost all variables derived from sys_var_character_set
748
 
      support ONE_SHOT; character_set_results doesn't. But that's good enough.
749
 
    */
750
 
    no_support_one_shot= 0;
751
 
  }
752
 
  bool check(Session *session, set_var *var);
753
 
  SHOW_TYPE show_type() { return SHOW_CHAR; }
754
 
  bool check_update_type(Item_result type)
755
 
  {
756
 
    return ((type != STRING_RESULT) && (type != INT_RESULT));
757
 
  }
758
 
  bool check_default(enum_var_type)
759
 
  { return 0; }
760
 
  bool update(Session *session, set_var *var);
761
 
  unsigned char *value_ptr(Session *session, enum_var_type type, LEX_STRING *base);
762
 
  virtual void set_default(Session *session, enum_var_type type)= 0;
763
 
  virtual const CHARSET_INFO **ci_ptr(Session *session, enum_var_type type)= 0;
764
 
};
765
 
 
766
735
class sys_var_collation_sv :public sys_var_collation
767
736
{
768
737
  const CHARSET_INFO *SV::*offset;
952
921
                        Binlog_status_enum binlog_status_arg= NOT_IN_BINLOG)
953
922
    :sys_var_session(name_arg, NULL, binlog_status_arg)
954
923
  {
955
 
    no_support_one_shot= 0;
956
924
    chain_sys_var(chain);
957
925
  }
958
926
  bool check(Session *session, set_var *var);
1023
991
  virtual int check(Session *session)=0;        /* To check privileges etc. */
1024
992
  virtual int update(Session *session)=0;       /* To set the value */
1025
993
  /* light check for PS */
1026
 
  virtual bool no_support_one_shot() { return 1; }
1027
994
};
1028
995
 
1029
996
 
1069
1036
  }
1070
1037
  int check(Session *session);
1071
1038
  int update(Session *session);
1072
 
  bool no_support_one_shot() { return var->no_support_one_shot; }
1073
1039
};
1074
1040
 
1075
1041
 
1086
1052
  int update(Session *session);
1087
1053
};
1088
1054
 
1089
 
/* For SET NAMES and SET CHARACTER SET */
1090
 
 
1091
 
class set_var_collation_client: public set_var_base
1092
 
{
1093
 
  const CHARSET_INFO *character_set_client;
1094
 
  const CHARSET_INFO *character_set_results;
1095
 
  const CHARSET_INFO *collation_connection;
1096
 
public:
1097
 
  set_var_collation_client(const CHARSET_INFO * const client_coll_arg,
1098
 
                           const CHARSET_INFO * const connection_coll_arg,
1099
 
                           const CHARSET_INFO * const result_coll_arg)
1100
 
    :character_set_client(client_coll_arg),
1101
 
     character_set_results(result_coll_arg),
1102
 
     collation_connection(connection_coll_arg)
1103
 
  {}
1104
 
  int check(Session *session);
1105
 
  int update(Session *session);
1106
 
};
1107
 
 
1108
1055
 
1109
1056
extern "C"
1110
1057
{