Github user walterddr commented on a diff in the pull request: https://github.com/apache/flink/pull/5555#discussion_r183222353 --- Diff: flink-libraries/flink-table/src/main/scala/org/apache/flink/table/codegen/AggregationCodeGenerator.scala --- @@ -327,19 +392,41 @@ class AggregationCodeGenerator( for (i <- aggs.indices) yield if (partialResults) { - j""" - | output.setField( - | ${aggMapping(i)}, - | (${accTypes(i)}) accs.getField($i));""".stripMargin + if (isDistinctAggs(i)) { + + j""" + | $distinctAccType distinctAcc$i = ($distinctAccType) accs.getField($i); + | output.setField( + | ${aggMapping(i)}, + | (${accTypes(i)}) distinctAcc$i.getRealAcc());""".stripMargin + } else { + j""" + | output.setField( + | ${aggMapping(i)}, + | (${accTypes(i)}) accs.getField($i));""".stripMargin + } } else { - j""" - | org.apache.flink.table.functions.AggregateFunction baseClass$i = - | (org.apache.flink.table.functions.AggregateFunction) ${aggs(i)}; - | ${accTypes(i)} acc$i = (${accTypes(i)}) accs.getField($i); - | ${genDataViewFieldSetter(s"acc$i", i)} - | output.setField( - | ${aggMapping(i)}, - | baseClass$i.getValue(acc$i));""".stripMargin + if (isDistinctAggs(i)) { + j""" + | org.apache.flink.table.functions.AggregateFunction baseClass$i = + | (org.apache.flink.table.functions.AggregateFunction) ${aggs(i)}; + | $distinctAccType distinctAcc$i = ($distinctAccType) accs.getField($i); + | ${genDistinctDataViewFieldSetter(s"distinctAcc$i", i)} + | ${accTypes(i)} acc$i = (${accTypes(i)}) distinctAcc$i.getRealAcc(); + | ${genAccDataViewFieldSetter(s"acc$i", i)} + | output.setField( + | ${aggMapping(i)}, + | baseClass$i.getValue(acc$i));""".stripMargin + } else { --- End diff -- yeah, that's true. it will avoid a lot of typo possibility as well. +1
---