tartarus created FLINK-22455: -------------------------------- Summary: FlinkRelBuilder#windowAggregate will throw ClassCastException when function reuse Key: FLINK-22455 URL: https://issues.apache.org/jira/browse/FLINK-22455 Project: Flink Issue Type: Bug Components: Table SQL / Planner Reporter: tartarus Attachments: FlinkRelBuilderTest.scala
If the input parameter aggCalls of FlinkRelBuilder#windowAggregate contains the same aggregate function. Then it will throw ClassCastException, because of the optimization of aggregate function reuse. We did not judge the return value type, but direct type conversion; {code:java} val aggregate = super.transform( new UnaryOperator[RelBuilder.Config] { override def apply(t: RelBuilder.Config) : RelBuilder.Config = t.withPruneInputOfAggregate(false) }) .push(build()) .aggregate(groupKey, aggCalls) .build() .asInstanceOf[LogicalAggregate] {code} I wrote a test that triggered this problem. You can use the attached code to reproduce this problem. -- This message was sent by Atlassian Jira (v8.3.4#803005)