From c45aa8c65a341f2f18ea7fa3742c1bc7f0e94df3 Mon Sep 17 00:00:00 2001 From: "Jorge C. Leitao" Date: Mon, 20 Sep 2021 16:21:02 +0000 Subject: [PATCH] Changed &Option to Option<&Bitmap>. --- guide/src/high_level.md | 4 ++-- src/array/binary/mod.rs | 4 ++-- src/array/binary/mutable.rs | 4 ++-- src/array/boolean/mod.rs | 4 ++-- src/array/boolean/mutable.rs | 4 ++-- src/array/dictionary/mod.rs | 2 +- src/array/dictionary/mutable.rs | 2 +- src/array/fixed_size_binary/mod.rs | 4 ++-- src/array/fixed_size_binary/mutable.rs | 4 ++-- src/array/fixed_size_list/mod.rs | 4 ++-- src/array/fixed_size_list/mutable.rs | 4 ++-- src/array/list/mod.rs | 4 ++-- src/array/list/mutable.rs | 4 ++-- src/array/mod.rs | 4 ++-- src/array/null.rs | 4 ++-- src/array/primitive/mod.rs | 6 +++--- src/array/primitive/mutable.rs | 4 ++-- src/array/struct_.rs | 4 ++-- src/array/union/mod.rs | 4 ++-- src/array/utf8/mod.rs | 4 ++-- src/array/utf8/mutable.rs | 4 ++-- src/compute/aggregate/memory.rs | 2 +- src/compute/arity.rs | 10 +++++----- src/compute/boolean.rs | 2 +- src/compute/cast/binary_to.rs | 4 ++-- src/compute/cast/boolean_to.rs | 2 +- src/compute/cast/mod.rs | 6 +++--- src/compute/cast/primitive_to.rs | 4 ++-- src/compute/cast/utf8_to.rs | 4 ++-- src/compute/comparison/binary.rs | 2 +- src/compute/comparison/boolean.rs | 2 +- src/compute/comparison/primitive.rs | 2 +- src/compute/comparison/utf8.rs | 2 +- src/compute/hash.rs | 6 +++--- src/compute/length.rs | 2 +- src/compute/like.rs | 4 ++-- src/compute/nullif.rs | 5 +++-- src/compute/sort/common.rs | 2 +- src/compute/substring.rs | 4 ++-- src/compute/take/boolean.rs | 8 ++++---- src/compute/take/generic_binary.rs | 6 +++--- src/compute/take/primitive.rs | 8 ++++---- src/compute/take/structure.rs | 4 ++-- src/compute/utils.rs | 4 ++-- src/io/ipc/write/serialize.rs | 6 +++--- src/io/parquet/write/binary/basic.rs | 2 +- src/io/parquet/write/dictionary.rs | 4 ++-- src/io/parquet/write/levels.rs | 17 ++++++++-------- src/io/parquet/write/mod.rs | 12 +++++------ src/io/parquet/write/utils.rs | 2 +- tests/it/array/binary/mod.rs | 10 +++++----- tests/it/array/binary/mutable.rs | 2 +- tests/it/array/boolean/mod.rs | 6 +++--- tests/it/array/boolean/mutable.rs | 2 +- tests/it/array/fixed_size_binary/mutable.rs | 4 ++-- tests/it/array/growable/utils.rs | 2 +- tests/it/array/primitive/mod.rs | 6 +++--- tests/it/array/primitive/mutable.rs | 22 ++++++++++----------- tests/it/array/utf8/mod.rs | 8 ++++---- tests/it/array/utf8/mutable.rs | 6 +++--- 60 files changed, 144 insertions(+), 144 deletions(-) diff --git a/guide/src/high_level.md b/guide/src/high_level.md index 2a9fb52e19f..3bac96c4c43 100644 --- a/guide/src/high_level.md +++ b/guide/src/high_level.md @@ -209,7 +209,7 @@ Like `FromIterator`, this crate contains two sets of APIs to iterate over data. an array `array: &PrimitiveArray`, the following applies: 1. If you need to iterate over `Option<&T>`, use `array.iter()` -2. If you can operate over the values and validity independently, use `array.values() -> &Buffer` and `array.validity() -> &Option` +2. If you can operate over the values and validity independently, use `array.values() -> &Buffer` and `array.validity() -> Option<&Bitmap>` Note that case 1 is useful when e.g. you want to perform an operation that depends on both validity and values, while the latter is suitable for SIMD and copies, as they return contiguous memory regions (buffers and bitmaps). We will see below how to leverage these APIs. @@ -241,7 +241,7 @@ where let values = array.values().iter().map(|v| op(*v)); let values = Buffer::from_trusted_len_iter(values); - PrimitiveArray::::from_data(data_type.clone(), values, array.validity().clone()) + PrimitiveArray::::from_data(data_type.clone(), values, array.validity().cloned()) } ``` diff --git a/src/array/binary/mod.rs b/src/array/binary/mod.rs index c7b0f65992f..9433b5cdc9c 100644 --- a/src/array/binary/mod.rs +++ b/src/array/binary/mod.rs @@ -168,8 +168,8 @@ impl Array for BinaryArray { &self.data_type } - fn validity(&self) -> &Option { - &self.validity + fn validity(&self) -> Option<&Bitmap> { + self.validity.as_ref() } fn slice(&self, offset: usize, length: usize) -> Box { diff --git a/src/array/binary/mutable.rs b/src/array/binary/mutable.rs index c23d91dbe3a..89c645de00a 100644 --- a/src/array/binary/mutable.rs +++ b/src/array/binary/mutable.rs @@ -142,8 +142,8 @@ impl MutableArray for MutableBinaryArray { self.offsets.len() - 1 } - fn validity(&self) -> &Option { - &self.validity + fn validity(&self) -> Option<&MutableBitmap> { + self.validity.as_ref() } fn as_arc(&mut self) -> Arc { diff --git a/src/array/boolean/mod.rs b/src/array/boolean/mod.rs index dfc8134f771..d7be39074e9 100644 --- a/src/array/boolean/mod.rs +++ b/src/array/boolean/mod.rs @@ -122,8 +122,8 @@ impl Array for BooleanArray { } #[inline] - fn validity(&self) -> &Option { - &self.validity + fn validity(&self) -> Option<&Bitmap> { + self.validity.as_ref() } #[inline] diff --git a/src/array/boolean/mutable.rs b/src/array/boolean/mutable.rs index 8ab6d01faa1..857c434a75d 100644 --- a/src/array/boolean/mutable.rs +++ b/src/array/boolean/mutable.rs @@ -334,8 +334,8 @@ impl MutableArray for MutableBooleanArray { self.values.len() } - fn validity(&self) -> &Option { - &self.validity + fn validity(&self) -> Option<&MutableBitmap> { + self.validity.as_ref() } fn as_arc(&mut self) -> Arc { diff --git a/src/array/dictionary/mod.rs b/src/array/dictionary/mod.rs index e938b1e224b..4fbfb461d3c 100644 --- a/src/array/dictionary/mod.rs +++ b/src/array/dictionary/mod.rs @@ -142,7 +142,7 @@ impl Array for DictionaryArray { &self.data_type } - fn validity(&self) -> &Option { + fn validity(&self) -> Option<&Bitmap> { self.keys.validity() } diff --git a/src/array/dictionary/mutable.rs b/src/array/dictionary/mutable.rs index 386857a4a78..fc786bcf51b 100644 --- a/src/array/dictionary/mutable.rs +++ b/src/array/dictionary/mutable.rs @@ -111,7 +111,7 @@ impl MutableArray for MutableDictio self.keys.len() } - fn validity(&self) -> &Option { + fn validity(&self) -> Option<&MutableBitmap> { self.keys.validity() } diff --git a/src/array/fixed_size_binary/mod.rs b/src/array/fixed_size_binary/mod.rs index 7d7d8a58506..3508e078767 100644 --- a/src/array/fixed_size_binary/mod.rs +++ b/src/array/fixed_size_binary/mod.rs @@ -132,8 +132,8 @@ impl Array for FixedSizeBinaryArray { &self.data_type } - fn validity(&self) -> &Option { - &self.validity + fn validity(&self) -> Option<&Bitmap> { + self.validity.as_ref() } fn slice(&self, offset: usize, length: usize) -> Box { diff --git a/src/array/fixed_size_binary/mutable.rs b/src/array/fixed_size_binary/mutable.rs index cfb020d9072..e60619c4e4c 100644 --- a/src/array/fixed_size_binary/mutable.rs +++ b/src/array/fixed_size_binary/mutable.rs @@ -169,8 +169,8 @@ impl MutableArray for MutableFixedSizeBinaryArray { self.values.len() / self.size } - fn validity(&self) -> &Option { - &self.validity + fn validity(&self) -> Option<&MutableBitmap> { + self.validity.as_ref() } fn as_arc(&mut self) -> Arc { diff --git a/src/array/fixed_size_list/mod.rs b/src/array/fixed_size_list/mod.rs index bc7ae65e025..7832cdf13ed 100644 --- a/src/array/fixed_size_list/mod.rs +++ b/src/array/fixed_size_list/mod.rs @@ -136,8 +136,8 @@ impl Array for FixedSizeListArray { &self.data_type } - fn validity(&self) -> &Option { - &self.validity + fn validity(&self) -> Option<&Bitmap> { + self.validity.as_ref() } fn slice(&self, offset: usize, length: usize) -> Box { diff --git a/src/array/fixed_size_list/mutable.rs b/src/array/fixed_size_list/mutable.rs index 73a9ff21ed8..0cf7105f6c7 100644 --- a/src/array/fixed_size_list/mutable.rs +++ b/src/array/fixed_size_list/mutable.rs @@ -65,8 +65,8 @@ impl MutableArray for MutableFixedSizeListArray { self.values.len() / self.size } - fn validity(&self) -> &Option { - &self.validity + fn validity(&self) -> Option<&MutableBitmap> { + self.validity.as_ref() } fn as_arc(&mut self) -> Arc { diff --git a/src/array/list/mod.rs b/src/array/list/mod.rs index 1e84981df86..e89d0f87e27 100644 --- a/src/array/list/mod.rs +++ b/src/array/list/mod.rs @@ -179,8 +179,8 @@ impl Array for ListArray { } #[inline] - fn validity(&self) -> &Option { - &self.validity + fn validity(&self) -> Option<&Bitmap> { + self.validity.as_ref() } fn slice(&self, offset: usize, length: usize) -> Box { diff --git a/src/array/list/mutable.rs b/src/array/list/mutable.rs index 80a846b8e8d..d4f873b7afd 100644 --- a/src/array/list/mutable.rs +++ b/src/array/list/mutable.rs @@ -173,8 +173,8 @@ impl MutableArray for MutableListArray &Option { - &self.validity + fn validity(&self) -> Option<&MutableBitmap> { + self.validity.as_ref() } fn as_arc(&mut self) -> Arc { diff --git a/src/array/mod.rs b/src/array/mod.rs index 5dbadb28846..782df58cc28 100644 --- a/src/array/mod.rs +++ b/src/array/mod.rs @@ -45,7 +45,7 @@ pub trait Array: std::fmt::Debug + Send + Sync { /// The validity of the [`Array`]: every array has an optional [`Bitmap`] that, when available /// specifies whether the array slot is valid or not (null). /// When the validity is [`None`], all slots are valid. - fn validity(&self) -> &Option; + fn validity(&self) -> Option<&Bitmap>; /// The number of null slots on this [`Array`]. /// # Implementation @@ -111,7 +111,7 @@ pub trait MutableArray: std::fmt::Debug { } /// The optional validity of the array. - fn validity(&self) -> &Option; + fn validity(&self) -> Option<&MutableBitmap>; /// Convert itself to an (immutable) [`Array`]. fn as_arc(&mut self) -> Arc; diff --git a/src/array/null.rs b/src/array/null.rs index d7c339f29e9..3926730c330 100644 --- a/src/array/null.rs +++ b/src/array/null.rs @@ -56,8 +56,8 @@ impl Array for NullArray { &DataType::Null } - fn validity(&self) -> &Option { - &None + fn validity(&self) -> Option<&Bitmap> { + None } fn slice(&self, offset: usize, length: usize) -> Box { diff --git a/src/array/primitive/mod.rs b/src/array/primitive/mod.rs index 0cb84bec91b..61db9c1c6de 100644 --- a/src/array/primitive/mod.rs +++ b/src/array/primitive/mod.rs @@ -27,7 +27,7 @@ pub use mutable::*; /// # fn main() { /// let array = PrimitiveArray::from([Some(1), None, Some(10)]); /// assert_eq!(array.values().as_slice(), &[1, 0, 10]); -/// assert_eq!(array.validity(), &Some(Bitmap::from([true, false, true]))); +/// assert_eq!(array.validity(), Some(&Bitmap::from([true, false, true]))); /// # } /// ``` #[derive(Debug, Clone)] @@ -169,8 +169,8 @@ impl Array for PrimitiveArray { &self.data_type } - fn validity(&self) -> &Option { - &self.validity + fn validity(&self) -> Option<&Bitmap> { + self.validity.as_ref() } fn slice(&self, offset: usize, length: usize) -> Box { diff --git a/src/array/primitive/mutable.rs b/src/array/primitive/mutable.rs index 64d8c245abb..6e0a5fbdf80 100644 --- a/src/array/primitive/mutable.rs +++ b/src/array/primitive/mutable.rs @@ -322,8 +322,8 @@ impl MutableArray for MutablePrimitiveArray { self.values.len() } - fn validity(&self) -> &Option { - &self.validity + fn validity(&self) -> Option<&MutableBitmap> { + self.validity.as_ref() } fn as_arc(&mut self) -> Arc { diff --git a/src/array/struct_.rs b/src/array/struct_.rs index ddb18724135..8bb32b05a1d 100644 --- a/src/array/struct_.rs +++ b/src/array/struct_.rs @@ -168,8 +168,8 @@ impl Array for StructArray { } #[inline] - fn validity(&self) -> &Option { - &self.validity + fn validity(&self) -> Option<&Bitmap> { + self.validity.as_ref() } fn slice(&self, offset: usize, length: usize) -> Box { diff --git a/src/array/union/mod.rs b/src/array/union/mod.rs index 68b93002222..5d7ad631fe4 100644 --- a/src/array/union/mod.rs +++ b/src/array/union/mod.rs @@ -205,8 +205,8 @@ impl Array for UnionArray { &self.data_type } - fn validity(&self) -> &Option { - &None + fn validity(&self) -> Option<&Bitmap> { + None } fn slice(&self, offset: usize, length: usize) -> Box { diff --git a/src/array/utf8/mod.rs b/src/array/utf8/mod.rs index 0e5ce24d9c2..a28307acf4c 100644 --- a/src/array/utf8/mod.rs +++ b/src/array/utf8/mod.rs @@ -218,8 +218,8 @@ impl Array for Utf8Array { &self.data_type } - fn validity(&self) -> &Option { - &self.validity + fn validity(&self) -> Option<&Bitmap> { + self.validity.as_ref() } fn slice(&self, offset: usize, length: usize) -> Box { diff --git a/src/array/utf8/mutable.rs b/src/array/utf8/mutable.rs index ab1bb0744f1..8ad0fd88192 100644 --- a/src/array/utf8/mutable.rs +++ b/src/array/utf8/mutable.rs @@ -183,8 +183,8 @@ impl MutableArray for MutableUtf8Array { self.offsets.len() - 1 } - fn validity(&self) -> &Option { - &self.validity + fn validity(&self) -> Option<&MutableBitmap> { + self.validity.as_ref() } fn as_arc(&mut self) -> Arc { diff --git a/src/compute/aggregate/memory.rs b/src/compute/aggregate/memory.rs index ec05be51da2..33039ecf4e2 100644 --- a/src/compute/aggregate/memory.rs +++ b/src/compute/aggregate/memory.rs @@ -2,7 +2,7 @@ use crate::array::*; use crate::bitmap::Bitmap; use crate::datatypes::PhysicalType; -fn validity_size(validity: &Option) -> usize { +fn validity_size(validity: Option<&Bitmap>) -> usize { validity.as_ref().map(|b| b.as_slice().0.len()).unwrap_or(0) } diff --git a/src/compute/arity.rs b/src/compute/arity.rs index c48058c81ec..fc73eb9143d 100644 --- a/src/compute/arity.rs +++ b/src/compute/arity.rs @@ -29,7 +29,7 @@ where let values = array.values().iter().map(|v| op(*v)); let values = Buffer::from_trusted_len_iter(values); - PrimitiveArray::::from_data(data_type, values, array.validity().clone()) + PrimitiveArray::::from_data(data_type, values, array.validity().cloned()) } /// Version of unary that checks for errors in the closure used to create the @@ -50,7 +50,7 @@ where Ok(PrimitiveArray::::from_data( data_type, values, - array.validity().clone(), + array.validity().cloned(), )) } @@ -77,7 +77,7 @@ where let values = Buffer::from_trusted_len_iter(values); ( - PrimitiveArray::::from_data(data_type, values, array.validity().clone()), + PrimitiveArray::::from_data(data_type, values, array.validity().cloned()), mut_bitmap.into(), ) } @@ -115,7 +115,7 @@ where // the iteration, then the validity is changed to None to mark the value // as Null let bitmap: Bitmap = mut_bitmap.into(); - let validity = combine_validities(array.validity(), &Some(bitmap)); + let validity = combine_validities(array.validity(), Some(&bitmap)); PrimitiveArray::::from_data(data_type, values, validity) } @@ -278,7 +278,7 @@ where // creation of the values with the iterator. If an error was found during // the iteration, then the validity is changed to None to mark the value // as Null - let validity = combine_validities(&validity, &Some(bitmap)); + let validity = combine_validities(validity.as_ref(), Some(&bitmap)); Ok(PrimitiveArray::::from_data(data_type, values, validity)) } diff --git a/src/compute/boolean.rs b/src/compute/boolean.rs index 9d547a2e750..55b3ddcf9ce 100644 --- a/src/compute/boolean.rs +++ b/src/compute/boolean.rs @@ -99,7 +99,7 @@ pub fn or(lhs: &BooleanArray, rhs: &BooleanArray) -> Result { /// ``` pub fn not(array: &BooleanArray) -> BooleanArray { let values = !array.values(); - let validity = array.validity().clone(); + let validity = array.validity().cloned(); BooleanArray::from_data(DataType::Boolean, values, validity) } diff --git a/src/compute/cast/binary_to.rs b/src/compute/cast/binary_to.rs index 3296ca3d715..689f87f1eae 100644 --- a/src/compute/cast/binary_to.rs +++ b/src/compute/cast/binary_to.rs @@ -7,7 +7,7 @@ pub fn binary_to_large_binary(from: &BinaryArray, to_data_type: DataType) - let values = from.values().clone(); let offsets = from.offsets().iter().map(|x| *x as i64); let offsets = Buffer::from_trusted_len_iter(offsets); - BinaryArray::::from_data(to_data_type, offsets, values, from.validity().clone()) + BinaryArray::::from_data(to_data_type, offsets, values, from.validity().cloned()) } pub fn binary_large_to_binary( @@ -24,7 +24,7 @@ pub fn binary_large_to_binary( to_data_type, offsets, values, - from.validity().clone(), + from.validity().cloned(), )) } diff --git a/src/compute/cast/boolean_to.rs b/src/compute/cast/boolean_to.rs index b6206527cc1..c01b350f1ae 100644 --- a/src/compute/cast/boolean_to.rs +++ b/src/compute/cast/boolean_to.rs @@ -27,7 +27,7 @@ where .map(|x| if x { T::one() } else { T::default() }); let values = Buffer::::from_trusted_len_iter(iter); - PrimitiveArray::::from_data(T::DATA_TYPE, values, from.validity().clone()) + PrimitiveArray::::from_data(T::DATA_TYPE, values, from.validity().cloned()) } /// Casts the [`BooleanArray`] to a [`Utf8Array`], casting trues to `"1"` and falses to `"0"` diff --git a/src/compute/cast/mod.rs b/src/compute/cast/mod.rs index 62b900c018a..972e0eecab7 100644 --- a/src/compute/cast/mod.rs +++ b/src/compute/cast/mod.rs @@ -294,7 +294,7 @@ fn cast_list( to_type.clone(), array.offsets().clone(), new_values, - array.validity().clone(), + array.validity().cloned(), )) } @@ -307,7 +307,7 @@ fn cast_list_to_large_list(array: &ListArray, to_type: &DataType) -> ListAr to_type.clone(), offets, array.values().clone(), - array.validity().clone(), + array.validity().cloned(), ) } @@ -320,7 +320,7 @@ fn cast_large_to_list(array: &ListArray, to_type: &DataType) -> ListArray( let iter = from.values().iter().map(|v| *v != T::default()); let values = Bitmap::from_trusted_len_iter(iter); - BooleanArray::from_data(to_type, values, from.validity().clone()) + BooleanArray::from_data(to_type, values, from.validity().cloned()) } pub(super) fn primitive_to_boolean_dyn( @@ -131,7 +131,7 @@ where PrimitiveArray::::from_data( to_type.clone(), from.values().clone(), - from.validity().clone(), + from.validity().cloned(), ) } diff --git a/src/compute/cast/utf8_to.rs b/src/compute/cast/utf8_to.rs index d74ec2b6e1b..0ae03fb741e 100644 --- a/src/compute/cast/utf8_to.rs +++ b/src/compute/cast/utf8_to.rs @@ -126,7 +126,7 @@ pub fn utf8_to_large_utf8(from: &Utf8Array) -> Utf8Array { let offsets = from.offsets().iter().map(|x| *x as i64); let offsets = Buffer::from_trusted_len_iter(offsets); unsafe { - Utf8Array::::from_data_unchecked(data_type, offsets, values, from.validity().clone()) + Utf8Array::::from_data_unchecked(data_type, offsets, values, from.validity().cloned()) } } @@ -139,6 +139,6 @@ pub fn utf8_large_to_utf8(from: &Utf8Array) -> Result> { let offsets = from.offsets().iter().map(|x| *x as i32); let offsets = Buffer::from_trusted_len_iter(offsets); Ok(unsafe { - Utf8Array::::from_data_unchecked(data_type, offsets, values, from.validity().clone()) + Utf8Array::::from_data_unchecked(data_type, offsets, values, from.validity().cloned()) }) } diff --git a/src/compute/comparison/binary.rs b/src/compute/comparison/binary.rs index f72ca819362..9bf0a2c4f6a 100644 --- a/src/compute/comparison/binary.rs +++ b/src/compute/comparison/binary.rs @@ -53,7 +53,7 @@ where O: Offset, F: Fn(&[u8], &[u8]) -> bool, { - let validity = lhs.validity().clone(); + let validity = lhs.validity().cloned(); let values = lhs.values_iter().map(|lhs| op(lhs, rhs)); let values = Bitmap::from_trusted_len_iter(values); diff --git a/src/compute/comparison/boolean.rs b/src/compute/comparison/boolean.rs index 845e077fdd2..6371c77b96b 100644 --- a/src/compute/comparison/boolean.rs +++ b/src/compute/comparison/boolean.rs @@ -72,7 +72,7 @@ where values.push(op(lhs_remainder, rhs)) }; let values = MutableBitmap::from_buffer(values, lhs.len()).into(); - BooleanArray::from_data(DataType::Boolean, values, lhs.validity().clone()) + BooleanArray::from_data(DataType::Boolean, values, lhs.validity().cloned()) } /// Perform `lhs == rhs` operation on two arrays. diff --git a/src/compute/comparison/primitive.rs b/src/compute/comparison/primitive.rs index e4faefa5f53..34a00a2330e 100644 --- a/src/compute/comparison/primitive.rs +++ b/src/compute/comparison/primitive.rs @@ -87,7 +87,7 @@ where T: NativeType + Simd8, F: Fn(T::Simd, T::Simd) -> u8, { - let validity = lhs.validity().clone(); + let validity = lhs.validity().cloned(); let rhs = T::Simd::from_chunk(&[rhs; 8]); let lhs_chunks_iter = lhs.values().chunks_exact(8); diff --git a/src/compute/comparison/utf8.rs b/src/compute/comparison/utf8.rs index 11b4f335bde..e6a66816890 100644 --- a/src/compute/comparison/utf8.rs +++ b/src/compute/comparison/utf8.rs @@ -53,7 +53,7 @@ where O: Offset, F: Fn(&str, &str) -> bool, { - let validity = lhs.validity().clone(); + let validity = lhs.validity().cloned(); let values = lhs.values_iter().map(|lhs| op(lhs, rhs)); let values = Bitmap::from_trusted_len_iter(values); diff --git a/src/compute/hash.rs b/src/compute/hash.rs index c7f763d79e2..ac06cf8ecc5 100644 --- a/src/compute/hash.rs +++ b/src/compute/hash.rs @@ -35,7 +35,7 @@ pub fn hash_boolean(array: &BooleanArray) -> PrimitiveArray { let iter = array.values_iter().map(|x| u8::get_hash(&x, &state)); let values = Buffer::from_trusted_len_iter(iter); - PrimitiveArray::::from_data(DataType::UInt64, values, array.validity().clone()) + PrimitiveArray::::from_data(DataType::UInt64, values, array.validity().cloned()) } #[multiversion] @@ -48,7 +48,7 @@ pub fn hash_utf8(array: &Utf8Array) -> PrimitiveArray { .values_iter() .map(|x| <[u8]>::get_hash(&x.as_bytes(), &state)); let values = Buffer::from_trusted_len_iter(iter); - PrimitiveArray::::from_data(DataType::UInt64, values, array.validity().clone()) + PrimitiveArray::::from_data(DataType::UInt64, values, array.validity().cloned()) } /// Element-wise hash of a [`BinaryArray`]. Validity is preserved. @@ -56,7 +56,7 @@ pub fn hash_binary(array: &BinaryArray) -> PrimitiveArray { let state = new_state!(); let iter = array.values_iter().map(|x| <[u8]>::get_hash(&x, &state)); let values = Buffer::from_trusted_len_iter(iter); - PrimitiveArray::::from_data(DataType::UInt64, values, array.validity().clone()) + PrimitiveArray::::from_data(DataType::UInt64, values, array.validity().cloned()) } macro_rules! hash_dyn { diff --git a/src/compute/length.rs b/src/compute/length.rs index 675cc560bac..d74f4ee9d13 100644 --- a/src/compute/length.rs +++ b/src/compute/length.rs @@ -42,7 +42,7 @@ where DataType::Int32 }; - PrimitiveArray::::from_data(data_type, values, array.validity().clone()) + PrimitiveArray::::from_data(data_type, values, array.validity().cloned()) } /// Returns an array of integers with the number of bytes on each string of the array. diff --git a/src/compute/like.rs b/src/compute/like.rs index 4480c122827..1e0dc1e778f 100644 --- a/src/compute/like.rs +++ b/src/compute/like.rs @@ -117,7 +117,7 @@ fn a_like_utf8_scalar bool>( Ok(BooleanArray::from_data( DataType::Boolean, values, - validity.clone(), + validity.cloned(), )) } @@ -261,7 +261,7 @@ fn a_like_binary_scalar bool>( Ok(BooleanArray::from_data( DataType::Boolean, values, - validity.clone(), + validity.cloned(), )) } diff --git a/src/compute/nullif.rs b/src/compute/nullif.rs index a9476b70e89..ec0ebfad896 100644 --- a/src/compute/nullif.rs +++ b/src/compute/nullif.rs @@ -1,4 +1,5 @@ use crate::array::PrimitiveArray; +use crate::bitmap::Bitmap; use crate::compute::comparison::{primitive_compare_values_op, Simd8, Simd8Lanes}; use crate::datatypes::DataType; use crate::error::{ArrowError, Result}; @@ -40,9 +41,9 @@ pub fn nullif_primitive( } let equal = primitive_compare_values_op(lhs.values(), rhs.values(), |lhs, rhs| lhs.neq(rhs)); - let equal = equal.into(); + let equal: Option = equal.into(); - let validity = combine_validities(lhs.validity(), &equal); + let validity = combine_validities(lhs.validity(), equal.as_ref()); Ok(PrimitiveArray::::from_data( lhs.data_type().clone(), diff --git a/src/compute/sort/common.rs b/src/compute/sort/common.rs index fc3ea0c667e..04a6c635078 100644 --- a/src/compute/sort/common.rs +++ b/src/compute/sort/common.rs @@ -77,7 +77,7 @@ fn sort_unstable_by( /// * `cmp` is only called from the co-domain of `get`. #[inline] pub(super) fn indices_sorted_unstable_by( - validity: &Option, + validity: Option<&Bitmap>, get: G, cmp: F, length: usize, diff --git a/src/compute/substring.rs b/src/compute/substring.rs index f0ec238e877..cc1667e7b15 100644 --- a/src/compute/substring.rs +++ b/src/compute/substring.rs @@ -64,7 +64,7 @@ fn utf8_substring(array: &Utf8Array, start: O, length: &Option) array.data_type().clone(), new_offsets.into(), new_values.into(), - validity.clone(), + validity.cloned(), ) } @@ -113,7 +113,7 @@ fn binary_substring( array.data_type().clone(), new_offsets.into(), new_values.into(), - validity.clone(), + validity.cloned(), ) } diff --git a/src/compute/take/boolean.rs b/src/compute/take/boolean.rs index 2051b14223f..c49b7e50d9b 100644 --- a/src/compute/take/boolean.rs +++ b/src/compute/take/boolean.rs @@ -37,7 +37,7 @@ fn take_values_validity( ) -> (Bitmap, Option) { let mut validity = MutableBitmap::with_capacity(indices.len()); - let validity_values = values.validity().as_ref().unwrap(); + let validity_values = values.validity().unwrap(); let values_values = values.values(); @@ -60,7 +60,7 @@ fn take_indices_validity( values: &Bitmap, indices: &PrimitiveArray, ) -> (Bitmap, Option) { - let validity = indices.validity().as_ref().unwrap(); + let validity = indices.validity().unwrap(); let values = indices.values().iter().enumerate().map(|(i, index)| { let index = index.to_usize(); @@ -78,7 +78,7 @@ fn take_indices_validity( let buffer = Bitmap::from_trusted_len_iter(values); - (buffer, indices.validity().clone()) + (buffer, indices.validity().cloned()) } // take implementation when both values and indices contain nulls @@ -88,7 +88,7 @@ fn take_values_indices_validity( ) -> (Bitmap, Option) { let mut validity = MutableBitmap::with_capacity(indices.len()); - let values_validity = values.validity().as_ref().unwrap(); + let values_validity = values.validity().unwrap(); let values_values = values.values(); let values = indices.iter().map(|index| match index { diff --git a/src/compute/take/generic_binary.rs b/src/compute/take/generic_binary.rs index 4d9af24bb30..4e960bae54a 100644 --- a/src/compute/take/generic_binary.rs +++ b/src/compute/take/generic_binary.rs @@ -69,7 +69,7 @@ pub fn take_values_validity>( let mut length = O::default(); let mut validity = MutableBitmap::with_capacity(indices.len()); - let null_values = values.validity().as_ref().unwrap(); + let null_values = values.validity().unwrap(); let offsets = values.offsets(); let values_values = values.values(); @@ -122,7 +122,7 @@ pub fn take_indices_validity( let buffer = take_values(length, starts.as_slice(), offsets.as_slice(), values); - (offsets, buffer, indices.validity().clone()) + (offsets, buffer, indices.validity().cloned()) } // take implementation when both indices and values contain nulls @@ -133,7 +133,7 @@ pub fn take_values_indices_validity( ) -> (Buffer, Option) { let mut null = MutableBitmap::with_capacity(indices.len()); - let null_values = values.validity().as_ref().unwrap(); + let null_values = values.validity().unwrap(); let values_values = values.values(); @@ -64,7 +64,7 @@ fn take_indices_validity( values: &[T], indices: &PrimitiveArray, ) -> (Buffer, Option) { - let validity = indices.validity().as_ref().unwrap(); + let validity = indices.validity().unwrap(); let values = indices.values().iter().enumerate().map(|(i, index)| { let index = index.to_usize(); match values.get(index) { @@ -81,7 +81,7 @@ fn take_indices_validity( let buffer = MutableBuffer::from_trusted_len_iter(values); - (buffer.into(), indices.validity().clone()) + (buffer.into(), indices.validity().cloned()) } // take implementation when both values and indices contain nulls @@ -91,7 +91,7 @@ fn take_values_indices_validity( ) -> (Buffer, Option) { let mut bitmap = MutableBitmap::with_capacity(indices.len()); - let values_validity = values.validity().as_ref().unwrap(); + let values_validity = values.validity().unwrap(); let values_values = values.values(); let values = indices.iter().map(|index| match index { diff --git a/src/compute/take/structure.rs b/src/compute/take/structure.rs index 47aacbae1f3..04e7f460e6c 100644 --- a/src/compute/take/structure.rs +++ b/src/compute/take/structure.rs @@ -27,12 +27,12 @@ use super::Index; #[inline] fn take_validity( - validity: &Option, + validity: Option<&Bitmap>, indices: &PrimitiveArray, ) -> Result> { let indices_validity = indices.validity(); match (validity, indices_validity) { - (None, _) => Ok(indices_validity.clone()), + (None, _) => Ok(indices_validity.cloned()), (Some(validity), None) => { let iter = indices.values().iter().map(|index| { let index = index.to_usize(); diff --git a/src/compute/utils.rs b/src/compute/utils.rs index 6378d9fca37..2187d8aa2d4 100644 --- a/src/compute/utils.rs +++ b/src/compute/utils.rs @@ -21,7 +21,7 @@ use crate::{ datatypes::DataType, }; -pub fn combine_validities(lhs: &Option, rhs: &Option) -> Option { +pub fn combine_validities(lhs: Option<&Bitmap>, rhs: Option<&Bitmap>) -> Option { match (lhs, rhs) { (Some(lhs), None) => Some(lhs.clone()), (None, Some(rhs)) => Some(rhs.clone()), @@ -34,7 +34,7 @@ pub fn unary_utf8_boolean bool>( values: &Utf8Array, op: F, ) -> BooleanArray { - let validity = values.validity().clone(); + let validity = values.validity().cloned(); let iterator = values.iter().map(|value| { if value.is_none() { diff --git a/src/io/ipc/write/serialize.rs b/src/io/ipc/write/serialize.rs index 4c4f7b1555b..e21d0a57592 100644 --- a/src/io/ipc/write/serialize.rs +++ b/src/io/ipc/write/serialize.rs @@ -69,7 +69,7 @@ fn write_boolean( write_bitmap(array.validity(), array.len(), buffers, arrow_data, offset); write_bitmap( - &Some(array.values().clone()), + Some(&array.values().clone()), array.len(), buffers, arrow_data, @@ -78,7 +78,7 @@ fn write_boolean( } fn write_generic_binary( - validity: &Option, + validity: Option<&Bitmap>, offsets: &[O], values: &[u8], buffers: &mut Vec, @@ -419,7 +419,7 @@ fn write_bytes_from_iter>( } fn write_bitmap( - bitmap: &Option, + bitmap: Option<&Bitmap>, length: usize, buffers: &mut Vec, arrow_data: &mut Vec, diff --git a/src/io/parquet/write/binary/basic.rs b/src/io/parquet/write/binary/basic.rs index 4752d72e1d8..b8803700bb5 100644 --- a/src/io/parquet/write/binary/basic.rs +++ b/src/io/parquet/write/binary/basic.rs @@ -126,7 +126,7 @@ pub(super) fn build_statistics( pub(crate) fn encode_delta( values: &[u8], offsets: &[O], - validity: &Option, + validity: Option<&Bitmap>, is_optional: bool, buffer: &mut Vec, ) { diff --git a/src/io/parquet/write/dictionary.rs b/src/io/parquet/write/dictionary.rs index 7fa69a0a951..240109e6372 100644 --- a/src/io/parquet/write/dictionary.rs +++ b/src/io/parquet/write/dictionary.rs @@ -18,7 +18,7 @@ use crate::io::parquet::write::utils; fn encode_keys( array: &PrimitiveArray, // todo: merge this to not discard values' validity - validity: &Option, + validity: Option<&Bitmap>, descriptor: ColumnDescriptor, options: WriteOptions, ) -> Result { @@ -38,7 +38,7 @@ fn encode_keys( utils::write_def_levels( &mut buffer, is_optional, - &Some(projected_val), + Some(&projected_val), array.len(), options.version, )?; diff --git a/src/io/parquet/write/levels.rs b/src/io/parquet/write/levels.rs index 59b74b80d8f..ed9fe9e106b 100644 --- a/src/io/parquet/write/levels.rs +++ b/src/io/parquet/write/levels.rs @@ -85,15 +85,14 @@ pub struct DefLevelsIter<'a, O: Offset> { impl<'a, O: Offset> DefLevelsIter<'a, O> { pub fn new( offsets: &'a [O], - validity: &'a Option, - primitive_validity: &'a Option, + validity: Option<&'a Bitmap>, + primitive_validity: Option<&'a Bitmap>, ) -> Self { let total_size = num_values(offsets); - let primitive_validity = primitive_validity.as_ref().map(|x| x.iter()); + let primitive_validity = primitive_validity.map(|x| x.iter()); let validity = validity - .as_ref() .map(|x| Box::new(x.iter()) as Box>) .unwrap_or_else(|| { Box::new(std::iter::repeat(true).take(offsets.len() - 1)) @@ -151,11 +150,11 @@ impl Iterator for DefLevelsIter<'_, O> { pub struct NestedInfo<'a, O: Offset> { is_optional: bool, offsets: &'a [O], - validity: &'a Option, + validity: Option<&'a Bitmap>, } impl<'a, O: Offset> NestedInfo<'a, O> { - pub fn new(offsets: &'a [O], validity: &'a Option, is_optional: bool) -> Self { + pub fn new(offsets: &'a [O], validity: Option<&'a Bitmap>, is_optional: bool) -> Self { Self { is_optional, offsets, @@ -216,7 +215,7 @@ pub fn write_rep_levels( pub fn write_def_levels( buffer: &mut Vec, nested: &NestedInfo, - validity: &Option, + validity: Option<&Bitmap>, version: Version, ) -> Result<()> { let num_bits = 2; @@ -266,8 +265,8 @@ mod tests { ])); let expected = vec![3u32, 3, 0, 3, 2, 3, 3, 3, 3, 1, 3, 3, 3, 0, 3]; - let result = - DefLevelsIter::new(offsets, &validity, &primitive_validity).collect::>(); + let result = DefLevelsIter::new(offsets, validity.as_ref(), primitive_validity.as_ref()) + .collect::>(); assert_eq!(result, expected) } } diff --git a/src/io/parquet/write/mod.rs b/src/io/parquet/write/mod.rs index b22e3e6db7a..fd28f77eec8 100644 --- a/src/io/parquet/write/mod.rs +++ b/src/io/parquet/write/mod.rs @@ -244,7 +244,7 @@ pub fn array_to_page( let array = FixedSizeBinaryArray::from_data( DataType::FixedSizeBinary(12), values.into(), - array.validity().clone(), + array.validity().cloned(), ); fixed_len_bytes::array_to_page(&array, options, descriptor) } @@ -262,7 +262,7 @@ pub fn array_to_page( let array = FixedSizeBinaryArray::from_data( DataType::FixedSizeBinary(12), values.into(), - array.validity().clone(), + array.validity().cloned(), ); fixed_len_bytes::array_to_page(&array, options, descriptor) } @@ -283,7 +283,7 @@ pub fn array_to_page( let array = PrimitiveArray::::from_data( DataType::Int32, values, - array.validity().clone(), + array.validity().cloned(), ); primitive::array_to_page::(&array, options, descriptor) } else if precision <= 18 { @@ -292,7 +292,7 @@ pub fn array_to_page( let array = PrimitiveArray::::from_data( DataType::Int64, values, - array.validity().clone(), + array.validity().cloned(), ); primitive::array_to_page::(&array, options, descriptor) } else { @@ -307,7 +307,7 @@ pub fn array_to_page( let array = FixedSizeBinaryArray::from_data( DataType::FixedSizeBinary(size as i32), values.into(), - array.validity().clone(), + array.validity().cloned(), ); fixed_len_bytes::array_to_page(&array, options, descriptor) } @@ -338,7 +338,7 @@ macro_rules! dyn_nested_prim { fn list_array_to_page( offsets: &[O], - validity: &Option, + validity: Option<&Bitmap>, values: &dyn Array, descriptor: ColumnDescriptor, options: WriteOptions, diff --git a/src/io/parquet/write/utils.rs b/src/io/parquet/write/utils.rs index 7850ea724e6..8a96a3e6bff 100644 --- a/src/io/parquet/write/utils.rs +++ b/src/io/parquet/write/utils.rs @@ -45,7 +45,7 @@ fn encode_iter>( pub fn write_def_levels( writer: &mut Vec, is_optional: bool, - validity: &Option, + validity: Option<&Bitmap>, len: usize, version: Version, ) -> Result<()> { diff --git a/tests/it/array/binary/mod.rs b/tests/it/array/binary/mod.rs index 2cb5a374541..69905af8adb 100644 --- a/tests/it/array/binary/mod.rs +++ b/tests/it/array/binary/mod.rs @@ -21,7 +21,7 @@ fn basics() { assert_eq!(array.offsets().as_slice(), &[0, 5, 5, 11]); assert_eq!( array.validity(), - &Some(Bitmap::from_u8_slice(&[0b00000101], 3)) + Some(&Bitmap::from_u8_slice(&[0b00000101], 3)) ); assert!(array.is_valid(0)); assert!(!array.is_valid(1)); @@ -31,7 +31,7 @@ fn basics() { DataType::Binary, array.offsets().clone(), array.values().clone(), - array.validity().clone(), + array.validity().cloned(), ); assert_eq!(array, array2); @@ -48,14 +48,14 @@ fn empty() { let array = BinaryArray::::new_empty(DataType::Binary); assert_eq!(array.values().as_slice(), b""); assert_eq!(array.offsets().as_slice(), &[0]); - assert_eq!(array.validity(), &None); + assert_eq!(array.validity(), None); } #[test] fn from() { let array = BinaryArray::::from(&[Some(b"hello".as_ref()), Some(b" ".as_ref()), None]); - let a = array.validity().as_ref().unwrap(); + let a = array.validity().unwrap(); assert_eq!(a, &Bitmap::from([true, true, false])); } @@ -80,7 +80,7 @@ fn with_validity() { let array = array.with_validity(None); let a = array.validity(); - assert_eq!(a, &None); + assert_eq!(a, None); } #[test] diff --git a/tests/it/array/binary/mutable.rs b/tests/it/array/binary/mutable.rs index e7788339140..c42431b15ee 100644 --- a/tests/it/array/binary/mutable.rs +++ b/tests/it/array/binary/mutable.rs @@ -7,5 +7,5 @@ fn push_null() { array.push::<&str>(None); let array: BinaryArray = array.into(); - assert_eq!(array.validity(), &Some(Bitmap::from([false]))); + assert_eq!(array.validity(), Some(&Bitmap::from([false]))); } diff --git a/tests/it/array/boolean/mod.rs b/tests/it/array/boolean/mod.rs index f2376878120..454414ac947 100644 --- a/tests/it/array/boolean/mod.rs +++ b/tests/it/array/boolean/mod.rs @@ -18,7 +18,7 @@ fn basics() { assert_eq!(array.values(), &Bitmap::from_u8_slice(&[0b00000001], 3)); assert_eq!( array.validity(), - &Some(Bitmap::from_u8_slice(&[0b00000101], 3)) + Some(&Bitmap::from_u8_slice(&[0b00000101], 3)) ); assert!(array.is_valid(0)); assert!(!array.is_valid(1)); @@ -27,7 +27,7 @@ fn basics() { let array2 = BooleanArray::from_data( DataType::Boolean, array.values().clone(), - array.validity().clone(), + array.validity().cloned(), ); assert_eq!(array, array2); @@ -40,7 +40,7 @@ fn basics() { fn empty() { let array = BooleanArray::new_empty(DataType::Boolean); assert_eq!(array.values().len(), 0); - assert_eq!(array.validity(), &None); + assert_eq!(array.validity(), None); } #[test] diff --git a/tests/it/array/boolean/mutable.rs b/tests/it/array/boolean/mutable.rs index d3d8a3228e3..6b4522b99b9 100644 --- a/tests/it/array/boolean/mutable.rs +++ b/tests/it/array/boolean/mutable.rs @@ -61,6 +61,6 @@ fn reserve() { ); a.reserve(10); - assert!(a.validity().as_ref().unwrap().capacity() > 0); + assert!(a.validity().unwrap().capacity() > 0); assert!(a.values().capacity() > 0) } diff --git a/tests/it/array/fixed_size_binary/mutable.rs b/tests/it/array/fixed_size_binary/mutable.rs index 7373182084b..65779e1e136 100644 --- a/tests/it/array/fixed_size_binary/mutable.rs +++ b/tests/it/array/fixed_size_binary/mutable.rs @@ -13,7 +13,7 @@ fn basic() { assert_eq!(a.len(), 2); assert_eq!(a.data_type(), &DataType::FixedSizeBinary(2)); assert_eq!(a.values(), &MutableBuffer::from([1, 2, 3, 4])); - assert_eq!(a.validity(), &None); + assert_eq!(a.validity(), None); assert_eq!(a.value(1), &[3, 4]); assert_eq!(unsafe { a.value_unchecked(1) }, &[3, 4]); } @@ -65,5 +65,5 @@ fn push_null() { array.push::<&[u8]>(None); let array: FixedSizeBinaryArray = array.into(); - assert_eq!(array.validity(), &Some(Bitmap::from([false]))); + assert_eq!(array.validity(), Some(&Bitmap::from([false]))); } diff --git a/tests/it/array/growable/utils.rs b/tests/it/array/growable/utils.rs index 1b6f5ff55e1..981e14ca767 100644 --- a/tests/it/array/growable/utils.rs +++ b/tests/it/array/growable/utils.rs @@ -44,7 +44,7 @@ pub(super) fn build_extend_null_bits(array: &dyn Array, use_validity: bool) -> E #[inline] pub(super) fn extend_validity( mutable_validity: &mut MutableBitmap, - validity: &Option, + validity: Option<&Bitmap>, start: usize, len: usize, use_validity: bool, diff --git a/tests/it/array/primitive/mod.rs b/tests/it/array/primitive/mod.rs index 96f121dbdf8..7e3a0532c3f 100644 --- a/tests/it/array/primitive/mod.rs +++ b/tests/it/array/primitive/mod.rs @@ -22,7 +22,7 @@ fn basics() { assert_eq!(array.values().as_slice(), &[1, 0, 10]); assert_eq!( array.validity(), - &Some(Bitmap::from_u8_slice(&[0b00000101], 3)) + Some(&Bitmap::from_u8_slice(&[0b00000101], 3)) ); assert!(array.is_valid(0)); assert!(!array.is_valid(1)); @@ -31,7 +31,7 @@ fn basics() { let array2 = Int32Array::from_data( DataType::Int32, array.values().clone(), - array.validity().clone(), + array.validity().cloned(), ); assert_eq!(array, array2); @@ -50,7 +50,7 @@ fn basics() { fn empty() { let array = Int32Array::new_empty(DataType::Int32); assert_eq!(array.values().len(), 0); - assert_eq!(array.validity(), &None); + assert_eq!(array.validity(), None); } #[test] diff --git a/tests/it/array/primitive/mutable.rs b/tests/it/array/primitive/mutable.rs index ecc1fd8f994..f54167eb3f4 100644 --- a/tests/it/array/primitive/mutable.rs +++ b/tests/it/array/primitive/mutable.rs @@ -88,7 +88,7 @@ fn set() { fn from_iter() { let a = MutablePrimitiveArray::::from_iter((0..2).map(Some)); assert_eq!(a.len(), 2); - assert_eq!(a.validity(), &None); + assert_eq!(a.validity(), None); } #[test] @@ -103,25 +103,25 @@ fn only_nulls() { a.push(None); a.push(None); let a: PrimitiveArray = a.into(); - assert_eq!(a.validity(), &Some(Bitmap::from([false, false]))); + assert_eq!(a.validity(), Some(&Bitmap::from([false, false]))); } #[test] fn from_trusted_len() { let a = MutablePrimitiveArray::::from_trusted_len_iter(vec![Some(1), None].into_iter()); let a: PrimitiveArray = a.into(); - assert_eq!(a.validity(), &Some(Bitmap::from([true, false]))); + assert_eq!(a.validity(), Some(&Bitmap::from([true, false]))); } #[test] fn extend_trusted_len() { let mut a = MutablePrimitiveArray::::new(); a.extend_trusted_len(vec![Some(1), Some(2)].into_iter()); - assert_eq!(a.validity(), &None); + assert_eq!(a.validity(), None); a.extend_trusted_len(vec![None, Some(4)].into_iter()); assert_eq!( a.validity(), - &Some(MutableBitmap::from([true, true, false, true])) + Some(&MutableBitmap::from([true, true, false, true])) ); assert_eq!(a.values(), &MutableBuffer::::from([1, 2, 0, 4])); } @@ -130,7 +130,7 @@ fn extend_trusted_len() { fn extend_trusted_len_values() { let mut a = MutablePrimitiveArray::::new(); a.extend_trusted_len_values(vec![1, 2, 3].into_iter()); - assert_eq!(a.validity(), &None); + assert_eq!(a.validity(), None); assert_eq!(a.values(), &MutableBuffer::::from([1, 2, 3])); let mut a = MutablePrimitiveArray::::new(); @@ -138,7 +138,7 @@ fn extend_trusted_len_values() { a.extend_trusted_len_values(vec![1, 2].into_iter()); assert_eq!( a.validity(), - &Some(MutableBitmap::from([false, true, true])) + Some(&MutableBitmap::from([false, true, true])) ); } @@ -146,7 +146,7 @@ fn extend_trusted_len_values() { fn extend_from_slice() { let mut a = MutablePrimitiveArray::::new(); a.extend_from_slice(&[1, 2, 3]); - assert_eq!(a.validity(), &None); + assert_eq!(a.validity(), None); assert_eq!(a.values(), &MutableBuffer::::from([1, 2, 3])); let mut a = MutablePrimitiveArray::::new(); @@ -154,7 +154,7 @@ fn extend_from_slice() { a.extend_from_slice(&[1, 2]); assert_eq!( a.validity(), - &Some(MutableBitmap::from([false, true, true])) + Some(&MutableBitmap::from([false, true, true])) ); } @@ -162,9 +162,9 @@ fn extend_from_slice() { fn set_validity() { let mut a = MutablePrimitiveArray::::new(); a.extend_trusted_len(vec![Some(1), Some(2)].into_iter()); - assert_eq!(a.validity(), &None); + assert_eq!(a.validity(), None); a.set_validity(Some(MutableBitmap::from([false, true]))); - assert_eq!(a.validity(), &Some(MutableBitmap::from([false, true]))); + assert_eq!(a.validity(), Some(&MutableBitmap::from([false, true]))); } #[test] diff --git a/tests/it/array/utf8/mod.rs b/tests/it/array/utf8/mod.rs index c18dbacd880..a81961dc817 100644 --- a/tests/it/array/utf8/mod.rs +++ b/tests/it/array/utf8/mod.rs @@ -16,7 +16,7 @@ fn basics() { assert_eq!(array.offsets().as_slice(), &[0, 5, 5, 11]); assert_eq!( array.validity(), - &Some(Bitmap::from_u8_slice(&[0b00000101], 3)) + Some(&Bitmap::from_u8_slice(&[0b00000101], 3)) ); assert!(array.is_valid(0)); assert!(!array.is_valid(1)); @@ -26,7 +26,7 @@ fn basics() { DataType::Utf8, array.offsets().clone(), array.values().clone(), - array.validity().clone(), + array.validity().cloned(), ); assert_eq!(array, array2); @@ -43,14 +43,14 @@ fn empty() { let array = Utf8Array::::new_empty(DataType::Utf8); assert_eq!(array.values().as_slice(), b""); assert_eq!(array.offsets().as_slice(), &[0]); - assert_eq!(array.validity(), &None); + assert_eq!(array.validity(), None); } #[test] fn from() { let array = Utf8Array::::from(&[Some("hello"), Some(" "), None]); - let a = array.validity().as_ref().unwrap(); + let a = array.validity().unwrap(); assert_eq!(a, &Bitmap::from([true, true, false])); } diff --git a/tests/it/array/utf8/mutable.rs b/tests/it/array/utf8/mutable.rs index 6afd6c666f2..71187849c47 100644 --- a/tests/it/array/utf8/mutable.rs +++ b/tests/it/array/utf8/mutable.rs @@ -17,7 +17,7 @@ fn push_null() { array.push::<&str>(None); let array: Utf8Array = array.into(); - assert_eq!(array.validity(), &Some(Bitmap::from([false]))); + assert_eq!(array.validity(), Some(&Bitmap::from([false]))); } /// Safety guarantee @@ -60,7 +60,7 @@ fn test_extend_trusted_len_values() { assert_eq!(array.offsets().as_slice(), &[0, 2, 7, 12, 17, 17]); assert_eq!( array.validity(), - &Some(Bitmap::from_u8_slice(&[0b00001111], 5)) + Some(&Bitmap::from_u8_slice(&[0b00001111], 5)) ); } @@ -78,6 +78,6 @@ fn test_extend_trusted_len() { assert_eq!(array.offsets().as_slice(), &[0, 2, 7, 7, 12, 17]); assert_eq!( array.validity(), - &Some(Bitmap::from_u8_slice(&[0b00011011], 5)) + Some(&Bitmap::from_u8_slice(&[0b00011011], 5)) ); }