Skip to content
This repository has been archived by the owner on Feb 18, 2024. It is now read-only.

Commit

Permalink
Added MutableArray::reserve (#1202)
Browse files Browse the repository at this point in the history
  • Loading branch information
jorgecarleitao committed Aug 3, 2022
1 parent 3f3febf commit 72de99c
Show file tree
Hide file tree
Showing 14 changed files with 95 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/array/binary/mutable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,10 @@ impl<O: Offset> MutableArray for MutableBinaryArray<O> {
self.push::<&[u8]>(None)
}

fn reserve(&mut self, additional: usize) {
self.reserve(additional)
}

fn shrink_to_fit(&mut self) {
self.shrink_to_fit()
}
Expand Down
4 changes: 4 additions & 0 deletions src/array/boolean/mutable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -495,6 +495,10 @@ impl MutableArray for MutableBooleanArray {
self.push(None)
}

fn reserve(&mut self, additional: usize) {
self.reserve(additional)
}

fn shrink_to_fit(&mut self) {
self.shrink_to_fit()
}
Expand Down
10 changes: 10 additions & 0 deletions src/array/dictionary/mutable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,11 @@ impl<K: DictionaryKey, M: MutableArray> MutableDictionaryArray<K, M> {
Box::new(a)
}

/// Reserves `additional` slots.
pub fn reserve(&mut self, additional: usize) {
self.keys.reserve(additional);
}

/// Shrinks the capacity of the [`MutableDictionaryArray`] to fit its current length.
pub fn shrink_to_fit(&mut self) {
self.values.shrink_to_fit();
Expand Down Expand Up @@ -196,6 +201,11 @@ impl<K: DictionaryKey, M: 'static + MutableArray> MutableArray for MutableDictio
fn push_null(&mut self) {
self.keys.push(None)
}

fn reserve(&mut self, additional: usize) {
self.reserve(additional)
}

fn shrink_to_fit(&mut self) {
self.shrink_to_fit()
}
Expand Down
12 changes: 12 additions & 0 deletions src/array/fixed_size_binary/mutable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,14 @@ impl MutableFixedSizeBinaryArray {
std::slice::from_raw_parts(self.values.as_ptr().add(i * self.size), self.size)
}

/// Reserves `additional` slots.
pub fn reserve(&mut self, additional: usize) {
self.values.reserve(additional * self.size);
if let Some(x) = self.validity.as_mut() {
x.reserve(additional)
}
}

/// Shrinks the capacity of the [`MutableFixedSizeBinaryArray`] to fit its current length.
pub fn shrink_to_fit(&mut self) {
self.values.shrink_to_fit();
Expand Down Expand Up @@ -238,6 +246,10 @@ impl MutableArray for MutableFixedSizeBinaryArray {
self.push::<&[u8]>(None);
}

fn reserve(&mut self, additional: usize) {
self.reserve(additional)
}

fn shrink_to_fit(&mut self) {
self.shrink_to_fit()
}
Expand Down
13 changes: 13 additions & 0 deletions src/array/fixed_size_list/mutable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,15 @@ impl<M: MutableArray> MutableFixedSizeListArray<M> {
None => self.init_validity(),
}
}

/// Reserves `additional` slots.
pub fn reserve(&mut self, additional: usize) {
self.values.reserve(additional);
if let Some(x) = self.validity.as_mut() {
x.reserve(additional)
}
}

/// Shrinks the capacity of the [`MutableFixedSizeListArray`] to fit its current length.
pub fn shrink_to_fit(&mut self) {
self.values.shrink_to_fit();
Expand Down Expand Up @@ -157,6 +166,10 @@ impl<M: MutableArray + 'static> MutableArray for MutableFixedSizeListArray<M> {
}
}

fn reserve(&mut self, additional: usize) {
self.reserve(additional)
}

fn shrink_to_fit(&mut self) {
self.shrink_to_fit()
}
Expand Down
13 changes: 13 additions & 0 deletions src/array/list/mutable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,14 @@ impl<O: Offset, M: MutableArray> MutableListArray<O, M> {
Box::new(a)
}

/// Reserves `additional` slots.
pub fn reserve(&mut self, additional: usize) {
self.offsets.reserve(additional);
if let Some(x) = self.validity.as_mut() {
x.reserve(additional)
}
}

/// Shrinks the capacity of the [`MutableListArray`] to fit its current length.
pub fn shrink_to_fit(&mut self) {
self.values.shrink_to_fit();
Expand Down Expand Up @@ -254,6 +262,11 @@ impl<O: Offset, M: MutableArray + 'static> MutableArray for MutableListArray<O,
fn push_null(&mut self) {
self.push_null()
}

fn reserve(&mut self, additional: usize) {
self.reserve(additional)
}

fn shrink_to_fit(&mut self) {
self.shrink_to_fit();
}
Expand Down
3 changes: 3 additions & 0 deletions src/array/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,9 @@ pub trait MutableArray: std::fmt::Debug + Send + Sync {
.unwrap_or(true)
}

/// Reserves additional slots to its capacity.
fn reserve(&mut self, additional: usize);

/// Shrink the array to fit its length.
fn shrink_to_fit(&mut self);
}
Expand Down
4 changes: 4 additions & 0 deletions src/array/primitive/mutable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -419,6 +419,10 @@ impl<T: NativeType> MutableArray for MutablePrimitiveArray<T> {
self.push(None)
}

fn reserve(&mut self, additional: usize) {
self.reserve(additional)
}

fn shrink_to_fit(&mut self) {
self.shrink_to_fit()
}
Expand Down
4 changes: 4 additions & 0 deletions src/array/utf8/mutable.rs
Original file line number Diff line number Diff line change
Expand Up @@ -318,6 +318,10 @@ impl<O: Offset> MutableArray for MutableUtf8Array<O> {
self.push::<&str>(None)
}

fn reserve(&mut self, additional: usize) {
self.reserve(additional, 0)
}

fn shrink_to_fit(&mut self) {
self.shrink_to_fit()
}
Expand Down
12 changes: 12 additions & 0 deletions src/io/avro/read/nested.rs
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,10 @@ impl<O: Offset> MutableArray for DynMutableListArray<O> {
self.push_null()
}

fn reserve(&mut self, _: usize) {
todo!();
}

fn shrink_to_fit(&mut self) {
todo!();
}
Expand Down Expand Up @@ -195,6 +199,10 @@ impl MutableArray for FixedItemsUtf8Dictionary {
self.push_null()
}

fn reserve(&mut self, _: usize) {
todo!();
}

fn shrink_to_fit(&mut self) {
todo!();
}
Expand Down Expand Up @@ -287,6 +295,10 @@ impl MutableArray for DynMutableStructArray {
self.push_null()
}

fn reserve(&mut self, _: usize) {
todo!();
}

fn shrink_to_fit(&mut self) {
todo!();
}
Expand Down
4 changes: 4 additions & 0 deletions src/io/parquet/read/statistics/dictionary.rs
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@ impl MutableArray for DynMutableDictionary {
todo!()
}

fn reserve(&mut self, _: usize) {
todo!();
}

fn shrink_to_fit(&mut self) {
todo!()
}
Expand Down
4 changes: 4 additions & 0 deletions src/io/parquet/read/statistics/list.rs
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,10 @@ impl MutableArray for DynMutableListArray {
todo!()
}

fn reserve(&mut self, _: usize) {
todo!();
}

fn shrink_to_fit(&mut self) {
todo!()
}
Expand Down
4 changes: 4 additions & 0 deletions src/io/parquet/read/statistics/map.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,10 @@ impl MutableArray for DynMutableMapArray {
todo!()
}

fn reserve(&mut self, _: usize) {
todo!();
}

fn shrink_to_fit(&mut self) {
todo!()
}
Expand Down
4 changes: 4 additions & 0 deletions src/io/parquet/read/statistics/struct_.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,10 @@ impl MutableArray for DynMutableStructArray {
todo!()
}

fn reserve(&mut self, _: usize) {
todo!();
}

fn shrink_to_fit(&mut self) {
todo!()
}
Expand Down

0 comments on commit 72de99c

Please sign in to comment.