diff --git a/src/compute/arithmetics/decimal/div.rs b/src/compute/arithmetics/decimal/div.rs index 135bc6fed7e..01f590b9927 100644 --- a/src/compute/arithmetics/decimal/div.rs +++ b/src/compute/arithmetics/decimal/div.rs @@ -74,7 +74,7 @@ pub fn div(lhs: &PrimitiveArray, rhs: &PrimitiveArray) -> PrimitiveA pub fn div_scalar(lhs: &PrimitiveArray, rhs: &PrimitiveScalar) -> PrimitiveArray { let (precision, scale) = get_parameters(lhs.data_type(), rhs.data_type()).unwrap(); - let rhs = if let Some(rhs) = rhs.value() { + let rhs = if let Some(rhs) = *rhs.value() { rhs } else { return PrimitiveArray::::new_null(lhs.data_type().clone(), lhs.len()); diff --git a/src/compute/arithmetics/decimal/mul.rs b/src/compute/arithmetics/decimal/mul.rs index 42b221da195..b279673a5de 100644 --- a/src/compute/arithmetics/decimal/mul.rs +++ b/src/compute/arithmetics/decimal/mul.rs @@ -75,7 +75,7 @@ pub fn mul(lhs: &PrimitiveArray, rhs: &PrimitiveArray) -> PrimitiveA pub fn mul_scalar(lhs: &PrimitiveArray, rhs: &PrimitiveScalar) -> PrimitiveArray { let (precision, scale) = get_parameters(lhs.data_type(), rhs.data_type()).unwrap(); - let rhs = if let Some(rhs) = rhs.value() { + let rhs = if let Some(rhs) = *rhs.value() { rhs } else { return PrimitiveArray::::new_null(lhs.data_type().clone(), lhs.len()); diff --git a/src/compute/arithmetics/mod.rs b/src/compute/arithmetics/mod.rs index 07391675ed9..d0ece217956 100644 --- a/src/compute/arithmetics/mod.rs +++ b/src/compute/arithmetics/mod.rs @@ -106,7 +106,7 @@ fn binary_scalar, &T) -> PrimitiveArray< rhs: &PrimitiveScalar, op: F, ) -> PrimitiveArray { - let rhs = if let Some(rhs) = rhs.value() { + let rhs = if let Some(rhs) = *rhs.value() { rhs } else { return PrimitiveArray::::new_null(lhs.data_type().clone(), lhs.len()); diff --git a/src/compute/arithmetics/time.rs b/src/compute/arithmetics/time.rs index 9fe96182d5f..e049b3820b5 100644 --- a/src/compute/arithmetics/time.rs +++ b/src/compute/arithmetics/time.rs @@ -130,7 +130,7 @@ where T: NativeType + Add, { let scale = create_scale(time.data_type(), duration.data_type()).unwrap(); - let duration = if let Some(duration) = duration.value() { + let duration = if let Some(duration) = *duration.value() { duration } else { return PrimitiveArray::::new_null(time.data_type().clone(), time.len()); @@ -211,7 +211,7 @@ where T: NativeType + Sub, { let scale = create_scale(time.data_type(), duration.data_type()).unwrap(); - let duration = if let Some(duration) = duration.value() { + let duration = if let Some(duration) = *duration.value() { duration } else { return PrimitiveArray::::new_null(time.data_type().clone(), time.len()); @@ -297,7 +297,7 @@ pub fn sub_timestamps_scalar( )); }; - let rhs = if let Some(value) = rhs.value() { + let rhs = if let Some(value) = *rhs.value() { value } else { return Ok(PrimitiveArray::::new_null( @@ -374,7 +374,7 @@ pub fn add_interval_scalar( timestamp: &PrimitiveArray, interval: &PrimitiveScalar, ) -> Result> { - let interval = if let Some(interval) = interval.value() { + let interval = if let Some(interval) = *interval.value() { interval } else { return Ok(PrimitiveArray::::new_null( diff --git a/src/scalar/primitive.rs b/src/scalar/primitive.rs index 431906f759c..9ab47d4ca02 100644 --- a/src/scalar/primitive.rs +++ b/src/scalar/primitive.rs @@ -27,8 +27,8 @@ impl PrimitiveScalar { /// Returns the optional value. #[inline] - pub fn value(&self) -> Option { - self.value + pub fn value(&self) -> &Option { + &self.value } /// Returns a new `PrimitiveScalar` with the same value but different [`DataType`] diff --git a/tests/it/array/union.rs b/tests/it/array/union.rs index c5b572c60b1..e1c681301b8 100644 --- a/tests/it/array/union.rs +++ b/tests/it/array/union.rs @@ -106,11 +106,11 @@ fn iter_sparse() -> Result<()> { assert_eq!( next_unchecked::, _>(&mut iter).value(), - Some(1) + &Some(1) ); assert_eq!( next_unchecked::, _>(&mut iter).value(), - None + &None ); assert_eq!( next_unchecked::, _>(&mut iter).value(), @@ -140,11 +140,11 @@ fn iter_dense() -> Result<()> { assert_eq!( next_unchecked::, _>(&mut iter).value(), - Some(1) + &Some(1) ); assert_eq!( next_unchecked::, _>(&mut iter).value(), - None + &None ); assert_eq!( next_unchecked::, _>(&mut iter).value(), @@ -174,7 +174,7 @@ fn iter_sparse_slice() -> Result<()> { assert_eq!( next_unchecked::, _>(&mut iter).value(), - Some(3) + &Some(3) ); assert_eq!(iter.next(), None); @@ -201,7 +201,7 @@ fn iter_dense_slice() -> Result<()> { assert_eq!( next_unchecked::, _>(&mut iter).value(), - Some(3) + &Some(3) ); assert_eq!(iter.next(), None); @@ -233,7 +233,7 @@ fn scalar() -> Result<()> { .downcast_ref::>() .unwrap() .value(), - Some(1) + &Some(1) ); assert_eq!(union_scalar.type_(), 0); let scalar = new_scalar(&array, 1); @@ -245,7 +245,7 @@ fn scalar() -> Result<()> { .downcast_ref::>() .unwrap() .value(), - None + &None ); assert_eq!(union_scalar.type_(), 0); diff --git a/tests/it/scalar/primitive.rs b/tests/it/scalar/primitive.rs index 3cb26707eb1..8769af7cd75 100644 --- a/tests/it/scalar/primitive.rs +++ b/tests/it/scalar/primitive.rs @@ -20,7 +20,7 @@ fn equal() { fn basics() { let a = PrimitiveScalar::from(Some(2i32)); - assert_eq!(a.value(), Some(2i32)); + assert_eq!(a.value(), &Some(2i32)); assert_eq!(a.data_type(), &DataType::Int32); let a = a.to(DataType::Date32);