This is an automated email from the ASF dual-hosted git repository.

alamb pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/datafusion.git


The following commit(s) were added to refs/heads/main by this push:
     new b412dbab89 Minor: Move Sum aggregate function test to slt (#10382)
b412dbab89 is described below

commit b412dbab894938d1c3cc732814b7975e47c26df7
Author: Jay Zhan <[email protected]>
AuthorDate: Sun May 5 21:13:34 2024 +0800

    Minor: Move Sum aggregate function test to slt (#10382)
    
    * move test to slt
    
    Signed-off-by: jayzhan211 <[email protected]>
    
    * remove sum distinct
    
    Signed-off-by: jayzhan211 <[email protected]>
    
    ---------
    
    Signed-off-by: jayzhan211 <[email protected]>
---
 datafusion/physical-expr/src/aggregate/sum.rs      | 111 -------------------
 .../physical-expr/src/aggregate/sum_distinct.rs    |  81 --------------
 datafusion/sqllogictest/test_files/aggregate.slt   | 121 +++++++++++++++++++++
 3 files changed, 121 insertions(+), 192 deletions(-)

diff --git a/datafusion/physical-expr/src/aggregate/sum.rs 
b/datafusion/physical-expr/src/aggregate/sum.rs
index f19be62bbc..2f34b02ed8 100644
--- a/datafusion/physical-expr/src/aggregate/sum.rs
+++ b/datafusion/physical-expr/src/aggregate/sum.rs
@@ -289,114 +289,3 @@ impl<T: ArrowNumericType> Accumulator for 
SlidingSumAccumulator<T> {
         true
     }
 }
-
-#[cfg(test)]
-mod tests {
-    use super::*;
-    use crate::expressions::tests::assert_aggregate;
-    use arrow_array::*;
-    use datafusion_expr::AggregateFunction;
-
-    #[test]
-    fn sum_decimal() {
-        // test agg
-        let array: ArrayRef = Arc::new(
-            (1..6)
-                .map(Some)
-                .collect::<Decimal128Array>()
-                .with_precision_and_scale(10, 0)
-                .unwrap(),
-        );
-
-        assert_aggregate(
-            array,
-            AggregateFunction::Sum,
-            false,
-            ScalarValue::Decimal128(Some(15), 20, 0),
-        );
-    }
-
-    #[test]
-    fn sum_decimal_with_nulls() {
-        // test agg
-        let array: ArrayRef = Arc::new(
-            (1..6)
-                .map(|i| if i == 2 { None } else { Some(i) })
-                .collect::<Decimal128Array>()
-                .with_precision_and_scale(35, 0)
-                .unwrap(),
-        );
-
-        assert_aggregate(
-            array,
-            AggregateFunction::Sum,
-            false,
-            ScalarValue::Decimal128(Some(13), 38, 0),
-        );
-    }
-
-    #[test]
-    fn sum_decimal_all_nulls() {
-        // test with batch
-        let array: ArrayRef = Arc::new(
-            std::iter::repeat::<Option<i128>>(None)
-                .take(6)
-                .collect::<Decimal128Array>()
-                .with_precision_and_scale(10, 0)
-                .unwrap(),
-        );
-
-        // test agg
-        assert_aggregate(
-            array,
-            AggregateFunction::Sum,
-            false,
-            ScalarValue::Decimal128(None, 20, 0),
-        );
-    }
-
-    #[test]
-    fn sum_i32() {
-        let a: ArrayRef = Arc::new(Int32Array::from(vec![1, 2, 3, 4, 5]));
-        assert_aggregate(a, AggregateFunction::Sum, false, 
ScalarValue::from(15i64));
-    }
-
-    #[test]
-    fn sum_i32_with_nulls() {
-        let a: ArrayRef = Arc::new(Int32Array::from(vec![
-            Some(1),
-            None,
-            Some(3),
-            Some(4),
-            Some(5),
-        ]));
-        assert_aggregate(a, AggregateFunction::Sum, false, 
ScalarValue::from(13i64));
-    }
-
-    #[test]
-    fn sum_i32_all_nulls() {
-        let a: ArrayRef = Arc::new(Int32Array::from(vec![None, None]));
-        assert_aggregate(a, AggregateFunction::Sum, false, 
ScalarValue::Int64(None));
-    }
-
-    #[test]
-    fn sum_u32() {
-        let a: ArrayRef =
-            Arc::new(UInt32Array::from(vec![1_u32, 2_u32, 3_u32, 4_u32, 
5_u32]));
-        assert_aggregate(a, AggregateFunction::Sum, false, 
ScalarValue::from(15u64));
-    }
-
-    #[test]
-    fn sum_f32() {
-        let a: ArrayRef =
-            Arc::new(Float32Array::from(vec![1_f32, 2_f32, 3_f32, 4_f32, 
5_f32]));
-        assert_aggregate(a, AggregateFunction::Sum, false, 
ScalarValue::from(15_f64));
-    }
-
-    #[test]
-    fn sum_f64() {
-        let a: ArrayRef =
-            Arc::new(Float64Array::from(vec![1_f64, 2_f64, 3_f64, 4_f64, 
5_f64]));
-        assert_aggregate(a, AggregateFunction::Sum, false, 
ScalarValue::from(15_f64));
-    }
-}
diff --git a/datafusion/physical-expr/src/aggregate/sum_distinct.rs 
b/datafusion/physical-expr/src/aggregate/sum_distinct.rs
index 09f3f9b498..a46c3d311e 100644
--- a/datafusion/physical-expr/src/aggregate/sum_distinct.rs
+++ b/datafusion/physical-expr/src/aggregate/sum_distinct.rs
@@ -200,84 +200,3 @@ impl<T: ArrowPrimitiveType> Accumulator for 
DistinctSumAccumulator<T> {
             + self.values.capacity() * std::mem::size_of::<T::Native>()
     }
 }
-
-#[cfg(test)]
-mod tests {
-    use super::*;
-    use crate::expressions::tests::assert_aggregate;
-    use arrow::array::*;
-    use datafusion_expr::AggregateFunction;
-
-    fn run_update_batch(
-        return_type: DataType,
-        arrays: &[ArrayRef],
-    ) -> Result<(Vec<ScalarValue>, ScalarValue)> {
-        let agg = DistinctSum::new(vec![], String::from("__col_name__"), 
return_type);
-
-        let mut accum = agg.create_accumulator()?;
-        accum.update_batch(arrays)?;
-
-        Ok((accum.state()?, accum.evaluate()?))
-    }
-
-    #[test]
-    fn sum_distinct_update_batch() -> Result<()> {
-        let array_int64: ArrayRef = Arc::new(Int64Array::from(vec![1, 1, 3]));
-        let arrays = vec![array_int64];
-        let (states, result) = run_update_batch(DataType::Int64, &arrays)?;
-
-        assert_eq!(states.len(), 1);
-        assert_eq!(result, ScalarValue::Int64(Some(4)));
-
-        Ok(())
-    }
-
-    #[test]
-    fn sum_distinct_i32_with_nulls() {
-        let array = Arc::new(Int32Array::from(vec![
-            Some(1),
-            Some(1),
-            None,
-            Some(2),
-            Some(2),
-            Some(3),
-        ]));
-        assert_aggregate(array, AggregateFunction::Sum, true, 6_i64.into());
-    }
-
-    #[test]
-    fn sum_distinct_u32_with_nulls() {
-        let array: ArrayRef = Arc::new(UInt32Array::from(vec![
-            Some(1_u32),
-            Some(1_u32),
-            Some(3_u32),
-            Some(3_u32),
-            None,
-        ]));
-        assert_aggregate(array, AggregateFunction::Sum, true, 4_u64.into());
-    }
-
-    #[test]
-    fn sum_distinct_f64() {
-        let array: ArrayRef =
-            Arc::new(Float64Array::from(vec![1_f64, 1_f64, 3_f64, 3_f64, 
3_f64]));
-        assert_aggregate(array, AggregateFunction::Sum, true, 4_f64.into());
-    }
-
-    #[test]
-    fn sum_distinct_decimal_with_nulls() {
-        let array: ArrayRef = Arc::new(
-            (1..6)
-                .map(|i| if i == 2 { None } else { Some(i % 2) })
-                .collect::<Decimal128Array>()
-                .with_precision_and_scale(35, 0)
-                .unwrap(),
-        );
-        assert_aggregate(
-            array,
-            AggregateFunction::Sum,
-            true,
-            ScalarValue::Decimal128(Some(1), 38, 0),
-        );
-    }
-}
diff --git a/datafusion/sqllogictest/test_files/aggregate.slt 
b/datafusion/sqllogictest/test_files/aggregate.slt
index 7e4826cd10..933bbb4b63 100644
--- a/datafusion/sqllogictest/test_files/aggregate.slt
+++ b/datafusion/sqllogictest/test_files/aggregate.slt
@@ -1625,7 +1625,53 @@ select mean(c1) from test
 ----
 1.75
 
+# aggregate sum distinct, coerced result from i32 to i64
+statement ok
+create table t (c int) as values (1), (2), (1), (3), (null), (null), (-3), 
(-3);
+
+query IT
+select sum(distinct c), arrow_typeof(sum(distinct c)) from t;
+----
+3 Int64
+
+statement ok
+drop table t;
+
+# aggregate sum distinct, coerced result from u32 to u64
+statement ok
+create table t (c int unsigned) as values (1), (2), (1), (3), (null), (null), 
(3);
+
+query IT
+select sum(distinct c), arrow_typeof(sum(distinct c)) from t;
+----
+6 UInt64
+
+statement ok
+drop table t;
 
+# aggregate sum distinct, coerced result from f32 to f64
+statement ok
+create table t (c float) as values (1.0), (2.2), (1.0), (3.3), (null), (null), 
(3.3), (-2.0);
+
+query RT
+select sum(distinct c), arrow_typeof(sum(distinct c)) from t;
+----
+4.5 Float64
+
+statement ok
+drop table t;
+
+# aggregate sum distinct with decimal
+statement ok
+create table t (c decimal(35, 0)) as values (1), (2), (1), (3), (null), 
(null), (3), (-2);
+
+query RT
+select sum(distinct c), arrow_typeof(sum(distinct c)) from t;
+----
+4 Decimal128(38, 0)
+
+statement ok
+drop table t;
 
 # query_sum_distinct - 2 different aggregate functions: avg and sum(distinct)
 query RI
@@ -2316,6 +2362,81 @@ select sum(c1), arrow_typeof(sum(c1)) from d_table;
 ----
 100 Decimal128(20, 3)
 
+# aggregate sum with deciaml
+statement ok
+create table t (c decimal(35, 3)) as values (10), (null), (20);
+
+query RT
+select sum(c), arrow_typeof(sum(c)) from t;
+----
+30 Decimal128(38, 3)
+
+statement ok
+drop table t;
+
+# aggregate sum with i32, sum coerced result to i64
+statement ok
+create table t (c int) as values (1), (-1), (10), (null), (-11);
+
+query IT
+select sum(c), arrow_typeof(sum(c)) from t;
+----
+-1 Int64
+
+statement ok
+drop table t;
+
+# aggregate sum with all nulls
+statement ok
+create table t (c1 decimal(10, 0), c2 int) as values (null, null), (null, 
null), (null, null);
+
+query RTIT
+select 
+  sum(c1), arrow_typeof(sum(c1)),
+  sum(c2), arrow_typeof(sum(c2))
+from t;
+----
+NULL Decimal128(20, 0) NULL Int64
+
+statement ok
+drop table t;
+
+# aggregate sum with u32, sum coerced result to u64
+statement ok
+create table t (c int unsigned) as values (1), (0), (10), (null), (4);
+
+query IT
+select sum(c), arrow_typeof(sum(c)) from t;
+----
+15 UInt64
+
+statement ok
+drop table t;
+
+# aggregate sum with f32, sum coerced result to f64
+statement ok
+create table t (c float) as values (1.2), (0.2), (-1.2), (null), (-1.0);
+
+query RT
+select sum(c), arrow_typeof(sum(c)) from t;
+----
+-0.79999999702 Float64
+
+statement ok
+drop table t;
+
+# aggregate sum with f64
+statement ok
+create table t (c double) as values (1.2), (0.2), (-1.2), (null), (-1.0);
+
+query RT
+select sum(c), arrow_typeof(sum(c)) from t;
+----
+-0.8 Float64
+
+statement ok
+drop table t;
+
 query TRT
 select c2, sum(c1), arrow_typeof(sum(c1)) from d_table GROUP BY c2 ORDER BY c2;
 ----


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to