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

Mihai Budiu commented on CALCITE-6677:
--------------------------------------

I actually don't know this code, but this one seemed to be relatively easy to 
fix, and the fix didn't break (almost) anything else (which rarely happens).
Please review the PR linked above: https://github.com/apache/calcite/pull/4036 
and approve if this fixes all your test cases.


> HAVING clauses fail validation when type coercion is applied to GROUP BY 
> clause
> -------------------------------------------------------------------------------
>
>                 Key: CALCITE-6677
>                 URL: https://issues.apache.org/jira/browse/CALCITE-6677
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Tracy Sassaman
>            Assignee: Mihai Budiu
>            Priority: Critical
>              Labels: pull-request-available
>
> Given a sql statement like:
> select if(EMP.empno <= CAST(18 AS DOUBLE), 'youth', 'adult') as adult_or_child
> from EMP
> GROUP BY if(EMP.empno <= CAST(18 AS DOUBLE), 'youth', 'adult')
> HAVING if(EMP.empno <= CAST(18 AS DOUBLE), 'youth', 'adult')  = 'adult'
>  
> Sql Validation fails with the error:
> org.apache.calcite.sql.validate.SqlValidatorException: Expression 'EMP.EMPNO' 
> is not being grouped
>  
> Root cause: A cast is applied to the group by clause, to make it GROUP BY if( 
> CAST (EMP.empno AS DOUBLE) <= CAST(18 AS DOUBLE), 'youth', 'adult') 
> But no such cast is applied to the Having Clause. Consequently, an equality 
> comparison on the two fails
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to