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)