[ 
https://issues.apache.org/jira/browse/FLINK-21592?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rui Li updated FLINK-21592:
---------------------------
    Description: 
The test case to reproduce the issue:
{code}
    @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"));
    }
{code}
Error stack trace is:
{noformat}
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)
{noformat}

  was:
The test case to reproduce the issue:
{code}
    @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"));
    }
{code}


> RemoveSingleAggregateRule fails due to nullability mismatch
> -----------------------------------------------------------
>
>                 Key: FLINK-21592
>                 URL: https://issues.apache.org/jira/browse/FLINK-21592
>             Project: Flink
>          Issue Type: Bug
>          Components: Table SQL / Planner
>            Reporter: Rui Li
>            Priority: Major
>             Fix For: 1.13.0
>
>
> The test case to reproduce the issue:
> {code}
>     @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"));
>     }
> {code}
> Error stack trace is:
> {noformat}
> 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)
> {noformat}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to