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

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

{code}
select a, b from t group by (a, b) grouping sets (a)
{code}
would be equivalent to
{code}
select a, null as "b" from t group by (a)
{code}

We could translate it that way when we go into Calcite from Hive, though 
currently we do not. The operator implementation can represent the semantics 
expressed above, as it does not impose that the only set in groupingSets has to 
be equal to groupSets. Thus, my suggestion was to use type {{SIMPLE}} (groupSet 
= groupingSets) for the check.

> 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