James Taylor created PHOENIX-2989:
-------------------------------------

             Summary: Allow DistinctPrefixFilter optimization when HAVING or 
ORDER BY clauses only reference COUNT(DISTINCT)
                 Key: PHOENIX-2989
                 URL: https://issues.apache.org/jira/browse/PHOENIX-2989
             Project: Phoenix
          Issue Type: Sub-task
            Reporter: James Taylor


The DistinctPrefixFilter optimization can still be used if a HAVING or ORDER BY 
clause only references COUNT(DISTINCT) expressions. One way to detect this is 
to collect a Set<ParseNode> using a visitor for the SELECT, HAVING, and ORDER 
BY which only collects COUNT(DISTINCT) expressions. This set will then be used 
as the GROUP BY nodes if there's no existing GROUP BY.

The check for whether or not to add the filter can then change to something 
like this:
{code}
    if (... &&
    plan.getGroupBy().isUngroupedAggregate() &&
    plan.getGroupBy().getKeyExpressions().size() ==  
    context.getAggregationManager().getAggregators().getAggregatorCount() )
{code}
That way, it'll only add the filter if all expressions pulled in as a GROUP BY 
expression (only the count distinct ones) account for all of the aggregators.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to