• gkodinov/kgeorge@magare.gmz's avatar
    Bug#27333: subquery grouped for aggregate of outer · 38172240
    gkodinov/kgeorge@magare.gmz authored
    query / no aggregate of subquery
     The optimizer counts the aggregate functions that 
     appear as top level expressions (in all_fields) in 
     the current subquery. Later it makes a list of these
     that it uses to actually execute the aggregates in
     end_send_group().
     That count is used in several places as a flag whether
     there are aggregates functions.
     While collecting the above info it must not consider
     aggregates that are not aggregated in the current 
     context. It must treat them as normal expressions 
     instead. Not doing that leads to incorrect data about
     the query, e.g. running a query that actually has no
     aggregate functions as if it has some (and hence is
     expected to return only one row).
     Fixed by ignoring the aggregates that are not aggregated
     in the current context. 
     One other smaller omission discovered and fixed in the 
     process : the place of aggregation was not calculated for
     user defined functions. Fixed by calling 
     Item_sum::init_sum_func_check() and 
     Item_sum::check_sum_func() as it's done for the rest of 
     the aggregate functions.
    38172240
item_sum.cc 83 KB