[ 
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 for some usages of dynamic parameters 
in CASE  WHEN .. END expressions  (was: Sql. Type inference errors some usages 
of dynamic parameters in CASE  WHEN .. END expressions)

> Sql. Type inference errors for 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 produce inference errors. Examples:
> {code:java}
>     @Test
>     public void test() {
> // CASE WHEN <condition> THEN .. WHEN <condition2> THEN ... END
>         assertQuery("SELECT CASE ? "
>                 + "WHEN '1' = ? "
>                 + "THEN 'b' "
>                 + "ELSE ? END")
>                 .withParams("1", "2", "3")
>                 .check();
>     }
> {code}
> Result:
> {code:java}
> class org.apache.calcite.sql.SqlBasicCall: CAST('1' AS UNKNOWN)
> java.lang.UnsupportedOperationException: class 
> org.apache.calcite.sql.SqlBasicCall: CAST('1' 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)
>       at org.apache.calcite.sql.SqlOperator.deriveType(SqlOperator.java:609)
>       at 
> org.apache.calcite.sql.SqlBinaryOperator.deriveType(SqlBinaryOperator.java:178)
>       at 
> org.apache.calcite.sql.validate.SqlValidatorImpl$DeriveTypeVisitor.visit(SqlValidatorImpl.java:6373)
>       at 
> org.apache.calcite.sql.validate.SqlValidatorImpl$DeriveTypeVisitor.visit(SqlValidatorImpl.java:6360)
>       at org.apache.calcite.sql.SqlCall.accept(SqlCall.java:161)
>       at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.deriveTypeImpl(SqlValidatorImpl.java:1869)
>       at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.deriveType(SqlValidatorImpl.java:1854)
>       at 
> org.apache.calcite.sql.type.SqlTypeUtil.deriveType(SqlTypeUtil.java:200)
>       at 
> org.apache.calcite.sql.type.InferTypes.lambda$static$0(InferTypes.java:47)
>       at 
> org.apache.ignite.internal.sql.engine.prepare.IgniteSqlValidator.inferUnknownTypes(IgniteSqlValidator.java:541)
>       at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.inferUnknownTypes(SqlValidatorImpl.java:2016)
>       at 
> org.apache.ignite.internal.sql.engine.prepare.IgniteSqlValidator.inferUnknownTypes(IgniteSqlValidator.java:568)
>       at 
> org.apache.ignite.internal.sql.engine.prepare.IgniteSqlValidator.inferUnknownTypes(IgniteSqlValidator.java:564)
>       at 
> org.apache.calcite.sql.validate.SqlValidatorImpl.expandSelectItem(SqlValidatorImpl.java:462)
> {code}



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

Reply via email to