Github user fhueske commented on a diff in the pull request:
https://github.com/apache/flink/pull/5555#discussion_r182773359
--- Diff:
flink-libraries/flink-table/src/main/scala/org/apache/flink/table/codegen/AggregationCodeGenerator.scala
---
@@ -417,13 +530,26 @@ class AggregationCodeGenerator(
.stripMargin
val create: String = {
for (i <- aggs.indices) yield {
- j"""
- | ${accTypes(i)} acc$i = (${accTypes(i)})
${aggs(i)}.createAccumulator();
- | ${genDataViewFieldSetter(s"acc$i", i)}
- | accs.setField(
- | $i,
- | acc$i);"""
- .stripMargin
+ if (isDistinctAggs(i)) {
+ j"""
+ | ${accTypes(i)} acc$i = (${accTypes(i)})
${aggs(i)}.createAccumulator();
+ | $distinctAccType distinctAcc$i = ($distinctAccType)
new org.apache.flink.table.
+ | functions.aggfunctions.DistinctAccumulator(acc$i);
+ | ${genDistinctDataViewFieldSetter(s"distinctAcc$i", i)}
--- End diff --
I think this and the `genAccDataViewFieldSetter` call (both from here and
the non-distinct case) can be removed.
---