Skip to content

Commit 909e224

Browse files
committed
fix: Decimal sum is checked
Signed-off-by: Robert Kruszewski <[email protected]>
1 parent 32d0834 commit 909e224

File tree

1 file changed

+5
-3
lines changed
  • vortex-array/src/arrays/decimal/compute

1 file changed

+5
-3
lines changed

vortex-array/src/arrays/decimal/compute/sum.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use arrow_schema::DECIMAL256_MAX_PRECISION;
55
use num_traits::AsPrimitive;
66
use vortex_dtype::Nullability::Nullable;
77
use vortex_dtype::{DecimalDType, DecimalType, match_each_decimal_value_type};
8-
use vortex_error::{VortexResult, vortex_bail};
8+
use vortex_error::{VortexResult, vortex_bail, vortex_err};
99
use vortex_mask::Mask;
1010
use vortex_scalar::{DecimalValue, Scalar};
1111

@@ -19,7 +19,8 @@ macro_rules! sum_decimal {
1919
let mut sum: $ty = <$ty>::default();
2020
for v in $values.iter() {
2121
let v: $ty = (*v).as_();
22-
sum += v;
22+
sum = num_traits::CheckedAdd::checked_add(&sum, &v)
23+
.ok_or_else(|| vortex_err!("Overflow when summing decimal {sum:?} + {v:?}"))?
2324
}
2425
sum
2526
}};
@@ -30,7 +31,8 @@ macro_rules! sum_decimal {
3031
for (v, valid) in $values.iter().zip_eq($validity) {
3132
if valid {
3233
let v: $ty = (*v).as_();
33-
sum += v;
34+
sum = num_traits::CheckedAdd::checked_add(&sum, &v)
35+
.ok_or_else(|| vortex_err!("Overflow when summing decimal {sum:?} + {v:?}"))?
3436
}
3537
}
3638
sum

0 commit comments

Comments
 (0)