You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by al...@apache.org on 2023/03/20 13:15:11 UTC
[arrow-datafusion] branch main updated: Median returns null on empty input instead of error (#5624)
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/arrow-datafusion.git
The following commit(s) were added to refs/heads/main by this push:
new dc89c9b09 Median returns null on empty input instead of error (#5624)
dc89c9b09 is described below
commit dc89c9b0991de47cf70b60fed5fd5253996e6233
Author: toppyy <43...@users.noreply.github.com>
AuthorDate: Mon Mar 20 15:15:03 2023 +0200
Median returns null on empty input instead of error (#5624)
* Median returns null on empty input instead of error
* tests expect NULL from median on empty input
---
datafusion/core/tests/sqllogictests/test_files/aggregate.slt | 4 +++-
datafusion/physical-expr/src/aggregate/median.rs | 4 +---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/datafusion/core/tests/sqllogictests/test_files/aggregate.slt b/datafusion/core/tests/sqllogictests/test_files/aggregate.slt
index 76ff53af3..0fffb2a5d 100644
--- a/datafusion/core/tests/sqllogictests/test_files/aggregate.slt
+++ b/datafusion/core/tests/sqllogictests/test_files/aggregate.slt
@@ -1397,8 +1397,10 @@ drop table t_source;
statement ok
drop table t;
-query error DataFusion error: Execution error: median requires at least one non-null value
+query I
select median(a) from (select 1 as a where 1=0);
+----
+NULL
query error DataFusion error: Execution error: aggregate function needs at least one non-null element
select approx_median(a) from (select 1 as a where 1=0);
diff --git a/datafusion/physical-expr/src/aggregate/median.rs b/datafusion/physical-expr/src/aggregate/median.rs
index a29fd8fd7..c933f1f75 100644
--- a/datafusion/physical-expr/src/aggregate/median.rs
+++ b/datafusion/physical-expr/src/aggregate/median.rs
@@ -144,9 +144,7 @@ impl Accumulator for MedianAccumulator {
fn evaluate(&self) -> Result<ScalarValue> {
if !self.all_values.iter().any(|v| !v.is_null()) {
- return Err(DataFusionError::Execution(
- "median requires at least one non-null value".into(),
- ));
+ return ScalarValue::try_from(&self.data_type);
}
// Create an array of all the non null values and find the