mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
changes based on partial revie of task 577 (SCRUM)
sql/item.cc: Fixed Item usual constructor to call current_thd only once. Fixed copy constructor to receive THD pointer via arguments. added comments removed counter-1 and unnessesary initializaton of counter sql/item.h: Fixed copy constructor to receive THD pointer via arguments. Renamed get_same to copy_or_same. THD pointetr added to copy_or_same and get_tmp_table_item. sql/item_cmpfunc.cc: fixed layout fixed direct call of destructor sql/item_func.cc: fiex layout THD pointetr added to get_tmp_table_item. sql/item_func.h: THD pointetr added to get_tmp_table_item. sql/item_sum.cc: Fixed copy constructor to receive THD pointer via arguments. Renamed get_same to copy_or_same. THD pointetr added to copy_or_same and get_tmp_table_item. sql/item_sum.h: fixed layout Fixed copy constructor to receive THD pointer via arguments. Renamed get_same to copy_or_same. THD pointetr added to copy_or_same and get_tmp_table_item. sql/item_uniq.h: Fixed copy constructor to receive THD pointer via arguments. Renamed get_same to copy_or_same. THD pointetr added to copy_or_same and get_tmp_table_item. sql/sql_base.cc: count from 0 sql/sql_select.cc: removed counter-1 and unnessesary initializaton of counter THD pointetr added to get_tmp_table_item and change_to_use_tmp_fields.
This commit is contained in:
113
sql/item_sum.h
113
sql/item_sum.h
@@ -55,7 +55,7 @@ public:
|
||||
}
|
||||
Item_sum(List<Item> &list);
|
||||
//Copy constructor, need to perform subselects with temporary tables
|
||||
Item_sum(Item_sum &item);
|
||||
Item_sum(THD *thd, Item_sum &item);
|
||||
~Item_sum() { result_field=0; }
|
||||
|
||||
enum Type type() const { return SUM_FUNC_ITEM; }
|
||||
@@ -77,7 +77,7 @@ public:
|
||||
void print(String *str);
|
||||
void fix_num_length_and_dec();
|
||||
virtual bool setup(THD *thd) {return 0;}
|
||||
Item * get_tmp_table_item();
|
||||
Item *get_tmp_table_item(THD *thd);
|
||||
};
|
||||
|
||||
|
||||
@@ -88,7 +88,7 @@ public:
|
||||
Item_sum_num(Item *item_par) :Item_sum(item_par) {}
|
||||
Item_sum_num(Item *a, Item* b) :Item_sum(a,b) {}
|
||||
Item_sum_num(List<Item> &list) :Item_sum(list) {}
|
||||
Item_sum_num(Item_sum_num &item) :Item_sum(item) {}
|
||||
Item_sum_num(THD *thd, Item_sum_num &item) :Item_sum(thd, item) {}
|
||||
bool fix_fields(THD *, TABLE_LIST *, Item **);
|
||||
longlong val_int() { return (longlong) val(); } /* Real as default */
|
||||
String *val_str(String*str);
|
||||
@@ -104,7 +104,7 @@ class Item_sum_int :public Item_sum_num
|
||||
public:
|
||||
Item_sum_int(Item *item_par) :Item_sum_num(item_par) {}
|
||||
Item_sum_int(List<Item> &list) :Item_sum_num(list) {}
|
||||
Item_sum_int(Item_sum_int &item) :Item_sum_num(item) {}
|
||||
Item_sum_int(THD *thd, Item_sum_int &item) :Item_sum_num(thd, item) {}
|
||||
double val() { return (double) val_int(); }
|
||||
String *val_str(String*str);
|
||||
enum Item_result result_type () const { return INT_RESULT; }
|
||||
@@ -118,7 +118,8 @@ class Item_sum_sum :public Item_sum_num
|
||||
|
||||
public:
|
||||
Item_sum_sum(Item *item_par) :Item_sum_num(item_par),sum(0.0) {}
|
||||
Item_sum_sum(Item_sum_sum &item) :Item_sum_num(item), sum(item.sum) {}
|
||||
Item_sum_sum(THD *thd, Item_sum_sum &item)
|
||||
:Item_sum_num(thd, item), sum(item.sum) {}
|
||||
enum Sumfunctype sum_func () const {return SUM_FUNC;}
|
||||
void reset();
|
||||
bool add();
|
||||
@@ -126,7 +127,7 @@ class Item_sum_sum :public Item_sum_num
|
||||
void reset_field();
|
||||
void update_field(int offset);
|
||||
const char *func_name() const { return "sum"; }
|
||||
Item * get_same() { return new Item_sum_sum(*this); }
|
||||
Item *copy_or_same(THD* thd) { return new Item_sum_sum(thd, *this); }
|
||||
};
|
||||
|
||||
|
||||
@@ -139,9 +140,9 @@ class Item_sum_count :public Item_sum_int
|
||||
Item_sum_count(Item *item_par)
|
||||
:Item_sum_int(item_par),count(0),used_table_cache(~(table_map) 0)
|
||||
{}
|
||||
Item_sum_count(Item_sum_count &item): Item_sum_int(item),
|
||||
count(item.count),
|
||||
used_table_cache(item.used_table_cache)
|
||||
Item_sum_count(THD *thd, Item_sum_count &item)
|
||||
:Item_sum_int(thd, item), count(item.count),
|
||||
used_table_cache(item.used_table_cache)
|
||||
{}
|
||||
table_map used_tables() const { return used_table_cache; }
|
||||
bool const_item() const { return !used_table_cache; }
|
||||
@@ -153,7 +154,7 @@ class Item_sum_count :public Item_sum_int
|
||||
void reset_field();
|
||||
void update_field(int offset);
|
||||
const char *func_name() const { return "count"; }
|
||||
Item * get_same() { return new Item_sum_count(*this); }
|
||||
Item *copy_or_same(THD* thd) { return new Item_sum_count(thd, *this); }
|
||||
};
|
||||
|
||||
|
||||
@@ -206,15 +207,15 @@ class Item_sum_count_distinct :public Item_sum_int
|
||||
tmp_table_param(0), tree(&tree_base), original(0), use_tree(0),
|
||||
always_null(0)
|
||||
{ quick_group= 0; }
|
||||
Item_sum_count_distinct(Item_sum_count_distinct &item):
|
||||
Item_sum_int(item), table(item.table),
|
||||
used_table_cache(item.used_table_cache),
|
||||
field_lengths(item.field_lengths), tmp_table_param(item.tmp_table_param),
|
||||
tree(item.tree), original(&item), key_length(item.key_length),
|
||||
max_elements_in_tree(item.max_elements_in_tree),
|
||||
rec_offset(item.rec_offset), use_tree(item.use_tree),
|
||||
always_null(item.always_null)
|
||||
{}
|
||||
Item_sum_count_distinct(THD *thd, Item_sum_count_distinct &item)
|
||||
:Item_sum_int(thd, item), table(item.table),
|
||||
used_table_cache(item.used_table_cache),
|
||||
field_lengths(item.field_lengths), tmp_table_param(item.tmp_table_param),
|
||||
tree(item.tree), original(&item), key_length(item.key_length),
|
||||
max_elements_in_tree(item.max_elements_in_tree),
|
||||
rec_offset(item.rec_offset), use_tree(item.use_tree),
|
||||
always_null(item.always_null)
|
||||
{}
|
||||
~Item_sum_count_distinct();
|
||||
table_map used_tables() const { return used_table_cache; }
|
||||
enum Sumfunctype sum_func () const { return COUNT_DISTINCT_FUNC; }
|
||||
@@ -225,7 +226,10 @@ class Item_sum_count_distinct :public Item_sum_int
|
||||
void update_field(int offset) { return ; } // Never called
|
||||
const char *func_name() const { return "count_distinct"; }
|
||||
bool setup(THD *thd);
|
||||
Item * get_same() { return new Item_sum_count_distinct(*this); }
|
||||
Item *copy_or_same(THD* thd)
|
||||
{
|
||||
return new Item_sum_count_distinct(thd, *this);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -257,8 +261,8 @@ class Item_sum_avg :public Item_sum_num
|
||||
|
||||
public:
|
||||
Item_sum_avg(Item *item_par) :Item_sum_num(item_par),count(0) {}
|
||||
Item_sum_avg(Item_sum_avg &item)
|
||||
:Item_sum_num(item), sum(item.sum), count(item.count) {}
|
||||
Item_sum_avg(THD *thd, Item_sum_avg &item)
|
||||
:Item_sum_num(thd, item), sum(item.sum), count(item.count) {}
|
||||
enum Sumfunctype sum_func () const {return AVG_FUNC;}
|
||||
void reset();
|
||||
bool add();
|
||||
@@ -268,7 +272,7 @@ class Item_sum_avg :public Item_sum_num
|
||||
Item *result_item(Field *field)
|
||||
{ return new Item_avg_field(this); }
|
||||
const char *func_name() const { return "avg"; }
|
||||
Item * get_same() { return new Item_sum_avg(*this); }
|
||||
Item *copy_or_same(THD* thd) { return new Item_sum_avg(thd, *this); }
|
||||
};
|
||||
|
||||
class Item_sum_variance;
|
||||
@@ -309,8 +313,8 @@ class Item_sum_variance : public Item_sum_num
|
||||
|
||||
public:
|
||||
Item_sum_variance(Item *item_par) :Item_sum_num(item_par),count(0) {}
|
||||
Item_sum_variance(Item_sum_variance &item):
|
||||
Item_sum_num(item), sum(item.sum), sum_sqr(item.sum_sqr),
|
||||
Item_sum_variance(THD *thd, Item_sum_variance &item):
|
||||
Item_sum_num(thd, item), sum(item.sum), sum_sqr(item.sum_sqr),
|
||||
count(item.count) {}
|
||||
enum Sumfunctype sum_func () const { return VARIANCE_FUNC; }
|
||||
void reset();
|
||||
@@ -321,7 +325,7 @@ class Item_sum_variance : public Item_sum_num
|
||||
Item *result_item(Field *field)
|
||||
{ return new Item_variance_field(this); }
|
||||
const char *func_name() const { return "variance"; }
|
||||
Item * get_same() { return new Item_sum_variance(*this); }
|
||||
Item *copy_or_same(THD* thd) { return new Item_sum_variance(thd, *this); }
|
||||
};
|
||||
|
||||
class Item_sum_std;
|
||||
@@ -366,8 +370,8 @@ class Item_sum_hybrid :public Item_sum
|
||||
Item_sum_hybrid(Item *item_par,int sign) :Item_sum(item_par),cmp_sign(sign),
|
||||
used_table_cache(~(table_map) 0)
|
||||
{}
|
||||
Item_sum_hybrid(Item_sum_hybrid &item):
|
||||
Item_sum(item), value(item.value), tmp_value(item.tmp_value),
|
||||
Item_sum_hybrid(THD *thd, Item_sum_hybrid &item):
|
||||
Item_sum(thd, item), value(item.value), tmp_value(item.tmp_value),
|
||||
sum(item.sum), sum_int(item.sum_int), hybrid_type(item.hybrid_type),
|
||||
cmp_sign(item.cmp_sign), used_table_cache(used_table_cache) {}
|
||||
bool fix_fields(THD *, TABLE_LIST *, Item **);
|
||||
@@ -401,12 +405,12 @@ class Item_sum_min :public Item_sum_hybrid
|
||||
{
|
||||
public:
|
||||
Item_sum_min(Item *item_par) :Item_sum_hybrid(item_par,1) {}
|
||||
Item_sum_min(Item_sum_min &item) :Item_sum_hybrid(item) {}
|
||||
Item_sum_min(THD *thd, Item_sum_min &item) :Item_sum_hybrid(thd, item) {}
|
||||
enum Sumfunctype sum_func () const {return MIN_FUNC;}
|
||||
|
||||
bool add();
|
||||
const char *func_name() const { return "min"; }
|
||||
Item * get_same() { return new Item_sum_min(*this); }
|
||||
Item *copy_or_same(THD* thd) { return new Item_sum_min(thd, *this); }
|
||||
};
|
||||
|
||||
|
||||
@@ -414,12 +418,12 @@ class Item_sum_max :public Item_sum_hybrid
|
||||
{
|
||||
public:
|
||||
Item_sum_max(Item *item_par) :Item_sum_hybrid(item_par,-1) {}
|
||||
Item_sum_max(Item_sum_max &item) :Item_sum_hybrid(item) {}
|
||||
Item_sum_max(THD *thd, Item_sum_max &item) :Item_sum_hybrid(thd, item) {}
|
||||
enum Sumfunctype sum_func () const {return MAX_FUNC;}
|
||||
|
||||
bool add();
|
||||
const char *func_name() const { return "max"; }
|
||||
Item * get_same() { return new Item_sum_max(*this); }
|
||||
Item *copy_or_same(THD* thd) { return new Item_sum_max(thd, *this); }
|
||||
};
|
||||
|
||||
|
||||
@@ -431,8 +435,8 @@ class Item_sum_bit :public Item_sum_int
|
||||
public:
|
||||
Item_sum_bit(Item *item_par,ulonglong reset_arg)
|
||||
:Item_sum_int(item_par),reset_bits(reset_arg),bits(reset_arg) {}
|
||||
Item_sum_bit(Item_sum_bit &item):
|
||||
Item_sum_int(item), reset_bits(item.reset_bits), bits(item.bits) {}
|
||||
Item_sum_bit(THD *thd, Item_sum_bit &item):
|
||||
Item_sum_int(thd, item), reset_bits(item.reset_bits), bits(item.bits) {}
|
||||
enum Sumfunctype sum_func () const {return SUM_BIT_FUNC;}
|
||||
void reset();
|
||||
longlong val_int();
|
||||
@@ -444,11 +448,11 @@ class Item_sum_or :public Item_sum_bit
|
||||
{
|
||||
public:
|
||||
Item_sum_or(Item *item_par) :Item_sum_bit(item_par,LL(0)) {}
|
||||
Item_sum_or(Item_sum_or &item) :Item_sum_bit(item) {}
|
||||
Item_sum_or(THD *thd, Item_sum_or &item) :Item_sum_bit(thd, item) {}
|
||||
bool add();
|
||||
void update_field(int offset);
|
||||
const char *func_name() const { return "bit_or"; }
|
||||
Item * get_same() { return new Item_sum_or(*this); }
|
||||
Item *copy_or_same(THD* thd) { return new Item_sum_or(thd, *this); }
|
||||
};
|
||||
|
||||
|
||||
@@ -456,11 +460,11 @@ class Item_sum_and :public Item_sum_bit
|
||||
{
|
||||
public:
|
||||
Item_sum_and(Item *item_par) :Item_sum_bit(item_par, ~(ulonglong) LL(0)) {}
|
||||
Item_sum_and(Item_sum_and &item) :Item_sum_bit(item) {}
|
||||
Item_sum_and(THD *thd, Item_sum_and &item) :Item_sum_bit(thd, item) {}
|
||||
bool add();
|
||||
void update_field(int offset);
|
||||
const char *func_name() const { return "bit_and"; }
|
||||
Item * get_same() { return new Item_sum_and(*this); }
|
||||
Item *copy_or_same(THD* thd) { return new Item_sum_and(thd, *this); }
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -478,7 +482,8 @@ public:
|
||||
Item_udf_sum( udf_func *udf_arg, List<Item> &list )
|
||||
:Item_sum( list ), udf(udf_arg)
|
||||
{ quick_group=0;}
|
||||
Item_udf_sum(Item_udf_sum &item) :Item_sum(item), udf(item.udf) {}
|
||||
Item_udf_sum(THD *thd, Item_udf_sum &item)
|
||||
:Item_sum(thd, item), udf(item.udf) {}
|
||||
~Item_udf_sum() {}
|
||||
const char *func_name() const { return udf.name(); }
|
||||
bool fix_fields(THD *thd, TABLE_LIST *tables, Item **ref)
|
||||
@@ -502,13 +507,14 @@ class Item_sum_udf_float :public Item_udf_sum
|
||||
Item_sum_udf_float(udf_func *udf_arg) :Item_udf_sum(udf_arg) {}
|
||||
Item_sum_udf_float(udf_func *udf_arg, List<Item> &list)
|
||||
:Item_udf_sum(udf_arg,list) {}
|
||||
Item_sum_udf_float(Item_sum_udf_float &item): Item_udf_sum(item) {}
|
||||
Item_sum_udf_float(THD *thd, Item_sum_udf_float &item)
|
||||
:Item_udf_sum(thd, item) {}
|
||||
~Item_sum_udf_float() {}
|
||||
longlong val_int() { return (longlong) Item_sum_udf_float::val(); }
|
||||
double val();
|
||||
String *val_str(String*str);
|
||||
void fix_length_and_dec() { fix_num_length_and_dec(); }
|
||||
Item * get_same() { return new Item_sum_udf_float(*this); }
|
||||
Item *copy_or_same(THD* thd) { return new Item_sum_udf_float(thd, *this); }
|
||||
};
|
||||
|
||||
|
||||
@@ -518,14 +524,15 @@ public:
|
||||
Item_sum_udf_int(udf_func *udf_arg) :Item_udf_sum(udf_arg) {}
|
||||
Item_sum_udf_int(udf_func *udf_arg, List<Item> &list)
|
||||
:Item_udf_sum(udf_arg,list) {}
|
||||
Item_sum_udf_int(Item_sum_udf_int &item): Item_udf_sum(item) {}
|
||||
Item_sum_udf_int(THD *thd, Item_sum_udf_int &item)
|
||||
:Item_udf_sum(thd, item) {}
|
||||
~Item_sum_udf_int() {}
|
||||
longlong val_int();
|
||||
double val() { return (double) Item_sum_udf_int::val_int(); }
|
||||
String *val_str(String*str);
|
||||
enum Item_result result_type () const { return INT_RESULT; }
|
||||
void fix_length_and_dec() { decimals=0; max_length=21; }
|
||||
Item * get_same() { return new Item_sum_udf_int(*this); }
|
||||
Item *copy_or_same(THD* thd) { return new Item_sum_udf_int(thd, *this); }
|
||||
};
|
||||
|
||||
|
||||
@@ -535,7 +542,8 @@ public:
|
||||
Item_sum_udf_str(udf_func *udf_arg) :Item_udf_sum(udf_arg) {}
|
||||
Item_sum_udf_str(udf_func *udf_arg, List<Item> &list)
|
||||
:Item_udf_sum(udf_arg,list) {}
|
||||
Item_sum_udf_str(Item_sum_udf_str &item): Item_udf_sum(item) {}
|
||||
Item_sum_udf_str(THD *thd, Item_sum_udf_str &item)
|
||||
:Item_udf_sum(thd, item) {}
|
||||
~Item_sum_udf_str() {}
|
||||
String *val_str(String *);
|
||||
double val()
|
||||
@@ -553,7 +561,7 @@ public:
|
||||
}
|
||||
enum Item_result result_type () const { return STRING_RESULT; }
|
||||
void fix_length_and_dec();
|
||||
Item * get_same() { return new Item_sum_udf_str(*this); }
|
||||
Item *copy_or_same(THD* thd) { return new Item_sum_udf_str(thd, *this); }
|
||||
};
|
||||
|
||||
#else /* Dummy functions to get sql_yacc.cc compiled */
|
||||
@@ -563,14 +571,15 @@ class Item_sum_udf_float :public Item_sum_num
|
||||
public:
|
||||
Item_sum_udf_float(udf_func *udf_arg) :Item_sum_num() {}
|
||||
Item_sum_udf_float(udf_func *udf_arg, List<Item> &list) :Item_sum_num() {}
|
||||
Item_sum_udf_float(Item_sum_udf_float &item): Item_sum_num(item) {}
|
||||
Item_sum_udf_float(THD *thd, Item_sum_udf_float &item)
|
||||
:Item_sum_num(thd, item) {}
|
||||
~Item_sum_udf_float() {}
|
||||
enum Sumfunctype sum_func () const { return UDF_SUM_FUNC; }
|
||||
double val() { return 0.0; }
|
||||
void reset() {}
|
||||
bool add() { return 0; }
|
||||
void update_field(int offset) {}
|
||||
Item * get_same() { return new Item_sum_udf_float(*this); }
|
||||
Item *copy_or_same(THD* thd) { return new Item_sum_udf_float(thd, *this); }
|
||||
};
|
||||
|
||||
|
||||
@@ -579,7 +588,8 @@ class Item_sum_udf_int :public Item_sum_num
|
||||
public:
|
||||
Item_sum_udf_int(udf_func *udf_arg) :Item_sum_num() {}
|
||||
Item_sum_udf_int(udf_func *udf_arg, List<Item> &list) :Item_sum_num() {}
|
||||
Item_sum_udf_int(Item_sum_udf_int &item): Item_sum_num(item) {}
|
||||
Item_sum_udf_int(THD *thd, Item_sum_udf_int &item)
|
||||
:Item_sum_num(thd, item) {}
|
||||
~Item_sum_udf_int() {}
|
||||
enum Sumfunctype sum_func () const { return UDF_SUM_FUNC; }
|
||||
longlong val_int() { return 0; }
|
||||
@@ -587,7 +597,7 @@ public:
|
||||
void reset() {}
|
||||
bool add() { return 0; }
|
||||
void update_field(int offset) {}
|
||||
Item * get_same() { return new Item_sum_udf_int(*this); }
|
||||
Item *copy_or_same(THD* thd) { return new Item_sum_udf_int(thd, *this); }
|
||||
};
|
||||
|
||||
|
||||
@@ -596,7 +606,8 @@ class Item_sum_udf_str :public Item_sum_num
|
||||
public:
|
||||
Item_sum_udf_str(udf_func *udf_arg) :Item_sum_num() {}
|
||||
Item_sum_udf_str(udf_func *udf_arg, List<Item> &list) :Item_sum_num() {}
|
||||
Item_sum_udf_str(Item_sum_udf_str &item): Item_sum_num(item) {}
|
||||
Item_sum_udf_str(THD *thd, Item_sum_udf_str &item)
|
||||
:Item_sum_num(thd, item) {}
|
||||
~Item_sum_udf_str() {}
|
||||
String *val_str(String *) { null_value=1; return 0; }
|
||||
double val() { null_value=1; return 0.0; }
|
||||
@@ -607,7 +618,7 @@ public:
|
||||
void reset() {}
|
||||
bool add() { return 0; }
|
||||
void update_field(int offset) {}
|
||||
Item * get_same() { return new Item_sum_udf_str(*this); }
|
||||
Item *copy_or_same(THD* thd) { return new Item_sum_udf_str(thd, *this); }
|
||||
};
|
||||
|
||||
#endif /* HAVE_DLOPEN */
|
||||
|
Reference in New Issue
Block a user