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

liukun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow-datafusion.git


The following commit(s) were added to refs/heads/master by this push:
     new b9b4edcfd Fix ScalarValue::isNull calculation (#2815)
b9b4edcfd is described below

commit b9b4edcfdc3e673e2beb01d83d11fecd40b02eb1
Author: Andrew Lamb <[email protected]>
AuthorDate: Wed Jun 29 21:56:30 2022 -0400

    Fix ScalarValue::isNull calculation (#2815)
---
 datafusion/common/src/scalar.rs | 56 ++++++++++++++++++++++-------------------
 1 file changed, 30 insertions(+), 26 deletions(-)

diff --git a/datafusion/common/src/scalar.rs b/datafusion/common/src/scalar.rs
index 553dc5eae..db7fedeb2 100644
--- a/datafusion/common/src/scalar.rs
+++ b/datafusion/common/src/scalar.rs
@@ -625,32 +625,36 @@ impl ScalarValue {
 
     /// whether this value is null or not.
     pub fn is_null(&self) -> bool {
-        matches!(
-            *self,
-            ScalarValue::Null
-                | ScalarValue::Boolean(None)
-                | ScalarValue::UInt8(None)
-                | ScalarValue::UInt16(None)
-                | ScalarValue::UInt32(None)
-                | ScalarValue::UInt64(None)
-                | ScalarValue::Int8(None)
-                | ScalarValue::Int16(None)
-                | ScalarValue::Int32(None)
-                | ScalarValue::Int64(None)
-                | ScalarValue::Float32(None)
-                | ScalarValue::Float64(None)
-                | ScalarValue::Date32(None)
-                | ScalarValue::Date64(None)
-                | ScalarValue::Utf8(None)
-                | ScalarValue::LargeUtf8(None)
-                | ScalarValue::List(None, _)
-                | ScalarValue::TimestampSecond(None, _)
-                | ScalarValue::TimestampMillisecond(None, _)
-                | ScalarValue::TimestampMicrosecond(None, _)
-                | ScalarValue::TimestampNanosecond(None, _)
-                | ScalarValue::Struct(None, _)
-                | ScalarValue::Decimal128(None, _, _) // For decimal type, the 
value is null means ScalarValue::Decimal128 is null.
-        )
+        match self {
+            ScalarValue::Boolean(v) => v.is_none(),
+            ScalarValue::Null => true,
+            ScalarValue::Float32(v) => v.is_none(),
+            ScalarValue::Float64(v) => v.is_none(),
+            ScalarValue::Decimal128(v, _, _) => v.is_none(),
+            ScalarValue::Int8(v) => v.is_none(),
+            ScalarValue::Int16(v) => v.is_none(),
+            ScalarValue::Int32(v) => v.is_none(),
+            ScalarValue::Int64(v) => v.is_none(),
+            ScalarValue::UInt8(v) => v.is_none(),
+            ScalarValue::UInt16(v) => v.is_none(),
+            ScalarValue::UInt32(v) => v.is_none(),
+            ScalarValue::UInt64(v) => v.is_none(),
+            ScalarValue::Utf8(v) => v.is_none(),
+            ScalarValue::LargeUtf8(v) => v.is_none(),
+            ScalarValue::Binary(v) => v.is_none(),
+            ScalarValue::LargeBinary(v) => v.is_none(),
+            ScalarValue::List(v, _) => v.is_none(),
+            ScalarValue::Date32(v) => v.is_none(),
+            ScalarValue::Date64(v) => v.is_none(),
+            ScalarValue::TimestampSecond(v, _) => v.is_none(),
+            ScalarValue::TimestampMillisecond(v, _) => v.is_none(),
+            ScalarValue::TimestampMicrosecond(v, _) => v.is_none(),
+            ScalarValue::TimestampNanosecond(v, _) => v.is_none(),
+            ScalarValue::IntervalYearMonth(v) => v.is_none(),
+            ScalarValue::IntervalDayTime(v) => v.is_none(),
+            ScalarValue::IntervalMonthDayNano(v) => v.is_none(),
+            ScalarValue::Struct(v, _) => v.is_none(),
+        }
     }
 
     /// Converts a scalar value into an 1-row array.

Reply via email to