leung-ming commented on code in PR #1922: URL: https://github.com/apache/datafusion-comet/pull/1922#discussion_r2165657752
########## native/spark-expr/src/agg_funcs/sum_decimal.rs: ########## @@ -375,11 +375,17 @@ impl GroupsAccumulator for SumDecimalGroupsAccumulator { // are null, in this case we'll return null // 2. if `is_empty` is false, but `null_state` is true, it means there's an overflow. In // non-ANSI mode Spark returns null. + let result = emit_to.take_needed(&mut self.sum); + result.iter().enumerate().for_each(|(i, &v)| { Review Comment: Partial aggregate. Use the test as example: When 42 and 9*9 are parted. ```rust part_1.update(42) // ok, 42 part_2.update(9*9) // ok, 9*9 // gather exchange final.merge(part_1); final.merge(part_2) // overflow without setting nulls final.evaluate() // overflowed value returned, spark throw ``` BTW, when 42 and 9*9 are not parted, sum will work, but avg will fail, I am not yet put it to test though. ```rust avg.update(42) // ok, 42 avg.update(9*9) // new_sum overflow, sum is still 42, count is 2 and null bit is set avg.evaluate() // the evaluate of avg without checking the null bit, yielding 21 ``` There maybe other issues in avg, to be fixed later with #1893 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org For additional commands, e-mail: github-h...@datafusion.apache.org