[ 
https://issues.apache.org/jira/browse/CALCITE-2026?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16234455#comment-16234455
 ] 

Julian Hyde commented on CALCITE-2026:
--------------------------------------

Oh, I had it backwards.

Well if the initial type was INTEGER NOT NULL and after simplifying the 
expression was NULL then the initial type was a lie. Garbage in. Fix it.

> AssertionError when ProjectReduceExpressionsRule simplifies project 
> expressions
> -------------------------------------------------------------------------------
>
>                 Key: CALCITE-2026
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2026
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>            Reporter: Volodymyr Vysotskyi
>            Assignee: Julian Hyde
>            Priority: Major
>
> When applying ProjectReduceExpressionsRule on project which expression has a 
> non-nullable type, but after simplifying expression is null, the query fails 
> with the assertion error:
> {noformat}
> java.lang.AssertionError: Type mismatch:
> rel rowtype:
> RecordType(INTEGER EXPR$0) NOT NULL
> equivRel rowtype:
> RecordType(INTEGER NOT NULL EXPR$0) NOT NULL
>       at org.apache.calcite.util.Litmus$1.fail(Litmus.java:31) 
> ~[calcite-core-1.13.0.jar:1.13.0]
>       at org.apache.calcite.plan.RelOptUtil.equal(RelOptUtil.java:1868) 
> ~[calcite-core-1.13.0.jar:1.13.0]
>       at 
> org.apache.calcite.plan.volcano.VolcanoPlanner.register(VolcanoPlanner.java:855)
>  ~[calcite-core-1.13.0.jar:1.13.0]
>       at 
> org.apache.calcite.plan.volcano.VolcanoPlanner.ensureRegistered(VolcanoPlanner.java:883)
>  ~[calcite-core-1.13.0.jar:1.13.0]
>       at 
> org.apache.calcite.plan.volcano.VolcanoPlanner.ensureRegistered(VolcanoPlanner.java:1767)
>  ~[calcite-core-1.13.0.jar:1.13.0]
>       at 
> org.apache.calcite.plan.volcano.VolcanoRuleCall.transformTo(VolcanoRuleCall.java:135)
>  ~[calcite-core-1.13.0.jar:1.13.0]
>       at 
> org.apache.calcite.plan.RelOptRuleCall.transformTo(RelOptRuleCall.java:234) 
> ~[calcite-core-1.13.0.jar:1.13.0]
>       at 
> org.apache.calcite.rel.rules.ReduceExpressionsRule$ProjectReduceExpressionsRule.onMatch(ReduceExpressionsRule.java:268)
>  ~[calcite-core-1.13.0.jar:1.13.0]
>       at 
> org.apache.calcite.plan.volcano.VolcanoRuleCall.onMatch(VolcanoRuleCall.java:212)
>  ~[calcite-core-1.13.0.jar:1.13.0]
>       at 
> org.apache.calcite.plan.volcano.VolcanoPlanner.findBestExp(VolcanoPlanner.java:650)
>  ~[calcite-core-1.13.0.jar:1.13.0]
>       at 
> org.apache.calcite.tools.Programs$RuleSetProgram.run(Programs.java:368) 
> ~[calcite-core-1.13.0.jar:1.13.0]
> {noformat}
> The similar bug was described in CALCITE-1502, since there was a problem with 
> non-nullable and nullable types in different case branches, but this bug 
> appears when project expression is transformed into the expression with 
> nullable type.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to