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

Reply via email to