From f7c3daf3da2cdeda916db91a66f6ef92752a8991 Mon Sep 17 00:00:00 2001 From: Ritchie Vink Date: Wed, 18 May 2022 08:48:58 +0200 Subject: [PATCH] add test and derive clone --- src/array/primitive/mutable.rs | 2 +- src/bitmap/mutable.rs | 1 + tests/it/array/primitive/mutable.rs | 6 ++++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/array/primitive/mutable.rs b/src/array/primitive/mutable.rs index a5756735d3d..24768f83616 100644 --- a/src/array/primitive/mutable.rs +++ b/src/array/primitive/mutable.rs @@ -14,7 +14,7 @@ use super::PrimitiveArray; /// The Arrow's equivalent to `Vec>` where `T` is byte-size (e.g. `i32`). /// Converting a [`MutablePrimitiveArray`] into a [`PrimitiveArray`] is `O(1)`. -#[derive(Debug)] +#[derive(Debug, Clone)] pub struct MutablePrimitiveArray { data_type: DataType, values: Vec, diff --git a/src/bitmap/mutable.rs b/src/bitmap/mutable.rs index 94e0b00d7c7..c8e5e046491 100644 --- a/src/bitmap/mutable.rs +++ b/src/bitmap/mutable.rs @@ -14,6 +14,7 @@ use super::Bitmap; /// The main difference against [`Vec`] is that a bitmap cannot be represented as `&[bool]`. /// # Implementation /// This container is backed by [`Vec`]. +#[derive(Clone)] pub struct MutableBitmap { buffer: Vec, // invariant: length.saturating_add(7) / 8 == buffer.len(); diff --git a/tests/it/array/primitive/mutable.rs b/tests/it/array/primitive/mutable.rs index 4857c225982..99f897076dd 100644 --- a/tests/it/array/primitive/mutable.rs +++ b/tests/it/array/primitive/mutable.rs @@ -270,6 +270,12 @@ fn set_validity() { a.extend_trusted_len(vec![Some(1), Some(2)].into_iter()); let validity = a.validity().unwrap(); assert_eq!(validity.null_count(), 0); + + // test that upon conversion to array the bitmap is set to None + let arr: PrimitiveArray<_> = a.clone().into(); + assert_eq!(arr.validity(), None); + + // test set_validity a.set_validity(Some(MutableBitmap::from([false, true]))); assert_eq!(a.validity(), Some(&MutableBitmap::from([false, true]))); }