xuyang created FLINK-33489: ------------------------------ Summary: LISTAGG with generating partial-final agg will case wrong result Key: FLINK-33489 URL: https://issues.apache.org/jira/browse/FLINK-33489 Project: Flink Issue Type: Bug Components: Table SQL / Planner Affects Versions: 1.18.0, 1.17.0, 1.16.0, 1.15.0, 1.14.0, 1.13.0, 1.12.0, 1.11.0, 1.10.0, 1.9.0 Reporter: xuyang
Adding the following test cases in SplitAggregateITCase will reproduce this bug: {code:java} // code placeholder @Test def testListAggWithDistinctMultiArgs(): Unit = { val t1 = tEnv.sqlQuery(s""" |SELECT | a, | LISTAGG(DISTINCT c, '#') |FROM T |GROUP BY a """.stripMargin) val sink = new TestingRetractSink t1.toRetractStream[Row].addSink(sink) env.execute() val expected = Map[String, List[String]]( "1" -> List("Hello 0", "Hello 1"), "2" -> List("Hello 0", "Hello 1", "Hello 2", "Hello 3", "Hello 4"), "3" -> List("Hello 0", "Hello 1"), "4" -> List("Hello 1", "Hello 2", "Hello 3") ) val actualData = sink.getRetractResults.sorted println(actualData) } {code} The `actualData` is `List(1,Hello 0,Hello 1, 2,Hello 2,Hello 4,Hello 3,Hello 1,Hello 0, 3,Hello 1,Hello 0, 4,Hello 2,Hello 3,Hello 1)`, and the delimiter `#` will be ignored. Let's take its plan: {code:java} // code placeholder LegacySink(name=[DataStreamTableSink], fields=[a, EXPR$1]) +- GroupAggregate(groupBy=[a], partialFinalType=[FINAL], select=[a, LISTAGG_RETRACT($f3_0) AS $f1]) +- Exchange(distribution=[hash[a]]) +- GroupAggregate(groupBy=[a, $f3, $f4], partialFinalType=[PARTIAL], select=[a, $f3, $f4, LISTAGG(DISTINCT c, $f2) AS $f3_0]) +- Exchange(distribution=[hash[a, $f3, $f4]]) +- Calc(select=[a, c, _UTF-16LE'#' AS $f2, MOD(HASH_CODE(c), 1024) AS $f3, MOD(HASH_CODE(_UTF-16LE'#'), 1024) AS $f4]) +- MiniBatchAssigner(interval=[1000ms], mode=[ProcTime]) +- DataStreamScan(table=[[default_catalog, default_database, T]], fields=[a, b, c]) {code} The final `GroupAggregate` missing the delimiter args, and the default delimiter `,` will be used. -- This message was sent by Atlassian Jira (v8.20.10#820010)