Tracy Sassaman created CALCITE-6677:
---------------------------------------
Summary: 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
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)