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

Kurt Young updated FLINK-21592:
-------------------------------
    Affects Version/s: 1.12.2

> 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
>    Affects Versions: 1.12.2
>            Reporter: Rui Li
>            Assignee: Rui Li
>            Priority: Major
>              Labels: pull-request-available
>             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