[
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)