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

Julian Hyde commented on CALCITE-516:
-------------------------------------

I think you're on the right track. Note that the error occurs during 
sql-to-rel. It has passed through validation successfully, and recognized that, 
in SqlNode format, the two occurrences of {{case when emp.empno in (3) then 0 
else 1 end}} are structurally identical, as required for them to be grouping 
expressions. But it looks as if the expressions are translated separately and 
therefore their RexNode representations look different. IIRC there's some logic 
in there to track aliased expressions through translation, but if so, it's not 
working correctly here.

> GroupBy on a CASE expression containing IN predicate fails
> ----------------------------------------------------------
>
>                 Key: CALCITE-516
>                 URL: https://issues.apache.org/jira/browse/CALCITE-516
>             Project: Calcite
>          Issue Type: Bug
>    Affects Versions: 0.9.1-incubating
>            Reporter: Aman Sinha
>            Assignee: Julian Hyde
>              Labels: newbie
>
> The following query which does a Group-By on a CASE expression that contains 
> IN predicate fails.  If I replace the IN with an equality or <, > the query 
> succeeds.  I am not on latest Calcite master but I suspect the same problem 
> exists there. 
> {code:sql}
> select (case when emp.empno in (3) then 0 else 1 end) 
>   from emp 
> group by (case when emp.empno in (3) then 0 else 1 end);
> java.lang.AssertionError: Internal error: while converting CASE WHEN 
> `EMP`.`EMPNO` IN (3) THEN 0 ELSE 1 END
>       at org.eigenbase.util.Util.newInternal(Util.java:750)
>       at 
> org.eigenbase.sql2rel.ReflectiveConvertletTable$1.convertCall(ReflectiveConvertletTable.java:93)
>       at 
> org.eigenbase.sql2rel.SqlNodeToRexConverterImpl.convertCall(SqlNodeToRexConverterImpl.java:52)
>       at 
> org.eigenbase.sql2rel.SqlToRelConverter$Blackboard.visit(SqlToRelConverter.java:4093)
>       at 
> org.eigenbase.sql2rel.SqlToRelConverter$Blackboard.visit(SqlToRelConverter.java:1)
>       at org.eigenbase.sql.SqlCall.accept(SqlCall.java:125)
>       at 
> org.eigenbase.sql2rel.SqlToRelConverter$Blackboard.convertExpression(SqlToRelConverter.java:3988)
>       at 
> org.eigenbase.sql2rel.SqlToRelConverter$AggConverter.addGroupExpr(SqlToRelConverter.java:4314)
>       at 
> org.eigenbase.sql2rel.SqlToRelConverter.createAggImpl(SqlToRelConverter.java:2240)
>       at 
> org.eigenbase.sql2rel.SqlToRelConverter.convertAgg(SqlToRelConverter.java:2191)
>       at 
> org.eigenbase.sql2rel.SqlToRelConverter.convertSelectImpl(SqlToRelConverter.java:514)
>       at 
> org.eigenbase.sql2rel.SqlToRelConverter.convertSelect(SqlToRelConverter.java:474)
> {code}



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

Reply via email to