~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/item_sum.h

Merged build changes from Antony.

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
#pragma interface                       /* gcc class implementation */
21
21
#endif
22
22
 
23
 
#include <my_tree.h>
 
23
#include <mysys/my_tree.h>
24
24
 
25
25
/*
26
26
  Class Item_sum is the base class used for special expressions that SQL calls
234
234
  uint arg_count;
235
235
  Item_sum *in_sum_func;  /* embedding set function if any */ 
236
236
  st_select_lex * aggr_sel; /* select where the function is aggregated       */ 
237
 
  int8 nest_level;        /* number of the nesting level of the set function */
238
 
  int8 aggr_level;        /* nesting level of the aggregating subquery       */
239
 
  int8 max_arg_level;     /* max level of unbound column references          */
240
 
  int8 max_sum_func_level;/* max level of aggregation for embedded functions */
 
237
  int8_t nest_level;        /* number of the nesting level of the set function */
 
238
  int8_t aggr_level;        /* nesting level of the aggregating subquery       */
 
239
  int8_t max_arg_level;     /* max level of unbound column references          */
 
240
  int8_t max_sum_func_level;/* max level of aggregation for embedded functions */
241
241
  bool quick_group;                     /* If incremental update of fields */
242
242
  /*
243
243
    This list is used by the check for mixing non aggregated fields and
363
363
  */
364
364
  void no_rows_in_result() { clear(); }
365
365
 
366
 
  virtual bool setup(THD *thd __attribute__((__unused__))) {return 0;}
 
366
  virtual bool setup(THD *thd __attribute__((unused))) {return 0;}
367
367
  virtual void make_unique(void) {}
368
368
  Item *get_tmp_table_item(THD *thd);
369
369
  virtual Field *create_tmp_field(bool group, TABLE *table,
568
568
class Item_sum_count_distinct :public Item_sum_int
569
569
{
570
570
  TABLE *table;
571
 
  uint32 *field_lengths;
 
571
  uint32_t *field_lengths;
572
572
  TMP_TABLE_PARAM *tmp_table_param;
573
573
  bool force_copy_fields;
574
574
  /*
650
650
  enum_field_types field_type() const
651
651
  {
652
652
    return hybrid_type == DECIMAL_RESULT ?
653
 
      MYSQL_TYPE_NEWDECIMAL : MYSQL_TYPE_DOUBLE;
 
653
      DRIZZLE_TYPE_NEWDECIMAL : DRIZZLE_TYPE_DOUBLE;
654
654
  }
655
655
  void fix_length_and_dec() {}
656
656
  enum Item_result result_type () const { return hybrid_type; }
680
680
  String *val_str(String *str);
681
681
  void reset_field();
682
682
  void update_field();
683
 
  Item *result_item(Field *field __attribute__((__unused__)))
 
683
  Item *result_item(Field *field __attribute__((unused)))
684
684
  { return new Item_avg_field(hybrid_type, this); }
685
685
  void no_rows_in_result() {}
686
686
  const char *func_name() const { return "avg("; }
718
718
  enum_field_types field_type() const
719
719
  {
720
720
    return hybrid_type == DECIMAL_RESULT ?
721
 
      MYSQL_TYPE_NEWDECIMAL : MYSQL_TYPE_DOUBLE;
 
721
      DRIZZLE_TYPE_NEWDECIMAL : DRIZZLE_TYPE_DOUBLE;
722
722
  }
723
723
  void fix_length_and_dec() {}
724
724
  enum Item_result result_type () const { return hybrid_type; }
771
771
  my_decimal *val_decimal(my_decimal *);
772
772
  void reset_field();
773
773
  void update_field();
774
 
  Item *result_item(Field *field __attribute__((__unused__)))
 
774
  Item *result_item(Field *field __attribute__((unused)))
775
775
  { return new Item_variance_field(this); }
776
776
  void no_rows_in_result() {}
777
777
  const char *func_name() const
796
796
  double val_real();
797
797
  my_decimal *val_decimal(my_decimal *);
798
798
  enum Item_result result_type () const { return REAL_RESULT; }
799
 
  enum_field_types field_type() const { return MYSQL_TYPE_DOUBLE;}
 
799
  enum_field_types field_type() const { return DRIZZLE_TYPE_DOUBLE;}
800
800
};
801
801
 
802
802
/*
813
813
    {}
814
814
  enum Sumfunctype sum_func () const { return STD_FUNC; }
815
815
  double val_real();
816
 
  Item *result_item(Field *field __attribute__((__unused__)))
 
816
  Item *result_item(Field *field __attribute__((unused)))
817
817
    { return new Item_std_field(this); }
818
818
  const char *func_name() const { return "std("; }
819
819
  Item *copy_or_same(THD* thd);
820
820
  enum Item_result result_type () const { return REAL_RESULT; }
821
 
  enum_field_types field_type() const { return MYSQL_TYPE_DOUBLE;}
 
821
  enum_field_types field_type() const { return DRIZZLE_TYPE_DOUBLE;}
822
822
};
823
823
 
824
824
// This class is a string or number function depending on num_func
838
838
  public:
839
839
  Item_sum_hybrid(Item *item_par,int sign)
840
840
    :Item_sum(item_par), sum(0.0), sum_int(0),
841
 
    hybrid_type(INT_RESULT), hybrid_field_type(MYSQL_TYPE_LONGLONG),
 
841
    hybrid_type(INT_RESULT), hybrid_field_type(DRIZZLE_TYPE_LONGLONG),
842
842
    cmp_sign(sign), was_values(true)
843
843
  { collation.set(&my_charset_bin); }
844
844
  Item_sum_hybrid(THD *thd, Item_sum_hybrid *item);
1153
1153
  enum_field_types field_type() const
1154
1154
  {
1155
1155
    if (max_length/collation.collation->mbmaxlen > CONVERT_IF_BIGGER_TO_BLOB )
1156
 
      return MYSQL_TYPE_BLOB;
 
1156
      return DRIZZLE_TYPE_BLOB;
1157
1157
    else
1158
 
      return MYSQL_TYPE_VARCHAR;
 
1158
      return DRIZZLE_TYPE_VARCHAR;
1159
1159
  }
1160
1160
  void clear();
1161
1161
  bool add();