Ruben,

Here is ticket: https://issues.apache.org/jira/browse/CALCITE-5531 - Regression 
in rewriting COALESCE expression.

https://issues.apache.org/jira/browse/CALCITE-5531

> On 15 Feb 2023, at 21:21, Ruben Q L <[email protected]> wrote:
> 
> Hello Max,
> 
> Thanks for reporting this. At first glance it seems a regression, could you 
> please create a Jira ticket (and link it to CALCITE-5424)?
> 
> Best,
> Ruben
> 
> 
> On Wed, Feb 15, 2023 at 3:27 PM Maksim Zhuravkov <[email protected] 
> <mailto:[email protected]>> wrote:
>> Hello, team. 
>> 
>> Thank you for all the effort you have put into this project over the years.
>> 
>> After updating to calcite 1.33.0, I found that validation of the following 
>> query fails with a ClassCastException.
>> 
>> Query: SELECT COALESCE(DATE '2021-07-08', DATE '2020-01-01’)
>> 
>> Error:
>> 
>> org.apache.calcite.tools.ValidationException: java.lang.ClassCastException: 
>> class org.apache.calcite.sql.SqlLiteral cannot be cast to class 
>> org.apache.calcite.sql.SqlUnknownLiteral (org.apache.calcite.sql.SqlLiteral 
>> and org.apache.calcite.sql.SqlUnknownLiteral are in unnamed module of loader 
>> 'app')
>> 
>>      at org.apache.calcite.prepare.PlannerImpl.validate(PlannerImpl.java:226)
>>      at 
>> org.apache.calcite.rex.RexSqlStandardConvertletTableTest.convertSqlToRel(RexSqlStandardConvertletTableTest.java:101)
>>      at 
>> com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
>>      at 
>> com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
>>      at 
>> com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
>>      at 
>> com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
>>      at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
>> Caused by: java.lang.ClassCastException: class 
>> org.apache.calcite.sql.SqlLiteral cannot be cast to class 
>> org.apache.calcite.sql.SqlUnknownLiteral (org.apache.calcite.sql.SqlLiteral 
>> and org.apache.calcite.sql.SqlUnknownLiteral are in unnamed module of loader 
>> 'app')
>>      at 
>> org.apache.calcite.sql.validate.SqlValidatorImpl.resolveLiteral(SqlValidatorImpl.java:6152)
>>      at 
>> org.apache.calcite.sql.validate.SqlValidatorImpl$Expander.visit(SqlValidatorImpl.java:6617)
>>      at 
>> org.apache.calcite.sql.validate.SqlValidatorImpl$Expander.visit(SqlValidatorImpl.java:6590)
>> 
>> When I move a commit pointer prior to the commit that introduces 
>> SqlUnknownLiteral ([CALCITE-5424] Customize handling of literals based on 
>> type system), the test cases above passes successfully.
>> I haven’t given a more thorough look at this error and maybe this behaviour 
>> was introduced after that commit,  but I think this error is most likely a 
>> bug.
>> The reproducer (added to RexSqlStandardConvertletTableTest):
>>   @Test void testCoalesceWithUnknownLiteral() {
>>     final Project project = (Project) convertSqlToRel(
>>         "SELECT COALESCE(DATE '2021-07-08', DATE '2020-01-01')", false);
>> 
>>     final RexNode rex = project.getProjects().get(0);
>>     final RexToSqlNodeConverter rexToSqlNodeConverter = 
>> rexToSqlNodeConverter();
>>     final SqlNode convertedSql = rexToSqlNodeConverter.convertNode(rex);
>> 
>>     assertEquals(
>>         "CASE WHEN DATE '2021-07-08' IS NOT NULL THEN DATE '2021-07-08' ELSE 
>> DATE '2020-01-01' END",
>>         convertedSql.toString());
>>   }
>> 
>> [CALCITE-5424] Customize handling of literals based on type system - ASF JIRA
>> issues.apache.org
>> 
>>  <https://issues.apache.org/jira/browse/CALCITE-5424>[CALCITE-5424] 
>> Customize handling of literals based on type system - ASF JIRA 
>> <https://issues.apache.org/jira/browse/CALCITE-5424>
>> issues.apache.org <https://issues.apache.org/jira/browse/CALCITE-5424>       
>>  <https://issues.apache.org/jira/browse/CALCITE-5424>
>> 
>> Best regards,
>> Max Zhuravkov
>> 
>> 

Reply via email to