Uploaded image for project: 'Flink'
  1. Flink
  2. FLINK-21592

RemoveSingleAggregateRule fails due to nullability mismatch

    XMLWordPrintableJSON

Details

    Description

      The test case to reproduce the issue:

          @Test
          public void test() throws Exception {
              tableEnv.executeSql("create table foo(x int,y int)");
              tableEnv.executeSql("create table bar(i int,s string)");
              System.out.println(tableEnv.explainSql("select (select count(x)-1 from foo where foo.y=bar.i) from bar"));
          }
      

      Error stack trace is:

      java.lang.AssertionError: Cannot add expression of different type to set:
      set type is RecordType(BIGINT NOT NULL $f0) NOT NULL
      expression type is RecordType(BIGINT $f0) NOT NULL
      set is rel#94:LogicalAggregate.NONE.any.[](input=HepRelVertex#93,group={},agg#0=SINGLE_VALUE($0))
      expression is LogicalProject($f0=[CAST(-($0, 1)):BIGINT])
        LogicalAggregate(group=[{}], agg#0=[COUNT($0)])
          LogicalProject(x=[$0])
            LogicalFilter(condition=[=($1, $cor0.i)])
              LogicalTableScan(table=[[test-catalog, default, foo]])
      
      
      	at org.apache.calcite.plan.RelOptUtil.verifyTypeEquivalence(RelOptUtil.java:381)
      	at org.apache.calcite.plan.hep.HepRuleCall.transformTo(HepRuleCall.java:58)
      	at org.apache.calcite.plan.RelOptRuleCall.transformTo(RelOptRuleCall.java:268)
      	at org.apache.calcite.plan.RelOptRuleCall.transformTo(RelOptRuleCall.java:283)
      	at org.apache.calcite.sql2rel.RelDecorrelator$RemoveSingleAggregateRule.onMatch(RelDecorrelator.java:1881)
      	at org.apache.calcite.plan.AbstractRelOptPlanner.fireRule(AbstractRelOptPlanner.java:333)
      	at org.apache.calcite.plan.hep.HepPlanner.applyRule(HepPlanner.java:542)
      	at org.apache.calcite.plan.hep.HepPlanner.applyRules(HepPlanner.java:407)
      	at org.apache.calcite.plan.hep.HepPlanner.executeInstruction(HepPlanner.java:243)
      	at org.apache.calcite.plan.hep.HepInstruction$RuleInstance.execute(HepInstruction.java:127)
      	at org.apache.calcite.plan.hep.HepPlanner.executeProgram(HepPlanner.java:202)
      	at org.apache.calcite.plan.hep.HepPlanner.findBestExp(HepPlanner.java:189)
      	at org.apache.calcite.sql2rel.RelDecorrelator.removeCorrelationViaRule(RelDecorrelator.java:346)
      	at org.apache.calcite.sql2rel.RelDecorrelator.decorrelateQuery(RelDecorrelator.java:192)
      	at org.apache.calcite.sql2rel.RelDecorrelator.decorrelateQuery(RelDecorrelator.java:169)
      	at org.apache.flink.table.planner.plan.optimize.program.FlinkDecorrelateProgram.optimize(FlinkDecorrelateProgram.scala:41)
      

      Attachments

        Issue Links

          Activity

            People

              lirui Rui Li
              lirui Rui Li
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: