diff options
Diffstat (limited to 'sql/item_sum.cc')
-rw-r--r-- | sql/item_sum.cc | 21 |
1 files changed, 3 insertions, 18 deletions
diff --git a/sql/item_sum.cc b/sql/item_sum.cc index 21f14ae8435..6b00316849e 100644 --- a/sql/item_sum.cc +++ b/sql/item_sum.cc @@ -400,20 +400,9 @@ bool Item_sum::collect_outer_ref_processor(uchar *param) } -Item_sum::Item_sum(List<Item> &list) :arg_count(list.elements), +Item_sum::Item_sum(List<Item> &list) :Item_func_or_sum(list), forced_const(FALSE) { - if ((args=(Item**) sql_alloc(sizeof(Item*)*arg_count))) - { - uint i=0; - List_iterator_fast<Item> li(list); - Item *item; - - while ((item=li++)) - { - args[i++]= item; - } - } if (!(orig_args= (Item **) sql_alloc(sizeof(Item *) * arg_count))) { args= NULL; @@ -429,27 +418,23 @@ Item_sum::Item_sum(List<Item> &list) :arg_count(list.elements), */ Item_sum::Item_sum(THD *thd, Item_sum *item): - Item_result_field(thd, item), + Item_func_or_sum(thd, item), aggr_sel(item->aggr_sel), nest_level(item->nest_level), aggr_level(item->aggr_level), quick_group(item->quick_group), - arg_count(item->arg_count), orig_args(NULL), + orig_args(NULL), used_tables_cache(item->used_tables_cache), forced_const(item->forced_const) { if (arg_count <= 2) { - args=tmp_args; orig_args=tmp_orig_args; } else { - if (!(args= (Item**) thd->alloc(sizeof(Item*)*arg_count))) - return; if (!(orig_args= (Item**) thd->alloc(sizeof(Item*)*arg_count))) return; } - memcpy(args, item->args, sizeof(Item*)*arg_count); memcpy(orig_args, item->orig_args, sizeof(Item*)*arg_count); init_aggregator(); with_distinct= item->with_distinct; |