lincoln lee created FLINK-35976: ----------------------------------- Summary: StreamPhysicalOverAggregate should handle column name confliction Key: FLINK-35976 URL: https://issues.apache.org/jira/browse/FLINK-35976 Project: Flink Issue Type: Bug Components: Table SQL / Planner Affects Versions: 1.19.1, 1.20.0 Reporter: lincoln lee Assignee: lincoln lee Fix For: 2.0.0
Duplicate column name exception occurred when use a nested over aggregate query, e.g., a repro case: {code} @Test def testNestedOverAgg(): Unit = { util.addTable(s""" |CREATE TEMPORARY TABLE src ( | a STRING, | b STRING, | ts TIMESTAMP_LTZ(3), | watermark FOR ts as ts |) WITH ( | 'connector' = 'values' |) |""".stripMargin) util.verifyExecPlan(s""" |SELECT * |FROM ( | SELECT | *, count(*) OVER (PARTITION BY a ORDER BY ts) AS c2 | FROM ( | SELECT | *, count(*) OVER (PARTITION BY a,b ORDER BY ts) AS c1 | FROM src | ) |) |""".stripMargin) } {code} {code} org.apache.flink.table.api.ValidationException: Field names must be unique. Found duplicates: [w0$o0] at org.apache.flink.table.types.logical.RowType.validateFields(RowType.java:273) at org.apache.flink.table.types.logical.RowType.<init>(RowType.java:158) at org.apache.flink.table.types.logical.RowType.of(RowType.java:298) at org.apache.flink.table.types.logical.RowType.of(RowType.java:290) at org.apache.flink.table.planner.calcite.FlinkTypeFactory$.toLogicalRowType(FlinkTypeFactory.scala:678) at org.apache.flink.table.planner.plan.nodes.physical.stream.StreamPhysicalOverAggregate.translateToExecNode(StreamPhysicalOverAggregate.scala:57) at org.apache.flink.table.planner.plan.nodes.physical.FlinkPhysicalRel.translateToExecNode(FlinkPhysicalRel.scala:53) at org.apache.flink.table.planner.plan.nodes.physical.FlinkPhysicalRel.translateToExecNode$(FlinkPhysicalRel.scala:52) at org.apache.flink.table.planner.plan.nodes.physical.stream.StreamPhysicalOverAggregateBase.translateToExecNode(StreamPhysicalOverAggregateBase.scala:35) at org.apache.flink.table.planner.plan.nodes.exec.ExecNodeGraphGenerator.generate(ExecNodeGraphGenerator.java:74) at org.apache.flink.table.planner.plan.nodes.exec.ExecNodeGraphGenerator.generate(ExecNodeGraphGenerator.java:54) at org.apache.flink.table.planner.delegation.PlannerBase.translateToExecNodeGraph(PlannerBase.scala:407) at org.apache.flink.table.planner.utils.TableTestUtilBase.assertPlanEquals(TableTestBase.scala:1076) at org.apache.flink.table.planner.utils.TableTestUtilBase.doVerifyPlan(TableTestBase.scala:920) at org.apache.flink.table.planner.utils.TableTestUtilBase.verifyExecPlan(TableTestBase.scala:675) at org.apache.flink.table.planner.plan.stream.sql.agg.OverAggregateTest.testNestedOverAgg(OverAggregateTest.scala:460) {code} This is a similar case In https://issues.apache.org/jira/browse/FLINK-22121, but missed the fixing in streaming over agg scenario. -- This message was sent by Atlassian Jira (v8.20.10#820010)