From c50a3d50d5ed12d4a88b6365f7704befa6733e17 Mon Sep 17 00:00:00 2001 From: Joe Isaacs Date: Fri, 1 May 2026 15:08:51 +0100 Subject: [PATCH 01/12] wip Signed-off-by: Joe Isaacs --- vortex-array/Cargo.toml | 4 + vortex-array/src/array/erased.rs | 186 ++++++++++++++++++++----------- vortex-array/src/array/mod.rs | 102 +++-------------- vortex-array/src/array/typed.rs | 153 +++++++++++++------------ 4 files changed, 222 insertions(+), 223 deletions(-) diff --git a/vortex-array/Cargo.toml b/vortex-array/Cargo.toml index f8676d76ef0..281cf478d45 100644 --- a/vortex-array/Cargo.toml +++ b/vortex-array/Cargo.toml @@ -192,3 +192,7 @@ harness = false [[bench]] name = "listview_builder_extend" harness = false + +[[bench]] +name = "slice_dict" +harness = false diff --git a/vortex-array/src/array/erased.rs b/vortex-array/src/array/erased.rs index 7fe8ec953f8..01130a63092 100644 --- a/vortex-array/src/array/erased.rs +++ b/vortex-array/src/array/erased.rs @@ -4,6 +4,7 @@ use std::any::type_name; use std::fmt::Debug; use std::fmt::Formatter; +use std::hash::Hash; use std::hash::Hasher; use std::ops::Range; use std::sync::Arc; @@ -32,6 +33,8 @@ use crate::aggregate_fn::fns::sum::sum; use crate::array::ArrayId; use crate::array::ArrayInner; use crate::array::DynArray; +use crate::array::ArrayMeta; +use crate::array::ArrayStore; use crate::arrays::Bool; use crate::arrays::Constant; use crate::arrays::DictArray; @@ -72,13 +75,35 @@ impl Iterator for DepthFirstArrayIterator { } /// A reference-counted pointer to a type-erased array. +/// +/// Wraps `Arc>` — a single 16-byte fat pointer. +/// Metadata (`len`, `dtype`, `encoding_id`) lives in `ArrayStore::meta` and is +/// accessed as a normal struct field read — no vtable dispatch, no extra allocation. #[derive(Clone)] -pub struct ArrayRef(Arc); +pub struct ArrayRef(Arc>); impl ArrayRef { - /// Create from an `Arc`. - pub(crate) fn from_inner(inner: Arc) -> Self { - Self(inner) + /// Create from an `Arc>`. + pub(crate) fn from_store(store: Arc>) -> Self { + Self(store) + } + + /// Returns a reference to the array metadata. + #[inline(always)] + pub(crate) fn meta(&self) -> &ArrayMeta { + &self.0.meta + } + + /// Returns a reference to the `dyn DynArray` inside the store. + #[inline(always)] + pub(crate) fn dyn_array(&self) -> &dyn DynArray { + &self.0.data + } + + /// Returns a mutable reference to the store if this is the sole owner. + #[inline(always)] + pub(crate) fn store_mut(&mut self) -> Option<&mut ArrayStore> { + Arc::get_mut(&mut self.0) } /// Returns the Arc::as_ptr().addr() of the underlying array. @@ -88,22 +113,33 @@ impl ArrayRef { Arc::as_ptr(&self.0).addr() } - /// Returns a reference to the inner Arc. - #[inline(always)] - pub(crate) fn inner(&self) -> &Arc { - &self.0 - } - - /// Returns a reference to the inner Arc. - #[inline(always)] - pub(crate) fn inner_mut(&mut self) -> &mut Arc { - &mut self.0 + /// Downcast the store to a concrete `ArrayStore>`. + /// + /// Uses the same raw-pointer technique as `Arc::downcast`. + #[allow(dead_code)] + pub(crate) fn downcast_store( + self, + ) -> Result>>, Self> { + if self.0.data.as_any().is::>() { + Ok(unsafe { self.downcast_store_unchecked() }) + } else { + Err(self) + } } - /// Consumes the array reference, returning the owned backing allocation. + /// Downcast without a runtime type check. + /// + /// # Safety + /// The caller must guarantee the concrete type behind `dyn DynArray` is `ArrayInner`. #[inline(always)] - pub(crate) fn into_inner(self) -> Arc { - self.0 + pub(crate) unsafe fn downcast_store_unchecked( + self, + ) -> Arc>> { + debug_assert!(self.0.data.as_any().is::>()); + let raw = Arc::into_raw(self.0); + // SAFETY: caller guarantees the concrete type. The allocation was originally + // `Arc>>` coerced to `Arc>`. + unsafe { Arc::from_raw(raw as *const ArrayStore>) } } /// Returns true if the two ArrayRefs point to the same allocation. @@ -114,44 +150,66 @@ impl ArrayRef { impl Debug for ArrayRef { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - Debug::fmt(&*self.0, f) + f.debug_struct("Array") + .field("encoding", &self.meta().encoding_id) + .field("dtype", &self.meta().dtype) + .field("len", &self.meta().len) + .field("data", &self.0.data) + .finish() } } impl ArrayHash for ArrayRef { fn array_hash(&self, state: &mut H, precision: crate::Precision) { - self.0.dyn_array_hash(state as &mut dyn Hasher, precision); + self.meta().len.hash(state); + self.meta().dtype.hash(state); + self.meta().encoding_id.hash(state); + self.meta().slots.len().hash(state); + for slot in &self.meta().slots { + slot.array_hash(state, precision); + } + self.0.data.dyn_array_hash(state as &mut dyn Hasher, precision); } } impl ArrayEq for ArrayRef { fn array_eq(&self, other: &Self, precision: crate::Precision) -> bool { - self.0.dyn_array_eq(other, precision) + self.meta().len == other.meta().len + && self.meta().dtype == other.meta().dtype + && self.meta().encoding_id == other.meta().encoding_id + && self.meta().slots.len() == other.meta().slots.len() + && self + .meta() + .slots + .iter() + .zip(other.meta().slots.iter()) + .all(|(slot, other_slot)| slot.array_eq(other_slot, precision)) + && self.0.data.dyn_array_eq(other, precision) } } impl ArrayRef { /// Returns the length of the array. #[inline] pub fn len(&self) -> usize { - self.0.len() + self.meta().len } /// Returns whether the array is empty (has zero rows). #[inline] pub fn is_empty(&self) -> bool { - self.0.len() == 0 + self.meta().len == 0 } /// Returns the logical Vortex [`DType`] of the array. #[inline] pub fn dtype(&self) -> &DType { - self.0.dtype() + &self.meta().dtype } /// Returns the encoding ID of the array. #[inline] pub fn encoding_id(&self) -> ArrayId { - self.0.encoding_id() + self.meta().encoding_id } /// Performs a constant-time slice of the array. @@ -227,7 +285,7 @@ impl ArrayRef { if self.is_invalid(index, ctx)? { return Ok(Scalar::null(self.dtype().clone())); } - let scalar = self.0.execute_scalar(self, index, ctx)?; + let scalar = self.0.data.execute_scalar(self, index, ctx)?; vortex_ensure!(self.dtype() == scalar.dtype(), "Scalar dtype mismatch"); Ok(scalar) } @@ -304,7 +362,7 @@ impl ArrayRef { /// Returns the [`Validity`] of the array. pub fn validity(&self) -> VortexResult { - self.0.validity(self) + self.0.data.validity(self) } /// Returns the canonical representation of the array. @@ -327,12 +385,12 @@ impl ArrayRef { builder: &mut dyn ArrayBuilder, ctx: &mut ExecutionCtx, ) -> VortexResult<()> { - self.0.append_to_builder(self, builder, ctx) + self.0.data.append_to_builder(self, builder, ctx) } /// Returns the statistics of the array. pub fn statistics(&self) -> StatsSetRef<'_> { - self.0.statistics().to_ref(self) + self.0.meta.stats.to_ref(self) } /// Does the array match the given matcher. @@ -367,7 +425,7 @@ impl ArrayRef { /// Returns a reference to the typed `ArrayInner` if this array matches the given vtable type. pub fn as_typed(&self) -> Option> { - let inner = self.0.as_any().downcast_ref::>()?; + let inner = self.0.data.as_any().downcast_ref::>()?; Some(unsafe { ArrayView::new_unchecked(self, &inner.data) }) } @@ -453,9 +511,8 @@ impl ArrayRef { mut self, slot_idx: usize, ) -> VortexResult<(ArrayRef, ArrayRef)> { - if let Some(inner) = Arc::get_mut(&mut self.0) { - // SAFETY: ensured by the caller. - let child = unsafe { inner.slots_mut()[slot_idx].take() } + if let Some(store) = Arc::get_mut(&mut self.0) { + let child = store.meta.slots[slot_idx].take() .vortex_expect("take_slot_unchecked cannot take an absent slot"); return Ok((self, child)); } @@ -472,7 +529,7 @@ impl ArrayRef { // SAFETY: ensured by the caller — the None slot is either put back or driven to completion // via the builder path before the parent escapes the executor. - let new_parent = unsafe { self.0.with_slots_unchecked(&self, new_slots) }; + let new_parent = unsafe { self.0.data.with_slots_unchecked(&self, new_slots) }; Ok((new_parent, child)) } @@ -488,16 +545,15 @@ impl ArrayRef { slot_idx: usize, replacement: ArrayRef, ) -> VortexResult { - if let Some(inner) = Arc::get_mut(&mut self.0) { - // # Safety: ensured by the caller. - unsafe { inner.slots_mut()[slot_idx] = Some(replacement) }; + if let Some(store) = Arc::get_mut(&mut self.0) { + store.meta.slots[slot_idx] = Some(replacement); return Ok(self); } let mut slots = self.slots().to_vec(); slots[slot_idx] = Some(replacement); - let inner = Arc::clone(&self.0); - inner.with_slots(self, slots) + let store = Arc::clone(&self.0); + store.data.with_slots(self, slots) } /// Returns a new array with the provided slots. @@ -535,12 +591,12 @@ impl ArrayRef { ); } } - let inner = Arc::clone(&self.0); - inner.with_slots(self, slots) + let store = Arc::clone(&self.0); + store.data.with_slots(self, slots) } pub fn reduce(&self) -> VortexResult> { - self.0.reduce(self) + self.0.data.reduce(self) } pub fn reduce_parent( @@ -548,13 +604,13 @@ impl ArrayRef { parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { - self.0.reduce_parent(self, parent, child_idx) + self.0.data.reduce_parent(self, parent, child_idx) } pub(crate) fn execute_encoding(self, ctx: &mut ExecutionCtx) -> VortexResult { - let inner = Arc::as_ptr(&self.0); - // Safety the Arc outline the DynArray function call - unsafe { (&*inner).execute(self, ctx) } + let store = Arc::as_ptr(&self.0); + // SAFETY: the Arc outlives the DynArray function call + unsafe { (&*store).data.execute(self, ctx) } } /// Execute a single encoding step without applying `Done`-result postconditions. @@ -566,13 +622,11 @@ impl ArrayRef { self, ctx: &mut ExecutionCtx, ) -> VortexResult { - let inner = Arc::as_ptr(&self.0); - // Safety the Arc outline the DynArray function call - let inner = unsafe { &*inner }; - // SAFETY: `inner` points at the allocation owned by `self.0`. `self` stays alive for the + let store = Arc::as_ptr(&self.0); + // SAFETY: `store` points at the allocation owned by `self.0`. `self` stays alive for the // duration of the call, so the pointee remains valid. Avoiding an extra `Arc` clone here // preserves uniqueness so execute-time metadata cursors can use `Arc::get_mut`. - unsafe { inner.execute_unchecked(self, ctx) } + unsafe { (&*store).data.execute_unchecked(self, ctx) } } pub fn execute_parent( @@ -581,74 +635,74 @@ impl ArrayRef { child_idx: usize, ctx: &mut ExecutionCtx, ) -> VortexResult> { - self.0.execute_parent(self, parent, child_idx, ctx) + self.0.data.execute_parent(self, parent, child_idx, ctx) } // ArrayVisitor delegation methods /// Returns the children of the array. pub fn children(&self) -> Vec { - self.0.children(self) + self.0.data.children(self) } /// Returns the number of children of the array. pub fn nchildren(&self) -> usize { - self.0.nchildren(self) + self.0.data.nchildren(self) } /// Returns the nth child of the array without allocating a Vec. pub fn nth_child(&self, idx: usize) -> Option { - self.0.nth_child(self, idx) + self.0.data.nth_child(self, idx) } /// Returns the names of the children of the array. pub fn children_names(&self) -> Vec { - self.0.children_names(self) + self.0.data.children_names(self) } /// Returns the array's children with their names. pub fn named_children(&self) -> Vec<(String, ArrayRef)> { - self.0.named_children(self) + self.0.data.named_children(self) } /// Returns the data buffers of the array. pub fn buffers(&self) -> Vec { - self.0.buffers(self) + self.0.data.buffers(self) } /// Returns the buffer handles of the array. pub fn buffer_handles(&self) -> Vec { - self.0.buffer_handles(self) + self.0.data.buffer_handles(self) } /// Returns the names of the buffers of the array. pub fn buffer_names(&self) -> Vec { - self.0.buffer_names(self) + self.0.data.buffer_names(self) } /// Returns the array's buffers with their names. pub fn named_buffers(&self) -> Vec<(String, BufferHandle)> { - self.0.named_buffers(self) + self.0.data.named_buffers(self) } /// Returns the number of data buffers of the array. pub fn nbuffers(&self) -> usize { - self.0.nbuffers(self) + self.0.data.nbuffers(self) } /// Returns the slots of the array. pub fn slots(&self) -> &[Option] { - self.0.slots() + &self.0.meta.slots } /// Returns the name of the slot at the given index. pub fn slot_name(&self, idx: usize) -> String { - self.0.slot_name(self, idx) + self.0.data.slot_name(self, idx) } /// Formats a human-readable metadata description. pub fn metadata_fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - self.0.metadata_fmt(f) + self.0.data.metadata_fmt(f) } /// Returns whether all buffers are host-resident. @@ -691,11 +745,11 @@ impl Matcher for V { type Match<'a> = ArrayView<'a, V>; fn matches(array: &ArrayRef) -> bool { - array.0.as_any().is::>() + array.0.data.as_any().is::>() } fn try_match<'a>(array: &'a ArrayRef) -> Option> { - let inner = array.0.as_any().downcast_ref::>()?; + let inner = array.0.data.as_any().downcast_ref::>()?; // # Safety checked by `downcast_ref`. Some(unsafe { ArrayView::new_unchecked(array, &inner.data) }) } diff --git a/vortex-array/src/array/mod.rs b/vortex-array/src/array/mod.rs index 1ade2a5a083..1873ba5f418 100644 --- a/vortex-array/src/array/mod.rs +++ b/vortex-array/src/array/mod.rs @@ -4,8 +4,8 @@ use std::any::Any; use std::fmt::Debug; use std::fmt::Formatter; -use std::hash::Hash; use std::hash::Hasher; +use std::sync::Arc; use vortex_buffer::ByteBuffer; use vortex_error::VortexExpect; @@ -23,7 +23,6 @@ use crate::dtype::Nullability; use crate::executor::ExecutionResult; use crate::executor::ExecutionStep; use crate::scalar::Scalar; -use crate::stats::ArrayStats; use crate::validity::Validity; mod erased; @@ -59,28 +58,6 @@ pub(crate) trait DynArray: 'static + private::Sealed + Send + Sync + Debug { /// Returns the array as a mutable reference to a generic [`Any`] trait object. fn as_any_mut(&mut self) -> &mut dyn Any; - /// Converts an owned array allocation into an owned [`Any`] allocation for downcasting. - fn into_any_arc(self: std::sync::Arc) -> std::sync::Arc; - - /// Returns the length of the array. - fn len(&self) -> usize; - - /// Returns the logical Vortex [`DType`] of the array. - fn dtype(&self) -> &DType; - - /// Returns the slots of the array. - fn slots(&self) -> &[Option]; - - /// Returns mutable slots of the array. - /// - /// # Safety: any slot (Some(child)) that replaces an existing slot must have a compatible - /// DType and length. Currently compatible means equal, but there is no reason why that must - /// be the case. - unsafe fn slots_mut(&mut self) -> &mut [Option]; - - /// Returns the encoding ID of the array. - fn encoding_id(&self) -> ArrayId; - /// Returns the [`Validity`] of the array. fn validity(&self, this: &ArrayRef) -> VortexResult; @@ -94,9 +71,6 @@ pub(crate) trait DynArray: 'static + private::Sealed + Send + Sync + Debug { ctx: &mut ExecutionCtx, ) -> VortexResult<()>; - /// Returns the statistics of the array. - fn statistics(&self) -> &ArrayStats; - // --- Visitor methods (formerly in ArrayVisitor) --- /// Returns the children of the array. @@ -250,40 +224,16 @@ impl DynArray for ArrayInner { self } - fn into_any_arc(self: std::sync::Arc) -> std::sync::Arc { - self - } - - fn len(&self) -> usize { - self.len - } - - fn dtype(&self) -> &DType { - &self.dtype - } - - fn slots(&self) -> &[Option] { - &self.slots - } - - unsafe fn slots_mut(&mut self) -> &mut [Option] { - &mut self.slots - } - - fn encoding_id(&self) -> ArrayId { - self.vtable.id() - } - fn validity(&self, this: &ArrayRef) -> VortexResult { - if self.dtype.is_nullable() { + if this.dtype().is_nullable() { let view = unsafe { ArrayView::new_unchecked(this, &self.data) }; let validity = >::validity(view)?; if let Validity::Array(array) = &validity { - vortex_ensure!(array.len() == self.len, "Validity array length mismatch"); + vortex_ensure!(array.len() == this.len(), "Validity array length mismatch"); vortex_ensure!( matches!(array.dtype(), DType::Bool(Nullability::NonNullable)), "Validity array is not non-nullable boolean: {}", - self.vtable.id(), + this.encoding_id(), ); } Ok(validity) @@ -298,10 +248,10 @@ impl DynArray for ArrayInner { builder: &mut dyn ArrayBuilder, ctx: &mut ExecutionCtx, ) -> VortexResult<()> { - if builder.dtype() != &self.dtype { + if builder.dtype() != this.dtype() { vortex_panic!( "Builder dtype mismatch: expected {}, got {}", - self.dtype, + this.dtype(), builder.dtype(), ); } @@ -311,18 +261,14 @@ impl DynArray for ArrayInner { V::append_to_builder(view, builder, ctx)?; assert_eq!( - len + self.len, + len + this.len(), builder.len(), "Builder length mismatch after writing array for encoding {}", - self.vtable.id(), + this.encoding_id(), ); Ok(()) } - fn statistics(&self) -> &ArrayStats { - &self.stats - } - fn children(&self, this: &ArrayRef) -> Vec { let view = unsafe { ArrayView::new_unchecked(this, &self.data) }; (0..V::nchildren(view)).map(|i| V::child(view, i)).collect() @@ -394,32 +340,18 @@ impl DynArray for ArrayInner { fn dyn_array_hash(&self, state: &mut dyn Hasher, precision: crate::Precision) { let mut wrapper = HasherWrapper(state); - self.len.hash(&mut wrapper); - self.dtype.hash(&mut wrapper); - self.vtable.id().hash(&mut wrapper); - self.slots.len().hash(&mut wrapper); - for slot in &self.slots { - slot.array_hash(&mut wrapper, precision); - } + // Note: metadata (len, dtype, encoding_id) and slots are hashed by ArrayRef. self.data.array_hash(&mut wrapper, precision); } fn dyn_array_eq(&self, other: &ArrayRef, precision: crate::Precision) -> bool { + // Note: metadata (len, dtype, encoding_id) and slots are compared by ArrayRef. other - .inner() + .dyn_array() .as_any() .downcast_ref::() .is_some_and(|other_inner| { - self.len == other.len() - && self.dtype == *other.dtype() - && self.vtable.id() == other.encoding_id() - && self.slots.len() == other_inner.slots.len() - && self - .slots - .iter() - .zip(other_inner.slots.iter()) - .all(|(slot, other_slot)| slot.array_eq(other_slot, precision)) - && self.data.array_eq(&other_inner.data, precision) + self.data.array_eq(&other_inner.data, precision) }) } @@ -441,17 +373,17 @@ impl DynArray for ArrayInner { ) -> ArrayRef { // SAFETY: we intentionally skip `V::validate` here. Caller guarantees that the resulting // array is either repaired or not externally observed. - let inner = unsafe { - ArrayInner::::from_data_unchecked( + let store = unsafe { + ArrayInner::::store_unchecked( self.vtable.clone(), + this.len(), this.dtype().clone(), - self.len, self.data.clone(), slots, - self.stats.clone(), + this.meta().stats.clone(), ) }; - ArrayRef::from_inner(std::sync::Arc::new(inner)) + ArrayRef::from_store(Arc::new(store)) } fn reduce(&self, this: &ArrayRef) -> VortexResult> { diff --git a/vortex-array/src/array/typed.rs b/vortex-array/src/array/typed.rs index ffdbcc6f161..b1ca56aa03d 100644 --- a/vortex-array/src/array/typed.rs +++ b/vortex-array/src/array/typed.rs @@ -28,6 +28,31 @@ use crate::stats::StatsSet; use crate::stats::StatsSetRef; use crate::validity::Validity; +/// Common metadata for every array encoding. +/// +/// Stored in [`ArrayStore`] alongside the encoding-specific [`DynArray`] data. +/// [`ArrayRef`] reads these fields directly — no vtable dispatch. +pub(crate) struct ArrayMeta { + pub(crate) len: usize, + pub(crate) encoding_id: ArrayId, + pub(crate) dtype: DType, + pub(crate) slots: Vec>, + pub(crate) stats: ArrayStats, +} + +/// The combined allocation behind [`ArrayRef`]. +/// +/// Wraps an [`ArrayMeta`] (common fields) together with the encoding-specific +/// `data` (a concrete [`ArrayInner`] erased to `dyn DynArray`). +/// +/// `ArrayRef` stores `Arc>` — a single 16-byte fat pointer. +/// Metadata is accessed via `self.0.meta.*` (a normal struct field read through the Arc), +/// while encoding-specific methods go through `self.0.data` (vtable dispatch). +pub(crate) struct ArrayStore { + pub(crate) meta: ArrayMeta, + pub(crate) data: D, // must be last for unsized coercion +} + /// Construction parameters for typed arrays. pub struct ArrayParts { pub vtable: V, @@ -73,58 +98,61 @@ impl TypedArrayRef for ArrayView<'_, V> {} // ArrayInner — the concrete type stored inside Arc // ============================================================================= -/// The concrete array type that lives inside an `Arc` behind [`ArrayRef`]. +/// The concrete encoding-specific array data that lives inside an [`ArrayStore`]. /// -/// Prefer using [`Array`] (owned typed handle) for constructing arrays -/// and converting between typed and untyped representations. -/// This type is returned by reference from [`Matcher`] downcasts. +/// Does not contain metadata (`len`, `dtype`, `encoding_id`) — those live in +/// [`ArrayMeta`] within the same [`ArrayStore`] allocation. #[doc(hidden)] pub(crate) struct ArrayInner { pub(crate) vtable: V, - pub(crate) dtype: DType, - pub(crate) len: usize, pub(crate) data: V::ArrayData, - pub(crate) slots: Vec>, - pub(crate) stats: ArrayStats, } impl ArrayInner { - /// Create a new inner array from explicit construction parameters. + /// Create a new validated [`ArrayStore`] from construction parameters. #[doc(hidden)] - pub fn try_new(new: ArrayParts) -> VortexResult { + pub fn try_new_store(new: ArrayParts) -> VortexResult> { new.vtable .validate(&new.data, &new.dtype, new.len, &new.slots)?; - Ok(unsafe { - Self::from_data_unchecked( - new.vtable, - new.dtype, - new.len, - new.data, - new.slots, - ArrayStats::default(), - ) + Ok(ArrayStore { + meta: ArrayMeta { + len: new.len, + encoding_id: new.vtable.id(), + dtype: new.dtype, + slots: new.slots, + stats: ArrayStats::default(), + }, + data: Self { + vtable: new.vtable, + data: new.data, + }, }) } - /// Create without validation. + /// Create an [`ArrayStore`] without validation. /// /// # Safety /// Caller must ensure dtype and len match the data. - pub(crate) unsafe fn from_data_unchecked( + pub(crate) unsafe fn store_unchecked( vtable: V, - dtype: DType, len: usize, + dtype: DType, data: V::ArrayData, slots: Vec>, stats: ArrayStats, - ) -> Self { - Self { - vtable, - dtype, - len, - data, - slots, - stats, + ) -> ArrayStore { + ArrayStore { + meta: ArrayMeta { + len, + encoding_id: vtable.id(), + dtype, + slots, + stats, + }, + data: Self { + vtable, + data, + }, } } } @@ -146,11 +174,7 @@ impl Clone for ArrayInner { fn clone(&self) -> Self { Self { vtable: self.vtable.clone(), - dtype: self.dtype.clone(), - len: self.len, data: self.data.clone(), - slots: self.slots.clone(), - stats: self.stats.clone(), } } } @@ -159,26 +183,11 @@ impl Debug for ArrayInner { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { f.debug_struct("ArrayInner") .field("encoding", &self.vtable.id()) - .field("dtype", &self.dtype) - .field("len", &self.len) .field("inner", &self.data) - .field("slots", &self.slots) .finish() } } -impl IntoArray for ArrayInner { - fn into_array(self) -> ArrayRef { - ArrayRef::from_inner(Arc::new(self)) - } -} - -impl From> for ArrayRef { - fn from(value: ArrayInner) -> ArrayRef { - ArrayRef::from_inner(Arc::new(value)) - } -} - // ============================================================================= // Array — typed owned handle wrapping an ArrayRef // ============================================================================= @@ -198,7 +207,8 @@ pub struct Array { impl Array { /// Create a typed array from explicit construction parameters. pub fn try_from_parts(new: ArrayParts) -> VortexResult { - let inner = ArrayRef::from_inner(Arc::new(ArrayInner::::try_new(new)?)); + let store = ArrayInner::::try_new_store(new)?; + let inner = ArrayRef::from_store(Arc::new(store)); Ok(Self { inner, _phantom: PhantomData, @@ -211,16 +221,17 @@ impl Array { /// Caller must ensure the provided parts are logically consistent. #[doc(hidden)] pub unsafe fn from_parts_unchecked(new: ArrayParts) -> Self { - let inner = ArrayRef::from_inner(Arc::new(unsafe { - ArrayInner::::from_data_unchecked( + let store = unsafe { + ArrayInner::::store_unchecked( new.vtable, - new.dtype, new.len, + new.dtype, new.data, new.slots, ArrayStats::default(), ) - })); + }; + let inner = ArrayRef::from_store(Arc::new(store)); Self { inner, _phantom: PhantomData, @@ -282,29 +293,27 @@ impl Array { /// Try to fetch a mut ref to the inner ArrayData. pub fn data_mut(&mut self) -> Option<&mut V::ArrayData> { - let m = self.inner.inner_mut(); - let inner = Arc::get_mut(m)?; - let array_inner = inner.as_any_mut().downcast_mut::>(); + let store = self.inner.store_mut()?; + let array_inner = store.data.as_any_mut().downcast_mut::>(); Some(&mut array_inner?.data) } /// Returns the full typed array construction parts if this handle owns the allocation. pub fn try_into_parts(self) -> Result, Self> { let Self { inner, _phantom } = self; - let any = inner.into_inner().into_any_arc(); - let inner = Arc::downcast::>(any) - .unwrap_or_else(|_| unreachable!("typed array must contain ArrayInner for its vtable")); - - match Arc::try_unwrap(inner) { - Ok(inner) => Ok(ArrayParts { - vtable: inner.vtable, - dtype: inner.dtype, - len: inner.len, - data: inner.data, - slots: inner.slots, + // SAFETY: Array guarantees the inner is ArrayInner. + let typed_arc = unsafe { inner.downcast_store_unchecked::() }; + + match Arc::try_unwrap(typed_arc) { + Ok(store) => Ok(ArrayParts { + vtable: store.data.vtable, + dtype: store.meta.dtype, + len: store.meta.len, + data: store.data.data, + slots: store.meta.slots, }), - Err(inner) => Err(Self { - inner: ArrayRef::from_inner(inner), + Err(typed_arc) => Err(Self { + inner: ArrayRef::from_store(typed_arc), _phantom: PhantomData, }), } @@ -322,7 +331,7 @@ impl Array { /// Returns the array slots. pub fn slots(&self) -> &[Option] { - &self.downcast_inner().slots + self.inner.slots() } /// Returns the internal [`ArrayRef`]. @@ -341,7 +350,7 @@ impl Array { /// Downcast the inner `ArrayRef` to `&ArrayInner`. #[inline(always)] fn downcast_inner(&self) -> &ArrayInner { - let any = self.inner.inner().as_any(); + let any = self.inner.dyn_array().as_any(); // NOTE(ngates): use downcast_unchecked when it becomes stable debug_assert!(any.is::>()); // SAFETY: caller guarantees that T is the correct type From b33fa40180d89b986dec680e2be89c9d9a875d91 Mon Sep 17 00:00:00 2001 From: Joe Isaacs Date: Fri, 1 May 2026 16:28:58 +0100 Subject: [PATCH 02/12] add Signed-off-by: Joe Isaacs --- vortex-array/benches/slice_dict.rs | 50 ++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 vortex-array/benches/slice_dict.rs diff --git a/vortex-array/benches/slice_dict.rs b/vortex-array/benches/slice_dict.rs new file mode 100644 index 00000000000..9c53b96432e --- /dev/null +++ b/vortex-array/benches/slice_dict.rs @@ -0,0 +1,50 @@ +// SPDX-License-Identifier: Apache-2.0 +// SPDX-FileCopyrightText: Copyright the Vortex contributors + +#![expect(clippy::cast_possible_truncation)] +#![expect(clippy::unwrap_used)] + +use divan::Bencher; +use divan::counter::ItemsCount; +use vortex_array::ArrayRef; +use vortex_array::IntoArray; +use vortex_array::arrays::DictArray; +use vortex_array::arrays::PrimitiveArray; +use vortex_array::arrays::VarBinViewArray; +use vortex_array::validity::Validity; +use vortex_buffer::Buffer; + +const NUM_ROWS: usize = 65_536; +const NUM_UNIQUE: usize = 50; +const SLICE_LENGTH: usize = 8_192; + +fn main() { + divan::main(); +} + +fn make_string_dict(num_rows: usize, num_unique: usize) -> ArrayRef { + let unique_strings: Vec = (0..num_unique) + .map(|i| format!("service-{i:04}-environment-name")) + .collect(); + + let values = + VarBinViewArray::from_iter_nullable_str(unique_strings.iter().map(|s| Some(s.as_str()))) + .into_array(); + + let codes: Vec = (0..num_rows).map(|i| (i % num_unique) as u32).collect(); + let codes_buf: Buffer = codes.into_iter().collect(); + let codes_arr = PrimitiveArray::new(codes_buf, Validity::NonNullable).into_array(); + + unsafe { DictArray::new_unchecked(codes_arr, values).into_array() } +} + +#[divan::bench(name = "slice_dict/native_slice")] +fn native_slice(bencher: Bencher) { + let source = make_string_dict(NUM_ROWS, NUM_UNIQUE); + + bencher + .counter(ItemsCount::new(SLICE_LENGTH)) + .with_inputs(|| 0..SLICE_LENGTH) + // Returning the ArrayRef lets divan defer Drop until after the timed sample. + .bench_refs(|range| source.slice(range.clone())); +} From df45b29837da1720a146cb7c74a80900e1f00bfc Mon Sep 17 00:00:00 2001 From: Joe Isaacs Date: Tue, 5 May 2026 16:04:14 +0100 Subject: [PATCH 03/12] add Signed-off-by: Joe Isaacs --- encodings/alp/src/alp/array.rs | 2 +- encodings/alp/src/alp_rd/array.rs | 2 +- encodings/bytebool/src/array.rs | 4 +- encodings/datetime-parts/src/array.rs | 4 +- .../src/decimal_byte_parts/mod.rs | 4 +- .../fastlanes/src/bitpacking/vtable/mod.rs | 4 +- encodings/fastlanes/src/delta/vtable/mod.rs | 4 +- encodings/fastlanes/src/for/vtable/mod.rs | 4 +- encodings/fastlanes/src/rle/vtable/mod.rs | 4 +- encodings/fsst/src/array.rs | 4 +- encodings/parquet-variant/src/vtable.rs | 4 +- encodings/pco/src/array.rs | 2 +- encodings/runend/src/array.rs | 4 +- encodings/sequence/src/array.rs | 4 +- encodings/sparse/src/lib.rs | 4 +- encodings/zigzag/src/array.rs | 4 +- encodings/zstd/src/array.rs | 4 +- encodings/zstd/src/zstd_buffers.rs | 4 +- .../src/aggregate_fn/fns/is_constant/mod.rs | 2 +- vortex-array/src/array/erased.rs | 57 +++++------ vortex-array/src/array/foreign.rs | 4 +- vortex-array/src/array/mod.rs | 20 ++-- vortex-array/src/array/typed.rs | 96 +++++++++---------- vortex-array/src/array/view.rs | 12 +-- vortex-array/src/array/vtable/mod.rs | 8 +- vortex-array/src/array/vtable/validity.rs | 2 +- vortex-array/src/arrays/bool/vtable/mod.rs | 2 +- .../src/arrays/chunked/vtable/canonical.rs | 2 +- vortex-array/src/arrays/chunked/vtable/mod.rs | 6 +- .../src/arrays/constant/vtable/mod.rs | 2 +- vortex-array/src/arrays/decimal/vtable/mod.rs | 2 +- vortex-array/src/arrays/dict/vtable/mod.rs | 2 +- .../src/arrays/extension/vtable/mod.rs | 2 +- vortex-array/src/arrays/filter/vtable.rs | 4 +- .../src/arrays/fixed_size_list/vtable/mod.rs | 2 +- vortex-array/src/arrays/list/vtable/mod.rs | 2 +- .../src/arrays/listview/vtable/mod.rs | 2 +- vortex-array/src/arrays/masked/vtable/mod.rs | 2 +- vortex-array/src/arrays/null/mod.rs | 2 +- vortex-array/src/arrays/patched/vtable/mod.rs | 2 +- .../src/arrays/primitive/vtable/mod.rs | 2 +- .../src/arrays/scalar_fn/vtable/mod.rs | 2 +- vortex-array/src/arrays/shared/vtable.rs | 2 +- vortex-array/src/arrays/slice/vtable.rs | 4 +- vortex-array/src/arrays/struct_/vtable/mod.rs | 2 +- vortex-array/src/arrays/varbin/vtable/mod.rs | 2 +- .../src/arrays/varbinview/vtable/mod.rs | 2 +- vortex-array/src/arrays/variant/vtable/mod.rs | 4 +- vortex-array/src/arrow/datum.rs | 2 +- vortex-array/src/hash.rs | 8 +- vortex-array/src/optimizer/rules.rs | 12 +-- vortex-array/src/scalar_fn/session.rs | 1 - vortex-python/src/arrays/native.rs | 4 +- vortex-python/src/arrays/py/vtable.rs | 2 +- 54 files changed, 174 insertions(+), 176 deletions(-) diff --git a/encodings/alp/src/alp/array.rs b/encodings/alp/src/alp/array.rs index 63549dc24f8..9bc9461f2bd 100644 --- a/encodings/alp/src/alp/array.rs +++ b/encodings/alp/src/alp/array.rs @@ -67,7 +67,7 @@ impl ArrayEq for ALPData { } impl VTable for ALP { - type ArrayData = ALPData; + type TypedArrayData = ALPData; type OperationsVTable = Self; type ValidityVTable = ValidityVTableFromChild; diff --git a/encodings/alp/src/alp_rd/array.rs b/encodings/alp/src/alp_rd/array.rs index 0c25717db6f..55e299172e0 100644 --- a/encodings/alp/src/alp_rd/array.rs +++ b/encodings/alp/src/alp_rd/array.rs @@ -90,7 +90,7 @@ impl ArrayEq for ALPRDData { } impl VTable for ALPRD { - type ArrayData = ALPRDData; + type TypedArrayData = ALPRDData; type OperationsVTable = Self; type ValidityVTable = ValidityVTableFromChild; diff --git a/encodings/bytebool/src/array.rs b/encodings/bytebool/src/array.rs index 538c6c079f3..610f0ae7f6c 100644 --- a/encodings/bytebool/src/array.rs +++ b/encodings/bytebool/src/array.rs @@ -56,7 +56,7 @@ impl ArrayEq for ByteBoolData { } impl VTable for ByteBool { - type ArrayData = ByteBoolData; + type TypedArrayData = ByteBoolData; type OperationsVTable = Self; type ValidityVTable = Self; @@ -68,7 +68,7 @@ impl VTable for ByteBool { fn validate( &self, - data: &Self::ArrayData, + data: &Self::TypedArrayData, dtype: &DType, len: usize, slots: &[Option], diff --git a/encodings/datetime-parts/src/array.rs b/encodings/datetime-parts/src/array.rs index 86e1927422e..133348290e2 100644 --- a/encodings/datetime-parts/src/array.rs +++ b/encodings/datetime-parts/src/array.rs @@ -89,7 +89,7 @@ impl DateTimePartsMetadata { } impl VTable for DateTimeParts { - type ArrayData = DateTimePartsData; + type TypedArrayData = DateTimePartsData; type OperationsVTable = Self; type ValidityVTable = ValidityVTableFromChild; @@ -101,7 +101,7 @@ impl VTable for DateTimeParts { fn validate( &self, - _data: &Self::ArrayData, + _data: &Self::TypedArrayData, dtype: &DType, len: usize, slots: &[Option], diff --git a/encodings/decimal-byte-parts/src/decimal_byte_parts/mod.rs b/encodings/decimal-byte-parts/src/decimal_byte_parts/mod.rs index 80a7772d986..608f0a2d2bd 100644 --- a/encodings/decimal-byte-parts/src/decimal_byte_parts/mod.rs +++ b/encodings/decimal-byte-parts/src/decimal_byte_parts/mod.rs @@ -70,7 +70,7 @@ pub struct DecimalBytesPartsMetadata { } impl VTable for DecimalByteParts { - type ArrayData = DecimalBytePartsData; + type TypedArrayData = DecimalBytePartsData; type OperationsVTable = Self; type ValidityVTable = ValidityVTableFromChild; @@ -82,7 +82,7 @@ impl VTable for DecimalByteParts { fn validate( &self, - _data: &Self::ArrayData, + _data: &Self::TypedArrayData, dtype: &DType, len: usize, slots: &[Option], diff --git a/encodings/fastlanes/src/bitpacking/vtable/mod.rs b/encodings/fastlanes/src/bitpacking/vtable/mod.rs index c11a6c4ec51..ede4cfae5be 100644 --- a/encodings/fastlanes/src/bitpacking/vtable/mod.rs +++ b/encodings/fastlanes/src/bitpacking/vtable/mod.rs @@ -86,7 +86,7 @@ impl ArrayEq for BitPackedData { } impl VTable for BitPacked { - type ArrayData = BitPackedData; + type TypedArrayData = BitPackedData; type OperationsVTable = Self; type ValidityVTable = Self; @@ -98,7 +98,7 @@ impl VTable for BitPacked { fn validate( &self, - data: &Self::ArrayData, + data: &Self::TypedArrayData, dtype: &DType, len: usize, slots: &[Option], diff --git a/encodings/fastlanes/src/delta/vtable/mod.rs b/encodings/fastlanes/src/delta/vtable/mod.rs index 17e571ba4f6..aafdd40b37f 100644 --- a/encodings/fastlanes/src/delta/vtable/mod.rs +++ b/encodings/fastlanes/src/delta/vtable/mod.rs @@ -71,7 +71,7 @@ impl ArrayEq for DeltaData { } impl VTable for Delta { - type ArrayData = DeltaData; + type TypedArrayData = DeltaData; type OperationsVTable = Self; type ValidityVTable = Self; @@ -83,7 +83,7 @@ impl VTable for Delta { fn validate( &self, - data: &Self::ArrayData, + data: &Self::TypedArrayData, dtype: &DType, len: usize, slots: &[Option], diff --git a/encodings/fastlanes/src/for/vtable/mod.rs b/encodings/fastlanes/src/for/vtable/mod.rs index 85f7cf2429b..8c8eb9560a9 100644 --- a/encodings/fastlanes/src/for/vtable/mod.rs +++ b/encodings/fastlanes/src/for/vtable/mod.rs @@ -61,7 +61,7 @@ impl ArrayEq for FoRData { } impl VTable for FoR { - type ArrayData = FoRData; + type TypedArrayData = FoRData; type OperationsVTable = Self; type ValidityVTable = ValidityVTableFromChild; @@ -73,7 +73,7 @@ impl VTable for FoR { fn validate( &self, - data: &Self::ArrayData, + data: &Self::TypedArrayData, dtype: &DType, len: usize, slots: &[Option], diff --git a/encodings/fastlanes/src/rle/vtable/mod.rs b/encodings/fastlanes/src/rle/vtable/mod.rs index ed549301433..d029f9b866d 100644 --- a/encodings/fastlanes/src/rle/vtable/mod.rs +++ b/encodings/fastlanes/src/rle/vtable/mod.rs @@ -75,7 +75,7 @@ impl ArrayEq for RLEData { } impl VTable for RLE { - type ArrayData = RLEData; + type TypedArrayData = RLEData; type OperationsVTable = Self; type ValidityVTable = Self; @@ -87,7 +87,7 @@ impl VTable for RLE { fn validate( &self, - data: &Self::ArrayData, + data: &Self::TypedArrayData, dtype: &DType, len: usize, slots: &[Option], diff --git a/encodings/fsst/src/array.rs b/encodings/fsst/src/array.rs index 36e57c51239..93c62eeebf5 100644 --- a/encodings/fsst/src/array.rs +++ b/encodings/fsst/src/array.rs @@ -99,7 +99,7 @@ impl ArrayEq for FSSTData { } impl VTable for FSST { - type ArrayData = FSSTData; + type TypedArrayData = FSSTData; type OperationsVTable = Self; type ValidityVTable = Self; @@ -110,7 +110,7 @@ impl VTable for FSST { fn validate( &self, - data: &Self::ArrayData, + data: &Self::TypedArrayData, dtype: &DType, len: usize, slots: &[Option], diff --git a/encodings/parquet-variant/src/vtable.rs b/encodings/parquet-variant/src/vtable.rs index 7c8dc942bb4..84c440712ba 100644 --- a/encodings/parquet-variant/src/vtable.rs +++ b/encodings/parquet-variant/src/vtable.rs @@ -63,7 +63,7 @@ struct ParquetVariantMetadataProto { pub type ParquetVariantArray = Array; impl VTable for ParquetVariant { - type ArrayData = ParquetVariantData; + type TypedArrayData = ParquetVariantData; type OperationsVTable = Self; type ValidityVTable = Self; @@ -74,7 +74,7 @@ impl VTable for ParquetVariant { fn validate( &self, - data: &Self::ArrayData, + data: &Self::TypedArrayData, dtype: &DType, len: usize, slots: &[Option], diff --git a/encodings/pco/src/array.rs b/encodings/pco/src/array.rs index 21d748927d4..26b86555dec 100644 --- a/encodings/pco/src/array.rs +++ b/encodings/pco/src/array.rs @@ -121,7 +121,7 @@ impl ArrayEq for PcoData { } impl VTable for Pco { - type ArrayData = PcoData; + type TypedArrayData = PcoData; type OperationsVTable = Self; type ValidityVTable = Self; diff --git a/encodings/runend/src/array.rs b/encodings/runend/src/array.rs index 7fe1c70461d..291afb1b954 100644 --- a/encodings/runend/src/array.rs +++ b/encodings/runend/src/array.rs @@ -76,7 +76,7 @@ impl ArrayEq for RunEndData { } impl VTable for RunEnd { - type ArrayData = RunEndData; + type TypedArrayData = RunEndData; type OperationsVTable = Self; type ValidityVTable = Self; @@ -88,7 +88,7 @@ impl VTable for RunEnd { fn validate( &self, - data: &Self::ArrayData, + data: &Self::TypedArrayData, dtype: &DType, len: usize, slots: &[Option], diff --git a/encodings/sequence/src/array.rs b/encodings/sequence/src/array.rs index 4a85f3a4c0b..74bebcc5510 100644 --- a/encodings/sequence/src/array.rs +++ b/encodings/sequence/src/array.rs @@ -226,7 +226,7 @@ impl ArrayEq for SequenceData { } impl VTable for Sequence { - type ArrayData = SequenceData; + type TypedArrayData = SequenceData; type OperationsVTable = Self; type ValidityVTable = Self; @@ -238,7 +238,7 @@ impl VTable for Sequence { fn validate( &self, - data: &Self::ArrayData, + data: &Self::TypedArrayData, dtype: &DType, len: usize, _slots: &[Option], diff --git a/encodings/sparse/src/lib.rs b/encodings/sparse/src/lib.rs index 411bc9c7543..92d77ecd8a8 100644 --- a/encodings/sparse/src/lib.rs +++ b/encodings/sparse/src/lib.rs @@ -85,7 +85,7 @@ impl ArrayEq for SparseData { } impl VTable for Sparse { - type ArrayData = SparseData; + type TypedArrayData = SparseData; type OperationsVTable = Self; type ValidityVTable = Self; @@ -97,7 +97,7 @@ impl VTable for Sparse { fn validate( &self, - data: &Self::ArrayData, + data: &Self::TypedArrayData, dtype: &DType, len: usize, _slots: &[Option], diff --git a/encodings/zigzag/src/array.rs b/encodings/zigzag/src/array.rs index 52658e53961..10dee3c922d 100644 --- a/encodings/zigzag/src/array.rs +++ b/encodings/zigzag/src/array.rs @@ -45,7 +45,7 @@ use crate::zigzag_decode; pub type ZigZagArray = Array; impl VTable for ZigZag { - type ArrayData = ZigZagData; + type TypedArrayData = ZigZagData; type OperationsVTable = Self; type ValidityVTable = ValidityVTableFromChild; @@ -57,7 +57,7 @@ impl VTable for ZigZag { fn validate( &self, - _data: &Self::ArrayData, + _data: &Self::TypedArrayData, dtype: &DType, len: usize, slots: &[Option], diff --git a/encodings/zstd/src/array.rs b/encodings/zstd/src/array.rs index 2a685f1ea2a..95206357e0a 100644 --- a/encodings/zstd/src/array.rs +++ b/encodings/zstd/src/array.rs @@ -126,7 +126,7 @@ impl ArrayEq for ZstdData { } impl VTable for Zstd { - type ArrayData = ZstdData; + type TypedArrayData = ZstdData; type OperationsVTable = Self; type ValidityVTable = Self; @@ -138,7 +138,7 @@ impl VTable for Zstd { fn validate( &self, - data: &Self::ArrayData, + data: &Self::TypedArrayData, dtype: &DType, len: usize, slots: &[Option], diff --git a/encodings/zstd/src/zstd_buffers.rs b/encodings/zstd/src/zstd_buffers.rs index f59a536655b..fb387f099b9 100644 --- a/encodings/zstd/src/zstd_buffers.rs +++ b/encodings/zstd/src/zstd_buffers.rs @@ -363,7 +363,7 @@ impl ArrayEq for ZstdBuffersData { } impl VTable for ZstdBuffers { - type ArrayData = ZstdBuffersData; + type TypedArrayData = ZstdBuffersData; type OperationsVTable = Self; type ValidityVTable = Self; @@ -374,7 +374,7 @@ impl VTable for ZstdBuffers { fn validate( &self, - data: &Self::ArrayData, + data: &Self::TypedArrayData, _dtype: &DType, _len: usize, _slots: &[Option], diff --git a/vortex-array/src/aggregate_fn/fns/is_constant/mod.rs b/vortex-array/src/aggregate_fn/fns/is_constant/mod.rs index 078467ad92b..9a455fbe723 100644 --- a/vortex-array/src/aggregate_fn/fns/is_constant/mod.rs +++ b/vortex-array/src/aggregate_fn/fns/is_constant/mod.rs @@ -372,7 +372,7 @@ impl AggregateFnVTable for IsConstant { return Ok(()); } - // Convert to ArrayRef for DynArray methods. + // Convert to ArrayRef for DynArrayData methods. let array_ref = c.clone().into_array(); let all_invalid = array_ref.all_invalid(ctx)?; diff --git a/vortex-array/src/array/erased.rs b/vortex-array/src/array/erased.rs index f3742920766..109d7e91bc1 100644 --- a/vortex-array/src/array/erased.rs +++ b/vortex-array/src/array/erased.rs @@ -30,11 +30,11 @@ use crate::LEGACY_SESSION; use crate::VTable; use crate::VortexSessionExecute; use crate::aggregate_fn::fns::sum::sum; +use crate::array::ArrayData; use crate::array::ArrayId; -use crate::array::ArrayInner; -use crate::array::DynArray; use crate::array::ArrayMeta; -use crate::array::ArrayStore; +use crate::array::ArrayInner; +use crate::array::DynArrayData; use crate::arrays::Bool; use crate::arrays::Constant; use crate::arrays::DictArray; @@ -76,15 +76,15 @@ impl Iterator for DepthFirstArrayIterator { /// A reference-counted pointer to a type-erased array. /// -/// Wraps `Arc>` — a single 16-byte fat pointer. -/// Metadata (`len`, `dtype`, `encoding_id`) lives in `ArrayStore::meta` and is +/// Wraps `Arc>` — a single 16-byte fat pointer. +/// Metadata (`len`, `dtype`, `encoding_id`) lives in `ArrayInner::meta` and is /// accessed as a normal struct field read — no vtable dispatch, no extra allocation. #[derive(Clone)] -pub struct ArrayRef(Arc>); +pub struct ArrayRef(Arc>); impl ArrayRef { - /// Create from an `Arc>`. - pub(crate) fn from_store(store: Arc>) -> Self { + /// Create from an `Arc>`. + pub(crate) fn from_store(store: Arc>) -> Self { Self(store) } @@ -94,15 +94,15 @@ impl ArrayRef { &self.0.meta } - /// Returns a reference to the `dyn DynArray` inside the store. + /// Returns a reference to the `dyn DynArrayData` inside the store. #[inline(always)] - pub(crate) fn dyn_array(&self) -> &dyn DynArray { + pub(crate) fn dyn_array(&self) -> &dyn DynArrayData { &self.0.data } /// Returns a mutable reference to the store if this is the sole owner. #[inline(always)] - pub(crate) fn store_mut(&mut self) -> Option<&mut ArrayStore> { + pub(crate) fn store_mut(&mut self) -> Option<&mut ArrayInner> { Arc::get_mut(&mut self.0) } @@ -113,14 +113,12 @@ impl ArrayRef { Arc::as_ptr(&self.0).addr() } - /// Downcast the store to a concrete `ArrayStore>`. + /// Downcast the store to a concrete `ArrayInner>`. /// /// Uses the same raw-pointer technique as `Arc::downcast`. #[allow(dead_code)] - pub(crate) fn downcast_store( - self, - ) -> Result>>, Self> { - if self.0.data.as_any().is::>() { + pub(crate) fn downcast_store(self) -> Result>>, Self> { + if self.0.data.as_any().is::>() { Ok(unsafe { self.downcast_store_unchecked() }) } else { Err(self) @@ -130,16 +128,16 @@ impl ArrayRef { /// Downcast without a runtime type check. /// /// # Safety - /// The caller must guarantee the concrete type behind `dyn DynArray` is `ArrayInner`. + /// The caller must guarantee the concrete type behind `dyn DynArrayData` is `ArrayData`. #[inline(always)] pub(crate) unsafe fn downcast_store_unchecked( self, - ) -> Arc>> { - debug_assert!(self.0.data.as_any().is::>()); + ) -> Arc>> { + debug_assert!(self.0.data.as_any().is::>()); let raw = Arc::into_raw(self.0); // SAFETY: caller guarantees the concrete type. The allocation was originally - // `Arc>>` coerced to `Arc>`. - unsafe { Arc::from_raw(raw as *const ArrayStore>) } + // `Arc>>` coerced to `Arc>`. + unsafe { Arc::from_raw(raw as *const ArrayInner>) } } /// Returns true if the two ArrayRefs point to the same allocation. @@ -168,7 +166,9 @@ impl ArrayHash for ArrayRef { for slot in &self.meta().slots { slot.array_hash(state, precision); } - self.0.data.dyn_array_hash(state as &mut dyn Hasher, precision); + self.0 + .data + .dyn_array_hash(state as &mut dyn Hasher, precision); } } @@ -423,9 +423,9 @@ impl ArrayRef { .unwrap_or_else(|_| vortex_panic!("Failed to downcast to {}", type_name::())) } - /// Returns a reference to the typed `ArrayInner` if this array matches the given vtable type. + /// Returns a reference to the typed `ArrayData` if this array matches the given vtable type. pub fn as_typed(&self) -> Option> { - let inner = self.0.data.as_any().downcast_ref::>()?; + let inner = self.0.data.as_any().downcast_ref::>()?; Some(unsafe { ArrayView::new_unchecked(self, &inner.data) }) } @@ -512,7 +512,8 @@ impl ArrayRef { slot_idx: usize, ) -> VortexResult<(ArrayRef, ArrayRef)> { if let Some(store) = Arc::get_mut(&mut self.0) { - let child = store.meta.slots[slot_idx].take() + let child = store.meta.slots[slot_idx] + .take() .vortex_expect("take_slot_unchecked cannot take an absent slot"); return Ok((self, child)); } @@ -609,7 +610,7 @@ impl ArrayRef { pub(crate) fn execute_encoding(self, ctx: &mut ExecutionCtx) -> VortexResult { let store = Arc::as_ptr(&self.0); - // SAFETY: the Arc outlives the DynArray function call + // SAFETY: the Arc outlives the DynArrayData function call unsafe { (&*store).data.execute(self, ctx) } } @@ -745,11 +746,11 @@ impl Matcher for V { type Match<'a> = ArrayView<'a, V>; fn matches(array: &ArrayRef) -> bool { - array.0.data.as_any().is::>() + array.0.data.as_any().is::>() } fn try_match<'a>(array: &'a ArrayRef) -> Option> { - let inner = array.0.data.as_any().downcast_ref::>()?; + let inner = array.0.data.as_any().downcast_ref::>()?; // # Safety checked by `downcast_ref`. Some(unsafe { ArrayView::new_unchecked(array, &inner.data) }) } diff --git a/vortex-array/src/array/foreign.rs b/vortex-array/src/array/foreign.rs index 3233d2f4228..cec4edff765 100644 --- a/vortex-array/src/array/foreign.rs +++ b/vortex-array/src/array/foreign.rs @@ -89,7 +89,7 @@ impl ValidityVTable for ForeignValidityVTable { } impl VTable for ForeignArray { - type ArrayData = ForeignArrayData; + type TypedArrayData = ForeignArrayData; type OperationsVTable = NotSupported; type ValidityVTable = ForeignValidityVTable; @@ -99,7 +99,7 @@ impl VTable for ForeignArray { fn validate( &self, - _data: &Self::ArrayData, + _data: &Self::TypedArrayData, _dtype: &DType, _len: usize, _slots: &[Option], diff --git a/vortex-array/src/array/mod.rs b/vortex-array/src/array/mod.rs index 1873ba5f418..b82ad2a3261 100644 --- a/vortex-array/src/array/mod.rs +++ b/vortex-array/src/array/mod.rs @@ -51,7 +51,7 @@ use crate::hash::ArrayHash; /// This trait is sealed and cannot be implemented outside of `vortex-array`. /// Use [`ArrayRef`] as the primary handle for working with arrays. #[doc(hidden)] -pub(crate) trait DynArray: 'static + private::Sealed + Send + Sync + Debug { +pub(crate) trait DynArrayData: 'static + private::Sealed + Send + Sync + Debug { /// Returns the array as a reference to a generic [`Any`] trait object. fn as_any(&self) -> &dyn Any; @@ -204,18 +204,18 @@ mod private { pub trait Sealed {} - impl Sealed for ArrayInner {} + impl Sealed for ArrayData {} } // ============================================================================= -// New path: DynArray and supporting trait impls for ArrayInner +// New path: DynArrayData and supporting trait impls for ArrayData // ============================================================================= -/// DynArray implementation for [`ArrayInner`]. +/// DynArrayData implementation for [`ArrayData`]. /// -/// This is self-contained: identity methods use `ArrayInner`'s own fields (dtype, len, stats), -/// while data-access methods delegate to VTable methods on the inner `V::ArrayData`. -impl DynArray for ArrayInner { +/// This is self-contained: identity methods use `ArrayData`'s own fields (dtype, len, stats), +/// while data-access methods delegate to VTable methods on the inner `V::TypedArrayData`. +impl DynArrayData for ArrayData { fn as_any(&self) -> &dyn Any { self } @@ -350,9 +350,7 @@ impl DynArray for ArrayInner { .dyn_array() .as_any() .downcast_ref::() - .is_some_and(|other_inner| { - self.data.array_eq(&other_inner.data, precision) - }) + .is_some_and(|other_inner| self.data.array_eq(&other_inner.data, precision)) } fn with_slots(&self, this: ArrayRef, slots: Vec>) -> VortexResult { @@ -374,7 +372,7 @@ impl DynArray for ArrayInner { // SAFETY: we intentionally skip `V::validate` here. Caller guarantees that the resulting // array is either repaired or not externally observed. let store = unsafe { - ArrayInner::::store_unchecked( + ArrayData::::store_unchecked( self.vtable.clone(), this.len(), this.dtype().clone(), diff --git a/vortex-array/src/array/typed.rs b/vortex-array/src/array/typed.rs index b1ca56aa03d..341d7c986a5 100644 --- a/vortex-array/src/array/typed.rs +++ b/vortex-array/src/array/typed.rs @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors -//! Typed array wrappers: [`ArrayInner`] (heap-allocated), [`Array`] (typed handle), +//! Typed array wrappers: [`ArrayData`] (heap-allocated), [`Array`] (typed handle), //! and [`ArrayView`] (lightweight borrow). use std::any::Any; @@ -30,7 +30,7 @@ use crate::validity::Validity; /// Common metadata for every array encoding. /// -/// Stored in [`ArrayStore`] alongside the encoding-specific [`DynArray`] data. +/// Stored in [`ArrayInner`] alongside the encoding-specific [`DynArrayData`] data. /// [`ArrayRef`] reads these fields directly — no vtable dispatch. pub(crate) struct ArrayMeta { pub(crate) len: usize, @@ -43,12 +43,12 @@ pub(crate) struct ArrayMeta { /// The combined allocation behind [`ArrayRef`]. /// /// Wraps an [`ArrayMeta`] (common fields) together with the encoding-specific -/// `data` (a concrete [`ArrayInner`] erased to `dyn DynArray`). +/// `data` (a concrete [`ArrayData`] erased to `dyn DynArrayData`). /// -/// `ArrayRef` stores `Arc>` — a single 16-byte fat pointer. +/// `ArrayRef` stores `Arc>` — a single 16-byte fat pointer. /// Metadata is accessed via `self.0.meta.*` (a normal struct field read through the Arc), /// while encoding-specific methods go through `self.0.data` (vtable dispatch). -pub(crate) struct ArrayStore { +pub(crate) struct ArrayInner { pub(crate) meta: ArrayMeta, pub(crate) data: D, // must be last for unsized coercion } @@ -58,12 +58,12 @@ pub struct ArrayParts { pub vtable: V, pub dtype: DType, pub len: usize, - pub data: V::ArrayData, + pub data: V::TypedArrayData, pub slots: Vec>, } impl ArrayParts { - pub fn new(vtable: V, dtype: DType, len: usize, data: V::ArrayData) -> Self { + pub fn new(vtable: V, dtype: DType, len: usize, data: V::TypedArrayData) -> Self { Self { vtable, dtype, @@ -83,8 +83,8 @@ impl ArrayParts { /// [`ArrayView`]. /// /// Extension traits use this to share typed array logic while still exposing the backing -/// [`ArrayRef`] and the encoding-specific [`VTable::ArrayData`]. -pub trait TypedArrayRef: AsRef + Deref { +/// [`ArrayRef`] and the encoding-specific [`VTable::TypedArrayData`]. +pub trait TypedArrayRef: AsRef + Deref { /// Returns an owned [`Array`] from the reference. fn to_owned(&self) -> Array { self.as_ref().clone().downcast() @@ -95,26 +95,26 @@ impl TypedArrayRef for Array {} impl TypedArrayRef for ArrayView<'_, V> {} // ============================================================================= -// ArrayInner — the concrete type stored inside Arc +// ArrayData — the concrete type stored inside Arc // ============================================================================= -/// The concrete encoding-specific array data that lives inside an [`ArrayStore`]. +/// The concrete encoding-specific array data that lives inside an [`ArrayInner`]. /// /// Does not contain metadata (`len`, `dtype`, `encoding_id`) — those live in -/// [`ArrayMeta`] within the same [`ArrayStore`] allocation. +/// [`ArrayMeta`] within the same [`ArrayInner`] allocation. #[doc(hidden)] -pub(crate) struct ArrayInner { +pub(crate) struct ArrayData { pub(crate) vtable: V, - pub(crate) data: V::ArrayData, + pub(crate) data: V::TypedArrayData, } -impl ArrayInner { - /// Create a new validated [`ArrayStore`] from construction parameters. +impl ArrayData { + /// Create a new validated [`ArrayInner`] from construction parameters. #[doc(hidden)] - pub fn try_new_store(new: ArrayParts) -> VortexResult> { + pub fn try_new_store(new: ArrayParts) -> VortexResult> { new.vtable .validate(&new.data, &new.dtype, new.len, &new.slots)?; - Ok(ArrayStore { + Ok(ArrayInner { meta: ArrayMeta { len: new.len, encoding_id: new.vtable.id(), @@ -129,7 +129,7 @@ impl ArrayInner { }) } - /// Create an [`ArrayStore`] without validation. + /// Create an [`ArrayInner`] without validation. /// /// # Safety /// Caller must ensure dtype and len match the data. @@ -137,11 +137,11 @@ impl ArrayInner { vtable: V, len: usize, dtype: DType, - data: V::ArrayData, + data: V::TypedArrayData, slots: Vec>, stats: ArrayStats, - ) -> ArrayStore { - ArrayStore { + ) -> ArrayInner { + ArrayInner { meta: ArrayMeta { len, encoding_id: vtable.id(), @@ -157,20 +157,20 @@ impl ArrayInner { } } -impl Deref for ArrayInner { - type Target = V::ArrayData; - fn deref(&self) -> &V::ArrayData { +impl Deref for ArrayData { + type Target = V::TypedArrayData; + fn deref(&self) -> &V::TypedArrayData { &self.data } } -impl DerefMut for ArrayInner { - fn deref_mut(&mut self) -> &mut V::ArrayData { +impl DerefMut for ArrayData { + fn deref_mut(&mut self) -> &mut V::TypedArrayData { &mut self.data } } -impl Clone for ArrayInner { +impl Clone for ArrayData { fn clone(&self) -> Self { Self { vtable: self.vtable.clone(), @@ -179,9 +179,9 @@ impl Clone for ArrayInner { } } -impl Debug for ArrayInner { +impl Debug for ArrayData { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - f.debug_struct("ArrayInner") + f.debug_struct("ArrayData") .field("encoding", &self.vtable.id()) .field("inner", &self.data) .finish() @@ -195,7 +195,7 @@ impl Debug for ArrayInner { /// A typed owned handle to an array. /// /// `Array` holds an [`ArrayRef`] (shared, heap-allocated) and provides typed access -/// to the encoding-specific data via [`Deref`] to `V::ArrayData`. +/// to the encoding-specific data via [`Deref`] to `V::TypedArrayData`. /// /// This is the primary type for working with typed arrays. Convert to [`ArrayRef`] /// via [`into_array()`](IntoArray::into_array) or [`AsRef`]. @@ -207,7 +207,7 @@ pub struct Array { impl Array { /// Create a typed array from explicit construction parameters. pub fn try_from_parts(new: ArrayParts) -> VortexResult { - let store = ArrayInner::::try_new_store(new)?; + let store = ArrayData::::try_new_store(new)?; let inner = ArrayRef::from_store(Arc::new(store)); Ok(Self { inner, @@ -222,7 +222,7 @@ impl Array { #[doc(hidden)] pub unsafe fn from_parts_unchecked(new: ArrayParts) -> Self { let store = unsafe { - ArrayInner::::store_unchecked( + ArrayData::::store_unchecked( new.vtable, new.len, new.dtype, @@ -238,10 +238,10 @@ impl Array { } } - /// Create from an existing `ArrayRef`, trusting that it contains `ArrayInner`. + /// Create from an existing `ArrayRef`, trusting that it contains `ArrayData`. /// /// # Safety - /// Caller must ensure the `ArrayRef` contains an `ArrayInner`. + /// Caller must ensure the `ArrayRef` contains an `ArrayData`. pub(crate) unsafe fn from_array_ref_unchecked(array: ArrayRef) -> Self { Self { inner: array, @@ -287,21 +287,21 @@ impl Array { } /// Returns a reference to the encoding-specific data. - pub fn data(&self) -> &V::ArrayData { + pub fn data(&self) -> &V::TypedArrayData { &self.downcast_inner().data } /// Try to fetch a mut ref to the inner ArrayData. - pub fn data_mut(&mut self) -> Option<&mut V::ArrayData> { + pub fn data_mut(&mut self) -> Option<&mut V::TypedArrayData> { let store = self.inner.store_mut()?; - let array_inner = store.data.as_any_mut().downcast_mut::>(); + let array_inner = store.data.as_any_mut().downcast_mut::>(); Some(&mut array_inner?.data) } /// Returns the full typed array construction parts if this handle owns the allocation. pub fn try_into_parts(self) -> Result, Self> { let Self { inner, _phantom } = self; - // SAFETY: Array guarantees the inner is ArrayInner. + // SAFETY: Array guarantees the inner is ArrayData. let typed_arc = unsafe { inner.downcast_store_unchecked::() }; match Arc::try_unwrap(typed_arc) { @@ -325,7 +325,7 @@ impl Array { } /// Returns a clone of the inner encoding-specific data. - pub fn into_data(self) -> V::ArrayData { + pub fn into_data(self) -> V::TypedArrayData { self.downcast_inner().data.clone() } @@ -343,22 +343,22 @@ impl Array { /// Returns an [`ArrayView`] borrowing this array's data. pub fn as_view(&self) -> ArrayView<'_, V> { let inner = self.downcast_inner(); - // SAFETY: `inner.data` is the `V::ArrayData` stored inside `self.inner`. + // SAFETY: `inner.data` is the `V::TypedArrayData` stored inside `self.inner`. unsafe { ArrayView::new_unchecked(&self.inner, &inner.data) } } - /// Downcast the inner `ArrayRef` to `&ArrayInner`. + /// Downcast the inner `ArrayRef` to `&ArrayData`. #[inline(always)] - fn downcast_inner(&self) -> &ArrayInner { + fn downcast_inner(&self) -> &ArrayData { let any = self.inner.dyn_array().as_any(); // NOTE(ngates): use downcast_unchecked when it becomes stable - debug_assert!(any.is::>()); + debug_assert!(any.is::>()); // SAFETY: caller guarantees that T is the correct type - unsafe { &*(any as *const dyn Any as *const ArrayInner) } + unsafe { &*(any as *const dyn Any as *const ArrayData) } } } -/// Public API methods that shadow `DynArray` / `ArrayRef` methods. +/// Public API methods that shadow `DynArrayData` / `ArrayRef` methods. impl Array { pub fn slice(&self, range: std::ops::Range) -> VortexResult { self.inner.slice(range) @@ -447,9 +447,9 @@ impl Array { } impl Deref for Array { - type Target = V::ArrayData; + type Target = V::TypedArrayData; - fn deref(&self) -> &V::ArrayData { + fn deref(&self) -> &V::TypedArrayData { self.data() } } diff --git a/vortex-array/src/array/view.rs b/vortex-array/src/array/view.rs index c751429abf8..969fd0484a3 100644 --- a/vortex-array/src/array/view.rs +++ b/vortex-array/src/array/view.rs @@ -18,7 +18,7 @@ use crate::validity::Validity; /// A lightweight, `Copy`-able typed view into an [`ArrayRef`]. pub struct ArrayView<'a, V: VTable> { array: &'a ArrayRef, - data: &'a V::ArrayData, + data: &'a V::TypedArrayData, } impl Copy for ArrayView<'_, V> {} @@ -31,8 +31,8 @@ impl Clone for ArrayView<'_, V> { impl<'a, V: VTable> ArrayView<'a, V> { /// # Safety - /// Caller must ensure `data` is the `V::ArrayData` stored inside `array`. - pub(crate) unsafe fn new_unchecked(array: &'a ArrayRef, data: &'a V::ArrayData) -> Self { + /// Caller must ensure `data` is the `V::TypedArrayData` stored inside `array`. + pub(crate) unsafe fn new_unchecked(array: &'a ArrayRef, data: &'a V::TypedArrayData) -> Self { debug_assert!(array.is::()); Self { array, data } } @@ -41,7 +41,7 @@ impl<'a, V: VTable> ArrayView<'a, V> { self.array } - pub fn data(&self) -> &'a V::ArrayData { + pub fn data(&self) -> &'a V::TypedArrayData { self.data } @@ -86,9 +86,9 @@ impl AsRef for ArrayView<'_, V> { } impl Deref for ArrayView<'_, V> { - type Target = V::ArrayData; + type Target = V::TypedArrayData; - fn deref(&self) -> &V::ArrayData { + fn deref(&self) -> &V::TypedArrayData { self.data } } diff --git a/vortex-array/src/array/vtable/mod.rs b/vortex-array/src/array/vtable/mod.rs index 7006c55b076..6c85bb79d05 100644 --- a/vortex-array/src/array/vtable/mod.rs +++ b/vortex-array/src/array/vtable/mod.rs @@ -45,16 +45,16 @@ use crate::validity::Validity; /// The logic is split across several "VTable" traits to enable easier code organization than /// simply lumping everything into a single trait. /// -/// From this [`VTable`] trait, we derive implementations for the sealed `DynArray` trait and the +/// From this [`VTable`] trait, we derive implementations for the sealed `DynArrayData` trait and the /// public [`ArrayPlugin`] registry trait. /// /// The functions defined in these vtable traits will typically document their pre- and -/// post-conditions. The pre-conditions are validated inside the `DynArray` and [`ArrayRef`] +/// post-conditions. The pre-conditions are validated inside the `DynArrayData` and [`ArrayRef`] /// implementations so do not need to be checked in the vtable implementations (for example, index /// out of bounds). Post-conditions are validated after invocation of the vtable function and will /// panic if violated. pub trait VTable: 'static + Clone + Sized + Send + Sync + Debug { - type ArrayData: 'static + Send + Sync + Clone + Debug + Display + ArrayHash + ArrayEq; + type TypedArrayData: 'static + Send + Sync + Clone + Debug + Display + ArrayHash + ArrayEq; type OperationsVTable: OperationsVTable; type ValidityVTable: ValidityVTable; @@ -65,7 +65,7 @@ pub trait VTable: 'static + Clone + Sized + Send + Sync + Debug { /// Validates that externally supplied logical metadata matches the array data. fn validate( &self, - data: &Self::ArrayData, + data: &Self::TypedArrayData, dtype: &DType, len: usize, slots: &[Option], diff --git a/vortex-array/src/array/vtable/validity.rs b/vortex-array/src/array/vtable/validity.rs index 9f2b2989e52..2cb67facd20 100644 --- a/vortex-array/src/array/vtable/validity.rs +++ b/vortex-array/src/array/vtable/validity.rs @@ -49,7 +49,7 @@ pub trait ValidityChildSliceHelper { impl ValidityVTable for ValidityVTableFromChildSliceHelper where - V::ArrayData: ValidityChildSliceHelper, + V::TypedArrayData: ValidityChildSliceHelper, { fn validity(array: ArrayView<'_, V>) -> VortexResult { array.data().sliced_child_array()?.validity() diff --git a/vortex-array/src/arrays/bool/vtable/mod.rs b/vortex-array/src/arrays/bool/vtable/mod.rs index 270699ec9b0..35261fa8d89 100644 --- a/vortex-array/src/arrays/bool/vtable/mod.rs +++ b/vortex-array/src/arrays/bool/vtable/mod.rs @@ -64,7 +64,7 @@ impl ArrayEq for BoolData { } impl VTable for Bool { - type ArrayData = BoolData; + type TypedArrayData = BoolData; type OperationsVTable = Self; type ValidityVTable = Self; diff --git a/vortex-array/src/arrays/chunked/vtable/canonical.rs b/vortex-array/src/arrays/chunked/vtable/canonical.rs index 42e0b5d2073..fbd8ad0c35a 100644 --- a/vortex-array/src/arrays/chunked/vtable/canonical.rs +++ b/vortex-array/src/arrays/chunked/vtable/canonical.rs @@ -58,7 +58,7 @@ pub(super) fn _canonicalize( }) } -/// Packs many [`StructArray`]s to instead be a single [`StructArray`], where the [`DynArray`] for each +/// Packs many [`StructArray`]s to instead be a single [`StructArray`], where the [`DynArrayData`] for each /// field is a [`ChunkedArray`]. /// /// The caller guarantees there are at least 2 chunks. diff --git a/vortex-array/src/arrays/chunked/vtable/mod.rs b/vortex-array/src/arrays/chunked/vtable/mod.rs index 046fdea1caa..6acad15e2a6 100644 --- a/vortex-array/src/arrays/chunked/vtable/mod.rs +++ b/vortex-array/src/arrays/chunked/vtable/mod.rs @@ -54,20 +54,20 @@ pub struct Chunked; impl ArrayHash for ChunkedData { fn array_hash(&self, _state: &mut H, _precision: Precision) { // Chunk offsets are cached derived data. Slot 0 already stores the logical offsets array, - // and ArrayInner hashing includes every slot before ArrayData. + // and ArrayData hashing includes every slot before TypedArrayData. } } impl ArrayEq for ChunkedData { fn array_eq(&self, _other: &Self, _precision: Precision) -> bool { // Chunk offsets are cached derived data. Slot 0 already stores the logical offsets array, - // and ArrayInner equality compares every slot before ArrayData. + // and ArrayData equality compares every slot before TypedArrayData. true } } impl VTable for Chunked { - type ArrayData = ChunkedData; + type TypedArrayData = ChunkedData; type OperationsVTable = Self; type ValidityVTable = Self; diff --git a/vortex-array/src/arrays/constant/vtable/mod.rs b/vortex-array/src/arrays/constant/vtable/mod.rs index 7384505d854..c130c28a95a 100644 --- a/vortex-array/src/arrays/constant/vtable/mod.rs +++ b/vortex-array/src/arrays/constant/vtable/mod.rs @@ -65,7 +65,7 @@ impl ArrayEq for ConstantData { } impl VTable for Constant { - type ArrayData = ConstantData; + type TypedArrayData = ConstantData; type OperationsVTable = Self; type ValidityVTable = Self; diff --git a/vortex-array/src/arrays/decimal/vtable/mod.rs b/vortex-array/src/arrays/decimal/vtable/mod.rs index 5360aba5eb0..dac24ecd95f 100644 --- a/vortex-array/src/arrays/decimal/vtable/mod.rs +++ b/vortex-array/src/arrays/decimal/vtable/mod.rs @@ -64,7 +64,7 @@ impl ArrayEq for DecimalData { } impl VTable for Decimal { - type ArrayData = DecimalData; + type TypedArrayData = DecimalData; type OperationsVTable = Self; type ValidityVTable = Self; diff --git a/vortex-array/src/arrays/dict/vtable/mod.rs b/vortex-array/src/arrays/dict/vtable/mod.rs index 9f64e089bc5..4893be5c7ed 100644 --- a/vortex-array/src/arrays/dict/vtable/mod.rs +++ b/vortex-array/src/arrays/dict/vtable/mod.rs @@ -68,7 +68,7 @@ impl ArrayEq for DictData { } impl VTable for Dict { - type ArrayData = DictData; + type TypedArrayData = DictData; type OperationsVTable = Self; type ValidityVTable = Self; diff --git a/vortex-array/src/arrays/extension/vtable/mod.rs b/vortex-array/src/arrays/extension/vtable/mod.rs index b048c81fff7..1a25a1a9ef1 100644 --- a/vortex-array/src/arrays/extension/vtable/mod.rs +++ b/vortex-array/src/arrays/extension/vtable/mod.rs @@ -78,7 +78,7 @@ pub struct Extension; pub type ExtensionArray = Array; impl VTable for Extension { - type ArrayData = EmptyArrayData; + type TypedArrayData = EmptyArrayData; type OperationsVTable = Self; type ValidityVTable = ValidityVTableFromChild; diff --git a/vortex-array/src/arrays/filter/vtable.rs b/vortex-array/src/arrays/filter/vtable.rs index f6cd88410af..9f70e6e2614 100644 --- a/vortex-array/src/arrays/filter/vtable.rs +++ b/vortex-array/src/arrays/filter/vtable.rs @@ -62,7 +62,7 @@ impl ArrayEq for FilterData { } impl VTable for Filter { - type ArrayData = FilterData; + type TypedArrayData = FilterData; type OperationsVTable = Self; type ValidityVTable = Self; fn id(&self) -> ArrayId { @@ -72,7 +72,7 @@ impl VTable for Filter { fn validate( &self, - data: &Self::ArrayData, + data: &Self::TypedArrayData, dtype: &DType, len: usize, slots: &[Option], diff --git a/vortex-array/src/arrays/fixed_size_list/vtable/mod.rs b/vortex-array/src/arrays/fixed_size_list/vtable/mod.rs index a3724b06fca..52b041794cd 100644 --- a/vortex-array/src/arrays/fixed_size_list/vtable/mod.rs +++ b/vortex-array/src/arrays/fixed_size_list/vtable/mod.rs @@ -56,7 +56,7 @@ impl ArrayEq for FixedSizeListData { } impl VTable for FixedSizeList { - type ArrayData = FixedSizeListData; + type TypedArrayData = FixedSizeListData; type OperationsVTable = Self; type ValidityVTable = Self; diff --git a/vortex-array/src/arrays/list/vtable/mod.rs b/vortex-array/src/arrays/list/vtable/mod.rs index 38d1959219d..9f5e7014069 100644 --- a/vortex-array/src/arrays/list/vtable/mod.rs +++ b/vortex-array/src/arrays/list/vtable/mod.rs @@ -62,7 +62,7 @@ impl ArrayEq for ListData { } impl VTable for List { - type ArrayData = ListData; + type TypedArrayData = ListData; type OperationsVTable = Self; type ValidityVTable = Self; diff --git a/vortex-array/src/arrays/listview/vtable/mod.rs b/vortex-array/src/arrays/listview/vtable/mod.rs index f51fde706a4..af2c8c05eb6 100644 --- a/vortex-array/src/arrays/listview/vtable/mod.rs +++ b/vortex-array/src/arrays/listview/vtable/mod.rs @@ -68,7 +68,7 @@ impl ArrayEq for ListViewData { } impl VTable for ListView { - type ArrayData = ListViewData; + type TypedArrayData = ListViewData; type OperationsVTable = Self; type ValidityVTable = Self; diff --git a/vortex-array/src/arrays/masked/vtable/mod.rs b/vortex-array/src/arrays/masked/vtable/mod.rs index 2ef10ba0082..f244c322823 100644 --- a/vortex-array/src/arrays/masked/vtable/mod.rs +++ b/vortex-array/src/arrays/masked/vtable/mod.rs @@ -60,7 +60,7 @@ impl ArrayEq for MaskedData { } impl VTable for Masked { - type ArrayData = MaskedData; + type TypedArrayData = MaskedData; type OperationsVTable = Self; type ValidityVTable = Self; diff --git a/vortex-array/src/arrays/null/mod.rs b/vortex-array/src/arrays/null/mod.rs index 30f68cecc51..dd31ef16853 100644 --- a/vortex-array/src/arrays/null/mod.rs +++ b/vortex-array/src/arrays/null/mod.rs @@ -31,7 +31,7 @@ pub(crate) mod compute; pub type NullArray = Array; impl VTable for Null { - type ArrayData = EmptyArrayData; + type TypedArrayData = EmptyArrayData; type OperationsVTable = Self; type ValidityVTable = Self; diff --git a/vortex-array/src/arrays/patched/vtable/mod.rs b/vortex-array/src/arrays/patched/vtable/mod.rs index ad2fc9aadc7..531b89cd22e 100644 --- a/vortex-array/src/arrays/patched/vtable/mod.rs +++ b/vortex-array/src/arrays/patched/vtable/mod.rs @@ -95,7 +95,7 @@ impl ArrayEq for PatchedData { } impl VTable for Patched { - type ArrayData = PatchedData; + type TypedArrayData = PatchedData; type OperationsVTable = Self; type ValidityVTable = ValidityVTableFromChild; diff --git a/vortex-array/src/arrays/primitive/vtable/mod.rs b/vortex-array/src/arrays/primitive/vtable/mod.rs index cb28f96631e..5130665cd30 100644 --- a/vortex-array/src/arrays/primitive/vtable/mod.rs +++ b/vortex-array/src/arrays/primitive/vtable/mod.rs @@ -52,7 +52,7 @@ impl ArrayEq for PrimitiveData { } impl VTable for Primitive { - type ArrayData = PrimitiveData; + type TypedArrayData = PrimitiveData; type OperationsVTable = Self; type ValidityVTable = Self; diff --git a/vortex-array/src/arrays/scalar_fn/vtable/mod.rs b/vortex-array/src/arrays/scalar_fn/vtable/mod.rs index 34c472eac07..f5d8089ee0b 100644 --- a/vortex-array/src/arrays/scalar_fn/vtable/mod.rs +++ b/vortex-array/src/arrays/scalar_fn/vtable/mod.rs @@ -66,7 +66,7 @@ impl ArrayEq for ScalarFnData { } impl VTable for ScalarFn { - type ArrayData = ScalarFnData; + type TypedArrayData = ScalarFnData; type OperationsVTable = Self; type ValidityVTable = Self; diff --git a/vortex-array/src/arrays/shared/vtable.rs b/vortex-array/src/arrays/shared/vtable.rs index 52245aeb198..f13a262479e 100644 --- a/vortex-array/src/arrays/shared/vtable.rs +++ b/vortex-array/src/arrays/shared/vtable.rs @@ -49,7 +49,7 @@ impl ArrayEq for SharedData { } impl VTable for Shared { - type ArrayData = SharedData; + type TypedArrayData = SharedData; type OperationsVTable = Self; type ValidityVTable = Self; fn id(&self) -> ArrayId { diff --git a/vortex-array/src/arrays/slice/vtable.rs b/vortex-array/src/arrays/slice/vtable.rs index 56dbcbcd915..ac0ecc18039 100644 --- a/vortex-array/src/arrays/slice/vtable.rs +++ b/vortex-array/src/arrays/slice/vtable.rs @@ -60,7 +60,7 @@ impl ArrayEq for SliceData { } impl VTable for Slice { - type ArrayData = SliceData; + type TypedArrayData = SliceData; type OperationsVTable = Self; type ValidityVTable = Self; fn id(&self) -> ArrayId { @@ -70,7 +70,7 @@ impl VTable for Slice { fn validate( &self, - data: &Self::ArrayData, + data: &Self::TypedArrayData, dtype: &DType, len: usize, slots: &[Option], diff --git a/vortex-array/src/arrays/struct_/vtable/mod.rs b/vortex-array/src/arrays/struct_/vtable/mod.rs index 6a7a2cd8dd8..0113535ad21 100644 --- a/vortex-array/src/arrays/struct_/vtable/mod.rs +++ b/vortex-array/src/arrays/struct_/vtable/mod.rs @@ -37,7 +37,7 @@ use crate::array::ArrayId; pub type StructArray = Array; impl VTable for Struct { - type ArrayData = EmptyArrayData; + type TypedArrayData = EmptyArrayData; type OperationsVTable = Self; type ValidityVTable = Self; diff --git a/vortex-array/src/arrays/varbin/vtable/mod.rs b/vortex-array/src/arrays/varbin/vtable/mod.rs index b72ac5eaa48..86053613e50 100644 --- a/vortex-array/src/arrays/varbin/vtable/mod.rs +++ b/vortex-array/src/arrays/varbin/vtable/mod.rs @@ -65,7 +65,7 @@ impl ArrayEq for VarBinData { } impl VTable for VarBin { - type ArrayData = VarBinData; + type TypedArrayData = VarBinData; type OperationsVTable = Self; type ValidityVTable = Self; diff --git a/vortex-array/src/arrays/varbinview/vtable/mod.rs b/vortex-array/src/arrays/varbinview/vtable/mod.rs index 3827549744c..45db5d904ac 100644 --- a/vortex-array/src/arrays/varbinview/vtable/mod.rs +++ b/vortex-array/src/arrays/varbinview/vtable/mod.rs @@ -65,7 +65,7 @@ impl ArrayEq for VarBinViewData { } impl VTable for VarBinView { - type ArrayData = VarBinViewData; + type TypedArrayData = VarBinViewData; type OperationsVTable = Self; type ValidityVTable = Self; diff --git a/vortex-array/src/arrays/variant/vtable/mod.rs b/vortex-array/src/arrays/variant/vtable/mod.rs index 25db7e16077..666dd0c42ab 100644 --- a/vortex-array/src/arrays/variant/vtable/mod.rs +++ b/vortex-array/src/arrays/variant/vtable/mod.rs @@ -31,7 +31,7 @@ pub type VariantArray = Array; pub struct Variant; impl VTable for Variant { - type ArrayData = EmptyArrayData; + type TypedArrayData = EmptyArrayData; type OperationsVTable = Self; @@ -44,7 +44,7 @@ impl VTable for Variant { fn validate( &self, - _data: &Self::ArrayData, + _data: &Self::TypedArrayData, dtype: &DType, len: usize, slots: &[Option], diff --git a/vortex-array/src/arrow/datum.rs b/vortex-array/src/arrow/datum.rs index 66c457d3727..b5d7dbaf9c1 100644 --- a/vortex-array/src/arrow/datum.rs +++ b/vortex-array/src/arrow/datum.rs @@ -42,7 +42,7 @@ impl Datum { } } - /// Create a new [`Datum`] from an `DynArray`, which can then be passed to Arrow compute. + /// Create a new [`Datum`] from an `DynArrayData`, which can then be passed to Arrow compute. /// This not try and convert the array to a scalar if it is constant. pub fn try_new_array(array: &ArrayRef, ctx: &mut ExecutionCtx) -> VortexResult { Ok(Self { diff --git a/vortex-array/src/hash.rs b/vortex-array/src/hash.rs index f28739109e3..f45711e77d9 100644 --- a/vortex-array/src/hash.rs +++ b/vortex-array/src/hash.rs @@ -41,11 +41,11 @@ pub trait ArrayHash { } /// A dynamic version of [`ArrayHash`]. -pub trait DynArrayHash: private::SealedHash { +pub trait DynArrayDataHash: private::SealedHash { fn dyn_array_hash(&self, state: &mut dyn Hasher, precision: Precision); } -impl DynArrayHash for T { +impl DynArrayDataHash for T { fn dyn_array_hash(&self, mut state: &mut dyn Hasher, precision: Precision) { ArrayHash::array_hash(self, &mut state, precision); } @@ -62,11 +62,11 @@ pub trait ArrayEq { } /// A dynamic version of [`ArrayEq`]. -pub trait DynArrayEq: private::SealedEq { +pub trait DynArrayDataEq: private::SealedEq { fn dyn_array_eq(&self, other: &dyn Any, precision: Precision) -> bool; } -impl DynArrayEq for T { +impl DynArrayDataEq for T { fn dyn_array_eq(&self, other: &dyn Any, precision: Precision) -> bool { other .downcast_ref::() diff --git a/vortex-array/src/optimizer/rules.rs b/vortex-array/src/optimizer/rules.rs index e505b21a199..11528961931 100644 --- a/vortex-array/src/optimizer/rules.rs +++ b/vortex-array/src/optimizer/rules.rs @@ -68,7 +68,7 @@ pub trait ArrayParentReduceRule: Debug + Send + Sync + 'static { /// Type-erased version of [`ArrayParentReduceRule`] used for dynamic dispatch within /// [`ParentRuleSet`]. -pub trait DynArrayParentReduceRule: Debug + Send + Sync { +pub trait DynArrayDataParentReduceRule: Debug + Send + Sync { fn matches(&self, parent: &ArrayRef) -> bool; fn reduce_parent( @@ -80,7 +80,7 @@ pub trait DynArrayParentReduceRule: Debug + Send + Sync { } /// Bridges a concrete [`ArrayParentReduceRule`] to the type-erased -/// [`DynArrayParentReduceRule`] trait. Created by [`ParentRuleSet::lift`]. +/// [`DynArrayDataParentReduceRule`] trait. Created by [`ParentRuleSet::lift`]. pub struct ParentReduceRuleAdapter { rule: R, _phantom: PhantomData, @@ -95,7 +95,7 @@ impl> Debug for ParentReduceRuleAdapter> DynArrayParentReduceRule +impl> DynArrayDataParentReduceRule for ParentReduceRuleAdapter { fn matches(&self, parent: &ArrayRef) -> bool { @@ -142,21 +142,21 @@ impl ReduceRuleSet { /// A set of parent reduction rules for a specific child array encoding. pub struct ParentRuleSet { - rules: &'static [&'static dyn DynArrayParentReduceRule], + rules: &'static [&'static dyn DynArrayDataParentReduceRule], } impl ParentRuleSet { /// Create a new parent rule set with the given rules. /// /// Use [`ParentRuleSet::lift`] to lift static rules into dynamic trait objects. - pub const fn new(rules: &'static [&'static dyn DynArrayParentReduceRule]) -> Self { + pub const fn new(rules: &'static [&'static dyn DynArrayDataParentReduceRule]) -> Self { Self { rules } } /// Lift the given rule into a dynamic trait object. pub const fn lift>( rule: &'static R, - ) -> &'static dyn DynArrayParentReduceRule { + ) -> &'static dyn DynArrayDataParentReduceRule { // Assert that self is zero-sized const { assert!( diff --git a/vortex-array/src/scalar_fn/session.rs b/vortex-array/src/scalar_fn/session.rs index 32783e9df89..b3b4065f5fa 100644 --- a/vortex-array/src/scalar_fn/session.rs +++ b/vortex-array/src/scalar_fn/session.rs @@ -27,7 +27,6 @@ use crate::scalar_fn::fns::pack::Pack; use crate::scalar_fn::fns::root::Root; use crate::scalar_fn::fns::select::Select; -/// Registry of scalar function vtables. /// Registry of scalar function vtables. pub type ScalarFnRegistry = Registry; diff --git a/vortex-python/src/arrays/native.rs b/vortex-python/src/arrays/native.rs index 2ff7945fc55..9e918112db6 100644 --- a/vortex-python/src/arrays/native.rs +++ b/vortex-python/src/arrays/native.rs @@ -247,8 +247,8 @@ pub trait AsArrayRef { fn as_array_ref(&self) -> &T; } -impl AsArrayRef<::ArrayData> for PyRef<'_, V> { - fn as_array_ref(&self) -> &::ArrayData { +impl AsArrayRef<::TypedArrayData> for PyRef<'_, V> { + fn as_array_ref(&self) -> &::TypedArrayData { self.as_super() .inner() .as_opt::() diff --git a/vortex-python/src/arrays/py/vtable.rs b/vortex-python/src/arrays/py/vtable.rs index 4329c19261f..d2df2688cf5 100644 --- a/vortex-python/src/arrays/py/vtable.rs +++ b/vortex-python/src/arrays/py/vtable.rs @@ -48,7 +48,7 @@ impl ArrayEq for PythonArray { } impl VTable for PythonVTable { - type ArrayData = PythonArray; + type TypedArrayData = PythonArray; type OperationsVTable = Self; type ValidityVTable = Self; From d4fc23cb7f298bdfe6bbc8aea6282f3d7f7181b3 Mon Sep 17 00:00:00 2001 From: Joe Isaacs Date: Tue, 5 May 2026 16:15:56 +0100 Subject: [PATCH 04/12] add Signed-off-by: Joe Isaacs --- vortex-array/src/array/mod.rs | 2 +- vortex-array/src/array/typed.rs | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/vortex-array/src/array/mod.rs b/vortex-array/src/array/mod.rs index b82ad2a3261..ec02b70383e 100644 --- a/vortex-array/src/array/mod.rs +++ b/vortex-array/src/array/mod.rs @@ -372,7 +372,7 @@ impl DynArrayData for ArrayData { // SAFETY: we intentionally skip `V::validate` here. Caller guarantees that the resulting // array is either repaired or not externally observed. let store = unsafe { - ArrayData::::store_unchecked( + ArrayInner::>::new_unchecked( self.vtable.clone(), this.len(), this.dtype().clone(), diff --git a/vortex-array/src/array/typed.rs b/vortex-array/src/array/typed.rs index 341d7c986a5..4d70dc809d5 100644 --- a/vortex-array/src/array/typed.rs +++ b/vortex-array/src/array/typed.rs @@ -108,10 +108,10 @@ pub(crate) struct ArrayData { pub(crate) data: V::TypedArrayData, } -impl ArrayData { +impl ArrayInner> { /// Create a new validated [`ArrayInner`] from construction parameters. #[doc(hidden)] - pub fn try_new_store(new: ArrayParts) -> VortexResult> { + pub fn try_new(new: ArrayParts) -> VortexResult { new.vtable .validate(&new.data, &new.dtype, new.len, &new.slots)?; Ok(ArrayInner { @@ -122,7 +122,7 @@ impl ArrayData { slots: new.slots, stats: ArrayStats::default(), }, - data: Self { + data: ArrayData { vtable: new.vtable, data: new.data, }, @@ -133,14 +133,14 @@ impl ArrayData { /// /// # Safety /// Caller must ensure dtype and len match the data. - pub(crate) unsafe fn store_unchecked( + pub(crate) unsafe fn new_unchecked( vtable: V, len: usize, dtype: DType, data: V::TypedArrayData, slots: Vec>, stats: ArrayStats, - ) -> ArrayInner { + ) -> Self { ArrayInner { meta: ArrayMeta { len, @@ -149,7 +149,7 @@ impl ArrayData { slots, stats, }, - data: Self { + data: ArrayData { vtable, data, }, @@ -207,7 +207,7 @@ pub struct Array { impl Array { /// Create a typed array from explicit construction parameters. pub fn try_from_parts(new: ArrayParts) -> VortexResult { - let store = ArrayData::::try_new_store(new)?; + let store = ArrayInner::>::try_new(new)?; let inner = ArrayRef::from_store(Arc::new(store)); Ok(Self { inner, @@ -222,7 +222,7 @@ impl Array { #[doc(hidden)] pub unsafe fn from_parts_unchecked(new: ArrayParts) -> Self { let store = unsafe { - ArrayData::::store_unchecked( + ArrayInner::>::new_unchecked( new.vtable, new.len, new.dtype, From a3e495b43d8158e672fb37e7d40b07fa2aa4911e Mon Sep 17 00:00:00 2001 From: Joe Isaacs Date: Tue, 5 May 2026 16:28:45 +0100 Subject: [PATCH 05/12] add Signed-off-by: Joe Isaacs --- vortex-array/src/array/erased.rs | 57 +++++++++++++------------ vortex-array/src/array/mod.rs | 2 +- vortex-array/src/array/typed.rs | 64 +++++++++++------------------ vortex-array/src/optimizer/rules.rs | 12 +++--- 4 files changed, 58 insertions(+), 77 deletions(-) diff --git a/vortex-array/src/array/erased.rs b/vortex-array/src/array/erased.rs index 109d7e91bc1..b91a6a4f658 100644 --- a/vortex-array/src/array/erased.rs +++ b/vortex-array/src/array/erased.rs @@ -32,7 +32,6 @@ use crate::VortexSessionExecute; use crate::aggregate_fn::fns::sum::sum; use crate::array::ArrayData; use crate::array::ArrayId; -use crate::array::ArrayMeta; use crate::array::ArrayInner; use crate::array::DynArrayData; use crate::arrays::Bool; @@ -54,6 +53,7 @@ use crate::expr::stats::StatsProviderExt; use crate::matcher::Matcher; use crate::optimizer::ArrayOptimizer; use crate::scalar::Scalar; +use crate::stats::ArrayStats; use crate::stats::StatsSetRef; use crate::validity::Validity; @@ -88,12 +88,6 @@ impl ArrayRef { Self(store) } - /// Returns a reference to the array metadata. - #[inline(always)] - pub(crate) fn meta(&self) -> &ArrayMeta { - &self.0.meta - } - /// Returns a reference to the `dyn DynArrayData` inside the store. #[inline(always)] pub(crate) fn dyn_array(&self) -> &dyn DynArrayData { @@ -149,9 +143,9 @@ impl ArrayRef { impl Debug for ArrayRef { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { f.debug_struct("Array") - .field("encoding", &self.meta().encoding_id) - .field("dtype", &self.meta().dtype) - .field("len", &self.meta().len) + .field("encoding", &self.0.encoding_id) + .field("dtype", &self.0.dtype) + .field("len", &self.0.len) .field("data", &self.0.data) .finish() } @@ -159,11 +153,11 @@ impl Debug for ArrayRef { impl ArrayHash for ArrayRef { fn array_hash(&self, state: &mut H, precision: crate::Precision) { - self.meta().len.hash(state); - self.meta().dtype.hash(state); - self.meta().encoding_id.hash(state); - self.meta().slots.len().hash(state); - for slot in &self.meta().slots { + self.0.len.hash(state); + self.0.dtype.hash(state); + self.0.encoding_id.hash(state); + self.0.slots.len().hash(state); + for slot in &self.0.slots { slot.array_hash(state, precision); } self.0 @@ -174,15 +168,15 @@ impl ArrayHash for ArrayRef { impl ArrayEq for ArrayRef { fn array_eq(&self, other: &Self, precision: crate::Precision) -> bool { - self.meta().len == other.meta().len - && self.meta().dtype == other.meta().dtype - && self.meta().encoding_id == other.meta().encoding_id - && self.meta().slots.len() == other.meta().slots.len() + self.0.len == other.0.len + && self.0.dtype == other.0.dtype + && self.0.encoding_id == other.0.encoding_id + && self.0.slots.len() == other.0.slots.len() && self - .meta() + .0 .slots .iter() - .zip(other.meta().slots.iter()) + .zip(other.0.slots.iter()) .all(|(slot, other_slot)| slot.array_eq(other_slot, precision)) && self.0.data.dyn_array_eq(other, precision) } @@ -191,25 +185,25 @@ impl ArrayRef { /// Returns the length of the array. #[inline] pub fn len(&self) -> usize { - self.meta().len + self.0.len } /// Returns whether the array is empty (has zero rows). #[inline] pub fn is_empty(&self) -> bool { - self.meta().len == 0 + self.0.len == 0 } /// Returns the logical Vortex [`DType`] of the array. #[inline] pub fn dtype(&self) -> &DType { - &self.meta().dtype + &self.0.dtype } /// Returns the encoding ID of the array. #[inline] pub fn encoding_id(&self) -> ArrayId { - self.meta().encoding_id + self.0.encoding_id } /// Performs a constant-time slice of the array. @@ -388,9 +382,14 @@ impl ArrayRef { self.0.data.append_to_builder(self, builder, ctx) } + /// Returns the raw stats storage. + pub(crate) fn raw_stats(&self) -> &ArrayStats { + &self.0.stats + } + /// Returns the statistics of the array. pub fn statistics(&self) -> StatsSetRef<'_> { - self.0.meta.stats.to_ref(self) + self.0.stats.to_ref(self) } /// Does the array match the given matcher. @@ -512,7 +511,7 @@ impl ArrayRef { slot_idx: usize, ) -> VortexResult<(ArrayRef, ArrayRef)> { if let Some(store) = Arc::get_mut(&mut self.0) { - let child = store.meta.slots[slot_idx] + let child = store.slots[slot_idx] .take() .vortex_expect("take_slot_unchecked cannot take an absent slot"); return Ok((self, child)); @@ -547,7 +546,7 @@ impl ArrayRef { replacement: ArrayRef, ) -> VortexResult { if let Some(store) = Arc::get_mut(&mut self.0) { - store.meta.slots[slot_idx] = Some(replacement); + store.slots[slot_idx] = Some(replacement); return Ok(self); } @@ -693,7 +692,7 @@ impl ArrayRef { /// Returns the slots of the array. pub fn slots(&self) -> &[Option] { - &self.0.meta.slots + &self.0.slots } /// Returns the name of the slot at the given index. diff --git a/vortex-array/src/array/mod.rs b/vortex-array/src/array/mod.rs index ec02b70383e..76239c8d0f2 100644 --- a/vortex-array/src/array/mod.rs +++ b/vortex-array/src/array/mod.rs @@ -378,7 +378,7 @@ impl DynArrayData for ArrayData { this.dtype().clone(), self.data.clone(), slots, - this.meta().stats.clone(), + this.raw_stats().clone(), ) }; ArrayRef::from_store(Arc::new(store)) diff --git a/vortex-array/src/array/typed.rs b/vortex-array/src/array/typed.rs index 4d70dc809d5..f68d12b45a3 100644 --- a/vortex-array/src/array/typed.rs +++ b/vortex-array/src/array/typed.rs @@ -28,28 +28,20 @@ use crate::stats::StatsSet; use crate::stats::StatsSetRef; use crate::validity::Validity; -/// Common metadata for every array encoding. -/// -/// Stored in [`ArrayInner`] alongside the encoding-specific [`DynArrayData`] data. -/// [`ArrayRef`] reads these fields directly — no vtable dispatch. -pub(crate) struct ArrayMeta { - pub(crate) len: usize, - pub(crate) encoding_id: ArrayId, - pub(crate) dtype: DType, - pub(crate) slots: Vec>, - pub(crate) stats: ArrayStats, -} - /// The combined allocation behind [`ArrayRef`]. /// -/// Wraps an [`ArrayMeta`] (common fields) together with the encoding-specific -/// `data` (a concrete [`ArrayData`] erased to `dyn DynArrayData`). +/// Stores common metadata (len, dtype, encoding_id, slots, stats) together with the +/// encoding-specific `data` (a concrete [`ArrayData`] erased to `dyn DynArrayData`). /// /// `ArrayRef` stores `Arc>` — a single 16-byte fat pointer. -/// Metadata is accessed via `self.0.meta.*` (a normal struct field read through the Arc), +/// Metadata is accessed via `self.0.*` (a normal struct field read through the Arc), /// while encoding-specific methods go through `self.0.data` (vtable dispatch). pub(crate) struct ArrayInner { - pub(crate) meta: ArrayMeta, + pub(crate) len: usize, + pub(crate) encoding_id: ArrayId, + pub(crate) dtype: DType, + pub(crate) slots: Vec>, + pub(crate) stats: ArrayStats, pub(crate) data: D, // must be last for unsized coercion } @@ -98,10 +90,7 @@ impl TypedArrayRef for ArrayView<'_, V> {} // ArrayData — the concrete type stored inside Arc // ============================================================================= -/// The concrete encoding-specific array data that lives inside an [`ArrayInner`]. -/// -/// Does not contain metadata (`len`, `dtype`, `encoding_id`) — those live in -/// [`ArrayMeta`] within the same [`ArrayInner`] allocation. +/// A VTable and its instance data, this can be type-erased to [`DynArrayData`](crate::array::DynArrayData). #[doc(hidden)] pub(crate) struct ArrayData { pub(crate) vtable: V, @@ -115,13 +104,11 @@ impl ArrayInner> { new.vtable .validate(&new.data, &new.dtype, new.len, &new.slots)?; Ok(ArrayInner { - meta: ArrayMeta { - len: new.len, - encoding_id: new.vtable.id(), - dtype: new.dtype, - slots: new.slots, - stats: ArrayStats::default(), - }, + len: new.len, + encoding_id: new.vtable.id(), + dtype: new.dtype, + slots: new.slots, + stats: ArrayStats::default(), data: ArrayData { vtable: new.vtable, data: new.data, @@ -142,17 +129,12 @@ impl ArrayInner> { stats: ArrayStats, ) -> Self { ArrayInner { - meta: ArrayMeta { - len, - encoding_id: vtable.id(), - dtype, - slots, - stats, - }, - data: ArrayData { - vtable, - data, - }, + len, + encoding_id: vtable.id(), + dtype, + slots, + stats, + data: ArrayData { vtable, data }, } } } @@ -307,10 +289,10 @@ impl Array { match Arc::try_unwrap(typed_arc) { Ok(store) => Ok(ArrayParts { vtable: store.data.vtable, - dtype: store.meta.dtype, - len: store.meta.len, + dtype: store.dtype, + len: store.len, data: store.data.data, - slots: store.meta.slots, + slots: store.slots, }), Err(typed_arc) => Err(Self { inner: ArrayRef::from_store(typed_arc), diff --git a/vortex-array/src/optimizer/rules.rs b/vortex-array/src/optimizer/rules.rs index 11528961931..e505b21a199 100644 --- a/vortex-array/src/optimizer/rules.rs +++ b/vortex-array/src/optimizer/rules.rs @@ -68,7 +68,7 @@ pub trait ArrayParentReduceRule: Debug + Send + Sync + 'static { /// Type-erased version of [`ArrayParentReduceRule`] used for dynamic dispatch within /// [`ParentRuleSet`]. -pub trait DynArrayDataParentReduceRule: Debug + Send + Sync { +pub trait DynArrayParentReduceRule: Debug + Send + Sync { fn matches(&self, parent: &ArrayRef) -> bool; fn reduce_parent( @@ -80,7 +80,7 @@ pub trait DynArrayDataParentReduceRule: Debug + Send + Sync { } /// Bridges a concrete [`ArrayParentReduceRule`] to the type-erased -/// [`DynArrayDataParentReduceRule`] trait. Created by [`ParentRuleSet::lift`]. +/// [`DynArrayParentReduceRule`] trait. Created by [`ParentRuleSet::lift`]. pub struct ParentReduceRuleAdapter { rule: R, _phantom: PhantomData, @@ -95,7 +95,7 @@ impl> Debug for ParentReduceRuleAdapter> DynArrayDataParentReduceRule +impl> DynArrayParentReduceRule for ParentReduceRuleAdapter { fn matches(&self, parent: &ArrayRef) -> bool { @@ -142,21 +142,21 @@ impl ReduceRuleSet { /// A set of parent reduction rules for a specific child array encoding. pub struct ParentRuleSet { - rules: &'static [&'static dyn DynArrayDataParentReduceRule], + rules: &'static [&'static dyn DynArrayParentReduceRule], } impl ParentRuleSet { /// Create a new parent rule set with the given rules. /// /// Use [`ParentRuleSet::lift`] to lift static rules into dynamic trait objects. - pub const fn new(rules: &'static [&'static dyn DynArrayDataParentReduceRule]) -> Self { + pub const fn new(rules: &'static [&'static dyn DynArrayParentReduceRule]) -> Self { Self { rules } } /// Lift the given rule into a dynamic trait object. pub const fn lift>( rule: &'static R, - ) -> &'static dyn DynArrayDataParentReduceRule { + ) -> &'static dyn DynArrayParentReduceRule { // Assert that self is zero-sized const { assert!( From 39e382a0aa342a07c8d358963e57f547c813d59a Mon Sep 17 00:00:00 2001 From: Joe Isaacs Date: Tue, 5 May 2026 16:29:29 +0100 Subject: [PATCH 06/12] add Signed-off-by: Joe Isaacs --- vortex-array/Cargo.toml | 4 --- vortex-array/benches/slice_dict.rs | 50 ------------------------------ 2 files changed, 54 deletions(-) delete mode 100644 vortex-array/benches/slice_dict.rs diff --git a/vortex-array/Cargo.toml b/vortex-array/Cargo.toml index 281cf478d45..f8676d76ef0 100644 --- a/vortex-array/Cargo.toml +++ b/vortex-array/Cargo.toml @@ -192,7 +192,3 @@ harness = false [[bench]] name = "listview_builder_extend" harness = false - -[[bench]] -name = "slice_dict" -harness = false diff --git a/vortex-array/benches/slice_dict.rs b/vortex-array/benches/slice_dict.rs deleted file mode 100644 index 9c53b96432e..00000000000 --- a/vortex-array/benches/slice_dict.rs +++ /dev/null @@ -1,50 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// SPDX-FileCopyrightText: Copyright the Vortex contributors - -#![expect(clippy::cast_possible_truncation)] -#![expect(clippy::unwrap_used)] - -use divan::Bencher; -use divan::counter::ItemsCount; -use vortex_array::ArrayRef; -use vortex_array::IntoArray; -use vortex_array::arrays::DictArray; -use vortex_array::arrays::PrimitiveArray; -use vortex_array::arrays::VarBinViewArray; -use vortex_array::validity::Validity; -use vortex_buffer::Buffer; - -const NUM_ROWS: usize = 65_536; -const NUM_UNIQUE: usize = 50; -const SLICE_LENGTH: usize = 8_192; - -fn main() { - divan::main(); -} - -fn make_string_dict(num_rows: usize, num_unique: usize) -> ArrayRef { - let unique_strings: Vec = (0..num_unique) - .map(|i| format!("service-{i:04}-environment-name")) - .collect(); - - let values = - VarBinViewArray::from_iter_nullable_str(unique_strings.iter().map(|s| Some(s.as_str()))) - .into_array(); - - let codes: Vec = (0..num_rows).map(|i| (i % num_unique) as u32).collect(); - let codes_buf: Buffer = codes.into_iter().collect(); - let codes_arr = PrimitiveArray::new(codes_buf, Validity::NonNullable).into_array(); - - unsafe { DictArray::new_unchecked(codes_arr, values).into_array() } -} - -#[divan::bench(name = "slice_dict/native_slice")] -fn native_slice(bencher: Bencher) { - let source = make_string_dict(NUM_ROWS, NUM_UNIQUE); - - bencher - .counter(ItemsCount::new(SLICE_LENGTH)) - .with_inputs(|| 0..SLICE_LENGTH) - // Returning the ArrayRef lets divan defer Drop until after the timed sample. - .bench_refs(|range| source.slice(range.clone())); -} From 2ea2bc86b3af9454bc00b8ee509d8111012fa075 Mon Sep 17 00:00:00 2001 From: Joe Isaacs Date: Tue, 5 May 2026 16:30:41 +0100 Subject: [PATCH 07/12] add Signed-off-by: Joe Isaacs --- vortex-array/src/array/erased.rs | 8 ++++---- vortex-array/src/array/mod.rs | 2 +- vortex-array/src/array/typed.rs | 10 +++++----- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/vortex-array/src/array/erased.rs b/vortex-array/src/array/erased.rs index b91a6a4f658..07f417e60ba 100644 --- a/vortex-array/src/array/erased.rs +++ b/vortex-array/src/array/erased.rs @@ -84,7 +84,7 @@ pub struct ArrayRef(Arc>); impl ArrayRef { /// Create from an `Arc>`. - pub(crate) fn from_store(store: Arc>) -> Self { + pub(crate) fn from_inner(store: Arc>) -> Self { Self(store) } @@ -96,7 +96,7 @@ impl ArrayRef { /// Returns a mutable reference to the store if this is the sole owner. #[inline(always)] - pub(crate) fn store_mut(&mut self) -> Option<&mut ArrayInner> { + pub(crate) fn inner_mut(&mut self) -> Option<&mut ArrayInner> { Arc::get_mut(&mut self.0) } @@ -113,7 +113,7 @@ impl ArrayRef { #[allow(dead_code)] pub(crate) fn downcast_store(self) -> Result>>, Self> { if self.0.data.as_any().is::>() { - Ok(unsafe { self.downcast_store_unchecked() }) + Ok(unsafe { self.downcast_inner_unchecked() }) } else { Err(self) } @@ -124,7 +124,7 @@ impl ArrayRef { /// # Safety /// The caller must guarantee the concrete type behind `dyn DynArrayData` is `ArrayData`. #[inline(always)] - pub(crate) unsafe fn downcast_store_unchecked( + pub(crate) unsafe fn downcast_inner_unchecked( self, ) -> Arc>> { debug_assert!(self.0.data.as_any().is::>()); diff --git a/vortex-array/src/array/mod.rs b/vortex-array/src/array/mod.rs index 76239c8d0f2..5c7cf5ae60f 100644 --- a/vortex-array/src/array/mod.rs +++ b/vortex-array/src/array/mod.rs @@ -381,7 +381,7 @@ impl DynArrayData for ArrayData { this.raw_stats().clone(), ) }; - ArrayRef::from_store(Arc::new(store)) + ArrayRef::from_inner(Arc::new(store)) } fn reduce(&self, this: &ArrayRef) -> VortexResult> { diff --git a/vortex-array/src/array/typed.rs b/vortex-array/src/array/typed.rs index f68d12b45a3..ba38f715b6b 100644 --- a/vortex-array/src/array/typed.rs +++ b/vortex-array/src/array/typed.rs @@ -190,7 +190,7 @@ impl Array { /// Create a typed array from explicit construction parameters. pub fn try_from_parts(new: ArrayParts) -> VortexResult { let store = ArrayInner::>::try_new(new)?; - let inner = ArrayRef::from_store(Arc::new(store)); + let inner = ArrayRef::from_inner(Arc::new(store)); Ok(Self { inner, _phantom: PhantomData, @@ -213,7 +213,7 @@ impl Array { ArrayStats::default(), ) }; - let inner = ArrayRef::from_store(Arc::new(store)); + let inner = ArrayRef::from_inner(Arc::new(store)); Self { inner, _phantom: PhantomData, @@ -275,7 +275,7 @@ impl Array { /// Try to fetch a mut ref to the inner ArrayData. pub fn data_mut(&mut self) -> Option<&mut V::TypedArrayData> { - let store = self.inner.store_mut()?; + let store = self.inner.inner_mut()?; let array_inner = store.data.as_any_mut().downcast_mut::>(); Some(&mut array_inner?.data) } @@ -284,7 +284,7 @@ impl Array { pub fn try_into_parts(self) -> Result, Self> { let Self { inner, _phantom } = self; // SAFETY: Array guarantees the inner is ArrayData. - let typed_arc = unsafe { inner.downcast_store_unchecked::() }; + let typed_arc = unsafe { inner.downcast_inner_unchecked::() }; match Arc::try_unwrap(typed_arc) { Ok(store) => Ok(ArrayParts { @@ -295,7 +295,7 @@ impl Array { slots: store.slots, }), Err(typed_arc) => Err(Self { - inner: ArrayRef::from_store(typed_arc), + inner: ArrayRef::from_inner(typed_arc), _phantom: PhantomData, }), } From 07f977d571ef95274eb4cf5373fee42b6c4246a5 Mon Sep 17 00:00:00 2001 From: Joe Isaacs Date: Tue, 5 May 2026 16:37:28 +0100 Subject: [PATCH 08/12] add Signed-off-by: Joe Isaacs --- vortex-array/src/array/erased.rs | 47 +++++++++++++++++--------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/vortex-array/src/array/erased.rs b/vortex-array/src/array/erased.rs index 07f417e60ba..cea7ed0ed44 100644 --- a/vortex-array/src/array/erased.rs +++ b/vortex-array/src/array/erased.rs @@ -84,17 +84,17 @@ pub struct ArrayRef(Arc>); impl ArrayRef { /// Create from an `Arc>`. - pub(crate) fn from_inner(store: Arc>) -> Self { - Self(store) + pub(crate) fn from_inner(inner: Arc>) -> Self { + Self(inner) } - /// Returns a reference to the `dyn DynArrayData` inside the store. + /// Returns a reference to the `dyn DynArrayData` inside the inner. #[inline(always)] pub(crate) fn dyn_array(&self) -> &dyn DynArrayData { &self.0.data } - /// Returns a mutable reference to the store if this is the sole owner. + /// Returns a mutable reference to the inner if this is the sole owner. #[inline(always)] pub(crate) fn inner_mut(&mut self) -> Option<&mut ArrayInner> { Arc::get_mut(&mut self.0) @@ -107,11 +107,12 @@ impl ArrayRef { Arc::as_ptr(&self.0).addr() } - /// Downcast the store to a concrete `ArrayInner>`. + /// Downcast the inner to a concrete `ArrayInner>`. /// /// Uses the same raw-pointer technique as `Arc::downcast`. #[allow(dead_code)] - pub(crate) fn downcast_store(self) -> Result>>, Self> { + pub(crate) fn downcast_inner(self) -> Result>>, Self> { + // TODO(joe): can we use encoding id here? if self.0.data.as_any().is::>() { Ok(unsafe { self.downcast_inner_unchecked() }) } else { @@ -128,10 +129,12 @@ impl ArrayRef { self, ) -> Arc>> { debug_assert!(self.0.data.as_any().is::>()); + // Recover the original concrete Arc. The fat pointer's data pointer is the + // same allocation that was originally `Arc>>` before + // unsized coercion to `Arc>`. let raw = Arc::into_raw(self.0); - // SAFETY: caller guarantees the concrete type. The allocation was originally - // `Arc>>` coerced to `Arc>`. - unsafe { Arc::from_raw(raw as *const ArrayInner>) } + // # Safety all arrays are constructed in this way and type aliased. + unsafe { Arc::from_raw(raw.cast::>>()) } } /// Returns true if the two ArrayRefs point to the same allocation. @@ -510,8 +513,8 @@ impl ArrayRef { mut self, slot_idx: usize, ) -> VortexResult<(ArrayRef, ArrayRef)> { - if let Some(store) = Arc::get_mut(&mut self.0) { - let child = store.slots[slot_idx] + if let Some(inner) = Arc::get_mut(&mut self.0) { + let child = inner.slots[slot_idx] .take() .vortex_expect("take_slot_unchecked cannot take an absent slot"); return Ok((self, child)); @@ -545,15 +548,15 @@ impl ArrayRef { slot_idx: usize, replacement: ArrayRef, ) -> VortexResult { - if let Some(store) = Arc::get_mut(&mut self.0) { - store.slots[slot_idx] = Some(replacement); + if let Some(inner) = Arc::get_mut(&mut self.0) { + inner.slots[slot_idx] = Some(replacement); return Ok(self); } let mut slots = self.slots().to_vec(); slots[slot_idx] = Some(replacement); - let store = Arc::clone(&self.0); - store.data.with_slots(self, slots) + let inner = Arc::clone(&self.0); + inner.data.with_slots(self, slots) } /// Returns a new array with the provided slots. @@ -591,8 +594,8 @@ impl ArrayRef { ); } } - let store = Arc::clone(&self.0); - store.data.with_slots(self, slots) + let inner = Arc::clone(&self.0); + inner.data.with_slots(self, slots) } pub fn reduce(&self) -> VortexResult> { @@ -608,9 +611,9 @@ impl ArrayRef { } pub(crate) fn execute_encoding(self, ctx: &mut ExecutionCtx) -> VortexResult { - let store = Arc::as_ptr(&self.0); + let inner = Arc::as_ptr(&self.0); // SAFETY: the Arc outlives the DynArrayData function call - unsafe { (&*store).data.execute(self, ctx) } + unsafe { (&*inner).data.execute(self, ctx) } } /// Execute a single encoding step without applying `Done`-result postconditions. @@ -622,11 +625,11 @@ impl ArrayRef { self, ctx: &mut ExecutionCtx, ) -> VortexResult { - let store = Arc::as_ptr(&self.0); - // SAFETY: `store` points at the allocation owned by `self.0`. `self` stays alive for the + let inner = Arc::as_ptr(&self.0); + // SAFETY: `inner` points at the allocation owned by `self.0`. `self` stays alive for the // duration of the call, so the pointee remains valid. Avoiding an extra `Arc` clone here // preserves uniqueness so execute-time metadata cursors can use `Arc::get_mut`. - unsafe { (&*store).data.execute_unchecked(self, ctx) } + unsafe { (&*inner).data.execute_unchecked(self, ctx) } } pub fn execute_parent( From 0c4ab527301a1b08510e269822f6658c9559f07f Mon Sep 17 00:00:00 2001 From: Robert Kruszewski Date: Tue, 5 May 2026 22:25:58 +0100 Subject: [PATCH 09/12] fixes Signed-off-by: Robert Kruszewski --- vortex-array/src/array/erased.rs | 51 +++++++++++++---------------- vortex-array/src/array/mod.rs | 36 +++++++++++++++------ vortex-array/src/array/typed.rs | 55 +++++++++++++++++++++----------- vortex-array/src/canonical.rs | 2 +- vortex-array/src/columnar.rs | 2 +- vortex-array/src/matcher.rs | 2 +- 6 files changed, 89 insertions(+), 59 deletions(-) diff --git a/vortex-array/src/array/erased.rs b/vortex-array/src/array/erased.rs index 33b3e06b1ea..aa5d237f156 100644 --- a/vortex-array/src/array/erased.rs +++ b/vortex-array/src/array/erased.rs @@ -53,7 +53,6 @@ use crate::expr::stats::StatsProviderExt; use crate::matcher::Matcher; use crate::optimizer::ArrayOptimizer; use crate::scalar::Scalar; -use crate::stats::ArrayStats; use crate::stats::StatsSetRef; use crate::validity::Validity; @@ -146,9 +145,9 @@ impl ArrayRef { impl Debug for ArrayRef { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { f.debug_struct("Array") - .field("encoding", &self.0.encoding_id) - .field("dtype", &self.0.dtype) - .field("len", &self.0.len) + .field("encoding", &self.0.fields.encoding_id) + .field("dtype", &self.0.fields.dtype) + .field("len", &self.0.fields.len) .field("data", &self.0.data) .finish() } @@ -156,11 +155,11 @@ impl Debug for ArrayRef { impl ArrayHash for ArrayRef { fn array_hash(&self, state: &mut H, precision: crate::Precision) { - self.0.len.hash(state); - self.0.dtype.hash(state); - self.0.encoding_id.hash(state); - self.0.slots.len().hash(state); - for slot in &self.0.slots { + self.0.fields.len.hash(state); + self.0.fields.dtype.hash(state); + self.0.fields.encoding_id.hash(state); + self.0.fields.slots.len().hash(state); + for slot in &self.0.fields.slots { slot.array_hash(state, precision); } self.0 @@ -171,15 +170,16 @@ impl ArrayHash for ArrayRef { impl ArrayEq for ArrayRef { fn array_eq(&self, other: &Self, precision: crate::Precision) -> bool { - self.0.len == other.0.len - && self.0.dtype == other.0.dtype - && self.0.encoding_id == other.0.encoding_id - && self.0.slots.len() == other.0.slots.len() + self.0.fields.len == other.0.fields.len + && self.0.fields.dtype == other.0.fields.dtype + && self.0.fields.encoding_id == other.0.fields.encoding_id + && self.0.fields.slots.len() == other.0.fields.slots.len() && self .0 + .fields .slots .iter() - .zip(other.0.slots.iter()) + .zip(other.0.fields.slots.iter()) .all(|(slot, other_slot)| slot.array_eq(other_slot, precision)) && self.0.data.dyn_array_eq(other, precision) } @@ -188,25 +188,25 @@ impl ArrayRef { /// Returns the length of the array. #[inline] pub fn len(&self) -> usize { - self.0.len + self.0.fields.len } /// Returns whether the array is empty (has zero rows). #[inline] pub fn is_empty(&self) -> bool { - self.0.len == 0 + self.0.fields.len == 0 } /// Returns the logical Vortex [`DType`] of the array. #[inline] pub fn dtype(&self) -> &DType { - &self.0.dtype + &self.0.fields.dtype } /// Returns the encoding ID of the array. #[inline] pub fn encoding_id(&self) -> ArrayId { - self.0.encoding_id + self.0.fields.encoding_id } /// Performs a constant-time slice of the array. @@ -385,14 +385,9 @@ impl ArrayRef { self.0.data.append_to_builder(self, builder, ctx) } - /// Returns the raw stats storage. - pub(crate) fn raw_stats(&self) -> &ArrayStats { - &self.0.stats - } - /// Returns the statistics of the array. pub fn statistics(&self) -> StatsSetRef<'_> { - self.0.stats.to_ref(self) + self.0.fields.stats.to_ref(self) } /// Does the array match the given matcher. @@ -514,7 +509,7 @@ impl ArrayRef { slot_idx: usize, ) -> VortexResult<(ArrayRef, ArrayRef)> { if let Some(inner) = Arc::get_mut(&mut self.0) { - let child = inner.slots[slot_idx] + let child = inner.fields.slots[slot_idx] .take() .vortex_expect("take_slot_unchecked cannot take an absent slot"); return Ok((self, child)); @@ -549,7 +544,7 @@ impl ArrayRef { replacement: ArrayRef, ) -> VortexResult { if let Some(inner) = Arc::get_mut(&mut self.0) { - inner.slots[slot_idx] = Some(replacement); + inner.fields.slots[slot_idx] = Some(replacement); return Ok(self); } @@ -695,7 +690,7 @@ impl ArrayRef { /// Returns the slots of the array. pub fn slots(&self) -> &[Option] { - &self.0.slots + &self.0.fields.slots } /// Returns the name of the slot at the given index. @@ -751,7 +746,7 @@ impl Matcher for V { array.0.data.as_any().is::>() } - fn try_match<'a>(array: &'a ArrayRef) -> Option> { + fn try_match(array: &'_ ArrayRef) -> Option> { let inner = array.0.data.as_any().downcast_ref::>()?; // # Safety checked by `downcast_ref`. Some(unsafe { ArrayView::new_unchecked(array, &inner.data) }) diff --git a/vortex-array/src/array/mod.rs b/vortex-array/src/array/mod.rs index 3cb53afc690..6bce3e92cf8 100644 --- a/vortex-array/src/array/mod.rs +++ b/vortex-array/src/array/mod.rs @@ -118,7 +118,11 @@ pub(crate) trait DynArrayData: 'static + private::Sealed + Send + Sync + Debug { fn dyn_array_eq(&self, other: &ArrayRef, precision: crate::Precision) -> bool; /// Returns a new array with the given slots. - fn with_slots(&self, slots: Vec>) -> VortexResult; + fn with_slots( + &self, + fields: &ArrayFields, + slots: Vec>, + ) -> VortexResult; /// Returns a new array with the given slots, bypassing encoding-level validation. /// @@ -132,7 +136,11 @@ pub(crate) trait DynArrayData: 'static + private::Sealed + Send + Sync + Debug { /// The array returned may have slots whose content does not match the encoding's normal /// invariants. Callers must re-establish those invariants before handing the array to /// anything outside the executor. - unsafe fn with_slots_unchecked(&self, slots: Vec>) -> ArrayRef; + unsafe fn with_slots_unchecked( + &self, + fields: &ArrayFields, + slots: Vec>, + ) -> ArrayRef; /// Attempt to reduce the array to a simpler representation. fn reduce(&self, this: &ArrayRef) -> VortexResult>; @@ -349,13 +357,17 @@ impl DynArrayData for ArrayData { .is_some_and(|other_inner| self.data.array_eq(&other_inner.data, precision)) } - fn with_slots(&self, slots: Vec>) -> VortexResult { - let stats = self.stats.clone(); + fn with_slots( + &self, + fields: &ArrayFields, + slots: Vec>, + ) -> VortexResult { + let stats = fields.stats.clone(); Ok(Array::::try_from_parts( ArrayParts::new( self.vtable.clone(), - self.dtype.clone(), - self.len, + fields.dtype.clone(), + fields.len, self.data.clone(), ) .with_slots(slots), @@ -364,17 +376,21 @@ impl DynArrayData for ArrayData { .into_array()) } - unsafe fn with_slots_unchecked(&self, slots: Vec>) -> ArrayRef { + unsafe fn with_slots_unchecked( + &self, + fields: &ArrayFields, + slots: Vec>, + ) -> ArrayRef { // SAFETY: we intentionally skip `V::validate` here. Caller guarantees that the resulting // array is either repaired or not externally observed. let store = unsafe { ArrayInner::>::new_unchecked( self.vtable.clone(), - self.dtype.clone(), - self.len, + fields.len, + fields.dtype.clone(), self.data.clone(), slots, - this.raw_stats().clone(), + fields.stats.clone(), ) }; ArrayRef::from_inner(Arc::new(store)) diff --git a/vortex-array/src/array/typed.rs b/vortex-array/src/array/typed.rs index ba38f715b6b..19c49ee615f 100644 --- a/vortex-array/src/array/typed.rs +++ b/vortex-array/src/array/typed.rs @@ -21,6 +21,7 @@ use crate::LEGACY_SESSION; use crate::VortexSessionExecute; use crate::array::ArrayId; use crate::array::ArrayView; +use crate::array::DynArrayData; use crate::array::VTable; use crate::dtype::DType; use crate::stats::ArrayStats; @@ -28,6 +29,14 @@ use crate::stats::StatsSet; use crate::stats::StatsSetRef; use crate::validity::Validity; +pub(crate) struct ArrayFields { + pub(crate) len: usize, + pub(crate) encoding_id: ArrayId, + pub(crate) dtype: DType, + pub(crate) slots: Vec>, + pub(crate) stats: ArrayStats, +} + /// The combined allocation behind [`ArrayRef`]. /// /// Stores common metadata (len, dtype, encoding_id, slots, stats) together with the @@ -37,11 +46,7 @@ use crate::validity::Validity; /// Metadata is accessed via `self.0.*` (a normal struct field read through the Arc), /// while encoding-specific methods go through `self.0.data` (vtable dispatch). pub(crate) struct ArrayInner { - pub(crate) len: usize, - pub(crate) encoding_id: ArrayId, - pub(crate) dtype: DType, - pub(crate) slots: Vec>, - pub(crate) stats: ArrayStats, + pub(crate) fields: ArrayFields, pub(crate) data: D, // must be last for unsized coercion } @@ -104,11 +109,13 @@ impl ArrayInner> { new.vtable .validate(&new.data, &new.dtype, new.len, &new.slots)?; Ok(ArrayInner { - len: new.len, - encoding_id: new.vtable.id(), - dtype: new.dtype, - slots: new.slots, - stats: ArrayStats::default(), + fields: ArrayFields { + len: new.len, + encoding_id: new.vtable.id(), + dtype: new.dtype, + slots: new.slots, + stats: ArrayStats::default(), + }, data: ArrayData { vtable: new.vtable, data: new.data, @@ -129,16 +136,28 @@ impl ArrayInner> { stats: ArrayStats, ) -> Self { ArrayInner { - len, - encoding_id: vtable.id(), - dtype, - slots, - stats, + fields: ArrayFields { + len, + encoding_id: vtable.id(), + dtype, + slots, + stats, + }, data: ArrayData { vtable, data }, } } } +impl ArrayInner { + pub(crate) fn with_slots(&self, slots: Vec>) -> VortexResult { + self.data.with_slots(&self.fields, slots) + } + + pub(crate) unsafe fn with_slots_unchecked(&self, slots: Vec>) -> ArrayRef { + unsafe { self.data.with_slots_unchecked(&self.fields, slots) } + } +} + impl Deref for ArrayData { type Target = V::TypedArrayData; fn deref(&self) -> &V::TypedArrayData { @@ -289,10 +308,10 @@ impl Array { match Arc::try_unwrap(typed_arc) { Ok(store) => Ok(ArrayParts { vtable: store.data.vtable, - dtype: store.dtype, - len: store.len, + dtype: store.fields.dtype, + len: store.fields.len, data: store.data.data, - slots: store.slots, + slots: store.fields.slots, }), Err(typed_arc) => Err(Self { inner: ArrayRef::from_inner(typed_arc), diff --git a/vortex-array/src/canonical.rs b/vortex-array/src/canonical.rs index 150172b0df8..9ccaf027b7a 100644 --- a/vortex-array/src/canonical.rs +++ b/vortex-array/src/canonical.rs @@ -1019,7 +1019,7 @@ impl Matcher for AnyCanonical { || array.is::() } - fn try_match<'a>(array: &'a ArrayRef) -> Option> { + fn try_match(array: &ArrayRef) -> Option> { if let Some(a) = array.as_opt::() { Some(CanonicalView::Null(a)) } else if let Some(a) = array.as_opt::() { diff --git a/vortex-array/src/columnar.rs b/vortex-array/src/columnar.rs index 0f6d65dae2b..2e4bdc328fd 100644 --- a/vortex-array/src/columnar.rs +++ b/vortex-array/src/columnar.rs @@ -93,7 +93,7 @@ pub struct AnyColumnar; impl Matcher for AnyColumnar { type Match<'a> = ColumnarView<'a>; - fn try_match<'a>(array: &'a ArrayRef) -> Option> { + fn try_match(array: &ArrayRef) -> Option> { if let Some(constant) = array.as_opt::() { Some(ColumnarView::Constant(constant)) } else { diff --git a/vortex-array/src/matcher.rs b/vortex-array/src/matcher.rs index b7d82fa3866..532931df083 100644 --- a/vortex-array/src/matcher.rs +++ b/vortex-array/src/matcher.rs @@ -13,7 +13,7 @@ pub trait Matcher { } /// Try to match the given array, returning the matched view type if successful. - fn try_match<'a>(array: &'a ArrayRef) -> Option>; + fn try_match(array: &ArrayRef) -> Option>; } /// Matches any array type (wildcard matcher) From 2fd02cb6fcd190e9ba1008119928923cb218b51f Mon Sep 17 00:00:00 2001 From: Joe Isaacs Date: Wed, 6 May 2026 10:28:18 +0100 Subject: [PATCH 10/12] add Signed-off-by: Joe Isaacs --- encodings/alp/public-api.lock | 8 +- encodings/bytebool/public-api.lock | 6 +- encodings/datetime-parts/public-api.lock | 6 +- encodings/decimal-byte-parts/public-api.lock | 6 +- encodings/fastlanes/public-api.lock | 24 +- encodings/fsst/public-api.lock | 6 +- encodings/pco/public-api.lock | 4 +- encodings/runend/public-api.lock | 6 +- encodings/sequence/public-api.lock | 6 +- encodings/sparse/public-api.lock | 6 +- encodings/zigzag/public-api.lock | 6 +- encodings/zstd/public-api.lock | 6 +- vortex-array/public-api.lock | 622 +++++++++---------- 13 files changed, 356 insertions(+), 356 deletions(-) diff --git a/encodings/alp/public-api.lock b/encodings/alp/public-api.lock index 02caae83d0b..aff512e0406 100644 --- a/encodings/alp/public-api.lock +++ b/encodings/alp/public-api.lock @@ -22,10 +22,10 @@ pub fn vortex_alp::ALP::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt:: impl vortex_array::array::vtable::VTable for vortex_alp::ALP -pub type vortex_alp::ALP::ArrayData = vortex_alp::ALPData - pub type vortex_alp::ALP::OperationsVTable = vortex_alp::ALP +pub type vortex_alp::ALP::TypedArrayData = vortex_alp::ALPData + pub type vortex_alp::ALP::ValidityVTable = vortex_array::array::vtable::validity::ValidityVTableFromChild pub fn vortex_alp::ALP::buffer(vortex_array::array::view::ArrayView<'_, Self>, usize) -> vortex_array::buffer::BufferHandle @@ -158,10 +158,10 @@ pub fn vortex_alp::ALPRD::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt impl vortex_array::array::vtable::VTable for vortex_alp::ALPRD -pub type vortex_alp::ALPRD::ArrayData = vortex_alp::ALPRDData - pub type vortex_alp::ALPRD::OperationsVTable = vortex_alp::ALPRD +pub type vortex_alp::ALPRD::TypedArrayData = vortex_alp::ALPRDData + pub type vortex_alp::ALPRD::ValidityVTable = vortex_array::array::vtable::validity::ValidityVTableFromChild pub fn vortex_alp::ALPRD::buffer(vortex_array::array::view::ArrayView<'_, Self>, usize) -> vortex_array::buffer::BufferHandle diff --git a/encodings/bytebool/public-api.lock b/encodings/bytebool/public-api.lock index afbeea54ac4..730db87d7d5 100644 --- a/encodings/bytebool/public-api.lock +++ b/encodings/bytebool/public-api.lock @@ -20,10 +20,10 @@ pub fn vortex_bytebool::ByteBool::fmt(&self, &mut core::fmt::Formatter<'_>) -> c impl vortex_array::array::vtable::VTable for vortex_bytebool::ByteBool -pub type vortex_bytebool::ByteBool::ArrayData = vortex_bytebool::ByteBoolData - pub type vortex_bytebool::ByteBool::OperationsVTable = vortex_bytebool::ByteBool +pub type vortex_bytebool::ByteBool::TypedArrayData = vortex_bytebool::ByteBoolData + pub type vortex_bytebool::ByteBool::ValidityVTable = vortex_bytebool::ByteBool pub fn vortex_bytebool::ByteBool::buffer(vortex_array::array::view::ArrayView<'_, Self>, usize) -> vortex_array::buffer::BufferHandle @@ -46,7 +46,7 @@ pub fn vortex_bytebool::ByteBool::serialize(vortex_array::array::view::ArrayView pub fn vortex_bytebool::ByteBool::slot_name(vortex_array::array::view::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_bytebool::ByteBool::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_bytebool::ByteBool::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::array::vtable::operations::OperationsVTable for vortex_bytebool::ByteBool diff --git a/encodings/datetime-parts/public-api.lock b/encodings/datetime-parts/public-api.lock index 97aaa5dec69..f6845205964 100644 --- a/encodings/datetime-parts/public-api.lock +++ b/encodings/datetime-parts/public-api.lock @@ -18,10 +18,10 @@ pub fn vortex_datetime_parts::DateTimeParts::fmt(&self, &mut core::fmt::Formatte impl vortex_array::array::vtable::VTable for vortex_datetime_parts::DateTimeParts -pub type vortex_datetime_parts::DateTimeParts::ArrayData = vortex_datetime_parts::DateTimePartsData - pub type vortex_datetime_parts::DateTimeParts::OperationsVTable = vortex_datetime_parts::DateTimeParts +pub type vortex_datetime_parts::DateTimeParts::TypedArrayData = vortex_datetime_parts::DateTimePartsData + pub type vortex_datetime_parts::DateTimeParts::ValidityVTable = vortex_array::array::vtable::validity::ValidityVTableFromChild pub fn vortex_datetime_parts::DateTimeParts::buffer(vortex_array::array::view::ArrayView<'_, Self>, usize) -> vortex_array::buffer::BufferHandle @@ -44,7 +44,7 @@ pub fn vortex_datetime_parts::DateTimeParts::serialize(vortex_array::array::view pub fn vortex_datetime_parts::DateTimeParts::slot_name(vortex_array::array::view::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_datetime_parts::DateTimeParts::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_datetime_parts::DateTimeParts::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::array::vtable::operations::OperationsVTable for vortex_datetime_parts::DateTimeParts diff --git a/encodings/decimal-byte-parts/public-api.lock b/encodings/decimal-byte-parts/public-api.lock index d2d62792fbd..985172de937 100644 --- a/encodings/decimal-byte-parts/public-api.lock +++ b/encodings/decimal-byte-parts/public-api.lock @@ -16,10 +16,10 @@ pub fn vortex_decimal_byte_parts::DecimalByteParts::fmt(&self, &mut core::fmt::F impl vortex_array::array::vtable::VTable for vortex_decimal_byte_parts::DecimalByteParts -pub type vortex_decimal_byte_parts::DecimalByteParts::ArrayData = vortex_decimal_byte_parts::DecimalBytePartsData - pub type vortex_decimal_byte_parts::DecimalByteParts::OperationsVTable = vortex_decimal_byte_parts::DecimalByteParts +pub type vortex_decimal_byte_parts::DecimalByteParts::TypedArrayData = vortex_decimal_byte_parts::DecimalBytePartsData + pub type vortex_decimal_byte_parts::DecimalByteParts::ValidityVTable = vortex_array::array::vtable::validity::ValidityVTableFromChild pub fn vortex_decimal_byte_parts::DecimalByteParts::buffer(vortex_array::array::view::ArrayView<'_, Self>, usize) -> vortex_array::buffer::BufferHandle @@ -42,7 +42,7 @@ pub fn vortex_decimal_byte_parts::DecimalByteParts::serialize(vortex_array::arra pub fn vortex_decimal_byte_parts::DecimalByteParts::slot_name(vortex_array::array::view::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_decimal_byte_parts::DecimalByteParts::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_decimal_byte_parts::DecimalByteParts::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::array::vtable::operations::OperationsVTable for vortex_decimal_byte_parts::DecimalByteParts diff --git a/encodings/fastlanes/public-api.lock b/encodings/fastlanes/public-api.lock index bbd1f18ab4c..a3d3528eae2 100644 --- a/encodings/fastlanes/public-api.lock +++ b/encodings/fastlanes/public-api.lock @@ -136,10 +136,10 @@ pub fn vortex_fastlanes::BitPacked::fmt(&self, &mut core::fmt::Formatter<'_>) -> impl vortex_array::array::vtable::VTable for vortex_fastlanes::BitPacked -pub type vortex_fastlanes::BitPacked::ArrayData = vortex_fastlanes::BitPackedData - pub type vortex_fastlanes::BitPacked::OperationsVTable = vortex_fastlanes::BitPacked +pub type vortex_fastlanes::BitPacked::TypedArrayData = vortex_fastlanes::BitPackedData + pub type vortex_fastlanes::BitPacked::ValidityVTable = vortex_fastlanes::BitPacked pub fn vortex_fastlanes::BitPacked::append_to_builder(vortex_array::array::view::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -164,7 +164,7 @@ pub fn vortex_fastlanes::BitPacked::serialize(vortex_array::array::view::ArrayVi pub fn vortex_fastlanes::BitPacked::slot_name(vortex_array::array::view::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_fastlanes::BitPacked::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_fastlanes::BitPacked::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::array::vtable::operations::OperationsVTable for vortex_fastlanes::BitPacked @@ -296,10 +296,10 @@ pub fn vortex_fastlanes::Delta::fmt(&self, &mut core::fmt::Formatter<'_>) -> cor impl vortex_array::array::vtable::VTable for vortex_fastlanes::Delta -pub type vortex_fastlanes::Delta::ArrayData = vortex_fastlanes::DeltaData - pub type vortex_fastlanes::Delta::OperationsVTable = vortex_fastlanes::Delta +pub type vortex_fastlanes::Delta::TypedArrayData = vortex_fastlanes::DeltaData + pub type vortex_fastlanes::Delta::ValidityVTable = vortex_fastlanes::Delta pub fn vortex_fastlanes::Delta::buffer(vortex_array::array::view::ArrayView<'_, Self>, usize) -> vortex_array::buffer::BufferHandle @@ -320,7 +320,7 @@ pub fn vortex_fastlanes::Delta::serialize(vortex_array::array::view::ArrayView<' pub fn vortex_fastlanes::Delta::slot_name(vortex_array::array::view::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_fastlanes::Delta::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_fastlanes::Delta::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::array::vtable::operations::OperationsVTable for vortex_fastlanes::Delta @@ -382,10 +382,10 @@ pub fn vortex_fastlanes::FoR::fmt(&self, &mut core::fmt::Formatter<'_>) -> core: impl vortex_array::array::vtable::VTable for vortex_fastlanes::FoR -pub type vortex_fastlanes::FoR::ArrayData = vortex_fastlanes::FoRData - pub type vortex_fastlanes::FoR::OperationsVTable = vortex_fastlanes::FoR +pub type vortex_fastlanes::FoR::TypedArrayData = vortex_fastlanes::FoRData + pub type vortex_fastlanes::FoR::ValidityVTable = vortex_array::array::vtable::validity::ValidityVTableFromChild pub fn vortex_fastlanes::FoR::buffer(vortex_array::array::view::ArrayView<'_, Self>, usize) -> vortex_array::buffer::BufferHandle @@ -408,7 +408,7 @@ pub fn vortex_fastlanes::FoR::serialize(vortex_array::array::view::ArrayView<'_, pub fn vortex_fastlanes::FoR::slot_name(vortex_array::array::view::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_fastlanes::FoR::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_fastlanes::FoR::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::array::vtable::operations::OperationsVTable for vortex_fastlanes::FoR @@ -488,10 +488,10 @@ pub fn vortex_fastlanes::RLE::fmt(&self, &mut core::fmt::Formatter<'_>) -> core: impl vortex_array::array::vtable::VTable for vortex_fastlanes::RLE -pub type vortex_fastlanes::RLE::ArrayData = vortex_fastlanes::RLEData - pub type vortex_fastlanes::RLE::OperationsVTable = vortex_fastlanes::RLE +pub type vortex_fastlanes::RLE::TypedArrayData = vortex_fastlanes::RLEData + pub type vortex_fastlanes::RLE::ValidityVTable = vortex_fastlanes::RLE pub fn vortex_fastlanes::RLE::buffer(vortex_array::array::view::ArrayView<'_, Self>, usize) -> vortex_array::buffer::BufferHandle @@ -514,7 +514,7 @@ pub fn vortex_fastlanes::RLE::serialize(vortex_array::array::view::ArrayView<'_, pub fn vortex_fastlanes::RLE::slot_name(vortex_array::array::view::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_fastlanes::RLE::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_fastlanes::RLE::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::array::vtable::operations::OperationsVTable for vortex_fastlanes::RLE diff --git a/encodings/fsst/public-api.lock b/encodings/fsst/public-api.lock index bc2400e19d6..44cf663fa39 100644 --- a/encodings/fsst/public-api.lock +++ b/encodings/fsst/public-api.lock @@ -16,10 +16,10 @@ pub fn vortex_fsst::FSST::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt impl vortex_array::array::vtable::VTable for vortex_fsst::FSST -pub type vortex_fsst::FSST::ArrayData = vortex_fsst::FSSTData - pub type vortex_fsst::FSST::OperationsVTable = vortex_fsst::FSST +pub type vortex_fsst::FSST::TypedArrayData = vortex_fsst::FSSTData + pub type vortex_fsst::FSST::ValidityVTable = vortex_fsst::FSST pub fn vortex_fsst::FSST::append_to_builder(vortex_array::array::view::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -44,7 +44,7 @@ pub fn vortex_fsst::FSST::serialize(vortex_array::array::view::ArrayView<'_, Sel pub fn vortex_fsst::FSST::slot_name(vortex_array::array::view::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_fsst::FSST::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_fsst::FSST::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::array::vtable::operations::OperationsVTable for vortex_fsst::FSST diff --git a/encodings/pco/public-api.lock b/encodings/pco/public-api.lock index 25544357593..655ca1d6ecc 100644 --- a/encodings/pco/public-api.lock +++ b/encodings/pco/public-api.lock @@ -16,10 +16,10 @@ pub fn vortex_pco::Pco::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt:: impl vortex_array::array::vtable::VTable for vortex_pco::Pco -pub type vortex_pco::Pco::ArrayData = vortex_pco::PcoData - pub type vortex_pco::Pco::OperationsVTable = vortex_pco::Pco +pub type vortex_pco::Pco::TypedArrayData = vortex_pco::PcoData + pub type vortex_pco::Pco::ValidityVTable = vortex_pco::Pco pub fn vortex_pco::Pco::buffer(vortex_array::array::view::ArrayView<'_, Self>, usize) -> vortex_array::buffer::BufferHandle diff --git a/encodings/runend/public-api.lock b/encodings/runend/public-api.lock index 63c9f9857fe..0f95821ab08 100644 --- a/encodings/runend/public-api.lock +++ b/encodings/runend/public-api.lock @@ -40,10 +40,10 @@ pub fn vortex_runend::RunEnd::fmt(&self, &mut core::fmt::Formatter<'_>) -> core: impl vortex_array::array::vtable::VTable for vortex_runend::RunEnd -pub type vortex_runend::RunEnd::ArrayData = vortex_runend::RunEndData - pub type vortex_runend::RunEnd::OperationsVTable = vortex_runend::RunEnd +pub type vortex_runend::RunEnd::TypedArrayData = vortex_runend::RunEndData + pub type vortex_runend::RunEnd::ValidityVTable = vortex_runend::RunEnd pub fn vortex_runend::RunEnd::buffer(vortex_array::array::view::ArrayView<'_, Self>, usize) -> vortex_array::buffer::BufferHandle @@ -66,7 +66,7 @@ pub fn vortex_runend::RunEnd::serialize(vortex_array::array::view::ArrayView<'_, pub fn vortex_runend::RunEnd::slot_name(vortex_array::array::view::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_runend::RunEnd::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_runend::RunEnd::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::array::vtable::operations::OperationsVTable for vortex_runend::RunEnd diff --git a/encodings/sequence/public-api.lock b/encodings/sequence/public-api.lock index 96924559159..f7f0f4650de 100644 --- a/encodings/sequence/public-api.lock +++ b/encodings/sequence/public-api.lock @@ -18,10 +18,10 @@ pub fn vortex_sequence::Sequence::fmt(&self, &mut core::fmt::Formatter<'_>) -> c impl vortex_array::array::vtable::VTable for vortex_sequence::Sequence -pub type vortex_sequence::Sequence::ArrayData = vortex_sequence::SequenceData - pub type vortex_sequence::Sequence::OperationsVTable = vortex_sequence::Sequence +pub type vortex_sequence::Sequence::TypedArrayData = vortex_sequence::SequenceData + pub type vortex_sequence::Sequence::ValidityVTable = vortex_sequence::Sequence pub fn vortex_sequence::Sequence::buffer(vortex_array::array::view::ArrayView<'_, Self>, usize) -> vortex_array::buffer::BufferHandle @@ -44,7 +44,7 @@ pub fn vortex_sequence::Sequence::serialize(vortex_array::array::view::ArrayView pub fn vortex_sequence::Sequence::slot_name(vortex_array::array::view::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_sequence::Sequence::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_sequence::Sequence::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::array::vtable::operations::OperationsVTable for vortex_sequence::Sequence diff --git a/encodings/sparse/public-api.lock b/encodings/sparse/public-api.lock index c8e9abb533a..1c2e3c36fe6 100644 --- a/encodings/sparse/public-api.lock +++ b/encodings/sparse/public-api.lock @@ -20,10 +20,10 @@ pub fn vortex_sparse::Sparse::fmt(&self, &mut core::fmt::Formatter<'_>) -> core: impl vortex_array::array::vtable::VTable for vortex_sparse::Sparse -pub type vortex_sparse::Sparse::ArrayData = vortex_sparse::SparseData - pub type vortex_sparse::Sparse::OperationsVTable = vortex_sparse::Sparse +pub type vortex_sparse::Sparse::TypedArrayData = vortex_sparse::SparseData + pub type vortex_sparse::Sparse::ValidityVTable = vortex_sparse::Sparse pub fn vortex_sparse::Sparse::buffer(vortex_array::array::view::ArrayView<'_, Self>, usize) -> vortex_array::buffer::BufferHandle @@ -46,7 +46,7 @@ pub fn vortex_sparse::Sparse::serialize(vortex_array::array::view::ArrayView<'_, pub fn vortex_sparse::Sparse::slot_name(vortex_array::array::view::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_sparse::Sparse::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_sparse::Sparse::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::array::vtable::operations::OperationsVTable for vortex_sparse::Sparse diff --git a/encodings/zigzag/public-api.lock b/encodings/zigzag/public-api.lock index f38988cd680..3bbc2428ad1 100644 --- a/encodings/zigzag/public-api.lock +++ b/encodings/zigzag/public-api.lock @@ -16,10 +16,10 @@ pub fn vortex_zigzag::ZigZag::fmt(&self, &mut core::fmt::Formatter<'_>) -> core: impl vortex_array::array::vtable::VTable for vortex_zigzag::ZigZag -pub type vortex_zigzag::ZigZag::ArrayData = vortex_zigzag::ZigZagData - pub type vortex_zigzag::ZigZag::OperationsVTable = vortex_zigzag::ZigZag +pub type vortex_zigzag::ZigZag::TypedArrayData = vortex_zigzag::ZigZagData + pub type vortex_zigzag::ZigZag::ValidityVTable = vortex_array::array::vtable::validity::ValidityVTableFromChild pub fn vortex_zigzag::ZigZag::buffer(vortex_array::array::view::ArrayView<'_, Self>, usize) -> vortex_array::buffer::BufferHandle @@ -42,7 +42,7 @@ pub fn vortex_zigzag::ZigZag::serialize(vortex_array::array::view::ArrayView<'_, pub fn vortex_zigzag::ZigZag::slot_name(vortex_array::array::view::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_zigzag::ZigZag::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_zigzag::ZigZag::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::array::vtable::operations::OperationsVTable for vortex_zigzag::ZigZag diff --git a/encodings/zstd/public-api.lock b/encodings/zstd/public-api.lock index ef3cfff174a..43c534a4169 100644 --- a/encodings/zstd/public-api.lock +++ b/encodings/zstd/public-api.lock @@ -24,10 +24,10 @@ pub fn vortex_zstd::Zstd::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt impl vortex_array::array::vtable::VTable for vortex_zstd::Zstd -pub type vortex_zstd::Zstd::ArrayData = vortex_zstd::ZstdData - pub type vortex_zstd::Zstd::OperationsVTable = vortex_zstd::Zstd +pub type vortex_zstd::Zstd::TypedArrayData = vortex_zstd::ZstdData + pub type vortex_zstd::Zstd::ValidityVTable = vortex_zstd::Zstd pub fn vortex_zstd::Zstd::buffer(vortex_array::array::view::ArrayView<'_, Self>, usize) -> vortex_array::buffer::BufferHandle @@ -48,7 +48,7 @@ pub fn vortex_zstd::Zstd::serialize(vortex_array::array::view::ArrayView<'_, Sel pub fn vortex_zstd::Zstd::slot_name(vortex_array::array::view::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_zstd::Zstd::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_zstd::Zstd::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::array::vtable::operations::OperationsVTable for vortex_zstd::Zstd diff --git a/vortex-array/public-api.lock b/vortex-array/public-api.lock index b6de5284907..59074133c5d 100644 --- a/vortex-array/public-api.lock +++ b/vortex-array/public-api.lock @@ -1372,10 +1372,10 @@ pub fn vortex_array::arrays::Bool::scalar_at(vortex_array::ArrayView<'_, vortex_ impl vortex_array::VTable for vortex_array::arrays::Bool -pub type vortex_array::arrays::Bool::ArrayData = vortex_array::arrays::bool::BoolData - pub type vortex_array::arrays::Bool::OperationsVTable = vortex_array::arrays::Bool +pub type vortex_array::arrays::Bool::TypedArrayData = vortex_array::arrays::bool::BoolData + pub type vortex_array::arrays::Bool::ValidityVTable = vortex_array::arrays::Bool pub fn vortex_array::arrays::Bool::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -1546,10 +1546,10 @@ pub fn vortex_array::arrays::Chunked::scalar_at(vortex_array::ArrayView<'_, vort impl vortex_array::VTable for vortex_array::arrays::Chunked -pub type vortex_array::arrays::Chunked::ArrayData = vortex_array::arrays::chunked::ChunkedData - pub type vortex_array::arrays::Chunked::OperationsVTable = vortex_array::arrays::Chunked +pub type vortex_array::arrays::Chunked::TypedArrayData = vortex_array::arrays::chunked::ChunkedData + pub type vortex_array::arrays::Chunked::ValidityVTable = vortex_array::arrays::Chunked pub fn vortex_array::arrays::Chunked::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -1710,10 +1710,10 @@ pub fn vortex_array::arrays::Constant::scalar_at(vortex_array::ArrayView<'_, vor impl vortex_array::VTable for vortex_array::arrays::Constant -pub type vortex_array::arrays::Constant::ArrayData = vortex_array::arrays::constant::ConstantData - pub type vortex_array::arrays::Constant::OperationsVTable = vortex_array::arrays::Constant +pub type vortex_array::arrays::Constant::TypedArrayData = vortex_array::arrays::constant::ConstantData + pub type vortex_array::arrays::Constant::ValidityVTable = vortex_array::arrays::Constant pub fn vortex_array::arrays::Constant::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -1890,10 +1890,10 @@ pub fn vortex_array::arrays::Decimal::scalar_at(vortex_array::ArrayView<'_, vort impl vortex_array::VTable for vortex_array::arrays::Decimal -pub type vortex_array::arrays::Decimal::ArrayData = vortex_array::arrays::decimal::DecimalData - pub type vortex_array::arrays::Decimal::OperationsVTable = vortex_array::arrays::Decimal +pub type vortex_array::arrays::Decimal::TypedArrayData = vortex_array::arrays::decimal::DecimalData + pub type vortex_array::arrays::Decimal::ValidityVTable = vortex_array::arrays::Decimal pub fn vortex_array::arrays::Decimal::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -2110,10 +2110,10 @@ pub fn vortex_array::arrays::dict::Dict::scalar_at(vortex_array::ArrayView<'_, v impl vortex_array::VTable for vortex_array::arrays::dict::Dict -pub type vortex_array::arrays::dict::Dict::ArrayData = vortex_array::arrays::dict::DictData - pub type vortex_array::arrays::dict::Dict::OperationsVTable = vortex_array::arrays::dict::Dict +pub type vortex_array::arrays::dict::Dict::TypedArrayData = vortex_array::arrays::dict::DictData + pub type vortex_array::arrays::dict::Dict::ValidityVTable = vortex_array::arrays::dict::Dict pub fn vortex_array::arrays::dict::Dict::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -2202,10 +2202,10 @@ pub fn vortex_array::arrays::dict::Dict::scalar_at(vortex_array::ArrayView<'_, v impl vortex_array::VTable for vortex_array::arrays::dict::Dict -pub type vortex_array::arrays::dict::Dict::ArrayData = vortex_array::arrays::dict::DictData - pub type vortex_array::arrays::dict::Dict::OperationsVTable = vortex_array::arrays::dict::Dict +pub type vortex_array::arrays::dict::Dict::TypedArrayData = vortex_array::arrays::dict::DictData + pub type vortex_array::arrays::dict::Dict::ValidityVTable = vortex_array::arrays::dict::Dict pub fn vortex_array::arrays::dict::Dict::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -2554,10 +2554,10 @@ pub fn vortex_array::arrays::Extension::scalar_at(vortex_array::ArrayView<'_, vo impl vortex_array::VTable for vortex_array::arrays::Extension -pub type vortex_array::arrays::Extension::ArrayData = vortex_array::EmptyArrayData - pub type vortex_array::arrays::Extension::OperationsVTable = vortex_array::arrays::Extension +pub type vortex_array::arrays::Extension::TypedArrayData = vortex_array::EmptyArrayData + pub type vortex_array::arrays::Extension::ValidityVTable = vortex_array::ValidityVTableFromChild pub fn vortex_array::arrays::Extension::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -2652,10 +2652,10 @@ pub fn vortex_array::arrays::Filter::scalar_at(vortex_array::ArrayView<'_, vorte impl vortex_array::VTable for vortex_array::arrays::Filter -pub type vortex_array::arrays::Filter::ArrayData = vortex_array::arrays::filter::FilterData - pub type vortex_array::arrays::Filter::OperationsVTable = vortex_array::arrays::Filter +pub type vortex_array::arrays::Filter::TypedArrayData = vortex_array::arrays::filter::FilterData + pub type vortex_array::arrays::Filter::ValidityVTable = vortex_array::arrays::Filter pub fn vortex_array::arrays::Filter::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -2688,7 +2688,7 @@ pub fn vortex_array::arrays::Filter::serialize(vortex_array::ArrayView<'_, Self> pub fn vortex_array::arrays::Filter::slot_name(vortex_array::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_array::arrays::Filter::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Filter::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::ValidityVTable for vortex_array::arrays::Filter @@ -2840,10 +2840,10 @@ pub fn vortex_array::arrays::FixedSizeList::scalar_at(vortex_array::ArrayView<'_ impl vortex_array::VTable for vortex_array::arrays::FixedSizeList -pub type vortex_array::arrays::FixedSizeList::ArrayData = vortex_array::arrays::fixed_size_list::FixedSizeListData - pub type vortex_array::arrays::FixedSizeList::OperationsVTable = vortex_array::arrays::FixedSizeList +pub type vortex_array::arrays::FixedSizeList::TypedArrayData = vortex_array::arrays::fixed_size_list::FixedSizeListData + pub type vortex_array::arrays::FixedSizeList::ValidityVTable = vortex_array::arrays::FixedSizeList pub fn vortex_array::arrays::FixedSizeList::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -2984,10 +2984,10 @@ pub fn vortex_array::arrays::List::scalar_at(vortex_array::ArrayView<'_, vortex_ impl vortex_array::VTable for vortex_array::arrays::List -pub type vortex_array::arrays::List::ArrayData = vortex_array::arrays::list::ListData - pub type vortex_array::arrays::List::OperationsVTable = vortex_array::arrays::List +pub type vortex_array::arrays::List::TypedArrayData = vortex_array::arrays::list::ListData + pub type vortex_array::arrays::List::ValidityVTable = vortex_array::arrays::List pub fn vortex_array::arrays::List::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -3164,10 +3164,10 @@ pub fn vortex_array::arrays::ListView::scalar_at(vortex_array::ArrayView<'_, vor impl vortex_array::VTable for vortex_array::arrays::ListView -pub type vortex_array::arrays::ListView::ArrayData = vortex_array::arrays::listview::ListViewData - pub type vortex_array::arrays::ListView::OperationsVTable = vortex_array::arrays::ListView +pub type vortex_array::arrays::ListView::TypedArrayData = vortex_array::arrays::listview::ListViewData + pub type vortex_array::arrays::ListView::ValidityVTable = vortex_array::arrays::ListView pub fn vortex_array::arrays::ListView::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -3348,10 +3348,10 @@ pub fn vortex_array::arrays::Masked::scalar_at(vortex_array::ArrayView<'_, vorte impl vortex_array::VTable for vortex_array::arrays::Masked -pub type vortex_array::arrays::Masked::ArrayData = vortex_array::arrays::masked::MaskedData - pub type vortex_array::arrays::Masked::OperationsVTable = vortex_array::arrays::Masked +pub type vortex_array::arrays::Masked::TypedArrayData = vortex_array::arrays::masked::MaskedData + pub type vortex_array::arrays::Masked::ValidityVTable = vortex_array::arrays::Masked pub fn vortex_array::arrays::Masked::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -3498,10 +3498,10 @@ pub fn vortex_array::arrays::null::Null::scalar_at(vortex_array::ArrayView<'_, v impl vortex_array::VTable for vortex_array::arrays::null::Null -pub type vortex_array::arrays::null::Null::ArrayData = vortex_array::EmptyArrayData - pub type vortex_array::arrays::null::Null::OperationsVTable = vortex_array::arrays::null::Null +pub type vortex_array::arrays::null::Null::TypedArrayData = vortex_array::EmptyArrayData + pub type vortex_array::arrays::null::Null::ValidityVTable = vortex_array::arrays::null::Null pub fn vortex_array::arrays::null::Null::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -3584,10 +3584,10 @@ pub fn vortex_array::arrays::patched::Patched::scalar_at(vortex_array::ArrayView impl vortex_array::VTable for vortex_array::arrays::patched::Patched -pub type vortex_array::arrays::patched::Patched::ArrayData = vortex_array::arrays::patched::PatchedData - pub type vortex_array::arrays::patched::Patched::OperationsVTable = vortex_array::arrays::patched::Patched +pub type vortex_array::arrays::patched::Patched::TypedArrayData = vortex_array::arrays::patched::PatchedData + pub type vortex_array::arrays::patched::Patched::ValidityVTable = vortex_array::ValidityVTableFromChild pub fn vortex_array::arrays::patched::Patched::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -3870,10 +3870,10 @@ pub fn vortex_array::arrays::Primitive::scalar_at(vortex_array::ArrayView<'_, vo impl vortex_array::VTable for vortex_array::arrays::Primitive -pub type vortex_array::arrays::Primitive::ArrayData = vortex_array::arrays::primitive::PrimitiveData - pub type vortex_array::arrays::Primitive::OperationsVTable = vortex_array::arrays::Primitive +pub type vortex_array::arrays::Primitive::TypedArrayData = vortex_array::arrays::primitive::PrimitiveData + pub type vortex_array::arrays::Primitive::ValidityVTable = vortex_array::arrays::Primitive pub fn vortex_array::arrays::Primitive::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -4152,10 +4152,10 @@ pub fn vortex_array::arrays::scalar_fn::ScalarFn::scalar_at(vortex_array::ArrayV impl vortex_array::VTable for vortex_array::arrays::scalar_fn::ScalarFn -pub type vortex_array::arrays::scalar_fn::ScalarFn::ArrayData = vortex_array::arrays::scalar_fn::array::ScalarFnData - pub type vortex_array::arrays::scalar_fn::ScalarFn::OperationsVTable = vortex_array::arrays::scalar_fn::ScalarFn +pub type vortex_array::arrays::scalar_fn::ScalarFn::TypedArrayData = vortex_array::arrays::scalar_fn::array::ScalarFnData + pub type vortex_array::arrays::scalar_fn::ScalarFn::ValidityVTable = vortex_array::arrays::scalar_fn::ScalarFn pub fn vortex_array::arrays::scalar_fn::ScalarFn::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -4274,10 +4274,10 @@ pub fn vortex_array::arrays::Shared::scalar_at(vortex_array::ArrayView<'_, vorte impl vortex_array::VTable for vortex_array::arrays::Shared -pub type vortex_array::arrays::Shared::ArrayData = vortex_array::arrays::shared::SharedData - pub type vortex_array::arrays::Shared::OperationsVTable = vortex_array::arrays::Shared +pub type vortex_array::arrays::Shared::TypedArrayData = vortex_array::arrays::shared::SharedData + pub type vortex_array::arrays::Shared::ValidityVTable = vortex_array::arrays::Shared pub fn vortex_array::arrays::Shared::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -4386,10 +4386,10 @@ pub fn vortex_array::arrays::slice::Slice::scalar_at(vortex_array::ArrayView<'_, impl vortex_array::VTable for vortex_array::arrays::slice::Slice -pub type vortex_array::arrays::slice::Slice::ArrayData = vortex_array::arrays::slice::SliceData - pub type vortex_array::arrays::slice::Slice::OperationsVTable = vortex_array::arrays::slice::Slice +pub type vortex_array::arrays::slice::Slice::TypedArrayData = vortex_array::arrays::slice::SliceData + pub type vortex_array::arrays::slice::Slice::ValidityVTable = vortex_array::arrays::slice::Slice pub fn vortex_array::arrays::slice::Slice::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -4422,7 +4422,7 @@ pub fn vortex_array::arrays::slice::Slice::serialize(vortex_array::ArrayView<'_, pub fn vortex_array::arrays::slice::Slice::slot_name(vortex_array::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_array::arrays::slice::Slice::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::slice::Slice::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::ValidityVTable for vortex_array::arrays::slice::Slice @@ -4612,10 +4612,10 @@ pub fn vortex_array::arrays::Struct::scalar_at(vortex_array::ArrayView<'_, vorte impl vortex_array::VTable for vortex_array::arrays::Struct -pub type vortex_array::arrays::Struct::ArrayData = vortex_array::EmptyArrayData - pub type vortex_array::arrays::Struct::OperationsVTable = vortex_array::arrays::Struct +pub type vortex_array::arrays::Struct::TypedArrayData = vortex_array::EmptyArrayData + pub type vortex_array::arrays::Struct::ValidityVTable = vortex_array::arrays::Struct pub fn vortex_array::arrays::Struct::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -4776,10 +4776,10 @@ pub fn vortex_array::arrays::VarBin::scalar_at(vortex_array::ArrayView<'_, vorte impl vortex_array::VTable for vortex_array::arrays::VarBin -pub type vortex_array::arrays::VarBin::ArrayData = vortex_array::arrays::varbin::VarBinData - pub type vortex_array::arrays::VarBin::OperationsVTable = vortex_array::arrays::VarBin +pub type vortex_array::arrays::VarBin::TypedArrayData = vortex_array::arrays::varbin::VarBinData + pub type vortex_array::arrays::VarBin::ValidityVTable = vortex_array::arrays::VarBin pub fn vortex_array::arrays::VarBin::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -5142,10 +5142,10 @@ pub fn vortex_array::arrays::VarBinView::scalar_at(vortex_array::ArrayView<'_, v impl vortex_array::VTable for vortex_array::arrays::VarBinView -pub type vortex_array::arrays::VarBinView::ArrayData = vortex_array::arrays::varbinview::VarBinViewData - pub type vortex_array::arrays::VarBinView::OperationsVTable = vortex_array::arrays::VarBinView +pub type vortex_array::arrays::VarBinView::TypedArrayData = vortex_array::arrays::varbinview::VarBinViewData + pub type vortex_array::arrays::VarBinView::ValidityVTable = vortex_array::arrays::VarBinView pub fn vortex_array::arrays::VarBinView::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -5328,10 +5328,10 @@ pub fn vortex_array::arrays::Variant::scalar_at(vortex_array::ArrayView<'_, vort impl vortex_array::VTable for vortex_array::arrays::Variant -pub type vortex_array::arrays::Variant::ArrayData = vortex_array::EmptyArrayData - pub type vortex_array::arrays::Variant::OperationsVTable = vortex_array::arrays::Variant +pub type vortex_array::arrays::Variant::TypedArrayData = vortex_array::EmptyArrayData + pub type vortex_array::arrays::Variant::ValidityVTable = vortex_array::arrays::Variant pub fn vortex_array::arrays::Variant::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -5364,7 +5364,7 @@ pub fn vortex_array::arrays::Variant::serialize(vortex_array::ArrayView<'_, Self pub fn vortex_array::arrays::Variant::slot_name(vortex_array::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_array::arrays::Variant::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Variant::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::ValidityVTable for vortex_array::arrays::Variant @@ -5396,10 +5396,10 @@ pub fn vortex_array::arrays::Bool::scalar_at(vortex_array::ArrayView<'_, vortex_ impl vortex_array::VTable for vortex_array::arrays::Bool -pub type vortex_array::arrays::Bool::ArrayData = vortex_array::arrays::bool::BoolData - pub type vortex_array::arrays::Bool::OperationsVTable = vortex_array::arrays::Bool +pub type vortex_array::arrays::Bool::TypedArrayData = vortex_array::arrays::bool::BoolData + pub type vortex_array::arrays::Bool::ValidityVTable = vortex_array::arrays::Bool pub fn vortex_array::arrays::Bool::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -5488,10 +5488,10 @@ pub fn vortex_array::arrays::Chunked::scalar_at(vortex_array::ArrayView<'_, vort impl vortex_array::VTable for vortex_array::arrays::Chunked -pub type vortex_array::arrays::Chunked::ArrayData = vortex_array::arrays::chunked::ChunkedData - pub type vortex_array::arrays::Chunked::OperationsVTable = vortex_array::arrays::Chunked +pub type vortex_array::arrays::Chunked::TypedArrayData = vortex_array::arrays::chunked::ChunkedData + pub type vortex_array::arrays::Chunked::ValidityVTable = vortex_array::arrays::Chunked pub fn vortex_array::arrays::Chunked::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -5578,10 +5578,10 @@ pub fn vortex_array::arrays::Constant::scalar_at(vortex_array::ArrayView<'_, vor impl vortex_array::VTable for vortex_array::arrays::Constant -pub type vortex_array::arrays::Constant::ArrayData = vortex_array::arrays::constant::ConstantData - pub type vortex_array::arrays::Constant::OperationsVTable = vortex_array::arrays::Constant +pub type vortex_array::arrays::Constant::TypedArrayData = vortex_array::arrays::constant::ConstantData + pub type vortex_array::arrays::Constant::ValidityVTable = vortex_array::arrays::Constant pub fn vortex_array::arrays::Constant::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -5664,10 +5664,10 @@ pub fn vortex_array::arrays::Decimal::scalar_at(vortex_array::ArrayView<'_, vort impl vortex_array::VTable for vortex_array::arrays::Decimal -pub type vortex_array::arrays::Decimal::ArrayData = vortex_array::arrays::decimal::DecimalData - pub type vortex_array::arrays::Decimal::OperationsVTable = vortex_array::arrays::Decimal +pub type vortex_array::arrays::Decimal::TypedArrayData = vortex_array::arrays::decimal::DecimalData + pub type vortex_array::arrays::Decimal::ValidityVTable = vortex_array::arrays::Decimal pub fn vortex_array::arrays::Decimal::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -5756,10 +5756,10 @@ pub fn vortex_array::arrays::dict::Dict::scalar_at(vortex_array::ArrayView<'_, v impl vortex_array::VTable for vortex_array::arrays::dict::Dict -pub type vortex_array::arrays::dict::Dict::ArrayData = vortex_array::arrays::dict::DictData - pub type vortex_array::arrays::dict::Dict::OperationsVTable = vortex_array::arrays::dict::Dict +pub type vortex_array::arrays::dict::Dict::TypedArrayData = vortex_array::arrays::dict::DictData + pub type vortex_array::arrays::dict::Dict::ValidityVTable = vortex_array::arrays::dict::Dict pub fn vortex_array::arrays::dict::Dict::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -5846,10 +5846,10 @@ pub fn vortex_array::arrays::Extension::scalar_at(vortex_array::ArrayView<'_, vo impl vortex_array::VTable for vortex_array::arrays::Extension -pub type vortex_array::arrays::Extension::ArrayData = vortex_array::EmptyArrayData - pub type vortex_array::arrays::Extension::OperationsVTable = vortex_array::arrays::Extension +pub type vortex_array::arrays::Extension::TypedArrayData = vortex_array::EmptyArrayData + pub type vortex_array::arrays::Extension::ValidityVTable = vortex_array::ValidityVTableFromChild pub fn vortex_array::arrays::Extension::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -5928,10 +5928,10 @@ pub fn vortex_array::arrays::Filter::scalar_at(vortex_array::ArrayView<'_, vorte impl vortex_array::VTable for vortex_array::arrays::Filter -pub type vortex_array::arrays::Filter::ArrayData = vortex_array::arrays::filter::FilterData - pub type vortex_array::arrays::Filter::OperationsVTable = vortex_array::arrays::Filter +pub type vortex_array::arrays::Filter::TypedArrayData = vortex_array::arrays::filter::FilterData + pub type vortex_array::arrays::Filter::ValidityVTable = vortex_array::arrays::Filter pub fn vortex_array::arrays::Filter::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -5964,7 +5964,7 @@ pub fn vortex_array::arrays::Filter::serialize(vortex_array::ArrayView<'_, Self> pub fn vortex_array::arrays::Filter::slot_name(vortex_array::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_array::arrays::Filter::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Filter::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::ValidityVTable for vortex_array::arrays::Filter @@ -5986,10 +5986,10 @@ pub fn vortex_array::arrays::FixedSizeList::scalar_at(vortex_array::ArrayView<'_ impl vortex_array::VTable for vortex_array::arrays::FixedSizeList -pub type vortex_array::arrays::FixedSizeList::ArrayData = vortex_array::arrays::fixed_size_list::FixedSizeListData - pub type vortex_array::arrays::FixedSizeList::OperationsVTable = vortex_array::arrays::FixedSizeList +pub type vortex_array::arrays::FixedSizeList::TypedArrayData = vortex_array::arrays::fixed_size_list::FixedSizeListData + pub type vortex_array::arrays::FixedSizeList::ValidityVTable = vortex_array::arrays::FixedSizeList pub fn vortex_array::arrays::FixedSizeList::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -6064,10 +6064,10 @@ pub fn vortex_array::arrays::List::scalar_at(vortex_array::ArrayView<'_, vortex_ impl vortex_array::VTable for vortex_array::arrays::List -pub type vortex_array::arrays::List::ArrayData = vortex_array::arrays::list::ListData - pub type vortex_array::arrays::List::OperationsVTable = vortex_array::arrays::List +pub type vortex_array::arrays::List::TypedArrayData = vortex_array::arrays::list::ListData + pub type vortex_array::arrays::List::ValidityVTable = vortex_array::arrays::List pub fn vortex_array::arrays::List::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -6146,10 +6146,10 @@ pub fn vortex_array::arrays::ListView::scalar_at(vortex_array::ArrayView<'_, vor impl vortex_array::VTable for vortex_array::arrays::ListView -pub type vortex_array::arrays::ListView::ArrayData = vortex_array::arrays::listview::ListViewData - pub type vortex_array::arrays::ListView::OperationsVTable = vortex_array::arrays::ListView +pub type vortex_array::arrays::ListView::TypedArrayData = vortex_array::arrays::listview::ListViewData + pub type vortex_array::arrays::ListView::ValidityVTable = vortex_array::arrays::ListView pub fn vortex_array::arrays::ListView::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -6228,10 +6228,10 @@ pub fn vortex_array::arrays::Masked::scalar_at(vortex_array::ArrayView<'_, vorte impl vortex_array::VTable for vortex_array::arrays::Masked -pub type vortex_array::arrays::Masked::ArrayData = vortex_array::arrays::masked::MaskedData - pub type vortex_array::arrays::Masked::OperationsVTable = vortex_array::arrays::Masked +pub type vortex_array::arrays::Masked::TypedArrayData = vortex_array::arrays::masked::MaskedData + pub type vortex_array::arrays::Masked::ValidityVTable = vortex_array::arrays::Masked pub fn vortex_array::arrays::Masked::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -6306,10 +6306,10 @@ pub fn vortex_array::arrays::null::Null::scalar_at(vortex_array::ArrayView<'_, v impl vortex_array::VTable for vortex_array::arrays::null::Null -pub type vortex_array::arrays::null::Null::ArrayData = vortex_array::EmptyArrayData - pub type vortex_array::arrays::null::Null::OperationsVTable = vortex_array::arrays::null::Null +pub type vortex_array::arrays::null::Null::TypedArrayData = vortex_array::EmptyArrayData + pub type vortex_array::arrays::null::Null::ValidityVTable = vortex_array::arrays::null::Null pub fn vortex_array::arrays::null::Null::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -6388,10 +6388,10 @@ pub fn vortex_array::arrays::patched::Patched::scalar_at(vortex_array::ArrayView impl vortex_array::VTable for vortex_array::arrays::patched::Patched -pub type vortex_array::arrays::patched::Patched::ArrayData = vortex_array::arrays::patched::PatchedData - pub type vortex_array::arrays::patched::Patched::OperationsVTable = vortex_array::arrays::patched::Patched +pub type vortex_array::arrays::patched::Patched::TypedArrayData = vortex_array::arrays::patched::PatchedData + pub type vortex_array::arrays::patched::Patched::ValidityVTable = vortex_array::ValidityVTableFromChild pub fn vortex_array::arrays::patched::Patched::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -6462,10 +6462,10 @@ pub fn vortex_array::arrays::Primitive::scalar_at(vortex_array::ArrayView<'_, vo impl vortex_array::VTable for vortex_array::arrays::Primitive -pub type vortex_array::arrays::Primitive::ArrayData = vortex_array::arrays::primitive::PrimitiveData - pub type vortex_array::arrays::Primitive::OperationsVTable = vortex_array::arrays::Primitive +pub type vortex_array::arrays::Primitive::TypedArrayData = vortex_array::arrays::primitive::PrimitiveData + pub type vortex_array::arrays::Primitive::ValidityVTable = vortex_array::arrays::Primitive pub fn vortex_array::arrays::Primitive::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -6554,10 +6554,10 @@ pub fn vortex_array::arrays::scalar_fn::ScalarFn::scalar_at(vortex_array::ArrayV impl vortex_array::VTable for vortex_array::arrays::scalar_fn::ScalarFn -pub type vortex_array::arrays::scalar_fn::ScalarFn::ArrayData = vortex_array::arrays::scalar_fn::array::ScalarFnData - pub type vortex_array::arrays::scalar_fn::ScalarFn::OperationsVTable = vortex_array::arrays::scalar_fn::ScalarFn +pub type vortex_array::arrays::scalar_fn::ScalarFn::TypedArrayData = vortex_array::arrays::scalar_fn::array::ScalarFnData + pub type vortex_array::arrays::scalar_fn::ScalarFn::ValidityVTable = vortex_array::arrays::scalar_fn::ScalarFn pub fn vortex_array::arrays::scalar_fn::ScalarFn::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -6612,10 +6612,10 @@ pub fn vortex_array::arrays::Shared::scalar_at(vortex_array::ArrayView<'_, vorte impl vortex_array::VTable for vortex_array::arrays::Shared -pub type vortex_array::arrays::Shared::ArrayData = vortex_array::arrays::shared::SharedData - pub type vortex_array::arrays::Shared::OperationsVTable = vortex_array::arrays::Shared +pub type vortex_array::arrays::Shared::TypedArrayData = vortex_array::arrays::shared::SharedData + pub type vortex_array::arrays::Shared::ValidityVTable = vortex_array::arrays::Shared pub fn vortex_array::arrays::Shared::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -6670,10 +6670,10 @@ pub fn vortex_array::arrays::slice::Slice::scalar_at(vortex_array::ArrayView<'_, impl vortex_array::VTable for vortex_array::arrays::slice::Slice -pub type vortex_array::arrays::slice::Slice::ArrayData = vortex_array::arrays::slice::SliceData - pub type vortex_array::arrays::slice::Slice::OperationsVTable = vortex_array::arrays::slice::Slice +pub type vortex_array::arrays::slice::Slice::TypedArrayData = vortex_array::arrays::slice::SliceData + pub type vortex_array::arrays::slice::Slice::ValidityVTable = vortex_array::arrays::slice::Slice pub fn vortex_array::arrays::slice::Slice::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -6706,7 +6706,7 @@ pub fn vortex_array::arrays::slice::Slice::serialize(vortex_array::ArrayView<'_, pub fn vortex_array::arrays::slice::Slice::slot_name(vortex_array::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_array::arrays::slice::Slice::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::slice::Slice::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::ValidityVTable for vortex_array::arrays::slice::Slice @@ -6732,10 +6732,10 @@ pub fn vortex_array::arrays::Struct::scalar_at(vortex_array::ArrayView<'_, vorte impl vortex_array::VTable for vortex_array::arrays::Struct -pub type vortex_array::arrays::Struct::ArrayData = vortex_array::EmptyArrayData - pub type vortex_array::arrays::Struct::OperationsVTable = vortex_array::arrays::Struct +pub type vortex_array::arrays::Struct::TypedArrayData = vortex_array::EmptyArrayData + pub type vortex_array::arrays::Struct::ValidityVTable = vortex_array::arrays::Struct pub fn vortex_array::arrays::Struct::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -6818,10 +6818,10 @@ pub fn vortex_array::arrays::VarBin::scalar_at(vortex_array::ArrayView<'_, vorte impl vortex_array::VTable for vortex_array::arrays::VarBin -pub type vortex_array::arrays::VarBin::ArrayData = vortex_array::arrays::varbin::VarBinData - pub type vortex_array::arrays::VarBin::OperationsVTable = vortex_array::arrays::VarBin +pub type vortex_array::arrays::VarBin::TypedArrayData = vortex_array::arrays::varbin::VarBinData + pub type vortex_array::arrays::VarBin::ValidityVTable = vortex_array::arrays::VarBin pub fn vortex_array::arrays::VarBin::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -6904,10 +6904,10 @@ pub fn vortex_array::arrays::VarBinView::scalar_at(vortex_array::ArrayView<'_, v impl vortex_array::VTable for vortex_array::arrays::VarBinView -pub type vortex_array::arrays::VarBinView::ArrayData = vortex_array::arrays::varbinview::VarBinViewData - pub type vortex_array::arrays::VarBinView::OperationsVTable = vortex_array::arrays::VarBinView +pub type vortex_array::arrays::VarBinView::TypedArrayData = vortex_array::arrays::varbinview::VarBinViewData + pub type vortex_array::arrays::VarBinView::ValidityVTable = vortex_array::arrays::VarBinView pub fn vortex_array::arrays::VarBinView::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -6986,10 +6986,10 @@ pub fn vortex_array::arrays::Variant::scalar_at(vortex_array::ArrayView<'_, vort impl vortex_array::VTable for vortex_array::arrays::Variant -pub type vortex_array::arrays::Variant::ArrayData = vortex_array::EmptyArrayData - pub type vortex_array::arrays::Variant::OperationsVTable = vortex_array::arrays::Variant +pub type vortex_array::arrays::Variant::TypedArrayData = vortex_array::EmptyArrayData + pub type vortex_array::arrays::Variant::ValidityVTable = vortex_array::arrays::Variant pub fn vortex_array::arrays::Variant::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -7022,7 +7022,7 @@ pub fn vortex_array::arrays::Variant::serialize(vortex_array::ArrayView<'_, Self pub fn vortex_array::arrays::Variant::slot_name(vortex_array::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_array::arrays::Variant::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Variant::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::ValidityVTable for vortex_array::arrays::Variant @@ -13402,7 +13402,7 @@ pub type vortex_array::matcher::Matcher::Match<'a> pub fn vortex_array::matcher::Matcher::matches(&vortex_array::ArrayRef) -> bool -pub fn vortex_array::matcher::Matcher::try_match<'a>(&'a vortex_array::ArrayRef) -> core::option::Option +pub fn vortex_array::matcher::Matcher::try_match(&vortex_array::ArrayRef) -> core::option::Option impl vortex_array::matcher::Matcher for vortex_array::AnyCanonical @@ -13410,7 +13410,7 @@ pub type vortex_array::AnyCanonical::Match<'a> = vortex_array::CanonicalView<'a> pub fn vortex_array::AnyCanonical::matches(&vortex_array::ArrayRef) -> bool -pub fn vortex_array::AnyCanonical::try_match<'a>(&'a vortex_array::ArrayRef) -> core::option::Option +pub fn vortex_array::AnyCanonical::try_match(&vortex_array::ArrayRef) -> core::option::Option impl vortex_array::matcher::Matcher for vortex_array::AnyColumnar @@ -13418,7 +13418,7 @@ pub type vortex_array::AnyColumnar::Match<'a> = vortex_array::ColumnarView<'a> pub fn vortex_array::AnyColumnar::matches(&vortex_array::ArrayRef) -> bool -pub fn vortex_array::AnyColumnar::try_match<'a>(&'a vortex_array::ArrayRef) -> core::option::Option +pub fn vortex_array::AnyColumnar::try_match(&vortex_array::ArrayRef) -> core::option::Option impl vortex_array::matcher::Matcher for vortex_array::arrays::scalar_fn::AnyScalarFn @@ -13450,7 +13450,7 @@ pub type V::Match<'a> = vortex_array::ArrayView<'a, V> pub fn V::matches(&vortex_array::ArrayRef) -> bool -pub fn V::try_match<'a>(&'a vortex_array::ArrayRef) -> core::option::Option> +pub fn V::try_match(&vortex_array::ArrayRef) -> core::option::Option> pub mod vortex_array::memory @@ -19748,7 +19748,7 @@ pub fn vortex_array::ValidityVTableFromChild::validity(vortex_array::ArrayView<' pub struct vortex_array::vtable::ValidityVTableFromChildSliceHelper -impl vortex_array::ValidityVTable for vortex_array::ValidityVTableFromChildSliceHelper where ::ArrayData: vortex_array::ValidityChildSliceHelper +impl vortex_array::ValidityVTable for vortex_array::ValidityVTableFromChildSliceHelper where ::TypedArrayData: vortex_array::ValidityChildSliceHelper pub fn vortex_array::ValidityVTableFromChildSliceHelper::validity(vortex_array::ArrayView<'_, V>) -> vortex_error::VortexResult @@ -19784,10 +19784,10 @@ pub fn vortex_array::arrays::scalar_fn::plugin::ScalarFnArrayPlugin::serializ pub trait vortex_array::vtable::ArrayVTable: 'static + core::clone::Clone + core::marker::Sized + core::marker::Send + core::marker::Sync + core::fmt::Debug -pub type vortex_array::vtable::ArrayVTable::ArrayData: 'static + core::marker::Send + core::marker::Sync + core::clone::Clone + core::fmt::Debug + core::fmt::Display + vortex_array::ArrayHash + vortex_array::ArrayEq - pub type vortex_array::vtable::ArrayVTable::OperationsVTable: vortex_array::OperationsVTable +pub type vortex_array::vtable::ArrayVTable::TypedArrayData: 'static + core::marker::Send + core::marker::Sync + core::clone::Clone + core::fmt::Debug + core::fmt::Display + vortex_array::ArrayHash + vortex_array::ArrayEq + pub type vortex_array::vtable::ArrayVTable::ValidityVTable: vortex_array::ValidityVTable pub fn vortex_array::vtable::ArrayVTable::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -19820,14 +19820,14 @@ pub fn vortex_array::vtable::ArrayVTable::serialize(vortex_array::ArrayView<'_, pub fn vortex_array::vtable::ArrayVTable::slot_name(vortex_array::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_array::vtable::ArrayVTable::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_array::vtable::ArrayVTable::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::VTable for vortex_array::arrays::Bool -pub type vortex_array::arrays::Bool::ArrayData = vortex_array::arrays::bool::BoolData - pub type vortex_array::arrays::Bool::OperationsVTable = vortex_array::arrays::Bool +pub type vortex_array::arrays::Bool::TypedArrayData = vortex_array::arrays::bool::BoolData + pub type vortex_array::arrays::Bool::ValidityVTable = vortex_array::arrays::Bool pub fn vortex_array::arrays::Bool::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -19864,10 +19864,10 @@ pub fn vortex_array::arrays::Bool::validate(&self, &vortex_array::arrays::bool:: impl vortex_array::VTable for vortex_array::arrays::Chunked -pub type vortex_array::arrays::Chunked::ArrayData = vortex_array::arrays::chunked::ChunkedData - pub type vortex_array::arrays::Chunked::OperationsVTable = vortex_array::arrays::Chunked +pub type vortex_array::arrays::Chunked::TypedArrayData = vortex_array::arrays::chunked::ChunkedData + pub type vortex_array::arrays::Chunked::ValidityVTable = vortex_array::arrays::Chunked pub fn vortex_array::arrays::Chunked::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -19904,10 +19904,10 @@ pub fn vortex_array::arrays::Chunked::validate(&self, &vortex_array::arrays::chu impl vortex_array::VTable for vortex_array::arrays::Constant -pub type vortex_array::arrays::Constant::ArrayData = vortex_array::arrays::constant::ConstantData - pub type vortex_array::arrays::Constant::OperationsVTable = vortex_array::arrays::Constant +pub type vortex_array::arrays::Constant::TypedArrayData = vortex_array::arrays::constant::ConstantData + pub type vortex_array::arrays::Constant::ValidityVTable = vortex_array::arrays::Constant pub fn vortex_array::arrays::Constant::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -19944,10 +19944,10 @@ pub fn vortex_array::arrays::Constant::validate(&self, &vortex_array::arrays::co impl vortex_array::VTable for vortex_array::arrays::Decimal -pub type vortex_array::arrays::Decimal::ArrayData = vortex_array::arrays::decimal::DecimalData - pub type vortex_array::arrays::Decimal::OperationsVTable = vortex_array::arrays::Decimal +pub type vortex_array::arrays::Decimal::TypedArrayData = vortex_array::arrays::decimal::DecimalData + pub type vortex_array::arrays::Decimal::ValidityVTable = vortex_array::arrays::Decimal pub fn vortex_array::arrays::Decimal::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -19984,10 +19984,10 @@ pub fn vortex_array::arrays::Decimal::validate(&self, &vortex_array::arrays::dec impl vortex_array::VTable for vortex_array::arrays::Extension -pub type vortex_array::arrays::Extension::ArrayData = vortex_array::EmptyArrayData - pub type vortex_array::arrays::Extension::OperationsVTable = vortex_array::arrays::Extension +pub type vortex_array::arrays::Extension::TypedArrayData = vortex_array::EmptyArrayData + pub type vortex_array::arrays::Extension::ValidityVTable = vortex_array::ValidityVTableFromChild pub fn vortex_array::arrays::Extension::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -20024,10 +20024,10 @@ pub fn vortex_array::arrays::Extension::validate(&self, &vortex_array::EmptyArra impl vortex_array::VTable for vortex_array::arrays::Filter -pub type vortex_array::arrays::Filter::ArrayData = vortex_array::arrays::filter::FilterData - pub type vortex_array::arrays::Filter::OperationsVTable = vortex_array::arrays::Filter +pub type vortex_array::arrays::Filter::TypedArrayData = vortex_array::arrays::filter::FilterData + pub type vortex_array::arrays::Filter::ValidityVTable = vortex_array::arrays::Filter pub fn vortex_array::arrays::Filter::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -20060,14 +20060,14 @@ pub fn vortex_array::arrays::Filter::serialize(vortex_array::ArrayView<'_, Self> pub fn vortex_array::arrays::Filter::slot_name(vortex_array::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_array::arrays::Filter::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Filter::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::VTable for vortex_array::arrays::FixedSizeList -pub type vortex_array::arrays::FixedSizeList::ArrayData = vortex_array::arrays::fixed_size_list::FixedSizeListData - pub type vortex_array::arrays::FixedSizeList::OperationsVTable = vortex_array::arrays::FixedSizeList +pub type vortex_array::arrays::FixedSizeList::TypedArrayData = vortex_array::arrays::fixed_size_list::FixedSizeListData + pub type vortex_array::arrays::FixedSizeList::ValidityVTable = vortex_array::arrays::FixedSizeList pub fn vortex_array::arrays::FixedSizeList::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -20104,10 +20104,10 @@ pub fn vortex_array::arrays::FixedSizeList::validate(&self, &vortex_array::array impl vortex_array::VTable for vortex_array::arrays::List -pub type vortex_array::arrays::List::ArrayData = vortex_array::arrays::list::ListData - pub type vortex_array::arrays::List::OperationsVTable = vortex_array::arrays::List +pub type vortex_array::arrays::List::TypedArrayData = vortex_array::arrays::list::ListData + pub type vortex_array::arrays::List::ValidityVTable = vortex_array::arrays::List pub fn vortex_array::arrays::List::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -20144,10 +20144,10 @@ pub fn vortex_array::arrays::List::validate(&self, &vortex_array::arrays::list:: impl vortex_array::VTable for vortex_array::arrays::ListView -pub type vortex_array::arrays::ListView::ArrayData = vortex_array::arrays::listview::ListViewData - pub type vortex_array::arrays::ListView::OperationsVTable = vortex_array::arrays::ListView +pub type vortex_array::arrays::ListView::TypedArrayData = vortex_array::arrays::listview::ListViewData + pub type vortex_array::arrays::ListView::ValidityVTable = vortex_array::arrays::ListView pub fn vortex_array::arrays::ListView::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -20184,10 +20184,10 @@ pub fn vortex_array::arrays::ListView::validate(&self, &vortex_array::arrays::li impl vortex_array::VTable for vortex_array::arrays::Masked -pub type vortex_array::arrays::Masked::ArrayData = vortex_array::arrays::masked::MaskedData - pub type vortex_array::arrays::Masked::OperationsVTable = vortex_array::arrays::Masked +pub type vortex_array::arrays::Masked::TypedArrayData = vortex_array::arrays::masked::MaskedData + pub type vortex_array::arrays::Masked::ValidityVTable = vortex_array::arrays::Masked pub fn vortex_array::arrays::Masked::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -20224,10 +20224,10 @@ pub fn vortex_array::arrays::Masked::validate(&self, &vortex_array::arrays::mask impl vortex_array::VTable for vortex_array::arrays::Primitive -pub type vortex_array::arrays::Primitive::ArrayData = vortex_array::arrays::primitive::PrimitiveData - pub type vortex_array::arrays::Primitive::OperationsVTable = vortex_array::arrays::Primitive +pub type vortex_array::arrays::Primitive::TypedArrayData = vortex_array::arrays::primitive::PrimitiveData + pub type vortex_array::arrays::Primitive::ValidityVTable = vortex_array::arrays::Primitive pub fn vortex_array::arrays::Primitive::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -20264,10 +20264,10 @@ pub fn vortex_array::arrays::Primitive::validate(&self, &vortex_array::arrays::p impl vortex_array::VTable for vortex_array::arrays::Shared -pub type vortex_array::arrays::Shared::ArrayData = vortex_array::arrays::shared::SharedData - pub type vortex_array::arrays::Shared::OperationsVTable = vortex_array::arrays::Shared +pub type vortex_array::arrays::Shared::TypedArrayData = vortex_array::arrays::shared::SharedData + pub type vortex_array::arrays::Shared::ValidityVTable = vortex_array::arrays::Shared pub fn vortex_array::arrays::Shared::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -20304,10 +20304,10 @@ pub fn vortex_array::arrays::Shared::validate(&self, &vortex_array::arrays::shar impl vortex_array::VTable for vortex_array::arrays::Struct -pub type vortex_array::arrays::Struct::ArrayData = vortex_array::EmptyArrayData - pub type vortex_array::arrays::Struct::OperationsVTable = vortex_array::arrays::Struct +pub type vortex_array::arrays::Struct::TypedArrayData = vortex_array::EmptyArrayData + pub type vortex_array::arrays::Struct::ValidityVTable = vortex_array::arrays::Struct pub fn vortex_array::arrays::Struct::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -20344,10 +20344,10 @@ pub fn vortex_array::arrays::Struct::validate(&self, &vortex_array::EmptyArrayDa impl vortex_array::VTable for vortex_array::arrays::VarBin -pub type vortex_array::arrays::VarBin::ArrayData = vortex_array::arrays::varbin::VarBinData - pub type vortex_array::arrays::VarBin::OperationsVTable = vortex_array::arrays::VarBin +pub type vortex_array::arrays::VarBin::TypedArrayData = vortex_array::arrays::varbin::VarBinData + pub type vortex_array::arrays::VarBin::ValidityVTable = vortex_array::arrays::VarBin pub fn vortex_array::arrays::VarBin::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -20384,10 +20384,10 @@ pub fn vortex_array::arrays::VarBin::validate(&self, &vortex_array::arrays::varb impl vortex_array::VTable for vortex_array::arrays::VarBinView -pub type vortex_array::arrays::VarBinView::ArrayData = vortex_array::arrays::varbinview::VarBinViewData - pub type vortex_array::arrays::VarBinView::OperationsVTable = vortex_array::arrays::VarBinView +pub type vortex_array::arrays::VarBinView::TypedArrayData = vortex_array::arrays::varbinview::VarBinViewData + pub type vortex_array::arrays::VarBinView::ValidityVTable = vortex_array::arrays::VarBinView pub fn vortex_array::arrays::VarBinView::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -20424,10 +20424,10 @@ pub fn vortex_array::arrays::VarBinView::validate(&self, &vortex_array::arrays:: impl vortex_array::VTable for vortex_array::arrays::Variant -pub type vortex_array::arrays::Variant::ArrayData = vortex_array::EmptyArrayData - pub type vortex_array::arrays::Variant::OperationsVTable = vortex_array::arrays::Variant +pub type vortex_array::arrays::Variant::TypedArrayData = vortex_array::EmptyArrayData + pub type vortex_array::arrays::Variant::ValidityVTable = vortex_array::arrays::Variant pub fn vortex_array::arrays::Variant::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -20460,14 +20460,14 @@ pub fn vortex_array::arrays::Variant::serialize(vortex_array::ArrayView<'_, Self pub fn vortex_array::arrays::Variant::slot_name(vortex_array::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_array::arrays::Variant::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Variant::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::VTable for vortex_array::arrays::dict::Dict -pub type vortex_array::arrays::dict::Dict::ArrayData = vortex_array::arrays::dict::DictData - pub type vortex_array::arrays::dict::Dict::OperationsVTable = vortex_array::arrays::dict::Dict +pub type vortex_array::arrays::dict::Dict::TypedArrayData = vortex_array::arrays::dict::DictData + pub type vortex_array::arrays::dict::Dict::ValidityVTable = vortex_array::arrays::dict::Dict pub fn vortex_array::arrays::dict::Dict::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -20504,10 +20504,10 @@ pub fn vortex_array::arrays::dict::Dict::validate(&self, &vortex_array::arrays:: impl vortex_array::VTable for vortex_array::arrays::null::Null -pub type vortex_array::arrays::null::Null::ArrayData = vortex_array::EmptyArrayData - pub type vortex_array::arrays::null::Null::OperationsVTable = vortex_array::arrays::null::Null +pub type vortex_array::arrays::null::Null::TypedArrayData = vortex_array::EmptyArrayData + pub type vortex_array::arrays::null::Null::ValidityVTable = vortex_array::arrays::null::Null pub fn vortex_array::arrays::null::Null::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -20544,10 +20544,10 @@ pub fn vortex_array::arrays::null::Null::validate(&self, &vortex_array::EmptyArr impl vortex_array::VTable for vortex_array::arrays::patched::Patched -pub type vortex_array::arrays::patched::Patched::ArrayData = vortex_array::arrays::patched::PatchedData - pub type vortex_array::arrays::patched::Patched::OperationsVTable = vortex_array::arrays::patched::Patched +pub type vortex_array::arrays::patched::Patched::TypedArrayData = vortex_array::arrays::patched::PatchedData + pub type vortex_array::arrays::patched::Patched::ValidityVTable = vortex_array::ValidityVTableFromChild pub fn vortex_array::arrays::patched::Patched::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -20584,10 +20584,10 @@ pub fn vortex_array::arrays::patched::Patched::validate(&self, &vortex_array::ar impl vortex_array::VTable for vortex_array::arrays::scalar_fn::ScalarFn -pub type vortex_array::arrays::scalar_fn::ScalarFn::ArrayData = vortex_array::arrays::scalar_fn::array::ScalarFnData - pub type vortex_array::arrays::scalar_fn::ScalarFn::OperationsVTable = vortex_array::arrays::scalar_fn::ScalarFn +pub type vortex_array::arrays::scalar_fn::ScalarFn::TypedArrayData = vortex_array::arrays::scalar_fn::array::ScalarFnData + pub type vortex_array::arrays::scalar_fn::ScalarFn::ValidityVTable = vortex_array::arrays::scalar_fn::ScalarFn pub fn vortex_array::arrays::scalar_fn::ScalarFn::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -20624,10 +20624,10 @@ pub fn vortex_array::arrays::scalar_fn::ScalarFn::validate(&self, &vortex_array: impl vortex_array::VTable for vortex_array::arrays::slice::Slice -pub type vortex_array::arrays::slice::Slice::ArrayData = vortex_array::arrays::slice::SliceData - pub type vortex_array::arrays::slice::Slice::OperationsVTable = vortex_array::arrays::slice::Slice +pub type vortex_array::arrays::slice::Slice::TypedArrayData = vortex_array::arrays::slice::SliceData + pub type vortex_array::arrays::slice::Slice::ValidityVTable = vortex_array::arrays::slice::Slice pub fn vortex_array::arrays::slice::Slice::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -20660,7 +20660,7 @@ pub fn vortex_array::arrays::slice::Slice::serialize(vortex_array::ArrayView<'_, pub fn vortex_array::arrays::slice::Slice::slot_name(vortex_array::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_array::arrays::slice::Slice::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::slice::Slice::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> pub trait vortex_array::vtable::OperationsVTable @@ -20756,10 +20756,10 @@ pub fn vortex_array::NotSupported::scalar_at(vortex_array::ArrayView<'_, V>, usi pub trait vortex_array::vtable::VTable: 'static + core::clone::Clone + core::marker::Sized + core::marker::Send + core::marker::Sync + core::fmt::Debug -pub type vortex_array::vtable::VTable::ArrayData: 'static + core::marker::Send + core::marker::Sync + core::clone::Clone + core::fmt::Debug + core::fmt::Display + vortex_array::ArrayHash + vortex_array::ArrayEq - pub type vortex_array::vtable::VTable::OperationsVTable: vortex_array::OperationsVTable +pub type vortex_array::vtable::VTable::TypedArrayData: 'static + core::marker::Send + core::marker::Sync + core::clone::Clone + core::fmt::Debug + core::fmt::Display + vortex_array::ArrayHash + vortex_array::ArrayEq + pub type vortex_array::vtable::VTable::ValidityVTable: vortex_array::ValidityVTable pub fn vortex_array::vtable::VTable::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -20792,14 +20792,14 @@ pub fn vortex_array::vtable::VTable::serialize(vortex_array::ArrayView<'_, Self> pub fn vortex_array::vtable::VTable::slot_name(vortex_array::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_array::vtable::VTable::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_array::vtable::VTable::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::VTable for vortex_array::arrays::Bool -pub type vortex_array::arrays::Bool::ArrayData = vortex_array::arrays::bool::BoolData - pub type vortex_array::arrays::Bool::OperationsVTable = vortex_array::arrays::Bool +pub type vortex_array::arrays::Bool::TypedArrayData = vortex_array::arrays::bool::BoolData + pub type vortex_array::arrays::Bool::ValidityVTable = vortex_array::arrays::Bool pub fn vortex_array::arrays::Bool::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -20836,10 +20836,10 @@ pub fn vortex_array::arrays::Bool::validate(&self, &vortex_array::arrays::bool:: impl vortex_array::VTable for vortex_array::arrays::Chunked -pub type vortex_array::arrays::Chunked::ArrayData = vortex_array::arrays::chunked::ChunkedData - pub type vortex_array::arrays::Chunked::OperationsVTable = vortex_array::arrays::Chunked +pub type vortex_array::arrays::Chunked::TypedArrayData = vortex_array::arrays::chunked::ChunkedData + pub type vortex_array::arrays::Chunked::ValidityVTable = vortex_array::arrays::Chunked pub fn vortex_array::arrays::Chunked::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -20876,10 +20876,10 @@ pub fn vortex_array::arrays::Chunked::validate(&self, &vortex_array::arrays::chu impl vortex_array::VTable for vortex_array::arrays::Constant -pub type vortex_array::arrays::Constant::ArrayData = vortex_array::arrays::constant::ConstantData - pub type vortex_array::arrays::Constant::OperationsVTable = vortex_array::arrays::Constant +pub type vortex_array::arrays::Constant::TypedArrayData = vortex_array::arrays::constant::ConstantData + pub type vortex_array::arrays::Constant::ValidityVTable = vortex_array::arrays::Constant pub fn vortex_array::arrays::Constant::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -20916,10 +20916,10 @@ pub fn vortex_array::arrays::Constant::validate(&self, &vortex_array::arrays::co impl vortex_array::VTable for vortex_array::arrays::Decimal -pub type vortex_array::arrays::Decimal::ArrayData = vortex_array::arrays::decimal::DecimalData - pub type vortex_array::arrays::Decimal::OperationsVTable = vortex_array::arrays::Decimal +pub type vortex_array::arrays::Decimal::TypedArrayData = vortex_array::arrays::decimal::DecimalData + pub type vortex_array::arrays::Decimal::ValidityVTable = vortex_array::arrays::Decimal pub fn vortex_array::arrays::Decimal::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -20956,10 +20956,10 @@ pub fn vortex_array::arrays::Decimal::validate(&self, &vortex_array::arrays::dec impl vortex_array::VTable for vortex_array::arrays::Extension -pub type vortex_array::arrays::Extension::ArrayData = vortex_array::EmptyArrayData - pub type vortex_array::arrays::Extension::OperationsVTable = vortex_array::arrays::Extension +pub type vortex_array::arrays::Extension::TypedArrayData = vortex_array::EmptyArrayData + pub type vortex_array::arrays::Extension::ValidityVTable = vortex_array::ValidityVTableFromChild pub fn vortex_array::arrays::Extension::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -20996,10 +20996,10 @@ pub fn vortex_array::arrays::Extension::validate(&self, &vortex_array::EmptyArra impl vortex_array::VTable for vortex_array::arrays::Filter -pub type vortex_array::arrays::Filter::ArrayData = vortex_array::arrays::filter::FilterData - pub type vortex_array::arrays::Filter::OperationsVTable = vortex_array::arrays::Filter +pub type vortex_array::arrays::Filter::TypedArrayData = vortex_array::arrays::filter::FilterData + pub type vortex_array::arrays::Filter::ValidityVTable = vortex_array::arrays::Filter pub fn vortex_array::arrays::Filter::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -21032,14 +21032,14 @@ pub fn vortex_array::arrays::Filter::serialize(vortex_array::ArrayView<'_, Self> pub fn vortex_array::arrays::Filter::slot_name(vortex_array::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_array::arrays::Filter::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Filter::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::VTable for vortex_array::arrays::FixedSizeList -pub type vortex_array::arrays::FixedSizeList::ArrayData = vortex_array::arrays::fixed_size_list::FixedSizeListData - pub type vortex_array::arrays::FixedSizeList::OperationsVTable = vortex_array::arrays::FixedSizeList +pub type vortex_array::arrays::FixedSizeList::TypedArrayData = vortex_array::arrays::fixed_size_list::FixedSizeListData + pub type vortex_array::arrays::FixedSizeList::ValidityVTable = vortex_array::arrays::FixedSizeList pub fn vortex_array::arrays::FixedSizeList::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -21076,10 +21076,10 @@ pub fn vortex_array::arrays::FixedSizeList::validate(&self, &vortex_array::array impl vortex_array::VTable for vortex_array::arrays::List -pub type vortex_array::arrays::List::ArrayData = vortex_array::arrays::list::ListData - pub type vortex_array::arrays::List::OperationsVTable = vortex_array::arrays::List +pub type vortex_array::arrays::List::TypedArrayData = vortex_array::arrays::list::ListData + pub type vortex_array::arrays::List::ValidityVTable = vortex_array::arrays::List pub fn vortex_array::arrays::List::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -21116,10 +21116,10 @@ pub fn vortex_array::arrays::List::validate(&self, &vortex_array::arrays::list:: impl vortex_array::VTable for vortex_array::arrays::ListView -pub type vortex_array::arrays::ListView::ArrayData = vortex_array::arrays::listview::ListViewData - pub type vortex_array::arrays::ListView::OperationsVTable = vortex_array::arrays::ListView +pub type vortex_array::arrays::ListView::TypedArrayData = vortex_array::arrays::listview::ListViewData + pub type vortex_array::arrays::ListView::ValidityVTable = vortex_array::arrays::ListView pub fn vortex_array::arrays::ListView::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -21156,10 +21156,10 @@ pub fn vortex_array::arrays::ListView::validate(&self, &vortex_array::arrays::li impl vortex_array::VTable for vortex_array::arrays::Masked -pub type vortex_array::arrays::Masked::ArrayData = vortex_array::arrays::masked::MaskedData - pub type vortex_array::arrays::Masked::OperationsVTable = vortex_array::arrays::Masked +pub type vortex_array::arrays::Masked::TypedArrayData = vortex_array::arrays::masked::MaskedData + pub type vortex_array::arrays::Masked::ValidityVTable = vortex_array::arrays::Masked pub fn vortex_array::arrays::Masked::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -21196,10 +21196,10 @@ pub fn vortex_array::arrays::Masked::validate(&self, &vortex_array::arrays::mask impl vortex_array::VTable for vortex_array::arrays::Primitive -pub type vortex_array::arrays::Primitive::ArrayData = vortex_array::arrays::primitive::PrimitiveData - pub type vortex_array::arrays::Primitive::OperationsVTable = vortex_array::arrays::Primitive +pub type vortex_array::arrays::Primitive::TypedArrayData = vortex_array::arrays::primitive::PrimitiveData + pub type vortex_array::arrays::Primitive::ValidityVTable = vortex_array::arrays::Primitive pub fn vortex_array::arrays::Primitive::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -21236,10 +21236,10 @@ pub fn vortex_array::arrays::Primitive::validate(&self, &vortex_array::arrays::p impl vortex_array::VTable for vortex_array::arrays::Shared -pub type vortex_array::arrays::Shared::ArrayData = vortex_array::arrays::shared::SharedData - pub type vortex_array::arrays::Shared::OperationsVTable = vortex_array::arrays::Shared +pub type vortex_array::arrays::Shared::TypedArrayData = vortex_array::arrays::shared::SharedData + pub type vortex_array::arrays::Shared::ValidityVTable = vortex_array::arrays::Shared pub fn vortex_array::arrays::Shared::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -21276,10 +21276,10 @@ pub fn vortex_array::arrays::Shared::validate(&self, &vortex_array::arrays::shar impl vortex_array::VTable for vortex_array::arrays::Struct -pub type vortex_array::arrays::Struct::ArrayData = vortex_array::EmptyArrayData - pub type vortex_array::arrays::Struct::OperationsVTable = vortex_array::arrays::Struct +pub type vortex_array::arrays::Struct::TypedArrayData = vortex_array::EmptyArrayData + pub type vortex_array::arrays::Struct::ValidityVTable = vortex_array::arrays::Struct pub fn vortex_array::arrays::Struct::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -21316,10 +21316,10 @@ pub fn vortex_array::arrays::Struct::validate(&self, &vortex_array::EmptyArrayDa impl vortex_array::VTable for vortex_array::arrays::VarBin -pub type vortex_array::arrays::VarBin::ArrayData = vortex_array::arrays::varbin::VarBinData - pub type vortex_array::arrays::VarBin::OperationsVTable = vortex_array::arrays::VarBin +pub type vortex_array::arrays::VarBin::TypedArrayData = vortex_array::arrays::varbin::VarBinData + pub type vortex_array::arrays::VarBin::ValidityVTable = vortex_array::arrays::VarBin pub fn vortex_array::arrays::VarBin::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -21356,10 +21356,10 @@ pub fn vortex_array::arrays::VarBin::validate(&self, &vortex_array::arrays::varb impl vortex_array::VTable for vortex_array::arrays::VarBinView -pub type vortex_array::arrays::VarBinView::ArrayData = vortex_array::arrays::varbinview::VarBinViewData - pub type vortex_array::arrays::VarBinView::OperationsVTable = vortex_array::arrays::VarBinView +pub type vortex_array::arrays::VarBinView::TypedArrayData = vortex_array::arrays::varbinview::VarBinViewData + pub type vortex_array::arrays::VarBinView::ValidityVTable = vortex_array::arrays::VarBinView pub fn vortex_array::arrays::VarBinView::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -21396,10 +21396,10 @@ pub fn vortex_array::arrays::VarBinView::validate(&self, &vortex_array::arrays:: impl vortex_array::VTable for vortex_array::arrays::Variant -pub type vortex_array::arrays::Variant::ArrayData = vortex_array::EmptyArrayData - pub type vortex_array::arrays::Variant::OperationsVTable = vortex_array::arrays::Variant +pub type vortex_array::arrays::Variant::TypedArrayData = vortex_array::EmptyArrayData + pub type vortex_array::arrays::Variant::ValidityVTable = vortex_array::arrays::Variant pub fn vortex_array::arrays::Variant::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -21432,14 +21432,14 @@ pub fn vortex_array::arrays::Variant::serialize(vortex_array::ArrayView<'_, Self pub fn vortex_array::arrays::Variant::slot_name(vortex_array::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_array::arrays::Variant::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Variant::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::VTable for vortex_array::arrays::dict::Dict -pub type vortex_array::arrays::dict::Dict::ArrayData = vortex_array::arrays::dict::DictData - pub type vortex_array::arrays::dict::Dict::OperationsVTable = vortex_array::arrays::dict::Dict +pub type vortex_array::arrays::dict::Dict::TypedArrayData = vortex_array::arrays::dict::DictData + pub type vortex_array::arrays::dict::Dict::ValidityVTable = vortex_array::arrays::dict::Dict pub fn vortex_array::arrays::dict::Dict::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -21476,10 +21476,10 @@ pub fn vortex_array::arrays::dict::Dict::validate(&self, &vortex_array::arrays:: impl vortex_array::VTable for vortex_array::arrays::null::Null -pub type vortex_array::arrays::null::Null::ArrayData = vortex_array::EmptyArrayData - pub type vortex_array::arrays::null::Null::OperationsVTable = vortex_array::arrays::null::Null +pub type vortex_array::arrays::null::Null::TypedArrayData = vortex_array::EmptyArrayData + pub type vortex_array::arrays::null::Null::ValidityVTable = vortex_array::arrays::null::Null pub fn vortex_array::arrays::null::Null::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -21516,10 +21516,10 @@ pub fn vortex_array::arrays::null::Null::validate(&self, &vortex_array::EmptyArr impl vortex_array::VTable for vortex_array::arrays::patched::Patched -pub type vortex_array::arrays::patched::Patched::ArrayData = vortex_array::arrays::patched::PatchedData - pub type vortex_array::arrays::patched::Patched::OperationsVTable = vortex_array::arrays::patched::Patched +pub type vortex_array::arrays::patched::Patched::TypedArrayData = vortex_array::arrays::patched::PatchedData + pub type vortex_array::arrays::patched::Patched::ValidityVTable = vortex_array::ValidityVTableFromChild pub fn vortex_array::arrays::patched::Patched::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -21556,10 +21556,10 @@ pub fn vortex_array::arrays::patched::Patched::validate(&self, &vortex_array::ar impl vortex_array::VTable for vortex_array::arrays::scalar_fn::ScalarFn -pub type vortex_array::arrays::scalar_fn::ScalarFn::ArrayData = vortex_array::arrays::scalar_fn::array::ScalarFnData - pub type vortex_array::arrays::scalar_fn::ScalarFn::OperationsVTable = vortex_array::arrays::scalar_fn::ScalarFn +pub type vortex_array::arrays::scalar_fn::ScalarFn::TypedArrayData = vortex_array::arrays::scalar_fn::array::ScalarFnData + pub type vortex_array::arrays::scalar_fn::ScalarFn::ValidityVTable = vortex_array::arrays::scalar_fn::ScalarFn pub fn vortex_array::arrays::scalar_fn::ScalarFn::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -21596,10 +21596,10 @@ pub fn vortex_array::arrays::scalar_fn::ScalarFn::validate(&self, &vortex_array: impl vortex_array::VTable for vortex_array::arrays::slice::Slice -pub type vortex_array::arrays::slice::Slice::ArrayData = vortex_array::arrays::slice::SliceData - pub type vortex_array::arrays::slice::Slice::OperationsVTable = vortex_array::arrays::slice::Slice +pub type vortex_array::arrays::slice::Slice::TypedArrayData = vortex_array::arrays::slice::SliceData + pub type vortex_array::arrays::slice::Slice::ValidityVTable = vortex_array::arrays::slice::Slice pub fn vortex_array::arrays::slice::Slice::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -21632,7 +21632,7 @@ pub fn vortex_array::arrays::slice::Slice::serialize(vortex_array::ArrayView<'_, pub fn vortex_array::arrays::slice::Slice::slot_name(vortex_array::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_array::arrays::slice::Slice::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::slice::Slice::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> pub trait vortex_array::vtable::ValidityChild @@ -21732,7 +21732,7 @@ impl vortex_array::ValidityVTable for vortex pub fn vortex_array::arrays::slice::Slice::validity(vortex_array::ArrayView<'_, vortex_array::arrays::slice::Slice>) -> vortex_error::VortexResult -impl vortex_array::ValidityVTable for vortex_array::ValidityVTableFromChildSliceHelper where ::ArrayData: vortex_array::ValidityChildSliceHelper +impl vortex_array::ValidityVTable for vortex_array::ValidityVTableFromChildSliceHelper where ::TypedArrayData: vortex_array::ValidityChildSliceHelper pub fn vortex_array::ValidityVTableFromChildSliceHelper::validity(vortex_array::ArrayView<'_, V>) -> vortex_error::VortexResult @@ -21988,7 +21988,7 @@ pub type vortex_array::AnyCanonical::Match<'a> = vortex_array::CanonicalView<'a> pub fn vortex_array::AnyCanonical::matches(&vortex_array::ArrayRef) -> bool -pub fn vortex_array::AnyCanonical::try_match<'a>(&'a vortex_array::ArrayRef) -> core::option::Option +pub fn vortex_array::AnyCanonical::try_match(&vortex_array::ArrayRef) -> core::option::Option pub struct vortex_array::AnyColumnar @@ -21998,7 +21998,7 @@ pub type vortex_array::AnyColumnar::Match<'a> = vortex_array::ColumnarView<'a> pub fn vortex_array::AnyColumnar::matches(&vortex_array::ArrayRef) -> bool -pub fn vortex_array::AnyColumnar::try_match<'a>(&'a vortex_array::ArrayRef) -> core::option::Option +pub fn vortex_array::AnyColumnar::try_match(&vortex_array::ArrayRef) -> core::option::Option pub struct vortex_array::Array @@ -22322,15 +22322,15 @@ pub fn vortex_array::Array::as_array(&self) -> &vortex_array::ArrayRef pub fn vortex_array::Array::as_view(&self) -> vortex_array::ArrayView<'_, V> -pub fn vortex_array::Array::data(&self) -> &::ArrayData +pub fn vortex_array::Array::data(&self) -> &::TypedArrayData -pub fn vortex_array::Array::data_mut(&mut self) -> core::option::Option<&mut ::ArrayData> +pub fn vortex_array::Array::data_mut(&mut self) -> core::option::Option<&mut ::TypedArrayData> pub fn vortex_array::Array::dtype(&self) -> &vortex_array::dtype::DType pub fn vortex_array::Array::encoding_id(&self) -> vortex_array::ArrayId -pub fn vortex_array::Array::into_data(self) -> ::ArrayData +pub fn vortex_array::Array::into_data(self) -> ::TypedArrayData pub fn vortex_array::Array::is_empty(&self) -> bool @@ -22444,9 +22444,9 @@ pub fn vortex_array::Array::fmt(&self, &mut core::fmt::Formatter<'_>) -> core impl core::ops::deref::Deref for vortex_array::Array -pub type vortex_array::Array::Target = ::ArrayData +pub type vortex_array::Array::Target = ::TypedArrayData -pub fn vortex_array::Array::deref(&self) -> &::ArrayData +pub fn vortex_array::Array::deref(&self) -> &::TypedArrayData impl vortex_array::IntoArray for vortex_array::Array @@ -22458,7 +22458,7 @@ pub fn vortex_array::Array::to_owned(&self) -> vortex_array::Array pub struct vortex_array::ArrayParts -pub vortex_array::ArrayParts::data: ::ArrayData +pub vortex_array::ArrayParts::data: ::TypedArrayData pub vortex_array::ArrayParts::dtype: vortex_array::dtype::DType @@ -22470,7 +22470,7 @@ pub vortex_array::ArrayParts::vtable: V impl vortex_array::ArrayParts -pub fn vortex_array::ArrayParts::new(V, vortex_array::dtype::DType, usize, ::ArrayData) -> Self +pub fn vortex_array::ArrayParts::new(V, vortex_array::dtype::DType, usize, ::TypedArrayData) -> Self pub fn vortex_array::ArrayParts::with_slots(self, alloc::vec::Vec>) -> Self @@ -22948,7 +22948,7 @@ impl<'a, V: vortex_array::VTable> vortex_array::ArrayView<'a, V> pub fn vortex_array::ArrayView<'a, V>::array(&self) -> &'a vortex_array::ArrayRef -pub fn vortex_array::ArrayView<'a, V>::data(&self) -> &'a ::ArrayData +pub fn vortex_array::ArrayView<'a, V>::data(&self) -> &'a ::TypedArrayData pub fn vortex_array::ArrayView<'a, V>::dtype(&self) -> &vortex_array::dtype::DType @@ -22982,9 +22982,9 @@ impl core::marker::Copy for vortex_array::ArrayView<'_, impl core::ops::deref::Deref for vortex_array::ArrayView<'_, V> -pub type vortex_array::ArrayView<'_, V>::Target = ::ArrayData +pub type vortex_array::ArrayView<'_, V>::Target = ::TypedArrayData -pub fn vortex_array::ArrayView<'_, V>::deref(&self) -> &::ArrayData +pub fn vortex_array::ArrayView<'_, V>::deref(&self) -> &::TypedArrayData impl vortex_array::TypedArrayRef for vortex_array::ArrayView<'_, V> @@ -23180,7 +23180,7 @@ pub fn vortex_array::ValidityVTableFromChild::validity(vortex_array::ArrayView<' pub struct vortex_array::ValidityVTableFromChildSliceHelper -impl vortex_array::ValidityVTable for vortex_array::ValidityVTableFromChildSliceHelper where ::ArrayData: vortex_array::ValidityChildSliceHelper +impl vortex_array::ValidityVTable for vortex_array::ValidityVTableFromChildSliceHelper where ::TypedArrayData: vortex_array::ValidityChildSliceHelper pub fn vortex_array::ValidityVTableFromChildSliceHelper::validity(vortex_array::ArrayView<'_, V>) -> vortex_error::VortexResult @@ -23456,10 +23456,10 @@ pub fn vortex_array::arrays::scalar_fn::plugin::ScalarFnArrayPlugin::serializ pub trait vortex_array::ArrayVTable: 'static + core::clone::Clone + core::marker::Sized + core::marker::Send + core::marker::Sync + core::fmt::Debug -pub type vortex_array::ArrayVTable::ArrayData: 'static + core::marker::Send + core::marker::Sync + core::clone::Clone + core::fmt::Debug + core::fmt::Display + vortex_array::ArrayHash + vortex_array::ArrayEq - pub type vortex_array::ArrayVTable::OperationsVTable: vortex_array::OperationsVTable +pub type vortex_array::ArrayVTable::TypedArrayData: 'static + core::marker::Send + core::marker::Sync + core::clone::Clone + core::fmt::Debug + core::fmt::Display + vortex_array::ArrayHash + vortex_array::ArrayEq + pub type vortex_array::ArrayVTable::ValidityVTable: vortex_array::ValidityVTable pub fn vortex_array::ArrayVTable::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -23492,14 +23492,14 @@ pub fn vortex_array::ArrayVTable::serialize(vortex_array::ArrayView<'_, Self>, & pub fn vortex_array::ArrayVTable::slot_name(vortex_array::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_array::ArrayVTable::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_array::ArrayVTable::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::VTable for vortex_array::arrays::Bool -pub type vortex_array::arrays::Bool::ArrayData = vortex_array::arrays::bool::BoolData - pub type vortex_array::arrays::Bool::OperationsVTable = vortex_array::arrays::Bool +pub type vortex_array::arrays::Bool::TypedArrayData = vortex_array::arrays::bool::BoolData + pub type vortex_array::arrays::Bool::ValidityVTable = vortex_array::arrays::Bool pub fn vortex_array::arrays::Bool::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -23536,10 +23536,10 @@ pub fn vortex_array::arrays::Bool::validate(&self, &vortex_array::arrays::bool:: impl vortex_array::VTable for vortex_array::arrays::Chunked -pub type vortex_array::arrays::Chunked::ArrayData = vortex_array::arrays::chunked::ChunkedData - pub type vortex_array::arrays::Chunked::OperationsVTable = vortex_array::arrays::Chunked +pub type vortex_array::arrays::Chunked::TypedArrayData = vortex_array::arrays::chunked::ChunkedData + pub type vortex_array::arrays::Chunked::ValidityVTable = vortex_array::arrays::Chunked pub fn vortex_array::arrays::Chunked::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -23576,10 +23576,10 @@ pub fn vortex_array::arrays::Chunked::validate(&self, &vortex_array::arrays::chu impl vortex_array::VTable for vortex_array::arrays::Constant -pub type vortex_array::arrays::Constant::ArrayData = vortex_array::arrays::constant::ConstantData - pub type vortex_array::arrays::Constant::OperationsVTable = vortex_array::arrays::Constant +pub type vortex_array::arrays::Constant::TypedArrayData = vortex_array::arrays::constant::ConstantData + pub type vortex_array::arrays::Constant::ValidityVTable = vortex_array::arrays::Constant pub fn vortex_array::arrays::Constant::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -23616,10 +23616,10 @@ pub fn vortex_array::arrays::Constant::validate(&self, &vortex_array::arrays::co impl vortex_array::VTable for vortex_array::arrays::Decimal -pub type vortex_array::arrays::Decimal::ArrayData = vortex_array::arrays::decimal::DecimalData - pub type vortex_array::arrays::Decimal::OperationsVTable = vortex_array::arrays::Decimal +pub type vortex_array::arrays::Decimal::TypedArrayData = vortex_array::arrays::decimal::DecimalData + pub type vortex_array::arrays::Decimal::ValidityVTable = vortex_array::arrays::Decimal pub fn vortex_array::arrays::Decimal::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -23656,10 +23656,10 @@ pub fn vortex_array::arrays::Decimal::validate(&self, &vortex_array::arrays::dec impl vortex_array::VTable for vortex_array::arrays::Extension -pub type vortex_array::arrays::Extension::ArrayData = vortex_array::EmptyArrayData - pub type vortex_array::arrays::Extension::OperationsVTable = vortex_array::arrays::Extension +pub type vortex_array::arrays::Extension::TypedArrayData = vortex_array::EmptyArrayData + pub type vortex_array::arrays::Extension::ValidityVTable = vortex_array::ValidityVTableFromChild pub fn vortex_array::arrays::Extension::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -23696,10 +23696,10 @@ pub fn vortex_array::arrays::Extension::validate(&self, &vortex_array::EmptyArra impl vortex_array::VTable for vortex_array::arrays::Filter -pub type vortex_array::arrays::Filter::ArrayData = vortex_array::arrays::filter::FilterData - pub type vortex_array::arrays::Filter::OperationsVTable = vortex_array::arrays::Filter +pub type vortex_array::arrays::Filter::TypedArrayData = vortex_array::arrays::filter::FilterData + pub type vortex_array::arrays::Filter::ValidityVTable = vortex_array::arrays::Filter pub fn vortex_array::arrays::Filter::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -23732,14 +23732,14 @@ pub fn vortex_array::arrays::Filter::serialize(vortex_array::ArrayView<'_, Self> pub fn vortex_array::arrays::Filter::slot_name(vortex_array::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_array::arrays::Filter::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Filter::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::VTable for vortex_array::arrays::FixedSizeList -pub type vortex_array::arrays::FixedSizeList::ArrayData = vortex_array::arrays::fixed_size_list::FixedSizeListData - pub type vortex_array::arrays::FixedSizeList::OperationsVTable = vortex_array::arrays::FixedSizeList +pub type vortex_array::arrays::FixedSizeList::TypedArrayData = vortex_array::arrays::fixed_size_list::FixedSizeListData + pub type vortex_array::arrays::FixedSizeList::ValidityVTable = vortex_array::arrays::FixedSizeList pub fn vortex_array::arrays::FixedSizeList::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -23776,10 +23776,10 @@ pub fn vortex_array::arrays::FixedSizeList::validate(&self, &vortex_array::array impl vortex_array::VTable for vortex_array::arrays::List -pub type vortex_array::arrays::List::ArrayData = vortex_array::arrays::list::ListData - pub type vortex_array::arrays::List::OperationsVTable = vortex_array::arrays::List +pub type vortex_array::arrays::List::TypedArrayData = vortex_array::arrays::list::ListData + pub type vortex_array::arrays::List::ValidityVTable = vortex_array::arrays::List pub fn vortex_array::arrays::List::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -23816,10 +23816,10 @@ pub fn vortex_array::arrays::List::validate(&self, &vortex_array::arrays::list:: impl vortex_array::VTable for vortex_array::arrays::ListView -pub type vortex_array::arrays::ListView::ArrayData = vortex_array::arrays::listview::ListViewData - pub type vortex_array::arrays::ListView::OperationsVTable = vortex_array::arrays::ListView +pub type vortex_array::arrays::ListView::TypedArrayData = vortex_array::arrays::listview::ListViewData + pub type vortex_array::arrays::ListView::ValidityVTable = vortex_array::arrays::ListView pub fn vortex_array::arrays::ListView::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -23856,10 +23856,10 @@ pub fn vortex_array::arrays::ListView::validate(&self, &vortex_array::arrays::li impl vortex_array::VTable for vortex_array::arrays::Masked -pub type vortex_array::arrays::Masked::ArrayData = vortex_array::arrays::masked::MaskedData - pub type vortex_array::arrays::Masked::OperationsVTable = vortex_array::arrays::Masked +pub type vortex_array::arrays::Masked::TypedArrayData = vortex_array::arrays::masked::MaskedData + pub type vortex_array::arrays::Masked::ValidityVTable = vortex_array::arrays::Masked pub fn vortex_array::arrays::Masked::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -23896,10 +23896,10 @@ pub fn vortex_array::arrays::Masked::validate(&self, &vortex_array::arrays::mask impl vortex_array::VTable for vortex_array::arrays::Primitive -pub type vortex_array::arrays::Primitive::ArrayData = vortex_array::arrays::primitive::PrimitiveData - pub type vortex_array::arrays::Primitive::OperationsVTable = vortex_array::arrays::Primitive +pub type vortex_array::arrays::Primitive::TypedArrayData = vortex_array::arrays::primitive::PrimitiveData + pub type vortex_array::arrays::Primitive::ValidityVTable = vortex_array::arrays::Primitive pub fn vortex_array::arrays::Primitive::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -23936,10 +23936,10 @@ pub fn vortex_array::arrays::Primitive::validate(&self, &vortex_array::arrays::p impl vortex_array::VTable for vortex_array::arrays::Shared -pub type vortex_array::arrays::Shared::ArrayData = vortex_array::arrays::shared::SharedData - pub type vortex_array::arrays::Shared::OperationsVTable = vortex_array::arrays::Shared +pub type vortex_array::arrays::Shared::TypedArrayData = vortex_array::arrays::shared::SharedData + pub type vortex_array::arrays::Shared::ValidityVTable = vortex_array::arrays::Shared pub fn vortex_array::arrays::Shared::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -23976,10 +23976,10 @@ pub fn vortex_array::arrays::Shared::validate(&self, &vortex_array::arrays::shar impl vortex_array::VTable for vortex_array::arrays::Struct -pub type vortex_array::arrays::Struct::ArrayData = vortex_array::EmptyArrayData - pub type vortex_array::arrays::Struct::OperationsVTable = vortex_array::arrays::Struct +pub type vortex_array::arrays::Struct::TypedArrayData = vortex_array::EmptyArrayData + pub type vortex_array::arrays::Struct::ValidityVTable = vortex_array::arrays::Struct pub fn vortex_array::arrays::Struct::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -24016,10 +24016,10 @@ pub fn vortex_array::arrays::Struct::validate(&self, &vortex_array::EmptyArrayDa impl vortex_array::VTable for vortex_array::arrays::VarBin -pub type vortex_array::arrays::VarBin::ArrayData = vortex_array::arrays::varbin::VarBinData - pub type vortex_array::arrays::VarBin::OperationsVTable = vortex_array::arrays::VarBin +pub type vortex_array::arrays::VarBin::TypedArrayData = vortex_array::arrays::varbin::VarBinData + pub type vortex_array::arrays::VarBin::ValidityVTable = vortex_array::arrays::VarBin pub fn vortex_array::arrays::VarBin::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -24056,10 +24056,10 @@ pub fn vortex_array::arrays::VarBin::validate(&self, &vortex_array::arrays::varb impl vortex_array::VTable for vortex_array::arrays::VarBinView -pub type vortex_array::arrays::VarBinView::ArrayData = vortex_array::arrays::varbinview::VarBinViewData - pub type vortex_array::arrays::VarBinView::OperationsVTable = vortex_array::arrays::VarBinView +pub type vortex_array::arrays::VarBinView::TypedArrayData = vortex_array::arrays::varbinview::VarBinViewData + pub type vortex_array::arrays::VarBinView::ValidityVTable = vortex_array::arrays::VarBinView pub fn vortex_array::arrays::VarBinView::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -24096,10 +24096,10 @@ pub fn vortex_array::arrays::VarBinView::validate(&self, &vortex_array::arrays:: impl vortex_array::VTable for vortex_array::arrays::Variant -pub type vortex_array::arrays::Variant::ArrayData = vortex_array::EmptyArrayData - pub type vortex_array::arrays::Variant::OperationsVTable = vortex_array::arrays::Variant +pub type vortex_array::arrays::Variant::TypedArrayData = vortex_array::EmptyArrayData + pub type vortex_array::arrays::Variant::ValidityVTable = vortex_array::arrays::Variant pub fn vortex_array::arrays::Variant::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -24132,14 +24132,14 @@ pub fn vortex_array::arrays::Variant::serialize(vortex_array::ArrayView<'_, Self pub fn vortex_array::arrays::Variant::slot_name(vortex_array::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_array::arrays::Variant::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Variant::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::VTable for vortex_array::arrays::dict::Dict -pub type vortex_array::arrays::dict::Dict::ArrayData = vortex_array::arrays::dict::DictData - pub type vortex_array::arrays::dict::Dict::OperationsVTable = vortex_array::arrays::dict::Dict +pub type vortex_array::arrays::dict::Dict::TypedArrayData = vortex_array::arrays::dict::DictData + pub type vortex_array::arrays::dict::Dict::ValidityVTable = vortex_array::arrays::dict::Dict pub fn vortex_array::arrays::dict::Dict::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -24176,10 +24176,10 @@ pub fn vortex_array::arrays::dict::Dict::validate(&self, &vortex_array::arrays:: impl vortex_array::VTable for vortex_array::arrays::null::Null -pub type vortex_array::arrays::null::Null::ArrayData = vortex_array::EmptyArrayData - pub type vortex_array::arrays::null::Null::OperationsVTable = vortex_array::arrays::null::Null +pub type vortex_array::arrays::null::Null::TypedArrayData = vortex_array::EmptyArrayData + pub type vortex_array::arrays::null::Null::ValidityVTable = vortex_array::arrays::null::Null pub fn vortex_array::arrays::null::Null::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -24216,10 +24216,10 @@ pub fn vortex_array::arrays::null::Null::validate(&self, &vortex_array::EmptyArr impl vortex_array::VTable for vortex_array::arrays::patched::Patched -pub type vortex_array::arrays::patched::Patched::ArrayData = vortex_array::arrays::patched::PatchedData - pub type vortex_array::arrays::patched::Patched::OperationsVTable = vortex_array::arrays::patched::Patched +pub type vortex_array::arrays::patched::Patched::TypedArrayData = vortex_array::arrays::patched::PatchedData + pub type vortex_array::arrays::patched::Patched::ValidityVTable = vortex_array::ValidityVTableFromChild pub fn vortex_array::arrays::patched::Patched::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -24256,10 +24256,10 @@ pub fn vortex_array::arrays::patched::Patched::validate(&self, &vortex_array::ar impl vortex_array::VTable for vortex_array::arrays::scalar_fn::ScalarFn -pub type vortex_array::arrays::scalar_fn::ScalarFn::ArrayData = vortex_array::arrays::scalar_fn::array::ScalarFnData - pub type vortex_array::arrays::scalar_fn::ScalarFn::OperationsVTable = vortex_array::arrays::scalar_fn::ScalarFn +pub type vortex_array::arrays::scalar_fn::ScalarFn::TypedArrayData = vortex_array::arrays::scalar_fn::array::ScalarFnData + pub type vortex_array::arrays::scalar_fn::ScalarFn::ValidityVTable = vortex_array::arrays::scalar_fn::ScalarFn pub fn vortex_array::arrays::scalar_fn::ScalarFn::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -24296,10 +24296,10 @@ pub fn vortex_array::arrays::scalar_fn::ScalarFn::validate(&self, &vortex_array: impl vortex_array::VTable for vortex_array::arrays::slice::Slice -pub type vortex_array::arrays::slice::Slice::ArrayData = vortex_array::arrays::slice::SliceData - pub type vortex_array::arrays::slice::Slice::OperationsVTable = vortex_array::arrays::slice::Slice +pub type vortex_array::arrays::slice::Slice::TypedArrayData = vortex_array::arrays::slice::SliceData + pub type vortex_array::arrays::slice::Slice::ValidityVTable = vortex_array::arrays::slice::Slice pub fn vortex_array::arrays::slice::Slice::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -24332,7 +24332,7 @@ pub fn vortex_array::arrays::slice::Slice::serialize(vortex_array::ArrayView<'_, pub fn vortex_array::arrays::slice::Slice::slot_name(vortex_array::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_array::arrays::slice::Slice::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::slice::Slice::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> pub trait vortex_array::DeserializeMetadata where Self: core::marker::Sized @@ -24358,19 +24358,19 @@ pub type vortex_array::ProstMetadata::Output = M pub fn vortex_array::ProstMetadata::deserialize(&[u8]) -> vortex_error::VortexResult -pub trait vortex_array::DynArrayEq: vortex_array::hash::private::SealedEq +pub trait vortex_array::DynArrayDataEq: vortex_array::hash::private::SealedEq -pub fn vortex_array::DynArrayEq::dyn_array_eq(&self, &dyn core::any::Any, vortex_array::Precision) -> bool +pub fn vortex_array::DynArrayDataEq::dyn_array_eq(&self, &dyn core::any::Any, vortex_array::Precision) -> bool -impl vortex_array::DynArrayEq for T +impl vortex_array::DynArrayDataEq for T pub fn T::dyn_array_eq(&self, &(dyn core::any::Any + 'static), vortex_array::Precision) -> bool -pub trait vortex_array::DynArrayHash: vortex_array::hash::private::SealedHash +pub trait vortex_array::DynArrayDataHash: vortex_array::hash::private::SealedHash -pub fn vortex_array::DynArrayHash::dyn_array_hash(&self, &mut dyn core::hash::Hasher, vortex_array::Precision) +pub fn vortex_array::DynArrayDataHash::dyn_array_hash(&self, &mut dyn core::hash::Hasher, vortex_array::Precision) -impl vortex_array::DynArrayHash for T +impl vortex_array::DynArrayDataHash for T pub fn T::dyn_array_hash(&self, &mut dyn core::hash::Hasher, vortex_array::Precision) @@ -24662,7 +24662,7 @@ pub fn vortex_array::ArrayRef::to_struct(&self) -> vortex_array::arrays::StructA pub fn vortex_array::ArrayRef::to_varbinview(&self) -> vortex_array::arrays::VarBinViewArray -pub trait vortex_array::TypedArrayRef: core::convert::AsRef + core::ops::deref::Deref::ArrayData> +pub trait vortex_array::TypedArrayRef: core::convert::AsRef + core::ops::deref::Deref::TypedArrayData> pub fn vortex_array::TypedArrayRef::to_owned(&self) -> vortex_array::Array @@ -24676,10 +24676,10 @@ pub fn vortex_array::ArrayView<'_, V>::to_owned(&self) -> vortex_array::Array pub trait vortex_array::VTable: 'static + core::clone::Clone + core::marker::Sized + core::marker::Send + core::marker::Sync + core::fmt::Debug -pub type vortex_array::VTable::ArrayData: 'static + core::marker::Send + core::marker::Sync + core::clone::Clone + core::fmt::Debug + core::fmt::Display + vortex_array::ArrayHash + vortex_array::ArrayEq - pub type vortex_array::VTable::OperationsVTable: vortex_array::OperationsVTable +pub type vortex_array::VTable::TypedArrayData: 'static + core::marker::Send + core::marker::Sync + core::clone::Clone + core::fmt::Debug + core::fmt::Display + vortex_array::ArrayHash + vortex_array::ArrayEq + pub type vortex_array::VTable::ValidityVTable: vortex_array::ValidityVTable pub fn vortex_array::VTable::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -24712,14 +24712,14 @@ pub fn vortex_array::VTable::serialize(vortex_array::ArrayView<'_, Self>, &vorte pub fn vortex_array::VTable::slot_name(vortex_array::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_array::VTable::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_array::VTable::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::VTable for vortex_array::arrays::Bool -pub type vortex_array::arrays::Bool::ArrayData = vortex_array::arrays::bool::BoolData - pub type vortex_array::arrays::Bool::OperationsVTable = vortex_array::arrays::Bool +pub type vortex_array::arrays::Bool::TypedArrayData = vortex_array::arrays::bool::BoolData + pub type vortex_array::arrays::Bool::ValidityVTable = vortex_array::arrays::Bool pub fn vortex_array::arrays::Bool::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -24756,10 +24756,10 @@ pub fn vortex_array::arrays::Bool::validate(&self, &vortex_array::arrays::bool:: impl vortex_array::VTable for vortex_array::arrays::Chunked -pub type vortex_array::arrays::Chunked::ArrayData = vortex_array::arrays::chunked::ChunkedData - pub type vortex_array::arrays::Chunked::OperationsVTable = vortex_array::arrays::Chunked +pub type vortex_array::arrays::Chunked::TypedArrayData = vortex_array::arrays::chunked::ChunkedData + pub type vortex_array::arrays::Chunked::ValidityVTable = vortex_array::arrays::Chunked pub fn vortex_array::arrays::Chunked::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -24796,10 +24796,10 @@ pub fn vortex_array::arrays::Chunked::validate(&self, &vortex_array::arrays::chu impl vortex_array::VTable for vortex_array::arrays::Constant -pub type vortex_array::arrays::Constant::ArrayData = vortex_array::arrays::constant::ConstantData - pub type vortex_array::arrays::Constant::OperationsVTable = vortex_array::arrays::Constant +pub type vortex_array::arrays::Constant::TypedArrayData = vortex_array::arrays::constant::ConstantData + pub type vortex_array::arrays::Constant::ValidityVTable = vortex_array::arrays::Constant pub fn vortex_array::arrays::Constant::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -24836,10 +24836,10 @@ pub fn vortex_array::arrays::Constant::validate(&self, &vortex_array::arrays::co impl vortex_array::VTable for vortex_array::arrays::Decimal -pub type vortex_array::arrays::Decimal::ArrayData = vortex_array::arrays::decimal::DecimalData - pub type vortex_array::arrays::Decimal::OperationsVTable = vortex_array::arrays::Decimal +pub type vortex_array::arrays::Decimal::TypedArrayData = vortex_array::arrays::decimal::DecimalData + pub type vortex_array::arrays::Decimal::ValidityVTable = vortex_array::arrays::Decimal pub fn vortex_array::arrays::Decimal::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -24876,10 +24876,10 @@ pub fn vortex_array::arrays::Decimal::validate(&self, &vortex_array::arrays::dec impl vortex_array::VTable for vortex_array::arrays::Extension -pub type vortex_array::arrays::Extension::ArrayData = vortex_array::EmptyArrayData - pub type vortex_array::arrays::Extension::OperationsVTable = vortex_array::arrays::Extension +pub type vortex_array::arrays::Extension::TypedArrayData = vortex_array::EmptyArrayData + pub type vortex_array::arrays::Extension::ValidityVTable = vortex_array::ValidityVTableFromChild pub fn vortex_array::arrays::Extension::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -24916,10 +24916,10 @@ pub fn vortex_array::arrays::Extension::validate(&self, &vortex_array::EmptyArra impl vortex_array::VTable for vortex_array::arrays::Filter -pub type vortex_array::arrays::Filter::ArrayData = vortex_array::arrays::filter::FilterData - pub type vortex_array::arrays::Filter::OperationsVTable = vortex_array::arrays::Filter +pub type vortex_array::arrays::Filter::TypedArrayData = vortex_array::arrays::filter::FilterData + pub type vortex_array::arrays::Filter::ValidityVTable = vortex_array::arrays::Filter pub fn vortex_array::arrays::Filter::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -24952,14 +24952,14 @@ pub fn vortex_array::arrays::Filter::serialize(vortex_array::ArrayView<'_, Self> pub fn vortex_array::arrays::Filter::slot_name(vortex_array::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_array::arrays::Filter::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Filter::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::VTable for vortex_array::arrays::FixedSizeList -pub type vortex_array::arrays::FixedSizeList::ArrayData = vortex_array::arrays::fixed_size_list::FixedSizeListData - pub type vortex_array::arrays::FixedSizeList::OperationsVTable = vortex_array::arrays::FixedSizeList +pub type vortex_array::arrays::FixedSizeList::TypedArrayData = vortex_array::arrays::fixed_size_list::FixedSizeListData + pub type vortex_array::arrays::FixedSizeList::ValidityVTable = vortex_array::arrays::FixedSizeList pub fn vortex_array::arrays::FixedSizeList::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -24996,10 +24996,10 @@ pub fn vortex_array::arrays::FixedSizeList::validate(&self, &vortex_array::array impl vortex_array::VTable for vortex_array::arrays::List -pub type vortex_array::arrays::List::ArrayData = vortex_array::arrays::list::ListData - pub type vortex_array::arrays::List::OperationsVTable = vortex_array::arrays::List +pub type vortex_array::arrays::List::TypedArrayData = vortex_array::arrays::list::ListData + pub type vortex_array::arrays::List::ValidityVTable = vortex_array::arrays::List pub fn vortex_array::arrays::List::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -25036,10 +25036,10 @@ pub fn vortex_array::arrays::List::validate(&self, &vortex_array::arrays::list:: impl vortex_array::VTable for vortex_array::arrays::ListView -pub type vortex_array::arrays::ListView::ArrayData = vortex_array::arrays::listview::ListViewData - pub type vortex_array::arrays::ListView::OperationsVTable = vortex_array::arrays::ListView +pub type vortex_array::arrays::ListView::TypedArrayData = vortex_array::arrays::listview::ListViewData + pub type vortex_array::arrays::ListView::ValidityVTable = vortex_array::arrays::ListView pub fn vortex_array::arrays::ListView::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -25076,10 +25076,10 @@ pub fn vortex_array::arrays::ListView::validate(&self, &vortex_array::arrays::li impl vortex_array::VTable for vortex_array::arrays::Masked -pub type vortex_array::arrays::Masked::ArrayData = vortex_array::arrays::masked::MaskedData - pub type vortex_array::arrays::Masked::OperationsVTable = vortex_array::arrays::Masked +pub type vortex_array::arrays::Masked::TypedArrayData = vortex_array::arrays::masked::MaskedData + pub type vortex_array::arrays::Masked::ValidityVTable = vortex_array::arrays::Masked pub fn vortex_array::arrays::Masked::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -25116,10 +25116,10 @@ pub fn vortex_array::arrays::Masked::validate(&self, &vortex_array::arrays::mask impl vortex_array::VTable for vortex_array::arrays::Primitive -pub type vortex_array::arrays::Primitive::ArrayData = vortex_array::arrays::primitive::PrimitiveData - pub type vortex_array::arrays::Primitive::OperationsVTable = vortex_array::arrays::Primitive +pub type vortex_array::arrays::Primitive::TypedArrayData = vortex_array::arrays::primitive::PrimitiveData + pub type vortex_array::arrays::Primitive::ValidityVTable = vortex_array::arrays::Primitive pub fn vortex_array::arrays::Primitive::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -25156,10 +25156,10 @@ pub fn vortex_array::arrays::Primitive::validate(&self, &vortex_array::arrays::p impl vortex_array::VTable for vortex_array::arrays::Shared -pub type vortex_array::arrays::Shared::ArrayData = vortex_array::arrays::shared::SharedData - pub type vortex_array::arrays::Shared::OperationsVTable = vortex_array::arrays::Shared +pub type vortex_array::arrays::Shared::TypedArrayData = vortex_array::arrays::shared::SharedData + pub type vortex_array::arrays::Shared::ValidityVTable = vortex_array::arrays::Shared pub fn vortex_array::arrays::Shared::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -25196,10 +25196,10 @@ pub fn vortex_array::arrays::Shared::validate(&self, &vortex_array::arrays::shar impl vortex_array::VTable for vortex_array::arrays::Struct -pub type vortex_array::arrays::Struct::ArrayData = vortex_array::EmptyArrayData - pub type vortex_array::arrays::Struct::OperationsVTable = vortex_array::arrays::Struct +pub type vortex_array::arrays::Struct::TypedArrayData = vortex_array::EmptyArrayData + pub type vortex_array::arrays::Struct::ValidityVTable = vortex_array::arrays::Struct pub fn vortex_array::arrays::Struct::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -25236,10 +25236,10 @@ pub fn vortex_array::arrays::Struct::validate(&self, &vortex_array::EmptyArrayDa impl vortex_array::VTable for vortex_array::arrays::VarBin -pub type vortex_array::arrays::VarBin::ArrayData = vortex_array::arrays::varbin::VarBinData - pub type vortex_array::arrays::VarBin::OperationsVTable = vortex_array::arrays::VarBin +pub type vortex_array::arrays::VarBin::TypedArrayData = vortex_array::arrays::varbin::VarBinData + pub type vortex_array::arrays::VarBin::ValidityVTable = vortex_array::arrays::VarBin pub fn vortex_array::arrays::VarBin::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -25276,10 +25276,10 @@ pub fn vortex_array::arrays::VarBin::validate(&self, &vortex_array::arrays::varb impl vortex_array::VTable for vortex_array::arrays::VarBinView -pub type vortex_array::arrays::VarBinView::ArrayData = vortex_array::arrays::varbinview::VarBinViewData - pub type vortex_array::arrays::VarBinView::OperationsVTable = vortex_array::arrays::VarBinView +pub type vortex_array::arrays::VarBinView::TypedArrayData = vortex_array::arrays::varbinview::VarBinViewData + pub type vortex_array::arrays::VarBinView::ValidityVTable = vortex_array::arrays::VarBinView pub fn vortex_array::arrays::VarBinView::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -25316,10 +25316,10 @@ pub fn vortex_array::arrays::VarBinView::validate(&self, &vortex_array::arrays:: impl vortex_array::VTable for vortex_array::arrays::Variant -pub type vortex_array::arrays::Variant::ArrayData = vortex_array::EmptyArrayData - pub type vortex_array::arrays::Variant::OperationsVTable = vortex_array::arrays::Variant +pub type vortex_array::arrays::Variant::TypedArrayData = vortex_array::EmptyArrayData + pub type vortex_array::arrays::Variant::ValidityVTable = vortex_array::arrays::Variant pub fn vortex_array::arrays::Variant::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -25352,14 +25352,14 @@ pub fn vortex_array::arrays::Variant::serialize(vortex_array::ArrayView<'_, Self pub fn vortex_array::arrays::Variant::slot_name(vortex_array::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_array::arrays::Variant::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Variant::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> impl vortex_array::VTable for vortex_array::arrays::dict::Dict -pub type vortex_array::arrays::dict::Dict::ArrayData = vortex_array::arrays::dict::DictData - pub type vortex_array::arrays::dict::Dict::OperationsVTable = vortex_array::arrays::dict::Dict +pub type vortex_array::arrays::dict::Dict::TypedArrayData = vortex_array::arrays::dict::DictData + pub type vortex_array::arrays::dict::Dict::ValidityVTable = vortex_array::arrays::dict::Dict pub fn vortex_array::arrays::dict::Dict::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -25396,10 +25396,10 @@ pub fn vortex_array::arrays::dict::Dict::validate(&self, &vortex_array::arrays:: impl vortex_array::VTable for vortex_array::arrays::null::Null -pub type vortex_array::arrays::null::Null::ArrayData = vortex_array::EmptyArrayData - pub type vortex_array::arrays::null::Null::OperationsVTable = vortex_array::arrays::null::Null +pub type vortex_array::arrays::null::Null::TypedArrayData = vortex_array::EmptyArrayData + pub type vortex_array::arrays::null::Null::ValidityVTable = vortex_array::arrays::null::Null pub fn vortex_array::arrays::null::Null::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -25436,10 +25436,10 @@ pub fn vortex_array::arrays::null::Null::validate(&self, &vortex_array::EmptyArr impl vortex_array::VTable for vortex_array::arrays::patched::Patched -pub type vortex_array::arrays::patched::Patched::ArrayData = vortex_array::arrays::patched::PatchedData - pub type vortex_array::arrays::patched::Patched::OperationsVTable = vortex_array::arrays::patched::Patched +pub type vortex_array::arrays::patched::Patched::TypedArrayData = vortex_array::arrays::patched::PatchedData + pub type vortex_array::arrays::patched::Patched::ValidityVTable = vortex_array::ValidityVTableFromChild pub fn vortex_array::arrays::patched::Patched::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -25476,10 +25476,10 @@ pub fn vortex_array::arrays::patched::Patched::validate(&self, &vortex_array::ar impl vortex_array::VTable for vortex_array::arrays::scalar_fn::ScalarFn -pub type vortex_array::arrays::scalar_fn::ScalarFn::ArrayData = vortex_array::arrays::scalar_fn::array::ScalarFnData - pub type vortex_array::arrays::scalar_fn::ScalarFn::OperationsVTable = vortex_array::arrays::scalar_fn::ScalarFn +pub type vortex_array::arrays::scalar_fn::ScalarFn::TypedArrayData = vortex_array::arrays::scalar_fn::array::ScalarFnData + pub type vortex_array::arrays::scalar_fn::ScalarFn::ValidityVTable = vortex_array::arrays::scalar_fn::ScalarFn pub fn vortex_array::arrays::scalar_fn::ScalarFn::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -25516,10 +25516,10 @@ pub fn vortex_array::arrays::scalar_fn::ScalarFn::validate(&self, &vortex_array: impl vortex_array::VTable for vortex_array::arrays::slice::Slice -pub type vortex_array::arrays::slice::Slice::ArrayData = vortex_array::arrays::slice::SliceData - pub type vortex_array::arrays::slice::Slice::OperationsVTable = vortex_array::arrays::slice::Slice +pub type vortex_array::arrays::slice::Slice::TypedArrayData = vortex_array::arrays::slice::SliceData + pub type vortex_array::arrays::slice::Slice::ValidityVTable = vortex_array::arrays::slice::Slice pub fn vortex_array::arrays::slice::Slice::append_to_builder(vortex_array::ArrayView<'_, Self>, &mut dyn vortex_array::builders::ArrayBuilder, &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> @@ -25552,7 +25552,7 @@ pub fn vortex_array::arrays::slice::Slice::serialize(vortex_array::ArrayView<'_, pub fn vortex_array::arrays::slice::Slice::slot_name(vortex_array::ArrayView<'_, Self>, usize) -> alloc::string::String -pub fn vortex_array::arrays::slice::Slice::validate(&self, &Self::ArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::slice::Slice::validate(&self, &Self::TypedArrayData, &vortex_array::dtype::DType, usize, &[core::option::Option]) -> vortex_error::VortexResult<()> pub trait vortex_array::ValidityChild @@ -25652,7 +25652,7 @@ impl vortex_array::ValidityVTable for vortex pub fn vortex_array::arrays::slice::Slice::validity(vortex_array::ArrayView<'_, vortex_array::arrays::slice::Slice>) -> vortex_error::VortexResult -impl vortex_array::ValidityVTable for vortex_array::ValidityVTableFromChildSliceHelper where ::ArrayData: vortex_array::ValidityChildSliceHelper +impl vortex_array::ValidityVTable for vortex_array::ValidityVTableFromChildSliceHelper where ::TypedArrayData: vortex_array::ValidityChildSliceHelper pub fn vortex_array::ValidityVTableFromChildSliceHelper::validity(vortex_array::ArrayView<'_, V>) -> vortex_error::VortexResult From 6e5c9a2ca3b5b1bca4f673edb98fcee4dff272f5 Mon Sep 17 00:00:00 2001 From: Joe Isaacs Date: Wed, 6 May 2026 11:34:54 +0100 Subject: [PATCH 11/12] add Signed-off-by: Joe Isaacs --- vortex-ffi/src/array.rs | 2 ++ vortex-ffi/src/dtype.rs | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/vortex-ffi/src/array.rs b/vortex-ffi/src/array.rs index bb4e464dea4..d72b3e8c3c1 100644 --- a/vortex-ffi/src/array.rs +++ b/vortex-ffi/src/array.rs @@ -779,6 +779,8 @@ mod tests { } } + // TODO: re-enable under miri once parking_lot_core fixes strict-provenance violations + #[cfg_attr(miri, ignore)] #[test] fn test_array_dtype_lifetime_pattern() { let array = { diff --git a/vortex-ffi/src/dtype.rs b/vortex-ffi/src/dtype.rs index 4e720fc6243..09c7056e810 100644 --- a/vortex-ffi/src/dtype.rs +++ b/vortex-ffi/src/dtype.rs @@ -663,6 +663,8 @@ mod tests { .into_array() } + // TODO: re-enable under miri once parking_lot_core fixes strict-provenance violations + #[cfg_attr(miri, ignore)] #[test] fn test_struct_introspection_simple() { let array = create_test_struct_array(); @@ -679,6 +681,8 @@ mod tests { } } + // TODO: re-enable under miri once parking_lot_core fixes strict-provenance violations + #[cfg_attr(miri, ignore)] #[test] fn test_field_name_access() { let array = create_test_struct_array(); @@ -704,6 +708,8 @@ mod tests { } } + // TODO: re-enable under miri once parking_lot_core fixes strict-provenance violations + #[cfg_attr(miri, ignore)] #[test] fn test_comprehensive_struct_introspection() { let array = create_test_struct_array(); From ee1a899cd6bf5e16cb68dcd858889778b86ff7ff Mon Sep 17 00:00:00 2001 From: Robert Kruszewski Date: Wed, 6 May 2026 12:32:21 +0100 Subject: [PATCH 12/12] simpler Signed-off-by: Robert Kruszewski --- vortex-array/src/array/erased.rs | 51 ++++++++++++++-------------- vortex-array/src/array/mod.rs | 30 ++++++----------- vortex-array/src/array/typed.rs | 57 +++++++++++--------------------- 3 files changed, 54 insertions(+), 84 deletions(-) diff --git a/vortex-array/src/array/erased.rs b/vortex-array/src/array/erased.rs index aa5d237f156..cfc3e911c48 100644 --- a/vortex-array/src/array/erased.rs +++ b/vortex-array/src/array/erased.rs @@ -145,9 +145,9 @@ impl ArrayRef { impl Debug for ArrayRef { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { f.debug_struct("Array") - .field("encoding", &self.0.fields.encoding_id) - .field("dtype", &self.0.fields.dtype) - .field("len", &self.0.fields.len) + .field("encoding", &self.0.encoding_id) + .field("dtype", &self.0.dtype) + .field("len", &self.0.len) .field("data", &self.0.data) .finish() } @@ -155,11 +155,11 @@ impl Debug for ArrayRef { impl ArrayHash for ArrayRef { fn array_hash(&self, state: &mut H, precision: crate::Precision) { - self.0.fields.len.hash(state); - self.0.fields.dtype.hash(state); - self.0.fields.encoding_id.hash(state); - self.0.fields.slots.len().hash(state); - for slot in &self.0.fields.slots { + self.0.len.hash(state); + self.0.dtype.hash(state); + self.0.encoding_id.hash(state); + self.0.slots.len().hash(state); + for slot in &self.0.slots { slot.array_hash(state, precision); } self.0 @@ -170,16 +170,15 @@ impl ArrayHash for ArrayRef { impl ArrayEq for ArrayRef { fn array_eq(&self, other: &Self, precision: crate::Precision) -> bool { - self.0.fields.len == other.0.fields.len - && self.0.fields.dtype == other.0.fields.dtype - && self.0.fields.encoding_id == other.0.fields.encoding_id - && self.0.fields.slots.len() == other.0.fields.slots.len() + self.0.len == other.0.len + && self.0.dtype == other.0.dtype + && self.0.encoding_id == other.0.encoding_id + && self.0.slots.len() == other.0.slots.len() && self .0 - .fields .slots .iter() - .zip(other.0.fields.slots.iter()) + .zip(other.0.slots.iter()) .all(|(slot, other_slot)| slot.array_eq(other_slot, precision)) && self.0.data.dyn_array_eq(other, precision) } @@ -188,25 +187,25 @@ impl ArrayRef { /// Returns the length of the array. #[inline] pub fn len(&self) -> usize { - self.0.fields.len + self.0.len } /// Returns whether the array is empty (has zero rows). #[inline] pub fn is_empty(&self) -> bool { - self.0.fields.len == 0 + self.0.len == 0 } /// Returns the logical Vortex [`DType`] of the array. #[inline] pub fn dtype(&self) -> &DType { - &self.0.fields.dtype + &self.0.dtype } /// Returns the encoding ID of the array. #[inline] pub fn encoding_id(&self) -> ArrayId { - self.0.fields.encoding_id + self.0.encoding_id } /// Performs a constant-time slice of the array. @@ -387,7 +386,7 @@ impl ArrayRef { /// Returns the statistics of the array. pub fn statistics(&self) -> StatsSetRef<'_> { - self.0.fields.stats.to_ref(self) + self.0.stats.to_ref(self) } /// Does the array match the given matcher. @@ -509,7 +508,7 @@ impl ArrayRef { slot_idx: usize, ) -> VortexResult<(ArrayRef, ArrayRef)> { if let Some(inner) = Arc::get_mut(&mut self.0) { - let child = inner.fields.slots[slot_idx] + let child = inner.slots[slot_idx] .take() .vortex_expect("take_slot_unchecked cannot take an absent slot"); return Ok((self, child)); @@ -527,7 +526,7 @@ impl ArrayRef { // SAFETY: ensured by the caller — the None slot is either put back or driven to completion // via the builder path before the parent escapes the executor. - let new_parent = unsafe { self.0.with_slots_unchecked(new_slots) }; + let new_parent = unsafe { self.0.data.with_slots_unchecked(&self, new_slots) }; Ok((new_parent, child)) } @@ -544,14 +543,13 @@ impl ArrayRef { replacement: ArrayRef, ) -> VortexResult { if let Some(inner) = Arc::get_mut(&mut self.0) { - inner.fields.slots[slot_idx] = Some(replacement); + inner.slots[slot_idx] = Some(replacement); return Ok(self); } let mut slots = self.slots().to_vec(); slots[slot_idx] = Some(replacement); - let inner = Arc::clone(&self.0); - inner.with_slots(slots) + self.0.data.with_slots(&self, slots) } /// Returns a new array with the provided slots. @@ -589,8 +587,7 @@ impl ArrayRef { ); } } - let inner = Arc::clone(&self.0); - inner.with_slots(slots) + self.0.data.with_slots(&self, slots) } pub fn reduce(&self) -> VortexResult> { @@ -690,7 +687,7 @@ impl ArrayRef { /// Returns the slots of the array. pub fn slots(&self) -> &[Option] { - &self.0.fields.slots + &self.0.slots } /// Returns the name of the slot at the given index. diff --git a/vortex-array/src/array/mod.rs b/vortex-array/src/array/mod.rs index 6bce3e92cf8..4dc8607b1bc 100644 --- a/vortex-array/src/array/mod.rs +++ b/vortex-array/src/array/mod.rs @@ -118,11 +118,7 @@ pub(crate) trait DynArrayData: 'static + private::Sealed + Send + Sync + Debug { fn dyn_array_eq(&self, other: &ArrayRef, precision: crate::Precision) -> bool; /// Returns a new array with the given slots. - fn with_slots( - &self, - fields: &ArrayFields, - slots: Vec>, - ) -> VortexResult; + fn with_slots(&self, this: &ArrayRef, slots: Vec>) -> VortexResult; /// Returns a new array with the given slots, bypassing encoding-level validation. /// @@ -138,7 +134,7 @@ pub(crate) trait DynArrayData: 'static + private::Sealed + Send + Sync + Debug { /// anything outside the executor. unsafe fn with_slots_unchecked( &self, - fields: &ArrayFields, + this: &ArrayRef, slots: Vec>, ) -> ArrayRef; @@ -357,28 +353,24 @@ impl DynArrayData for ArrayData { .is_some_and(|other_inner| self.data.array_eq(&other_inner.data, precision)) } - fn with_slots( - &self, - fields: &ArrayFields, - slots: Vec>, - ) -> VortexResult { - let stats = fields.stats.clone(); + fn with_slots(&self, this: &ArrayRef, slots: Vec>) -> VortexResult { + let stats = this.statistics().to_owned(); Ok(Array::::try_from_parts( ArrayParts::new( self.vtable.clone(), - fields.dtype.clone(), - fields.len, + this.dtype().clone(), + this.len(), self.data.clone(), ) .with_slots(slots), )? - .with_stats_set(stats.into()) + .with_stats_set(stats) .into_array()) } unsafe fn with_slots_unchecked( &self, - fields: &ArrayFields, + this: &ArrayRef, slots: Vec>, ) -> ArrayRef { // SAFETY: we intentionally skip `V::validate` here. Caller guarantees that the resulting @@ -386,11 +378,11 @@ impl DynArrayData for ArrayData { let store = unsafe { ArrayInner::>::new_unchecked( self.vtable.clone(), - fields.len, - fields.dtype.clone(), + this.len(), + this.dtype().clone(), self.data.clone(), slots, - fields.stats.clone(), + this.statistics().to_array_stats(), ) }; ArrayRef::from_inner(Arc::new(store)) diff --git a/vortex-array/src/array/typed.rs b/vortex-array/src/array/typed.rs index 19c49ee615f..15dbb18a5f6 100644 --- a/vortex-array/src/array/typed.rs +++ b/vortex-array/src/array/typed.rs @@ -21,7 +21,6 @@ use crate::LEGACY_SESSION; use crate::VortexSessionExecute; use crate::array::ArrayId; use crate::array::ArrayView; -use crate::array::DynArrayData; use crate::array::VTable; use crate::dtype::DType; use crate::stats::ArrayStats; @@ -29,14 +28,6 @@ use crate::stats::StatsSet; use crate::stats::StatsSetRef; use crate::validity::Validity; -pub(crate) struct ArrayFields { - pub(crate) len: usize, - pub(crate) encoding_id: ArrayId, - pub(crate) dtype: DType, - pub(crate) slots: Vec>, - pub(crate) stats: ArrayStats, -} - /// The combined allocation behind [`ArrayRef`]. /// /// Stores common metadata (len, dtype, encoding_id, slots, stats) together with the @@ -46,7 +37,11 @@ pub(crate) struct ArrayFields { /// Metadata is accessed via `self.0.*` (a normal struct field read through the Arc), /// while encoding-specific methods go through `self.0.data` (vtable dispatch). pub(crate) struct ArrayInner { - pub(crate) fields: ArrayFields, + pub(crate) len: usize, + pub(crate) encoding_id: ArrayId, + pub(crate) dtype: DType, + pub(crate) slots: Vec>, + pub(crate) stats: ArrayStats, pub(crate) data: D, // must be last for unsized coercion } @@ -95,7 +90,7 @@ impl TypedArrayRef for ArrayView<'_, V> {} // ArrayData — the concrete type stored inside Arc // ============================================================================= -/// A VTable and its instance data, this can be type-erased to [`DynArrayData`](crate::array::DynArrayData). +/// A VTable and its instance data, this can be type-erased to [`DynArrayData`](DynArrayData). #[doc(hidden)] pub(crate) struct ArrayData { pub(crate) vtable: V, @@ -109,13 +104,11 @@ impl ArrayInner> { new.vtable .validate(&new.data, &new.dtype, new.len, &new.slots)?; Ok(ArrayInner { - fields: ArrayFields { - len: new.len, - encoding_id: new.vtable.id(), - dtype: new.dtype, - slots: new.slots, - stats: ArrayStats::default(), - }, + len: new.len, + encoding_id: new.vtable.id(), + dtype: new.dtype, + slots: new.slots, + stats: ArrayStats::default(), data: ArrayData { vtable: new.vtable, data: new.data, @@ -136,28 +129,16 @@ impl ArrayInner> { stats: ArrayStats, ) -> Self { ArrayInner { - fields: ArrayFields { - len, - encoding_id: vtable.id(), - dtype, - slots, - stats, - }, + len, + encoding_id: vtable.id(), + dtype, + slots, + stats, data: ArrayData { vtable, data }, } } } -impl ArrayInner { - pub(crate) fn with_slots(&self, slots: Vec>) -> VortexResult { - self.data.with_slots(&self.fields, slots) - } - - pub(crate) unsafe fn with_slots_unchecked(&self, slots: Vec>) -> ArrayRef { - unsafe { self.data.with_slots_unchecked(&self.fields, slots) } - } -} - impl Deref for ArrayData { type Target = V::TypedArrayData; fn deref(&self) -> &V::TypedArrayData { @@ -308,10 +289,10 @@ impl Array { match Arc::try_unwrap(typed_arc) { Ok(store) => Ok(ArrayParts { vtable: store.data.vtable, - dtype: store.fields.dtype, - len: store.fields.len, + dtype: store.dtype, + len: store.len, data: store.data.data, - slots: store.fields.slots, + slots: store.slots, }), Err(typed_arc) => Err(Self { inner: ArrayRef::from_inner(typed_arc),