[ 
https://issues.apache.org/jira/browse/CALCITE-2051?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16252743#comment-16252743
 ] 

Jesus Camacho Rodriguez commented on CALCITE-2051:
--------------------------------------------------

[~julianhyde], I have created a PR with the changes to the rules that contain 
that same snippet:
https://github.com/apache/calcite/pull/566

We were hitting the issue in Hive with a query {{... group by (a, b) grouping 
sets (a) ...}}. Thus, you end up with grouping sets with a single set that is 
not equal to the set in the group by clause. This is possible in Hive, but I 
think it is not standard SQL, and I have not been able to reproduce it in 
Calcite. The {{induce}} method in {{Aggregate}} class takes this into account:
https://github.com/apache/calcite/blob/master/core/src/main/java/org/apache/calcite/rel/core/Aggregate.java#L470
That is the reason why this change fixes the issue.

> Rules using Aggregate might check for simple grouping sets incorrectly
> ----------------------------------------------------------------------
>
>                 Key: CALCITE-2051
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2051
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>            Reporter: Jesus Camacho Rodriguez
>            Assignee: Jesus Camacho Rodriguez
>            Priority: Critical
>             Fix For: 1.15.0
>
>
> CALCITE-1069 removed the indicator columns for Aggregate operators. In some 
> places, the indicator boolean check was replaced by the following check: 
> {{aggregate.getGroupSets().size() > 1}}. However, that check is incomplete, 
> it should have been replaced by {{aggregate.getGroupType() != Group.SIMPLE}}.
> For instance : 
> https://github.com/apache/calcite/blob/master/core/src/main/java/org/apache/calcite/rel/rules/AggregateProjectMergeRule.java#L91



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to