[ https://issues.apache.org/jira/browse/PHOENIX-2989?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15326725#comment-15326725 ]
Lars Hofhansl commented on PHOENIX-2989: ---------------------------------------- Yeah... The ORDER BY part was easy. Could just that as an addendum to PHOENIX-2965 (it ended up being tree lines of change only)... Suggesting that, because this change here will be a bigger change. > Allow DistinctPrefixFilter optimization when HAVING clause 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 > Fix For: 4.8.0 > > > The DistinctPrefixFilter optimization can still be used if a HAVING clause > only references COUNT(DISTINCT) expressions. One way to detect this is to > collect a Set<ParseNode> using a visitor for the SELECT and HAVING 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 (... && > ( context.getAggregationManager().isEmpty() || > ( 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)