• Chaithra Gopalareddy's avatar
    Bug #13444084:PRIMARY KEY OR UNIQUE KEY >453 BYTES FAILS FOR · 781b05fb
    Chaithra Gopalareddy authored
                  COUNT DISTINCT GROUP BY
    
    PROBLEM:
    To calculate the final result of the count(distinct(select 1))
    we call 'end_send' function instead of 'end_send_group'.
    'end_send' cannot be called if we have aggregate functions
    that need to be evaluated.
    
    ANALYSIS:
    While evaluating for a possible loose_index_scan option for
    the query, the variable 'is_agg_distinct' is set to 'false'
    as the item in the distinct clause is not a field. But, we
    choose loose_index_scan by not taking this into 
    consideration.
    So, while setting the final 'select_function' to evaluate
    the result, 'precomputed_group_by' is set to TRUE as in
    this case loose_index_scan is chosen and we do not have
    agg_distinct in the query (which is clearly wrong as we
    have one).
    As a result, 'end_send' function is chosen as the final
    select_function instead of 'end_send_group'. The difference
    between the two being, 'end_send_group' evaluates the
    aggregates while 'end_send' does not. Hence the wrong result.
    
    FIX:
    The variable 'is_agg_distinct' always represents if 
    'loose_idnex_scan' can be chosen for aggregate_distinct 
    functions present in the select.
    So, we check for this variable to continue with 
    loose_index_scan option.
    781b05fb
opt_range.cc 369 KB