From 8a8cde60954cb7ece56f2efcf3e6a5ad0a555eed Mon Sep 17 00:00:00 2001 From: Ritchie Vink Date: Thu, 14 Oct 2021 19:55:35 +0200 Subject: [PATCH] improve utf8 init validity --- src/array/boolean/mutable.rs | 2 +- src/array/list/mutable.rs | 2 +- src/array/primitive/mutable.rs | 2 +- src/array/utf8/mutable.rs | 9 ++++----- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/array/boolean/mutable.rs b/src/array/boolean/mutable.rs index a8f0a2bc9df..75465f4b441 100644 --- a/src/array/boolean/mutable.rs +++ b/src/array/boolean/mutable.rs @@ -170,7 +170,7 @@ impl MutableBooleanArray { } fn init_validity(&mut self) { - let mut validity = MutableBitmap::new(); + let mut validity = MutableBitmap::with_capacity(self.values.capacity()); validity.extend_constant(self.len(), true); validity.set(self.len() - 1, false); self.validity = Some(validity) diff --git a/src/array/list/mutable.rs b/src/array/list/mutable.rs index 93d0103ac51..8f4e36460cf 100644 --- a/src/array/list/mutable.rs +++ b/src/array/list/mutable.rs @@ -177,7 +177,7 @@ impl MutableListArray { fn init_validity(&mut self) { let len = self.offsets.len() - 1; - let mut validity = MutableBitmap::new(); + let mut validity = MutableBitmap::with_capacity(self.offsets.capacity()); validity.extend_constant(len, true); validity.set(len - 1, false); self.validity = Some(validity) diff --git a/src/array/primitive/mutable.rs b/src/array/primitive/mutable.rs index 7c4f7d7c518..15c7b9cd4a3 100644 --- a/src/array/primitive/mutable.rs +++ b/src/array/primitive/mutable.rs @@ -217,7 +217,7 @@ impl MutablePrimitiveArray { } fn init_validity(&mut self) { - let mut validity = MutableBitmap::new(); + let mut validity = MutableBitmap::with_capacity(self.values.capacity()); validity.extend_constant(self.len(), true); validity.set(self.len() - 1, false); self.validity = Some(validity) diff --git a/src/array/utf8/mutable.rs b/src/array/utf8/mutable.rs index 4503265e3d0..d3fb8bdbc82 100644 --- a/src/array/utf8/mutable.rs +++ b/src/array/utf8/mutable.rs @@ -152,11 +152,10 @@ impl MutableUtf8Array { } fn init_validity(&mut self) { - self.validity = Some(MutableBitmap::from_trusted_len_iter( - std::iter::repeat(true) - .take(self.len() - 1) - .chain(std::iter::once(false)), - )) + let mut validity = MutableBitmap::with_capacity(self.offsets.capacity()); + validity.extend_constant(self.len(), true); + validity.set(self.len() - 1, false); + self.validity = Some(validity); } /// Converts itself into an [`Array`].