[
https://issues.apache.org/jira/browse/IGNITE-18762?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Maksim Zhuravkov updated IGNITE-18762:
--------------------------------------
Summary: Sql. Type inference errors some usages of dynamic parameters in
CASE WHEN .. END expressions (was: Sql. Incorrect types can be inferred for
CASE WHEN .. END expressions)
> Sql. Type inference errors some usages of dynamic parameters in CASE WHEN ..
> END expressions
> ---------------------------------------------------------------------------------------------
>
> Key: IGNITE-18762
> URL: https://issues.apache.org/jira/browse/IGNITE-18762
> Project: Ignite
> Issue Type: Improvement
> Components: sql
> Reporter: Maksim Zhuravkov
> Priority: Major
> Labels: calcite2-required, calcite3-required, ignite-3
>
> In some cases CASE WHEN .. END expressions may have incorrect types or
> runtime errors. Examples:
> {code:java}
> // CASE WHEN <condition> THEN .. WHEN <condition2> THEN ... END
> assertQuery("SELECT CASE ? "
> + "WHEN '1' = ? "
> + "THEN 'b' "
> + "ELSE ? END")
> .withParams(UUID.randomUUID().toString(),
> UUID.randomUUID().toString(), UUID.randomUUID().toString())
> .check();
> {code}
> Result:
> {code:java}
> class org.apache.calcite.sql.SqlBasicCall: CAST(`T`.`C1` AS UNKNOWN)
> java.lang.UnsupportedOperationException: class
> org.apache.calcite.sql.SqlBasicCall: CAST(`T`.`C1` AS UNKNOWN)
> at org.apache.calcite.util.Util.needToImplement(Util.java:1101)
> at
> org.apache.calcite.sql.validate.SqlValidatorImpl.getValidatedNodeType(SqlValidatorImpl.java:1767)
> at
> org.apache.calcite.sql.SqlBinaryOperator.convertType(SqlBinaryOperator.java:137)
> at
> org.apache.calcite.sql.SqlBinaryOperator.adjustType(SqlBinaryOperator.java:132)
> */
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)