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