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

Laurent Goujon commented on CALCITE-2344:
-----------------------------------------

I tried the following query:
{code:sql}
select empno, deptno, w_count from (
  select empno, deptno, count(empno) over (ROWS BETWEEN 10 PRECEDING AND 1 
PRECEDING) w_count
  from emp
) sub_query where w_count is null
{code}

In {{RelOptRulesTest}} I configured a preplanner with the 
{{ProjectToWindowRule.PROJECT}} rule and then a planner with the 
{{ReduceExpressionsRule.PROJECT_INSTANCE}}. I got the following exception:
{noformat}
java.lang.AssertionError: Cannot add expression of different type to set:
set type is RecordType(INTEGER NOT NULL EMPNO, INTEGER NOT NULL DEPTNO, BIGINT 
NOT NULL W_COUNT) NOT NULL
expression type is RecordType(INTEGER NOT NULL EMPNO, INTEGER NOT NULL DEPTNO, 
BIGINT W_COUNT) NOT NULL
set is 
rel#26:LogicalProject(input=HepRelVertex#25,EMPNO=$0,DEPTNO=$1,W_COUNT=$2)
expression is LogicalProject#28
        at 
org.apache.calcite.plan.RelOptUtil.verifyTypeEquivalence(RelOptUtil.java:410)
        at 
org.apache.calcite.plan.hep.HepRuleCall.transformTo(HepRuleCall.java:57)
        at 
org.apache.calcite.plan.RelOptRuleCall.transformTo(RelOptRuleCall.java:234)
        at 
org.apache.calcite.rel.rules.ReduceExpressionsRule$ProjectReduceExpressionsRule.onMatch(ReduceExpressionsRule.java:290)
        at 
org.apache.calcite.plan.AbstractRelOptPlanner.fireRule(AbstractRelOptPlanner.java:317)
        at org.apache.calcite.plan.hep.HepPlanner.applyRule(HepPlanner.java:556)
        at 
org.apache.calcite.plan.hep.HepPlanner.applyRules(HepPlanner.java:415)
        at 
org.apache.calcite.plan.hep.HepPlanner.executeInstruction(HepPlanner.java:252)
        at 
org.apache.calcite.plan.hep.HepInstruction$RuleInstance.execute(HepInstruction.java:127)
        at 
org.apache.calcite.plan.hep.HepPlanner.executeProgram(HepPlanner.java:211)
        at 
org.apache.calcite.plan.hep.HepPlanner.findBestExp(HepPlanner.java:198)
        at 
org.apache.calcite.test.RelOptTestBase.checkPlanning(RelOptTestBase.java:170)
        at 
org.apache.calcite.test.RelOptTestBase$Sql.check(RelOptTestBase.java:315)
        at 
org.apache.calcite.test.RelOptTestBase$Sql.check(RelOptTestBase.java:299)
        at 
org.apache.calcite.test.RelOptRulesTest.testIsNullPushDown2(RelOptRulesTest.java:3027)
{noformat}

> Wrong constant reduction over windows function
> ----------------------------------------------
>
>                 Key: CALCITE-2344
>                 URL: https://issues.apache.org/jira/browse/CALCITE-2344
>             Project: Calcite
>          Issue Type: Bug
>            Reporter: Laurent Goujon
>            Assignee: Laurent Goujon
>            Priority: Major
>
> {{RexUtil}} might incorrectly infer a IS NULL predicate would cause a 
> reference over a window function to return null, but a window function type 
> is never nullable.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to