From 40055d15b77721a5fe321dfdc28272991ca6c655 Mon Sep 17 00:00:00 2001 From: Andrew Lamb Date: Wed, 20 Mar 2024 13:28:45 -0400 Subject: [PATCH 1/3] Minor: return internal error rather than panic on unexpected error in COUNT DISTICT --- .../physical-expr/src/aggregate/count_distinct/mod.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/datafusion/physical-expr/src/aggregate/count_distinct/mod.rs b/datafusion/physical-expr/src/aggregate/count_distinct/mod.rs index fb5e7710496c5..a0081882d19b2 100644 --- a/datafusion/physical-expr/src/aggregate/count_distinct/mod.rs +++ b/datafusion/physical-expr/src/aggregate/count_distinct/mod.rs @@ -35,7 +35,7 @@ use arrow_array::types::{ TimestampSecondType, UInt16Type, UInt32Type, UInt64Type, UInt8Type, }; -use datafusion_common::{Result, ScalarValue}; +use datafusion_common::{internal_err, Result, ScalarValue}; use datafusion_expr::Accumulator; use crate::aggregate::count_distinct::bytes::BytesDistinctCountAccumulator; @@ -268,8 +268,11 @@ impl Accumulator for DistinctCountAccumulator { let array = &states[0]; let list_array = array.as_list::(); for inner_array in list_array.iter() { - let inner_array = inner_array - .expect("counts are always non null, so are intermediate results"); + let Some(inner_array) = inner_array else { + return internal_err!( + "intermediate results of count distinct should always be non0null" + ); + }; self.update_batch(&[inner_array])?; } Ok(()) From 9ccd41fab091a60cc657a2ea53e2635233b81b6f Mon Sep 17 00:00:00 2001 From: comphead Date: Wed, 20 Mar 2024 14:12:18 -0700 Subject: [PATCH 2/3] Update datafusion/physical-expr/src/aggregate/count_distinct/mod.rs --- datafusion/physical-expr/src/aggregate/count_distinct/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datafusion/physical-expr/src/aggregate/count_distinct/mod.rs b/datafusion/physical-expr/src/aggregate/count_distinct/mod.rs index a0081882d19b2..4e89c34208ea6 100644 --- a/datafusion/physical-expr/src/aggregate/count_distinct/mod.rs +++ b/datafusion/physical-expr/src/aggregate/count_distinct/mod.rs @@ -270,7 +270,7 @@ impl Accumulator for DistinctCountAccumulator { for inner_array in list_array.iter() { let Some(inner_array) = inner_array else { return internal_err!( - "intermediate results of count distinct should always be non0null" + "intermediate results of count distinct should always be non null" ); }; self.update_batch(&[inner_array])?; From ae7c8a5eca5d02186ebb6486a3cbb3bfffa324da Mon Sep 17 00:00:00 2001 From: Andrew Lamb Date: Thu, 21 Mar 2024 14:02:12 -0400 Subject: [PATCH 3/3] Update datafusion/physical-expr/src/aggregate/count_distinct/mod.rs Co-authored-by: comphead --- datafusion/physical-expr/src/aggregate/count_distinct/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/datafusion/physical-expr/src/aggregate/count_distinct/mod.rs b/datafusion/physical-expr/src/aggregate/count_distinct/mod.rs index 4e89c34208ea6..9c5605f495eab 100644 --- a/datafusion/physical-expr/src/aggregate/count_distinct/mod.rs +++ b/datafusion/physical-expr/src/aggregate/count_distinct/mod.rs @@ -270,7 +270,7 @@ impl Accumulator for DistinctCountAccumulator { for inner_array in list_array.iter() { let Some(inner_array) = inner_array else { return internal_err!( - "intermediate results of count distinct should always be non null" + "Intermediate results of COUNT DISTINCT should always be non null" ); }; self.update_batch(&[inner_array])?;