[ https://issues.apache.org/jira/browse/FLINK-3971?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15324694#comment-15324694 ]
ASF GitHub Bot commented on FLINK-3971: --------------------------------------- Github user fhueske commented on a diff in the pull request: https://github.com/apache/flink/pull/2049#discussion_r66638756 --- Diff: flink-libraries/flink-table/src/main/scala/org/apache/flink/api/table/runtime/aggregate/SumAggregate.scala --- @@ -27,13 +27,21 @@ abstract class SumAggregate[T: Numeric] protected var sumIndex: Int = _ override def initiate(partial: Row): Unit = { - partial.setField(sumIndex, numeric.zero) + partial.setField(sumIndex, null.asInstanceOf[T]) } override def merge(partial1: Row, buffer: Row): Unit = { val partialValue = partial1.productElement(sumIndex).asInstanceOf[T] val bufferValue = buffer.productElement(sumIndex).asInstanceOf[T] - buffer.setField(sumIndex, numeric.plus(partialValue, bufferValue)) + if (partialValue == null && bufferValue == null) { --- End diff -- Please reorder `if else` cases as in `MaxAggregate` > Aggregates handle null values incorrectly. > ------------------------------------------ > > Key: FLINK-3971 > URL: https://issues.apache.org/jira/browse/FLINK-3971 > Project: Flink > Issue Type: Bug > Components: Table API > Affects Versions: 1.1.0 > Reporter: Fabian Hueske > Assignee: GaoLun > Priority: Critical > Fix For: 1.1.0 > > > Table API and SQL aggregates are supposed to ignore null values, e.g., > {{sum(1,2,null,4)}} is supposed to return {{7}}. > There current implementation is correct if at least one valid value is > present however, is incorrect if only null values are aggregated. {{sum(null, > null, null)}} should return {{null}} instead of {{0}} > Currently only the Count aggregate handles the case of null-values-only > correctly. -- This message was sent by Atlassian JIRA (v6.3.4#6332)