~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/item/cmpfunc.h

  • Committer: Brian Aker
  • Date: 2011-03-28 02:46:21 UTC
  • Revision ID: brian@tangent.org-20110328024621-wtkdtlvdplqm0ybf
Shift CHARSET_INFO to charset_info_st

Show diffs side-by-side

added added

removed removed

Lines of Context:
357
357
 
358
358
  bool is_null() { return test(args[0]->is_null() || args[1]->is_null()); }
359
359
  bool is_bool_func() { return 1; }
360
 
  const CHARSET_INFO *compare_collation() { return cmp.cmp_collation.collation; }
 
360
  const charset_info_st *compare_collation() { return cmp.cmp_collation.collation; }
361
361
  uint32_t decimal_precision() const { return 1; }
362
362
  void top_level_item() { abort_on_null= true; }
363
363
 
616
616
  void fix_length_and_dec();
617
617
  virtual void print(String *str);
618
618
  bool is_bool_func() { return 1; }
619
 
  const CHARSET_INFO *compare_collation() { return cmp_collation.collation; }
 
619
  const charset_info_st *compare_collation() { return cmp_collation.collation; }
620
620
  uint32_t decimal_precision() const { return 1; }
621
621
};
622
622
 
761
761
  char *base;
762
762
  uint32_t size;
763
763
  qsort2_cmp compare;
764
 
  const CHARSET_INFO *collation;
 
764
  const charset_info_st *collation;
765
765
  uint32_t count;
766
766
  uint32_t used_count;
767
767
  in_vector() {}
768
768
  in_vector(uint32_t elements,uint32_t element_length,qsort2_cmp cmp_func,
769
 
            const CHARSET_INFO * const cmp_coll)
 
769
            const charset_info_st * const cmp_coll)
770
770
    :base((char*) memory::sql_calloc(elements*element_length)),
771
771
     size(element_length), compare(cmp_func), collation(cmp_coll),
772
772
     count(elements), used_count(elements) {}
809
809
  char buff[STRING_BUFFER_USUAL_SIZE];
810
810
  String tmp;
811
811
public:
812
 
  in_string(uint32_t elements,qsort2_cmp cmp_func, const CHARSET_INFO * const cs);
 
812
  in_string(uint32_t elements,qsort2_cmp cmp_func, const charset_info_st * const cs);
813
813
  ~in_string();
814
814
  void set(uint32_t pos,Item *item);
815
815
  unsigned char *get_value(Item *item);
935
935
class cmp_item :public memory::SqlAlloc
936
936
{
937
937
public:
938
 
  const CHARSET_INFO *cmp_charset;
 
938
  const charset_info_st *cmp_charset;
939
939
 
940
940
  cmp_item()
941
941
  {
947
947
  virtual int cmp(Item *item)= 0;
948
948
  // for optimized IN with row
949
949
  virtual int compare(cmp_item *item)= 0;
950
 
  static cmp_item* get_comparator(Item_result type, const CHARSET_INFO * const cs);
 
950
  static cmp_item* get_comparator(Item_result type, const charset_info_st * const cs);
951
951
  virtual cmp_item *make_same()= 0;
952
952
  virtual void store_value_by_template(cmp_item *, Item *item)
953
953
  {
961
961
  String *value_res;
962
962
public:
963
963
  cmp_item_string () {}
964
 
  cmp_item_string (const CHARSET_INFO * const cs) { cmp_charset= cs; }
965
 
  void set_charset(const CHARSET_INFO * const cs) { cmp_charset= cs; }
 
964
  cmp_item_string (const charset_info_st * const cs) { cmp_charset= cs; }
 
965
  void set_charset(const charset_info_st * const cs) { cmp_charset= cs; }
966
966
  friend class cmp_item_sort_string;
967
967
  friend class cmp_item_sort_string_in_static;
968
968
};
975
975
public:
976
976
  cmp_item_sort_string():
977
977
    cmp_item_string() {}
978
 
  cmp_item_sort_string(const CHARSET_INFO * const cs):
 
978
  cmp_item_sort_string(const charset_info_st * const cs):
979
979
    cmp_item_string(cs),
980
980
    value(value_buff, sizeof(value_buff), cs) {}
981
981
  void store_value(Item *item)
996
996
    return sortcmp(value_res, l_cmp->value_res, cmp_charset);
997
997
  }
998
998
  cmp_item *make_same();
999
 
  void set_charset(const CHARSET_INFO * const cs)
 
999
  void set_charset(const charset_info_st * const cs)
1000
1000
  {
1001
1001
    cmp_charset= cs;
1002
1002
    value.set_quick(value_buff, sizeof(value_buff), cs);
1093
1093
 protected:
1094
1094
  String value;
1095
1095
public:
1096
 
  cmp_item_sort_string_in_static(const CHARSET_INFO * const cs):
 
1096
  cmp_item_sort_string_in_static(const charset_info_st * const cs):
1097
1097
    cmp_item_string(cs) {}
1098
1098
  void store_value(Item *item)
1099
1099
  {
1178
1178
  const char *func_name() const { return "case"; }
1179
1179
  virtual void print(String *str);
1180
1180
  Item *find_item(String *str);
1181
 
  const CHARSET_INFO *compare_collation() { return cmp_collation.collation; }
 
1181
  const charset_info_st *compare_collation() { return cmp_collation.collation; }
1182
1182
  void cleanup();
1183
1183
  void agg_str_lengths(Item *arg);
1184
1184
  void agg_num_lengths(Item *arg);
1246
1246
  const char *func_name() const { return " IN "; }
1247
1247
  bool nulls_in_row();
1248
1248
  bool is_bool_func() { return 1; }
1249
 
  const CHARSET_INFO *compare_collation() { return cmp_collation.collation; }
 
1249
  const charset_info_st *compare_collation() { return cmp_collation.collation; }
1250
1250
};
1251
1251
 
1252
1252
class cmp_item_row :public cmp_item
1317
1317
  table_map not_null_tables() const { return 0; }
1318
1318
  optimize_type select_optimize() const { return OPTIMIZE_NULL; }
1319
1319
  Item *neg_transformer(Session *session);
1320
 
  const CHARSET_INFO *compare_collation() { return args[0]->collation.collation; }
 
1320
  const charset_info_st *compare_collation() { return args[0]->collation.collation; }
1321
1321
};
1322
1322
 
1323
1323
/* Functions used by HAVING for rewriting IN subquery */
1364
1364
  { return abort_on_null ? not_null_tables_cache : 0; }
1365
1365
  Item *neg_transformer(Session *session);
1366
1366
  virtual void print(String *str);
1367
 
  const CHARSET_INFO *compare_collation() { return args[0]->collation.collation; }
 
1367
  const charset_info_st *compare_collation() { return args[0]->collation.collation; }
1368
1368
  void top_level_item() { abort_on_null=1; }
1369
1369
};
1370
1370
 
1577
1577
  bool walk(Item_processor processor, bool walk_subquery, unsigned char *arg);
1578
1578
  Item *transform(Item_transformer transformer, unsigned char *arg);
1579
1579
  virtual void print(String *str);
1580
 
  const CHARSET_INFO *compare_collation()
 
1580
  const charset_info_st *compare_collation()
1581
1581
  { return fields.front().collation.collation; }
1582
1582
private:
1583
1583
  fields_t fields; /* list of equal field items                    */