• Jorgen Loland's avatar
    Bug#48920: COUNT DISTINCT returns 1 for NULL values when in a · 305f2e7f
    Jorgen Loland authored
               subquery in the select list
          
    When a dependent subquery with count(distinct <col>) was 
    evaluated multiple times, the Distinct_Aggregator was reused. 
    However, the Aggregator was not reset, so when the subquery was
    evaluated for the next record in the outer select, old dependent
    info was used.
          
    The fix is to clear() the existing aggregator in 
    Item_sum::set_aggregator(). This ensures that the aggregator is
    reevaluated with the new dependent information.
    
    mysql-test/r/subselect3.result:
      Added test case for BUG#48920
    mysql-test/t/subselect3.test:
      Added test case for BUG#48920
    sql/item_sum.cc:
      If an aggregator exists when Item_sum::set_aggregator() is
      called (i.e., set_aggregator is called in a dependent
      subquery), the aggregator is reset so that the aggregator is
      reevaluated with the dependent information from the outer
      record being evaluated.
    305f2e7f
subselect3.test 22.5 KB