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.