Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 12 additions & 6 deletions vortex-array/src/aggregate_fn/fns/sum/bool.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,54 +52,59 @@ mod tests {

#[test]
fn sum_bool_all_true() -> VortexResult<()> {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let arr: BoolArray = [true, true, true].into_iter().collect();
let result = sum(
&arr.into_array(),
&mut LEGACY_SESSION.create_execution_ctx(),
&mut ctx,
)?;
assert_eq!(result.as_primitive().typed_value::<u64>(), Some(3));
Ok(())
}

#[test]
fn sum_bool_mixed() -> VortexResult<()> {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let arr: BoolArray = [true, false, true, false, true].into_iter().collect();
let result = sum(
&arr.into_array(),
&mut LEGACY_SESSION.create_execution_ctx(),
&mut ctx,
)?;
assert_eq!(result.as_primitive().typed_value::<u64>(), Some(3));
Ok(())
}

#[test]
fn sum_bool_all_false() -> VortexResult<()> {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let arr: BoolArray = [false, false, false].into_iter().collect();
let result = sum(
&arr.into_array(),
&mut LEGACY_SESSION.create_execution_ctx(),
&mut ctx,
)?;
assert_eq!(result.as_primitive().typed_value::<u64>(), Some(0));
Ok(())
}

#[test]
fn sum_bool_with_nulls() -> VortexResult<()> {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let arr = BoolArray::from_iter([Some(true), None, Some(true), Some(false)]);
let result = sum(
&arr.into_array(),
&mut LEGACY_SESSION.create_execution_ctx(),
&mut ctx,
)?;
assert_eq!(result.as_primitive().typed_value::<u64>(), Some(2));
Ok(())
}

#[test]
fn sum_bool_all_null() -> VortexResult<()> {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let arr = BoolArray::from_iter([None::<bool>, None, None]);
let result = sum(
&arr.into_array(),
&mut LEGACY_SESSION.create_execution_ctx(),
&mut ctx,
)?;
assert_eq!(result.as_primitive().typed_value::<u64>(), Some(0));
Ok(())
Expand Down Expand Up @@ -143,8 +148,9 @@ mod tests {

#[test]
fn sum_boolean_from_iter() -> VortexResult<()> {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let arr = BoolArray::from_iter([true, false, false, true]).into_array();
let result = sum(&arr, &mut LEGACY_SESSION.create_execution_ctx())?;
let result = sum(&arr, &mut ctx)?;
assert_eq!(result.as_primitive().as_::<i32>(), Some(2));
Ok(())
}
Expand Down
27 changes: 18 additions & 9 deletions vortex-array/src/aggregate_fn/fns/sum/constant.rs
Original file line number Diff line number Diff line change
Expand Up @@ -108,55 +108,62 @@ mod tests {

#[test]
fn sum_constant_unsigned() -> VortexResult<()> {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let array = ConstantArray::new(5u64, 10).into_array();
let result = sum(&array, &mut LEGACY_SESSION.create_execution_ctx())?;
let result = sum(&array, &mut ctx)?;
assert_eq!(result, 50u64.into());
Ok(())
}

#[test]
fn sum_constant_signed() -> VortexResult<()> {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let array = ConstantArray::new(-5i64, 10).into_array();
let result = sum(&array, &mut LEGACY_SESSION.create_execution_ctx())?;
let result = sum(&array, &mut ctx)?;
assert_eq!(result, (-50i64).into());
Ok(())
}

#[test]
fn sum_constant_nullable_value() -> VortexResult<()> {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let array = ConstantArray::new(Scalar::null(DType::Primitive(PType::U32, Nullable)), 10)
.into_array();
let result = sum(&array, &mut LEGACY_SESSION.create_execution_ctx())?;
let result = sum(&array, &mut ctx)?;
assert_eq!(result, Scalar::primitive(0u64, Nullable));
Ok(())
}

#[test]
fn sum_constant_bool_false() -> VortexResult<()> {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let array = ConstantArray::new(false, 10).into_array();
let result = sum(&array, &mut LEGACY_SESSION.create_execution_ctx())?;
let result = sum(&array, &mut ctx)?;
assert_eq!(result, 0u64.into());
Ok(())
}

#[test]
fn sum_constant_bool_true() -> VortexResult<()> {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let array = ConstantArray::new(true, 10).into_array();
let result = sum(&array, &mut LEGACY_SESSION.create_execution_ctx())?;
let result = sum(&array, &mut ctx)?;
assert_eq!(result, 10u64.into());
Ok(())
}

#[test]
fn sum_constant_bool_null() -> VortexResult<()> {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let array = ConstantArray::new(Scalar::null(DType::Bool(Nullable)), 10).into_array();
let result = sum(&array, &mut LEGACY_SESSION.create_execution_ctx())?;
let result = sum(&array, &mut ctx)?;
assert_eq!(result, Scalar::primitive(0u64, Nullable));
Ok(())
}

#[test]
fn sum_constant_decimal() -> VortexResult<()> {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let decimal_dtype = DecimalDType::new(10, 2);
let array = ConstantArray::new(
Scalar::decimal(
Expand All @@ -168,7 +175,7 @@ mod tests {
)
.into_array();

let result = sum(&array, &mut LEGACY_SESSION.create_execution_ctx())?;
let result = sum(&array, &mut ctx)?;

assert_eq!(
result.as_decimal().decimal_value(),
Expand All @@ -180,11 +187,12 @@ mod tests {

#[test]
fn sum_constant_decimal_null() -> VortexResult<()> {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let decimal_dtype = DecimalDType::new(10, 2);
let array = ConstantArray::new(Scalar::null(DType::Decimal(decimal_dtype, Nullable)), 10)
.into_array();

let result = sum(&array, &mut LEGACY_SESSION.create_execution_ctx())?;
let result = sum(&array, &mut ctx)?;
assert_eq!(
result,
Scalar::decimal(
Expand All @@ -198,6 +206,7 @@ mod tests {

#[test]
fn sum_constant_decimal_large_value() -> VortexResult<()> {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let decimal_dtype = DecimalDType::new(10, 2);
let array = ConstantArray::new(
Scalar::decimal(
Expand All @@ -209,7 +218,7 @@ mod tests {
)
.into_array();

let result = sum(&array, &mut LEGACY_SESSION.create_execution_ctx())?;
let result = sum(&array, &mut ctx)?;
assert_eq!(
result.as_decimal().decimal_value(),
Some(DecimalValue::I256(i256::from_i128(99_999_999_900)))
Expand Down
30 changes: 20 additions & 10 deletions vortex-array/src/aggregate_fn/fns/sum/decimal.rs
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@ mod tests {

#[test]
fn sum_decimal_basic() -> VortexResult<()> {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let decimal = DecimalArray::new(
buffer![100i32, 200i32, 300i32],
DecimalDType::new(4, 2),
Expand All @@ -139,7 +140,7 @@ mod tests {

let result = sum(
&decimal.into_array(),
&mut LEGACY_SESSION.create_execution_ctx(),
&mut ctx,
)?;

let expected = Scalar::try_new(
Expand All @@ -153,6 +154,7 @@ mod tests {

#[test]
fn sum_decimal_with_nulls() -> VortexResult<()> {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let decimal = DecimalArray::new(
buffer![100i32, 200i32, 300i32, 400i32],
DecimalDType::new(4, 2),
Expand All @@ -161,7 +163,7 @@ mod tests {

let result = sum(
&decimal.into_array(),
&mut LEGACY_SESSION.create_execution_ctx(),
&mut ctx,
)?;

let expected = Scalar::try_new(
Expand All @@ -175,6 +177,7 @@ mod tests {

#[test]
fn sum_decimal_negative_values() -> VortexResult<()> {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let decimal = DecimalArray::new(
buffer![100i32, -200i32, 300i32, -50i32],
DecimalDType::new(4, 2),
Expand All @@ -183,7 +186,7 @@ mod tests {

let result = sum(
&decimal.into_array(),
&mut LEGACY_SESSION.create_execution_ctx(),
&mut ctx,
)?;

let expected = Scalar::try_new(
Expand All @@ -197,6 +200,7 @@ mod tests {

#[test]
fn sum_decimal_near_i32_max() -> VortexResult<()> {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let near_max = i32::MAX - 1000;
let decimal = DecimalArray::new(
buffer![near_max, 500i32, 400i32],
Expand All @@ -206,7 +210,7 @@ mod tests {

let result = sum(
&decimal.into_array(),
&mut LEGACY_SESSION.create_execution_ctx(),
&mut ctx,
)?;

let expected_sum = near_max as i64 + 500 + 400;
Expand All @@ -221,6 +225,7 @@ mod tests {

#[test]
fn sum_decimal_large_i64_values() -> VortexResult<()> {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let large_val = i64::MAX / 4;
let decimal = DecimalArray::new(
buffer![large_val, large_val, large_val, large_val + 1],
Expand All @@ -230,7 +235,7 @@ mod tests {

let result = sum(
&decimal.into_array(),
&mut LEGACY_SESSION.create_execution_ctx(),
&mut ctx,
)?;

let expected_sum = (large_val as i128) * 4 + 1;
Expand All @@ -245,6 +250,7 @@ mod tests {

#[test]
fn sum_decimal_preserves_scale() -> VortexResult<()> {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let decimal = DecimalArray::new(
buffer![12345i32, 67890i32, 11111i32],
DecimalDType::new(6, 4),
Expand All @@ -253,7 +259,7 @@ mod tests {

let result = sum(
&decimal.into_array(),
&mut LEGACY_SESSION.create_execution_ctx(),
&mut ctx,
)?;

let expected = Scalar::try_new(
Expand All @@ -267,12 +273,13 @@ mod tests {

#[test]
fn sum_decimal_single_value() -> VortexResult<()> {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let decimal =
DecimalArray::new(buffer![42i32], DecimalDType::new(3, 1), Validity::AllValid);

let result = sum(
&decimal.into_array(),
&mut LEGACY_SESSION.create_execution_ctx(),
&mut ctx,
)?;

let expected = Scalar::try_new(
Expand All @@ -286,6 +293,7 @@ mod tests {

#[test]
fn sum_decimal_all_nulls_except_one() -> VortexResult<()> {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let decimal = DecimalArray::new(
buffer![100i32, 200i32, 300i32, 400i32],
DecimalDType::new(4, 2),
Expand All @@ -294,7 +302,7 @@ mod tests {

let result = sum(
&decimal.into_array(),
&mut LEGACY_SESSION.create_execution_ctx(),
&mut ctx,
)?;

let expected = Scalar::try_new(
Expand All @@ -308,6 +316,7 @@ mod tests {

#[test]
fn sum_decimal_overflow_detection() -> VortexResult<()> {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let max_val = i128::MAX / 2;
let decimal = DecimalArray::new(
buffer![max_val, max_val, max_val],
Expand All @@ -317,7 +326,7 @@ mod tests {

let result = sum(
&decimal.into_array(),
&mut LEGACY_SESSION.create_execution_ctx(),
&mut ctx,
)?;

let expected_sum =
Expand All @@ -333,6 +342,7 @@ mod tests {

#[test]
fn sum_decimal_i256_overflow() -> VortexResult<()> {
let mut ctx = LEGACY_SESSION.create_execution_ctx();
let decimal_dtype = DecimalDType::new(76, 0);
let decimal = DecimalArray::new(
buffer![i256::MAX, i256::MAX, i256::MAX],
Expand All @@ -343,7 +353,7 @@ mod tests {
assert_eq!(
sum(
&decimal.into_array(),
&mut LEGACY_SESSION.create_execution_ctx()
&mut ctx
)
.vortex_expect("operation should succeed in test"),
Scalar::null(DType::Decimal(decimal_dtype, Nullable))
Expand Down
Loading
Loading