jinfeng created FLINK-27519:
-------------------------------
Summary: Fix duplicates names when there are multiple levels of
over window aggregate
Key: FLINK-27519
URL: https://issues.apache.org/jira/browse/FLINK-27519
Project: Flink
Issue Type: Bug
Components: Table SQL / Planner
Affects Versions: 1.15.0
Reporter: jinfeng
A similar issue like
[FLINK-22121|https://issues.apache.org/jira/browse/FLINK-22121]
And can be reproduced by adding this unit test
org.apache.flink.table.planner.plan.stream.sql.agg.GroupWindowTest#testWindowAggregateWithAnotherWindowAggregate
{code:java}
//代码占位符
@Test
def testWindowAggregateWithAnotherWindowAggregate(): Unit = {
val sql =
"""
|SELECT CAST(pv AS INT) AS pv, CAST(uv AS INT) AS uv FROM (
| SELECT *, count(distinct(c)) over (partition by a order by b desc) AS
uv
| FROM (
| SELECT *, count(*) over (partition by a, c order by b desc) AS pv
| FROM MyTable
| )
|)
|""".stripMargin
util.verifyExecPlan(sql)
} {code}
The error message :
{code:java}
//代码占位符
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:663)
at
org.apache.flink.table.planner.plan.nodes.physical.stream.StreamPhysicalOverAggregate.translateToExecNode(StreamPhysicalOverAggregate.scala:57)
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:71)
{code}
I think we can add come logical in FlinkLogicalOverAggregate to avoid
duplicate names of output rowType.
--
This message was sent by Atlassian Jira
(v8.20.7#820007)