diff --git a/Cargo.lock b/Cargo.lock index ccc1ff46344..4a4f4b14629 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10289,6 +10289,7 @@ dependencies = [ "vortex-array", "vortex-buffer", "vortex-error", + "vortex-mask", "vortex-session", ] diff --git a/benchmarks/compress-bench/src/lib.rs b/benchmarks/compress-bench/src/lib.rs index 9fa6928cf0d..b971f7af6ed 100644 --- a/benchmarks/compress-bench/src/lib.rs +++ b/benchmarks/compress-bench/src/lib.rs @@ -23,7 +23,7 @@ pub fn chunked_to_vec_record_batch( // TODO(connor)[ListView]: The rust Parquet implementation does not support writing // `ListView` to Parquet files yet. let converted_array = recursive_list_from_list_view(array.clone())?; - Ok(RecordBatch::try_from(converted_array.as_ref())?) + Ok(RecordBatch::try_from(&converted_array)?) }) .collect::>>()?; diff --git a/benchmarks/compress-bench/src/vortex.rs b/benchmarks/compress-bench/src/vortex.rs index b2eb1a5d490..9d548fd60ec 100644 --- a/benchmarks/compress-bench/src/vortex.rs +++ b/benchmarks/compress-bench/src/vortex.rs @@ -12,6 +12,7 @@ use async_trait::async_trait; use bytes::Bytes; use futures::StreamExt; use futures::pin_mut; +use vortex::array::IntoArray; use vortex::file::OpenOptionsSessionExt; use vortex::file::WriteOptionsSessionExt; use vortex_bench::Format; @@ -37,7 +38,7 @@ impl Compressor for VortexCompressor { let mut cursor = Cursor::new(&mut buf); SESSION .write_options() - .write(&mut cursor, uncompressed.to_array_stream()) + .write(&mut cursor, uncompressed.into_array().to_array_stream()) .await?; let elapsed = start.elapsed(); @@ -51,7 +52,7 @@ impl Compressor for VortexCompressor { let mut cursor = Cursor::new(&mut buf); SESSION .write_options() - .write(&mut cursor, uncompressed.to_array_stream()) + .write(&mut cursor, uncompressed.into_array().to_array_stream()) .await?; // Now decompress diff --git a/encodings/alp/public-api.lock b/encodings/alp/public-api.lock index f6632c538e5..9f380eb7450 100644 --- a/encodings/alp/public-api.lock +++ b/encodings/alp/public-api.lock @@ -6,7 +6,15 @@ pub struct vortex_alp::ALP impl vortex_alp::ALP -pub const vortex_alp::ALP::ID: vortex_array::vtable::dyn_::ArrayId +pub const vortex_alp::ALP::ID: vortex_array::array::ArrayId + +impl vortex_alp::ALP + +pub fn vortex_alp::ALP::new(encoded: vortex_array::array::erased::ArrayRef, exponents: vortex_alp::Exponents, patches: core::option::Option) -> vortex_alp::ALPArray + +pub unsafe fn vortex_alp::ALP::new_unchecked(encoded: vortex_array::array::erased::ArrayRef, exponents: vortex_alp::Exponents, patches: core::option::Option, dtype: vortex_array::dtype::DType) -> vortex_alp::ALPArray + +pub fn vortex_alp::ALP::try_new(encoded: vortex_array::array::erased::ArrayRef, exponents: vortex_alp::Exponents, patches: core::option::Option) -> vortex_error::VortexResult impl core::clone::Clone for vortex_alp::ALP @@ -16,143 +24,137 @@ impl core::fmt::Debug for vortex_alp::ALP pub fn vortex_alp::ALP::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::take::TakeExecute for vortex_alp::ALP - -pub fn vortex_alp::ALP::take(array: &vortex_alp::ALPArray, indices: &vortex_array::array::ArrayRef, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::array::vtable::VTable for vortex_alp::ALP -impl vortex_array::arrays::filter::kernel::FilterKernel for vortex_alp::ALP +pub type vortex_alp::ALP::ArrayData = vortex_alp::ALPData -pub fn vortex_alp::ALP::filter(array: &vortex_alp::ALPArray, mask: &vortex_mask::Mask, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub type vortex_alp::ALP::Metadata = vortex_array::metadata::ProstMetadata -impl vortex_array::arrays::slice::SliceKernel for vortex_alp::ALP +pub type vortex_alp::ALP::OperationsVTable = vortex_alp::ALP -pub fn vortex_alp::ALP::slice(array: &Self::Array, range: core::ops::range::Range, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub type vortex_alp::ALP::ValidityVTable = vortex_array::array::vtable::validity::ValidityVTableFromChild -impl vortex_array::scalar_fn::fns::between::kernel::BetweenReduce for vortex_alp::ALP +pub fn vortex_alp::ALP::array_eq(array: &vortex_alp::ALPData, other: &vortex_alp::ALPData, precision: vortex_array::hash::Precision) -> bool -pub fn vortex_alp::ALP::between(array: &vortex_alp::ALPArray, lower: &vortex_array::array::ArrayRef, upper: &vortex_array::array::ArrayRef, options: &vortex_array::scalar_fn::fns::between::BetweenOptions) -> vortex_error::VortexResult> +pub fn vortex_alp::ALP::array_hash(array: &vortex_alp::ALPData, state: &mut H, precision: vortex_array::hash::Precision) -impl vortex_array::scalar_fn::fns::binary::compare::CompareKernel for vortex_alp::ALP +pub fn vortex_alp::ALP::buffer(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_alp::ALP::compare(lhs: &vortex_alp::ALPArray, rhs: &vortex_array::array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_alp::ALP::buffer_name(_array: vortex_array::array::view::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_alp::ALP +pub fn vortex_alp::ALP::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_alp::ALP::cast(array: &vortex_alp::ALPArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_alp::ALP::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::fns::mask::kernel::MaskKernel for vortex_alp::ALP +pub fn vortex_alp::ALP::dtype(array: &vortex_alp::ALPData) -> &vortex_array::dtype::DType -pub fn vortex_alp::ALP::mask(array: &vortex_alp::ALPArray, mask: &vortex_array::array::ArrayRef, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_alp::ALP::execute(array: vortex_array::array::typed::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::fns::mask::kernel::MaskReduce for vortex_alp::ALP +pub fn vortex_alp::ALP::execute_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_alp::ALP::mask(array: &vortex_alp::ALPArray, mask: &vortex_array::array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_alp::ALP::id(&self) -> vortex_array::array::ArrayId -impl vortex_array::vtable::VTable for vortex_alp::ALP +pub fn vortex_alp::ALP::len(array: &vortex_alp::ALPData) -> usize -pub type vortex_alp::ALP::Array = vortex_alp::ALPArray +pub fn vortex_alp::ALP::metadata(array: vortex_array::array::view::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub type vortex_alp::ALP::Metadata = vortex_array::metadata::ProstMetadata +pub fn vortex_alp::ALP::nbuffers(_array: vortex_array::array::view::ArrayView<'_, Self>) -> usize -pub type vortex_alp::ALP::OperationsVTable = vortex_alp::ALP +pub fn vortex_alp::ALP::reduce_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub type vortex_alp::ALP::ValidityVTable = vortex_array::vtable::validity::ValidityVTableFromChild - -pub fn vortex_alp::ALP::array_eq(array: &vortex_alp::ALPArray, other: &vortex_alp::ALPArray, precision: vortex_array::hash::Precision) -> bool +pub fn vortex_alp::ALP::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_alp::ALP::array_hash(array: &vortex_alp::ALPArray, state: &mut H, precision: vortex_array::hash::Precision) +pub fn vortex_alp::ALP::slot_name(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_alp::ALP::buffer(_array: &vortex_alp::ALPArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_alp::ALP::slots(array: vortex_array::array::view::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_alp::ALP::buffer_name(_array: &vortex_alp::ALPArray, _idx: usize) -> core::option::Option +pub fn vortex_alp::ALP::stats(array: &vortex_alp::ALPData) -> &vortex_array::stats::array::ArrayStats -pub fn vortex_alp::ALP::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_alp::ALP::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_alp::ALP::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_alp::ALP::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_alp::ALP::dtype(array: &vortex_alp::ALPArray) -> &vortex_array::dtype::DType +impl vortex_array::array::vtable::operations::OperationsVTable for vortex_alp::ALP -pub fn vortex_alp::ALP::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_alp::ALP::scalar_at(array: vortex_array::array::view::ArrayView<'_, vortex_alp::ALP>, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_alp::ALP::execute_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::array::vtable::validity::ValidityChild for vortex_alp::ALP -pub fn vortex_alp::ALP::id(&self) -> vortex_array::vtable::dyn_::ArrayId +pub fn vortex_alp::ALP::validity_child(array: &vortex_alp::ALPData) -> &vortex_array::array::erased::ArrayRef -pub fn vortex_alp::ALP::len(array: &vortex_alp::ALPArray) -> usize - -pub fn vortex_alp::ALP::metadata(array: &vortex_alp::ALPArray) -> vortex_error::VortexResult +impl vortex_array::arrays::dict::take::TakeExecute for vortex_alp::ALP -pub fn vortex_alp::ALP::nbuffers(_array: &vortex_alp::ALPArray) -> usize +pub fn vortex_alp::ALP::take(array: vortex_array::array::view::ArrayView<'_, Self>, indices: &vortex_array::array::erased::ArrayRef, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_alp::ALP::reduce_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +impl vortex_array::arrays::filter::kernel::FilterKernel for vortex_alp::ALP -pub fn vortex_alp::ALP::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_alp::ALP::filter(array: vortex_array::array::view::ArrayView<'_, Self>, mask: &vortex_mask::Mask, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_alp::ALP::slot_name(_array: &vortex_alp::ALPArray, idx: usize) -> alloc::string::String +impl vortex_array::arrays::slice::SliceKernel for vortex_alp::ALP -pub fn vortex_alp::ALP::slots(array: &vortex_alp::ALPArray) -> &[core::option::Option] +pub fn vortex_alp::ALP::slice(array: vortex_array::array::view::ArrayView<'_, Self>, range: core::ops::range::Range, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_alp::ALP::stats(array: &vortex_alp::ALPArray) -> vortex_array::stats::array::StatsSetRef<'_> +impl vortex_array::scalar_fn::fns::between::kernel::BetweenReduce for vortex_alp::ALP -pub fn vortex_alp::ALP::vtable(_array: &Self::Array) -> &Self +pub fn vortex_alp::ALP::between(array: vortex_array::array::view::ArrayView<'_, Self>, lower: &vortex_array::array::erased::ArrayRef, upper: &vortex_array::array::erased::ArrayRef, options: &vortex_array::scalar_fn::fns::between::BetweenOptions) -> vortex_error::VortexResult> -pub fn vortex_alp::ALP::with_slots(array: &mut vortex_alp::ALPArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +impl vortex_array::scalar_fn::fns::binary::compare::CompareKernel for vortex_alp::ALP -impl vortex_array::vtable::operations::OperationsVTable for vortex_alp::ALP +pub fn vortex_alp::ALP::compare(lhs: vortex_array::array::view::ArrayView<'_, Self>, rhs: &vortex_array::array::erased::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_alp::ALP::scalar_at(array: &vortex_alp::ALPArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_alp::ALP -impl vortex_array::vtable::validity::ValidityChild for vortex_alp::ALP +pub fn vortex_alp::ALP::cast(array: vortex_array::array::view::ArrayView<'_, Self>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_alp::ALP::validity_child(array: &vortex_alp::ALPArray) -> &vortex_array::array::ArrayRef +impl vortex_array::scalar_fn::fns::mask::kernel::MaskKernel for vortex_alp::ALP -pub struct vortex_alp::ALPArray +pub fn vortex_alp::ALP::mask(array: vortex_array::array::view::ArrayView<'_, Self>, mask: &vortex_array::array::erased::ArrayRef, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_alp::ALPArray +impl vortex_array::scalar_fn::fns::mask::kernel::MaskReduce for vortex_alp::ALP -pub fn vortex_alp::ALPArray::encoded(&self) -> &vortex_array::array::ArrayRef +pub fn vortex_alp::ALP::mask(array: vortex_array::array::view::ArrayView<'_, Self>, mask: &vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_alp::ALPArray::exponents(&self) -> vortex_alp::Exponents +pub struct vortex_alp::ALPData -pub fn vortex_alp::ALPArray::into_parts(self) -> (vortex_array::array::ArrayRef, vortex_alp::Exponents, core::option::Option, vortex_array::dtype::DType) +impl vortex_alp::ALPData -pub fn vortex_alp::ALPArray::new(encoded: vortex_array::array::ArrayRef, exponents: vortex_alp::Exponents, patches: core::option::Option) -> Self +pub fn vortex_alp::ALPData::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_alp::ALPArray::patches(&self) -> core::option::Option +pub fn vortex_alp::ALPData::encoded(&self) -> &vortex_array::array::erased::ArrayRef -pub fn vortex_alp::ALPArray::ptype(&self) -> vortex_array::dtype::ptype::PType +pub fn vortex_alp::ALPData::exponents(&self) -> vortex_alp::Exponents -pub fn vortex_alp::ALPArray::try_new(encoded: vortex_array::array::ArrayRef, exponents: vortex_alp::Exponents, patches: core::option::Option) -> vortex_error::VortexResult +pub fn vortex_alp::ALPData::into_parts(self) -> (vortex_array::array::erased::ArrayRef, vortex_alp::Exponents, core::option::Option, vortex_array::dtype::DType) -impl vortex_alp::ALPArray +pub fn vortex_alp::ALPData::is_empty(&self) -> bool -pub fn vortex_alp::ALPArray::to_array(&self) -> vortex_array::array::ArrayRef +pub fn vortex_alp::ALPData::len(&self) -> usize -impl core::clone::Clone for vortex_alp::ALPArray +pub fn vortex_alp::ALPData::patches(&self) -> core::option::Option -pub fn vortex_alp::ALPArray::clone(&self) -> vortex_alp::ALPArray +pub fn vortex_alp::ALPData::ptype(&self) -> vortex_array::dtype::ptype::PType -impl core::convert::AsRef for vortex_alp::ALPArray +impl vortex_alp::ALPData -pub fn vortex_alp::ALPArray::as_ref(&self) -> &dyn vortex_array::array::DynArray +pub fn vortex_alp::ALPData::new(encoded: vortex_array::array::erased::ArrayRef, exponents: vortex_alp::Exponents, patches: core::option::Option) -> Self -impl core::convert::From for vortex_array::array::ArrayRef +pub fn vortex_alp::ALPData::try_new(encoded: vortex_array::array::erased::ArrayRef, exponents: vortex_alp::Exponents, patches: core::option::Option) -> vortex_error::VortexResult -pub fn vortex_array::array::ArrayRef::from(value: vortex_alp::ALPArray) -> vortex_array::array::ArrayRef +impl core::clone::Clone for vortex_alp::ALPData -impl core::fmt::Debug for vortex_alp::ALPArray +pub fn vortex_alp::ALPData::clone(&self) -> vortex_alp::ALPData -pub fn vortex_alp::ALPArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl core::convert::From for vortex_array::array::erased::ArrayRef -impl core::ops::deref::Deref for vortex_alp::ALPArray +pub fn vortex_array::array::erased::ArrayRef::from(value: vortex_alp::ALPData) -> vortex_array::array::erased::ArrayRef -pub type vortex_alp::ALPArray::Target = dyn vortex_array::array::DynArray +impl core::fmt::Debug for vortex_alp::ALPData -pub fn vortex_alp::ALPArray::deref(&self) -> &Self::Target +pub fn vortex_alp::ALPData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::array::IntoArray for vortex_alp::ALPArray +impl vortex_array::array::IntoArray for vortex_alp::ALPData -pub fn vortex_alp::ALPArray::into_array(self) -> vortex_array::array::ArrayRef +pub fn vortex_alp::ALPData::into_array(self) -> vortex_array::array::erased::ArrayRef pub struct vortex_alp::ALPMetadata @@ -178,7 +180,11 @@ pub struct vortex_alp::ALPRD impl vortex_alp::ALPRD -pub const vortex_alp::ALPRD::ID: vortex_array::vtable::dyn_::ArrayId +pub const vortex_alp::ALPRD::ID: vortex_array::array::ArrayId + +pub unsafe fn vortex_alp::ALPRD::new_unchecked(dtype: vortex_array::dtype::DType, left_parts: vortex_array::array::erased::ArrayRef, left_parts_dictionary: vortex_buffer::buffer::Buffer, right_parts: vortex_array::array::erased::ArrayRef, right_bit_width: u8, left_parts_patches: core::option::Option) -> vortex_alp::ALPRDArray + +pub fn vortex_alp::ALPRD::try_new(dtype: vortex_array::dtype::DType, left_parts: vortex_array::array::erased::ArrayRef, left_parts_dictionary: vortex_buffer::buffer::Buffer, right_parts: vortex_array::array::erased::ArrayRef, right_bit_width: u8, left_parts_patches: core::option::Option) -> vortex_error::VortexResult impl core::clone::Clone for vortex_alp::ALPRD @@ -188,155 +194,147 @@ impl core::fmt::Debug for vortex_alp::ALPRD pub fn vortex_alp::ALPRD::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::take::TakeExecute for vortex_alp::ALPRD - -pub fn vortex_alp::ALPRD::take(array: &vortex_alp::ALPRDArray, indices: &vortex_array::array::ArrayRef, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::arrays::filter::kernel::FilterKernel for vortex_alp::ALPRD - -pub fn vortex_alp::ALPRD::filter(array: &vortex_alp::ALPRDArray, mask: &vortex_mask::Mask, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::array::vtable::VTable for vortex_alp::ALPRD -impl vortex_array::arrays::slice::SliceKernel for vortex_alp::ALPRD +pub type vortex_alp::ALPRD::ArrayData = vortex_alp::ALPRDData -pub fn vortex_alp::ALPRD::slice(array: &Self::Array, range: core::ops::range::Range, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_alp::ALPRD +pub type vortex_alp::ALPRD::Metadata = vortex_array::metadata::ProstMetadata -pub fn vortex_alp::ALPRD::cast(array: &vortex_alp::ALPRDArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub type vortex_alp::ALPRD::OperationsVTable = vortex_alp::ALPRD -impl vortex_array::scalar_fn::fns::mask::kernel::MaskReduce for vortex_alp::ALPRD +pub type vortex_alp::ALPRD::ValidityVTable = vortex_array::array::vtable::validity::ValidityVTableFromChild -pub fn vortex_alp::ALPRD::mask(array: &vortex_alp::ALPRDArray, mask: &vortex_array::array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_alp::ALPRD::array_eq(array: &vortex_alp::ALPRDData, other: &vortex_alp::ALPRDData, precision: vortex_array::hash::Precision) -> bool -impl vortex_array::vtable::VTable for vortex_alp::ALPRD +pub fn vortex_alp::ALPRD::array_hash(array: &vortex_alp::ALPRDData, state: &mut H, precision: vortex_array::hash::Precision) -pub type vortex_alp::ALPRD::Array = vortex_alp::ALPRDArray +pub fn vortex_alp::ALPRD::buffer(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub type vortex_alp::ALPRD::Metadata = vortex_array::metadata::ProstMetadata +pub fn vortex_alp::ALPRD::buffer_name(_array: vortex_array::array::view::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub type vortex_alp::ALPRD::OperationsVTable = vortex_alp::ALPRD +pub fn vortex_alp::ALPRD::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub type vortex_alp::ALPRD::ValidityVTable = vortex_array::vtable::validity::ValidityVTableFromChild +pub fn vortex_alp::ALPRD::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_alp::ALPRD::array_eq(array: &vortex_alp::ALPRDArray, other: &vortex_alp::ALPRDArray, precision: vortex_array::hash::Precision) -> bool +pub fn vortex_alp::ALPRD::dtype(array: &vortex_alp::ALPRDData) -> &vortex_array::dtype::DType -pub fn vortex_alp::ALPRD::array_hash(array: &vortex_alp::ALPRDArray, state: &mut H, precision: vortex_array::hash::Precision) +pub fn vortex_alp::ALPRD::execute(array: vortex_array::array::typed::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_alp::ALPRD::buffer(_array: &vortex_alp::ALPRDArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_alp::ALPRD::execute_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_alp::ALPRD::buffer_name(_array: &vortex_alp::ALPRDArray, _idx: usize) -> core::option::Option +pub fn vortex_alp::ALPRD::id(&self) -> vortex_array::array::ArrayId -pub fn vortex_alp::ALPRD::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_alp::ALPRD::len(array: &vortex_alp::ALPRDData) -> usize -pub fn vortex_alp::ALPRD::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_alp::ALPRD::metadata(array: vortex_array::array::view::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_alp::ALPRD::dtype(array: &vortex_alp::ALPRDArray) -> &vortex_array::dtype::DType +pub fn vortex_alp::ALPRD::nbuffers(_array: vortex_array::array::view::ArrayView<'_, Self>) -> usize -pub fn vortex_alp::ALPRD::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_alp::ALPRD::reduce_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_alp::ALPRD::execute_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_alp::ALPRD::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_alp::ALPRD::id(&self) -> vortex_array::vtable::dyn_::ArrayId +pub fn vortex_alp::ALPRD::slot_name(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_alp::ALPRD::len(array: &vortex_alp::ALPRDArray) -> usize +pub fn vortex_alp::ALPRD::slots(array: vortex_array::array::view::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_alp::ALPRD::metadata(array: &vortex_alp::ALPRDArray) -> vortex_error::VortexResult +pub fn vortex_alp::ALPRD::stats(array: &vortex_alp::ALPRDData) -> &vortex_array::stats::array::ArrayStats -pub fn vortex_alp::ALPRD::nbuffers(_array: &vortex_alp::ALPRDArray) -> usize +pub fn vortex_alp::ALPRD::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_alp::ALPRD::reduce_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_alp::ALPRD::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_alp::ALPRD::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +impl vortex_array::array::vtable::operations::OperationsVTable for vortex_alp::ALPRD -pub fn vortex_alp::ALPRD::slot_name(_array: &vortex_alp::ALPRDArray, idx: usize) -> alloc::string::String +pub fn vortex_alp::ALPRD::scalar_at(array: vortex_array::array::view::ArrayView<'_, vortex_alp::ALPRD>, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_alp::ALPRD::slots(array: &vortex_alp::ALPRDArray) -> &[core::option::Option] +impl vortex_array::array::vtable::validity::ValidityChild for vortex_alp::ALPRD -pub fn vortex_alp::ALPRD::stats(array: &vortex_alp::ALPRDArray) -> vortex_array::stats::array::StatsSetRef<'_> +pub fn vortex_alp::ALPRD::validity_child(array: &vortex_alp::ALPRDData) -> &vortex_array::array::erased::ArrayRef -pub fn vortex_alp::ALPRD::vtable(_array: &Self::Array) -> &Self +impl vortex_array::arrays::dict::take::TakeExecute for vortex_alp::ALPRD -pub fn vortex_alp::ALPRD::with_slots(array: &mut vortex_alp::ALPRDArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_alp::ALPRD::take(array: vortex_array::array::view::ArrayView<'_, Self>, indices: &vortex_array::array::erased::ArrayRef, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::vtable::operations::OperationsVTable for vortex_alp::ALPRD +impl vortex_array::arrays::filter::kernel::FilterKernel for vortex_alp::ALPRD -pub fn vortex_alp::ALPRD::scalar_at(array: &vortex_alp::ALPRDArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_alp::ALPRD::filter(array: vortex_array::array::view::ArrayView<'_, Self>, mask: &vortex_mask::Mask, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::vtable::validity::ValidityChild for vortex_alp::ALPRD +impl vortex_array::arrays::slice::SliceKernel for vortex_alp::ALPRD -pub fn vortex_alp::ALPRD::validity_child(array: &vortex_alp::ALPRDArray) -> &vortex_array::array::ArrayRef +pub fn vortex_alp::ALPRD::slice(array: vortex_array::array::view::ArrayView<'_, Self>, range: core::ops::range::Range, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub struct vortex_alp::ALPRDArray +impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_alp::ALPRD -impl vortex_alp::ALPRDArray +pub fn vortex_alp::ALPRD::cast(array: vortex_array::array::view::ArrayView<'_, Self>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_alp::ALPRDArray::into_parts(self) -> vortex_alp::ALPRDArrayParts +impl vortex_array::scalar_fn::fns::mask::kernel::MaskReduce for vortex_alp::ALPRD -pub fn vortex_alp::ALPRDArray::is_f32(&self) -> bool +pub fn vortex_alp::ALPRD::mask(array: vortex_array::array::view::ArrayView<'_, Self>, mask: &vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_alp::ALPRDArray::left_parts(&self) -> &vortex_array::array::ArrayRef +pub struct vortex_alp::ALPRDArrayParts -pub fn vortex_alp::ALPRDArray::left_parts_dictionary(&self) -> &vortex_buffer::buffer::Buffer +pub vortex_alp::ALPRDArrayParts::dtype: vortex_array::dtype::DType -pub fn vortex_alp::ALPRDArray::left_parts_patches(&self) -> core::option::Option +pub vortex_alp::ALPRDArrayParts::left_parts: vortex_array::array::erased::ArrayRef -pub fn vortex_alp::ALPRDArray::replace_left_parts_patches(&mut self, patches: core::option::Option) +pub vortex_alp::ALPRDArrayParts::left_parts_dictionary: vortex_buffer::buffer::Buffer -pub fn vortex_alp::ALPRDArray::right_bit_width(&self) -> u8 +pub vortex_alp::ALPRDArrayParts::left_parts_patches: core::option::Option -pub fn vortex_alp::ALPRDArray::right_parts(&self) -> &vortex_array::array::ArrayRef +pub vortex_alp::ALPRDArrayParts::right_parts: vortex_array::array::erased::ArrayRef -pub fn vortex_alp::ALPRDArray::try_new(dtype: vortex_array::dtype::DType, left_parts: vortex_array::array::ArrayRef, left_parts_dictionary: vortex_buffer::buffer::Buffer, right_parts: vortex_array::array::ArrayRef, right_bit_width: u8, left_parts_patches: core::option::Option) -> vortex_error::VortexResult +impl core::clone::Clone for vortex_alp::ALPRDArrayParts -impl vortex_alp::ALPRDArray +pub fn vortex_alp::ALPRDArrayParts::clone(&self) -> vortex_alp::ALPRDArrayParts -pub fn vortex_alp::ALPRDArray::to_array(&self) -> vortex_array::array::ArrayRef +impl core::fmt::Debug for vortex_alp::ALPRDArrayParts -impl core::clone::Clone for vortex_alp::ALPRDArray +pub fn vortex_alp::ALPRDArrayParts::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_alp::ALPRDArray::clone(&self) -> vortex_alp::ALPRDArray +pub struct vortex_alp::ALPRDData -impl core::convert::AsRef for vortex_alp::ALPRDArray +impl vortex_alp::ALPRDData -pub fn vortex_alp::ALPRDArray::as_ref(&self) -> &dyn vortex_array::array::DynArray +pub fn vortex_alp::ALPRDData::dtype(&self) -> &vortex_array::dtype::DType -impl core::convert::From for vortex_array::array::ArrayRef +pub fn vortex_alp::ALPRDData::into_parts(self) -> vortex_alp::ALPRDArrayParts -pub fn vortex_array::array::ArrayRef::from(value: vortex_alp::ALPRDArray) -> vortex_array::array::ArrayRef +pub fn vortex_alp::ALPRDData::is_empty(&self) -> bool -impl core::fmt::Debug for vortex_alp::ALPRDArray +pub fn vortex_alp::ALPRDData::is_f32(&self) -> bool -pub fn vortex_alp::ALPRDArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_alp::ALPRDData::left_parts(&self) -> &vortex_array::array::erased::ArrayRef -impl core::ops::deref::Deref for vortex_alp::ALPRDArray +pub fn vortex_alp::ALPRDData::left_parts_dictionary(&self) -> &vortex_buffer::buffer::Buffer -pub type vortex_alp::ALPRDArray::Target = dyn vortex_array::array::DynArray +pub fn vortex_alp::ALPRDData::left_parts_patches(&self) -> core::option::Option -pub fn vortex_alp::ALPRDArray::deref(&self) -> &Self::Target +pub fn vortex_alp::ALPRDData::len(&self) -> usize -impl vortex_array::array::IntoArray for vortex_alp::ALPRDArray +pub fn vortex_alp::ALPRDData::replace_left_parts_patches(&mut self, patches: core::option::Option) -pub fn vortex_alp::ALPRDArray::into_array(self) -> vortex_array::array::ArrayRef +pub fn vortex_alp::ALPRDData::right_bit_width(&self) -> u8 -pub struct vortex_alp::ALPRDArrayParts +pub fn vortex_alp::ALPRDData::right_parts(&self) -> &vortex_array::array::erased::ArrayRef -pub vortex_alp::ALPRDArrayParts::dtype: vortex_array::dtype::DType +pub fn vortex_alp::ALPRDData::try_new(dtype: vortex_array::dtype::DType, left_parts: vortex_array::array::erased::ArrayRef, left_parts_dictionary: vortex_buffer::buffer::Buffer, right_parts: vortex_array::array::erased::ArrayRef, right_bit_width: u8, left_parts_patches: core::option::Option) -> vortex_error::VortexResult -pub vortex_alp::ALPRDArrayParts::left_parts: vortex_array::array::ArrayRef +impl core::clone::Clone for vortex_alp::ALPRDData -pub vortex_alp::ALPRDArrayParts::left_parts_dictionary: vortex_buffer::buffer::Buffer +pub fn vortex_alp::ALPRDData::clone(&self) -> vortex_alp::ALPRDData -pub vortex_alp::ALPRDArrayParts::left_parts_patches: core::option::Option +impl core::convert::From for vortex_array::array::erased::ArrayRef -pub vortex_alp::ALPRDArrayParts::right_parts: vortex_array::array::ArrayRef +pub fn vortex_array::array::erased::ArrayRef::from(value: vortex_alp::ALPRDData) -> vortex_array::array::erased::ArrayRef -impl core::clone::Clone for vortex_alp::ALPRDArrayParts +impl core::fmt::Debug for vortex_alp::ALPRDData -pub fn vortex_alp::ALPRDArrayParts::clone(&self) -> vortex_alp::ALPRDArrayParts +pub fn vortex_alp::ALPRDData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::fmt::Debug for vortex_alp::ALPRDArrayParts +impl vortex_array::array::IntoArray for vortex_alp::ALPRDData -pub fn vortex_alp::ALPRDArrayParts::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_alp::ALPRDData::into_array(self) -> vortex_array::array::erased::ArrayRef pub struct vortex_alp::ALPRDMetadata @@ -400,7 +398,7 @@ pub struct vortex_alp::RDEncoder impl vortex_alp::RDEncoder -pub fn vortex_alp::RDEncoder::encode(&self, array: &vortex_array::arrays::primitive::array::PrimitiveArray) -> vortex_alp::ALPRDArray +pub fn vortex_alp::RDEncoder::encode(&self, array: &vortex_array::arrays::primitive::vtable::PrimitiveArray) -> vortex_alp::ALPRDArray pub fn vortex_alp::RDEncoder::from_parts(right_bit_width: u8, codes: alloc::vec::Vec) -> Self @@ -580,10 +578,14 @@ pub fn f64::to_bits(value: Self) -> Self::UINT pub fn f64::to_u16(bits: Self::UINT) -> u16 -pub fn vortex_alp::alp_encode(parray: &vortex_array::arrays::primitive::array::PrimitiveArray, exponents: core::option::Option) -> vortex_error::VortexResult +pub fn vortex_alp::alp_encode(parray: &vortex_array::arrays::primitive::vtable::PrimitiveArray, exponents: core::option::Option) -> vortex_error::VortexResult pub fn vortex_alp::alp_rd_decode(left_parts: vortex_buffer::buffer_mut::BufferMut, left_parts_dict: &[u16], right_bit_width: u8, right_parts: vortex_buffer::buffer_mut::BufferMut<::UINT>, left_parts_patches: core::option::Option, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_alp::decompress_into_array(array: vortex_alp::ALPArray, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_alp::decompress_into_array(array: vortex_alp::ALPArray, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_alp::initialize(session: &mut vortex_session::VortexSession) + +pub type vortex_alp::ALPArray = vortex_array::array::typed::Array + +pub type vortex_alp::ALPRDArray = vortex_array::array::typed::Array diff --git a/encodings/alp/src/alp/array.rs b/encodings/alp/src/alp/array.rs index eb71ebbd6a1..a5930c9b1ce 100644 --- a/encodings/alp/src/alp/array.rs +++ b/encodings/alp/src/alp/array.rs @@ -3,13 +3,14 @@ use std::fmt::Debug; use std::hash::Hash; -use std::sync::Arc; +use vortex_array::Array; use vortex_array::ArrayEq; use vortex_array::ArrayHash; +use vortex_array::ArrayId; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::DeserializeMetadata; -use vortex_array::DynArray; use vortex_array::ExecutionCtx; use vortex_array::ExecutionResult; use vortex_array::IntoArray; @@ -26,10 +27,7 @@ use vortex_array::require_child; use vortex_array::require_patches; use vortex_array::serde::ArrayChildren; use vortex_array::stats::ArrayStats; -use vortex_array::stats::StatsSetRef; use vortex_array::vtable; -use vortex_array::vtable::Array; -use vortex_array::vtable::ArrayId; use vortex_array::vtable::VTable; use vortex_array::vtable::ValidityChild; use vortex_array::vtable::ValidityVTableFromChild; @@ -46,16 +44,16 @@ use crate::alp::decompress::execute_decompress; use crate::alp::rules::PARENT_KERNELS; use crate::alp::rules::RULES; -vtable!(ALP); +vtable!(ALP, ALP, ALPData); impl VTable for ALP { - type Array = ALPArray; + type ArrayData = ALPData; type Metadata = ProstMetadata; type OperationsVTable = Self; type ValidityVTable = ValidityVTableFromChild; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &Self::ArrayData) -> &Self { &ALP } @@ -63,71 +61,43 @@ impl VTable for ALP { Self::ID } - fn len(array: &ALPArray) -> usize { + fn len(array: &ALPData) -> usize { array.encoded().len() } - fn dtype(array: &ALPArray) -> &DType { + fn dtype(array: &ALPData) -> &DType { &array.dtype } - fn stats(array: &ALPArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &ALPData) -> &ArrayStats { + &array.stats_set } - fn array_hash(array: &ALPArray, state: &mut H, precision: Precision) { - array.dtype.hash(state); + fn array_hash(array: &ALPData, state: &mut H, precision: Precision) { array.encoded().array_hash(state, precision); array.exponents.hash(state); array.patches().array_hash(state, precision); } - fn array_eq(array: &ALPArray, other: &ALPArray, precision: Precision) -> bool { - array.dtype == other.dtype - && array.encoded().array_eq(other.encoded(), precision) + fn array_eq(array: &ALPData, other: &ALPData, precision: Precision) -> bool { + array.encoded().array_eq(other.encoded(), precision) && array.exponents == other.exponents && array.patches().array_eq(&other.patches(), precision) } - fn nbuffers(_array: &ALPArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 0 } - fn buffer(_array: &ALPArray, idx: usize) -> BufferHandle { + fn buffer(_array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { vortex_panic!("ALPArray buffer index {idx} out of bounds") } - fn buffer_name(_array: &ALPArray, _idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, _idx: usize) -> Option { None } - fn slots(array: &ALPArray) -> &[Option] { - &array.slots - } - - fn slot_name(_array: &ALPArray, idx: usize) -> String { - SLOT_NAMES[idx].to_string() - } - - fn with_slots(array: &mut ALPArray, slots: Vec>) -> VortexResult<()> { - vortex_ensure!( - slots.len() == NUM_SLOTS, - "ALPArray expects {} slots, got {}", - NUM_SLOTS, - slots.len() - ); - - // If patch slots are being cleared, clear the metadata too - if slots[PATCH_INDICES_SLOT].is_none() || slots[PATCH_VALUES_SLOT].is_none() { - array.patch_offset = None; - array.patch_offset_within_chunk = None; - } - - array.slots = slots; - Ok(()) - } - - fn metadata(array: &ALPArray) -> VortexResult { + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { let exponents = array.exponents(); Ok(ProstMetadata(ALPMetadata { exp_e: exponents.e as u32, @@ -161,7 +131,7 @@ impl VTable for ALP { metadata: &Self::Metadata, _buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { let encoded_ptype = match &dtype { DType::Primitive(PType::F32, n) => DType::Primitive(PType::I32, *n), DType::Primitive(PType::F64, n) => DType::Primitive(PType::I64, *n), @@ -183,7 +153,7 @@ impl VTable for ALP { }) .transpose()?; - ALPArray::try_new( + ALPData::try_new( encoded, Exponents { e: u8::try_from(metadata.exp_e)?, @@ -193,7 +163,33 @@ impl VTable for ALP { ) } - fn execute(array: Arc>, ctx: &mut ExecutionCtx) -> VortexResult { + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots + } + + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { + SLOT_NAMES[idx].to_string() + } + + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { + vortex_ensure!( + slots.len() == NUM_SLOTS, + "ALPArray expects {} slots, got {}", + NUM_SLOTS, + slots.len() + ); + + // If patch slots are being cleared, clear the metadata too + if slots[PATCH_INDICES_SLOT].is_none() || slots[PATCH_VALUES_SLOT].is_none() { + array.patch_offset = None; + array.patch_offset_within_chunk = None; + }; + + array.slots = slots; + Ok(()) + } + + fn execute(array: Array, ctx: &mut ExecutionCtx) -> VortexResult { let array = require_child!(array, array.encoded(), ENCODED_SLOT => Primitive); require_patches!( array, @@ -204,12 +200,12 @@ impl VTable for ALP { ); Ok(ExecutionResult::done( - execute_decompress(Arc::unwrap_or_clone(array).into_inner(), ctx)?.into_array(), + execute_decompress(array, ctx)?.into_array(), )) } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { @@ -217,7 +213,7 @@ impl VTable for ALP { } fn execute_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, @@ -243,8 +239,8 @@ pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = [ ]; #[derive(Clone, Debug)] -pub struct ALPArray { - slots: Vec>, +pub struct ALPData { + pub(super) slots: Vec>, patch_offset: Option, patch_offset_within_chunk: Option, dtype: DType, @@ -269,7 +265,7 @@ pub struct ALPMetadata { pub(crate) patches: Option, } -impl ALPArray { +impl ALPData { fn validate( encoded: &ArrayRef, exponents: Exponents, @@ -341,10 +337,10 @@ impl ALPArray { } } -impl ALPArray { +impl ALPData { /// Build a new `ALPArray` from components, panicking on validation failure. /// - /// See [`ALPArray::try_new`] for reference on preconditions that must pass before + /// See [`ALPData::try_new`] for reference on preconditions that must pass before /// calling this method. pub fn new(encoded: ArrayRef, exponents: Exponents, patches: Option) -> Self { Self::try_new(encoded, exponents, patches).vortex_expect("ALPArray new") @@ -372,12 +368,12 @@ impl ALPArray { /// # Examples /// /// ``` - /// # use vortex_alp::{ALPArray, Exponents}; + /// # use vortex_alp::{ALPData, ALPArray, Exponents}; /// # use vortex_array::IntoArray; /// # use vortex_buffer::buffer; /// /// // Returns error because buffer has wrong PType. - /// let result = ALPArray::try_new( + /// let result = ALPData::try_new( /// buffer![1i8].into_array(), /// Exponents { e: 1, f: 1 }, /// None @@ -385,7 +381,7 @@ impl ALPArray { /// assert!(result.is_err()); /// /// // Returns error because Exponents are out of bounds for f32 - /// let result = ALPArray::try_new( + /// let result = ALPData::try_new( /// buffer![1i32, 2i32].into_array(), /// Exponents { e: 100, f: 100 }, /// None @@ -393,11 +389,11 @@ impl ALPArray { /// assert!(result.is_err()); /// /// // Success! - /// let value = ALPArray::try_new( + /// let value = ALPArray::try_from_data(ALPData::try_new( /// buffer![0i32].into_array(), /// Exponents { e: 1, f: 1 }, /// None - /// ).unwrap(); + /// ).unwrap()).unwrap(); /// /// assert_eq!(value.scalar_at(0).unwrap(), 0f32.into()); /// ``` @@ -432,7 +428,7 @@ impl ALPArray { /// Build a new `ALPArray` from components without validation. /// - /// See [`ALPArray::try_new`] for information about the preconditions that should be checked + /// See [`ALPData::try_new`] for information about the preconditions that should be checked /// **before** calling this method. pub(crate) unsafe fn new_unchecked( encoded: ArrayRef, @@ -455,6 +451,51 @@ impl ALPArray { stats_set: Default::default(), } } +} + +/// Constructors for [`ALPArray`]. +impl ALP { + pub fn new(encoded: ArrayRef, exponents: Exponents, patches: Option) -> ALPArray { + Array::try_from_data(ALPData::new(encoded, exponents, patches)) + .vortex_expect("ALPData is always valid") + } + + pub fn try_new( + encoded: ArrayRef, + exponents: Exponents, + patches: Option, + ) -> VortexResult { + Array::try_from_data(ALPData::try_new(encoded, exponents, patches)?) + } + + /// # Safety + /// See [`ALPData::try_new`] for preconditions. + pub unsafe fn new_unchecked( + encoded: ArrayRef, + exponents: Exponents, + patches: Option, + dtype: DType, + ) -> ALPArray { + Array::try_from_data(unsafe { ALPData::new_unchecked(encoded, exponents, patches, dtype) }) + .vortex_expect("ALPData is always valid") + } +} + +impl ALPData { + /// Returns the number of elements in the array. + pub fn len(&self) -> usize { + self.encoded().len() + } + + /// Returns `true` if the array contains no elements. + pub fn is_empty(&self) -> bool { + self.encoded().len() == 0 + } + + /// Returns the logical data type of the array. + pub fn dtype(&self) -> &DType { + &self.dtype + } fn make_slots(encoded: &ArrayRef, patches: &Option) -> Vec> { let (patch_indices, patch_values, patch_chunk_offsets) = match patches { @@ -524,7 +565,7 @@ impl ALPArray { } impl ValidityChild for ALP { - fn validity_child(array: &ALPArray) -> &ArrayRef { + fn validity_child(array: &ALPData) -> &ArrayRef { array.encoded() } } @@ -843,11 +884,12 @@ mod tests { .unwrap(); // Build a new ALPArray with the same encoded data but patches without chunk_offsets. - let alp_without_chunk_offsets = ALPArray::new( + let alp_without_chunk_offsets = ALPArray::try_from_data(ALPData::new( normally_encoded.encoded().clone(), normally_encoded.exponents(), Some(patches_without_chunk_offsets), - ); + )) + .vortex_expect("ALPData is always valid"); // The legacy decompress_into_array path should work correctly. let result_legacy = decompress_into_array( diff --git a/encodings/alp/src/alp/compress.rs b/encodings/alp/src/alp/compress.rs index aaea9563fa0..e8992c7a2a4 100644 --- a/encodings/alp/src/alp/compress.rs +++ b/encodings/alp/src/alp/compress.rs @@ -14,6 +14,7 @@ use vortex_error::VortexResult; use vortex_error::vortex_bail; use vortex_mask::Mask; +use crate::ALP; use crate::Exponents; use crate::alp::ALPArray; use crate::alp::ALPFloat; @@ -47,7 +48,7 @@ pub fn alp_encode(parray: &PrimitiveArray, exponents: Option) -> Vort // SAFETY: alp_encode_components_typed must return well-formed components unsafe { - Ok(ALPArray::new_unchecked( + Ok(ALP::new_unchecked( encoded, exponents, patches, @@ -238,7 +239,7 @@ mod tests { let original = PrimitiveArray::new(buffer![195.26274f64, PI, -48.815685], Validity::AllInvalid); let alp_arr = alp_encode(&original, None).unwrap(); - let decompressed = alp_arr.to_primitive(); + let decompressed = alp_arr.into_array().to_primitive(); assert_eq!( // The second and third values become exceptions and are replaced @@ -256,7 +257,7 @@ mod tests { Validity::NonNullable, ); let encoded = alp_encode(&original, None).unwrap(); - let decoded = encoded.to_primitive(); + let decoded = encoded.as_array().to_primitive(); for idx in 0..original.len() { let decoded_val = decoded.as_slice::()[idx]; let original_val = original.as_slice::()[idx]; diff --git a/encodings/alp/src/alp/compute/between.rs b/encodings/alp/src/alp/compute/between.rs index 2963007ac76..ff0b4da8943 100644 --- a/encodings/alp/src/alp/compute/between.rs +++ b/encodings/alp/src/alp/compute/between.rs @@ -4,6 +4,7 @@ use std::fmt::Debug; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::arrays::ConstantArray; use vortex_array::builtins::ArrayBuiltins; @@ -17,13 +18,12 @@ use vortex_array::scalar_fn::fns::between::StrictComparison; use vortex_error::VortexResult; use crate::ALP; -use crate::ALPArray; use crate::ALPFloat; use crate::match_each_alp_float_ptype; impl BetweenReduce for ALP { fn between( - array: &ALPArray, + array: ArrayView<'_, Self>, lower: &ArrayRef, upper: &ArrayRef, options: &BetweenOptions, @@ -52,7 +52,7 @@ impl BetweenReduce for ALP { } fn between_impl( - array: &ALPArray, + array: ArrayView<'_, ALP>, lower: T, upper: T, nullability: Nullability, @@ -111,7 +111,8 @@ mod tests { options: &BetweenOptions, expected: bool, ) { - let res = between_impl(arr, lower, upper, Nullability::Nullable, options).unwrap(); + let res = + between_impl(arr.as_view(), lower, upper, Nullability::Nullable, options).unwrap(); assert_arrays_eq!(res, BoolArray::from_iter([Some(expected)])); } diff --git a/encodings/alp/src/alp/compute/cast.rs b/encodings/alp/src/alp/compute/cast.rs index 3185c69d66c..ebca5e3fe0f 100644 --- a/encodings/alp/src/alp/compute/cast.rs +++ b/encodings/alp/src/alp/compute/cast.rs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::builtins::ArrayBuiltins; use vortex_array::dtype::DType; @@ -10,10 +11,9 @@ use vortex_array::scalar_fn::fns::cast::CastReduce; use vortex_error::VortexResult; use crate::alp::ALP; -use crate::alp::ALPArray; impl CastReduce for ALP { - fn cast(array: &ALPArray, dtype: &DType) -> VortexResult> { + fn cast(array: ArrayView<'_, Self>, dtype: &DType) -> VortexResult> { // Check if this is just a nullability change if array.dtype().eq_ignore_nullability(dtype) { // For nullability-only changes, we can avoid decoding @@ -45,13 +45,8 @@ impl CastReduce for ALP { // SAFETY: casting nullability doesn't alter the invariants unsafe { Ok(Some( - ALPArray::new_unchecked( - new_encoded, - array.exponents(), - new_patches, - dtype.clone(), - ) - .into_array(), + ALP::new_unchecked(new_encoded, array.exponents(), new_patches, dtype.clone()) + .into_array(), )) } } else { diff --git a/encodings/alp/src/alp/compute/compare.rs b/encodings/alp/src/alp/compute/compare.rs index 4b42f1dbd52..867a14db79a 100644 --- a/encodings/alp/src/alp/compute/compare.rs +++ b/encodings/alp/src/alp/compute/compare.rs @@ -4,7 +4,7 @@ use std::fmt::Debug; use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::ConstantArray; @@ -19,7 +19,6 @@ use vortex_error::vortex_bail; use vortex_error::vortex_err; use crate::ALP; -use crate::ALPArray; use crate::ALPFloat; use crate::match_each_alp_float_ptype; @@ -27,7 +26,7 @@ use crate::match_each_alp_float_ptype; impl CompareKernel for ALP { fn compare( - lhs: &ALPArray, + lhs: ArrayView<'_, Self>, rhs: &ArrayRef, operator: CompareOperator, _ctx: &mut ExecutionCtx, @@ -70,7 +69,7 @@ impl CompareKernel for ALP { /// the encoded value to the encoded values in the ALPArray. There are fixups when the value doesn't /// encode into the ALP domain. fn alp_scalar_compare>( - alp: &ALPArray, + alp: ArrayView, value: F, operator: CompareOperator, ) -> VortexResult> @@ -168,7 +167,7 @@ mod tests { use crate::alp_encode; fn test_alp_compare>( - alp: &ALPArray, + alp: ArrayView, value: F, operator: CompareOperator, ) -> Option @@ -189,13 +188,13 @@ mod tests { vec![1234; 1025] ); - let r = alp_scalar_compare(&encoded, 1.3_f32, CompareOperator::Eq) + let r = alp_scalar_compare(encoded.as_view(), 1.3_f32, CompareOperator::Eq) .unwrap() .unwrap(); let expected = BoolArray::from_iter([false; 1025]); assert_arrays_eq!(r, expected); - let r = alp_scalar_compare(&encoded, 1.234f32, CompareOperator::Eq) + let r = alp_scalar_compare(encoded.as_view(), 1.234f32, CompareOperator::Eq) .unwrap() .unwrap(); let expected = BoolArray::from_iter([true; 1025]); @@ -213,14 +212,14 @@ mod tests { ); #[allow(clippy::excessive_precision)] - let r_eq = alp_scalar_compare(&encoded, 1.234444_f32, CompareOperator::Eq) + let r_eq = alp_scalar_compare(encoded.as_view(), 1.234444_f32, CompareOperator::Eq) .unwrap() .unwrap(); let expected = BoolArray::from_iter([false; 1025]); assert_arrays_eq!(r_eq, expected); #[allow(clippy::excessive_precision)] - let r_neq = alp_scalar_compare(&encoded, 1.234444f32, CompareOperator::NotEq) + let r_neq = alp_scalar_compare(encoded.as_view(), 1.234444f32, CompareOperator::NotEq) .unwrap() .unwrap(); let expected = BoolArray::from_iter([true; 1025]); @@ -238,28 +237,28 @@ mod tests { ); // !(0.0605_f32 >= 0.06051_f32); - let r_gte = alp_scalar_compare(&encoded, 0.06051_f32, CompareOperator::Gte) + let r_gte = alp_scalar_compare(encoded.as_view(), 0.06051_f32, CompareOperator::Gte) .unwrap() .unwrap(); let expected = BoolArray::from_iter([false; 10]); assert_arrays_eq!(r_gte, expected); // (0.0605_f32 > 0.06051_f32); - let r_gt = alp_scalar_compare(&encoded, 0.06051_f32, CompareOperator::Gt) + let r_gt = alp_scalar_compare(encoded.as_view(), 0.06051_f32, CompareOperator::Gt) .unwrap() .unwrap(); let expected = BoolArray::from_iter([false; 10]); assert_arrays_eq!(r_gt, expected); // 0.0605_f32 <= 0.06051_f32; - let r_lte = alp_scalar_compare(&encoded, 0.06051_f32, CompareOperator::Lte) + let r_lte = alp_scalar_compare(encoded.as_view(), 0.06051_f32, CompareOperator::Lte) .unwrap() .unwrap(); let expected = BoolArray::from_iter([true; 10]); assert_arrays_eq!(r_lte, expected); //0.0605_f32 < 0.06051_f32; - let r_lt = alp_scalar_compare(&encoded, 0.06051_f32, CompareOperator::Lt) + let r_lt = alp_scalar_compare(encoded.as_view(), 0.06051_f32, CompareOperator::Lt) .unwrap() .unwrap(); let expected = BoolArray::from_iter([true; 10]); @@ -276,31 +275,33 @@ mod tests { vec![0; 10] ); - let r_gte = test_alp_compare(&encoded, -0.00000001_f32, CompareOperator::Gte).unwrap(); + let r_gte = + test_alp_compare(encoded.as_view(), -0.00000001_f32, CompareOperator::Gte).unwrap(); let expected = BoolArray::from_iter([true; 10]); assert_arrays_eq!(r_gte, expected); - let r_gte = test_alp_compare(&encoded, -0.0_f32, CompareOperator::Gte).unwrap(); + let r_gte = test_alp_compare(encoded.as_view(), -0.0_f32, CompareOperator::Gte).unwrap(); let expected = BoolArray::from_iter([true; 10]); assert_arrays_eq!(r_gte, expected); - let r_gt = test_alp_compare(&encoded, -0.0000000001f32, CompareOperator::Gt).unwrap(); + let r_gt = + test_alp_compare(encoded.as_view(), -0.0000000001f32, CompareOperator::Gt).unwrap(); let expected = BoolArray::from_iter([true; 10]); assert_arrays_eq!(r_gt, expected); - let r_gte = test_alp_compare(&encoded, -0.0_f32, CompareOperator::Gt).unwrap(); + let r_gte = test_alp_compare(encoded.as_view(), -0.0_f32, CompareOperator::Gt).unwrap(); let expected = BoolArray::from_iter([true; 10]); assert_arrays_eq!(r_gte, expected); - let r_lte = test_alp_compare(&encoded, 0.06051_f32, CompareOperator::Lte).unwrap(); + let r_lte = test_alp_compare(encoded.as_view(), 0.06051_f32, CompareOperator::Lte).unwrap(); let expected = BoolArray::from_iter([true; 10]); assert_arrays_eq!(r_lte, expected); - let r_lt = test_alp_compare(&encoded, 0.06051_f32, CompareOperator::Lt).unwrap(); + let r_lt = test_alp_compare(encoded.as_view(), 0.06051_f32, CompareOperator::Lt).unwrap(); let expected = BoolArray::from_iter([true; 10]); assert_arrays_eq!(r_lt, expected); - let r_lt = test_alp_compare(&encoded, -0.00001_f32, CompareOperator::Lt).unwrap(); + let r_lt = test_alp_compare(encoded.as_view(), -0.00001_f32, CompareOperator::Lt).unwrap(); let expected = BoolArray::from_iter([false; 10]); assert_arrays_eq!(r_lt, expected); } @@ -314,7 +315,7 @@ mod tests { // Not supported! assert!( - alp_scalar_compare(&encoded, 1_000_000.9_f32, CompareOperator::Eq) + alp_scalar_compare(encoded.as_view(), 1_000_000.9_f32, CompareOperator::Eq) .unwrap() .is_none() ) @@ -348,7 +349,7 @@ mod tests { let array = PrimitiveArray::from_iter([1.234f32; 10]); let encoded = alp_encode(&array, None).unwrap(); - let r = test_alp_compare(&encoded, value, CompareOperator::Gt).unwrap(); + let r = test_alp_compare(encoded.as_view(), value, CompareOperator::Gt).unwrap(); let expected = BoolArray::from_iter([result; 10]); assert_arrays_eq!(r, expected); } @@ -362,7 +363,7 @@ mod tests { let array = PrimitiveArray::from_iter([1.234f32; 10]); let encoded = alp_encode(&array, None).unwrap(); - let r = test_alp_compare(&encoded, value, CompareOperator::Lt).unwrap(); + let r = test_alp_compare(encoded.as_view(), value, CompareOperator::Lt).unwrap(); let expected = BoolArray::from_iter([result; 10]); assert_arrays_eq!(r, expected); } diff --git a/encodings/alp/src/alp/compute/filter.rs b/encodings/alp/src/alp/compute/filter.rs index cfe00c2e1ae..a4e3c4371d9 100644 --- a/encodings/alp/src/alp/compute/filter.rs +++ b/encodings/alp/src/alp/compute/filter.rs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::filter::FilterKernel; @@ -9,11 +10,10 @@ use vortex_error::VortexResult; use vortex_mask::Mask; use crate::ALP; -use crate::ALPArray; impl FilterKernel for ALP { fn filter( - array: &ALPArray, + array: ArrayView<'_, Self>, mask: &Mask, ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -26,7 +26,7 @@ impl FilterKernel for ALP { // SAFETY: filtering the values does not change correctness unsafe { Ok(Some( - ALPArray::new_unchecked( + ALP::new_unchecked( array.encoded().filter(mask.clone())?, array.exponents(), patches, diff --git a/encodings/alp/src/alp/compute/mask.rs b/encodings/alp/src/alp/compute/mask.rs index d4f63475c9e..9325fa56042 100644 --- a/encodings/alp/src/alp/compute/mask.rs +++ b/encodings/alp/src/alp/compute/mask.rs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::builtins::ArrayBuiltins; @@ -11,24 +12,23 @@ use vortex_array::validity::Validity; use vortex_error::VortexResult; use crate::ALP; -use crate::ALPArray; impl MaskReduce for ALP { - fn mask(array: &ALPArray, mask: &ArrayRef) -> VortexResult> { + fn mask(array: ArrayView<'_, Self>, mask: &ArrayRef) -> VortexResult> { // Masking sparse patches requires reading indices, fall back to kernel. if array.patches().is_some() { return Ok(None); } let masked_encoded = array.encoded().clone().mask(mask.clone())?; Ok(Some( - ALPArray::new(masked_encoded, array.exponents(), None).into_array(), + ALP::new(masked_encoded, array.exponents(), None).into_array(), )) } } impl MaskKernel for ALP { fn mask( - array: &ALPArray, + array: ArrayView<'_, Self>, mask: &ArrayRef, ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -40,7 +40,7 @@ impl MaskKernel for ALP { .transpose()? .flatten(); Ok(Some( - ALPArray::new(masked_encoded, array.exponents(), masked_patches).into_array(), + ALP::new(masked_encoded, array.exponents(), masked_patches).into_array(), )) } } diff --git a/encodings/alp/src/alp/compute/slice.rs b/encodings/alp/src/alp/compute/slice.rs index f7e2a7bdfde..9ebf0926d1e 100644 --- a/encodings/alp/src/alp/compute/slice.rs +++ b/encodings/alp/src/alp/compute/slice.rs @@ -4,21 +4,21 @@ use std::ops::Range; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::slice::SliceKernel; use vortex_error::VortexResult; use crate::ALP; -use crate::ALPArray; impl SliceKernel for ALP { fn slice( - array: &Self::Array, + array: ArrayView<'_, Self>, range: Range, _ctx: &mut ExecutionCtx, ) -> VortexResult> { - let sliced_alp = ALPArray::new( + let sliced_alp = ALP::new( array.encoded().slice(range.clone())?, array.exponents(), array diff --git a/encodings/alp/src/alp/compute/take.rs b/encodings/alp/src/alp/compute/take.rs index 15d32a5acc0..77d161737c3 100644 --- a/encodings/alp/src/alp/compute/take.rs +++ b/encodings/alp/src/alp/compute/take.rs @@ -2,22 +2,21 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::dict::TakeExecute; use vortex_error::VortexResult; use crate::ALP; -use crate::ALPArray; impl TakeExecute for ALP { fn take( - array: &ALPArray, + array: ArrayView<'_, Self>, indices: &ArrayRef, ctx: &mut ExecutionCtx, ) -> VortexResult> { - let taken_encoded = array.encoded().take(indices.to_array())?; + let taken_encoded = array.encoded().take(indices.clone())?; let taken_patches = array .patches() .map(|p| p.take(indices, ctx)) @@ -32,7 +31,7 @@ impl TakeExecute for ALP { }) .transpose()?; Ok(Some( - ALPArray::new(taken_encoded, array.exponents(), taken_patches).into_array(), + ALP::new(taken_encoded, array.exponents(), taken_patches).into_array(), )) } } diff --git a/encodings/alp/src/alp/decompress.rs b/encodings/alp/src/alp/decompress.rs index 7320cddf1db..0e7c1a5e7a0 100644 --- a/encodings/alp/src/alp/decompress.rs +++ b/encodings/alp/src/alp/decompress.rs @@ -27,7 +27,7 @@ pub fn decompress_into_array( array: ALPArray, ctx: &mut ExecutionCtx, ) -> VortexResult { - let (encoded, exponents, patches, dtype) = array.into_parts(); + let (encoded, exponents, patches, dtype) = array.into_data().into_parts(); if let Some(ref patches) = patches && let Some(chunk_offsets) = patches.chunk_offsets() { @@ -59,7 +59,7 @@ pub fn decompress_into_array( /// /// A `PrimitiveArray` containing the decompressed floating-point values with all patches applied. pub fn execute_decompress(array: ALPArray, ctx: &mut ExecutionCtx) -> VortexResult { - let (encoded, exponents, patches, dtype) = array.into_parts(); + let (encoded, exponents, patches, dtype) = array.into_data().into_parts(); if let Some(ref patches) = patches && let Some(chunk_offsets) = patches.chunk_offsets() { diff --git a/encodings/alp/src/alp/ops.rs b/encodings/alp/src/alp/ops.rs index 2877e2cb264..9538e3c60a1 100644 --- a/encodings/alp/src/alp/ops.rs +++ b/encodings/alp/src/alp/ops.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::scalar::Scalar; use vortex_array::vtable::OperationsVTable; @@ -8,12 +9,15 @@ use vortex_error::VortexExpect; use vortex_error::VortexResult; use crate::ALP; -use crate::ALPArray; use crate::ALPFloat; use crate::match_each_alp_float_ptype; impl OperationsVTable for ALP { - fn scalar_at(array: &ALPArray, index: usize, _ctx: &mut ExecutionCtx) -> VortexResult { + fn scalar_at( + array: ArrayView<'_, ALP>, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { if let Some(patches) = array.patches() && let Some(patch) = patches.get_patched(index)? { diff --git a/encodings/alp/src/alp_rd/array.rs b/encodings/alp/src/alp_rd/array.rs index 4986bb3abb1..eca56a97a37 100644 --- a/encodings/alp/src/alp_rd/array.rs +++ b/encodings/alp/src/alp_rd/array.rs @@ -3,14 +3,15 @@ use std::fmt::Debug; use std::hash::Hash; -use std::sync::Arc; use itertools::Itertools; +use vortex_array::Array; use vortex_array::ArrayEq; use vortex_array::ArrayHash; +use vortex_array::ArrayId; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::DeserializeMetadata; -use vortex_array::DynArray; use vortex_array::ExecutionCtx; use vortex_array::ExecutionResult; use vortex_array::IntoArray; @@ -29,11 +30,8 @@ use vortex_array::require_child; use vortex_array::require_patches; use vortex_array::serde::ArrayChildren; use vortex_array::stats::ArrayStats; -use vortex_array::stats::StatsSetRef; use vortex_array::validity::Validity; use vortex_array::vtable; -use vortex_array::vtable::Array; -use vortex_array::vtable::ArrayId; use vortex_array::vtable::VTable; use vortex_array::vtable::ValidityChild; use vortex_array::vtable::ValidityVTableFromChild; @@ -50,7 +48,7 @@ use crate::alp_rd::kernel::PARENT_KERNELS; use crate::alp_rd::rules::RULES; use crate::alp_rd_decode; -vtable!(ALPRD); +vtable!(ALPRD, ALPRD, ALPRDData); #[derive(Clone, prost::Message)] pub struct ALPRDMetadata { @@ -67,13 +65,13 @@ pub struct ALPRDMetadata { } impl VTable for ALPRD { - type Array = ALPRDArray; + type ArrayData = ALPRDData; type Metadata = ProstMetadata; type OperationsVTable = Self; type ValidityVTable = ValidityVTableFromChild; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &Self::ArrayData) -> &Self { &ALPRD } @@ -81,20 +79,19 @@ impl VTable for ALPRD { Self::ID } - fn len(array: &ALPRDArray) -> usize { + fn len(array: &ALPRDData) -> usize { array.left_parts().len() } - fn dtype(array: &ALPRDArray) -> &DType { + fn dtype(array: &ALPRDData) -> &DType { &array.dtype } - fn stats(array: &ALPRDArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &ALPRDData) -> &ArrayStats { + &array.stats_set } - fn array_hash(array: &ALPRDArray, state: &mut H, precision: Precision) { - array.dtype.hash(state); + fn array_hash(array: &ALPRDData, state: &mut H, precision: Precision) { array.left_parts().array_hash(state, precision); array.left_parts_dictionary.array_hash(state, precision); array.right_parts().array_hash(state, precision); @@ -102,9 +99,8 @@ impl VTable for ALPRD { array.left_parts_patches.array_hash(state, precision); } - fn array_eq(array: &ALPRDArray, other: &ALPRDArray, precision: Precision) -> bool { - array.dtype == other.dtype - && array.left_parts().array_eq(other.left_parts(), precision) + fn array_eq(array: &ALPRDData, other: &ALPRDData, precision: Precision) -> bool { + array.left_parts().array_eq(other.left_parts(), precision) && array .left_parts_dictionary .array_eq(&other.left_parts_dictionary, precision) @@ -115,19 +111,19 @@ impl VTable for ALPRD { .array_eq(&other.left_parts_patches, precision) } - fn nbuffers(_array: &ALPRDArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 0 } - fn buffer(_array: &ALPRDArray, idx: usize) -> BufferHandle { + fn buffer(_array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { vortex_panic!("ALPRDArray buffer index {idx} out of bounds") } - fn buffer_name(_array: &ALPRDArray, _idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, _idx: usize) -> Option { None } - fn metadata(array: &ALPRDArray) -> VortexResult { + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { let dict = array .left_parts_dictionary() .iter() @@ -168,7 +164,7 @@ impl VTable for ALPRD { metadata: &Self::Metadata, _buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { if children.len() < 2 { vortex_bail!( "Expected at least 2 children for ALPRD encoding, found {}", @@ -216,7 +212,7 @@ impl VTable for ALPRD { }) .transpose()?; - ALPRDArray::try_new( + ALPRDData::try_new( dtype.clone(), left_parts, left_parts_dictionary, @@ -231,15 +227,15 @@ impl VTable for ALPRD { ) } - fn slots(array: &ALPRDArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &ALPRDArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn with_slots(array: &mut ALPRDArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "ALPRDArray expects {} slots, got {}", @@ -269,7 +265,7 @@ impl VTable for ALPRD { Ok(()) } - fn execute(array: Arc>, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, ctx: &mut ExecutionCtx) -> VortexResult { let array = require_child!(array, array.left_parts(), 0 => Primitive); let array = require_child!(array, array.right_parts(), 1 => Primitive); require_patches!( @@ -288,7 +284,7 @@ impl VTable for ALPRD { left_parts_patches, dtype, .. - } = Arc::unwrap_or_clone(array).into_inner().into_parts(); + } = array.into_data().into_parts(); let ptype = dtype.as_ptype(); let left_parts = left_parts @@ -334,7 +330,7 @@ impl VTable for ALPRD { } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { @@ -342,7 +338,7 @@ impl VTable for ALPRD { } fn execute_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, @@ -371,7 +367,7 @@ pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = [ ]; #[derive(Clone, Debug)] -pub struct ALPRDArray { +pub struct ALPRDData { dtype: DType, slots: Vec>, left_parts_patches: Option, @@ -394,9 +390,50 @@ pub struct ALPRD; impl ALPRD { pub const ID: ArrayId = ArrayId::new_ref("vortex.alprd"); + + pub fn try_new( + dtype: DType, + left_parts: ArrayRef, + left_parts_dictionary: Buffer, + right_parts: ArrayRef, + right_bit_width: u8, + left_parts_patches: Option, + ) -> VortexResult { + Array::try_from_data(ALPRDData::try_new( + dtype, + left_parts, + left_parts_dictionary, + right_parts, + right_bit_width, + left_parts_patches, + )?) + } + + /// # Safety + /// See [`ALPRDData::try_new`] for preconditions. + pub unsafe fn new_unchecked( + dtype: DType, + left_parts: ArrayRef, + left_parts_dictionary: Buffer, + right_parts: ArrayRef, + right_bit_width: u8, + left_parts_patches: Option, + ) -> ALPRDArray { + Array::try_from_data(unsafe { + ALPRDData::new_unchecked( + dtype, + left_parts, + left_parts_dictionary, + right_parts, + right_bit_width, + left_parts_patches, + ) + }) + .vortex_expect("ALPRDData is always valid") + } } -impl ALPRDArray { +impl ALPRDData { /// Build a new `ALPRDArray` from components. pub fn try_new( dtype: DType, @@ -524,6 +561,21 @@ impl ALPRDArray { } } + /// Returns the number of elements in the array. + pub fn len(&self) -> usize { + self.left_parts().len() + } + + /// Returns `true` if the array contains no elements. + pub fn is_empty(&self) -> bool { + self.left_parts().len() == 0 + } + + /// Returns the logical data type of the array. + pub fn dtype(&self) -> &DType { + &self.dtype + } + /// Returns true if logical type of the array values is f32. /// /// Returns false if the logical type of the array values is f64. @@ -583,7 +635,7 @@ impl ALPRDArray { } impl ValidityChild for ALPRD { - fn validity_child(array: &ALPRDArray) -> &ArrayRef { + fn validity_child(array: &ALPRDData) -> &ArrayRef { array.left_parts() } } @@ -625,7 +677,7 @@ mod test { let rd_array = encoder.encode(&real_array); - let decoded = rd_array.to_primitive(); + let decoded = rd_array.as_array().to_primitive(); assert_arrays_eq!(decoded, PrimitiveArray::from_option_iter(reals)); } diff --git a/encodings/alp/src/alp_rd/compute/cast.rs b/encodings/alp/src/alp_rd/compute/cast.rs index a1441d6e416..2919a22294a 100644 --- a/encodings/alp/src/alp_rd/compute/cast.rs +++ b/encodings/alp/src/alp_rd/compute/cast.rs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::builtins::ArrayBuiltins; use vortex_array::dtype::DType; @@ -9,10 +10,9 @@ use vortex_array::scalar_fn::fns::cast::CastReduce; use vortex_error::VortexResult; use crate::alp_rd::ALPRD; -use crate::alp_rd::ALPRDArray; impl CastReduce for ALPRD { - fn cast(array: &ALPRDArray, dtype: &DType) -> VortexResult> { + fn cast(array: ArrayView<'_, Self>, dtype: &DType) -> VortexResult> { // ALPRDArray stores floating-point values, so only cast between float types // or if just changing nullability @@ -28,7 +28,7 @@ impl CastReduce for ALPRD { )?; return Ok(Some( - ALPRDArray::try_new( + ALPRD::try_new( dtype.clone(), new_left_parts, array.left_parts_dictionary().clone(), diff --git a/encodings/alp/src/alp_rd/compute/filter.rs b/encodings/alp/src/alp_rd/compute/filter.rs index f45740c9b4e..b6bf409d90c 100644 --- a/encodings/alp/src/alp_rd/compute/filter.rs +++ b/encodings/alp/src/alp_rd/compute/filter.rs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::filter::FilterKernel; @@ -9,11 +10,10 @@ use vortex_error::VortexResult; use vortex_mask::Mask; use crate::ALPRD; -use crate::ALPRDArray; impl FilterKernel for ALPRD { fn filter( - array: &ALPRDArray, + array: ArrayView<'_, Self>, mask: &Mask, ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -24,7 +24,7 @@ impl FilterKernel for ALPRD { .flatten(); Ok(Some( - ALPRDArray::try_new( + ALPRD::try_new( array.dtype().clone(), array.left_parts().filter(mask.clone())?, array.left_parts_dictionary().clone(), diff --git a/encodings/alp/src/alp_rd/compute/mask.rs b/encodings/alp/src/alp_rd/compute/mask.rs index 6126eeef301..066760c1165 100644 --- a/encodings/alp/src/alp_rd/compute/mask.rs +++ b/encodings/alp/src/alp_rd/compute/mask.rs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::arrays::scalar_fn::ScalarFnArrayExt; use vortex_array::scalar_fn::EmptyOptions; @@ -10,17 +11,16 @@ use vortex_array::scalar_fn::fns::mask::MaskReduce; use vortex_error::VortexResult; use crate::ALPRD; -use crate::ALPRDArray; impl MaskReduce for ALPRD { - fn mask(array: &ALPRDArray, mask: &ArrayRef) -> VortexResult> { + fn mask(array: ArrayView<'_, Self>, mask: &ArrayRef) -> VortexResult> { let masked_left_parts = MaskExpr.try_new_array( array.left_parts().len(), EmptyOptions, [array.left_parts().clone(), mask.clone()], )?; Ok(Some( - ALPRDArray::try_new( + ALPRD::try_new( array.dtype().as_nullable(), masked_left_parts, array.left_parts_dictionary().clone(), diff --git a/encodings/alp/src/alp_rd/compute/take.rs b/encodings/alp/src/alp_rd/compute/take.rs index a7b8a85ece8..16e73487d0e 100644 --- a/encodings/alp/src/alp_rd/compute/take.rs +++ b/encodings/alp/src/alp_rd/compute/take.rs @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::dict::TakeExecute; @@ -11,15 +11,14 @@ use vortex_array::scalar::Scalar; use vortex_error::VortexResult; use crate::ALPRD; -use crate::ALPRDArray; impl TakeExecute for ALPRD { fn take( - array: &ALPRDArray, + array: ArrayView<'_, Self>, indices: &ArrayRef, ctx: &mut ExecutionCtx, ) -> VortexResult> { - let taken_left_parts = array.left_parts().take(indices.to_array())?; + let taken_left_parts = array.left_parts().take(indices.clone())?; let left_parts_exceptions = array .left_parts_patches() .map(|patches| patches.take(indices, ctx)) @@ -35,11 +34,11 @@ impl TakeExecute for ALPRD { .transpose()?; let right_parts = array .right_parts() - .take(indices.to_array())? + .take(indices.clone())? .fill_null(Scalar::zero_value(array.right_parts().dtype()))?; Ok(Some( - ALPRDArray::try_new( + ALPRD::try_new( array .dtype() .with_nullability(taken_left_parts.dtype().nullability()), diff --git a/encodings/alp/src/alp_rd/mod.rs b/encodings/alp/src/alp_rd/mod.rs index 2ba30885342..d1bf8b9cdc8 100644 --- a/encodings/alp/src/alp_rd/mod.rs +++ b/encodings/alp/src/alp_rd/mod.rs @@ -25,7 +25,6 @@ use num_traits::Float; use num_traits::One; use num_traits::PrimInt; use rustc_hash::FxBuildHasher; -use vortex_array::DynArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::dtype::DType; use vortex_array::dtype::NativePType; @@ -272,7 +271,7 @@ impl RDEncoder { .vortex_expect("Patches construction in encode") }); - ALPRDArray::try_new( + ALPRD::try_new( DType::Primitive(T::PTYPE, packed_left.dtype().nullability()), packed_left, Buffer::::copy_from(&self.codes), diff --git a/encodings/alp/src/alp_rd/ops.rs b/encodings/alp/src/alp_rd/ops.rs index e27434a7979..63dc3fc5d89 100644 --- a/encodings/alp/src/alp_rd/ops.rs +++ b/encodings/alp/src/alp_rd/ops.rs @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::scalar::Scalar; use vortex_array::vtable::OperationsVTable; @@ -9,11 +9,10 @@ use vortex_error::VortexExpect; use vortex_error::VortexResult; use crate::ALPRD; -use crate::ALPRDArray; impl OperationsVTable for ALPRD { fn scalar_at( - array: &ALPRDArray, + array: ArrayView<'_, ALPRD>, index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { diff --git a/encodings/alp/src/alp_rd/slice.rs b/encodings/alp/src/alp_rd/slice.rs index be6fc803be3..8f716a0070b 100644 --- a/encodings/alp/src/alp_rd/slice.rs +++ b/encodings/alp/src/alp_rd/slice.rs @@ -4,17 +4,17 @@ use std::ops::Range; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::slice::SliceKernel; use vortex_error::VortexResult; use crate::alp_rd::ALPRD; -use crate::alp_rd::ALPRDArray; impl SliceKernel for ALPRD { fn slice( - array: &Self::Array, + array: ArrayView<'_, Self>, range: Range, _ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -26,7 +26,7 @@ impl SliceKernel for ALPRD { // SAFETY: slicing components does not change the encoded values Ok(Some(unsafe { - ALPRDArray::new_unchecked( + ALPRD::new_unchecked( array.dtype().clone(), array.left_parts().slice(range.clone())?, array.left_parts_dictionary().clone(), diff --git a/encodings/bytebool/Cargo.toml b/encodings/bytebool/Cargo.toml index 53197452ff5..bca2ed71aa9 100644 --- a/encodings/bytebool/Cargo.toml +++ b/encodings/bytebool/Cargo.toml @@ -21,6 +21,7 @@ num-traits = { workspace = true } vortex-array = { workspace = true } vortex-buffer = { workspace = true } vortex-error = { workspace = true } +vortex-mask = { workspace = true } vortex-session = { workspace = true } [dev-dependencies] diff --git a/encodings/bytebool/public-api.lock b/encodings/bytebool/public-api.lock index dc9c43f62b8..5f05421a6d6 100644 --- a/encodings/bytebool/public-api.lock +++ b/encodings/bytebool/public-api.lock @@ -4,7 +4,9 @@ pub struct vortex_bytebool::ByteBool impl vortex_bytebool::ByteBool -pub const vortex_bytebool::ByteBool::ID: vortex_array::vtable::dyn_::ArrayId +pub const vortex_bytebool::ByteBool::ID: vortex_array::array::ArrayId + +pub fn vortex_bytebool::ByteBool::from_vec>(data: alloc::vec::Vec, validity: V) -> vortex_bytebool::ByteBoolArray impl core::clone::Clone for vortex_bytebool::ByteBool @@ -14,126 +16,122 @@ impl core::fmt::Debug for vortex_bytebool::ByteBool pub fn vortex_bytebool::ByteBool::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::take::TakeExecute for vortex_bytebool::ByteBool +impl vortex_array::array::vtable::VTable for vortex_bytebool::ByteBool -pub fn vortex_bytebool::ByteBool::take(array: &vortex_bytebool::ByteBoolArray, indices: &vortex_array::array::ArrayRef, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub type vortex_bytebool::ByteBool::ArrayData = vortex_bytebool::ByteBoolData -impl vortex_array::arrays::slice::SliceReduce for vortex_bytebool::ByteBool - -pub fn vortex_bytebool::ByteBool::slice(array: &vortex_bytebool::ByteBoolArray, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub type vortex_bytebool::ByteBool::Metadata = vortex_array::metadata::EmptyMetadata -impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_bytebool::ByteBool +pub type vortex_bytebool::ByteBool::OperationsVTable = vortex_bytebool::ByteBool -pub fn vortex_bytebool::ByteBool::cast(array: &vortex_bytebool::ByteBoolArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub type vortex_bytebool::ByteBool::ValidityVTable = vortex_array::array::vtable::validity::ValidityVTableFromValidityHelper -impl vortex_array::scalar_fn::fns::mask::kernel::MaskReduce for vortex_bytebool::ByteBool +pub fn vortex_bytebool::ByteBool::array_eq(array: &vortex_bytebool::ByteBoolData, other: &vortex_bytebool::ByteBoolData, precision: vortex_array::hash::Precision) -> bool -pub fn vortex_bytebool::ByteBool::mask(array: &vortex_bytebool::ByteBoolArray, mask: &vortex_array::array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_bytebool::ByteBool::array_hash(array: &vortex_bytebool::ByteBoolData, state: &mut H, precision: vortex_array::hash::Precision) -impl vortex_array::vtable::VTable for vortex_bytebool::ByteBool +pub fn vortex_bytebool::ByteBool::buffer(array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub type vortex_bytebool::ByteBool::Array = vortex_bytebool::ByteBoolArray +pub fn vortex_bytebool::ByteBool::buffer_name(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub type vortex_bytebool::ByteBool::Metadata = vortex_array::metadata::EmptyMetadata +pub fn vortex_bytebool::ByteBool::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub type vortex_bytebool::ByteBool::OperationsVTable = vortex_bytebool::ByteBool - -pub type vortex_bytebool::ByteBool::ValidityVTable = vortex_array::vtable::validity::ValidityVTableFromValidityHelper +pub fn vortex_bytebool::ByteBool::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_bytebool::ByteBool::array_eq(array: &vortex_bytebool::ByteBoolArray, other: &vortex_bytebool::ByteBoolArray, precision: vortex_array::hash::Precision) -> bool +pub fn vortex_bytebool::ByteBool::dtype(array: &vortex_bytebool::ByteBoolData) -> &vortex_array::dtype::DType -pub fn vortex_bytebool::ByteBool::array_hash(array: &vortex_bytebool::ByteBoolArray, state: &mut H, precision: vortex_array::hash::Precision) +pub fn vortex_bytebool::ByteBool::execute(array: vortex_array::array::typed::Array, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_bytebool::ByteBool::buffer(array: &vortex_bytebool::ByteBoolArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_bytebool::ByteBool::execute_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_bytebool::ByteBool::buffer_name(_array: &vortex_bytebool::ByteBoolArray, idx: usize) -> core::option::Option +pub fn vortex_bytebool::ByteBool::id(&self) -> vortex_array::array::ArrayId -pub fn vortex_bytebool::ByteBool::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_bytebool::ByteBool::len(array: &vortex_bytebool::ByteBoolData) -> usize -pub fn vortex_bytebool::ByteBool::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_bytebool::ByteBool::metadata(_array: vortex_array::array::view::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_bytebool::ByteBool::dtype(array: &vortex_bytebool::ByteBoolArray) -> &vortex_array::dtype::DType +pub fn vortex_bytebool::ByteBool::nbuffers(_array: vortex_array::array::view::ArrayView<'_, Self>) -> usize -pub fn vortex_bytebool::ByteBool::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_bytebool::ByteBool::reduce_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_bytebool::ByteBool::execute_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_bytebool::ByteBool::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_bytebool::ByteBool::id(&self) -> vortex_array::vtable::dyn_::ArrayId +pub fn vortex_bytebool::ByteBool::slot_name(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_bytebool::ByteBool::len(array: &vortex_bytebool::ByteBoolArray) -> usize +pub fn vortex_bytebool::ByteBool::slots(array: vortex_array::array::view::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_bytebool::ByteBool::metadata(_array: &vortex_bytebool::ByteBoolArray) -> vortex_error::VortexResult +pub fn vortex_bytebool::ByteBool::stats(array: &vortex_bytebool::ByteBoolData) -> &vortex_array::stats::array::ArrayStats -pub fn vortex_bytebool::ByteBool::nbuffers(_array: &vortex_bytebool::ByteBoolArray) -> usize +pub fn vortex_bytebool::ByteBool::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_bytebool::ByteBool::reduce_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_bytebool::ByteBool::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_bytebool::ByteBool::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +impl vortex_array::array::vtable::operations::OperationsVTable for vortex_bytebool::ByteBool -pub fn vortex_bytebool::ByteBool::slot_name(_array: &vortex_bytebool::ByteBoolArray, idx: usize) -> alloc::string::String +pub fn vortex_bytebool::ByteBool::scalar_at(array: vortex_array::array::view::ArrayView<'_, vortex_bytebool::ByteBool>, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_bytebool::ByteBool::slots(array: &vortex_bytebool::ByteBoolArray) -> &[core::option::Option] +impl vortex_array::arrays::dict::take::TakeExecute for vortex_bytebool::ByteBool -pub fn vortex_bytebool::ByteBool::stats(array: &vortex_bytebool::ByteBoolArray) -> vortex_array::stats::array::StatsSetRef<'_> +pub fn vortex_bytebool::ByteBool::take(array: vortex_array::array::view::ArrayView<'_, Self>, indices: &vortex_array::array::erased::ArrayRef, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_bytebool::ByteBool::vtable(_array: &Self::Array) -> &Self +impl vortex_array::arrays::slice::SliceReduce for vortex_bytebool::ByteBool -pub fn vortex_bytebool::ByteBool::with_slots(array: &mut vortex_bytebool::ByteBoolArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_bytebool::ByteBool::slice(array: vortex_array::array::view::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -impl vortex_array::vtable::operations::OperationsVTable for vortex_bytebool::ByteBool +impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_bytebool::ByteBool -pub fn vortex_bytebool::ByteBool::scalar_at(array: &vortex_bytebool::ByteBoolArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_bytebool::ByteBool::cast(array: vortex_array::array::view::ArrayView<'_, Self>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub struct vortex_bytebool::ByteBoolArray +impl vortex_array::scalar_fn::fns::mask::kernel::MaskReduce for vortex_bytebool::ByteBool -impl vortex_bytebool::ByteBoolArray +pub fn vortex_bytebool::ByteBool::mask(array: vortex_array::array::view::ArrayView<'_, Self>, mask: &vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_bytebool::ByteBoolArray::as_slice(&self) -> &[bool] +pub struct vortex_bytebool::ByteBoolData -pub fn vortex_bytebool::ByteBoolArray::buffer(&self) -> &vortex_array::buffer::BufferHandle +impl vortex_bytebool::ByteBoolData -pub fn vortex_bytebool::ByteBoolArray::from_vec>(data: alloc::vec::Vec, validity: V) -> Self +pub fn vortex_bytebool::ByteBoolData::as_slice(&self) -> &[bool] -pub fn vortex_bytebool::ByteBoolArray::new(buffer: vortex_array::buffer::BufferHandle, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_bytebool::ByteBoolData::buffer(&self) -> &vortex_array::buffer::BufferHandle -impl vortex_bytebool::ByteBoolArray +pub fn vortex_bytebool::ByteBoolData::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_bytebool::ByteBoolArray::to_array(&self) -> vortex_array::array::ArrayRef +pub fn vortex_bytebool::ByteBoolData::from_vec>(data: alloc::vec::Vec, validity: V) -> Self -impl core::clone::Clone for vortex_bytebool::ByteBoolArray +pub fn vortex_bytebool::ByteBoolData::is_empty(&self) -> bool -pub fn vortex_bytebool::ByteBoolArray::clone(&self) -> vortex_bytebool::ByteBoolArray +pub fn vortex_bytebool::ByteBoolData::len(&self) -> usize -impl core::convert::AsRef for vortex_bytebool::ByteBoolArray +pub fn vortex_bytebool::ByteBoolData::new(buffer: vortex_array::buffer::BufferHandle, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_bytebool::ByteBoolArray::as_ref(&self) -> &dyn vortex_array::array::DynArray +pub fn vortex_bytebool::ByteBoolData::validity_mask(&self) -> vortex_mask::Mask -impl core::convert::From> for vortex_bytebool::ByteBoolArray +impl core::clone::Clone for vortex_bytebool::ByteBoolData -pub fn vortex_bytebool::ByteBoolArray::from(value: alloc::vec::Vec) -> Self +pub fn vortex_bytebool::ByteBoolData::clone(&self) -> vortex_bytebool::ByteBoolData -impl core::convert::From>> for vortex_bytebool::ByteBoolArray +impl core::convert::From> for vortex_bytebool::ByteBoolData -pub fn vortex_bytebool::ByteBoolArray::from(value: alloc::vec::Vec>) -> Self +pub fn vortex_bytebool::ByteBoolData::from(value: alloc::vec::Vec) -> Self -impl core::convert::From for vortex_array::array::ArrayRef +impl core::convert::From>> for vortex_bytebool::ByteBoolData -pub fn vortex_array::array::ArrayRef::from(value: vortex_bytebool::ByteBoolArray) -> vortex_array::array::ArrayRef +pub fn vortex_bytebool::ByteBoolData::from(value: alloc::vec::Vec>) -> Self -impl core::fmt::Debug for vortex_bytebool::ByteBoolArray +impl core::convert::From for vortex_array::array::erased::ArrayRef -pub fn vortex_bytebool::ByteBoolArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::array::erased::ArrayRef::from(value: vortex_bytebool::ByteBoolData) -> vortex_array::array::erased::ArrayRef -impl core::ops::deref::Deref for vortex_bytebool::ByteBoolArray +impl core::fmt::Debug for vortex_bytebool::ByteBoolData -pub type vortex_bytebool::ByteBoolArray::Target = dyn vortex_array::array::DynArray +pub fn vortex_bytebool::ByteBoolData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_bytebool::ByteBoolArray::deref(&self) -> &Self::Target +impl vortex_array::array::IntoArray for vortex_bytebool::ByteBoolData -impl vortex_array::array::IntoArray for vortex_bytebool::ByteBoolArray +pub fn vortex_bytebool::ByteBoolData::into_array(self) -> vortex_array::array::erased::ArrayRef -pub fn vortex_bytebool::ByteBoolArray::into_array(self) -> vortex_array::array::ArrayRef +impl vortex_array::array::vtable::validity::ValidityHelper for vortex_bytebool::ByteBoolData -impl vortex_array::vtable::validity::ValidityHelper for vortex_bytebool::ByteBoolArray +pub fn vortex_bytebool::ByteBoolData::validity(&self) -> &vortex_array::validity::Validity -pub fn vortex_bytebool::ByteBoolArray::validity(&self) -> vortex_array::validity::Validity +pub type vortex_bytebool::ByteBoolArray = vortex_array::array::typed::Array diff --git a/encodings/bytebool/src/array.rs b/encodings/bytebool/src/array.rs index dd59ac06e93..04744355a11 100644 --- a/encodings/bytebool/src/array.rs +++ b/encodings/bytebool/src/array.rs @@ -2,12 +2,13 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use std::fmt::Debug; -use std::hash::Hash; -use std::sync::Arc; +use vortex_array::Array; use vortex_array::ArrayEq; use vortex_array::ArrayHash; +use vortex_array::ArrayId; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::EmptyMetadata; use vortex_array::ExecutionCtx; use vortex_array::ExecutionResult; @@ -19,11 +20,8 @@ use vortex_array::dtype::DType; use vortex_array::scalar::Scalar; use vortex_array::serde::ArrayChildren; use vortex_array::stats::ArrayStats; -use vortex_array::stats::StatsSetRef; use vortex_array::validity::Validity; use vortex_array::vtable; -use vortex_array::vtable::Array; -use vortex_array::vtable::ArrayId; use vortex_array::vtable::OperationsVTable; use vortex_array::vtable::VTable; use vortex_array::vtable::ValidityHelper; @@ -31,24 +29,26 @@ use vortex_array::vtable::ValidityVTableFromValidityHelper; use vortex_array::vtable::validity_to_child; use vortex_buffer::BitBuffer; use vortex_buffer::ByteBuffer; +use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_error::vortex_bail; use vortex_error::vortex_ensure; use vortex_error::vortex_panic; +use vortex_mask::Mask; use vortex_session::VortexSession; use crate::kernel::PARENT_KERNELS; -vtable!(ByteBool); +vtable!(ByteBool, ByteBool, ByteBoolData); impl VTable for ByteBool { - type Array = ByteBoolArray; + type ArrayData = ByteBoolData; type Metadata = EmptyMetadata; type OperationsVTable = Self; type ValidityVTable = ValidityVTableFromValidityHelper; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &Self::ArrayData) -> &Self { &ByteBool } @@ -56,53 +56,47 @@ impl VTable for ByteBool { Self::ID } - fn len(array: &ByteBoolArray) -> usize { + fn len(array: &ByteBoolData) -> usize { array.buffer.len() } - fn dtype(array: &ByteBoolArray) -> &DType { + fn dtype(array: &ByteBoolData) -> &DType { &array.dtype } - fn stats(array: &ByteBoolArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &ByteBoolData) -> &ArrayStats { + &array.stats_set } - fn array_hash( - array: &ByteBoolArray, - state: &mut H, - precision: Precision, - ) { - array.dtype.hash(state); + fn array_hash(array: &ByteBoolData, state: &mut H, precision: Precision) { array.buffer.array_hash(state, precision); array.validity.array_hash(state, precision); } - fn array_eq(array: &ByteBoolArray, other: &ByteBoolArray, precision: Precision) -> bool { - array.dtype == other.dtype - && array.buffer.array_eq(&other.buffer, precision) + fn array_eq(array: &ByteBoolData, other: &ByteBoolData, precision: Precision) -> bool { + array.buffer.array_eq(&other.buffer, precision) && array.validity.array_eq(&other.validity, precision) } - fn nbuffers(_array: &ByteBoolArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 1 } - fn buffer(array: &ByteBoolArray, idx: usize) -> BufferHandle { + fn buffer(array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { match idx { 0 => array.buffer().clone(), _ => vortex_panic!("ByteBoolArray buffer index {idx} out of bounds"), } } - fn buffer_name(_array: &ByteBoolArray, idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, idx: usize) -> Option { match idx { 0 => Some("values".to_string()), _ => vortex_panic!("ByteBoolArray buffer_name index {idx} out of bounds"), } } - fn metadata(_array: &ByteBoolArray) -> VortexResult { + fn metadata(_array: ArrayView<'_, Self>) -> VortexResult { Ok(EmptyMetadata) } @@ -126,7 +120,7 @@ impl VTable for ByteBool { _metadata: &Self::Metadata, buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { let validity = if children.is_empty() { Validity::from(dtype.nullability()) } else if children.len() == 1 { @@ -141,18 +135,18 @@ impl VTable for ByteBool { } let buffer = buffers[0].clone(); - Ok(ByteBoolArray::new(buffer, validity)) + Ok(ByteBoolData::new(buffer, validity)) } - fn slots(array: &ByteBoolArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &ByteBoolArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn with_slots(array: &mut ByteBoolArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "ByteBoolArray expects {} slots, got {}", @@ -168,23 +162,23 @@ impl VTable for ByteBool { } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { crate::rules::RULES.evaluate(array, parent, child_idx) } - fn execute(array: Arc>, _ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, _ctx: &mut ExecutionCtx) -> VortexResult { let boolean_buffer = BitBuffer::from(array.as_slice()); - let validity = array.validity(); + let validity = array.validity().clone(); Ok(ExecutionResult::done( BoolArray::new(boolean_buffer, validity).into_array(), )) } fn execute_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, @@ -199,7 +193,7 @@ pub(super) const NUM_SLOTS: usize = 1; pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["validity"]; #[derive(Clone, Debug)] -pub struct ByteBoolArray { +pub struct ByteBoolData { dtype: DType, buffer: BufferHandle, validity: Validity, @@ -212,9 +206,15 @@ pub struct ByteBool; impl ByteBool { pub const ID: ArrayId = ArrayId::new_ref("vortex.bytebool"); + + /// Construct a [`ByteBoolArray`] from a `Vec` and validity. + pub fn from_vec>(data: Vec, validity: V) -> ByteBoolArray { + Array::try_from_data(ByteBoolData::from_vec(data, validity)) + .vortex_expect("ByteBoolData is always valid") + } } -impl ByteBoolArray { +impl ByteBoolData { fn make_slots(validity: &Validity, len: usize) -> Vec> { vec![validity_to_child(validity, len)] } @@ -240,6 +240,26 @@ impl ByteBoolArray { } } + /// Returns the number of elements in the array. + pub fn len(&self) -> usize { + self.buffer.len() + } + + /// Returns `true` if the array contains no elements. + pub fn is_empty(&self) -> bool { + self.buffer.len() == 0 + } + + /// Returns the logical data type of the array. + pub fn dtype(&self) -> &DType { + &self.dtype + } + + /// Returns the validity mask for this array. + pub fn validity_mask(&self) -> Mask { + self.validity.to_mask(self.len()) + } + // TODO(ngates): deprecate construction from vec pub fn from_vec>(data: Vec, validity: V) -> Self { let validity = validity.into(); @@ -258,15 +278,15 @@ impl ByteBoolArray { } } -impl ValidityHelper for ByteBoolArray { - fn validity(&self) -> Validity { - self.validity.clone() +impl ValidityHelper for ByteBoolData { + fn validity(&self) -> &Validity { + &self.validity } } impl OperationsVTable for ByteBool { fn scalar_at( - array: &ByteBoolArray, + array: ArrayView<'_, ByteBool>, index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { @@ -277,13 +297,13 @@ impl OperationsVTable for ByteBool { } } -impl From> for ByteBoolArray { +impl From> for ByteBoolData { fn from(value: Vec) -> Self { Self::from_vec(value, Validity::AllValid) } } -impl From>> for ByteBoolArray { +impl From>> for ByteBoolData { fn from(value: Vec>) -> Self { let validity = Validity::from_iter(value.iter().map(|v| v.is_some())); @@ -314,7 +334,8 @@ mod tests { let v = vec![true, false]; let v_len = v.len(); - let arr = ByteBoolArray::from(v); + let arr = ByteBoolArray::try_from_data(ByteBoolData::from(v)) + .vortex_expect("ByteBoolData is always valid"); assert_eq!(v_len, arr.len()); for idx in 0..arr.len() { @@ -322,7 +343,8 @@ mod tests { } let v = vec![Some(true), None, Some(false)]; - let arr = ByteBoolArray::from(v); + let arr = ByteBoolArray::try_from_data(ByteBoolData::from(v)) + .vortex_expect("ByteBoolData is always valid"); assert!(arr.is_valid(0).unwrap()); assert!(!arr.is_valid(1).unwrap()); assert!(arr.is_valid(2).unwrap()); @@ -331,7 +353,8 @@ mod tests { let v: Vec> = vec![None, None]; let v_len = v.len(); - let arr = ByteBoolArray::from(v); + let arr = ByteBoolArray::try_from_data(ByteBoolData::from(v)) + .vortex_expect("ByteBoolData is always valid"); assert_eq!(v_len, arr.len()); for idx in 0..arr.len() { @@ -342,7 +365,13 @@ mod tests { #[test] fn test_nullable_bytebool_serde_roundtrip() { - let array = ByteBoolArray::from(vec![Some(true), None, Some(false), None]); + let array = ByteBoolArray::try_from_data(ByteBoolData::from(vec![ + Some(true), + None, + Some(false), + None, + ])) + .unwrap(); let dtype = array.dtype().clone(); let len = array.len(); let session = VortexSession::empty().with::(); diff --git a/encodings/bytebool/src/compute.rs b/encodings/bytebool/src/compute.rs index ac7e6a23b61..a44f30cce0c 100644 --- a/encodings/bytebool/src/compute.rs +++ b/encodings/bytebool/src/compute.rs @@ -3,6 +3,7 @@ use num_traits::AsPrimitive; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::PrimitiveArray; @@ -12,14 +13,13 @@ use vortex_array::match_each_integer_ptype; use vortex_array::scalar_fn::fns::cast::CastReduce; use vortex_array::scalar_fn::fns::mask::MaskReduce; use vortex_array::validity::Validity; -use vortex_array::vtable::ValidityHelper; use vortex_error::VortexResult; use super::ByteBool; -use super::ByteBoolArray; +use super::ByteBoolData; impl CastReduce for ByteBool { - fn cast(array: &ByteBoolArray, dtype: &DType) -> VortexResult> { + fn cast(array: ArrayView<'_, Self>, dtype: &DType) -> VortexResult> { // ByteBool is essentially a bool array stored as bytes // The main difference from BoolArray is the storage format // For casting, we can decode to canonical (BoolArray) and let it handle the cast @@ -28,10 +28,11 @@ impl CastReduce for ByteBool { if array.dtype().eq_ignore_nullability(dtype) { let new_validity = array .validity() + .clone() .cast_nullability(dtype.nullability(), array.len())?; return Ok(Some( - ByteBoolArray::new(array.buffer().clone(), new_validity).into_array(), + ByteBoolData::new(array.buffer().clone(), new_validity).into_array(), )); } @@ -41,11 +42,14 @@ impl CastReduce for ByteBool { } impl MaskReduce for ByteBool { - fn mask(array: &ByteBoolArray, mask: &ArrayRef) -> VortexResult> { + fn mask(array: ArrayView<'_, Self>, mask: &ArrayRef) -> VortexResult> { Ok(Some( - ByteBoolArray::new( + ByteBoolData::new( array.buffer().clone(), - array.validity().and(Validity::Array(mask.clone()))?, + array + .validity() + .clone() + .and(Validity::Array(mask.clone()))?, ) .into_array(), )) @@ -54,7 +58,7 @@ impl MaskReduce for ByteBool { impl TakeExecute for ByteBool { fn take( - array: &ByteBoolArray, + array: ArrayView<'_, Self>, indices: &ArrayRef, ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -76,7 +80,7 @@ impl TakeExecute for ByteBool { }); Ok(Some( - ByteBoolArray::from_vec(taken_bools, validity).into_array(), + ByteBoolData::from_vec(taken_bools, validity).into_array(), )) } } @@ -94,97 +98,102 @@ mod tests { use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; use vortex_array::scalar_fn::fns::operators::Operator; + use vortex_error::VortexExpect; use super::*; + use crate::ByteBoolArray; + + fn bb(v: Vec) -> ByteBoolArray { + ByteBoolArray::try_from_data(ByteBoolData::from(v)) + .vortex_expect("ByteBoolData is always valid") + } + + fn bb_opt(v: Vec>) -> ByteBoolArray { + ByteBoolArray::try_from_data(ByteBoolData::from(v)) + .vortex_expect("ByteBoolData is always valid") + } #[test] fn test_slice() { let original = vec![Some(true), Some(true), None, Some(false), None]; - let vortex_arr = ByteBoolArray::from(original); + let vortex_arr = bb_opt(original); let sliced_arr = vortex_arr.slice(1..4).unwrap(); - let expected = ByteBoolArray::from(vec![Some(true), None, Some(false)]); + let expected = bb_opt(vec![Some(true), None, Some(false)]); assert_arrays_eq!(sliced_arr, expected.into_array()); } #[test] fn test_compare_all_equal() { - let lhs = ByteBoolArray::from(vec![true; 5]); - let rhs = ByteBoolArray::from(vec![true; 5]); + let lhs = bb(vec![true; 5]); + let rhs = bb(vec![true; 5]); let arr = lhs .into_array() .binary(rhs.into_array(), Operator::Eq) .unwrap(); - let expected = ByteBoolArray::from(vec![true; 5]); + let expected = bb(vec![true; 5]); assert_arrays_eq!(arr, expected.into_array()); } #[test] fn test_compare_all_different() { - let lhs = ByteBoolArray::from(vec![false; 5]); - let rhs = ByteBoolArray::from(vec![true; 5]); + let lhs = bb(vec![false; 5]); + let rhs = bb(vec![true; 5]); let arr = lhs .into_array() .binary(rhs.into_array(), Operator::Eq) .unwrap(); - let expected = ByteBoolArray::from(vec![false; 5]); + let expected = bb(vec![false; 5]); assert_arrays_eq!(arr, expected.into_array()); } #[test] fn test_compare_with_nulls() { - let lhs = ByteBoolArray::from(vec![true; 5]); - let rhs = ByteBoolArray::from(vec![Some(true), Some(true), Some(true), Some(false), None]); + let lhs = bb(vec![true; 5]); + let rhs = bb_opt(vec![Some(true), Some(true), Some(true), Some(false), None]); let arr = lhs .into_array() .binary(rhs.into_array(), Operator::Eq) .unwrap(); - let expected = - ByteBoolArray::from(vec![Some(true), Some(true), Some(true), Some(false), None]); + let expected = bb_opt(vec![Some(true), Some(true), Some(true), Some(false), None]); assert_arrays_eq!(arr, expected.into_array()); } #[test] fn test_mask_byte_bool() { + test_mask_conformance(&bb(vec![true, false, true, true, false]).into_array()); test_mask_conformance( - &ByteBoolArray::from(vec![true, false, true, true, false]).into_array(), - ); - test_mask_conformance( - &ByteBoolArray::from(vec![Some(true), Some(true), None, Some(false), None]) - .into_array(), + &bb_opt(vec![Some(true), Some(true), None, Some(false), None]).into_array(), ); } #[test] fn test_filter_byte_bool() { + test_filter_conformance(&bb(vec![true, false, true, true, false]).into_array()); test_filter_conformance( - &ByteBoolArray::from(vec![true, false, true, true, false]).into_array(), - ); - test_filter_conformance( - &ByteBoolArray::from(vec![Some(true), Some(true), None, Some(false), None]) - .into_array(), + &bb_opt(vec![Some(true), Some(true), None, Some(false), None]).into_array(), ); } #[rstest] - #[case(ByteBoolArray::from(vec![true, false, true, true, false]))] - #[case(ByteBoolArray::from(vec![Some(true), Some(true), None, Some(false), None]))] - #[case(ByteBoolArray::from(vec![true, false]))] - #[case(ByteBoolArray::from(vec![true]))] + #[case(bb(vec![true, false, true, true, false]))] + #[case(bb_opt(vec![Some(true), Some(true), None, Some(false), None]))] + #[case(bb(vec![true, false]))] + #[case(bb(vec![true]))] fn test_take_byte_bool_conformance(#[case] array: ByteBoolArray) { test_take_conformance(&array.into_array()); } #[test] fn test_cast_bytebool_to_nullable() { - let array = ByteBoolArray::from(vec![true, false, true, false]); + let array = bb(vec![true, false, true, false]); let casted = array .into_array() .cast(DType::Bool(Nullability::Nullable)) @@ -194,24 +203,24 @@ mod tests { } #[rstest] - #[case(ByteBoolArray::from(vec![true, false, true, true, false]))] - #[case(ByteBoolArray::from(vec![Some(true), Some(false), None, Some(true), None]))] - #[case(ByteBoolArray::from(vec![false]))] - #[case(ByteBoolArray::from(vec![true]))] - #[case(ByteBoolArray::from(vec![Some(true), None]))] + #[case(bb(vec![true, false, true, true, false]))] + #[case(bb_opt(vec![Some(true), Some(false), None, Some(true), None]))] + #[case(bb(vec![false]))] + #[case(bb(vec![true]))] + #[case(bb_opt(vec![Some(true), None]))] fn test_cast_bytebool_conformance(#[case] array: ByteBoolArray) { test_cast_conformance(&array.into_array()); } #[rstest] - #[case::non_nullable(ByteBoolArray::from(vec![true, false, true, true, false]))] - #[case::nullable(ByteBoolArray::from(vec![Some(true), Some(false), None, Some(true), None]))] - #[case::all_true(ByteBoolArray::from(vec![true, true, true, true]))] - #[case::all_false(ByteBoolArray::from(vec![false, false, false, false]))] - #[case::single_true(ByteBoolArray::from(vec![true]))] - #[case::single_false(ByteBoolArray::from(vec![false]))] - #[case::single_null(ByteBoolArray::from(vec![None]))] - #[case::mixed_with_nulls(ByteBoolArray::from(vec![Some(true), None, Some(false), None, Some(true)]))] + #[case::non_nullable(bb(vec![true, false, true, true, false]))] + #[case::nullable(bb_opt(vec![Some(true), Some(false), None, Some(true), None]))] + #[case::all_true(bb(vec![true, true, true, true]))] + #[case::all_false(bb(vec![false, false, false, false]))] + #[case::single_true(bb(vec![true]))] + #[case::single_false(bb(vec![false]))] + #[case::single_null(bb_opt(vec![None]))] + #[case::mixed_with_nulls(bb_opt(vec![Some(true), None, Some(false), None, Some(true)]))] fn test_bytebool_consistency(#[case] array: ByteBoolArray) { test_array_consistency(&array.into_array()); } diff --git a/encodings/bytebool/src/slice.rs b/encodings/bytebool/src/slice.rs index c80be024fd1..b5926602808 100644 --- a/encodings/bytebool/src/slice.rs +++ b/encodings/bytebool/src/slice.rs @@ -4,18 +4,18 @@ use std::ops::Range; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::arrays::slice::SliceReduce; -use vortex_array::vtable::ValidityHelper; use vortex_error::VortexResult; use crate::ByteBool; -use crate::ByteBoolArray; +use crate::ByteBoolData; impl SliceReduce for ByteBool { - fn slice(array: &ByteBoolArray, range: Range) -> VortexResult> { + fn slice(array: ArrayView<'_, Self>, range: Range) -> VortexResult> { Ok(Some( - ByteBoolArray::new( + ByteBoolData::new( array.buffer().slice(range.clone()), array.validity().slice(range)?, ) diff --git a/encodings/datetime-parts/public-api.lock b/encodings/datetime-parts/public-api.lock index 3c02c1f94a4..0bb4af9c59b 100644 --- a/encodings/datetime-parts/public-api.lock +++ b/encodings/datetime-parts/public-api.lock @@ -4,7 +4,11 @@ pub struct vortex_datetime_parts::DateTimeParts impl vortex_datetime_parts::DateTimeParts -pub const vortex_datetime_parts::DateTimeParts::ID: vortex_array::vtable::dyn_::ArrayId +pub const vortex_datetime_parts::DateTimeParts::ID: vortex_array::array::ArrayId + +pub fn vortex_datetime_parts::DateTimeParts::try_from_temporal(temporal: vortex_array::arrays::datetime::TemporalArray) -> vortex_error::VortexResult + +pub fn vortex_datetime_parts::DateTimeParts::try_new(dtype: vortex_array::dtype::DType, days: vortex_array::array::erased::ArrayRef, seconds: vortex_array::array::erased::ArrayRef, subseconds: vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult impl core::clone::Clone for vortex_datetime_parts::DateTimeParts @@ -14,155 +18,147 @@ impl core::fmt::Debug for vortex_datetime_parts::DateTimeParts pub fn vortex_datetime_parts::DateTimeParts::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::take::TakeExecute for vortex_datetime_parts::DateTimeParts - -pub fn vortex_datetime_parts::DateTimeParts::take(array: &vortex_datetime_parts::DateTimePartsArray, indices: &vortex_array::array::ArrayRef, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::arrays::filter::kernel::FilterReduce for vortex_datetime_parts::DateTimeParts - -pub fn vortex_datetime_parts::DateTimeParts::filter(array: &vortex_datetime_parts::DateTimePartsArray, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> +impl vortex_array::array::vtable::VTable for vortex_datetime_parts::DateTimeParts -impl vortex_array::arrays::slice::SliceReduce for vortex_datetime_parts::DateTimeParts +pub type vortex_datetime_parts::DateTimeParts::ArrayData = vortex_datetime_parts::DateTimePartsData -pub fn vortex_datetime_parts::DateTimeParts::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::binary::compare::CompareKernel for vortex_datetime_parts::DateTimeParts +pub type vortex_datetime_parts::DateTimeParts::Metadata = vortex_array::metadata::ProstMetadata -pub fn vortex_datetime_parts::DateTimeParts::compare(lhs: &vortex_datetime_parts::DateTimePartsArray, rhs: &vortex_array::array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub type vortex_datetime_parts::DateTimeParts::OperationsVTable = vortex_datetime_parts::DateTimeParts -impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_datetime_parts::DateTimeParts +pub type vortex_datetime_parts::DateTimeParts::ValidityVTable = vortex_array::array::vtable::validity::ValidityVTableFromChild -pub fn vortex_datetime_parts::DateTimeParts::cast(array: &vortex_datetime_parts::DateTimePartsArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_datetime_parts::DateTimeParts::array_eq(array: &vortex_datetime_parts::DateTimePartsData, other: &vortex_datetime_parts::DateTimePartsData, precision: vortex_array::hash::Precision) -> bool -impl vortex_array::scalar_fn::fns::mask::kernel::MaskReduce for vortex_datetime_parts::DateTimeParts +pub fn vortex_datetime_parts::DateTimeParts::array_hash(array: &vortex_datetime_parts::DateTimePartsData, state: &mut H, precision: vortex_array::hash::Precision) -pub fn vortex_datetime_parts::DateTimeParts::mask(array: &vortex_datetime_parts::DateTimePartsArray, mask: &vortex_array::array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_datetime_parts::DateTimeParts::buffer(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -impl vortex_array::vtable::VTable for vortex_datetime_parts::DateTimeParts +pub fn vortex_datetime_parts::DateTimeParts::buffer_name(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub type vortex_datetime_parts::DateTimeParts::Array = vortex_datetime_parts::DateTimePartsArray +pub fn vortex_datetime_parts::DateTimeParts::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub type vortex_datetime_parts::DateTimeParts::Metadata = vortex_array::metadata::ProstMetadata +pub fn vortex_datetime_parts::DateTimeParts::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_datetime_parts::DateTimeParts::OperationsVTable = vortex_datetime_parts::DateTimeParts +pub fn vortex_datetime_parts::DateTimeParts::dtype(array: &vortex_datetime_parts::DateTimePartsData) -> &vortex_array::dtype::DType -pub type vortex_datetime_parts::DateTimeParts::ValidityVTable = vortex_array::vtable::validity::ValidityVTableFromChild +pub fn vortex_datetime_parts::DateTimeParts::execute(array: vortex_array::array::typed::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_datetime_parts::DateTimeParts::array_eq(array: &vortex_datetime_parts::DateTimePartsArray, other: &vortex_datetime_parts::DateTimePartsArray, precision: vortex_array::hash::Precision) -> bool +pub fn vortex_datetime_parts::DateTimeParts::execute_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_datetime_parts::DateTimeParts::array_hash(array: &vortex_datetime_parts::DateTimePartsArray, state: &mut H, precision: vortex_array::hash::Precision) +pub fn vortex_datetime_parts::DateTimeParts::id(&self) -> vortex_array::array::ArrayId -pub fn vortex_datetime_parts::DateTimeParts::buffer(_array: &vortex_datetime_parts::DateTimePartsArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_datetime_parts::DateTimeParts::len(array: &vortex_datetime_parts::DateTimePartsData) -> usize -pub fn vortex_datetime_parts::DateTimeParts::buffer_name(_array: &vortex_datetime_parts::DateTimePartsArray, idx: usize) -> core::option::Option +pub fn vortex_datetime_parts::DateTimeParts::metadata(array: vortex_array::array::view::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_datetime_parts::DateTimeParts::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_datetime_parts::DateTimeParts::nbuffers(_array: vortex_array::array::view::ArrayView<'_, Self>) -> usize -pub fn vortex_datetime_parts::DateTimeParts::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_datetime_parts::DateTimeParts::reduce_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_datetime_parts::DateTimeParts::dtype(array: &vortex_datetime_parts::DateTimePartsArray) -> &vortex_array::dtype::DType +pub fn vortex_datetime_parts::DateTimeParts::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_datetime_parts::DateTimeParts::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_datetime_parts::DateTimeParts::slot_name(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_datetime_parts::DateTimeParts::execute_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_datetime_parts::DateTimeParts::slots(array: vortex_array::array::view::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_datetime_parts::DateTimeParts::id(&self) -> vortex_array::vtable::dyn_::ArrayId +pub fn vortex_datetime_parts::DateTimeParts::stats(array: &vortex_datetime_parts::DateTimePartsData) -> &vortex_array::stats::array::ArrayStats -pub fn vortex_datetime_parts::DateTimeParts::len(array: &vortex_datetime_parts::DateTimePartsArray) -> usize +pub fn vortex_datetime_parts::DateTimeParts::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_datetime_parts::DateTimeParts::metadata(array: &vortex_datetime_parts::DateTimePartsArray) -> vortex_error::VortexResult +pub fn vortex_datetime_parts::DateTimeParts::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_datetime_parts::DateTimeParts::nbuffers(_array: &vortex_datetime_parts::DateTimePartsArray) -> usize +impl vortex_array::array::vtable::operations::OperationsVTable for vortex_datetime_parts::DateTimeParts -pub fn vortex_datetime_parts::DateTimeParts::reduce_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_datetime_parts::DateTimeParts::scalar_at(array: vortex_array::array::view::ArrayView<'_, vortex_datetime_parts::DateTimeParts>, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_datetime_parts::DateTimeParts::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +impl vortex_array::array::vtable::validity::ValidityChild for vortex_datetime_parts::DateTimeParts -pub fn vortex_datetime_parts::DateTimeParts::slot_name(_array: &vortex_datetime_parts::DateTimePartsArray, idx: usize) -> alloc::string::String +pub fn vortex_datetime_parts::DateTimeParts::validity_child(array: &vortex_datetime_parts::DateTimePartsData) -> &vortex_array::array::erased::ArrayRef -pub fn vortex_datetime_parts::DateTimeParts::slots(array: &vortex_datetime_parts::DateTimePartsArray) -> &[core::option::Option] +impl vortex_array::arrays::dict::take::TakeExecute for vortex_datetime_parts::DateTimeParts -pub fn vortex_datetime_parts::DateTimeParts::stats(array: &vortex_datetime_parts::DateTimePartsArray) -> vortex_array::stats::array::StatsSetRef<'_> +pub fn vortex_datetime_parts::DateTimeParts::take(array: vortex_array::array::view::ArrayView<'_, Self>, indices: &vortex_array::array::erased::ArrayRef, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_datetime_parts::DateTimeParts::vtable(_array: &Self::Array) -> &Self +impl vortex_array::arrays::filter::kernel::FilterReduce for vortex_datetime_parts::DateTimeParts -pub fn vortex_datetime_parts::DateTimeParts::with_slots(array: &mut vortex_datetime_parts::DateTimePartsArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_datetime_parts::DateTimeParts::filter(array: vortex_array::array::view::ArrayView<'_, Self>, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> -impl vortex_array::vtable::operations::OperationsVTable for vortex_datetime_parts::DateTimeParts +impl vortex_array::arrays::slice::SliceReduce for vortex_datetime_parts::DateTimeParts -pub fn vortex_datetime_parts::DateTimeParts::scalar_at(array: &vortex_datetime_parts::DateTimePartsArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_datetime_parts::DateTimeParts::slice(array: vortex_array::array::view::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -impl vortex_array::vtable::validity::ValidityChild for vortex_datetime_parts::DateTimeParts +impl vortex_array::scalar_fn::fns::binary::compare::CompareKernel for vortex_datetime_parts::DateTimeParts -pub fn vortex_datetime_parts::DateTimeParts::validity_child(array: &vortex_datetime_parts::DateTimePartsArray) -> &vortex_array::array::ArrayRef +pub fn vortex_datetime_parts::DateTimeParts::compare(lhs: vortex_array::array::view::ArrayView<'_, Self>, rhs: &vortex_array::array::erased::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub struct vortex_datetime_parts::DateTimePartsArray +impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_datetime_parts::DateTimeParts -impl vortex_datetime_parts::DateTimePartsArray +pub fn vortex_datetime_parts::DateTimeParts::cast(array: vortex_array::array::view::ArrayView<'_, Self>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_datetime_parts::DateTimePartsArray::days(&self) -> &vortex_array::array::ArrayRef +impl vortex_array::scalar_fn::fns::mask::kernel::MaskReduce for vortex_datetime_parts::DateTimeParts -pub fn vortex_datetime_parts::DateTimePartsArray::into_parts(self) -> vortex_datetime_parts::DateTimePartsArrayParts +pub fn vortex_datetime_parts::DateTimeParts::mask(array: vortex_array::array::view::ArrayView<'_, Self>, mask: &vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_datetime_parts::DateTimePartsArray::seconds(&self) -> &vortex_array::array::ArrayRef +pub struct vortex_datetime_parts::DateTimePartsArrayParts -pub fn vortex_datetime_parts::DateTimePartsArray::subseconds(&self) -> &vortex_array::array::ArrayRef +pub vortex_datetime_parts::DateTimePartsArrayParts::days: vortex_array::array::erased::ArrayRef -pub fn vortex_datetime_parts::DateTimePartsArray::try_new(dtype: vortex_array::dtype::DType, days: vortex_array::array::ArrayRef, seconds: vortex_array::array::ArrayRef, subseconds: vortex_array::array::ArrayRef) -> vortex_error::VortexResult +pub vortex_datetime_parts::DateTimePartsArrayParts::dtype: vortex_array::dtype::DType -impl vortex_datetime_parts::DateTimePartsArray +pub vortex_datetime_parts::DateTimePartsArrayParts::seconds: vortex_array::array::erased::ArrayRef -pub fn vortex_datetime_parts::DateTimePartsArray::to_array(&self) -> vortex_array::array::ArrayRef +pub vortex_datetime_parts::DateTimePartsArrayParts::subseconds: vortex_array::array::erased::ArrayRef -impl core::clone::Clone for vortex_datetime_parts::DateTimePartsArray +impl core::clone::Clone for vortex_datetime_parts::DateTimePartsArrayParts -pub fn vortex_datetime_parts::DateTimePartsArray::clone(&self) -> vortex_datetime_parts::DateTimePartsArray +pub fn vortex_datetime_parts::DateTimePartsArrayParts::clone(&self) -> vortex_datetime_parts::DateTimePartsArrayParts -impl core::convert::AsRef for vortex_datetime_parts::DateTimePartsArray +impl core::fmt::Debug for vortex_datetime_parts::DateTimePartsArrayParts -pub fn vortex_datetime_parts::DateTimePartsArray::as_ref(&self) -> &dyn vortex_array::array::DynArray +pub fn vortex_datetime_parts::DateTimePartsArrayParts::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::convert::From for vortex_array::array::ArrayRef +pub struct vortex_datetime_parts::DateTimePartsData -pub fn vortex_array::array::ArrayRef::from(value: vortex_datetime_parts::DateTimePartsArray) -> vortex_array::array::ArrayRef +impl vortex_datetime_parts::DateTimePartsData -impl core::convert::TryFrom for vortex_datetime_parts::DateTimePartsArray +pub fn vortex_datetime_parts::DateTimePartsData::days(&self) -> &vortex_array::array::erased::ArrayRef -pub type vortex_datetime_parts::DateTimePartsArray::Error = vortex_error::VortexError +pub fn vortex_datetime_parts::DateTimePartsData::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_datetime_parts::DateTimePartsArray::try_from(array: vortex_array::arrays::datetime::TemporalArray) -> core::result::Result +pub fn vortex_datetime_parts::DateTimePartsData::into_parts(self) -> vortex_datetime_parts::DateTimePartsArrayParts -impl core::fmt::Debug for vortex_datetime_parts::DateTimePartsArray +pub fn vortex_datetime_parts::DateTimePartsData::is_empty(&self) -> bool -pub fn vortex_datetime_parts::DateTimePartsArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_datetime_parts::DateTimePartsData::len(&self) -> usize -impl core::ops::deref::Deref for vortex_datetime_parts::DateTimePartsArray +pub fn vortex_datetime_parts::DateTimePartsData::seconds(&self) -> &vortex_array::array::erased::ArrayRef -pub type vortex_datetime_parts::DateTimePartsArray::Target = dyn vortex_array::array::DynArray +pub fn vortex_datetime_parts::DateTimePartsData::subseconds(&self) -> &vortex_array::array::erased::ArrayRef -pub fn vortex_datetime_parts::DateTimePartsArray::deref(&self) -> &Self::Target +pub fn vortex_datetime_parts::DateTimePartsData::try_new(dtype: vortex_array::dtype::DType, days: vortex_array::array::erased::ArrayRef, seconds: vortex_array::array::erased::ArrayRef, subseconds: vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult -impl vortex_array::array::IntoArray for vortex_datetime_parts::DateTimePartsArray +impl core::clone::Clone for vortex_datetime_parts::DateTimePartsData -pub fn vortex_datetime_parts::DateTimePartsArray::into_array(self) -> vortex_array::array::ArrayRef +pub fn vortex_datetime_parts::DateTimePartsData::clone(&self) -> vortex_datetime_parts::DateTimePartsData -pub struct vortex_datetime_parts::DateTimePartsArrayParts +impl core::convert::From for vortex_array::array::erased::ArrayRef -pub vortex_datetime_parts::DateTimePartsArrayParts::days: vortex_array::array::ArrayRef +pub fn vortex_array::array::erased::ArrayRef::from(value: vortex_datetime_parts::DateTimePartsData) -> vortex_array::array::erased::ArrayRef -pub vortex_datetime_parts::DateTimePartsArrayParts::dtype: vortex_array::dtype::DType +impl core::convert::TryFrom for vortex_datetime_parts::DateTimePartsData -pub vortex_datetime_parts::DateTimePartsArrayParts::seconds: vortex_array::array::ArrayRef +pub type vortex_datetime_parts::DateTimePartsData::Error = vortex_error::VortexError -pub vortex_datetime_parts::DateTimePartsArrayParts::subseconds: vortex_array::array::ArrayRef +pub fn vortex_datetime_parts::DateTimePartsData::try_from(array: vortex_array::arrays::datetime::TemporalArray) -> core::result::Result -impl core::clone::Clone for vortex_datetime_parts::DateTimePartsArrayParts +impl core::fmt::Debug for vortex_datetime_parts::DateTimePartsData -pub fn vortex_datetime_parts::DateTimePartsArrayParts::clone(&self) -> vortex_datetime_parts::DateTimePartsArrayParts +pub fn vortex_datetime_parts::DateTimePartsData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::fmt::Debug for vortex_datetime_parts::DateTimePartsArrayParts +impl vortex_array::array::IntoArray for vortex_datetime_parts::DateTimePartsData -pub fn vortex_datetime_parts::DateTimePartsArrayParts::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_datetime_parts::DateTimePartsData::into_array(self) -> vortex_array::array::erased::ArrayRef #[repr(C)] pub struct vortex_datetime_parts::DateTimePartsMetadata @@ -214,12 +210,14 @@ pub fn vortex_datetime_parts::DateTimePartsMetadata::encoded_len(&self) -> usize pub struct vortex_datetime_parts::TemporalParts -pub vortex_datetime_parts::TemporalParts::days: vortex_array::array::ArrayRef +pub vortex_datetime_parts::TemporalParts::days: vortex_array::array::erased::ArrayRef -pub vortex_datetime_parts::TemporalParts::seconds: vortex_array::array::ArrayRef +pub vortex_datetime_parts::TemporalParts::seconds: vortex_array::array::erased::ArrayRef -pub vortex_datetime_parts::TemporalParts::subseconds: vortex_array::array::ArrayRef +pub vortex_datetime_parts::TemporalParts::subseconds: vortex_array::array::erased::ArrayRef pub fn vortex_datetime_parts::initialize(session: &mut vortex_session::VortexSession) pub fn vortex_datetime_parts::split_temporal(array: vortex_array::arrays::datetime::TemporalArray) -> vortex_error::VortexResult + +pub type vortex_datetime_parts::DateTimePartsArray = vortex_array::array::typed::Array diff --git a/encodings/datetime-parts/src/array.rs b/encodings/datetime-parts/src/array.rs index 3607c9abc07..54cbb6528e3 100644 --- a/encodings/datetime-parts/src/array.rs +++ b/encodings/datetime-parts/src/array.rs @@ -2,30 +2,28 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use std::fmt::Debug; -use std::hash::Hash; -use std::sync::Arc; +use vortex_array::Array; use vortex_array::ArrayEq; use vortex_array::ArrayHash; +use vortex_array::ArrayId; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::DeserializeMetadata; -use vortex_array::DynArray; use vortex_array::ExecutionCtx; use vortex_array::ExecutionResult; use vortex_array::IntoArray; use vortex_array::Precision; use vortex_array::ProstMetadata; use vortex_array::SerializeMetadata; +use vortex_array::arrays::TemporalArray; use vortex_array::buffer::BufferHandle; use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; use vortex_array::dtype::PType; use vortex_array::serde::ArrayChildren; use vortex_array::stats::ArrayStats; -use vortex_array::stats::StatsSetRef; use vortex_array::vtable; -use vortex_array::vtable::Array; -use vortex_array::vtable::ArrayId; use vortex_array::vtable::VTable; use vortex_array::vtable::ValidityChild; use vortex_array::vtable::ValidityVTableFromChild; @@ -41,7 +39,7 @@ use crate::canonical::decode_to_temporal; use crate::compute::kernel::PARENT_KERNELS; use crate::compute::rules::PARENT_RULES; -vtable!(DateTimeParts); +vtable!(DateTimeParts, DateTimeParts, DateTimePartsData); #[derive(Clone, prost::Message)] #[repr(C)] @@ -74,13 +72,13 @@ impl DateTimePartsMetadata { } impl VTable for DateTimeParts { - type Array = DateTimePartsArray; + type ArrayData = DateTimePartsData; type Metadata = ProstMetadata; type OperationsVTable = Self; type ValidityVTable = ValidityVTableFromChild; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &Self::ArrayData) -> &Self { &DateTimeParts } @@ -88,53 +86,51 @@ impl VTable for DateTimeParts { Self::ID } - fn len(array: &DateTimePartsArray) -> usize { + fn len(array: &DateTimePartsData) -> usize { array.days().len() } - fn dtype(array: &DateTimePartsArray) -> &DType { + fn dtype(array: &DateTimePartsData) -> &DType { &array.dtype } - fn stats(array: &DateTimePartsArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &DateTimePartsData) -> &ArrayStats { + &array.stats_set } fn array_hash( - array: &DateTimePartsArray, + array: &DateTimePartsData, state: &mut H, precision: Precision, ) { - array.dtype.hash(state); array.days().array_hash(state, precision); array.seconds().array_hash(state, precision); array.subseconds().array_hash(state, precision); } fn array_eq( - array: &DateTimePartsArray, - other: &DateTimePartsArray, + array: &DateTimePartsData, + other: &DateTimePartsData, precision: Precision, ) -> bool { - array.dtype == other.dtype - && array.days().array_eq(other.days(), precision) + array.days().array_eq(other.days(), precision) && array.seconds().array_eq(other.seconds(), precision) && array.subseconds().array_eq(other.subseconds(), precision) } - fn nbuffers(_array: &DateTimePartsArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 0 } - fn buffer(_array: &DateTimePartsArray, idx: usize) -> BufferHandle { + fn buffer(_array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { vortex_panic!("DateTimePartsArray buffer index {idx} out of bounds") } - fn buffer_name(_array: &DateTimePartsArray, idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, idx: usize) -> Option { vortex_panic!("DateTimePartsArray buffer_name index {idx} out of bounds") } - fn metadata(array: &DateTimePartsArray) -> VortexResult { + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { Ok(ProstMetadata(DateTimePartsMetadata { days_ptype: PType::try_from(array.days().dtype())? as i32, seconds_ptype: PType::try_from(array.seconds().dtype())? as i32, @@ -164,7 +160,7 @@ impl VTable for DateTimeParts { metadata: &Self::Metadata, _buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { if children.len() != 3 { vortex_bail!( "Expected 3 children for datetime-parts encoding, found {}", @@ -188,21 +184,18 @@ impl VTable for DateTimeParts { len, )?; - DateTimePartsArray::try_new(dtype.clone(), days, seconds, subseconds) + DateTimePartsData::try_new(dtype.clone(), days, seconds, subseconds) } - fn slots(array: &DateTimePartsArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &DateTimePartsArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn with_slots( - array: &mut DateTimePartsArray, - slots: Vec>, - ) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "DateTimePartsArray expects exactly {} slots, got {}", @@ -213,14 +206,14 @@ impl VTable for DateTimeParts { Ok(()) } - fn execute(array: Arc>, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, ctx: &mut ExecutionCtx) -> VortexResult { Ok(ExecutionResult::done( decode_to_temporal(&array, ctx)?.into_array(), )) } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { @@ -228,7 +221,7 @@ impl VTable for DateTimeParts { } fn execute_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, @@ -247,7 +240,7 @@ pub(super) const NUM_SLOTS: usize = 3; pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["days", "seconds", "subseconds"]; #[derive(Clone, Debug)] -pub struct DateTimePartsArray { +pub struct DateTimePartsData { dtype: DType, pub(super) slots: Vec>, stats_set: ArrayStats, @@ -266,9 +259,26 @@ pub struct DateTimeParts; impl DateTimeParts { pub const ID: ArrayId = ArrayId::new_ref("vortex.datetimeparts"); + + /// Construct a new [`DateTimePartsArray`] from its components. + pub fn try_new( + dtype: DType, + days: ArrayRef, + seconds: ArrayRef, + subseconds: ArrayRef, + ) -> VortexResult { + Array::try_from_data(DateTimePartsData::try_new( + dtype, days, seconds, subseconds, + )?) + } + + /// Construct a [`DateTimePartsArray`] from a [`TemporalArray`]. + pub fn try_from_temporal(temporal: TemporalArray) -> VortexResult { + Array::try_from_data(DateTimePartsData::try_from(temporal)?) + } } -impl DateTimePartsArray { +impl DateTimePartsData { pub fn try_new( dtype: DType, days: ArrayRef, @@ -334,6 +344,21 @@ impl DateTimePartsArray { } } + /// Returns the number of elements in the array. + pub fn len(&self) -> usize { + self.days().len() + } + + /// Returns `true` if the array contains no elements. + pub fn is_empty(&self) -> bool { + self.days().len() == 0 + } + + /// Returns the logical data type of the array. + pub fn dtype(&self) -> &DType { + &self.dtype + } + pub fn days(&self) -> &ArrayRef { self.slots[DAYS_SLOT] .as_ref() @@ -354,7 +379,7 @@ impl DateTimePartsArray { } impl ValidityChild for DateTimeParts { - fn validity_child(array: &DateTimePartsArray) -> &ArrayRef { + fn validity_child(array: &DateTimePartsData) -> &ArrayRef { array.days() } } diff --git a/encodings/datetime-parts/src/canonical.rs b/encodings/datetime-parts/src/canonical.rs index 96d81c9b477..99337f898a5 100644 --- a/encodings/datetime-parts/src/canonical.rs +++ b/encodings/datetime-parts/src/canonical.rs @@ -120,6 +120,7 @@ mod test { use vortex_session::VortexSession; use crate::DateTimePartsArray; + use crate::DateTimePartsData; use crate::canonical::decode_to_temporal; #[rstest] @@ -139,16 +140,23 @@ mod test { ], validity.clone(), ); - let date_times = DateTimePartsArray::try_from(TemporalArray::new_timestamp( - milliseconds.clone().into_array(), - TimeUnit::Milliseconds, - Some("UTC".into()), - )) - .unwrap(); + let date_times = DateTimePartsArray::try_from_data( + DateTimePartsData::try_from(TemporalArray::new_timestamp( + milliseconds.clone().into_array(), + TimeUnit::Milliseconds, + Some("UTC".into()), + )) + .unwrap(), + )?; let mut ctx = ExecutionCtx::new(VortexSession::empty()); - assert!(date_times.validity()?.mask_eq(&validity, &mut ctx)?); + assert!( + date_times + .as_array() + .validity()? + .mask_eq(&validity, &mut ctx)? + ); let primitive_values = decode_to_temporal(&date_times, &mut ctx)? .temporal_values() diff --git a/encodings/datetime-parts/src/compress.rs b/encodings/datetime-parts/src/compress.rs index 10442e27954..662edbf8196 100644 --- a/encodings/datetime-parts/src/compress.rs +++ b/encodings/datetime-parts/src/compress.rs @@ -13,9 +13,8 @@ use vortex_buffer::BufferMut; use vortex_error::VortexError; use vortex_error::VortexResult; -use crate::DateTimePartsArray; +use crate::DateTimePartsData; use crate::timestamp; - pub struct TemporalParts { pub days: ArrayRef, pub seconds: ArrayRef, @@ -58,7 +57,7 @@ pub fn split_temporal(array: TemporalArray) -> VortexResult { }) } -impl TryFrom for DateTimePartsArray { +impl TryFrom for DateTimePartsData { type Error = VortexError; fn try_from(array: TemporalArray) -> Result { @@ -68,7 +67,7 @@ impl TryFrom for DateTimePartsArray { seconds, subseconds, } = split_temporal(array)?; - DateTimePartsArray::try_new(DType::Extension(ext_dtype), days, seconds, subseconds) + DateTimePartsData::try_new(DType::Extension(ext_dtype), days, seconds, subseconds) } } diff --git a/encodings/datetime-parts/src/compute/cast.rs b/encodings/datetime-parts/src/compute/cast.rs index 916da53d619..9c0c405827d 100644 --- a/encodings/datetime-parts/src/compute/cast.rs +++ b/encodings/datetime-parts/src/compute/cast.rs @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::builtins::ArrayBuiltins; use vortex_array::dtype::DType; @@ -10,16 +10,15 @@ use vortex_array::scalar_fn::fns::cast::CastReduce; use vortex_error::VortexResult; use crate::DateTimeParts; -use crate::DateTimePartsArray; - +use crate::DateTimePartsData; impl CastReduce for DateTimeParts { - fn cast(array: &DateTimePartsArray, dtype: &DType) -> VortexResult> { + fn cast(array: ArrayView<'_, Self>, dtype: &DType) -> VortexResult> { if !array.dtype().eq_ignore_nullability(dtype) { return Ok(None); }; Ok(Some( - DateTimePartsArray::try_new( + DateTimePartsData::try_new( dtype.clone(), array .days() @@ -36,7 +35,6 @@ impl CastReduce for DateTimeParts { mod tests { use rstest::rstest; use vortex_array::ArrayRef; - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::arrays::TemporalArray; @@ -48,9 +46,10 @@ mod tests { use vortex_buffer::buffer; use crate::DateTimePartsArray; + use crate::DateTimePartsData; fn date_time_array(validity: Validity) -> ArrayRef { - DateTimePartsArray::try_from(TemporalArray::new_timestamp( + DateTimePartsData::try_from(TemporalArray::new_timestamp( PrimitiveArray::new( buffer![ 86_400i64, // element with only day component @@ -105,7 +104,7 @@ mod tests { } #[rstest] - #[case(DateTimePartsArray::try_from(TemporalArray::new_timestamp( + #[case(DateTimePartsArray::try_from_data(DateTimePartsData::try_from(TemporalArray::new_timestamp( buffer![ 0i64, 86_400_000, // 1 day in ms @@ -115,8 +114,8 @@ mod tests { ].into_array(), TimeUnit::Milliseconds, Some("UTC".into()) - )).unwrap())] - #[case(DateTimePartsArray::try_from(TemporalArray::new_timestamp( + )).unwrap()).unwrap())] + #[case(DateTimePartsArray::try_from_data(DateTimePartsData::try_from(TemporalArray::new_timestamp( PrimitiveArray::from_option_iter([ Some(0i64), None, @@ -126,12 +125,12 @@ mod tests { ]).into_array(), TimeUnit::Milliseconds, Some("UTC".into()) - )).unwrap())] - #[case(DateTimePartsArray::try_from(TemporalArray::new_timestamp( + )).unwrap()).unwrap())] + #[case(DateTimePartsArray::try_from_data(DateTimePartsData::try_from(TemporalArray::new_timestamp( buffer![86_400_000_000_000i64].into_array(), // 1 day in ns TimeUnit::Nanoseconds, Some("UTC".into()) - )).unwrap())] + )).unwrap()).unwrap())] fn test_cast_datetime_parts_conformance(#[case] array: DateTimePartsArray) { use vortex_array::compute::conformance::cast::test_cast_conformance; test_cast_conformance(&array.into_array()); diff --git a/encodings/datetime-parts/src/compute/compare.rs b/encodings/datetime-parts/src/compute/compare.rs index c69fd3d1b93..0c92e6a5168 100644 --- a/encodings/datetime-parts/src/compute/compare.rs +++ b/encodings/datetime-parts/src/compute/compare.rs @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::ConstantArray; @@ -17,12 +17,11 @@ use vortex_array::scalar_fn::fns::operators::Operator; use vortex_error::VortexResult; use crate::array::DateTimeParts; -use crate::array::DateTimePartsArray; use crate::timestamp; impl CompareKernel for DateTimeParts { fn compare( - lhs: &DateTimePartsArray, + lhs: ArrayView<'_, Self>, rhs: &ArrayRef, operator: CompareOperator, _ctx: &mut ExecutionCtx, @@ -67,7 +66,7 @@ impl CompareKernel for DateTimeParts { } fn compare_eq( - lhs: &DateTimePartsArray, + lhs: ArrayView, ts_parts: ×tamp::TimestampParts, nullability: Nullability, ) -> VortexResult> { @@ -102,7 +101,7 @@ fn compare_eq( } fn compare_ne( - lhs: &DateTimePartsArray, + lhs: ArrayView, ts_parts: ×tamp::TimestampParts, nullability: Nullability, ) -> VortexResult> { @@ -142,7 +141,7 @@ fn compare_ne( } fn compare_lt( - lhs: &DateTimePartsArray, + lhs: ArrayView, ts_parts: ×tamp::TimestampParts, nullability: Nullability, ) -> VortexResult> { @@ -156,7 +155,7 @@ fn compare_lt( } fn compare_gt( - lhs: &DateTimePartsArray, + lhs: ArrayView, ts_parts: ×tamp::TimestampParts, nullability: Nullability, ) -> VortexResult> { @@ -180,7 +179,7 @@ fn compare_dtp( .into_array() .cast(lhs.dtype().with_nullability(nullability)) { - Ok(casted) => lhs.to_array().binary(casted, Operator::from(operator)), + Ok(casted) => lhs.binary(casted, Operator::from(operator)), // The narrowing cast failed. Therefore, we know lhs < rhs. _ => { let constant_value = match operator { @@ -206,12 +205,13 @@ mod test { use vortex_buffer::buffer; use super::*; + use crate::DateTimePartsData; fn dtp_array_from_timestamp( value: T, validity: Validity, - ) -> DateTimePartsArray { - DateTimePartsArray::try_from(TemporalArray::new_timestamp( + ) -> DateTimePartsData { + DateTimePartsData::try_from(TemporalArray::new_timestamp( PrimitiveArray::new(buffer![value], validity).into_array(), TimeUnit::Seconds, Some("UTC".into()), @@ -312,7 +312,7 @@ mod test { Some("UTC".into()), ); - let lhs = DateTimePartsArray::try_new( + let lhs = DateTimePartsData::try_new( DType::Extension(temporal_array.ext_dtype()), PrimitiveArray::new(buffer![0i32], lhs_validity).into_array(), PrimitiveArray::new(buffer![0u32], Validity::NonNullable).into_array(), diff --git a/encodings/datetime-parts/src/compute/filter.rs b/encodings/datetime-parts/src/compute/filter.rs index cc66bd75299..ba339063540 100644 --- a/encodings/datetime-parts/src/compute/filter.rs +++ b/encodings/datetime-parts/src/compute/filter.rs @@ -2,18 +2,18 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::arrays::filter::FilterReduce; use vortex_error::VortexResult; use vortex_mask::Mask; use crate::DateTimeParts; -use crate::DateTimePartsArray; - +use crate::DateTimePartsData; impl FilterReduce for DateTimeParts { - fn filter(array: &DateTimePartsArray, mask: &Mask) -> VortexResult> { + fn filter(array: ArrayView<'_, Self>, mask: &Mask) -> VortexResult> { Ok(Some( - DateTimePartsArray::try_new( + DateTimePartsData::try_new( array.dtype().clone(), array.days().filter(mask.clone())?, array.seconds().filter(mask.clone())?, @@ -33,7 +33,7 @@ mod test { use vortex_array::extension::datetime::TimeUnit; use vortex_buffer::buffer; - use crate::DateTimePartsArray; + use crate::DateTimePartsData; #[test] fn test_filter_datetime_parts() { @@ -50,7 +50,7 @@ mod test { let temporal = TemporalArray::new_timestamp(timestamps, TimeUnit::Milliseconds, Some("UTC".into())); - let array = DateTimePartsArray::try_from(temporal).unwrap(); + let array = DateTimePartsData::try_from(temporal).unwrap(); test_filter_conformance(&array.into_array()); // Test with nullable values @@ -66,7 +66,7 @@ mod test { let temporal = TemporalArray::new_timestamp(timestamps, TimeUnit::Milliseconds, Some("UTC".into())); - let array = DateTimePartsArray::try_from(temporal).unwrap(); + let array = DateTimePartsData::try_from(temporal).unwrap(); test_filter_conformance(&array.into_array()); } } diff --git a/encodings/datetime-parts/src/compute/mask.rs b/encodings/datetime-parts/src/compute/mask.rs index 686d63ef1bd..023831d251a 100644 --- a/encodings/datetime-parts/src/compute/mask.rs +++ b/encodings/datetime-parts/src/compute/mask.rs @@ -2,27 +2,26 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::builtins::ArrayBuiltins; use vortex_array::scalar_fn::fns::mask::MaskReduce; use vortex_error::VortexResult; use crate::DateTimeParts; -use crate::DateTimePartsArray; -use crate::DateTimePartsArrayParts; +use crate::DateTimePartsData; impl MaskReduce for DateTimeParts { - fn mask(array: &DateTimePartsArray, mask: &ArrayRef) -> VortexResult> { - let DateTimePartsArrayParts { - dtype, - days, - seconds, - subseconds, - } = array.clone().into_parts(); - let masked_days = days.mask(mask.clone())?; + fn mask(array: ArrayView<'_, Self>, mask: &ArrayRef) -> VortexResult> { + let masked_days = array.days().clone().mask(mask.clone())?; Ok(Some( - DateTimePartsArray::try_new(dtype.as_nullable(), masked_days, seconds, subseconds)? - .into_array(), + DateTimePartsData::try_new( + array.dtype().as_nullable(), + masked_days, + array.seconds().clone(), + array.subseconds().clone(), + )? + .into_array(), )) } } diff --git a/encodings/datetime-parts/src/compute/mod.rs b/encodings/datetime-parts/src/compute/mod.rs index 46ce9cf89e3..4ca8398fd6b 100644 --- a/encodings/datetime-parts/src/compute/mod.rs +++ b/encodings/datetime-parts/src/compute/mod.rs @@ -22,53 +22,54 @@ mod tests { use vortex_buffer::buffer; use crate::DateTimePartsArray; + use crate::DateTimePartsData; #[rstest] // Basic datetime arrays - #[case::datetime_seconds(DateTimePartsArray::try_from(TemporalArray::new_timestamp( + #[case::datetime_seconds(DateTimePartsArray::try_from_data(DateTimePartsData::try_from(TemporalArray::new_timestamp( buffer![0i64, 86400, 172800, 259200, 345600].into_array(), TimeUnit::Seconds, Some("UTC".into()), - )).unwrap())] - #[case::datetime_millis(DateTimePartsArray::try_from(TemporalArray::new_timestamp( + )).unwrap()).unwrap())] + #[case::datetime_millis(DateTimePartsArray::try_from_data(DateTimePartsData::try_from(TemporalArray::new_timestamp( buffer![0i64, 86400000, 172800000].into_array(), TimeUnit::Milliseconds, Some("UTC".into()), - )).unwrap())] - #[case::datetime_micros(DateTimePartsArray::try_from(TemporalArray::new_timestamp( + )).unwrap()).unwrap())] + #[case::datetime_micros(DateTimePartsArray::try_from_data(DateTimePartsData::try_from(TemporalArray::new_timestamp( buffer![0i64, 86400000000, 172800000000].into_array(), TimeUnit::Microseconds, Some("UTC".into()), - )).unwrap())] - #[case::datetime_nanos(DateTimePartsArray::try_from(TemporalArray::new_timestamp( + )).unwrap()).unwrap())] + #[case::datetime_nanos(DateTimePartsArray::try_from_data(DateTimePartsData::try_from(TemporalArray::new_timestamp( buffer![0i64, 86400000000000].into_array(), TimeUnit::Nanoseconds, Some("UTC".into()), - )).unwrap())] + )).unwrap()).unwrap())] // Nullable arrays - #[case::datetime_nullable_seconds(DateTimePartsArray::try_from(TemporalArray::new_timestamp( + #[case::datetime_nullable_seconds(DateTimePartsArray::try_from_data(DateTimePartsData::try_from(TemporalArray::new_timestamp( PrimitiveArray::from_option_iter([Some(0i64), None, Some(86400), Some(172800), None]).into_array(), TimeUnit::Seconds, Some("UTC".into()), - )).unwrap())] + )).unwrap()).unwrap())] // Edge cases - #[case::datetime_single(DateTimePartsArray::try_from(TemporalArray::new_timestamp( + #[case::datetime_single(DateTimePartsArray::try_from_data(DateTimePartsData::try_from(TemporalArray::new_timestamp( buffer![1234567890i64].into_array(), TimeUnit::Seconds, Some("UTC".into()), - )).unwrap())] + )).unwrap()).unwrap())] // Large arrays (> 1024 elements) - #[case::datetime_large(DateTimePartsArray::try_from(TemporalArray::new_timestamp( + #[case::datetime_large(DateTimePartsArray::try_from_data(DateTimePartsData::try_from(TemporalArray::new_timestamp( PrimitiveArray::from_iter((0..1500).map(|i| i as i64 * 86400)).into_array(), TimeUnit::Seconds, Some("UTC".into()), - )).unwrap())] + )).unwrap()).unwrap())] // Different time patterns - #[case::datetime_with_subseconds(DateTimePartsArray::try_from(TemporalArray::new_timestamp( + #[case::datetime_with_subseconds(DateTimePartsArray::try_from_data(DateTimePartsData::try_from(TemporalArray::new_timestamp( buffer![123456789i64, 234567890, 345678901, 456789012, 567890123].into_array(), TimeUnit::Milliseconds, Some("UTC".into()), - )).unwrap())] + )).unwrap()).unwrap())] fn test_datetime_parts_consistency(#[case] array: DateTimePartsArray) { test_array_consistency(&array.into_array()); diff --git a/encodings/datetime-parts/src/compute/rules.rs b/encodings/datetime-parts/src/compute/rules.rs index 730324bff5b..dedc87caa13 100644 --- a/encodings/datetime-parts/src/compute/rules.rs +++ b/encodings/datetime-parts/src/compute/rules.rs @@ -2,15 +2,15 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::arrays::Constant; use vortex_array::arrays::ConstantArray; use vortex_array::arrays::Filter; -use vortex_array::arrays::FilterArray; use vortex_array::arrays::ScalarFnArray; use vortex_array::arrays::filter::FilterReduceAdaptor; use vortex_array::arrays::scalar_fn::AnyScalarFn; +use vortex_array::arrays::scalar_fn::ScalarFnVTable; use vortex_array::arrays::slice::SliceReduceAdaptor; use vortex_array::builtins::ArrayBuiltins; use vortex_array::dtype::DType; @@ -26,9 +26,8 @@ use vortex_error::VortexExpect; use vortex_error::VortexResult; use crate::DateTimeParts; -use crate::DateTimePartsArray; +use crate::DateTimePartsData; use crate::timestamp; - pub(crate) const PARENT_RULES: ParentRuleSet = ParentRuleSet::new(&[ ParentRuleSet::lift(&DTPFilterPushDownRule), ParentRuleSet::lift(&DTPComparisonPushDownRule), @@ -48,8 +47,8 @@ impl ArrayParentReduceRule for DTPFilterPushDownRule { fn reduce_parent( &self, - child: &DateTimePartsArray, - parent: &FilterArray, + child: ArrayView<'_, DateTimeParts>, + parent: ArrayView<'_, Filter>, child_idx: usize, ) -> VortexResult> { debug_assert_eq!(child_idx, 0); @@ -58,7 +57,7 @@ impl ArrayParentReduceRule for DTPFilterPushDownRule { return Ok(None); } - DateTimePartsArray::try_new( + DateTimePartsData::try_new( child.dtype().clone(), child.days().clone().filter(parent.filter_mask().clone())?, ConstantArray::new( @@ -94,8 +93,8 @@ impl ArrayParentReduceRule for DTPComparisonPushDownRule { fn reduce_parent( &self, - child: &DateTimePartsArray, - parent: &ScalarFnArray, + child: ArrayView<'_, DateTimeParts>, + parent: ArrayView<'_, ScalarFnVTable>, child_idx: usize, ) -> VortexResult> { // Only handle comparison operations (Binary comparisons or Between) @@ -193,6 +192,7 @@ mod tests { use vortex_buffer::Buffer; use super::*; + use crate::DateTimePartsArray; const SECONDS_PER_DAY: i64 = 86400; @@ -215,7 +215,8 @@ mod tests { time_unit, None, ); - DateTimePartsArray::try_from(temporal).unwrap() + DateTimePartsArray::try_from_data(DateTimePartsData::try_from(temporal).unwrap()) + .vortex_expect("DateTimePartsData is always valid") } /// Create a constant timestamp scalar at midnight for the given day. @@ -347,7 +348,7 @@ mod tests { TimeUnit::Seconds, None, ); - let dtp = DateTimePartsArray::try_from(temporal).unwrap(); + let dtp = DateTimePartsData::try_from(temporal).unwrap(); let len = dtp.len(); // Compare against midnight constant diff --git a/encodings/datetime-parts/src/compute/slice.rs b/encodings/datetime-parts/src/compute/slice.rs index bc723bdc8ed..b63693980f7 100644 --- a/encodings/datetime-parts/src/compute/slice.rs +++ b/encodings/datetime-parts/src/compute/slice.rs @@ -4,18 +4,19 @@ use std::ops::Range; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::arrays::slice::SliceReduce; use vortex_error::VortexResult; use crate::DateTimeParts; -use crate::DateTimePartsArray; +use crate::DateTimePartsData; impl SliceReduce for DateTimeParts { - fn slice(array: &Self::Array, range: Range) -> VortexResult> { + fn slice(array: ArrayView<'_, Self>, range: Range) -> VortexResult> { // SAFETY: slicing all components preserves values Ok(Some(unsafe { - DateTimePartsArray::new_unchecked( + DateTimePartsData::new_unchecked( array.dtype().clone(), array.days().slice(range.clone())?, array.seconds().slice(range.clone())?, diff --git a/encodings/datetime-parts/src/compute/take.rs b/encodings/datetime-parts/src/compute/take.rs index 8960cb1f41e..b804752657b 100644 --- a/encodings/datetime-parts/src/compute/take.rs +++ b/encodings/datetime-parts/src/compute/take.rs @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::ToCanonical; @@ -16,9 +16,11 @@ use vortex_error::VortexResult; use vortex_error::vortex_panic; use crate::DateTimeParts; -use crate::DateTimePartsArray; - -fn take_datetime_parts(array: &DateTimePartsArray, indices: &ArrayRef) -> VortexResult { +use crate::DateTimePartsData; +fn take_datetime_parts( + array: ArrayView, + indices: &ArrayRef, +) -> VortexResult { // we go ahead and canonicalize here to avoid worst-case canonicalizing 3 separate times let indices = indices.to_primitive(); @@ -36,13 +38,10 @@ fn take_datetime_parts(array: &DateTimePartsArray, indices: &ArrayRef) -> Vortex }; if !taken_seconds.dtype().is_nullable() && !taken_subseconds.dtype().is_nullable() { - return Ok(DateTimePartsArray::try_new( - dtype, - taken_days, - taken_seconds, - taken_subseconds, - )? - .into_array()); + return Ok( + DateTimePartsData::try_new(dtype, taken_days, taken_seconds, taken_subseconds)? + .into_array(), + ); } // DateTimePartsArray requires seconds and subseconds to be non-nullable. @@ -80,14 +79,14 @@ fn take_datetime_parts(array: &DateTimePartsArray, indices: &ArrayRef) -> Vortex let taken_subseconds = taken_subseconds.fill_null(subseconds_fill)?; Ok( - DateTimePartsArray::try_new(dtype, taken_days, taken_seconds, taken_subseconds)? + DateTimePartsData::try_new(dtype, taken_days, taken_seconds, taken_subseconds)? .into_array(), ) } impl TakeExecute for DateTimeParts { fn take( - array: &DateTimePartsArray, + array: ArrayView<'_, Self>, indices: &ArrayRef, _ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -106,9 +105,10 @@ mod tests { use vortex_buffer::buffer; use crate::DateTimePartsArray; + use crate::DateTimePartsData; #[rstest] - #[case(DateTimePartsArray::try_from(TemporalArray::new_timestamp( + #[case(DateTimePartsArray::try_from_data(DateTimePartsData::try_from(TemporalArray::new_timestamp( buffer![ 0i64, 86_400_000, // 1 day in ms @@ -118,8 +118,8 @@ mod tests { ].into_array(), TimeUnit::Milliseconds, Some("UTC".into()) - )).unwrap())] - #[case(DateTimePartsArray::try_from(TemporalArray::new_timestamp( + )).unwrap()).unwrap())] + #[case(DateTimePartsArray::try_from_data(DateTimePartsData::try_from(TemporalArray::new_timestamp( PrimitiveArray::from_option_iter([ Some(0i64), None, @@ -129,12 +129,12 @@ mod tests { ]).into_array(), TimeUnit::Milliseconds, Some("UTC".into()) - )).unwrap())] - #[case(DateTimePartsArray::try_from(TemporalArray::new_timestamp( + )).unwrap()).unwrap())] + #[case(DateTimePartsArray::try_from_data(DateTimePartsData::try_from(TemporalArray::new_timestamp( buffer![86_400_000i64].into_array(), TimeUnit::Milliseconds, Some("UTC".into()) - )).unwrap())] + )).unwrap()).unwrap())] fn test_take_datetime_parts_conformance(#[case] array: DateTimePartsArray) { test_take_conformance(&array.into_array()); } diff --git a/encodings/datetime-parts/src/ops.rs b/encodings/datetime-parts/src/ops.rs index 167829b2fe0..c0acf4d6a32 100644 --- a/encodings/datetime-parts/src/ops.rs +++ b/encodings/datetime-parts/src/ops.rs @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::dtype::DType; use vortex_array::extension::datetime::Timestamp; @@ -12,13 +12,12 @@ use vortex_error::VortexResult; use vortex_error::vortex_panic; use crate::DateTimeParts; -use crate::DateTimePartsArray; use crate::timestamp; use crate::timestamp::TimestampParts; impl OperationsVTable for DateTimeParts { fn scalar_at( - array: &DateTimePartsArray, + array: ArrayView<'_, DateTimeParts>, index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { @@ -33,7 +32,7 @@ impl OperationsVTable for DateTimeParts { vortex_panic!(Compute: "must decode TemporalMetadata from extension metadata"); }; - if !array.is_valid(index)? { + if !array.as_ref().is_valid(index)? { return Ok(Scalar::null(DType::Extension(ext))); } diff --git a/encodings/decimal-byte-parts/public-api.lock b/encodings/decimal-byte-parts/public-api.lock index 916f5349962..1a93f2602f4 100644 --- a/encodings/decimal-byte-parts/public-api.lock +++ b/encodings/decimal-byte-parts/public-api.lock @@ -4,7 +4,9 @@ pub struct vortex_decimal_byte_parts::DecimalByteParts impl vortex_decimal_byte_parts::DecimalByteParts -pub const vortex_decimal_byte_parts::DecimalByteParts::ID: vortex_array::vtable::dyn_::ArrayId +pub const vortex_decimal_byte_parts::DecimalByteParts::ID: vortex_array::array::ArrayId + +pub fn vortex_decimal_byte_parts::DecimalByteParts::try_new(msp: vortex_array::array::erased::ArrayRef, decimal_dtype: vortex_array::dtype::decimal::DecimalDType) -> vortex_error::VortexResult impl core::clone::Clone for vortex_decimal_byte_parts::DecimalByteParts @@ -14,133 +16,125 @@ impl core::fmt::Debug for vortex_decimal_byte_parts::DecimalByteParts pub fn vortex_decimal_byte_parts::DecimalByteParts::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::take::TakeExecute for vortex_decimal_byte_parts::DecimalByteParts - -pub fn vortex_decimal_byte_parts::DecimalByteParts::take(array: &vortex_decimal_byte_parts::DecimalBytePartsArray, indices: &vortex_array::array::ArrayRef, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::arrays::filter::kernel::FilterReduce for vortex_decimal_byte_parts::DecimalByteParts - -pub fn vortex_decimal_byte_parts::DecimalByteParts::filter(array: &vortex_decimal_byte_parts::DecimalBytePartsArray, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> - -impl vortex_array::arrays::slice::SliceReduce for vortex_decimal_byte_parts::DecimalByteParts +impl vortex_array::array::vtable::VTable for vortex_decimal_byte_parts::DecimalByteParts -pub fn vortex_decimal_byte_parts::DecimalByteParts::slice(array: &vortex_decimal_byte_parts::DecimalBytePartsArray, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub type vortex_decimal_byte_parts::DecimalByteParts::ArrayData = vortex_decimal_byte_parts::DecimalBytePartsData -impl vortex_array::scalar_fn::fns::binary::compare::CompareKernel for vortex_decimal_byte_parts::DecimalByteParts +pub type vortex_decimal_byte_parts::DecimalByteParts::Metadata = vortex_array::metadata::ProstMetadata -pub fn vortex_decimal_byte_parts::DecimalByteParts::compare(lhs: &Self::Array, rhs: &vortex_array::array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub type vortex_decimal_byte_parts::DecimalByteParts::OperationsVTable = vortex_decimal_byte_parts::DecimalByteParts -impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_decimal_byte_parts::DecimalByteParts +pub type vortex_decimal_byte_parts::DecimalByteParts::ValidityVTable = vortex_array::array::vtable::validity::ValidityVTableFromChild -pub fn vortex_decimal_byte_parts::DecimalByteParts::cast(array: &vortex_decimal_byte_parts::DecimalBytePartsArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_decimal_byte_parts::DecimalByteParts::array_eq(array: &vortex_decimal_byte_parts::DecimalBytePartsData, other: &vortex_decimal_byte_parts::DecimalBytePartsData, precision: vortex_array::hash::Precision) -> bool -impl vortex_array::scalar_fn::fns::mask::kernel::MaskReduce for vortex_decimal_byte_parts::DecimalByteParts +pub fn vortex_decimal_byte_parts::DecimalByteParts::array_hash(array: &vortex_decimal_byte_parts::DecimalBytePartsData, state: &mut H, precision: vortex_array::hash::Precision) -pub fn vortex_decimal_byte_parts::DecimalByteParts::mask(array: &vortex_decimal_byte_parts::DecimalBytePartsArray, mask: &vortex_array::array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_decimal_byte_parts::DecimalByteParts::buffer(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -impl vortex_array::vtable::VTable for vortex_decimal_byte_parts::DecimalByteParts +pub fn vortex_decimal_byte_parts::DecimalByteParts::buffer_name(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub type vortex_decimal_byte_parts::DecimalByteParts::Array = vortex_decimal_byte_parts::DecimalBytePartsArray +pub fn vortex_decimal_byte_parts::DecimalByteParts::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub type vortex_decimal_byte_parts::DecimalByteParts::Metadata = vortex_array::metadata::ProstMetadata +pub fn vortex_decimal_byte_parts::DecimalByteParts::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_decimal_byte_parts::DecimalByteParts::OperationsVTable = vortex_decimal_byte_parts::DecimalByteParts +pub fn vortex_decimal_byte_parts::DecimalByteParts::dtype(array: &vortex_decimal_byte_parts::DecimalBytePartsData) -> &vortex_array::dtype::DType -pub type vortex_decimal_byte_parts::DecimalByteParts::ValidityVTable = vortex_array::vtable::validity::ValidityVTableFromChild +pub fn vortex_decimal_byte_parts::DecimalByteParts::execute(array: vortex_array::array::typed::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_decimal_byte_parts::DecimalByteParts::array_eq(array: &vortex_decimal_byte_parts::DecimalBytePartsArray, other: &vortex_decimal_byte_parts::DecimalBytePartsArray, precision: vortex_array::hash::Precision) -> bool +pub fn vortex_decimal_byte_parts::DecimalByteParts::execute_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_decimal_byte_parts::DecimalByteParts::array_hash(array: &vortex_decimal_byte_parts::DecimalBytePartsArray, state: &mut H, precision: vortex_array::hash::Precision) +pub fn vortex_decimal_byte_parts::DecimalByteParts::id(&self) -> vortex_array::array::ArrayId -pub fn vortex_decimal_byte_parts::DecimalByteParts::buffer(_array: &vortex_decimal_byte_parts::DecimalBytePartsArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_decimal_byte_parts::DecimalByteParts::len(array: &vortex_decimal_byte_parts::DecimalBytePartsData) -> usize -pub fn vortex_decimal_byte_parts::DecimalByteParts::buffer_name(_array: &vortex_decimal_byte_parts::DecimalBytePartsArray, idx: usize) -> core::option::Option +pub fn vortex_decimal_byte_parts::DecimalByteParts::metadata(array: vortex_array::array::view::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_decimal_byte_parts::DecimalByteParts::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_decimal_byte_parts::DecimalByteParts::nbuffers(_array: vortex_array::array::view::ArrayView<'_, Self>) -> usize -pub fn vortex_decimal_byte_parts::DecimalByteParts::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_decimal_byte_parts::DecimalByteParts::reduce_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_decimal_byte_parts::DecimalByteParts::dtype(array: &vortex_decimal_byte_parts::DecimalBytePartsArray) -> &vortex_array::dtype::DType +pub fn vortex_decimal_byte_parts::DecimalByteParts::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_decimal_byte_parts::DecimalByteParts::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_decimal_byte_parts::DecimalByteParts::slot_name(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_decimal_byte_parts::DecimalByteParts::execute_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_decimal_byte_parts::DecimalByteParts::slots(array: vortex_array::array::view::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_decimal_byte_parts::DecimalByteParts::id(&self) -> vortex_array::vtable::dyn_::ArrayId +pub fn vortex_decimal_byte_parts::DecimalByteParts::stats(array: &vortex_decimal_byte_parts::DecimalBytePartsData) -> &vortex_array::stats::array::ArrayStats -pub fn vortex_decimal_byte_parts::DecimalByteParts::len(array: &vortex_decimal_byte_parts::DecimalBytePartsArray) -> usize +pub fn vortex_decimal_byte_parts::DecimalByteParts::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_decimal_byte_parts::DecimalByteParts::metadata(array: &vortex_decimal_byte_parts::DecimalBytePartsArray) -> vortex_error::VortexResult +pub fn vortex_decimal_byte_parts::DecimalByteParts::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_decimal_byte_parts::DecimalByteParts::nbuffers(_array: &vortex_decimal_byte_parts::DecimalBytePartsArray) -> usize +impl vortex_array::array::vtable::operations::OperationsVTable for vortex_decimal_byte_parts::DecimalByteParts -pub fn vortex_decimal_byte_parts::DecimalByteParts::reduce_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_decimal_byte_parts::DecimalByteParts::scalar_at(array: vortex_array::array::view::ArrayView<'_, vortex_decimal_byte_parts::DecimalByteParts>, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_decimal_byte_parts::DecimalByteParts::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +impl vortex_array::array::vtable::validity::ValidityChild for vortex_decimal_byte_parts::DecimalByteParts -pub fn vortex_decimal_byte_parts::DecimalByteParts::slot_name(_array: &vortex_decimal_byte_parts::DecimalBytePartsArray, idx: usize) -> alloc::string::String +pub fn vortex_decimal_byte_parts::DecimalByteParts::validity_child(array: &vortex_decimal_byte_parts::DecimalBytePartsData) -> &vortex_array::array::erased::ArrayRef -pub fn vortex_decimal_byte_parts::DecimalByteParts::slots(array: &vortex_decimal_byte_parts::DecimalBytePartsArray) -> &[core::option::Option] +impl vortex_array::arrays::dict::take::TakeExecute for vortex_decimal_byte_parts::DecimalByteParts -pub fn vortex_decimal_byte_parts::DecimalByteParts::stats(array: &vortex_decimal_byte_parts::DecimalBytePartsArray) -> vortex_array::stats::array::StatsSetRef<'_> +pub fn vortex_decimal_byte_parts::DecimalByteParts::take(array: vortex_array::array::view::ArrayView<'_, Self>, indices: &vortex_array::array::erased::ArrayRef, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_decimal_byte_parts::DecimalByteParts::vtable(_array: &Self::Array) -> &Self +impl vortex_array::arrays::filter::kernel::FilterReduce for vortex_decimal_byte_parts::DecimalByteParts -pub fn vortex_decimal_byte_parts::DecimalByteParts::with_slots(array: &mut vortex_decimal_byte_parts::DecimalBytePartsArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_decimal_byte_parts::DecimalByteParts::filter(array: vortex_array::array::view::ArrayView<'_, Self>, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> -impl vortex_array::vtable::operations::OperationsVTable for vortex_decimal_byte_parts::DecimalByteParts +impl vortex_array::arrays::slice::SliceReduce for vortex_decimal_byte_parts::DecimalByteParts -pub fn vortex_decimal_byte_parts::DecimalByteParts::scalar_at(array: &vortex_decimal_byte_parts::DecimalBytePartsArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_decimal_byte_parts::DecimalByteParts::slice(array: vortex_array::array::view::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -impl vortex_array::vtable::validity::ValidityChild for vortex_decimal_byte_parts::DecimalByteParts +impl vortex_array::scalar_fn::fns::binary::compare::CompareKernel for vortex_decimal_byte_parts::DecimalByteParts -pub fn vortex_decimal_byte_parts::DecimalByteParts::validity_child(array: &vortex_decimal_byte_parts::DecimalBytePartsArray) -> &vortex_array::array::ArrayRef +pub fn vortex_decimal_byte_parts::DecimalByteParts::compare(lhs: vortex_array::array::view::ArrayView<'_, Self>, rhs: &vortex_array::array::erased::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub struct vortex_decimal_byte_parts::DecimalBytePartsArray +impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_decimal_byte_parts::DecimalByteParts -impl vortex_decimal_byte_parts::DecimalBytePartsArray +pub fn vortex_decimal_byte_parts::DecimalByteParts::cast(array: vortex_array::array::view::ArrayView<'_, Self>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_decimal_byte_parts::DecimalBytePartsArray::decimal_dtype(&self) -> &vortex_array::dtype::decimal::DecimalDType +impl vortex_array::scalar_fn::fns::mask::kernel::MaskReduce for vortex_decimal_byte_parts::DecimalByteParts -pub fn vortex_decimal_byte_parts::DecimalBytePartsArray::into_parts(self) -> vortex_decimal_byte_parts::DecimalBytePartsArrayParts +pub fn vortex_decimal_byte_parts::DecimalByteParts::mask(array: vortex_array::array::view::ArrayView<'_, Self>, mask: &vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_decimal_byte_parts::DecimalBytePartsArray::try_new(msp: vortex_array::array::ArrayRef, decimal_dtype: vortex_array::dtype::decimal::DecimalDType) -> vortex_error::VortexResult +pub struct vortex_decimal_byte_parts::DecimalBytePartsArrayParts -impl vortex_decimal_byte_parts::DecimalBytePartsArray +pub vortex_decimal_byte_parts::DecimalBytePartsArrayParts::dtype: vortex_array::dtype::DType -pub fn vortex_decimal_byte_parts::DecimalBytePartsArray::to_array(&self) -> vortex_array::array::ArrayRef +pub vortex_decimal_byte_parts::DecimalBytePartsArrayParts::msp: vortex_array::array::erased::ArrayRef -impl core::clone::Clone for vortex_decimal_byte_parts::DecimalBytePartsArray +pub struct vortex_decimal_byte_parts::DecimalBytePartsData -pub fn vortex_decimal_byte_parts::DecimalBytePartsArray::clone(&self) -> vortex_decimal_byte_parts::DecimalBytePartsArray +impl vortex_decimal_byte_parts::DecimalBytePartsData -impl core::convert::AsRef for vortex_decimal_byte_parts::DecimalBytePartsArray +pub fn vortex_decimal_byte_parts::DecimalBytePartsData::decimal_dtype(&self) -> &vortex_array::dtype::decimal::DecimalDType -pub fn vortex_decimal_byte_parts::DecimalBytePartsArray::as_ref(&self) -> &dyn vortex_array::array::DynArray +pub fn vortex_decimal_byte_parts::DecimalBytePartsData::dtype(&self) -> &vortex_array::dtype::DType -impl core::convert::From for vortex_array::array::ArrayRef +pub fn vortex_decimal_byte_parts::DecimalBytePartsData::into_parts(self) -> vortex_decimal_byte_parts::DecimalBytePartsArrayParts -pub fn vortex_array::array::ArrayRef::from(value: vortex_decimal_byte_parts::DecimalBytePartsArray) -> vortex_array::array::ArrayRef +pub fn vortex_decimal_byte_parts::DecimalBytePartsData::is_empty(&self) -> bool -impl core::fmt::Debug for vortex_decimal_byte_parts::DecimalBytePartsArray +pub fn vortex_decimal_byte_parts::DecimalBytePartsData::len(&self) -> usize -pub fn vortex_decimal_byte_parts::DecimalBytePartsArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_decimal_byte_parts::DecimalBytePartsData::try_new(msp: vortex_array::array::erased::ArrayRef, decimal_dtype: vortex_array::dtype::decimal::DecimalDType) -> vortex_error::VortexResult -impl core::ops::deref::Deref for vortex_decimal_byte_parts::DecimalBytePartsArray +impl core::clone::Clone for vortex_decimal_byte_parts::DecimalBytePartsData -pub type vortex_decimal_byte_parts::DecimalBytePartsArray::Target = dyn vortex_array::array::DynArray +pub fn vortex_decimal_byte_parts::DecimalBytePartsData::clone(&self) -> vortex_decimal_byte_parts::DecimalBytePartsData -pub fn vortex_decimal_byte_parts::DecimalBytePartsArray::deref(&self) -> &Self::Target +impl core::convert::From for vortex_array::array::erased::ArrayRef -impl vortex_array::array::IntoArray for vortex_decimal_byte_parts::DecimalBytePartsArray +pub fn vortex_array::array::erased::ArrayRef::from(value: vortex_decimal_byte_parts::DecimalBytePartsData) -> vortex_array::array::erased::ArrayRef -pub fn vortex_decimal_byte_parts::DecimalBytePartsArray::into_array(self) -> vortex_array::array::ArrayRef +impl core::fmt::Debug for vortex_decimal_byte_parts::DecimalBytePartsData -pub struct vortex_decimal_byte_parts::DecimalBytePartsArrayParts +pub fn vortex_decimal_byte_parts::DecimalBytePartsData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub vortex_decimal_byte_parts::DecimalBytePartsArrayParts::dtype: vortex_array::dtype::DType +impl vortex_array::array::IntoArray for vortex_decimal_byte_parts::DecimalBytePartsData -pub vortex_decimal_byte_parts::DecimalBytePartsArrayParts::msp: vortex_array::array::ArrayRef +pub fn vortex_decimal_byte_parts::DecimalBytePartsData::into_array(self) -> vortex_array::array::erased::ArrayRef pub struct vortex_decimal_byte_parts::DecimalBytesPartsMetadata @@ -169,3 +163,5 @@ pub fn vortex_decimal_byte_parts::DecimalBytesPartsMetadata::clear(&mut self) pub fn vortex_decimal_byte_parts::DecimalBytesPartsMetadata::encoded_len(&self) -> usize pub fn vortex_decimal_byte_parts::initialize(session: &mut vortex_session::VortexSession) + +pub type vortex_decimal_byte_parts::DecimalBytePartsArray = vortex_array::array::typed::Array diff --git a/encodings/decimal-byte-parts/src/decimal_byte_parts/compute/cast.rs b/encodings/decimal-byte-parts/src/decimal_byte_parts/compute/cast.rs index 04016fead44..5314dd8845d 100644 --- a/encodings/decimal-byte-parts/src/decimal_byte_parts/compute/cast.rs +++ b/encodings/decimal-byte-parts/src/decimal_byte_parts/compute/cast.rs @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::builtins::ArrayBuiltins; use vortex_array::dtype::DType; @@ -10,10 +10,8 @@ use vortex_array::scalar_fn::fns::cast::CastReduce; use vortex_error::VortexResult; use crate::DecimalByteParts; -use crate::DecimalBytePartsArray; - impl CastReduce for DecimalByteParts { - fn cast(array: &DecimalBytePartsArray, dtype: &DType) -> VortexResult> { + fn cast(array: ArrayView<'_, Self>, dtype: &DType) -> VortexResult> { // DecimalBytePartsArray can only have Decimal dtype, so we only handle decimal-to-decimal casts let DType::Decimal(target_decimal, target_nullability) = dtype else { // Cannot cast decimal to non-decimal types - delegate to canonical form @@ -30,7 +28,7 @@ impl CastReduce for DecimalByteParts { .cast(array.msp().dtype().with_nullability(*target_nullability))?; return Ok(Some( - DecimalBytePartsArray::try_new(new_msp, *target_decimal)?.into_array(), + DecimalByteParts::try_new(new_msp, *target_decimal)?.into_array(), )); } @@ -52,16 +50,15 @@ mod tests { use vortex_array::dtype::Nullability; use vortex_buffer::buffer; + use crate::DecimalByteParts; use crate::DecimalBytePartsArray; #[test] fn test_cast_decimal_byte_parts_nullability() { let decimal_dtype = DecimalDType::new(10, 2); - let array = DecimalBytePartsArray::try_new( - buffer![100i32, 200, 300, 400].into_array(), - decimal_dtype, - ) - .unwrap(); + let array = + DecimalByteParts::try_new(buffer![100i32, 200, 300, 400].into_array(), decimal_dtype) + .unwrap(); // Cast to nullable decimal let casted = array @@ -81,7 +78,7 @@ mod tests { #[test] fn test_cast_decimal_byte_parts_nullable_to_non_nullable() { let decimal_dtype = DecimalDType::new(10, 2); - let array = DecimalBytePartsArray::try_new( + let array = DecimalByteParts::try_new( PrimitiveArray::from_option_iter([Some(100i32), None, Some(300)]).into_array(), decimal_dtype, ) @@ -96,24 +93,24 @@ mod tests { } #[rstest] - #[case::i32(DecimalBytePartsArray::try_new( + #[case::i32(DecimalByteParts::try_new( buffer![100i32, 200, 300, 400, 500].into_array(), DecimalDType::new(10, 2), ).unwrap())] - #[case::i64(DecimalBytePartsArray::try_new( + #[case::i64(DecimalByteParts::try_new( buffer![1000i64, 2000, 3000, 4000].into_array(), DecimalDType::new(19, 4), ).unwrap())] - #[case::nullable(DecimalBytePartsArray::try_new( + #[case::nullable(DecimalByteParts::try_new( PrimitiveArray::from_option_iter([Some(100i32), None, Some(300), Some(400), None]) .into_array(), DecimalDType::new(10, 2), ).unwrap())] - #[case::single(DecimalBytePartsArray::try_new( + #[case::single(DecimalByteParts::try_new( buffer![42i32].into_array(), DecimalDType::new(5, 1), ).unwrap())] - #[case::negative(DecimalBytePartsArray::try_new( + #[case::negative(DecimalByteParts::try_new( buffer![-100i32, -200, 300, -400, 500].into_array(), DecimalDType::new(10, 2), ).unwrap())] diff --git a/encodings/decimal-byte-parts/src/decimal_byte_parts/compute/compare.rs b/encodings/decimal-byte-parts/src/decimal_byte_parts/compute/compare.rs index f749e6388c6..b1be5b1b54d 100644 --- a/encodings/decimal-byte-parts/src/decimal_byte_parts/compute/compare.rs +++ b/encodings/decimal-byte-parts/src/decimal_byte_parts/compute/compare.rs @@ -4,7 +4,7 @@ use Sign::Negative; use num_traits::NumCast; use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::ConstantArray; @@ -29,7 +29,7 @@ use crate::decimal_byte_parts::compute::compare::Sign::Positive; impl CompareKernel for DecimalByteParts { fn compare( - lhs: &Self::Array, + lhs: ArrayView<'_, Self>, rhs: &ArrayRef, operator: CompareOperator, _ctx: &mut ExecutionCtx, @@ -64,7 +64,7 @@ impl CompareKernel for DecimalByteParts { // (depending on the `sign`) than all values in MSP. // If the LHS or the RHS contain nulls, then we must fallback to the canonicalized // implementation which does null-checking instead. - if lhs.all_valid()? && rhs.all_valid()? { + if lhs.array().all_valid()? && rhs.all_valid()? { Ok(Some( ConstantArray::new( unconvertible_value(sign, operator, nullability), @@ -143,7 +143,6 @@ where #[cfg(test)] mod tests { - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::arrays::BoolArray; use vortex_array::arrays::ConstantArray; @@ -160,13 +159,13 @@ mod tests { use vortex_buffer::buffer; use vortex_error::VortexResult; - use crate::DecimalBytePartsArray; + use crate::DecimalByteParts; #[test] fn compare_decimal_const() { let decimal_dtype = DecimalDType::new(8, 2); let dtype = DType::Decimal(decimal_dtype, Nullability::Nullable); - let lhs = DecimalBytePartsArray::try_new( + let lhs = DecimalByteParts::try_new( PrimitiveArray::new(buffer![100i32, 200i32, 400i32], Validity::AllValid).into_array(), decimal_dtype, ) @@ -186,7 +185,7 @@ mod tests { #[test] fn test_byteparts_compare_nullable() -> VortexResult<()> { let decimal_type = DecimalDType::new(19, -11); - let lhs = DecimalBytePartsArray::try_new( + let lhs = DecimalByteParts::try_new( PrimitiveArray::new( buffer![1i64, 2i64, 3i64, 4i64], Validity::Array(BoolArray::from_iter([false, true, true, true]).into_array()), @@ -217,7 +216,7 @@ mod tests { fn compare_decimal_const_unconvertible_comparison() { let decimal_dtype = DecimalDType::new(40, 2); let dtype = DType::Decimal(decimal_dtype, Nullability::Nullable); - let lhs = DecimalBytePartsArray::try_new( + let lhs = DecimalByteParts::try_new( PrimitiveArray::new(buffer![100i32, 200i32, 400i32], Validity::AllValid).into_array(), decimal_dtype, ) diff --git a/encodings/decimal-byte-parts/src/decimal_byte_parts/compute/filter.rs b/encodings/decimal-byte-parts/src/decimal_byte_parts/compute/filter.rs index 3bb0e801a06..638c167e9ed 100644 --- a/encodings/decimal-byte-parts/src/decimal_byte_parts/compute/filter.rs +++ b/encodings/decimal-byte-parts/src/decimal_byte_parts/compute/filter.rs @@ -2,17 +2,16 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::arrays::filter::FilterReduce; use vortex_error::VortexResult; use vortex_mask::Mask; use crate::DecimalByteParts; -use crate::DecimalBytePartsArray; - impl FilterReduce for DecimalByteParts { - fn filter(array: &DecimalBytePartsArray, mask: &Mask) -> VortexResult> { - DecimalBytePartsArray::try_new(array.msp().filter(mask.clone())?, *array.decimal_dtype()) + fn filter(array: ArrayView<'_, Self>, mask: &Mask) -> VortexResult> { + DecimalByteParts::try_new(array.msp().filter(mask.clone())?, *array.decimal_dtype()) .map(|d| Some(d.into_array())) } } @@ -25,7 +24,7 @@ mod test { use vortex_array::dtype::DecimalDType; use vortex_buffer::buffer; - use crate::DecimalBytePartsArray; + use crate::DecimalByteParts; #[test] fn test_filter_decimal_byte_parts() { @@ -33,7 +32,7 @@ mod test { let msp = buffer![100i32, 200, 300, 400, 500].into_array(); let decimal_dtype = DecimalDType::new(8, 2); - let array = DecimalBytePartsArray::try_new(msp, decimal_dtype).unwrap(); + let array = DecimalByteParts::try_new(msp, decimal_dtype).unwrap(); test_filter_conformance(&array.into_array()); // Test with nullable values @@ -41,7 +40,7 @@ mod test { .into_array(); let decimal_dtype = DecimalDType::new(18, 4); - let array = DecimalBytePartsArray::try_new(msp, decimal_dtype).unwrap(); + let array = DecimalByteParts::try_new(msp, decimal_dtype).unwrap(); test_filter_conformance(&array.into_array()); } } diff --git a/encodings/decimal-byte-parts/src/decimal_byte_parts/compute/mask.rs b/encodings/decimal-byte-parts/src/decimal_byte_parts/compute/mask.rs index 152c8b7e11c..f3d5068faa0 100644 --- a/encodings/decimal-byte-parts/src/decimal_byte_parts/compute/mask.rs +++ b/encodings/decimal-byte-parts/src/decimal_byte_parts/compute/mask.rs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::arrays::scalar_fn::ScalarFnArrayExt; use vortex_array::scalar_fn::EmptyOptions; @@ -9,18 +10,18 @@ use vortex_array::scalar_fn::fns::mask::Mask as MaskExpr; use vortex_array::scalar_fn::fns::mask::MaskReduce; use vortex_error::VortexResult; +use super::DecimalBytePartsData; use crate::DecimalByteParts; -use crate::DecimalBytePartsArray; impl MaskReduce for DecimalByteParts { - fn mask(array: &DecimalBytePartsArray, mask: &ArrayRef) -> VortexResult> { + fn mask(array: ArrayView<'_, Self>, mask: &ArrayRef) -> VortexResult> { let masked_msp = MaskExpr.try_new_array( array.msp().len(), EmptyOptions, [array.msp().clone(), mask.clone()], )?; Ok(Some( - DecimalBytePartsArray::try_new(masked_msp, *array.decimal_dtype())?.into_array(), + DecimalBytePartsData::try_new(masked_msp, *array.decimal_dtype())?.into_array(), )) } } diff --git a/encodings/decimal-byte-parts/src/decimal_byte_parts/compute/mod.rs b/encodings/decimal-byte-parts/src/decimal_byte_parts/compute/mod.rs index 77ede1a4563..ef271694aea 100644 --- a/encodings/decimal-byte-parts/src/decimal_byte_parts/compute/mod.rs +++ b/encodings/decimal-byte-parts/src/decimal_byte_parts/compute/mod.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use super::DecimalBytePartsData; mod cast; mod compare; mod filter; @@ -18,51 +19,52 @@ mod tests { use vortex_array::dtype::DecimalDType; use vortex_buffer::buffer; + use crate::DecimalByteParts; use crate::DecimalBytePartsArray; #[rstest] // Basic decimal byte parts arrays - #[case::decimal_i32(DecimalBytePartsArray::try_new( + #[case::decimal_i32(DecimalByteParts::try_new( buffer![100i32, 200, 300, 400, 500].into_array(), DecimalDType::new(10, 2) ).unwrap())] - #[case::decimal_i64(DecimalBytePartsArray::try_new( + #[case::decimal_i64(DecimalByteParts::try_new( buffer![1000i64, 2000, 3000, 4000, 5000].into_array(), DecimalDType::new(19, 4) ).unwrap())] // Nullable arrays - #[case::decimal_nullable_i32(DecimalBytePartsArray::try_new( + #[case::decimal_nullable_i32(DecimalByteParts::try_new( PrimitiveArray::from_option_iter([Some(100i32), None, Some(300), Some(400), None]).into_array(), DecimalDType::new(10, 2) ).unwrap())] - #[case::decimal_nullable_i64(DecimalBytePartsArray::try_new( + #[case::decimal_nullable_i64(DecimalByteParts::try_new( PrimitiveArray::from_option_iter([Some(1000i64), None, Some(3000), Some(4000), None]).into_array(), DecimalDType::new(19, 4) ).unwrap())] // Different precision/scale combinations - #[case::decimal_high_precision(DecimalBytePartsArray::try_new( + #[case::decimal_high_precision(DecimalByteParts::try_new( buffer![123456789i32, 987654321, -123456789].into_array(), DecimalDType::new(38, 10) ).unwrap())] - #[case::decimal_zero_scale(DecimalBytePartsArray::try_new( + #[case::decimal_zero_scale(DecimalByteParts::try_new( buffer![100i32, 200, 300].into_array(), DecimalDType::new(10, 0) ).unwrap())] // Edge cases - #[case::decimal_single(DecimalBytePartsArray::try_new( + #[case::decimal_single(DecimalByteParts::try_new( buffer![42i32].into_array(), DecimalDType::new(5, 1) ).unwrap())] - #[case::decimal_negative(DecimalBytePartsArray::try_new( + #[case::decimal_negative(DecimalByteParts::try_new( buffer![-100i32, -200, 300, -400, 500].into_array(), DecimalDType::new(10, 2) ).unwrap())] // Large arrays - #[case::decimal_large(DecimalBytePartsArray::try_new( + #[case::decimal_large(DecimalByteParts::try_new( PrimitiveArray::from_iter((0..1500).map(|i| i * 100)).into_array(), DecimalDType::new(10, 2) ).unwrap())] - #[case::decimal_large_i64(DecimalBytePartsArray::try_new( + #[case::decimal_large_i64(DecimalByteParts::try_new( PrimitiveArray::from_iter((0..2000i64).map(|i| i * 1000000)).into_array(), DecimalDType::new(19, 6) ).unwrap())] diff --git a/encodings/decimal-byte-parts/src/decimal_byte_parts/compute/take.rs b/encodings/decimal-byte-parts/src/decimal_byte_parts/compute/take.rs index 31fa44e80c5..9aa64aa8d37 100644 --- a/encodings/decimal-byte-parts/src/decimal_byte_parts/compute/take.rs +++ b/encodings/decimal-byte-parts/src/decimal_byte_parts/compute/take.rs @@ -2,25 +2,22 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::dict::TakeExecute; use vortex_error::VortexResult; +use super::DecimalBytePartsData; use crate::DecimalByteParts; -use crate::DecimalBytePartsArray; impl TakeExecute for DecimalByteParts { fn take( - array: &DecimalBytePartsArray, + array: ArrayView<'_, Self>, indices: &ArrayRef, _ctx: &mut ExecutionCtx, ) -> VortexResult> { - DecimalBytePartsArray::try_new( - array.msp().take(indices.to_array())?, - *array.decimal_dtype(), - ) - .map(|a| Some(a.into_array())) + DecimalBytePartsData::try_new(array.msp().take(indices.clone())?, *array.decimal_dtype()) + .map(|a| Some(a.into_array())) } } 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 7df75061673..5fff2a47bf5 100644 --- a/encodings/decimal-byte-parts/src/decimal_byte_parts/mod.rs +++ b/encodings/decimal-byte-parts/src/decimal_byte_parts/mod.rs @@ -1,18 +1,17 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::Array; +use vortex_array::ArrayView; pub(crate) mod compute; mod rules; mod slice; -use std::hash::Hash; -use std::sync::Arc; - use prost::Message as _; use vortex_array::ArrayEq; use vortex_array::ArrayHash; +use vortex_array::ArrayId; use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::ExecutionCtx; use vortex_array::ExecutionResult; use vortex_array::IntoArray; @@ -31,10 +30,7 @@ use vortex_array::scalar::Scalar; use vortex_array::scalar::ScalarValue; use vortex_array::serde::ArrayChildren; use vortex_array::stats::ArrayStats; -use vortex_array::stats::StatsSetRef; use vortex_array::vtable; -use vortex_array::vtable::Array; -use vortex_array::vtable::ArrayId; use vortex_array::vtable::OperationsVTable; use vortex_array::vtable::VTable; use vortex_array::vtable::ValidityChild; @@ -49,7 +45,7 @@ use vortex_session::VortexSession; use crate::decimal_byte_parts::compute::kernel::PARENT_KERNELS; use crate::decimal_byte_parts::rules::PARENT_RULES; -vtable!(DecimalByteParts); +vtable!(DecimalByteParts, DecimalByteParts, DecimalBytePartsData); #[derive(Clone, prost::Message)] pub struct DecimalBytesPartsMetadata { @@ -60,13 +56,13 @@ pub struct DecimalBytesPartsMetadata { } impl VTable for DecimalByteParts { - type Array = DecimalBytePartsArray; + type ArrayData = DecimalBytePartsData; type Metadata = ProstMetadata; type OperationsVTable = Self; type ValidityVTable = ValidityVTableFromChild; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &Self::ArrayData) -> &Self { &DecimalByteParts } @@ -74,48 +70,47 @@ impl VTable for DecimalByteParts { Self::ID } - fn len(array: &DecimalBytePartsArray) -> usize { + fn len(array: &DecimalBytePartsData) -> usize { array.msp().len() } - fn dtype(array: &DecimalBytePartsArray) -> &DType { + fn dtype(array: &DecimalBytePartsData) -> &DType { &array.dtype } - fn stats(array: &DecimalBytePartsArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &DecimalBytePartsData) -> &ArrayStats { + &array.stats_set } fn array_hash( - array: &DecimalBytePartsArray, + array: &DecimalBytePartsData, state: &mut H, precision: Precision, ) { - array.dtype.hash(state); array.msp().array_hash(state, precision); } fn array_eq( - array: &DecimalBytePartsArray, - other: &DecimalBytePartsArray, + array: &DecimalBytePartsData, + other: &DecimalBytePartsData, precision: Precision, ) -> bool { - array.dtype == other.dtype && array.msp().array_eq(other.msp(), precision) + array.msp().array_eq(other.msp(), precision) } - fn nbuffers(_array: &DecimalBytePartsArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 0 } - fn buffer(_array: &DecimalBytePartsArray, idx: usize) -> BufferHandle { + fn buffer(_array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { vortex_panic!("DecimalBytePartsArray buffer index {idx} out of bounds") } - fn buffer_name(_array: &DecimalBytePartsArray, idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, idx: usize) -> Option { vortex_panic!("DecimalBytePartsArray buffer_name index {idx} out of bounds") } - fn metadata(array: &DecimalBytePartsArray) -> VortexResult { + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { Ok(ProstMetadata(DecimalBytesPartsMetadata { zeroth_child_ptype: PType::try_from(array.msp().dtype())? as i32, lower_part_count: 0, @@ -142,7 +137,7 @@ impl VTable for DecimalByteParts { metadata: &Self::Metadata, _buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { let Some(decimal_dtype) = dtype.as_decimal_opt() else { vortex_bail!("decoding decimal but given non decimal dtype {}", dtype) }; @@ -156,21 +151,18 @@ impl VTable for DecimalByteParts { "lower_part_count > 0 not currently supported" ); - DecimalBytePartsArray::try_new(msp, *decimal_dtype) + DecimalBytePartsData::try_new(msp, *decimal_dtype) } - fn slots(array: &DecimalBytePartsArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &DecimalBytePartsArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn with_slots( - array: &mut DecimalBytePartsArray, - slots: Vec>, - ) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "DecimalBytePartsArray expects exactly {} slots, got {}", @@ -182,19 +174,19 @@ impl VTable for DecimalByteParts { } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { PARENT_RULES.evaluate(array, parent, child_idx) } - fn execute(array: Arc>, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, ctx: &mut ExecutionCtx) -> VortexResult { to_canonical_decimal(&array, ctx).map(ExecutionResult::done) } fn execute_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, @@ -214,7 +206,7 @@ pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["msp"]; /// /// e.g. for a decimal i128 \[ 127..64 | 64..0 \] msp = 127..64 and lower_part\[0\] = 64..0 #[derive(Clone, Debug)] -pub struct DecimalBytePartsArray { +pub struct DecimalBytePartsData { pub(super) slots: Vec>, // NOTE: the lower_parts is currently unused, we reserve this field so that it is properly // read/written during serde, but provide no constructor to initialize this to anything @@ -230,7 +222,7 @@ pub struct DecimalBytePartsArrayParts { pub dtype: DType, } -impl DecimalBytePartsArray { +impl DecimalBytePartsData { pub fn try_new(msp: ArrayRef, decimal_dtype: DecimalDType) -> VortexResult { if !msp.dtype().is_signed_int() { vortex_bail!("decimal bytes parts, first part must be a signed array") @@ -265,6 +257,21 @@ impl DecimalBytePartsArray { } } + /// Returns the number of elements in the array. + pub fn len(&self) -> usize { + self.msp().len() + } + + /// Returns `true` if the array contains no elements. + pub fn is_empty(&self) -> bool { + self.msp().len() == 0 + } + + /// Returns the logical data type of the array. + pub fn dtype(&self) -> &DType { + &self.dtype + } + pub fn decimal_dtype(&self) -> &DecimalDType { self.dtype .as_decimal_opt() @@ -283,6 +290,14 @@ pub struct DecimalByteParts; impl DecimalByteParts { pub const ID: ArrayId = ArrayId::new_ref("vortex.decimal_byte_parts"); + + /// Construct a new [`DecimalBytePartsArray`] from an MSP array and decimal dtype. + pub fn try_new( + msp: ArrayRef, + decimal_dtype: DecimalDType, + ) -> VortexResult { + Array::try_from_data(DecimalBytePartsData::try_new(msp, decimal_dtype)?) + } } /// Converts a DecimalBytePartsArray to its canonical DecimalArray representation. @@ -311,7 +326,7 @@ fn to_canonical_decimal( impl OperationsVTable for DecimalByteParts { fn scalar_at( - array: &DecimalBytePartsArray, + array: ArrayView<'_, DecimalByteParts>, index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { @@ -330,7 +345,7 @@ impl OperationsVTable for DecimalByteParts { } impl ValidityChild for DecimalByteParts { - fn validity_child(array: &DecimalBytePartsArray) -> &ArrayRef { + fn validity_child(array: &DecimalBytePartsData) -> &ArrayRef { // validity stored in 0th child array.msp() } @@ -338,7 +353,6 @@ impl ValidityChild for DecimalByteParts { #[cfg(test)] mod tests { - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::arrays::BoolArray; use vortex_array::arrays::PrimitiveArray; @@ -351,13 +365,13 @@ mod tests { use vortex_array::validity::Validity; use vortex_buffer::buffer; - use crate::DecimalBytePartsArray; + use crate::DecimalByteParts; #[test] fn test_scalar_at_decimal_parts() { let decimal_dtype = DecimalDType::new(8, 2); let dtype = DType::Decimal(decimal_dtype, Nullability::Nullable); - let array = DecimalBytePartsArray::try_new( + let array = DecimalByteParts::try_new( PrimitiveArray::new( buffer![100i32, 200i32, 400i32], Validity::Array(BoolArray::from_iter(vec![false, true, true]).into_array()), diff --git a/encodings/decimal-byte-parts/src/decimal_byte_parts/rules.rs b/encodings/decimal-byte-parts/src/decimal_byte_parts/rules.rs index 137865ddc64..f9b4422f7a6 100644 --- a/encodings/decimal-byte-parts/src/decimal_byte_parts/rules.rs +++ b/encodings/decimal-byte-parts/src/decimal_byte_parts/rules.rs @@ -2,10 +2,9 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::arrays::Filter; -use vortex_array::arrays::FilterArray; use vortex_array::arrays::filter::FilterReduceAdaptor; use vortex_array::arrays::slice::SliceReduceAdaptor; use vortex_array::optimizer::rules::ArrayParentReduceRule; @@ -14,8 +13,8 @@ use vortex_array::scalar_fn::fns::cast::CastReduceAdaptor; use vortex_array::scalar_fn::fns::mask::MaskReduceAdaptor; use vortex_error::VortexResult; +use super::DecimalBytePartsData; use crate::DecimalByteParts; -use crate::DecimalBytePartsArray; pub(super) const PARENT_RULES: ParentRuleSet = ParentRuleSet::new(&[ ParentRuleSet::lift(&DecimalBytePartsFilterPushDownRule), @@ -33,8 +32,8 @@ impl ArrayParentReduceRule for DecimalBytePartsFilterPushDownR fn reduce_parent( &self, - child: &DecimalBytePartsArray, - parent: &FilterArray, + child: ArrayView<'_, DecimalByteParts>, + parent: ArrayView<'_, Filter>, _child_idx: usize, ) -> VortexResult> { // TODO(ngates): we should benchmark whether to push-down filters with "lower parts". @@ -45,7 +44,7 @@ impl ArrayParentReduceRule for DecimalBytePartsFilterPushDownR let new_msp = child.msp().filter(parent.filter_mask().clone())?; let new_child = - DecimalBytePartsArray::try_new(new_msp, *child.decimal_dtype())?.into_array(); + DecimalBytePartsData::try_new(new_msp, *child.decimal_dtype())?.into_array(); Ok(Some(new_child)) } } diff --git a/encodings/decimal-byte-parts/src/decimal_byte_parts/slice.rs b/encodings/decimal-byte-parts/src/decimal_byte_parts/slice.rs index 4f0d3ec36fb..051d80ff016 100644 --- a/encodings/decimal-byte-parts/src/decimal_byte_parts/slice.rs +++ b/encodings/decimal-byte-parts/src/decimal_byte_parts/slice.rs @@ -4,18 +4,19 @@ use std::ops::Range; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::arrays::slice::SliceReduce; use vortex_error::VortexResult; +use super::DecimalBytePartsData; use crate::DecimalByteParts; -use crate::DecimalBytePartsArray; impl SliceReduce for DecimalByteParts { - fn slice(array: &DecimalBytePartsArray, range: Range) -> VortexResult> { + fn slice(array: ArrayView<'_, Self>, range: Range) -> VortexResult> { // SAFETY: slicing encoded MSP does not change the encoded values Ok(Some(unsafe { - DecimalBytePartsArray::new_unchecked(array.msp().slice(range)?, *array.decimal_dtype()) + DecimalBytePartsData::new_unchecked(array.msp().slice(range)?, *array.decimal_dtype()) .into_array() })) } diff --git a/encodings/fastlanes/benches/bitpacking_take.rs b/encodings/fastlanes/benches/bitpacking_take.rs index 23e857777f7..e0325b7a481 100644 --- a/encodings/fastlanes/benches/bitpacking_take.rs +++ b/encodings/fastlanes/benches/bitpacking_take.rs @@ -9,7 +9,6 @@ use rand::RngExt; use rand::SeedableRng; use rand::distr::Uniform; use rand::prelude::StdRng; -use vortex_array::DynArray; use vortex_array::IntoArray as _; use vortex_array::LEGACY_SESSION; use vortex_array::RecursiveCanonical; @@ -53,7 +52,7 @@ fn take_10_contiguous(bencher: Bencher) { .with_inputs(|| (&packed, &indices, LEGACY_SESSION.create_execution_ctx())) .bench_refs(|(packed, indices, execution_ctx)| { packed - .take(indices.to_array()) + .take(indices.clone()) .unwrap() .execute::(execution_ctx) .unwrap() @@ -198,7 +197,7 @@ fn patched_take_10_contiguous(bencher: Bencher) { .with_inputs(|| (&packed, &indices, LEGACY_SESSION.create_execution_ctx())) .bench_refs(|(packed, indices, execution_ctx)| { packed - .take(indices.to_array()) + .take(indices.clone()) .unwrap() .execute::(execution_ctx) .unwrap() diff --git a/encodings/fastlanes/benches/canonicalize_bench.rs b/encodings/fastlanes/benches/canonicalize_bench.rs index 81a6a5c62a4..e6942067fca 100644 --- a/encodings/fastlanes/benches/canonicalize_bench.rs +++ b/encodings/fastlanes/benches/canonicalize_bench.rs @@ -7,7 +7,6 @@ use divan::Bencher; use rand::SeedableRng; use rand::prelude::StdRng; use vortex_array::Canonical; -use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; use vortex_array::arrays::ChunkedArray; diff --git a/encodings/fastlanes/benches/compute_between.rs b/encodings/fastlanes/benches/compute_between.rs index 48cbae73216..799e6d081fc 100644 --- a/encodings/fastlanes/benches/compute_between.rs +++ b/encodings/fastlanes/benches/compute_between.rs @@ -5,7 +5,7 @@ use num_traits::NumCast; use rand::RngExt; use rand::rngs::StdRng; -use vortex_alp::ALPArray; +use vortex_alp::ALP; use vortex_alp::alp_encode; use vortex_array::ArrayRef; use vortex_array::IntoArray; @@ -54,7 +54,7 @@ fn generate_alp_bit_pack_primitive_array( let bp = bitpack_to_best_bit_width(&encoded) .vortex_expect("") .into_array(); - ALPArray::new(bp, alp.exponents(), None).into_array() + ALP::new(bp, alp.exponents(), None).into_array() } const BENCH_ARGS: &[usize] = &[2 << 10, 2 << 13, 2 << 14]; @@ -190,14 +190,14 @@ mod bitpack { .with_inputs(|| (&arr, LEGACY_SESSION.create_execution_ctx())) .bench_refs(|(arr, ctx)| { let gte = arr - .to_array() + .clone() .binary( ConstantArray::new(min, arr.len()).into_array(), Operator::Gte, ) .vortex_expect(""); let lt = arr - .to_array() + .clone() .binary( ConstantArray::new(max, arr.len()).into_array(), Operator::Lt, @@ -281,14 +281,14 @@ mod alp { .with_inputs(|| (&arr, LEGACY_SESSION.create_execution_ctx())) .bench_refs(|(arr, ctx)| { let gte = arr - .to_array() + .clone() .binary( ConstantArray::new(min, arr.len()).into_array(), Operator::Gte, ) .vortex_expect(""); let lt = arr - .to_array() + .clone() .binary( ConstantArray::new(max, arr.len()).into_array(), Operator::Lt, diff --git a/encodings/fastlanes/public-api.lock b/encodings/fastlanes/public-api.lock index e6638186cfd..606dae09f3e 100644 --- a/encodings/fastlanes/public-api.lock +++ b/encodings/fastlanes/public-api.lock @@ -16,21 +16,21 @@ pub fn vortex_fastlanes::bit_transpose::untranspose_validity(validity: &vortex_a pub mod vortex_fastlanes::bitpack_compress -pub fn vortex_fastlanes::bitpack_compress::bit_width_histogram(array: &vortex_array::arrays::primitive::array::PrimitiveArray) -> vortex_error::VortexResult> +pub fn vortex_fastlanes::bitpack_compress::bit_width_histogram(array: &vortex_array::arrays::primitive::vtable::PrimitiveArray) -> vortex_error::VortexResult> -pub fn vortex_fastlanes::bitpack_compress::bitpack_encode(array: &vortex_array::arrays::primitive::array::PrimitiveArray, bit_width: u8, bit_width_freq: core::option::Option<&[usize]>) -> vortex_error::VortexResult +pub fn vortex_fastlanes::bitpack_compress::bitpack_encode(array: &vortex_array::arrays::primitive::vtable::PrimitiveArray, bit_width: u8, bit_width_freq: core::option::Option<&[usize]>) -> vortex_error::VortexResult -pub unsafe fn vortex_fastlanes::bitpack_compress::bitpack_encode_unchecked(array: vortex_array::arrays::primitive::array::PrimitiveArray, bit_width: u8) -> vortex_error::VortexResult +pub unsafe fn vortex_fastlanes::bitpack_compress::bitpack_encode_unchecked(array: vortex_array::arrays::primitive::vtable::PrimitiveArray, bit_width: u8) -> vortex_error::VortexResult pub fn vortex_fastlanes::bitpack_compress::bitpack_primitive(array: &[T], bit_width: u8) -> vortex_buffer::buffer::Buffer -pub fn vortex_fastlanes::bitpack_compress::bitpack_to_best_bit_width(array: &vortex_array::arrays::primitive::array::PrimitiveArray) -> vortex_error::VortexResult +pub fn vortex_fastlanes::bitpack_compress::bitpack_to_best_bit_width(array: &vortex_array::arrays::primitive::vtable::PrimitiveArray) -> vortex_error::VortexResult -pub unsafe fn vortex_fastlanes::bitpack_compress::bitpack_unchecked(parray: &vortex_array::arrays::primitive::array::PrimitiveArray, bit_width: u8) -> vortex_buffer::ByteBuffer +pub unsafe fn vortex_fastlanes::bitpack_compress::bitpack_unchecked(parray: &vortex_array::arrays::primitive::vtable::PrimitiveArray, bit_width: u8) -> vortex_buffer::ByteBuffer pub fn vortex_fastlanes::bitpack_compress::find_best_bit_width(ptype: vortex_array::dtype::ptype::PType, bit_width_freq: &[usize]) -> vortex_error::VortexResult -pub fn vortex_fastlanes::bitpack_compress::gather_patches(parray: &vortex_array::arrays::primitive::array::PrimitiveArray, bit_width: u8, num_exceptions_hint: usize) -> vortex_error::VortexResult> +pub fn vortex_fastlanes::bitpack_compress::gather_patches(parray: &vortex_array::arrays::primitive::vtable::PrimitiveArray, bit_width: u8, num_exceptions_hint: usize) -> vortex_error::VortexResult> pub mod vortex_fastlanes::bitpack_decompress @@ -40,11 +40,11 @@ pub fn vortex_fastlanes::bitpack_decompress::apply_patches_to_uninit_range_fn usize -pub fn vortex_fastlanes::bitpack_decompress::unpack_array(array: &vortex_fastlanes::BitPackedArray, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_fastlanes::bitpack_decompress::unpack_array(array: &vortex_fastlanes::BitPackedData, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_fastlanes::bitpack_decompress::unpack_primitive_array(array: &vortex_fastlanes::BitPackedArray, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_fastlanes::bitpack_decompress::unpack_primitive_array(array: &vortex_fastlanes::BitPackedData, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_fastlanes::bitpack_decompress::unpack_single(array: &vortex_fastlanes::BitPackedArray, index: usize) -> vortex_array::scalar::Scalar +pub fn vortex_fastlanes::bitpack_decompress::unpack_single(array: &vortex_fastlanes::BitPackedData, index: usize) -> vortex_array::scalar::Scalar pub unsafe fn vortex_fastlanes::bitpack_decompress::unpack_single_primitive(packed: &[T], bit_width: usize, index_to_decode: usize) -> T @@ -86,7 +86,7 @@ impl vortex_fastlanes::unpack_iter: pub fn vortex_fastlanes::unpack_iter::UnpackedChunks::full_chunks(&mut self) -> vortex_fastlanes::unpack_iter::BitUnpackIterator<'_, T> -pub fn vortex_fastlanes::unpack_iter::UnpackedChunks::new(array: &vortex_fastlanes::BitPackedArray) -> Self +pub fn vortex_fastlanes::unpack_iter::UnpackedChunks::new(array: &vortex_fastlanes::BitPackedData) -> Self pub trait vortex_fastlanes::unpack_iter::BitPacked: vortex_array::dtype::ptype::PhysicalPType @@ -120,7 +120,9 @@ pub struct vortex_fastlanes::BitPacked impl vortex_fastlanes::BitPacked -pub const vortex_fastlanes::BitPacked::ID: vortex_array::vtable::dyn_::ArrayId +pub const vortex_fastlanes::BitPacked::ID: vortex_array::array::ArrayId + +pub fn vortex_fastlanes::BitPacked::encode(array: &vortex_array::array::erased::ArrayRef, bit_width: u8) -> vortex_error::VortexResult impl core::clone::Clone for vortex_fastlanes::BitPacked @@ -130,25 +132,9 @@ impl core::fmt::Debug for vortex_fastlanes::BitPacked pub fn vortex_fastlanes::BitPacked::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::take::TakeExecute for vortex_fastlanes::BitPacked - -pub fn vortex_fastlanes::BitPacked::take(array: &vortex_fastlanes::BitPackedArray, indices: &vortex_array::array::ArrayRef, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::arrays::filter::kernel::FilterKernel for vortex_fastlanes::BitPacked - -pub fn vortex_fastlanes::BitPacked::filter(array: &vortex_fastlanes::BitPackedArray, mask: &vortex_mask::Mask, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::arrays::slice::SliceReduce for vortex_fastlanes::BitPacked - -pub fn vortex_fastlanes::BitPacked::slice(array: &vortex_fastlanes::BitPackedArray, range: core::ops::range::Range) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_fastlanes::BitPacked - -pub fn vortex_fastlanes::BitPacked::cast(array: &vortex_fastlanes::BitPackedArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> - -impl vortex_array::vtable::VTable for vortex_fastlanes::BitPacked +impl vortex_array::array::vtable::VTable for vortex_fastlanes::BitPacked -pub type vortex_fastlanes::BitPacked::Array = vortex_fastlanes::BitPackedArray +pub type vortex_fastlanes::BitPacked::ArrayData = vortex_fastlanes::BitPackedData pub type vortex_fastlanes::BitPacked::Metadata = vortex_array::metadata::ProstMetadata @@ -156,135 +142,147 @@ pub type vortex_fastlanes::BitPacked::OperationsVTable = vortex_fastlanes::BitPa pub type vortex_fastlanes::BitPacked::ValidityVTable = vortex_fastlanes::BitPacked -pub fn vortex_fastlanes::BitPacked::append_to_builder(array: &vortex_fastlanes::BitPackedArray, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_fastlanes::BitPacked::append_to_builder(array: vortex_array::array::view::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_fastlanes::BitPacked::array_eq(array: &vortex_fastlanes::BitPackedArray, other: &vortex_fastlanes::BitPackedArray, precision: vortex_array::hash::Precision) -> bool +pub fn vortex_fastlanes::BitPacked::array_eq(array: &vortex_fastlanes::BitPackedData, other: &vortex_fastlanes::BitPackedData, precision: vortex_array::hash::Precision) -> bool -pub fn vortex_fastlanes::BitPacked::array_hash(array: &vortex_fastlanes::BitPackedArray, state: &mut H, precision: vortex_array::hash::Precision) +pub fn vortex_fastlanes::BitPacked::array_hash(array: &vortex_fastlanes::BitPackedData, state: &mut H, precision: vortex_array::hash::Precision) -pub fn vortex_fastlanes::BitPacked::buffer(array: &vortex_fastlanes::BitPackedArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_fastlanes::BitPacked::buffer(array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_fastlanes::BitPacked::buffer_name(_array: &vortex_fastlanes::BitPackedArray, idx: usize) -> core::option::Option +pub fn vortex_fastlanes::BitPacked::buffer_name(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_fastlanes::BitPacked::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_fastlanes::BitPacked::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult pub fn vortex_fastlanes::BitPacked::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_fastlanes::BitPacked::dtype(array: &vortex_fastlanes::BitPackedArray) -> &vortex_array::dtype::DType +pub fn vortex_fastlanes::BitPacked::dtype(array: &vortex_fastlanes::BitPackedData) -> &vortex_array::dtype::DType -pub fn vortex_fastlanes::BitPacked::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_fastlanes::BitPacked::execute(array: vortex_array::array::typed::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_fastlanes::BitPacked::execute_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_fastlanes::BitPacked::execute_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_fastlanes::BitPacked::id(&self) -> vortex_array::vtable::dyn_::ArrayId +pub fn vortex_fastlanes::BitPacked::id(&self) -> vortex_array::array::ArrayId -pub fn vortex_fastlanes::BitPacked::len(array: &vortex_fastlanes::BitPackedArray) -> usize +pub fn vortex_fastlanes::BitPacked::len(array: &vortex_fastlanes::BitPackedData) -> usize -pub fn vortex_fastlanes::BitPacked::metadata(array: &vortex_fastlanes::BitPackedArray) -> vortex_error::VortexResult +pub fn vortex_fastlanes::BitPacked::metadata(array: vortex_array::array::view::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_fastlanes::BitPacked::nbuffers(_array: &vortex_fastlanes::BitPackedArray) -> usize +pub fn vortex_fastlanes::BitPacked::nbuffers(_array: vortex_array::array::view::ArrayView<'_, Self>) -> usize -pub fn vortex_fastlanes::BitPacked::reduce_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_fastlanes::BitPacked::reduce_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> pub fn vortex_fastlanes::BitPacked::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_fastlanes::BitPacked::slot_name(_array: &vortex_fastlanes::BitPackedArray, idx: usize) -> alloc::string::String +pub fn vortex_fastlanes::BitPacked::slot_name(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_fastlanes::BitPacked::slots(array: &vortex_fastlanes::BitPackedArray) -> &[core::option::Option] +pub fn vortex_fastlanes::BitPacked::slots(array: vortex_array::array::view::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_fastlanes::BitPacked::stats(array: &vortex_fastlanes::BitPackedArray) -> vortex_array::stats::array::StatsSetRef<'_> +pub fn vortex_fastlanes::BitPacked::stats(array: &vortex_fastlanes::BitPackedData) -> &vortex_array::stats::array::ArrayStats -pub fn vortex_fastlanes::BitPacked::vtable(_array: &Self::Array) -> &Self +pub fn vortex_fastlanes::BitPacked::vtable(_array: &vortex_fastlanes::BitPackedData) -> &Self -pub fn vortex_fastlanes::BitPacked::with_slots(array: &mut vortex_fastlanes::BitPackedArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_fastlanes::BitPacked::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl vortex_array::vtable::operations::OperationsVTable for vortex_fastlanes::BitPacked +impl vortex_array::array::vtable::operations::OperationsVTable for vortex_fastlanes::BitPacked -pub fn vortex_fastlanes::BitPacked::scalar_at(array: &vortex_fastlanes::BitPackedArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_fastlanes::BitPacked::scalar_at(array: vortex_array::array::view::ArrayView<'_, vortex_fastlanes::BitPacked>, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::vtable::validity::ValidityVTable for vortex_fastlanes::BitPacked +impl vortex_array::array::vtable::validity::ValidityVTable for vortex_fastlanes::BitPacked -pub fn vortex_fastlanes::BitPacked::validity(array: &vortex_fastlanes::BitPackedArray) -> vortex_error::VortexResult +pub fn vortex_fastlanes::BitPacked::validity(array: vortex_array::array::view::ArrayView<'_, vortex_fastlanes::BitPacked>) -> vortex_error::VortexResult -pub struct vortex_fastlanes::BitPackedArray +impl vortex_array::arrays::dict::take::TakeExecute for vortex_fastlanes::BitPacked -impl vortex_fastlanes::BitPackedArray +pub fn vortex_fastlanes::BitPacked::take(array: vortex_array::array::view::ArrayView<'_, Self>, indices: &vortex_array::array::erased::ArrayRef, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_fastlanes::BitPackedArray::bit_width(&self) -> u8 +impl vortex_array::arrays::filter::kernel::FilterKernel for vortex_fastlanes::BitPacked -pub fn vortex_fastlanes::BitPackedArray::encode(array: &vortex_array::array::ArrayRef, bit_width: u8) -> vortex_error::VortexResult +pub fn vortex_fastlanes::BitPacked::filter(array: vortex_array::array::view::ArrayView<'_, Self>, mask: &vortex_mask::Mask, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_fastlanes::BitPackedArray::into_parts(self) -> vortex_fastlanes::BitPackedArrayParts +impl vortex_array::arrays::slice::SliceReduce for vortex_fastlanes::BitPacked -pub fn vortex_fastlanes::BitPackedArray::max_packed_value(&self) -> usize +pub fn vortex_fastlanes::BitPacked::slice(array: vortex_array::array::view::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_fastlanes::BitPackedArray::offset(&self) -> u16 +impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_fastlanes::BitPacked -pub fn vortex_fastlanes::BitPackedArray::packed(&self) -> &vortex_array::buffer::BufferHandle +pub fn vortex_fastlanes::BitPacked::cast(array: vortex_array::array::view::ArrayView<'_, Self>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_fastlanes::BitPackedArray::packed_slice(&self) -> &[T] +pub struct vortex_fastlanes::BitPackedArrayParts -pub fn vortex_fastlanes::BitPackedArray::patches(&self) -> core::option::Option +pub vortex_fastlanes::BitPackedArrayParts::bit_width: u8 -pub fn vortex_fastlanes::BitPackedArray::ptype(&self) -> vortex_array::dtype::ptype::PType +pub vortex_fastlanes::BitPackedArrayParts::len: usize -pub fn vortex_fastlanes::BitPackedArray::replace_patches(&mut self, patches: core::option::Option) +pub vortex_fastlanes::BitPackedArrayParts::offset: u16 -pub fn vortex_fastlanes::BitPackedArray::try_new(packed: vortex_array::buffer::BufferHandle, ptype: vortex_array::dtype::ptype::PType, validity: vortex_array::validity::Validity, patches: core::option::Option, bit_width: u8, length: usize, offset: u16) -> vortex_error::VortexResult +pub vortex_fastlanes::BitPackedArrayParts::packed: vortex_array::buffer::BufferHandle -pub fn vortex_fastlanes::BitPackedArray::unpacked_chunks(&self) -> vortex_fastlanes::unpack_iter::BitUnpackedChunks +pub vortex_fastlanes::BitPackedArrayParts::patches: core::option::Option -pub fn vortex_fastlanes::BitPackedArray::validity(&self) -> vortex_array::validity::Validity +pub vortex_fastlanes::BitPackedArrayParts::validity: vortex_array::validity::Validity -impl vortex_fastlanes::BitPackedArray +pub struct vortex_fastlanes::BitPackedData -pub fn vortex_fastlanes::BitPackedArray::to_array(&self) -> vortex_array::array::ArrayRef +impl vortex_fastlanes::BitPackedData -impl core::clone::Clone for vortex_fastlanes::BitPackedArray +pub fn vortex_fastlanes::BitPackedData::bit_width(&self) -> u8 -pub fn vortex_fastlanes::BitPackedArray::clone(&self) -> vortex_fastlanes::BitPackedArray +pub fn vortex_fastlanes::BitPackedData::dtype(&self) -> &vortex_array::dtype::DType -impl core::convert::AsRef for vortex_fastlanes::BitPackedArray +pub fn vortex_fastlanes::BitPackedData::encode(array: &vortex_array::array::erased::ArrayRef, bit_width: u8) -> vortex_error::VortexResult -pub fn vortex_fastlanes::BitPackedArray::as_ref(&self) -> &dyn vortex_array::array::DynArray +pub fn vortex_fastlanes::BitPackedData::into_parts(self) -> vortex_fastlanes::BitPackedArrayParts -impl core::convert::From for vortex_array::array::ArrayRef +pub fn vortex_fastlanes::BitPackedData::is_empty(&self) -> bool -pub fn vortex_array::array::ArrayRef::from(value: vortex_fastlanes::BitPackedArray) -> vortex_array::array::ArrayRef +pub fn vortex_fastlanes::BitPackedData::len(&self) -> usize -impl core::fmt::Debug for vortex_fastlanes::BitPackedArray +pub fn vortex_fastlanes::BitPackedData::max_packed_value(&self) -> usize -pub fn vortex_fastlanes::BitPackedArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_fastlanes::BitPackedData::offset(&self) -> u16 -impl core::ops::deref::Deref for vortex_fastlanes::BitPackedArray +pub fn vortex_fastlanes::BitPackedData::packed(&self) -> &vortex_array::buffer::BufferHandle -pub type vortex_fastlanes::BitPackedArray::Target = dyn vortex_array::array::DynArray +pub fn vortex_fastlanes::BitPackedData::packed_slice(&self) -> &[T] -pub fn vortex_fastlanes::BitPackedArray::deref(&self) -> &Self::Target +pub fn vortex_fastlanes::BitPackedData::patches(&self) -> core::option::Option -impl vortex_array::array::IntoArray for vortex_fastlanes::BitPackedArray +pub fn vortex_fastlanes::BitPackedData::ptype(&self) -> vortex_array::dtype::ptype::PType -pub fn vortex_fastlanes::BitPackedArray::into_array(self) -> vortex_array::array::ArrayRef +pub fn vortex_fastlanes::BitPackedData::replace_patches(&mut self, patches: core::option::Option) -pub struct vortex_fastlanes::BitPackedArrayParts +pub fn vortex_fastlanes::BitPackedData::try_new(packed: vortex_array::buffer::BufferHandle, ptype: vortex_array::dtype::ptype::PType, validity: vortex_array::validity::Validity, patches: core::option::Option, bit_width: u8, length: usize, offset: u16) -> vortex_error::VortexResult -pub vortex_fastlanes::BitPackedArrayParts::bit_width: u8 +pub fn vortex_fastlanes::BitPackedData::unpacked_chunks(&self) -> vortex_fastlanes::unpack_iter::BitUnpackedChunks -pub vortex_fastlanes::BitPackedArrayParts::len: usize +pub fn vortex_fastlanes::BitPackedData::validity(&self) -> vortex_array::validity::Validity -pub vortex_fastlanes::BitPackedArrayParts::offset: u16 +pub fn vortex_fastlanes::BitPackedData::validity_mask(&self) -> vortex_mask::Mask -pub vortex_fastlanes::BitPackedArrayParts::packed: vortex_array::buffer::BufferHandle +impl core::clone::Clone for vortex_fastlanes::BitPackedData -pub vortex_fastlanes::BitPackedArrayParts::patches: core::option::Option +pub fn vortex_fastlanes::BitPackedData::clone(&self) -> vortex_fastlanes::BitPackedData -pub vortex_fastlanes::BitPackedArrayParts::validity: vortex_array::validity::Validity +impl core::convert::From for vortex_array::array::erased::ArrayRef + +pub fn vortex_array::array::erased::ArrayRef::from(value: vortex_fastlanes::BitPackedData) -> vortex_array::array::erased::ArrayRef + +impl core::fmt::Debug for vortex_fastlanes::BitPackedData + +pub fn vortex_fastlanes::BitPackedData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl vortex_array::array::IntoArray for vortex_fastlanes::BitPackedData + +pub fn vortex_fastlanes::BitPackedData::into_array(self) -> vortex_array::array::erased::ArrayRef pub struct vortex_fastlanes::Delta impl vortex_fastlanes::Delta -pub const vortex_fastlanes::Delta::ID: vortex_array::vtable::dyn_::ArrayId +pub const vortex_fastlanes::Delta::ID: vortex_array::array::ArrayId + +pub fn vortex_fastlanes::Delta::try_from_primitive_array(array: &vortex_array::arrays::primitive::vtable::PrimitiveArray, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult impl core::clone::Clone for vortex_fastlanes::Delta @@ -294,17 +292,9 @@ impl core::fmt::Debug for vortex_fastlanes::Delta pub fn vortex_fastlanes::Delta::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::slice::SliceReduce for vortex_fastlanes::Delta - -pub fn vortex_fastlanes::Delta::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_fastlanes::Delta - -pub fn vortex_fastlanes::Delta::cast(array: &vortex_fastlanes::DeltaArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> - -impl vortex_array::vtable::VTable for vortex_fastlanes::Delta +impl vortex_array::array::vtable::VTable for vortex_fastlanes::Delta -pub type vortex_fastlanes::Delta::Array = vortex_fastlanes::DeltaArray +pub type vortex_fastlanes::Delta::ArrayData = vortex_fastlanes::DeltaData pub type vortex_fastlanes::Delta::Metadata = vortex_array::metadata::ProstMetadata @@ -312,107 +302,105 @@ pub type vortex_fastlanes::Delta::OperationsVTable = vortex_fastlanes::Delta pub type vortex_fastlanes::Delta::ValidityVTable = vortex_fastlanes::Delta -pub fn vortex_fastlanes::Delta::array_eq(array: &vortex_fastlanes::DeltaArray, other: &vortex_fastlanes::DeltaArray, precision: vortex_array::hash::Precision) -> bool +pub fn vortex_fastlanes::Delta::array_eq(array: &vortex_fastlanes::DeltaData, other: &vortex_fastlanes::DeltaData, precision: vortex_array::hash::Precision) -> bool -pub fn vortex_fastlanes::Delta::array_hash(array: &vortex_fastlanes::DeltaArray, state: &mut H, precision: vortex_array::hash::Precision) +pub fn vortex_fastlanes::Delta::array_hash(array: &vortex_fastlanes::DeltaData, state: &mut H, precision: vortex_array::hash::Precision) -pub fn vortex_fastlanes::Delta::buffer(_array: &vortex_fastlanes::DeltaArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_fastlanes::Delta::buffer(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_fastlanes::Delta::buffer_name(_array: &vortex_fastlanes::DeltaArray, _idx: usize) -> core::option::Option +pub fn vortex_fastlanes::Delta::buffer_name(_array: vortex_array::array::view::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_fastlanes::Delta::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_fastlanes::Delta::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult pub fn vortex_fastlanes::Delta::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_fastlanes::Delta::dtype(array: &vortex_fastlanes::DeltaArray) -> &vortex_array::dtype::DType +pub fn vortex_fastlanes::Delta::dtype(array: &vortex_fastlanes::DeltaData) -> &vortex_array::dtype::DType -pub fn vortex_fastlanes::Delta::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_fastlanes::Delta::execute(array: vortex_array::array::typed::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_fastlanes::Delta::id(&self) -> vortex_array::vtable::dyn_::ArrayId +pub fn vortex_fastlanes::Delta::id(&self) -> vortex_array::array::ArrayId -pub fn vortex_fastlanes::Delta::len(array: &vortex_fastlanes::DeltaArray) -> usize +pub fn vortex_fastlanes::Delta::len(array: &vortex_fastlanes::DeltaData) -> usize -pub fn vortex_fastlanes::Delta::metadata(array: &vortex_fastlanes::DeltaArray) -> vortex_error::VortexResult +pub fn vortex_fastlanes::Delta::metadata(array: vortex_array::array::view::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_fastlanes::Delta::nbuffers(_array: &vortex_fastlanes::DeltaArray) -> usize +pub fn vortex_fastlanes::Delta::nbuffers(_array: vortex_array::array::view::ArrayView<'_, Self>) -> usize -pub fn vortex_fastlanes::Delta::reduce_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_fastlanes::Delta::reduce_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> pub fn vortex_fastlanes::Delta::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_fastlanes::Delta::slot_name(_array: &vortex_fastlanes::DeltaArray, idx: usize) -> alloc::string::String +pub fn vortex_fastlanes::Delta::slot_name(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_fastlanes::Delta::slots(array: &vortex_fastlanes::DeltaArray) -> &[core::option::Option] +pub fn vortex_fastlanes::Delta::slots(array: vortex_array::array::view::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_fastlanes::Delta::stats(array: &vortex_fastlanes::DeltaArray) -> vortex_array::stats::array::StatsSetRef<'_> +pub fn vortex_fastlanes::Delta::stats(array: &vortex_fastlanes::DeltaData) -> &vortex_array::stats::array::ArrayStats -pub fn vortex_fastlanes::Delta::vtable(_array: &Self::Array) -> &Self +pub fn vortex_fastlanes::Delta::vtable(_array: &vortex_fastlanes::DeltaData) -> &Self -pub fn vortex_fastlanes::Delta::with_slots(array: &mut vortex_fastlanes::DeltaArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_fastlanes::Delta::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl vortex_array::vtable::operations::OperationsVTable for vortex_fastlanes::Delta +impl vortex_array::array::vtable::operations::OperationsVTable for vortex_fastlanes::Delta -pub fn vortex_fastlanes::Delta::scalar_at(array: &vortex_fastlanes::DeltaArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_fastlanes::Delta::scalar_at(array: vortex_array::array::view::ArrayView<'_, vortex_fastlanes::Delta>, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::vtable::validity::ValidityVTable for vortex_fastlanes::Delta +impl vortex_array::array::vtable::validity::ValidityVTable for vortex_fastlanes::Delta -pub fn vortex_fastlanes::Delta::validity(array: &vortex_fastlanes::DeltaArray) -> vortex_error::VortexResult +pub fn vortex_fastlanes::Delta::validity(array: vortex_array::array::view::ArrayView<'_, vortex_fastlanes::Delta>) -> vortex_error::VortexResult -pub struct vortex_fastlanes::DeltaArray - -impl vortex_fastlanes::DeltaArray - -pub fn vortex_fastlanes::DeltaArray::bases(&self) -> &vortex_array::array::ArrayRef - -pub fn vortex_fastlanes::DeltaArray::deltas(&self) -> &vortex_array::array::ArrayRef +impl vortex_array::arrays::slice::SliceReduce for vortex_fastlanes::Delta -pub fn vortex_fastlanes::DeltaArray::dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_fastlanes::Delta::slice(array: vortex_array::array::view::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_fastlanes::DeltaArray::is_empty(&self) -> bool +impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_fastlanes::Delta -pub fn vortex_fastlanes::DeltaArray::len(&self) -> usize +pub fn vortex_fastlanes::Delta::cast(array: vortex_array::array::view::ArrayView<'_, Self>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_fastlanes::DeltaArray::offset(&self) -> usize +pub struct vortex_fastlanes::DeltaData -pub fn vortex_fastlanes::DeltaArray::try_from_primitive_array(array: &vortex_array::arrays::primitive::array::PrimitiveArray, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_fastlanes::DeltaData -pub fn vortex_fastlanes::DeltaArray::try_new(bases: vortex_array::array::ArrayRef, deltas: vortex_array::array::ArrayRef, offset: usize, len: usize) -> vortex_error::VortexResult +pub fn vortex_fastlanes::DeltaData::bases(&self) -> &vortex_array::array::erased::ArrayRef -impl vortex_fastlanes::DeltaArray +pub fn vortex_fastlanes::DeltaData::deltas(&self) -> &vortex_array::array::erased::ArrayRef -pub fn vortex_fastlanes::DeltaArray::to_array(&self) -> vortex_array::array::ArrayRef +pub fn vortex_fastlanes::DeltaData::dtype(&self) -> &vortex_array::dtype::DType -impl core::clone::Clone for vortex_fastlanes::DeltaArray +pub fn vortex_fastlanes::DeltaData::is_empty(&self) -> bool -pub fn vortex_fastlanes::DeltaArray::clone(&self) -> vortex_fastlanes::DeltaArray +pub fn vortex_fastlanes::DeltaData::len(&self) -> usize -impl core::convert::AsRef for vortex_fastlanes::DeltaArray +pub fn vortex_fastlanes::DeltaData::offset(&self) -> usize -pub fn vortex_fastlanes::DeltaArray::as_ref(&self) -> &dyn vortex_array::array::DynArray +pub fn vortex_fastlanes::DeltaData::try_from_primitive_array(array: &vortex_array::arrays::primitive::vtable::PrimitiveArray, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -impl core::convert::From for vortex_array::array::ArrayRef +pub fn vortex_fastlanes::DeltaData::try_new(bases: vortex_array::array::erased::ArrayRef, deltas: vortex_array::array::erased::ArrayRef, offset: usize, len: usize) -> vortex_error::VortexResult -pub fn vortex_array::array::ArrayRef::from(value: vortex_fastlanes::DeltaArray) -> vortex_array::array::ArrayRef +impl core::clone::Clone for vortex_fastlanes::DeltaData -impl core::fmt::Debug for vortex_fastlanes::DeltaArray +pub fn vortex_fastlanes::DeltaData::clone(&self) -> vortex_fastlanes::DeltaData -pub fn vortex_fastlanes::DeltaArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl core::convert::From for vortex_array::array::erased::ArrayRef -impl core::ops::deref::Deref for vortex_fastlanes::DeltaArray +pub fn vortex_array::array::erased::ArrayRef::from(value: vortex_fastlanes::DeltaData) -> vortex_array::array::erased::ArrayRef -pub type vortex_fastlanes::DeltaArray::Target = dyn vortex_array::array::DynArray +impl core::fmt::Debug for vortex_fastlanes::DeltaData -pub fn vortex_fastlanes::DeltaArray::deref(&self) -> &Self::Target +pub fn vortex_fastlanes::DeltaData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::array::IntoArray for vortex_fastlanes::DeltaArray +impl vortex_array::array::IntoArray for vortex_fastlanes::DeltaData -pub fn vortex_fastlanes::DeltaArray::into_array(self) -> vortex_array::array::ArrayRef +pub fn vortex_fastlanes::DeltaData::into_array(self) -> vortex_array::array::erased::ArrayRef pub struct vortex_fastlanes::FoR impl vortex_fastlanes::FoR -pub const vortex_fastlanes::FoR::ID: vortex_array::vtable::dyn_::ArrayId +pub const vortex_fastlanes::FoR::ID: vortex_array::array::ArrayId + +pub fn vortex_fastlanes::FoR::encode(array: vortex_array::arrays::primitive::vtable::PrimitiveArray) -> vortex_error::VortexResult + +pub fn vortex_fastlanes::FoR::try_new(encoded: vortex_array::array::erased::ArrayRef, reference: vortex_array::scalar::Scalar) -> vortex_error::VortexResult impl core::clone::Clone for vortex_fastlanes::FoR @@ -422,135 +410,131 @@ impl core::fmt::Debug for vortex_fastlanes::FoR pub fn vortex_fastlanes::FoR::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::take::TakeExecute for vortex_fastlanes::FoR - -pub fn vortex_fastlanes::FoR::take(array: &vortex_fastlanes::FoRArray, indices: &vortex_array::array::ArrayRef, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::arrays::filter::kernel::FilterReduce for vortex_fastlanes::FoR +impl vortex_array::array::vtable::VTable for vortex_fastlanes::FoR -pub fn vortex_fastlanes::FoR::filter(array: &vortex_fastlanes::FoRArray, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> +pub type vortex_fastlanes::FoR::ArrayData = vortex_fastlanes::FoRData -impl vortex_array::arrays::slice::SliceReduce for vortex_fastlanes::FoR - -pub fn vortex_fastlanes::FoR::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::binary::compare::CompareKernel for vortex_fastlanes::FoR +pub type vortex_fastlanes::FoR::Metadata = vortex_array::scalar::Scalar -pub fn vortex_fastlanes::FoR::compare(lhs: &vortex_fastlanes::FoRArray, rhs: &vortex_array::array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub type vortex_fastlanes::FoR::OperationsVTable = vortex_fastlanes::FoR -impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_fastlanes::FoR +pub type vortex_fastlanes::FoR::ValidityVTable = vortex_array::array::vtable::validity::ValidityVTableFromChild -pub fn vortex_fastlanes::FoR::cast(array: &vortex_fastlanes::FoRArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_fastlanes::FoR::array_eq(array: &vortex_fastlanes::FoRData, other: &vortex_fastlanes::FoRData, precision: vortex_array::hash::Precision) -> bool -impl vortex_array::vtable::VTable for vortex_fastlanes::FoR +pub fn vortex_fastlanes::FoR::array_hash(array: &vortex_fastlanes::FoRData, state: &mut H, precision: vortex_array::hash::Precision) -pub type vortex_fastlanes::FoR::Array = vortex_fastlanes::FoRArray +pub fn vortex_fastlanes::FoR::buffer(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub type vortex_fastlanes::FoR::Metadata = vortex_array::scalar::Scalar +pub fn vortex_fastlanes::FoR::buffer_name(_array: vortex_array::array::view::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub type vortex_fastlanes::FoR::OperationsVTable = vortex_fastlanes::FoR +pub fn vortex_fastlanes::FoR::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub type vortex_fastlanes::FoR::ValidityVTable = vortex_array::vtable::validity::ValidityVTableFromChild +pub fn vortex_fastlanes::FoR::deserialize(bytes: &[u8], dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_fastlanes::FoR::array_eq(array: &vortex_fastlanes::FoRArray, other: &vortex_fastlanes::FoRArray, precision: vortex_array::hash::Precision) -> bool +pub fn vortex_fastlanes::FoR::dtype(array: &vortex_fastlanes::FoRData) -> &vortex_array::dtype::DType -pub fn vortex_fastlanes::FoR::array_hash(array: &vortex_fastlanes::FoRArray, state: &mut H, precision: vortex_array::hash::Precision) +pub fn vortex_fastlanes::FoR::execute(array: vortex_array::array::typed::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_fastlanes::FoR::buffer(_array: &vortex_fastlanes::FoRArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_fastlanes::FoR::execute_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_fastlanes::FoR::buffer_name(_array: &vortex_fastlanes::FoRArray, _idx: usize) -> core::option::Option +pub fn vortex_fastlanes::FoR::id(&self) -> vortex_array::array::ArrayId -pub fn vortex_fastlanes::FoR::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_fastlanes::FoR::len(array: &vortex_fastlanes::FoRData) -> usize -pub fn vortex_fastlanes::FoR::deserialize(bytes: &[u8], dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_fastlanes::FoR::metadata(array: vortex_array::array::view::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_fastlanes::FoR::dtype(array: &vortex_fastlanes::FoRArray) -> &vortex_array::dtype::DType +pub fn vortex_fastlanes::FoR::nbuffers(_array: vortex_array::array::view::ArrayView<'_, Self>) -> usize -pub fn vortex_fastlanes::FoR::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_fastlanes::FoR::reduce_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_fastlanes::FoR::execute_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_fastlanes::FoR::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_fastlanes::FoR::id(&self) -> vortex_array::vtable::dyn_::ArrayId +pub fn vortex_fastlanes::FoR::slot_name(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_fastlanes::FoR::len(array: &vortex_fastlanes::FoRArray) -> usize +pub fn vortex_fastlanes::FoR::slots(array: vortex_array::array::view::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_fastlanes::FoR::metadata(array: &vortex_fastlanes::FoRArray) -> vortex_error::VortexResult +pub fn vortex_fastlanes::FoR::stats(array: &vortex_fastlanes::FoRData) -> &vortex_array::stats::array::ArrayStats -pub fn vortex_fastlanes::FoR::nbuffers(_array: &vortex_fastlanes::FoRArray) -> usize +pub fn vortex_fastlanes::FoR::vtable(_array: &vortex_fastlanes::FoRData) -> &Self -pub fn vortex_fastlanes::FoR::reduce_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_fastlanes::FoR::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_fastlanes::FoR::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +impl vortex_array::array::vtable::operations::OperationsVTable for vortex_fastlanes::FoR -pub fn vortex_fastlanes::FoR::slot_name(_array: &vortex_fastlanes::FoRArray, idx: usize) -> alloc::string::String +pub fn vortex_fastlanes::FoR::scalar_at(array: vortex_array::array::view::ArrayView<'_, vortex_fastlanes::FoR>, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_fastlanes::FoR::slots(array: &vortex_fastlanes::FoRArray) -> &[core::option::Option] +impl vortex_array::array::vtable::validity::ValidityChild for vortex_fastlanes::FoR -pub fn vortex_fastlanes::FoR::stats(array: &vortex_fastlanes::FoRArray) -> vortex_array::stats::array::StatsSetRef<'_> +pub fn vortex_fastlanes::FoR::validity_child(array: &vortex_fastlanes::FoRData) -> &vortex_array::array::erased::ArrayRef -pub fn vortex_fastlanes::FoR::vtable(_array: &Self::Array) -> &Self +impl vortex_array::arrays::dict::take::TakeExecute for vortex_fastlanes::FoR -pub fn vortex_fastlanes::FoR::with_slots(array: &mut vortex_fastlanes::FoRArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_fastlanes::FoR::take(array: vortex_array::array::view::ArrayView<'_, Self>, indices: &vortex_array::array::erased::ArrayRef, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::vtable::operations::OperationsVTable for vortex_fastlanes::FoR +impl vortex_array::arrays::filter::kernel::FilterReduce for vortex_fastlanes::FoR -pub fn vortex_fastlanes::FoR::scalar_at(array: &vortex_fastlanes::FoRArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_fastlanes::FoR::filter(array: vortex_array::array::view::ArrayView<'_, Self>, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> -impl vortex_array::vtable::validity::ValidityChild for vortex_fastlanes::FoR +impl vortex_array::arrays::slice::SliceReduce for vortex_fastlanes::FoR -pub fn vortex_fastlanes::FoR::validity_child(array: &vortex_fastlanes::FoRArray) -> &vortex_array::array::ArrayRef +pub fn vortex_fastlanes::FoR::slice(array: vortex_array::array::view::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub struct vortex_fastlanes::FoRArray +impl vortex_array::scalar_fn::fns::binary::compare::CompareKernel for vortex_fastlanes::FoR -impl vortex_fastlanes::FoRArray +pub fn vortex_fastlanes::FoR::compare(lhs: vortex_array::array::view::ArrayView<'_, Self>, rhs: &vortex_array::array::erased::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_fastlanes::FoRArray::encode(array: vortex_array::arrays::primitive::array::PrimitiveArray) -> vortex_error::VortexResult +impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_fastlanes::FoR -impl vortex_fastlanes::FoRArray +pub fn vortex_fastlanes::FoR::cast(array: vortex_array::array::view::ArrayView<'_, Self>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_fastlanes::FoRArray::encoded(&self) -> &vortex_array::array::ArrayRef +pub struct vortex_fastlanes::FoRData -pub fn vortex_fastlanes::FoRArray::ptype(&self) -> vortex_array::dtype::ptype::PType +impl vortex_fastlanes::FoRData -pub fn vortex_fastlanes::FoRArray::reference_scalar(&self) -> &vortex_array::scalar::Scalar +pub fn vortex_fastlanes::FoRData::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_fastlanes::FoRArray::try_new(encoded: vortex_array::array::ArrayRef, reference: vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_fastlanes::FoRData::encoded(&self) -> &vortex_array::array::erased::ArrayRef -impl vortex_fastlanes::FoRArray +pub fn vortex_fastlanes::FoRData::is_empty(&self) -> bool -pub fn vortex_fastlanes::FoRArray::to_array(&self) -> vortex_array::array::ArrayRef +pub fn vortex_fastlanes::FoRData::len(&self) -> usize -impl core::clone::Clone for vortex_fastlanes::FoRArray +pub fn vortex_fastlanes::FoRData::ptype(&self) -> vortex_array::dtype::ptype::PType -pub fn vortex_fastlanes::FoRArray::clone(&self) -> vortex_fastlanes::FoRArray +pub fn vortex_fastlanes::FoRData::reference_scalar(&self) -> &vortex_array::scalar::Scalar -impl core::convert::AsRef for vortex_fastlanes::FoRArray +pub fn vortex_fastlanes::FoRData::try_new(encoded: vortex_array::array::erased::ArrayRef, reference: vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub fn vortex_fastlanes::FoRArray::as_ref(&self) -> &dyn vortex_array::array::DynArray +impl vortex_fastlanes::FoRData -impl core::convert::From for vortex_array::array::ArrayRef +pub fn vortex_fastlanes::FoRData::encode(array: vortex_array::arrays::primitive::vtable::PrimitiveArray) -> vortex_error::VortexResult -pub fn vortex_array::array::ArrayRef::from(value: vortex_fastlanes::FoRArray) -> vortex_array::array::ArrayRef +impl core::clone::Clone for vortex_fastlanes::FoRData -impl core::fmt::Debug for vortex_fastlanes::FoRArray +pub fn vortex_fastlanes::FoRData::clone(&self) -> vortex_fastlanes::FoRData -pub fn vortex_fastlanes::FoRArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl core::convert::From for vortex_array::array::erased::ArrayRef -impl core::ops::deref::Deref for vortex_fastlanes::FoRArray +pub fn vortex_array::array::erased::ArrayRef::from(value: vortex_fastlanes::FoRData) -> vortex_array::array::erased::ArrayRef -pub type vortex_fastlanes::FoRArray::Target = dyn vortex_array::array::DynArray +impl core::fmt::Debug for vortex_fastlanes::FoRData -pub fn vortex_fastlanes::FoRArray::deref(&self) -> &Self::Target +pub fn vortex_fastlanes::FoRData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::array::IntoArray for vortex_fastlanes::FoRArray +impl vortex_array::array::IntoArray for vortex_fastlanes::FoRData -pub fn vortex_fastlanes::FoRArray::into_array(self) -> vortex_array::array::ArrayRef +pub fn vortex_fastlanes::FoRData::into_array(self) -> vortex_array::array::erased::ArrayRef pub struct vortex_fastlanes::RLE impl vortex_fastlanes::RLE -pub const vortex_fastlanes::RLE::ID: vortex_array::vtable::dyn_::ArrayId +pub const vortex_fastlanes::RLE::ID: vortex_array::array::ArrayId + +pub fn vortex_fastlanes::RLE::encode(array: &vortex_array::arrays::primitive::vtable::PrimitiveArray) -> vortex_error::VortexResult + +pub unsafe fn vortex_fastlanes::RLE::new_unchecked(values: vortex_array::array::erased::ArrayRef, indices: vortex_array::array::erased::ArrayRef, values_idx_offsets: vortex_array::array::erased::ArrayRef, dtype: vortex_array::dtype::DType, offset: usize, length: usize) -> vortex_fastlanes::RLEArray impl core::clone::Clone for vortex_fastlanes::RLE @@ -560,132 +544,126 @@ impl core::fmt::Debug for vortex_fastlanes::RLE pub fn vortex_fastlanes::RLE::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::slice::SliceKernel for vortex_fastlanes::RLE +impl vortex_array::array::vtable::VTable for vortex_fastlanes::RLE -pub fn vortex_fastlanes::RLE::slice(array: &vortex_fastlanes::RLEArray, range: core::ops::range::Range, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_fastlanes::RLE - -pub fn vortex_fastlanes::RLE::cast(array: &vortex_fastlanes::RLEArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> - -impl vortex_array::vtable::VTable for vortex_fastlanes::RLE - -pub type vortex_fastlanes::RLE::Array = vortex_fastlanes::RLEArray +pub type vortex_fastlanes::RLE::ArrayData = vortex_fastlanes::RLEData pub type vortex_fastlanes::RLE::Metadata = vortex_array::metadata::ProstMetadata pub type vortex_fastlanes::RLE::OperationsVTable = vortex_fastlanes::RLE -pub type vortex_fastlanes::RLE::ValidityVTable = vortex_array::vtable::validity::ValidityVTableFromChildSliceHelper +pub type vortex_fastlanes::RLE::ValidityVTable = vortex_array::array::vtable::validity::ValidityVTableFromChildSliceHelper -pub fn vortex_fastlanes::RLE::array_eq(array: &vortex_fastlanes::RLEArray, other: &vortex_fastlanes::RLEArray, precision: vortex_array::hash::Precision) -> bool +pub fn vortex_fastlanes::RLE::array_eq(array: &vortex_fastlanes::RLEData, other: &vortex_fastlanes::RLEData, precision: vortex_array::hash::Precision) -> bool -pub fn vortex_fastlanes::RLE::array_hash(array: &vortex_fastlanes::RLEArray, state: &mut H, precision: vortex_array::hash::Precision) +pub fn vortex_fastlanes::RLE::array_hash(array: &vortex_fastlanes::RLEData, state: &mut H, precision: vortex_array::hash::Precision) -pub fn vortex_fastlanes::RLE::buffer(_array: &vortex_fastlanes::RLEArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_fastlanes::RLE::buffer(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_fastlanes::RLE::buffer_name(_array: &vortex_fastlanes::RLEArray, _idx: usize) -> core::option::Option +pub fn vortex_fastlanes::RLE::buffer_name(_array: vortex_array::array::view::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_fastlanes::RLE::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_fastlanes::RLE::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult pub fn vortex_fastlanes::RLE::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_fastlanes::RLE::dtype(array: &vortex_fastlanes::RLEArray) -> &vortex_array::dtype::DType +pub fn vortex_fastlanes::RLE::dtype(array: &vortex_fastlanes::RLEData) -> &vortex_array::dtype::DType -pub fn vortex_fastlanes::RLE::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_fastlanes::RLE::execute(array: vortex_array::array::typed::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_fastlanes::RLE::execute_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_fastlanes::RLE::execute_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_fastlanes::RLE::id(&self) -> vortex_array::vtable::dyn_::ArrayId +pub fn vortex_fastlanes::RLE::id(&self) -> vortex_array::array::ArrayId -pub fn vortex_fastlanes::RLE::len(array: &vortex_fastlanes::RLEArray) -> usize +pub fn vortex_fastlanes::RLE::len(array: &vortex_fastlanes::RLEData) -> usize -pub fn vortex_fastlanes::RLE::metadata(array: &vortex_fastlanes::RLEArray) -> vortex_error::VortexResult +pub fn vortex_fastlanes::RLE::metadata(array: vortex_array::array::view::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_fastlanes::RLE::nbuffers(_array: &vortex_fastlanes::RLEArray) -> usize +pub fn vortex_fastlanes::RLE::nbuffers(_array: vortex_array::array::view::ArrayView<'_, Self>) -> usize -pub fn vortex_fastlanes::RLE::reduce_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_fastlanes::RLE::reduce_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> pub fn vortex_fastlanes::RLE::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_fastlanes::RLE::slot_name(_array: &vortex_fastlanes::RLEArray, idx: usize) -> alloc::string::String +pub fn vortex_fastlanes::RLE::slot_name(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_fastlanes::RLE::slots(array: &vortex_fastlanes::RLEArray) -> &[core::option::Option] +pub fn vortex_fastlanes::RLE::slots(array: vortex_array::array::view::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_fastlanes::RLE::stats(array: &vortex_fastlanes::RLEArray) -> vortex_array::stats::array::StatsSetRef<'_> +pub fn vortex_fastlanes::RLE::stats(array: &vortex_fastlanes::RLEData) -> &vortex_array::stats::array::ArrayStats -pub fn vortex_fastlanes::RLE::vtable(_array: &Self::Array) -> &Self +pub fn vortex_fastlanes::RLE::vtable(_array: &vortex_fastlanes::RLEData) -> &Self -pub fn vortex_fastlanes::RLE::with_slots(array: &mut vortex_fastlanes::RLEArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_fastlanes::RLE::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl vortex_array::vtable::operations::OperationsVTable for vortex_fastlanes::RLE +impl vortex_array::array::vtable::operations::OperationsVTable for vortex_fastlanes::RLE -pub fn vortex_fastlanes::RLE::scalar_at(array: &vortex_fastlanes::RLEArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_fastlanes::RLE::scalar_at(array: vortex_array::array::view::ArrayView<'_, vortex_fastlanes::RLE>, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::vtable::validity::ValidityChild for vortex_fastlanes::RLE +impl vortex_array::array::vtable::validity::ValidityChild for vortex_fastlanes::RLE -pub fn vortex_fastlanes::RLE::validity_child(array: &vortex_fastlanes::RLEArray) -> &vortex_array::array::ArrayRef +pub fn vortex_fastlanes::RLE::validity_child(array: &vortex_fastlanes::RLEData) -> &vortex_array::array::erased::ArrayRef -pub struct vortex_fastlanes::RLEArray +impl vortex_array::arrays::slice::SliceKernel for vortex_fastlanes::RLE -impl vortex_fastlanes::RLEArray +pub fn vortex_fastlanes::RLE::slice(array: vortex_array::array::view::ArrayView<'_, Self>, range: core::ops::range::Range, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_fastlanes::RLEArray::dtype(&self) -> &vortex_array::dtype::DType +impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_fastlanes::RLE -pub fn vortex_fastlanes::RLEArray::indices(&self) -> &vortex_array::array::ArrayRef +pub fn vortex_fastlanes::RLE::cast(array: vortex_array::array::view::ArrayView<'_, Self>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_fastlanes::RLEArray::is_empty(&self) -> bool +pub struct vortex_fastlanes::RLEData -pub fn vortex_fastlanes::RLEArray::len(&self) -> usize +impl vortex_fastlanes::RLEData -pub unsafe fn vortex_fastlanes::RLEArray::new_unchecked(values: vortex_array::array::ArrayRef, indices: vortex_array::array::ArrayRef, values_idx_offsets: vortex_array::array::ArrayRef, dtype: vortex_array::dtype::DType, offset: usize, length: usize) -> Self +pub fn vortex_fastlanes::RLEData::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_fastlanes::RLEArray::offset(&self) -> usize +pub fn vortex_fastlanes::RLEData::indices(&self) -> &vortex_array::array::erased::ArrayRef -pub fn vortex_fastlanes::RLEArray::try_new(values: vortex_array::array::ArrayRef, indices: vortex_array::array::ArrayRef, values_idx_offsets: vortex_array::array::ArrayRef, offset: usize, length: usize) -> vortex_error::VortexResult +pub fn vortex_fastlanes::RLEData::is_empty(&self) -> bool -pub fn vortex_fastlanes::RLEArray::values(&self) -> &vortex_array::array::ArrayRef +pub fn vortex_fastlanes::RLEData::len(&self) -> usize -pub fn vortex_fastlanes::RLEArray::values_idx_offsets(&self) -> &vortex_array::array::ArrayRef +pub unsafe fn vortex_fastlanes::RLEData::new_unchecked(values: vortex_array::array::erased::ArrayRef, indices: vortex_array::array::erased::ArrayRef, values_idx_offsets: vortex_array::array::erased::ArrayRef, dtype: vortex_array::dtype::DType, offset: usize, length: usize) -> Self -impl vortex_fastlanes::RLEArray +pub fn vortex_fastlanes::RLEData::offset(&self) -> usize -pub fn vortex_fastlanes::RLEArray::encode(array: &vortex_array::arrays::primitive::array::PrimitiveArray) -> vortex_error::VortexResult +pub fn vortex_fastlanes::RLEData::try_new(values: vortex_array::array::erased::ArrayRef, indices: vortex_array::array::erased::ArrayRef, values_idx_offsets: vortex_array::array::erased::ArrayRef, offset: usize, length: usize) -> vortex_error::VortexResult -impl vortex_fastlanes::RLEArray +pub fn vortex_fastlanes::RLEData::values(&self) -> &vortex_array::array::erased::ArrayRef -pub fn vortex_fastlanes::RLEArray::to_array(&self) -> vortex_array::array::ArrayRef +pub fn vortex_fastlanes::RLEData::values_idx_offsets(&self) -> &vortex_array::array::erased::ArrayRef -impl core::clone::Clone for vortex_fastlanes::RLEArray +impl vortex_fastlanes::RLEData -pub fn vortex_fastlanes::RLEArray::clone(&self) -> vortex_fastlanes::RLEArray +pub fn vortex_fastlanes::RLEData::encode(array: &vortex_array::arrays::primitive::vtable::PrimitiveArray) -> vortex_error::VortexResult -impl core::convert::AsRef for vortex_fastlanes::RLEArray +impl core::clone::Clone for vortex_fastlanes::RLEData -pub fn vortex_fastlanes::RLEArray::as_ref(&self) -> &dyn vortex_array::array::DynArray +pub fn vortex_fastlanes::RLEData::clone(&self) -> vortex_fastlanes::RLEData -impl core::convert::From for vortex_array::array::ArrayRef +impl core::convert::From for vortex_array::array::erased::ArrayRef -pub fn vortex_array::array::ArrayRef::from(value: vortex_fastlanes::RLEArray) -> vortex_array::array::ArrayRef +pub fn vortex_array::array::erased::ArrayRef::from(value: vortex_fastlanes::RLEData) -> vortex_array::array::erased::ArrayRef -impl core::fmt::Debug for vortex_fastlanes::RLEArray +impl core::fmt::Debug for vortex_fastlanes::RLEData -pub fn vortex_fastlanes::RLEArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_fastlanes::RLEData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::ops::deref::Deref for vortex_fastlanes::RLEArray +impl vortex_array::array::IntoArray for vortex_fastlanes::RLEData -pub type vortex_fastlanes::RLEArray::Target = dyn vortex_array::array::DynArray +pub fn vortex_fastlanes::RLEData::into_array(self) -> vortex_array::array::erased::ArrayRef -pub fn vortex_fastlanes::RLEArray::deref(&self) -> &Self::Target +impl vortex_array::array::vtable::validity::ValidityChildSliceHelper for vortex_fastlanes::RLEData -impl vortex_array::array::IntoArray for vortex_fastlanes::RLEArray +pub fn vortex_fastlanes::RLEData::unsliced_child_and_slice(&self) -> (&vortex_array::array::erased::ArrayRef, usize, usize) -pub fn vortex_fastlanes::RLEArray::into_array(self) -> vortex_array::array::ArrayRef +pub fn vortex_fastlanes::delta_compress(array: &vortex_array::arrays::primitive::vtable::PrimitiveArray, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult<(vortex_array::arrays::primitive::vtable::PrimitiveArray, vortex_array::arrays::primitive::vtable::PrimitiveArray)> -impl vortex_array::vtable::validity::ValidityChildSliceHelper for vortex_fastlanes::RLEArray +pub fn vortex_fastlanes::initialize(session: &mut vortex_session::VortexSession) -pub fn vortex_fastlanes::RLEArray::unsliced_child_and_slice(&self) -> (&vortex_array::array::ArrayRef, usize, usize) +pub type vortex_fastlanes::BitPackedArray = vortex_array::array::typed::Array -pub fn vortex_fastlanes::delta_compress(array: &vortex_array::arrays::primitive::array::PrimitiveArray, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult<(vortex_array::arrays::primitive::array::PrimitiveArray, vortex_array::arrays::primitive::array::PrimitiveArray)> +pub type vortex_fastlanes::DeltaArray = vortex_array::array::typed::Array -pub fn vortex_fastlanes::initialize(session: &mut vortex_session::VortexSession) +pub type vortex_fastlanes::FoRArray = vortex_array::array::typed::Array + +pub type vortex_fastlanes::RLEArray = vortex_array::array::typed::Array diff --git a/encodings/fastlanes/src/bitpacking/array/bitpack_compress.rs b/encodings/fastlanes/src/bitpacking/array/bitpack_compress.rs index e56f39633f5..43ae4e410c5 100644 --- a/encodings/fastlanes/src/bitpacking/array/bitpack_compress.rs +++ b/encodings/fastlanes/src/bitpacking/array/bitpack_compress.rs @@ -24,6 +24,7 @@ use vortex_mask::AllOr; use vortex_mask::Mask; use crate::BitPackedArray; +use crate::BitPackedData; use crate::bitpack_decompress; pub fn bitpack_to_best_bit_width(array: &PrimitiveArray) -> VortexResult { @@ -72,7 +73,7 @@ pub fn bitpack_encode( // SAFETY: all components validated above let bitpacked = unsafe { - BitPackedArray::new_unchecked( + BitPackedData::new_unchecked( BufferHandle::new_host(packed), array.dtype().clone(), array.validity(), @@ -82,10 +83,15 @@ pub fn bitpack_encode( 0, ) }; - bitpacked - .stats_set - .to_ref(bitpacked.as_ref()) - .inherit_from(array.statistics()); + let bitpacked = + BitPackedArray::try_from_data(bitpacked).vortex_expect("BitPackedData is always valid"); + { + let bp_ref = bitpacked.clone().into_array(); + bitpacked + .stats_set + .to_ref(&bp_ref) + .inherit_from(array.statistics()); + } Ok(bitpacked) } @@ -105,8 +111,8 @@ pub unsafe fn bitpack_encode_unchecked( let packed = unsafe { bitpack_unchecked(&array, bit_width) }; // SAFETY: checked by bitpack_unchecked - let bitpacked = unsafe { - BitPackedArray::new_unchecked( + let data = unsafe { + BitPackedData::new_unchecked( BufferHandle::new_host(packed), array.dtype().clone(), array.validity(), @@ -116,10 +122,16 @@ pub unsafe fn bitpack_encode_unchecked( 0, ) }; - bitpacked - .stats_set - .to_ref(bitpacked.as_ref()) - .inherit_from(array.statistics()); + let bitpacked = + BitPackedArray::try_from_data(data).vortex_expect("BitPackedData is always valid"); + { + let bp_ref = bitpacked.clone().into_array(); + let arr_ref = array.into_array(); + bitpacked + .stats_set + .to_ref(&bp_ref) + .inherit_from(arr_ref.statistics()); + } Ok(bitpacked) } @@ -456,7 +468,7 @@ mod test { Validity::from_iter(valid_values), ); assert!(values.ptype().is_unsigned_int()); - let compressed = BitPackedArray::encode(&values.into_array(), 4).unwrap(); + let compressed = BitPackedData::encode(&values.into_array(), 4).unwrap(); assert!(compressed.patches().is_none()); assert_eq!( (0..(1 << 4)).collect::>(), @@ -475,7 +487,7 @@ mod test { let array = PrimitiveArray::new(values, Validity::AllValid); assert!(array.ptype().is_signed_int()); - let err = BitPackedArray::encode(&array.into_array(), 1024u32.ilog2() as u8).unwrap_err(); + let err = BitPackedData::encode(&array.into_array(), 1024u32.ilog2() as u8).unwrap_err(); assert!(matches!(err, VortexError::InvalidArgument(_, _))); } @@ -488,12 +500,10 @@ mod test { .collect::>(); let chunked = ChunkedArray::from_iter(chunks).into_array(); - let into_ca = chunked.clone().to_primitive(); + let into_ca = chunked.to_primitive(); let mut primitive_builder = PrimitiveBuilder::::with_capacity(chunked.dtype().nullability(), 10 * 100); - chunked - .clone() - .append_to_builder(&mut primitive_builder, &mut SESSION.create_execution_ctx())?; + chunked.append_to_builder(&mut primitive_builder, &mut SESSION.create_execution_ctx())?; let ca_into = primitive_builder.finish(); assert_arrays_eq!(into_ca, ca_into); diff --git a/encodings/fastlanes/src/bitpacking/array/bitpack_decompress.rs b/encodings/fastlanes/src/bitpacking/array/bitpack_decompress.rs index 372ac81af52..4f31154d598 100644 --- a/encodings/fastlanes/src/bitpacking/array/bitpack_decompress.rs +++ b/encodings/fastlanes/src/bitpacking/array/bitpack_decompress.rs @@ -17,21 +17,18 @@ use vortex_array::scalar::Scalar; use vortex_error::VortexExpect; use vortex_error::VortexResult; -use crate::BitPackedArray; +use crate::BitPackedData; use crate::unpack_iter::BitPacked; /// Unpacks a bit-packed array into a primitive array. -pub fn unpack_array( - array: &BitPackedArray, - ctx: &mut ExecutionCtx, -) -> VortexResult { +pub fn unpack_array(array: &BitPackedData, ctx: &mut ExecutionCtx) -> VortexResult { match_each_integer_ptype!(array.ptype(), |P| { unpack_primitive_array::

(array, ctx) }) } pub fn unpack_primitive_array( - array: &BitPackedArray, + array: &BitPackedData, ctx: &mut ExecutionCtx, ) -> VortexResult { let mut builder = PrimitiveBuilder::with_capacity(array.dtype().nullability(), array.len()); @@ -41,7 +38,7 @@ pub fn unpack_primitive_array( } pub(crate) fn unpack_into_primitive_builder( - array: &BitPackedArray, + array: &BitPackedData, // TODO(ngates): do we want to use fastlanes alignment for this buffer? builder: &mut PrimitiveBuilder, ctx: &mut ExecutionCtx, @@ -56,7 +53,7 @@ pub(crate) fn unpack_into_primitive_builder( // SAFETY: We later initialize the the uninitialized range of values with `copy_from_slice`. unsafe { // Append a dense null Mask. - uninit_range.append_mask(array.validity_mask()?); + uninit_range.append_mask(array.validity_mask()); } // SAFETY: `decode_into` will initialize all values in this range. @@ -109,7 +106,7 @@ pub fn apply_patches_to_uninit_range_fn T>( Ok(()) } -pub fn unpack_single(array: &BitPackedArray, index: usize) -> Scalar { +pub fn unpack_single(array: &BitPackedData, index: usize) -> Scalar { let bit_width = array.bit_width() as usize; let ptype = array.ptype(); // let packed = array.packed().into_primitive()?; @@ -170,14 +167,20 @@ mod tests { use vortex_session::VortexSession; use super::*; + use crate::BitPackedArray; + use crate::BitPackedData; use crate::bitpack_compress::bitpack_encode; + fn encode(array: &PrimitiveArray, bit_width: u8) -> BitPackedArray { + bitpack_encode(array, bit_width, None).unwrap() + } + static SESSION: LazyLock = LazyLock::new(|| VortexSession::empty().with::()); fn compression_roundtrip(n: usize) { let values = PrimitiveArray::from_iter((0..n).map(|i| (i % 2047) as u16)); - let compressed = BitPackedArray::encode(&values.clone().into_array(), 11).unwrap(); + let compressed = BitPackedData::encode(&values.clone().into_array(), 11).unwrap(); assert_arrays_eq!(compressed, values); values @@ -206,7 +209,7 @@ mod tests { #[test] fn test_all_zeros() -> VortexResult<()> { let zeros = buffer![0u16, 0, 0, 0].into_array().to_primitive(); - let bitpacked = bitpack_encode(&zeros, 0, None)?; + let bitpacked = encode(&zeros, 0); let actual = unpack_array(&bitpacked, &mut SESSION.create_execution_ctx())?; assert_arrays_eq!(actual, PrimitiveArray::from_iter([0u16, 0, 0, 0])); Ok(()) @@ -215,7 +218,7 @@ mod tests { #[test] fn test_simple_patches() -> VortexResult<()> { let zeros = buffer![0u16, 1, 0, 1].into_array().to_primitive(); - let bitpacked = bitpack_encode(&zeros, 0, None).unwrap(); + let bitpacked = encode(&zeros, 0); let actual = unpack_array(&bitpacked, &mut SESSION.create_execution_ctx())?; assert_arrays_eq!(actual, PrimitiveArray::from_iter([0u16, 1, 0, 1])); Ok(()) @@ -224,7 +227,7 @@ mod tests { #[test] fn test_one_full_chunk() -> VortexResult<()> { let zeros = BufferMut::from_iter(0u16..1024).into_array().to_primitive(); - let bitpacked = bitpack_encode(&zeros, 10, None).unwrap(); + let bitpacked = encode(&zeros, 10); let actual = unpack_array(&bitpacked, &mut SESSION.create_execution_ctx())?; assert_arrays_eq!(actual, PrimitiveArray::from_iter(0u16..1024)); Ok(()) @@ -235,7 +238,7 @@ mod tests { let zeros = BufferMut::from_iter((5u16..1029).chain(5u16..1029).chain(5u16..1029)) .into_array() .to_primitive(); - let bitpacked = bitpack_encode(&zeros, 10, None).unwrap(); + let bitpacked = encode(&zeros, 10); assert!(bitpacked.patches().is_some()); let actual = unpack_array(&bitpacked, &mut SESSION.create_execution_ctx())?; assert_arrays_eq!( @@ -248,7 +251,7 @@ mod tests { #[test] fn test_one_full_chunk_and_one_short_chunk_no_patch() -> VortexResult<()> { let zeros = BufferMut::from_iter(0u16..1025).into_array().to_primitive(); - let bitpacked = bitpack_encode(&zeros, 11, None).unwrap(); + let bitpacked = encode(&zeros, 11); assert!(bitpacked.patches().is_none()); let actual = unpack_array(&bitpacked, &mut SESSION.create_execution_ctx())?; assert_arrays_eq!(actual, PrimitiveArray::from_iter(0u16..1025)); @@ -260,7 +263,7 @@ mod tests { let zeros = BufferMut::from_iter(512u16..1537) .into_array() .to_primitive(); - let bitpacked = bitpack_encode(&zeros, 10, None).unwrap(); + let bitpacked = encode(&zeros, 10); assert_eq!(bitpacked.len(), 1025); assert!(bitpacked.patches().is_some()); let actual = unpack_array(&bitpacked, &mut SESSION.create_execution_ctx())?; @@ -273,14 +276,13 @@ mod tests { let zeros = BufferMut::from_iter(512u16..1537) .into_array() .to_primitive(); - let bitpacked = bitpack_encode(&zeros, 10, None).unwrap(); + let bitpacked = encode(&zeros, 10); assert_eq!(bitpacked.len(), 1025); assert!(bitpacked.patches().is_some()); let slice_ref = bitpacked.into_array().slice(1023..1025).unwrap(); let actual = { let mut ctx = SESSION.create_execution_ctx(); slice_ref - .clone() .execute::(&mut ctx) .unwrap() .into_primitive() @@ -294,14 +296,13 @@ mod tests { let zeros = BufferMut::from_iter(512u16..2741) .into_array() .to_primitive(); - let bitpacked = bitpack_encode(&zeros, 10, None).unwrap(); + let bitpacked = encode(&zeros, 10); assert_eq!(bitpacked.len(), 2229); assert!(bitpacked.patches().is_some()); let slice_ref = bitpacked.into_array().slice(1023..2049).unwrap(); let actual = { let mut ctx = SESSION.create_execution_ctx(); slice_ref - .clone() .execute::(&mut ctx) .unwrap() .into_primitive() @@ -316,7 +317,7 @@ mod tests { #[test] fn test_unpack_into_empty_array() -> VortexResult<()> { let empty: PrimitiveArray = PrimitiveArray::from_iter(Vec::::new()); - let bitpacked = bitpack_encode(&empty, 0, None).unwrap(); + let bitpacked = encode(&empty, 0); let mut builder = PrimitiveBuilder::::new(Nullability::NonNullable); unpack_into_primitive_builder( @@ -343,7 +344,7 @@ mod tests { let array = PrimitiveArray::new(values, validity); // Bitpack the array. - let bitpacked = bitpack_encode(&array, 3, None).unwrap(); + let bitpacked = encode(&array, 3); // Unpack into a new builder. let mut builder = PrimitiveBuilder::::with_capacity(Nullability::Nullable, 5); @@ -375,7 +376,7 @@ mod tests { let array = PrimitiveArray::from_iter(values.clone()); // Bitpack with a bit width that will require patches. - let bitpacked = bitpack_encode(&array, 4, None).unwrap(); + let bitpacked = encode(&array, 4); assert!( bitpacked.patches().is_some(), "Should have patches for values > 15" @@ -408,7 +409,7 @@ mod tests { let array = PrimitiveArray::new(values, Validity::NonNullable); // Bitpack with a small bit width to force patches. - let bitpacked = bitpack_encode(&array, 6, None).unwrap(); + let bitpacked = encode(&array, 6); assert!(bitpacked.patches().is_some(), "Should have patches"); // Test with a larger array with multiple patches across chunks. @@ -422,7 +423,7 @@ mod tests { }) .collect(); let large_array = PrimitiveArray::from_iter(large_values); - let large_bitpacked = bitpack_encode(&large_array, 8, None).unwrap(); + let large_bitpacked = encode(&large_array, 8); assert!(large_bitpacked.patches().is_some()); let large_result = unpack_array(&large_bitpacked, &mut SESSION.create_execution_ctx())?; @@ -438,7 +439,7 @@ mod tests { let validity = Validity::from_iter([true, false, true, false, true, false, true]); let array = PrimitiveArray::new(values, validity); - let bitpacked = bitpack_encode(&array, 9, None).unwrap(); + let bitpacked = encode(&array, 9); let result = unpack_array(&bitpacked, &mut SESSION.create_execution_ctx()).vortex_expect("unpack"); @@ -454,7 +455,7 @@ mod tests { let patch_validity = Validity::from_iter([true, false, true, false, true, true, false]); let patch_array = PrimitiveArray::new(patch_values, patch_validity); - let patch_bitpacked = bitpack_encode(&patch_array, 5, None).unwrap(); + let patch_bitpacked = encode(&patch_array, 5); assert!(patch_bitpacked.patches().is_some()); let patch_result = unpack_array(&patch_bitpacked, &mut SESSION.create_execution_ctx()) @@ -466,7 +467,7 @@ mod tests { Buffer::from_iter([0u32, 0, 0, 0]), Validity::from_iter([false, false, false, false]), ); - let all_nulls_bp = bitpack_encode(&all_nulls, 0, None).unwrap(); + let all_nulls_bp = encode(&all_nulls, 0); let all_nulls_result = unpack_array(&all_nulls_bp, &mut SESSION.create_execution_ctx()) .vortex_expect("unpack"); assert_eq!(all_nulls_result.len(), 4); @@ -477,7 +478,7 @@ mod tests { fn test_execute_method_consistency() -> VortexResult<()> { // Test that execute(), unpack_to_primitive(), and unpack_array() all produce consistent results. let test_consistency = |array: &PrimitiveArray, bit_width: u8| -> VortexResult<()> { - let bitpacked = bitpack_encode(array, bit_width, None).unwrap(); + let bitpacked = encode(array, bit_width); let unpacked_array = unpack_array(&bitpacked, &mut SESSION.create_execution_ctx())?; @@ -538,7 +539,7 @@ mod tests { // Test with sliced array (offset > 0). let values = PrimitiveArray::from_iter(0u32..2048); - let bitpacked = bitpack_encode(&values, 11, None).unwrap(); + let bitpacked = encode(&values, 11); let slice_ref = bitpacked.into_array().slice(500..1500).unwrap(); let sliced = { let mut ctx = SESSION.create_execution_ctx(); @@ -554,7 +555,7 @@ mod tests { let unpacked_array = sliced; let executed = { let mut ctx = SESSION.create_execution_ctx(); - slice_ref.clone().execute::(&mut ctx).unwrap() + slice_ref.execute::(&mut ctx).unwrap() }; assert_eq!( @@ -582,13 +583,13 @@ mod tests { fn test_unpack_edge_cases() -> VortexResult<()> { // Empty array. let empty: PrimitiveArray = PrimitiveArray::from_iter(Vec::::new()); - let empty_bp = bitpack_encode(&empty, 0, None).unwrap(); + let empty_bp = encode(&empty, 0); let empty_result = unpack_array(&empty_bp, &mut SESSION.create_execution_ctx())?; assert_eq!(empty_result.len(), 0); // All zeros (bit_width = 0). let zeros = PrimitiveArray::from_iter([0u32; 100]); - let zeros_bp = bitpack_encode(&zeros, 0, None).unwrap(); + let zeros_bp = encode(&zeros, 0); let zeros_result = unpack_array(&zeros_bp, &mut SESSION.create_execution_ctx())?; assert_eq!(zeros_result.len(), 100); // Verify consistency with unpack_array. @@ -598,7 +599,7 @@ mod tests { // Maximum bit width for u16 (15 bits, since bitpacking requires bit_width < type bit width). let max_values = PrimitiveArray::from_iter([32767u16; 50]); // 2^15 - 1 - let max_bp = bitpack_encode(&max_values, 15, None).unwrap(); + let max_bp = encode(&max_values, 15); let max_result = unpack_array(&max_bp, &mut SESSION.create_execution_ctx())?; assert_eq!(max_result.len(), 50); @@ -613,7 +614,7 @@ mod tests { }) .collect(); let boundary_array = PrimitiveArray::from_iter(boundary_values); - let boundary_bp = bitpack_encode(&boundary_array, 7, None).unwrap(); + let boundary_bp = encode(&boundary_array, 7); assert!(boundary_bp.patches().is_some()); let boundary_result = unpack_array(&boundary_bp, &mut SESSION.create_execution_ctx())?; @@ -625,7 +626,7 @@ mod tests { // Single element. let single = PrimitiveArray::from_iter([42u8]); - let single_bp = bitpack_encode(&single, 6, None).unwrap(); + let single_bp = encode(&single, 6); let single_result = unpack_array(&single_bp, &mut SESSION.create_execution_ctx())?; assert_eq!(single_result.len(), 1); Ok(()) diff --git a/encodings/fastlanes/src/bitpacking/array/mod.rs b/encodings/fastlanes/src/bitpacking/array/mod.rs index a0e5067ea3e..f54e788650b 100644 --- a/encodings/fastlanes/src/bitpacking/array/mod.rs +++ b/encodings/fastlanes/src/bitpacking/array/mod.rs @@ -4,6 +4,7 @@ use fastlanes::BitPacking; use vortex_array::ArrayRef; use vortex_array::arrays::Primitive; +use vortex_array::arrays::PrimitiveArray; use vortex_array::buffer::BufferHandle; use vortex_array::dtype::DType; use vortex_array::dtype::NativePType; @@ -15,13 +16,14 @@ use vortex_array::vtable::child_to_validity; use vortex_array::vtable::validity_to_child; use vortex_error::VortexExpect; use vortex_error::VortexResult; -use vortex_error::vortex_bail; use vortex_error::vortex_ensure; +use vortex_error::vortex_err; pub mod bitpack_compress; pub mod bitpack_decompress; pub mod unpack_iter; +use crate::BitPackedArray; use crate::bitpack_compress::bitpack_encode; use crate::unpack_iter::BitPacked; use crate::unpack_iter::BitUnpackedChunks; @@ -52,7 +54,7 @@ pub struct BitPackedArrayParts { } #[derive(Clone, Debug)] -pub struct BitPackedArray { +pub struct BitPackedData { pub(super) slots: Vec>, /// The offset within the first block (created with a slice). /// 0 <= offset < 1024 @@ -68,7 +70,7 @@ pub struct BitPackedArray { pub(super) stats_set: ArrayStats, } -impl BitPackedArray { +impl BitPackedData { /// Create a new bitpacked array using a buffer of packed data. /// /// The packed data should be interpreted as a sequence of values with size `bit_width`. @@ -245,6 +247,29 @@ impl BitPackedArray { Ok(()) } + /// Returns the length of the array. + #[inline] + pub fn len(&self) -> usize { + self.len + } + + /// Returns `true` if the array is empty. + #[inline] + pub fn is_empty(&self) -> bool { + self.len == 0 + } + + /// Returns the dtype of the array. + #[inline] + pub fn dtype(&self) -> &DType { + &self.dtype + } + + /// Returns the validity as a [`Mask`](vortex_mask::Mask). + pub fn validity_mask(&self) -> vortex_mask::Mask { + self.validity().to_mask(self.len()) + } + pub fn ptype(&self) -> PType { self.dtype.as_ptype() } @@ -351,13 +376,12 @@ impl BitPackedArray { /// /// If the requested bit-width for packing is larger than the array's native width, an /// error will be returned. - // FIXME(ngates): take a PrimitiveArray - pub fn encode(array: &ArrayRef, bit_width: u8) -> VortexResult { - if let Some(parray) = array.as_opt::() { - bitpack_encode(parray, bit_width, None) - } else { - vortex_bail!(InvalidArgument: "Bitpacking can only encode primitive arrays"); - } + pub fn encode(array: &ArrayRef, bit_width: u8) -> VortexResult { + let parray: PrimitiveArray = array + .clone() + .try_into::() + .map_err(|a| vortex_err!(InvalidArgument: "Bitpacking can only encode primitive arrays, got {}", a.encoding_id()))?; + bitpack_encode(&parray, bit_width, None) } /// Calculate the maximum value that **can** be contained by this array, given its bit-width. @@ -390,7 +414,7 @@ mod test { use vortex_array::assert_arrays_eq; use vortex_buffer::Buffer; - use crate::BitPackedArray; + use crate::BitPackedData; #[test] fn test_encode() { @@ -404,18 +428,18 @@ mod test { Some(u64::MAX), ]; let uncompressed = PrimitiveArray::from_option_iter(values); - let packed = BitPackedArray::encode(&uncompressed.into_array(), 1).unwrap(); + let packed = BitPackedData::encode(&uncompressed.into_array(), 1).unwrap(); let expected = PrimitiveArray::from_option_iter(values); - assert_arrays_eq!(packed.to_primitive(), expected); + assert_arrays_eq!(packed.as_array().to_primitive(), expected); } #[test] fn test_encode_too_wide() { let values = [Some(1u8), None, Some(1), None, Some(1), None]; let uncompressed = PrimitiveArray::from_option_iter(values); - let _packed = BitPackedArray::encode(&uncompressed.clone().into_array(), 8) + let _packed = BitPackedData::encode(&uncompressed.clone().into_array(), 8) .expect_err("Cannot pack value into the same width"); - let _packed = BitPackedArray::encode(&uncompressed.into_array(), 9) + let _packed = BitPackedData::encode(&uncompressed.into_array(), 9) .expect_err("Cannot pack value into larger width"); } @@ -424,10 +448,10 @@ mod test { let values: Buffer = (0i32..=512).collect(); let parray = values.clone().into_array(); - let packed_with_patches = BitPackedArray::encode(&parray, 9).unwrap(); + let packed_with_patches = BitPackedData::encode(&parray, 9).unwrap(); assert!(packed_with_patches.patches().is_some()); assert_arrays_eq!( - packed_with_patches.to_primitive(), + packed_with_patches.as_array().to_primitive(), PrimitiveArray::new(values, vortex_array::validity::Validity::NonNullable) ); } diff --git a/encodings/fastlanes/src/bitpacking/array/unpack_iter.rs b/encodings/fastlanes/src/bitpacking/array/unpack_iter.rs index 412dab90d39..d14d218401c 100644 --- a/encodings/fastlanes/src/bitpacking/array/unpack_iter.rs +++ b/encodings/fastlanes/src/bitpacking/array/unpack_iter.rs @@ -12,7 +12,7 @@ use lending_iterator::prelude::LendingIterator; use vortex_array::dtype::PhysicalPType; use vortex_buffer::ByteBuffer; -use crate::BitPackedArray; +use crate::BitPackedData; const CHUNK_SIZE: usize = 1024; @@ -54,10 +54,10 @@ impl> UnpackStrategy for BitPackingStr /// use lending_iterator::prelude::LendingIterator; /// use vortex_array::IntoArray; /// use vortex_buffer::buffer; -/// use vortex_fastlanes::BitPackedArray; +/// use vortex_fastlanes::BitPackedData; /// use vortex_fastlanes::unpack_iter::BitUnpackedChunks; /// -/// let array = BitPackedArray::encode(&buffer![2, 3, 4, 5].into_array(), 2).unwrap(); +/// let array = BitPackedData::encode(&buffer![2, 3, 4, 5].into_array(), 2).unwrap(); /// let mut unpacked_chunks: BitUnpackedChunks = array.unpacked_chunks(); /// /// if let Some(header) = unpacked_chunks.initial() { @@ -89,7 +89,7 @@ pub struct UnpackedChunks> { pub type BitUnpackedChunks = UnpackedChunks; impl BitUnpackedChunks { - pub fn new(array: &BitPackedArray) -> Self { + pub fn new(array: &BitPackedData) -> Self { Self::new_with_strategy( BitPackingStrategy, array.packed().clone().unwrap_host(), diff --git a/encodings/fastlanes/src/bitpacking/compute/cast.rs b/encodings/fastlanes/src/bitpacking/compute/cast.rs index 1480f24a18f..43cbc38d455 100644 --- a/encodings/fastlanes/src/bitpacking/compute/cast.rs +++ b/encodings/fastlanes/src/bitpacking/compute/cast.rs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::builtins::ArrayBuiltins; use vortex_array::dtype::DType; @@ -9,17 +10,16 @@ use vortex_array::patches::Patches; use vortex_array::scalar_fn::fns::cast::CastReduce; use vortex_error::VortexResult; +use crate::BitPackedData; use crate::bitpacking::BitPacked; -use crate::bitpacking::BitPackedArray; - impl CastReduce for BitPacked { - fn cast(array: &BitPackedArray, dtype: &DType) -> VortexResult> { + fn cast(array: ArrayView<'_, Self>, dtype: &DType) -> VortexResult> { if array.dtype().eq_ignore_nullability(dtype) { let new_validity = array .validity() .cast_nullability(dtype.nullability(), array.len())?; return Ok(Some( - BitPackedArray::try_new( + BitPackedData::try_new( array.packed().clone(), dtype.as_ptype(), new_validity, @@ -51,6 +51,7 @@ impl CastReduce for BitPacked { #[cfg(test)] mod tests { use rstest::rstest; + use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::assert_arrays_eq; @@ -62,11 +63,15 @@ mod tests { use vortex_buffer::buffer; use crate::BitPackedArray; + use crate::BitPackedData; + + fn bp(array: &ArrayRef, bit_width: u8) -> BitPackedArray { + BitPackedData::encode(array, bit_width).unwrap() + } #[test] fn test_cast_bitpacked_u8_to_u32() { - let packed = - BitPackedArray::encode(&buffer![10u8, 20, 30, 40, 50, 60].into_array(), 6).unwrap(); + let packed = bp(&buffer![10u8, 20, 30, 40, 50, 60].into_array(), 6); let casted = packed .into_array() @@ -78,7 +83,7 @@ mod tests { ); assert_arrays_eq!( - casted.as_ref(), + casted, PrimitiveArray::from_iter([10u32, 20, 30, 40, 50, 60]) ); } @@ -86,7 +91,7 @@ mod tests { #[test] fn test_cast_bitpacked_nullable() { let values = PrimitiveArray::from_option_iter([Some(5u16), None, Some(10), Some(15), None]); - let packed = BitPackedArray::encode(&values.into_array(), 4).unwrap(); + let packed = bp(&values.into_array(), 4); let casted = packed .into_array() @@ -99,10 +104,10 @@ mod tests { } #[rstest] - #[case(BitPackedArray::encode(&buffer![0u8, 10, 20, 30, 40, 50, 60, 63].into_array(), 6).unwrap())] - #[case(BitPackedArray::encode(&buffer![0u16, 100, 200, 300, 400, 500].into_array(), 9).unwrap())] - #[case(BitPackedArray::encode(&buffer![0u32, 1000, 2000, 3000, 4000].into_array(), 12).unwrap())] - #[case(BitPackedArray::encode(&PrimitiveArray::from_option_iter([Some(1u32), None, Some(7), Some(15), None]).into_array(), 4).unwrap())] + #[case(bp(&buffer![0u8, 10, 20, 30, 40, 50, 60, 63].into_array(), 6))] + #[case(bp(&buffer![0u16, 100, 200, 300, 400, 500].into_array(), 9))] + #[case(bp(&buffer![0u32, 1000, 2000, 3000, 4000].into_array(), 12))] + #[case(bp(&PrimitiveArray::from_option_iter([Some(1u32), None, Some(7), Some(15), None]).into_array(), 4))] fn test_cast_bitpacked_conformance(#[case] array: BitPackedArray) { test_cast_conformance(&array.into_array()); } diff --git a/encodings/fastlanes/src/bitpacking/compute/filter.rs b/encodings/fastlanes/src/bitpacking/compute/filter.rs index 69452e02568..a2887615698 100644 --- a/encodings/fastlanes/src/bitpacking/compute/filter.rs +++ b/encodings/fastlanes/src/bitpacking/compute/filter.rs @@ -6,6 +6,7 @@ use std::sync::Arc; use fastlanes::BitPacking; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::PrimitiveArray; @@ -24,7 +25,7 @@ use vortex_mask::MaskValues; use super::chunked_indices; use super::take::UNPACK_CHUNK_THRESHOLD; use crate::BitPacked; -use crate::BitPackedArray; +use crate::BitPackedData; /// The threshold over which it is faster to fully unpack the entire [`BitPackedArray`] and then /// filter the result than to unpack only specific bitpacked values into the output buffer. @@ -44,7 +45,7 @@ pub const fn unpack_then_filter_threshold(ptype: PType) -> f64 { /// Kernel to execute filtering directly on a bit-packed array. impl FilterKernel for BitPacked { fn filter( - array: &BitPackedArray, + array: ArrayView<'_, Self>, mask: &Mask, ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -62,8 +63,8 @@ impl FilterKernel for BitPacked { } // Filter and patch using the correct unsigned type for FastLanes, then cast to signed if needed. - let mut primitive = match_each_unsigned_integer_ptype!(array.ptype().to_unsigned(), |U| { - let (buffer, validity) = filter_primitive_without_patches::(array, values)?; + let primitive = match_each_unsigned_integer_ptype!(array.ptype().to_unsigned(), |U| { + let (buffer, validity) = filter_primitive_without_patches::(&array, values)?; // reinterpret_cast for signed types. PrimitiveArray::new(buffer, validity).reinterpret_cast(array.ptype()) }); @@ -75,10 +76,12 @@ impl FilterKernel for BitPacked { .flatten(); if let Some(patches) = patches { - primitive = primitive.patch(&patches, ctx)?; + let mut prim_array = PrimitiveArray::try_from_data(primitive)?; + prim_array = prim_array.patch(&patches, ctx)?; + return Ok(Some(prim_array.into_array())); } - Ok(Some(primitive.into_array())) + Ok(Some(PrimitiveArray::try_from_data(primitive)?.into_array())) } } @@ -94,7 +97,7 @@ impl FilterKernel for BitPacked { /// /// Returns a tuple of (values buffer, validity mask). fn filter_primitive_without_patches( - array: &BitPackedArray, + array: &BitPackedData, selection: &Arc, ) -> VortexResult<(Buffer, Validity)> { let values = filter_with_indices(array, selection.indices()); @@ -104,7 +107,7 @@ fn filter_primitive_without_patches( } fn filter_with_indices( - array: &BitPackedArray, + array: &BitPackedData, indices: &[usize], ) -> BufferMut { let offset = array.offset() as usize; @@ -161,7 +164,6 @@ fn filter_with_indices( #[cfg(test)] mod test { - use vortex_array::DynArray; use vortex_array::IntoArray as _; use vortex_array::ToCanonical; use vortex_array::arrays::PrimitiveArray; @@ -172,13 +174,13 @@ mod test { use vortex_buffer::buffer; use vortex_mask::Mask; - use crate::BitPackedArray; + use crate::BitPackedData; #[test] fn take_indices() { // Create a u8 array modulo 63. let unpacked = PrimitiveArray::from_iter((0..4096).map(|i| (i % 63) as u8)); - let bitpacked = BitPackedArray::encode(&unpacked.into_array(), 6).unwrap(); + let bitpacked = BitPackedData::encode(&unpacked.into_array(), 6).unwrap(); let mask = Mask::from_indices(bitpacked.len(), vec![0, 125, 2047, 2049, 2151, 2790]); @@ -193,7 +195,7 @@ mod test { fn take_sliced_indices() { // Create a u8 array modulo 63. let unpacked = PrimitiveArray::from_iter((0..4096).map(|i| (i % 63) as u8)); - let bitpacked = BitPackedArray::encode(&unpacked.into_array(), 6).unwrap(); + let bitpacked = BitPackedData::encode(&unpacked.into_array(), 6).unwrap(); let sliced = bitpacked.slice(128..2050).unwrap(); let mask = Mask::from_indices(sliced.len(), vec![1919, 1921]); @@ -205,7 +207,7 @@ mod test { #[test] fn filter_bitpacked() { let unpacked = PrimitiveArray::from_iter((0..4096).map(|i| (i % 63) as u8)); - let bitpacked = BitPackedArray::encode(&unpacked.into_array(), 6).unwrap(); + let bitpacked = BitPackedData::encode(&unpacked.into_array(), 6).unwrap(); let filtered = bitpacked .filter(Mask::from_indices(4096, (0..1024).collect())) .unwrap(); @@ -219,7 +221,7 @@ mod test { fn filter_bitpacked_signed() { let values: Buffer = (0..500).collect(); let unpacked = PrimitiveArray::new(values.clone(), Validity::NonNullable); - let bitpacked = BitPackedArray::encode(&unpacked.into_array(), 9).unwrap(); + let bitpacked = BitPackedData::encode(&unpacked.into_array(), 9).unwrap(); let filtered = bitpacked .filter(Mask::from_indices(values.len(), (0..250).collect())) .unwrap() @@ -235,17 +237,17 @@ mod test { fn test_filter_bitpacked_conformance() { // Test with u8 values let unpacked = buffer![1u8, 2, 3, 4, 5].into_array(); - let bitpacked = BitPackedArray::encode(&unpacked, 3).unwrap(); + let bitpacked = BitPackedData::encode(&unpacked, 3).unwrap(); test_filter_conformance(&bitpacked.into_array()); // Test with u32 values let unpacked = buffer![100u32, 200, 300, 400, 500].into_array(); - let bitpacked = BitPackedArray::encode(&unpacked, 9).unwrap(); + let bitpacked = BitPackedData::encode(&unpacked, 9).unwrap(); test_filter_conformance(&bitpacked.into_array()); // Test with nullable values let unpacked = PrimitiveArray::from_option_iter([Some(1u16), None, Some(3), Some(4), None]); - let bitpacked = BitPackedArray::encode(&unpacked.into_array(), 3).unwrap(); + let bitpacked = BitPackedData::encode(&unpacked.into_array(), 3).unwrap(); test_filter_conformance(&bitpacked.into_array()); } @@ -260,7 +262,7 @@ mod test { // Values 0-127 fit in 7 bits, but 1000 and 2000 do not. let values: Vec = vec![0, 10, 1000, 20, 30, 2000, 40, 50, 60, 70]; let unpacked = PrimitiveArray::from_iter(values.clone()); - let bitpacked = BitPackedArray::encode(&unpacked.into_array(), 7).unwrap(); + let bitpacked = BitPackedData::encode(&unpacked.into_array(), 7).unwrap(); assert!( bitpacked.patches().is_some(), "Expected patches for values exceeding bit width" @@ -292,7 +294,7 @@ mod test { }) .collect(); let unpacked = PrimitiveArray::from_iter(values.clone()); - let bitpacked = BitPackedArray::encode(&unpacked.into_array(), 7).unwrap(); + let bitpacked = BitPackedData::encode(&unpacked.into_array(), 7).unwrap(); assert!( bitpacked.patches().is_some(), "Expected patches for values exceeding bit width" diff --git a/encodings/fastlanes/src/bitpacking/compute/is_constant.rs b/encodings/fastlanes/src/bitpacking/compute/is_constant.rs index d3efa37adef..314e4418ea1 100644 --- a/encodings/fastlanes/src/bitpacking/compute/is_constant.rs +++ b/encodings/fastlanes/src/bitpacking/compute/is_constant.rs @@ -6,6 +6,7 @@ use std::ops::Range; use itertools::Itertools; use lending_iterator::LendingIterator; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::ToCanonical; use vortex_array::aggregate_fn::AggregateFnRef; @@ -21,7 +22,6 @@ use vortex_array::scalar::Scalar; use vortex_error::VortexResult; use crate::BitPacked; -use crate::BitPackedArray; use crate::unpack_iter::BitPacked as BitPackedUnpack; /// BitPacked-specific is_constant kernel with SIMD support. @@ -52,7 +52,7 @@ impl DynAggregateKernel for BitPackedIsConstantKernel { } fn bitpacked_is_constant( - array: &BitPackedArray, + array: ArrayView<'_, BitPacked>, ) -> VortexResult { let mut bit_unpack_iterator = array.unpacked_chunks::(); let patches = array.patches().map(|p| { @@ -187,11 +187,11 @@ mod tests { use vortex_buffer::buffer; use vortex_error::VortexResult; - use crate::BitPackedArray; + use crate::BitPackedData; #[test] fn is_constant_with_patches() -> VortexResult<()> { - let array = BitPackedArray::encode(&buffer![4; 1025].into_array(), 2)?; + let array = BitPackedData::encode(&buffer![4; 1025].into_array(), 2)?; let mut ctx = LEGACY_SESSION.create_execution_ctx(); assert!(is_constant(&array.into_array(), &mut ctx)?); Ok(()) diff --git a/encodings/fastlanes/src/bitpacking/compute/mod.rs b/encodings/fastlanes/src/bitpacking/compute/mod.rs index f17054fc081..f404102c019 100644 --- a/encodings/fastlanes/src/bitpacking/compute/mod.rs +++ b/encodings/fastlanes/src/bitpacking/compute/mod.rs @@ -50,6 +50,10 @@ mod tests { use crate::bitpack_compress::bitpack_encode; use crate::bitpacking::compute::chunked_indices; + fn bp(array: &PrimitiveArray, bit_width: u8) -> BitPackedArray { + bitpack_encode(array, bit_width, None).unwrap() + } + #[test] fn chunk_indices_repeated() { let mut called = false; @@ -63,35 +67,35 @@ mod tests { #[rstest] // Basic integer arrays that can be bitpacked - #[case::u8_small(bitpack_encode(&PrimitiveArray::from_iter([1u8, 2, 3, 4, 5]), 3, None).unwrap())] - #[case::u16_array(bitpack_encode(&PrimitiveArray::from_iter([10u16, 20, 30, 40, 50]), 6, None).unwrap())] - #[case::u32_array(bitpack_encode(&PrimitiveArray::from_iter([100u32, 200, 300, 400, 500]), 9, None).unwrap())] + #[case::u8_small(bp(&PrimitiveArray::from_iter([1u8, 2, 3, 4, 5]), 3))] + #[case::u16_array(bp(&PrimitiveArray::from_iter([10u16, 20, 30, 40, 50]), 6))] + #[case::u32_array(bp(&PrimitiveArray::from_iter([100u32, 200, 300, 400, 500]), 9))] // Arrays with nulls - #[case::nullable_u8(bitpack_encode(&PrimitiveArray::from_option_iter([Some(1u8), None, Some(3), Some(4), None]), 3, None).unwrap())] - #[case::nullable_u32(bitpack_encode(&PrimitiveArray::from_option_iter([Some(100u32), None, Some(300), Some(400), None]), 9, None).unwrap())] + #[case::nullable_u8(bp(&PrimitiveArray::from_option_iter([Some(1u8), None, Some(3), Some(4), None]), 3))] + #[case::nullable_u32(bp(&PrimitiveArray::from_option_iter([Some(100u32), None, Some(300), Some(400), None]), 9))] // Edge cases - #[case::single_element(bitpack_encode(&PrimitiveArray::from_iter([42u32]), 6, None).unwrap())] - #[case::all_zeros(bitpack_encode(&PrimitiveArray::from_iter([0u16; 100]), 1, None).unwrap())] + #[case::single_element(bp(&PrimitiveArray::from_iter([42u32]), 6))] + #[case::all_zeros(bp(&PrimitiveArray::from_iter([0u16; 100]), 1))] // Large arrays (multiple chunks - fastlanes uses 1024-element chunks) - #[case::large_u16(bitpack_encode(&PrimitiveArray::from_iter((0..2048).map(|i| (i % 256) as u16)), 8, None).unwrap())] - #[case::large_u32(bitpack_encode(&PrimitiveArray::from_iter((0..3000).map(|i| (i % 1024) as u32)), 10, None).unwrap())] - #[case::large_u8_many_chunks(bitpack_encode(&PrimitiveArray::from_iter((0..5120).map(|i| (i % 128) as u8)), 7, None).unwrap())] // 5 chunks - #[case::large_nullable(bitpack_encode(&PrimitiveArray::from_option_iter((0..2500).map(|i| if i % 10 == 0 { None } else { Some((i % 512) as u16) })), 9, None).unwrap())] + #[case::large_u16(bp(&PrimitiveArray::from_iter((0..2048).map(|i| (i % 256) as u16)), 8))] + #[case::large_u32(bp(&PrimitiveArray::from_iter((0..3000).map(|i| (i % 1024) as u32)), 10))] + #[case::large_u8_many_chunks(bp(&PrimitiveArray::from_iter((0..5120).map(|i| (i % 128) as u8)), 7))] // 5 chunks + #[case::large_nullable(bp(&PrimitiveArray::from_option_iter((0..2500).map(|i| if i % 10 == 0 { None } else { Some((i % 512) as u16) })), 9))] // Arrays with specific bit patterns - #[case::max_value_for_bits(bitpack_encode(&PrimitiveArray::from_iter([7u8, 7, 7, 7, 7]), 3, None).unwrap())] // max value for 3 bits - #[case::alternating_bits(bitpack_encode(&PrimitiveArray::from_iter([0u16, 255, 0, 255, 0, 255]), 8, None).unwrap())] + #[case::max_value_for_bits(bp(&PrimitiveArray::from_iter([7u8, 7, 7, 7, 7]), 3))] // max value for 3 bits + #[case::alternating_bits(bp(&PrimitiveArray::from_iter([0u16, 255, 0, 255, 0, 255]), 8))] fn test_bitpacked_consistency(#[case] array: BitPackedArray) { test_array_consistency(&array.into_array()); } #[rstest] - #[case::u8_basic(bitpack_encode(&PrimitiveArray::from_iter([1u8, 2, 3, 4, 5]), 3, None).unwrap())] - #[case::u16_basic(bitpack_encode(&PrimitiveArray::from_iter([10u16, 20, 30, 40, 50]), 6, None).unwrap())] - #[case::u32_basic(bitpack_encode(&PrimitiveArray::from_iter([100u32, 200, 300, 400, 500]), 9, None).unwrap())] - #[case::u64_basic(bitpack_encode(&PrimitiveArray::from_iter([1000u64, 2000, 3000, 4000, 5000]), 13, None).unwrap())] - #[case::i32_basic(bitpack_encode(&PrimitiveArray::from_iter([10i32, 20, 30, 40, 50]), 7, None).unwrap())] - #[case::large_u32(bitpack_encode(&PrimitiveArray::from_iter((0..100).map(|i| i as u32)), 7, None).unwrap())] + #[case::u8_basic(bp(&PrimitiveArray::from_iter([1u8, 2, 3, 4, 5]), 3))] + #[case::u16_basic(bp(&PrimitiveArray::from_iter([10u16, 20, 30, 40, 50]), 6))] + #[case::u32_basic(bp(&PrimitiveArray::from_iter([100u32, 200, 300, 400, 500]), 9))] + #[case::u64_basic(bp(&PrimitiveArray::from_iter([1000u64, 2000, 3000, 4000, 5000]), 13))] + #[case::i32_basic(bp(&PrimitiveArray::from_iter([10i32, 20, 30, 40, 50]), 7))] + #[case::large_u32(bp(&PrimitiveArray::from_iter((0..100).map(|i| i as u32)), 7))] fn test_bitpacked_binary_numeric(#[case] array: BitPackedArray) { test_binary_numeric_array(array.into_array()); } diff --git a/encodings/fastlanes/src/bitpacking/compute/slice.rs b/encodings/fastlanes/src/bitpacking/compute/slice.rs index 4449cdb01f3..fe702e524b0 100644 --- a/encodings/fastlanes/src/bitpacking/compute/slice.rs +++ b/encodings/fastlanes/src/bitpacking/compute/slice.rs @@ -5,15 +5,16 @@ use std::cmp::max; use std::ops::Range; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::arrays::slice::SliceReduce; use vortex_error::VortexResult; use crate::BitPacked; -use crate::BitPackedArray; +use crate::BitPackedData; impl SliceReduce for BitPacked { - fn slice(array: &BitPackedArray, range: Range) -> VortexResult> { + fn slice(array: ArrayView<'_, Self>, range: Range) -> VortexResult> { let offset_start = range.start + array.offset() as usize; let offset_stop = range.end + array.offset() as usize; let offset = offset_start % 1024; @@ -26,7 +27,7 @@ impl SliceReduce for BitPacked { // slice the buffer using the encoded start/stop values // SAFETY: slicing packed values without decoding preserves invariants Ok(Some(unsafe { - BitPackedArray::new_unchecked( + BitPackedData::new_unchecked( array.packed().slice(encoded_start..encoded_stop), array.dtype().clone(), array.validity().slice(range.clone())?, @@ -46,7 +47,6 @@ impl SliceReduce for BitPacked { #[cfg(test)] mod tests { - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::arrays::SliceArray; diff --git a/encodings/fastlanes/src/bitpacking/compute/take.rs b/encodings/fastlanes/src/bitpacking/compute/take.rs index 9e9289ce133..bf73dd1ba05 100644 --- a/encodings/fastlanes/src/bitpacking/compute/take.rs +++ b/encodings/fastlanes/src/bitpacking/compute/take.rs @@ -6,7 +6,7 @@ use std::mem::MaybeUninit; use fastlanes::BitPacking; use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::PrimitiveArray; @@ -24,7 +24,7 @@ use vortex_error::VortexResult; use super::chunked_indices; use crate::BitPacked; -use crate::BitPackedArray; +use crate::BitPackedData; use crate::bitpack_decompress; // TODO(connor): This is duplicated in `encodings/fastlanes/src/bitpacking/kernels/mod.rs`. @@ -35,14 +35,14 @@ pub(super) const UNPACK_CHUNK_THRESHOLD: usize = 8; impl TakeExecute for BitPacked { fn take( - array: &BitPackedArray, + array: ArrayView<'_, Self>, indices: &ArrayRef, ctx: &mut ExecutionCtx, ) -> VortexResult> { // If the indices are large enough, it's faster to flatten and take the primitive array. if indices.len() * UNPACK_CHUNK_THRESHOLD > array.len() { - let prim = array.clone().into_array().execute::(ctx)?; - return prim.take(indices.to_array()).map(Some); + let prim = array.array().clone().execute::(ctx)?; + return prim.into_array().take(indices.clone()).map(Some); } // NOTE: we use the unsigned PType because all values in the BitPackedArray must @@ -54,7 +54,7 @@ impl TakeExecute for BitPacked { let indices = indices.clone().execute::(ctx)?; let taken = match_each_unsigned_integer_ptype!(ptype.to_unsigned(), |T| { match_each_integer_ptype!(indices.ptype(), |I| { - take_primitive::(array, &indices, taken_validity, ctx)? + take_primitive::(&array, &indices, taken_validity, ctx)? }) }); Ok(Some(taken.reinterpret_cast(ptype).into_array())) @@ -62,7 +62,7 @@ impl TakeExecute for BitPacked { } fn take_primitive( - array: &BitPackedArray, + array: &BitPackedData, indices: &PrimitiveArray, taken_validity: Validity, ctx: &mut ExecutionCtx, @@ -128,11 +128,14 @@ fn take_primitive( } }); - let mut unpatched_taken = PrimitiveArray::new(output, taken_validity); - // Flip back to signed type before patching. - if array.ptype().is_signed_int() { - unpatched_taken = unpatched_taken.reinterpret_cast(array.ptype()); - } + let unpatched_taken = if array.ptype().is_signed_int() { + // Flip back to signed type before patching. + PrimitiveArray::try_from_data( + PrimitiveArray::new(output, taken_validity).reinterpret_cast(array.ptype()), + )? + } else { + PrimitiveArray::new(output, taken_validity) + }; if let Some(patches) = array.patches() && let Some(patches) = patches.take(&indices.clone().into_array(), ctx)? { @@ -150,7 +153,6 @@ mod test { use rand::distr::Uniform; use rand::rng; use rstest::rstest; - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::LEGACY_SESSION; use vortex_array::ToCanonical; @@ -162,6 +164,7 @@ mod test { use vortex_buffer::buffer; use crate::BitPackedArray; + use crate::BitPackedData; use crate::bitpacking::compute::take::take_primitive; #[test] @@ -170,9 +173,9 @@ mod test { // Create a u8 array modulo 63. let unpacked = PrimitiveArray::from_iter((0..4096).map(|i| (i % 63) as u8)); - let bitpacked = BitPackedArray::encode(&unpacked.into_array(), 6).unwrap(); + let bitpacked = BitPackedData::encode(&unpacked.into_array(), 6).unwrap(); - let primitive_result = bitpacked.take(indices.to_array()).unwrap(); + let primitive_result = bitpacked.take(indices).unwrap(); assert_arrays_eq!( primitive_result, PrimitiveArray::from_iter([0u8, 62, 31, 33, 9, 18]) @@ -182,11 +185,11 @@ mod test { #[test] fn take_with_patches() { let unpacked = Buffer::from_iter(0u32..1024).into_array(); - let bitpacked = BitPackedArray::encode(&unpacked, 2).unwrap(); + let bitpacked = BitPackedData::encode(&unpacked, 2).unwrap(); let indices = buffer![0, 2, 4, 6].into_array(); - let primitive_result = bitpacked.take(indices.to_array()).unwrap(); + let primitive_result = bitpacked.take(indices).unwrap(); assert_arrays_eq!(primitive_result, PrimitiveArray::from_iter([0u32, 2, 4, 6])); } @@ -196,10 +199,10 @@ mod test { // Create a u8 array modulo 63. let unpacked = PrimitiveArray::from_iter((0..4096).map(|i| (i % 63) as u8)); - let bitpacked = BitPackedArray::encode(&unpacked.into_array(), 6).unwrap(); + let bitpacked = BitPackedData::encode(&unpacked.into_array(), 6).unwrap(); let sliced = bitpacked.slice(128..2050).unwrap(); - let primitive_result = sliced.take(indices.to_array()).unwrap(); + let primitive_result = sliced.take(indices).unwrap(); assert_arrays_eq!(primitive_result, PrimitiveArray::from_iter([31u8, 33])); } @@ -209,7 +212,7 @@ mod test { let num_patches: usize = 128; let values = (0..u16::MAX as u32 + num_patches as u32).collect::>(); let uncompressed = PrimitiveArray::new(values.clone(), Validity::NonNullable); - let packed = BitPackedArray::encode(&uncompressed.into_array(), 16).unwrap(); + let packed = BitPackedData::encode(&uncompressed.into_array(), 16).unwrap(); assert!(packed.patches().is_some()); let rng = rng(); @@ -239,7 +242,7 @@ mod test { #[cfg_attr(miri, ignore)] fn take_signed_with_patches() { let start = - BitPackedArray::encode(&buffer![1i32, 2i32, 3i32, 4i32].into_array(), 1).unwrap(); + BitPackedData::encode(&buffer![1i32, 2i32, 3i32, 4i32].into_array(), 1).unwrap(); let taken_primitive = take_primitive::( &start, @@ -254,7 +257,7 @@ mod test { #[test] fn take_nullable_with_nullables() { let start = - BitPackedArray::encode(&buffer![1i32, 2i32, 3i32, 4i32].into_array(), 1).unwrap(); + BitPackedData::encode(&buffer![1i32, 2i32, 3i32, 4i32].into_array(), 1).unwrap(); let taken_primitive = start .take( @@ -269,15 +272,15 @@ mod test { } #[rstest] - #[case(BitPackedArray::encode(&PrimitiveArray::from_iter((0..100).map(|i| (i % 63) as u8)).into_array(), 6).unwrap())] - #[case(BitPackedArray::encode(&PrimitiveArray::from_iter((0..256).map(|i| i as u32)).into_array(), 8).unwrap())] - #[case(BitPackedArray::encode(&buffer![1i32, 2, 3, 4, 5, 6, 7, 8].into_array(), 3).unwrap())] - #[case(BitPackedArray::encode( + #[case(BitPackedData::encode(&PrimitiveArray::from_iter((0..100).map(|i| (i % 63) as u8)).into_array(), 6).unwrap())] + #[case(BitPackedData::encode(&PrimitiveArray::from_iter((0..256).map(|i| i as u32)).into_array(), 8).unwrap())] + #[case(BitPackedData::encode(&buffer![1i32, 2, 3, 4, 5, 6, 7, 8].into_array(), 3).unwrap())] + #[case(BitPackedData::encode( &PrimitiveArray::from_option_iter([Some(10u16), None, Some(20), Some(30), None]).into_array(), 5 ).unwrap())] - #[case(BitPackedArray::encode(&buffer![42u32].into_array(), 6).unwrap())] - #[case(BitPackedArray::encode(&PrimitiveArray::from_iter((0..1024).map(|i| i as u32)).into_array(), 8).unwrap())] + #[case(BitPackedData::encode(&buffer![42u32].into_array(), 6).unwrap())] + #[case(BitPackedData::encode(&PrimitiveArray::from_iter((0..1024).map(|i| i as u32)).into_array(), 8).unwrap())] fn test_take_bitpacked_conformance(#[case] bitpacked: BitPackedArray) { use vortex_array::compute::conformance::take::test_take_conformance; test_take_conformance(&bitpacked.into_array()); diff --git a/encodings/fastlanes/src/bitpacking/mod.rs b/encodings/fastlanes/src/bitpacking/mod.rs index 5130836e424..5a3a6ed0200 100644 --- a/encodings/fastlanes/src/bitpacking/mod.rs +++ b/encodings/fastlanes/src/bitpacking/mod.rs @@ -2,8 +2,8 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors mod array; -pub use array::BitPackedArray; pub use array::BitPackedArrayParts; +pub use array::BitPackedData; pub use array::bitpack_compress; pub use array::bitpack_decompress; pub use array::unpack_iter; @@ -12,3 +12,4 @@ pub(crate) mod compute; mod vtable; pub use vtable::BitPacked; +pub use vtable::BitPackedArray; diff --git a/encodings/fastlanes/src/bitpacking/vtable/mod.rs b/encodings/fastlanes/src/bitpacking/vtable/mod.rs index 6e096f84223..1e7ccd08665 100644 --- a/encodings/fastlanes/src/bitpacking/vtable/mod.rs +++ b/encodings/fastlanes/src/bitpacking/vtable/mod.rs @@ -2,12 +2,14 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use std::hash::Hash; -use std::sync::Arc; use vortex_array::AnyCanonical; +use vortex_array::Array; use vortex_array::ArrayEq; use vortex_array::ArrayHash; +use vortex_array::ArrayId; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::DeserializeMetadata; use vortex_array::ExecutionCtx; use vortex_array::ExecutionResult; @@ -25,11 +27,9 @@ use vortex_array::patches::PatchesMetadata; use vortex_array::require_patches; use vortex_array::require_validity; use vortex_array::serde::ArrayChildren; -use vortex_array::stats::StatsSetRef; +use vortex_array::stats::ArrayStats; use vortex_array::validity::Validity; use vortex_array::vtable; -use vortex_array::vtable::Array; -use vortex_array::vtable::ArrayId; use vortex_array::vtable::VTable; use vortex_error::VortexExpect; use vortex_error::VortexResult; @@ -39,7 +39,7 @@ use vortex_error::vortex_err; use vortex_error::vortex_panic; use vortex_session::VortexSession; -use crate::BitPackedArray; +use crate::BitPackedData; use crate::bitpack_decompress::unpack_array; use crate::bitpack_decompress::unpack_into_primitive_builder; use crate::bitpacking::array::NUM_SLOTS; @@ -55,7 +55,7 @@ mod operations; mod rules; mod validity; -vtable!(BitPacked); +vtable!(BitPacked, BitPacked, BitPackedData); #[derive(Clone, prost::Message)] pub struct BitPackedMetadata { @@ -68,14 +68,14 @@ pub struct BitPackedMetadata { } impl VTable for BitPacked { - type Array = BitPackedArray; + type ArrayData = BitPackedData; type Metadata = ProstMetadata; type OperationsVTable = Self; type ValidityVTable = Self; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &BitPackedData) -> &Self { &BitPacked } @@ -83,54 +83,50 @@ impl VTable for BitPacked { Self::ID } - fn len(array: &BitPackedArray) -> usize { + fn len(array: &BitPackedData) -> usize { array.len } - fn dtype(array: &BitPackedArray) -> &DType { + fn dtype(array: &BitPackedData) -> &DType { &array.dtype } - fn stats(array: &BitPackedArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &BitPackedData) -> &ArrayStats { + &array.stats_set } fn array_hash( - array: &BitPackedArray, + array: &BitPackedData, state: &mut H, precision: Precision, ) { array.offset.hash(state); - array.len.hash(state); - array.dtype.hash(state); array.bit_width.hash(state); array.packed.array_hash(state, precision); array.patches().array_hash(state, precision); array.validity().array_hash(state, precision); } - fn array_eq(array: &BitPackedArray, other: &BitPackedArray, precision: Precision) -> bool { + fn array_eq(array: &BitPackedData, other: &BitPackedData, precision: Precision) -> bool { array.offset == other.offset - && array.len == other.len - && array.dtype == other.dtype && array.bit_width == other.bit_width && array.packed.array_eq(&other.packed, precision) && array.patches().array_eq(&other.patches(), precision) && array.validity().array_eq(&other.validity(), precision) } - fn nbuffers(_array: &BitPackedArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 1 } - fn buffer(array: &BitPackedArray, idx: usize) -> BufferHandle { + fn buffer(array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { match idx { 0 => array.packed().clone(), _ => vortex_panic!("BitPackedArray buffer index {idx} out of bounds"), } } - fn buffer_name(_array: &BitPackedArray, idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, idx: usize) -> Option { match idx { 0 => Some("packed".to_string()), _ => None, @@ -138,22 +134,22 @@ impl VTable for BitPacked { } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { RULES.evaluate(array, parent, child_idx) } - fn slots(array: &BitPackedArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &BitPackedArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn with_slots(array: &mut BitPackedArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "BitPackedArray expects {} slots, got {}", @@ -171,7 +167,7 @@ impl VTable for BitPacked { Ok(()) } - fn metadata(array: &BitPackedArray) -> VortexResult { + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { Ok(ProstMetadata(BitPackedMetadata { bit_width: array.bit_width() as u32, offset: array.offset() as u32, @@ -208,7 +204,7 @@ impl VTable for BitPacked { metadata: &Self::Metadata, buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { if buffers.len() != 1 { vortex_bail!("Expected 1 buffer, got {}", buffers.len()); } @@ -252,7 +248,7 @@ impl VTable for BitPacked { }) .transpose()?; - BitPackedArray::try_new( + BitPackedData::try_new( packed, PType::try_from(dtype)?, validity, @@ -274,13 +270,13 @@ impl VTable for BitPacked { } fn append_to_builder( - array: &BitPackedArray, + array: ArrayView<'_, Self>, builder: &mut dyn ArrayBuilder, ctx: &mut ExecutionCtx, ) -> VortexResult<()> { match_each_integer_ptype!(array.ptype(), |T| { unpack_into_primitive_builder::( - array, + &array, builder .as_any_mut() .downcast_mut() @@ -290,7 +286,7 @@ impl VTable for BitPacked { }) } - fn execute(array: Arc>, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, ctx: &mut ExecutionCtx) -> VortexResult { require_patches!( array, array.patches(), @@ -306,7 +302,7 @@ impl VTable for BitPacked { } fn execute_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, @@ -320,4 +316,9 @@ pub struct BitPacked; impl BitPacked { pub const ID: ArrayId = ArrayId::new_ref("fastlanes.bitpacked"); + + /// Encode an array into a bitpacked representation with the given bit width. + pub fn encode(array: &ArrayRef, bit_width: u8) -> VortexResult { + BitPackedData::encode(array, bit_width) + } } diff --git a/encodings/fastlanes/src/bitpacking/vtable/operations.rs b/encodings/fastlanes/src/bitpacking/vtable/operations.rs index fd91f98260c..8dcfa18d08d 100644 --- a/encodings/fastlanes/src/bitpacking/vtable/operations.rs +++ b/encodings/fastlanes/src/bitpacking/vtable/operations.rs @@ -1,18 +1,17 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::scalar::Scalar; use vortex_array::vtable::OperationsVTable; use vortex_error::VortexResult; use crate::BitPacked; -use crate::BitPackedArray; use crate::bitpack_decompress; - impl OperationsVTable for BitPacked { fn scalar_at( - array: &BitPackedArray, + array: ArrayView<'_, BitPacked>, index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { @@ -22,7 +21,7 @@ impl OperationsVTable for BitPacked { { patch } else { - bitpack_decompress::unpack_single(array, index) + bitpack_decompress::unpack_single(&array, index) }, ) } @@ -32,7 +31,7 @@ impl OperationsVTable for BitPacked { mod test { use std::ops::Range; - use vortex_array::DynArray; + use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::arrays::SliceArray; @@ -52,6 +51,11 @@ mod test { use crate::BitPacked; use crate::BitPackedArray; + use crate::BitPackedData; + + fn bp(array: &ArrayRef, bit_width: u8) -> BitPackedArray { + BitPackedData::encode(array, bit_width).unwrap() + } fn slice_via_reduce(array: &BitPackedArray, range: Range) -> BitPackedArray { let array_ref = array.clone().into_array(); @@ -61,16 +65,15 @@ mod test { .reduce_parent(&array_ref, &slice_array.into_array(), 0) .expect("execute_parent failed") .expect("expected slice kernel to execute"); - sliced.as_::().clone() + sliced.as_::().into_owned() } #[test] pub fn slice_block() { - let arr = BitPackedArray::encode( + let arr = bp( &PrimitiveArray::from_iter((0u32..2048).map(|v| v % 64)).into_array(), 6, - ) - .unwrap(); + ); let sliced = slice_via_reduce(&arr, 1024..2048); assert_nth_scalar!(sliced, 0, 1024u32 % 64); assert_nth_scalar!(sliced, 1023, 2047u32 % 64); @@ -80,11 +83,10 @@ mod test { #[test] pub fn slice_within_block() { - let arr = BitPackedArray::encode( + let arr = bp( &PrimitiveArray::from_iter((0u32..2048).map(|v| v % 64)).into_array(), 6, - ) - .unwrap(); + ); let sliced = slice_via_reduce(&arr, 512..1434); assert_nth_scalar!(sliced, 0, 512u32 % 64); assert_nth_scalar!(sliced, 921, 1433u32 % 64); @@ -94,11 +96,10 @@ mod test { #[test] fn slice_within_block_u8s() { - let packed = BitPackedArray::encode( + let packed = bp( &PrimitiveArray::from_iter((0..10_000).map(|i| (i % 63) as u8)).into_array(), 7, - ) - .unwrap(); + ); let compressed = packed.slice(768..9999).unwrap(); assert_nth_scalar!(compressed, 0, (768 % 63) as u8); @@ -107,11 +108,10 @@ mod test { #[test] fn slice_block_boundary_u8s() { - let packed = BitPackedArray::encode( + let packed = bp( &PrimitiveArray::from_iter((0..10_000).map(|i| (i % 63) as u8)).into_array(), 7, - ) - .unwrap(); + ); let compressed = packed.slice(7168..9216).unwrap(); assert_nth_scalar!(compressed, 0, (7168 % 63) as u8); @@ -120,11 +120,10 @@ mod test { #[test] fn double_slice_within_block() { - let arr = BitPackedArray::encode( + let arr = bp( &PrimitiveArray::from_iter((0u32..2048).map(|v| v % 64)).into_array(), 6, - ) - .unwrap(); + ); let sliced = slice_via_reduce(&arr, 512..1434); assert_nth_scalar!(sliced, 0, 512u32 % 64); assert_nth_scalar!(sliced, 921, 1433u32 % 64); @@ -140,7 +139,7 @@ mod test { #[test] fn slice_empty_patches() { // We create an array that has 1 element that does not fit in the 6-bit range. - let array = BitPackedArray::encode(&buffer![0u32..=64].into_array(), 6).unwrap(); + let array = BitPackedData::encode(&buffer![0u32..=64].into_array(), 6).unwrap(); assert!(array.patches().is_some()); @@ -156,11 +155,10 @@ mod test { fn take_after_slice() { // Check that our take implementation respects the offsets applied after slicing. - let array = BitPackedArray::encode( + let array = bp( &PrimitiveArray::from_iter((63u32..).take(3072)).into_array(), 6, - ) - .unwrap(); + ); // Slice the array. // The resulting array will still have 3 1024-element chunks. @@ -180,7 +178,7 @@ mod test { #[test] fn scalar_at_invalid_patches() { let packed_array = unsafe { - BitPackedArray::new_unchecked( + BitPackedData::new_unchecked( BufferHandle::new_host(ByteBuffer::copy_from_aligned( [0u8; 128], Alignment::of::(), @@ -213,7 +211,7 @@ mod test { fn scalar_at() { let values = (0u32..257).collect::>(); let uncompressed = values.clone().into_array(); - let packed = BitPackedArray::encode(&uncompressed, 8).unwrap(); + let packed = BitPackedData::encode(&uncompressed, 8).unwrap(); assert!(packed.patches().is_some()); let patches = packed.patches().unwrap().indices().clone(); diff --git a/encodings/fastlanes/src/bitpacking/vtable/validity.rs b/encodings/fastlanes/src/bitpacking/vtable/validity.rs index 64e33cb23cc..c9b555eb92c 100644 --- a/encodings/fastlanes/src/bitpacking/vtable/validity.rs +++ b/encodings/fastlanes/src/bitpacking/vtable/validity.rs @@ -1,15 +1,15 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ArrayView; use vortex_array::validity::Validity; use vortex_array::vtable::ValidityVTable; use vortex_error::VortexResult; use crate::BitPacked; -use crate::BitPackedArray; impl ValidityVTable for BitPacked { - fn validity(array: &BitPackedArray) -> VortexResult { - Ok(array.validity()) + fn validity(array: ArrayView<'_, BitPacked>) -> VortexResult { + Ok(array.data().validity()) } } diff --git a/encodings/fastlanes/src/delta/array/delta_compress.rs b/encodings/fastlanes/src/delta/array/delta_compress.rs index 197dec6e852..3f7a75d3a82 100644 --- a/encodings/fastlanes/src/delta/array/delta_compress.rs +++ b/encodings/fastlanes/src/delta/array/delta_compress.rs @@ -18,7 +18,6 @@ use vortex_error::VortexResult; use crate::FL_CHUNK_SIZE; use crate::bit_transpose::transpose_validity; use crate::fill_forward_nulls; - pub fn delta_compress( array: &PrimitiveArray, ctx: &mut ExecutionCtx, @@ -101,10 +100,12 @@ mod tests { use vortex_array::arrays::PrimitiveArray; use vortex_array::assert_arrays_eq; use vortex_array::session::ArraySession; + use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_session::VortexSession; use crate::DeltaArray; + use crate::DeltaData; use crate::bitpack_compress::bitpack_encode; use crate::delta::array::delta_decompress::delta_decompress; use crate::delta_compress; @@ -119,8 +120,10 @@ mod tests { (0u32..10_000).map(|i| (i % 2 == 0).then_some(i)), ))] fn test_compress(#[case] array: PrimitiveArray) -> VortexResult<()> { - let delta = - DeltaArray::try_from_primitive_array(&array, &mut SESSION.create_execution_ctx())?; + let delta = DeltaArray::try_from_data(DeltaData::try_from_primitive_array( + &array, + &mut SESSION.create_execution_ctx(), + )?)?; assert_eq!(delta.len(), array.len()); let decompressed = delta_decompress(&delta, &mut SESSION.create_execution_ctx())?; assert_arrays_eq!(decompressed, array); @@ -137,13 +140,16 @@ mod tests { ); let (bases, deltas) = delta_compress(&array, &mut SESSION.create_execution_ctx()).unwrap(); let bitpacked_deltas = bitpack_encode(&deltas, 1, None).unwrap(); - let packed_delta = DeltaArray::try_new( - bases.into_array(), - bitpacked_deltas.into_array(), - 0, - array.len(), + let packed_delta = DeltaArray::try_from_data( + DeltaData::try_new( + bases.into_array(), + bitpacked_deltas.into_array(), + 0, + array.len(), + ) + .unwrap(), ) - .unwrap(); - assert_arrays_eq!(packed_delta.to_primitive(), array); + .vortex_expect("DeltaData is always valid"); + assert_arrays_eq!(packed_delta.as_array().to_primitive(), array); } } diff --git a/encodings/fastlanes/src/delta/array/mod.rs b/encodings/fastlanes/src/delta/array/mod.rs index 89c664166b2..048b860e000 100644 --- a/encodings/fastlanes/src/delta/array/mod.rs +++ b/encodings/fastlanes/src/delta/array/mod.rs @@ -3,7 +3,6 @@ use fastlanes::FastLanes; use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::PrimitiveArray; @@ -27,7 +26,7 @@ pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["bases", "deltas"]; /// A FastLanes-style delta-encoded array of primitive values. /// -/// A [`DeltaArray`] comprises a sequence of _chunks_ each representing exactly 1,024 +/// A DeltaArray comprises a sequence of _chunks_ each representing exactly 1,024 /// delta-encoded values. If the input array length is not a multiple of 1,024, the last chunk /// is padded with zeros to fill a complete 1,024-element chunk. /// @@ -38,11 +37,11 @@ pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["bases", "deltas"]; /// use vortex_array::VortexSessionExecute; /// use vortex_array::session::ArraySession; /// use vortex_session::VortexSession; -/// use vortex_fastlanes::DeltaArray; +/// use vortex_fastlanes::DeltaData; /// /// let session = VortexSession::empty().with::(); /// let primitive = PrimitiveArray::from_iter([1_u32, 2, 3, 5, 10, 11]); -/// let array = DeltaArray::try_from_primitive_array(&primitive, &mut session.create_execution_ctx()).unwrap(); +/// let array = DeltaData::try_from_primitive_array(&primitive, &mut session.create_execution_ctx()).unwrap(); /// ``` /// /// # Details @@ -65,7 +64,7 @@ pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["bases", "deltas"]; /// /// Note the validity is stored in the deltas array. #[derive(Clone, Debug)] -pub struct DeltaArray { +pub struct DeltaData { pub(super) offset: usize, pub(super) len: usize, pub(super) dtype: DType, @@ -73,7 +72,7 @@ pub struct DeltaArray { pub(super) stats_set: ArrayStats, } -impl DeltaArray { +impl DeltaData { pub fn try_from_primitive_array( array: &PrimitiveArray, ctx: &mut ExecutionCtx, @@ -84,7 +83,7 @@ impl DeltaArray { Self::try_new(bases.into_array(), deltas.into_array(), 0, logical_len) } - /// Create a [`DeltaArray`] from the given `bases` and `deltas` arrays + /// Create a DeltaArray from the given `bases` and `deltas` arrays /// with given `offset` into first chunk and `logical_len` length. pub fn try_new( bases: ArrayRef, diff --git a/encodings/fastlanes/src/delta/compute/cast.rs b/encodings/fastlanes/src/delta/compute/cast.rs index e93680e939a..46575c5dc6b 100644 --- a/encodings/fastlanes/src/delta/compute/cast.rs +++ b/encodings/fastlanes/src/delta/compute/cast.rs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::builtins::ArrayBuiltins; use vortex_array::dtype::DType; @@ -10,11 +11,10 @@ use vortex_array::scalar_fn::fns::cast::CastReduce; use vortex_error::VortexResult; use vortex_error::vortex_panic; +use crate::DeltaData; use crate::delta::Delta; -use crate::delta::DeltaArray; - impl CastReduce for Delta { - fn cast(array: &DeltaArray, dtype: &DType) -> VortexResult> { + fn cast(array: ArrayView<'_, Self>, dtype: &DType) -> VortexResult> { // Delta encoding stores differences between consecutive values, which requires // unsigned integers to avoid overflow issues. Signed integers could produce // negative deltas that wouldn't fit in the unsigned delta representation. @@ -38,7 +38,7 @@ impl CastReduce for Delta { // Create a new DeltaArray with the casted components, preserving offset and logical length Ok(Some( - DeltaArray::try_new(casted_bases, casted_deltas, array.offset(), array.len())? + DeltaData::try_new(casted_bases, casted_deltas, array.offset(), array.len())? .into_array(), )) } @@ -62,7 +62,7 @@ mod tests { use vortex_buffer::buffer; use vortex_session::VortexSession; - use crate::delta::DeltaArray; + use crate::DeltaData; static SESSION: LazyLock = LazyLock::new(|| VortexSession::empty().with::()); @@ -70,7 +70,7 @@ mod tests { fn test_cast_delta_u8_to_u32() { let primitive = PrimitiveArray::from_iter([10u8, 20, 30, 40, 50]); let array = - DeltaArray::try_from_primitive_array(&primitive, &mut SESSION.create_execution_ctx()) + DeltaData::try_from_primitive_array(&primitive, &mut SESSION.create_execution_ctx()) .unwrap(); let casted = array @@ -95,7 +95,7 @@ mod tests { vortex_array::validity::Validity::NonNullable, ); let array = - DeltaArray::try_from_primitive_array(&values, &mut SESSION.create_execution_ctx()) + DeltaData::try_from_primitive_array(&values, &mut SESSION.create_execution_ctx()) .unwrap(); let casted = array @@ -135,7 +135,7 @@ mod tests { )] fn test_cast_delta_conformance(#[case] primitive: PrimitiveArray) { let delta_array = - DeltaArray::try_from_primitive_array(&primitive, &mut SESSION.create_execution_ctx()) + DeltaData::try_from_primitive_array(&primitive, &mut SESSION.create_execution_ctx()) .unwrap(); test_cast_conformance(&delta_array.into_array()); } diff --git a/encodings/fastlanes/src/delta/mod.rs b/encodings/fastlanes/src/delta/mod.rs index da4f390d37b..52ea9b33574 100644 --- a/encodings/fastlanes/src/delta/mod.rs +++ b/encodings/fastlanes/src/delta/mod.rs @@ -2,10 +2,11 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors mod array; -pub use array::DeltaArray; +pub use array::DeltaData; pub use array::delta_compress::delta_compress; mod compute; mod vtable; pub use vtable::Delta; +pub use vtable::DeltaArray; diff --git a/encodings/fastlanes/src/delta/vtable/mod.rs b/encodings/fastlanes/src/delta/vtable/mod.rs index 9626d59b282..887de327a82 100644 --- a/encodings/fastlanes/src/delta/vtable/mod.rs +++ b/encodings/fastlanes/src/delta/vtable/mod.rs @@ -2,27 +2,28 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use std::hash::Hash; -use std::sync::Arc; use fastlanes::FastLanes; use prost::Message; +use vortex_array::Array; use vortex_array::ArrayEq; use vortex_array::ArrayHash; +use vortex_array::ArrayId; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::ExecutionResult; use vortex_array::IntoArray; use vortex_array::Precision; use vortex_array::ProstMetadata; +use vortex_array::arrays::PrimitiveArray; use vortex_array::buffer::BufferHandle; use vortex_array::dtype::DType; use vortex_array::dtype::PType; use vortex_array::match_each_unsigned_integer_ptype; use vortex_array::serde::ArrayChildren; -use vortex_array::stats::StatsSetRef; +use vortex_array::stats::ArrayStats; use vortex_array::vtable; -use vortex_array::vtable::Array; -use vortex_array::vtable::ArrayId; use vortex_array::vtable::VTable; use vortex_error::VortexResult; use vortex_error::vortex_ensure; @@ -30,7 +31,7 @@ use vortex_error::vortex_err; use vortex_error::vortex_panic; use vortex_session::VortexSession; -use crate::DeltaArray; +use crate::DeltaData; use crate::delta::array::NUM_SLOTS; use crate::delta::array::SLOT_NAMES; use crate::delta::array::delta_decompress::delta_decompress; @@ -40,7 +41,7 @@ mod rules; mod slice; mod validity; -vtable!(Delta); +vtable!(Delta, Delta, DeltaData); #[derive(Clone, prost::Message)] #[repr(C)] @@ -52,14 +53,14 @@ pub struct DeltaMetadata { } impl VTable for Delta { - type Array = DeltaArray; + type ArrayData = DeltaData; type Metadata = ProstMetadata; type OperationsVTable = Self; type ValidityVTable = Self; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &DeltaData) -> &Self { &Delta } @@ -67,63 +68,59 @@ impl VTable for Delta { Self::ID } - fn len(array: &DeltaArray) -> usize { + fn len(array: &DeltaData) -> usize { array.len() } - fn dtype(array: &DeltaArray) -> &DType { + fn dtype(array: &DeltaData) -> &DType { array.dtype() } - fn stats(array: &DeltaArray) -> StatsSetRef<'_> { - array.stats_set().to_ref(array.as_ref()) + fn stats(array: &DeltaData) -> &ArrayStats { + array.stats_set() } - fn array_hash(array: &DeltaArray, state: &mut H, precision: Precision) { + fn array_hash(array: &DeltaData, state: &mut H, precision: Precision) { array.offset().hash(state); - array.len().hash(state); - array.dtype().hash(state); array.bases().array_hash(state, precision); array.deltas().array_hash(state, precision); } - fn array_eq(array: &DeltaArray, other: &DeltaArray, precision: Precision) -> bool { + fn array_eq(array: &DeltaData, other: &DeltaData, precision: Precision) -> bool { array.offset() == other.offset() - && array.len() == other.len() - && array.dtype() == other.dtype() && array.bases().array_eq(other.bases(), precision) && array.deltas().array_eq(other.deltas(), precision) } - fn nbuffers(_array: &DeltaArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 0 } - fn buffer(_array: &DeltaArray, idx: usize) -> BufferHandle { + fn buffer(_array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { vortex_panic!("DeltaArray buffer index {idx} out of bounds") } - fn buffer_name(_array: &DeltaArray, _idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, _idx: usize) -> Option { None } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { rules::RULES.evaluate(array, parent, child_idx) } - fn slots(array: &DeltaArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &DeltaArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn with_slots(array: &mut DeltaArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "DeltaArray expects exactly {} slots, got {}", @@ -134,7 +131,7 @@ impl VTable for Delta { Ok(()) } - fn metadata(array: &DeltaArray) -> VortexResult { + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { Ok(ProstMetadata(DeltaMetadata { deltas_len: array.deltas().len() as u64, offset: array.offset() as u32, @@ -161,7 +158,7 @@ impl VTable for Delta { metadata: &Self::Metadata, _buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { assert_eq!(children.len(), 2); let ptype = PType::try_from(dtype)?; let lanes = match_each_unsigned_integer_ptype!(ptype, |T| { ::LANES }); @@ -176,10 +173,10 @@ impl VTable for Delta { let bases = children.get(0, dtype, bases_len)?; let deltas = children.get(1, dtype, deltas_len)?; - DeltaArray::try_new(bases, deltas, metadata.0.offset as usize, len) + DeltaData::try_new(bases, deltas, metadata.0.offset as usize, len) } - fn execute(array: Arc>, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, ctx: &mut ExecutionCtx) -> VortexResult { Ok(ExecutionResult::done( delta_decompress(&array, ctx)?.into_array(), )) @@ -191,6 +188,14 @@ pub struct Delta; impl Delta { pub const ID: ArrayId = ArrayId::new_ref("fastlanes.delta"); + + /// Compress a primitive array using Delta encoding. + pub fn try_from_primitive_array( + array: &PrimitiveArray, + ctx: &mut ExecutionCtx, + ) -> VortexResult { + Array::try_from_data(DeltaData::try_from_primitive_array(array, ctx)?) + } } #[cfg(test)] diff --git a/encodings/fastlanes/src/delta/vtable/operations.rs b/encodings/fastlanes/src/delta/vtable/operations.rs index 91e7501b308..cae9b701ee9 100644 --- a/encodings/fastlanes/src/delta/vtable/operations.rs +++ b/encodings/fastlanes/src/delta/vtable/operations.rs @@ -1,23 +1,23 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; +use vortex_array::IntoArray; use vortex_array::ToCanonical; use vortex_array::scalar::Scalar; use vortex_array::vtable::OperationsVTable; use vortex_error::VortexResult; use super::Delta; -use crate::DeltaArray; - impl OperationsVTable for Delta { fn scalar_at( - array: &DeltaArray, + array: ArrayView<'_, Delta>, index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { - let decompressed = array.slice(index..index + 1)?.to_primitive(); - decompressed.scalar_at(0) + let decompressed = array.array().slice(index..index + 1)?.to_primitive(); + decompressed.into_array().scalar_at(0) } } @@ -35,20 +35,26 @@ mod tests { use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::buffer; + use vortex_error::VortexExpect; use vortex_session::VortexSession; use crate::DeltaArray; + use crate::DeltaData; static SESSION: LazyLock = LazyLock::new(|| VortexSession::empty().with::()); + fn da(array: &PrimitiveArray) -> DeltaArray { + DeltaArray::try_from_data( + DeltaData::try_from_primitive_array(array, &mut SESSION.create_execution_ctx()) + .unwrap(), + ) + .vortex_expect("DeltaData is always valid") + } + #[test] fn test_slice_non_jagged_array_first_chunk_of_two() { - let delta = DeltaArray::try_from_primitive_array( - &(0u32..2048).collect(), - &mut SESSION.create_execution_ctx(), - ) - .unwrap(); + let delta = da(&(0u32..2048).collect()); let actual = delta.slice(10..250).unwrap(); let expected = PrimitiveArray::from_iter(10u32..250).into_array(); @@ -57,11 +63,7 @@ mod tests { #[test] fn test_slice_non_jagged_array_second_chunk_of_two() { - let delta = DeltaArray::try_from_primitive_array( - &(0u32..2048).collect(), - &mut SESSION.create_execution_ctx(), - ) - .unwrap(); + let delta = da(&(0u32..2048).collect()); let actual = delta.slice(1024 + 10..1024 + 250).unwrap(); let expected = PrimitiveArray::from_iter((1024 + 10u32)..(1024 + 250)).into_array(); @@ -70,11 +72,7 @@ mod tests { #[test] fn test_slice_non_jagged_array_span_two_chunks_chunk_of_two() { - let delta = DeltaArray::try_from_primitive_array( - &(0u32..2048).collect(), - &mut SESSION.create_execution_ctx(), - ) - .unwrap(); + let delta = da(&(0u32..2048).collect()); let actual = delta.slice(1000..1048).unwrap(); let expected = PrimitiveArray::from_iter(1000u32..1048).into_array(); @@ -83,11 +81,7 @@ mod tests { #[test] fn test_slice_non_jagged_array_span_two_chunks_chunk_of_four() { - let delta = DeltaArray::try_from_primitive_array( - &(0u32..4096).collect(), - &mut SESSION.create_execution_ctx(), - ) - .unwrap(); + let delta = da(&(0u32..4096).collect()); let actual = delta.slice(2040..2050).unwrap(); let expected = PrimitiveArray::from_iter(2040u32..2050).into_array(); @@ -96,11 +90,7 @@ mod tests { #[test] fn test_slice_non_jagged_array_whole() { - let delta = DeltaArray::try_from_primitive_array( - &(0u32..4096).collect(), - &mut SESSION.create_execution_ctx(), - ) - .unwrap(); + let delta = da(&(0u32..4096).collect()); let actual = delta.slice(0..4096).unwrap(); let expected = PrimitiveArray::from_iter(0u32..4096).into_array(); @@ -109,11 +99,7 @@ mod tests { #[test] fn test_slice_non_jagged_array_empty() { - let delta = DeltaArray::try_from_primitive_array( - &(0u32..4096).collect(), - &mut SESSION.create_execution_ctx(), - ) - .unwrap(); + let delta = da(&(0u32..4096).collect()); let actual = delta.slice(0..0).unwrap(); let expected = PrimitiveArray::from_iter(Vec::::new()).into_array(); @@ -130,11 +116,7 @@ mod tests { #[test] fn test_slice_jagged_array_second_chunk_of_two() { - let delta = DeltaArray::try_from_primitive_array( - &(0u32..2000).collect(), - &mut SESSION.create_execution_ctx(), - ) - .unwrap(); + let delta = da(&(0u32..2000).collect()); let actual = delta.slice(1024 + 10..1024 + 250).unwrap(); let expected = PrimitiveArray::from_iter((1024 + 10u32)..(1024 + 250)).into_array(); @@ -143,11 +125,7 @@ mod tests { #[test] fn test_slice_jagged_array_empty() { - let delta = DeltaArray::try_from_primitive_array( - &(0u32..4000).collect(), - &mut SESSION.create_execution_ctx(), - ) - .unwrap(); + let delta = da(&(0u32..4000).collect()); let actual = delta.slice(0..0).unwrap(); let expected = PrimitiveArray::from_iter(Vec::::new()).into_array(); @@ -164,11 +142,7 @@ mod tests { #[test] fn test_slice_of_slice_of_non_jagged() { - let delta = DeltaArray::try_from_primitive_array( - &(0u32..2048).collect(), - &mut SESSION.create_execution_ctx(), - ) - .unwrap(); + let delta = da(&(0u32..2048).collect()); let sliced = delta.slice(10..1013).unwrap(); let sliced_again = sliced.slice(0..2).unwrap(); @@ -179,11 +153,7 @@ mod tests { #[test] fn test_slice_of_slice_of_jagged() { - let delta = DeltaArray::try_from_primitive_array( - &(0u32..2000).collect(), - &mut SESSION.create_execution_ctx(), - ) - .unwrap(); + let delta = da(&(0u32..2000).collect()); let sliced = delta.slice(10..1013).unwrap(); let sliced_again = sliced.slice(0..2).unwrap(); @@ -194,11 +164,7 @@ mod tests { #[test] fn test_slice_of_slice_second_chunk_of_non_jagged() { - let delta = DeltaArray::try_from_primitive_array( - &(0u32..2048).collect(), - &mut SESSION.create_execution_ctx(), - ) - .unwrap(); + let delta = da(&(0u32..2048).collect()); let sliced = delta.slice(1034..1050).unwrap(); let sliced_again = sliced.slice(0..2).unwrap(); @@ -209,11 +175,7 @@ mod tests { #[test] fn test_slice_of_slice_second_chunk_of_jagged() { - let delta = DeltaArray::try_from_primitive_array( - &(0u32..2000).collect(), - &mut SESSION.create_execution_ctx(), - ) - .unwrap(); + let delta = da(&(0u32..2000).collect()); let sliced = delta.slice(1034..1050).unwrap(); let sliced_again = sliced.slice(0..2).unwrap(); @@ -224,11 +186,7 @@ mod tests { #[test] fn test_slice_of_slice_spanning_two_chunks_of_non_jagged() { - let delta = DeltaArray::try_from_primitive_array( - &(0u32..2048).collect(), - &mut SESSION.create_execution_ctx(), - ) - .unwrap(); + let delta = da(&(0u32..2048).collect()); let sliced = delta.slice(1010..1050).unwrap(); let sliced_again = sliced.slice(5..20).unwrap(); @@ -239,11 +197,7 @@ mod tests { #[test] fn test_slice_of_slice_spanning_two_chunks_of_jagged() { - let delta = DeltaArray::try_from_primitive_array( - &(0u32..2000).collect(), - &mut SESSION.create_execution_ctx(), - ) - .unwrap(); + let delta = da(&(0u32..2000).collect()); let sliced = delta.slice(1010..1050).unwrap(); let sliced_again = sliced.slice(5..20).unwrap(); @@ -254,12 +208,7 @@ mod tests { #[test] fn test_scalar_at_non_jagged_array() { - let delta = DeltaArray::try_from_primitive_array( - &(0u32..2048).collect(), - &mut SESSION.create_execution_ctx(), - ) - .unwrap() - .into_array(); + let delta = da(&(0u32..2048).collect()).into_array(); let expected = PrimitiveArray::from_iter(0u32..2048).into_array(); assert_arrays_eq!(delta, expected); @@ -268,22 +217,12 @@ mod tests { #[test] #[should_panic] fn test_scalar_at_non_jagged_array_oob() { - let delta = DeltaArray::try_from_primitive_array( - &(0u32..2048).collect(), - &mut SESSION.create_execution_ctx(), - ) - .unwrap() - .into_array(); + let delta = da(&(0u32..2048).collect()).into_array(); delta.scalar_at(2048).unwrap(); } #[test] fn test_scalar_at_jagged_array() { - let delta = DeltaArray::try_from_primitive_array( - &(0u32..2000).collect(), - &mut SESSION.create_execution_ctx(), - ) - .unwrap() - .into_array(); + let delta = da(&(0u32..2000).collect()).into_array(); let expected = PrimitiveArray::from_iter(0u32..2000).into_array(); assert_arrays_eq!(delta, expected); @@ -292,12 +231,7 @@ mod tests { #[test] #[should_panic] fn test_scalar_at_jagged_array_oob() { - let delta = DeltaArray::try_from_primitive_array( - &(0u32..2000).collect(), - &mut SESSION.create_execution_ctx(), - ) - .unwrap() - .into_array(); + let delta = da(&(0u32..2000).collect()).into_array(); delta.scalar_at(2000).unwrap(); } @@ -311,11 +245,7 @@ mod tests { // Single element #[case::delta_single(PrimitiveArray::new(buffer![42u32], Validity::NonNullable))] fn test_delta_consistency(#[case] array: PrimitiveArray) { - test_array_consistency( - &DeltaArray::try_from_primitive_array(&array, &mut SESSION.create_execution_ctx()) - .unwrap() - .into_array(), - ); + test_array_consistency(&da(&array).into_array()); } #[rstest] @@ -325,10 +255,6 @@ mod tests { #[case::delta_u64_basic(PrimitiveArray::new(buffer![1u64, 1, 1, 1, 1], Validity::NonNullable))] #[case::delta_u32_large(PrimitiveArray::new(buffer![1u32; 100], Validity::NonNullable))] fn test_delta_binary_numeric(#[case] array: PrimitiveArray) { - test_binary_numeric_array( - DeltaArray::try_from_primitive_array(&array, &mut SESSION.create_execution_ctx()) - .unwrap() - .into_array(), - ); + test_binary_numeric_array(da(&array).into_array()); } } diff --git a/encodings/fastlanes/src/delta/vtable/slice.rs b/encodings/fastlanes/src/delta/vtable/slice.rs index 6c589b85db2..3068569d3c0 100644 --- a/encodings/fastlanes/src/delta/vtable/slice.rs +++ b/encodings/fastlanes/src/delta/vtable/slice.rs @@ -5,15 +5,16 @@ use std::cmp::min; use std::ops::Range; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::arrays::slice::SliceReduce; use vortex_error::VortexResult; -use crate::DeltaArray; +use crate::DeltaData; use crate::delta::vtable::Delta; impl SliceReduce for Delta { - fn slice(array: &Self::Array, range: Range) -> VortexResult> { + fn slice(array: ArrayView<'_, Self>, range: Range) -> VortexResult> { let physical_start = range.start + array.offset(); let physical_stop = range.end + array.offset(); @@ -34,7 +35,7 @@ impl SliceReduce for Delta { // SAFETY: slicing valid bases/deltas preserves correctness Ok(Some(unsafe { - DeltaArray::new_unchecked(new_bases, new_deltas, physical_start % 1024, range.len()) + DeltaData::new_unchecked(new_bases, new_deltas, physical_start % 1024, range.len()) .into_array() })) } diff --git a/encodings/fastlanes/src/delta/vtable/validity.rs b/encodings/fastlanes/src/delta/vtable/validity.rs index 17dc2063206..d1e6fc28870 100644 --- a/encodings/fastlanes/src/delta/vtable/validity.rs +++ b/encodings/fastlanes/src/delta/vtable/validity.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ArrayView; use vortex_array::LEGACY_SESSION; use vortex_array::VortexSessionExecute; use vortex_array::validity::Validity; @@ -8,11 +9,10 @@ use vortex_array::vtable::ValidityVTable; use vortex_error::VortexResult; use crate::Delta; -use crate::DeltaArray; use crate::bit_transpose::untranspose_validity; impl ValidityVTable for Delta { - fn validity(array: &DeltaArray) -> VortexResult { + fn validity(array: ArrayView<'_, Delta>) -> VortexResult { let start = array.offset(); let end = start + array.len(); diff --git a/encodings/fastlanes/src/for/array/for_compress.rs b/encodings/fastlanes/src/for/array/for_compress.rs index 95277505360..b911e20fa17 100644 --- a/encodings/fastlanes/src/for/array/for_compress.rs +++ b/encodings/fastlanes/src/for/array/for_compress.rs @@ -5,6 +5,7 @@ use num_traits::PrimInt; use num_traits::WrappingSub; use vortex_array::IntoArray; use vortex_array::arrays::PrimitiveArray; +use vortex_array::arrays::primitive::PrimitiveData; use vortex_array::dtype::NativePType; use vortex_array::expr::stats::Stat; use vortex_array::match_each_integer_ptype; @@ -13,11 +14,12 @@ use vortex_error::VortexResult; use vortex_error::vortex_err; use crate::FoRArray; - -impl FoRArray { +use crate::FoRData; +impl FoRData { pub fn encode(array: PrimitiveArray) -> VortexResult { - let stats = ArrayStats::from(array.statistics().to_owned()); - let min = array + let array_ref = array.clone().into_array(); + let stats = ArrayStats::from(array_ref.statistics().to_owned()); + let min = array_ref .statistics() .compute_stat(Stat::Min)? .ok_or_else(|| vortex_err!("Min stat not found"))?; @@ -25,11 +27,13 @@ impl FoRArray { let encoded = match_each_integer_ptype!(array.ptype(), |T| { compress_primitive::(array, T::try_from(&min)?)?.into_array() }); - let for_array = FoRArray::try_new(encoded, min)?; + let for_data = FoRData::try_new(encoded, min)?; + let for_array = FoRArray::try_from_data(for_data)?; + let for_ref = for_array.clone().into_array(); for_array .stats_set() - .to_ref(for_array.as_ref()) - .inherit_from(stats.to_ref(for_array.as_ref())); + .to_ref(&for_ref) + .inherit_from(stats.to_ref(&for_ref)); Ok(for_array) } } @@ -37,16 +41,18 @@ impl FoRArray { fn compress_primitive( parray: PrimitiveArray, min: T, -) -> VortexResult { +) -> VortexResult { // Set null values to the min value, ensuring that decompress into a value in the primitive // range (and stop them wrapping around). - parray.map_each_with_validity::(|(v, bool)| { - if bool { - v.wrapping_sub(&min) - } else { - T::zero() - } - }) + parray + .into_data() + .map_each_with_validity::(|(v, bool)| { + if bool { + v.wrapping_sub(&min) + } else { + T::zero() + } + }) } #[cfg(test)] @@ -54,7 +60,6 @@ mod test { use std::sync::LazyLock; use itertools::Itertools; - use vortex_array::DynArray; use vortex_array::ToCanonical; use vortex_array::VortexSessionExecute; use vortex_array::assert_arrays_eq; @@ -67,7 +72,8 @@ mod test { use vortex_session::VortexSession; use super::*; - use crate::BitPackedArray; + use crate::BitPackedData; + use crate::FoRArray; use crate::r#for::array::for_decompress::decompress; use crate::r#for::array::for_decompress::fused_decompress; @@ -80,7 +86,7 @@ mod test { (1i32..10).collect::>(), Validity::NonNullable, ); - let compressed = FoRArray::encode(array.clone()).unwrap(); + let compressed = FoRData::encode(array.clone()).unwrap(); assert_eq!(i32::try_from(compressed.reference_scalar()).unwrap(), 1); assert_arrays_eq!(compressed, array); @@ -95,7 +101,7 @@ mod test { .collect::>(), Validity::NonNullable, ); - let compressed = FoRArray::encode(array).unwrap(); + let compressed = FoRData::encode(array).unwrap(); assert_eq!( u32::try_from(compressed.reference_scalar()).unwrap(), 1_000_000u32 @@ -108,7 +114,7 @@ mod test { assert_eq!(array.statistics().len(), 0); let dtype = array.dtype().clone(); - let compressed = FoRArray::encode(array).unwrap(); + let compressed = FoRData::encode(array).unwrap(); assert_eq!(compressed.reference_scalar().dtype(), &dtype); assert!(compressed.reference_scalar().dtype().is_signed_int()); assert!(compressed.encoded().dtype().is_signed_int()); @@ -121,7 +127,7 @@ mod test { fn test_decompress() { // Create a range offset by a million. let array = PrimitiveArray::from_iter((0u32..100_000).step_by(1024).map(|v| v + 1_000_000)); - let compressed = FoRArray::encode(array.clone()).unwrap(); + let compressed = FoRData::encode(array.clone()).unwrap(); assert_arrays_eq!(compressed, array); } @@ -130,8 +136,8 @@ mod test { // Create a range offset by a million. let expect = PrimitiveArray::from_iter((0u32..1024).map(|x| x % 7 + 10)); let array = PrimitiveArray::from_iter((0u32..1024).map(|x| x % 7)); - let bp = BitPackedArray::encode(&array.into_array(), 3).unwrap(); - let compressed = FoRArray::try_new(bp.into_array(), 10u32.into()).unwrap(); + let bp = BitPackedData::encode(&array.into_array(), 3).unwrap(); + let compressed = FoRData::try_new(bp.into_array(), 10u32.into()).unwrap(); assert_arrays_eq!(compressed, expect); } @@ -140,10 +146,15 @@ mod test { // Create a range offset by a million. let expect = PrimitiveArray::from_iter((0u32..1024).map(|x| x % 7 + 10)); let array = PrimitiveArray::from_iter((0u32..1024).map(|x| x % 7)); - let bp = BitPackedArray::encode(&array.into_array(), 2).unwrap(); - let compressed = FoRArray::try_new(bp.clone().into_array(), 10u32.into()).unwrap(); - let decompressed = - fused_decompress::(&compressed, &bp, &mut SESSION.create_execution_ctx())?; + let bp = BitPackedData::encode(&array.into_array(), 2).unwrap(); + let compressed = FoRArray::try_from_data( + FoRData::try_new(bp.clone().into_array(), 10u32.into()).unwrap(), + )?; + let decompressed = fused_decompress::( + &compressed, + bp.as_view(), + &mut SESSION.create_execution_ctx(), + )?; assert_arrays_eq!(decompressed, expect); Ok(()) } @@ -151,7 +162,7 @@ mod test { #[test] fn test_overflow() -> VortexResult<()> { let array = PrimitiveArray::from_iter(i8::MIN..=i8::MAX); - let compressed = FoRArray::encode(array.clone()).unwrap(); + let compressed = FoRData::encode(array.clone()).unwrap(); assert_eq!( i8::MIN, compressed diff --git a/encodings/fastlanes/src/for/array/for_decompress.rs b/encodings/fastlanes/src/for/array/for_decompress.rs index d7633481b74..13de40e6365 100644 --- a/encodings/fastlanes/src/for/array/for_decompress.rs +++ b/encodings/fastlanes/src/for/array/for_decompress.rs @@ -4,6 +4,7 @@ use fastlanes::FoR; use num_traits::PrimInt; use num_traits::WrappingAdd; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::arrays::PrimitiveArray; use vortex_array::builders::PrimitiveBuilder; @@ -17,7 +18,6 @@ use vortex_error::VortexExpect; use vortex_error::VortexResult; use crate::BitPacked; -use crate::BitPackedArray; use crate::FoRArray; use crate::bitpack_decompress; use crate::unpack_iter::UnpackStrategy; @@ -80,7 +80,7 @@ pub(crate) fn fused_decompress< T: PhysicalPType + UnsignedPType + FoR + WrappingAdd, >( for_: &FoRArray, - bp: &BitPackedArray, + bp: ArrayView<'_, BitPacked>, ctx: &mut ExecutionCtx, ) -> VortexResult { let ref_ = for_ @@ -107,7 +107,7 @@ pub(crate) fn fused_decompress< let mut uninit_range = builder.uninit_range(bp.len()); unsafe { // Append a dense null Mask. - uninit_range.append_mask(bp.validity_mask()?); + uninit_range.append_mask(bp.validity_mask()); } // SAFETY: `decode_into` will initialize all values in this range. diff --git a/encodings/fastlanes/src/for/array/mod.rs b/encodings/fastlanes/src/for/array/mod.rs index ade858478f5..74d88580bd3 100644 --- a/encodings/fastlanes/src/for/array/mod.rs +++ b/encodings/fastlanes/src/for/array/mod.rs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::dtype::DType; use vortex_array::dtype::PType; use vortex_array::scalar::Scalar; use vortex_array::stats::ArrayStats; @@ -22,13 +23,13 @@ pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["encoded"]; /// This encoding stores values as offsets from a reference value, which can significantly reduce /// storage requirements when values are clustered around a specific point. #[derive(Clone, Debug)] -pub struct FoRArray { +pub struct FoRData { pub(super) slots: Vec>, pub(super) reference: Scalar, pub(super) stats_set: ArrayStats, } -impl FoRArray { +impl FoRData { pub fn try_new(encoded: ArrayRef, reference: Scalar) -> VortexResult { if reference.is_null() { vortex_bail!("Reference value cannot be null"); @@ -54,6 +55,24 @@ impl FoRArray { } } + /// Returns the length of the array. + #[inline] + pub fn len(&self) -> usize { + self.encoded().len() + } + + /// Returns `true` if the array is empty. + #[inline] + pub fn is_empty(&self) -> bool { + self.encoded().is_empty() + } + + /// Returns the dtype of the array. + #[inline] + pub fn dtype(&self) -> &DType { + self.reference.dtype() + } + #[inline] pub fn ptype(&self) -> PType { self.dtype().as_ptype() diff --git a/encodings/fastlanes/src/for/compute/cast.rs b/encodings/fastlanes/src/for/compute/cast.rs index 0524ba68bcf..884a0a8b94f 100644 --- a/encodings/fastlanes/src/for/compute/cast.rs +++ b/encodings/fastlanes/src/for/compute/cast.rs @@ -2,17 +2,17 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::builtins::ArrayBuiltins; use vortex_array::dtype::DType; use vortex_array::scalar_fn::fns::cast::CastReduce; use vortex_error::VortexResult; +use crate::FoRData; use crate::r#for::FoR; -use crate::r#for::FoRArray; - impl CastReduce for FoR { - fn cast(array: &FoRArray, dtype: &DType) -> VortexResult> { + fn cast(array: ArrayView<'_, Self>, dtype: &DType) -> VortexResult> { // FoR only supports integer types if !dtype.is_int() { return Ok(None); @@ -23,7 +23,7 @@ impl CastReduce for FoR { let casted_reference = array.reference_scalar().cast(dtype)?; Ok(Some( - FoRArray::try_new(casted_child, casted_reference)?.into_array(), + FoRData::try_new(casted_child, casted_reference)?.into_array(), )) } } @@ -31,6 +31,7 @@ impl CastReduce for FoR { #[cfg(test)] mod tests { use rstest::rstest; + use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::assert_arrays_eq; @@ -41,16 +42,22 @@ mod tests { use vortex_array::dtype::PType; use vortex_array::scalar::Scalar; use vortex_buffer::buffer; + use vortex_error::VortexExpect; use crate::FoRArray; + use crate::FoRData; + + fn for_arr(encoded: ArrayRef, reference: Scalar) -> FoRArray { + FoRArray::try_from_data(FoRData::try_new(encoded, reference).unwrap()) + .vortex_expect("FoRData is always valid") + } #[test] fn test_cast_for_i32_to_i64() { - let for_array = FoRArray::try_new( + let for_array = for_arr( buffer![0i32, 10, 20, 30, 40].into_array(), Scalar::from(100i32), - ) - .unwrap(); + ); let casted = for_array .into_array() @@ -71,7 +78,7 @@ mod tests { #[test] fn test_cast_for_nullable() { let values = PrimitiveArray::from_option_iter([Some(0i32), None, Some(20), Some(30), None]); - let for_array = FoRArray::try_new(values.into_array(), Scalar::from(50i32)).unwrap(); + let for_array = for_arr(values.into_array(), Scalar::from(50i32)); let casted = for_array .into_array() @@ -84,22 +91,22 @@ mod tests { } #[rstest] - #[case(FoRArray::try_new( + #[case(for_arr( buffer![0i32, 1, 2, 3, 4].into_array(), Scalar::from(100i32) - ).unwrap())] - #[case(FoRArray::try_new( + ))] + #[case(for_arr( buffer![0u64, 10, 20, 30].into_array(), Scalar::from(1000u64) - ).unwrap())] - #[case(FoRArray::try_new( + ))] + #[case(for_arr( PrimitiveArray::from_option_iter([Some(0i16), None, Some(5), Some(10), None]).into_array(), Scalar::from(50i16) - ).unwrap())] - #[case(FoRArray::try_new( + ))] + #[case(for_arr( buffer![-10i32, -5, 0, 5, 10].into_array(), Scalar::from(-100i32) - ).unwrap())] + ))] fn test_cast_for_conformance(#[case] array: FoRArray) { test_cast_conformance(&array.into_array()); } diff --git a/encodings/fastlanes/src/for/compute/compare.rs b/encodings/fastlanes/src/for/compute/compare.rs index 79629b6df92..f23ec8c0256 100644 --- a/encodings/fastlanes/src/for/compute/compare.rs +++ b/encodings/fastlanes/src/for/compute/compare.rs @@ -5,7 +5,7 @@ use std::ops::Shr; use num_traits::WrappingSub; use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::ConstantArray; @@ -23,11 +23,11 @@ use vortex_error::VortexExpect as _; use vortex_error::VortexResult; use crate::FoR; -use crate::FoRArray; +use crate::FoRData; impl CompareKernel for FoR { fn compare( - lhs: &FoRArray, + lhs: ArrayView<'_, Self>, rhs: &ArrayRef, operator: CompareOperator, _ctx: &mut ExecutionCtx, @@ -37,7 +37,7 @@ impl CompareKernel for FoR { { match_each_integer_ptype!(constant.ptype(), |T| { return compare_constant( - lhs, + &lhs, constant .typed_value::() .vortex_expect("null scalar handled in adaptor"), @@ -52,7 +52,7 @@ impl CompareKernel for FoR { } fn compare_constant( - lhs: &FoRArray, + lhs: &FoRData, mut rhs: T, nullability: Nullability, operator: CompareOperator, @@ -99,16 +99,22 @@ mod tests { use vortex_buffer::buffer; use super::*; + use crate::FoRArray; + use crate::FoRData; + + fn for_arr(encoded: ArrayRef, reference: Scalar) -> FoRArray { + FoRArray::try_from_data(FoRData::try_new(encoded, reference).unwrap()) + .vortex_expect("FoRData is always valid") + } #[test] fn test_compare_constant() { let reference = Scalar::from(10); // 10, 30, 12 - let lhs = FoRArray::try_new( + let lhs = for_arr( PrimitiveArray::new(buffer!(0i32, 20, 2), Validity::AllValid).into_array(), reference, - ) - .unwrap(); + ); let result = compare_constant(&lhs, 30i32, Nullability::NonNullable, CompareOperator::Eq) .unwrap() @@ -143,11 +149,10 @@ mod tests { fn test_compare_nullable_constant() { let reference = Scalar::from(0); // 10, 30, 12 - let lhs = FoRArray::try_new( + let lhs = for_arr( PrimitiveArray::new(buffer!(0i32, 20, 2), Validity::NonNullable).into_array(), reference, - ) - .unwrap(); + ); assert_eq!( compare_constant(&lhs, 30i32, Nullability::Nullable, CompareOperator::Eq) @@ -169,11 +174,10 @@ mod tests { fn compare_non_encodable_constant() { let reference = Scalar::from(10); // 10, 30, 12 - let lhs = FoRArray::try_new( + let lhs = for_arr( PrimitiveArray::new(buffer!(0i32, 10, 1), Validity::AllValid).into_array(), reference, - ) - .unwrap(); + ); let result = compare_constant(&lhs, -1i32, Nullability::NonNullable, CompareOperator::Eq) .unwrap() @@ -198,15 +202,14 @@ mod tests { fn compare_large_constant() { let reference = Scalar::from(-9219218377546224477i64); #[allow(clippy::cast_possible_truncation)] - let lhs = FoRArray::try_new( + let lhs = for_arr( PrimitiveArray::new( buffer![0i64, 9654309310445864926u64 as i64], Validity::AllValid, ) .into_array(), reference, - ) - .unwrap(); + ); let result = compare_constant( &lhs, diff --git a/encodings/fastlanes/src/for/compute/is_sorted.rs b/encodings/fastlanes/src/for/compute/is_sorted.rs index 110c2b575f6..05d5e31836e 100644 --- a/encodings/fastlanes/src/for/compute/is_sorted.rs +++ b/encodings/fastlanes/src/for/compute/is_sorted.rs @@ -15,64 +15,6 @@ use vortex_error::VortexResult; use crate::FoR; -/// FoR can express sortedness directly on its encoded form. -/// -/// If the minimum is greater than or equal to zero, subtracting it from the other values does not -/// wrap (the value always decreases and the smallest value is zero because min - min = 0). -/// -/// Subtraction without wrapping is order-preserving, so we only need to consider what happens to -/// wrapped numbers. -/// -/// Non-negative minimum values can't wrap. For a negative minimum value, wrapping means that -/// -/// ```text -/// a + abs(min) > 127 -/// ``` -/// -/// There's some residue r, -/// -/// ```text -/// r < 128 -/// ``` -/// -/// such that -/// -/// ```text -/// a + abs(min) mod 128 = r -/// ``` -/// -/// For example, -/// -/// ```text -/// min = -128 -/// a = 1 -/// -/// 1 - -128 = 129 -/// ``` -/// -/// And 129's residue is 1. 129 is represented as -/// -/// ```text -/// -128 + 1 = -127 -/// ``` -/// -/// The unsigned representation is -/// -/// ```text -/// 2^8 - 127 -/// ``` -/// -/// More directly, for some residue r: -/// -/// ```text -/// 2^8 + (-128 + r) -/// = 2^8 - 128 + r -/// = 128 + r -/// ``` -/// -/// Addition is order-preserving, so all the wrapped values preserve their order and they're all -/// represented as unsigned values larger than 127 so they also preserve their order with the -/// unwrapped values. #[derive(Debug)] pub(crate) struct FoRIsSortedKernel; @@ -116,14 +58,14 @@ mod test { use vortex_array::validity::Validity; use vortex_buffer::buffer; - use crate::FoRArray; + use crate::FoRData; #[test] fn test_sorted() { let mut ctx = LEGACY_SESSION.create_execution_ctx(); let a = PrimitiveArray::new(buffer![-1, 0, i8::MAX], Validity::NonNullable); - let b = FoRArray::encode(a).unwrap(); + let b = FoRData::encode(a).unwrap(); assert!( is_sorted(&b.clone().into_array(), &mut ctx).unwrap(), "{}", @@ -131,7 +73,7 @@ mod test { ); let a = PrimitiveArray::new(buffer![i8::MIN, 0, i8::MAX], Validity::NonNullable); - let b = FoRArray::encode(a).unwrap(); + let b = FoRData::encode(a).unwrap(); assert!( is_sorted(&b.clone().into_array(), &mut ctx).unwrap(), "{}", @@ -139,7 +81,7 @@ mod test { ); let a = PrimitiveArray::new(buffer![i8::MIN, 0, 30, 127], Validity::NonNullable); - let b = FoRArray::encode(a).unwrap(); + let b = FoRData::encode(a).unwrap(); assert!( is_sorted(&b.clone().into_array(), &mut ctx).unwrap(), "{}", @@ -147,7 +89,7 @@ mod test { ); let a = PrimitiveArray::new(buffer![i8::MIN, -3, -1], Validity::NonNullable); - let b = FoRArray::encode(a).unwrap(); + let b = FoRData::encode(a).unwrap(); assert!( is_sorted(&b.clone().into_array(), &mut ctx).unwrap(), "{}", @@ -155,7 +97,7 @@ mod test { ); let a = PrimitiveArray::new(buffer![-10, -3, -1], Validity::NonNullable); - let b = FoRArray::encode(a).unwrap(); + let b = FoRData::encode(a).unwrap(); assert!( is_sorted(&b.clone().into_array(), &mut ctx).unwrap(), "{}", @@ -163,7 +105,7 @@ mod test { ); let a = PrimitiveArray::new(buffer![-10, -11, -1], Validity::NonNullable); - let b = FoRArray::encode(a).unwrap(); + let b = FoRData::encode(a).unwrap(); assert!( !is_sorted(&b.clone().into_array(), &mut ctx).unwrap(), "{}", @@ -171,7 +113,7 @@ mod test { ); let a = PrimitiveArray::new(buffer![-10, i8::MIN, -1], Validity::NonNullable); - let b = FoRArray::encode(a).unwrap(); + let b = FoRData::encode(a).unwrap(); assert!( !is_sorted(&b.clone().into_array(), &mut ctx).unwrap(), "{}", diff --git a/encodings/fastlanes/src/for/compute/mod.rs b/encodings/fastlanes/src/for/compute/mod.rs index 921cc7affe7..7704dc02ff5 100644 --- a/encodings/fastlanes/src/for/compute/mod.rs +++ b/encodings/fastlanes/src/for/compute/mod.rs @@ -7,7 +7,7 @@ pub(crate) mod is_constant; pub(crate) mod is_sorted; use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::dict::TakeExecute; @@ -16,17 +16,17 @@ use vortex_error::VortexResult; use vortex_mask::Mask; use crate::FoR; -use crate::FoRArray; +use crate::FoRData; impl TakeExecute for FoR { fn take( - array: &FoRArray, + array: ArrayView<'_, Self>, indices: &ArrayRef, _ctx: &mut ExecutionCtx, ) -> VortexResult> { Ok(Some( - FoRArray::try_new( - array.encoded().take(indices.to_array())?, + FoRData::try_new( + array.encoded().take(indices.clone())?, array.reference_scalar().clone(), )? .into_array(), @@ -35,8 +35,8 @@ impl TakeExecute for FoR { } impl FilterReduce for FoR { - fn filter(array: &FoRArray, mask: &Mask) -> VortexResult> { - FoRArray::try_new( + fn filter(array: ArrayView<'_, Self>, mask: &Mask) -> VortexResult> { + FoRData::try_new( array.encoded().filter(mask.clone())?, array.reference_scalar().clone(), ) @@ -47,45 +47,51 @@ impl FilterReduce for FoR { #[cfg(test)] mod test { use rstest::rstest; + use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::compute::conformance::filter::test_filter_conformance; use vortex_array::scalar::Scalar; use vortex_buffer::buffer; + use vortex_error::VortexExpect; use crate::FoRArray; + use crate::FoRData; + + fn fa(encoded: ArrayRef, reference: Scalar) -> FoRArray { + FoRArray::try_from_data(FoRData::try_new(encoded, reference).unwrap()) + .vortex_expect("FoRData is always valid") + } #[test] fn test_filter_for_array() { - // Test with i32 values - let values = buffer![100i32, 101, 102, 103, 104].into_array(); - let reference = Scalar::from(100i32); - let for_array = FoRArray::try_new(values, reference).unwrap(); + let for_array = fa( + buffer![100i32, 101, 102, 103, 104].into_array(), + Scalar::from(100i32), + ); test_filter_conformance(&for_array.into_array()); - // Test with u64 values - let values = buffer![1000u64, 1001, 1002, 1003, 1004].into_array(); - let reference = Scalar::from(1000u64); - let for_array = FoRArray::try_new(values, reference).unwrap(); + let for_array = fa( + buffer![1000u64, 1001, 1002, 1003, 1004].into_array(), + Scalar::from(1000u64), + ); test_filter_conformance(&for_array.into_array()); - // Test with nullable values let values = PrimitiveArray::from_option_iter([Some(50i16), None, Some(52), Some(53), None]); - let reference = Scalar::from(50i16); - let for_array = FoRArray::try_new(values.into_array(), reference).unwrap(); + let for_array = fa(values.into_array(), Scalar::from(50i16)); test_filter_conformance(&for_array.into_array()); } #[rstest] - #[case(FoRArray::try_new(buffer![100i32, 101, 102, 103, 104].into_array(), Scalar::from(100i32)).unwrap())] - #[case(FoRArray::try_new(buffer![1000u64, 1001, 1002, 1003, 1004].into_array(), Scalar::from(1000u64)).unwrap())] - #[case(FoRArray::try_new( + #[case(fa(buffer![100i32, 101, 102, 103, 104].into_array(), Scalar::from(100i32)))] + #[case(fa(buffer![1000u64, 1001, 1002, 1003, 1004].into_array(), Scalar::from(1000u64)))] + #[case(fa( PrimitiveArray::from_option_iter([Some(50i16), None, Some(52), Some(53), None]).into_array(), Scalar::from(50i16) - ).unwrap())] - #[case(FoRArray::try_new(buffer![-100i32, -99, -98, -97, -96].into_array(), Scalar::from(-100i32)).unwrap())] - #[case(FoRArray::try_new(buffer![42i64].into_array(), Scalar::from(40i64)).unwrap())] + ))] + #[case(fa(buffer![-100i32, -99, -98, -97, -96].into_array(), Scalar::from(-100i32)))] + #[case(fa(buffer![42i64].into_array(), Scalar::from(40i64)))] fn test_take_for_conformance(#[case] for_array: FoRArray) { use vortex_array::compute::conformance::take::test_take_conformance; test_take_conformance(&for_array.into_array()); @@ -95,92 +101,64 @@ mod test { #[cfg(test)] mod tests { use rstest::rstest; + use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::compute::conformance::binary_numeric::test_binary_numeric_array; use vortex_array::compute::conformance::consistency::test_array_consistency; use vortex_array::scalar::Scalar; use vortex_buffer::buffer; + use vortex_error::VortexExpect; use crate::FoRArray; + use crate::FoRData; + + fn fa(encoded: ArrayRef, reference: Scalar) -> FoRArray { + FoRArray::try_from_data(FoRData::try_new(encoded, reference).unwrap()) + .vortex_expect("FoRData is always valid") + } #[rstest] - // Basic FoR arrays - #[case::for_i32(FoRArray::try_new( - buffer![100i32, 101, 102, 103, 104].into_array(), - Scalar::from(100i32) - ).unwrap())] - #[case::for_u64(FoRArray::try_new( - buffer![1000u64, 1001, 1002, 1003, 1004].into_array(), - Scalar::from(1000u64) - ).unwrap())] - // Nullable arrays - #[case::for_nullable_i16(FoRArray::try_new( + #[case::for_i32(fa(buffer![100i32, 101, 102, 103, 104].into_array(), Scalar::from(100i32)))] + #[case::for_u64(fa(buffer![1000u64, 1001, 1002, 1003, 1004].into_array(), Scalar::from(1000u64)))] + #[case::for_nullable_i16(fa( PrimitiveArray::from_option_iter([Some(50i16), None, Some(52), Some(53), None]).into_array(), Scalar::from(50i16) - ).unwrap())] - #[case::for_nullable_i32(FoRArray::try_new( + ))] + #[case::for_nullable_i32(fa( PrimitiveArray::from_option_iter([Some(200i32), None, Some(202), Some(203), None]).into_array(), Scalar::from(200i32) - ).unwrap())] - // Negative values - #[case::for_negative(FoRArray::try_new( - buffer![-100i32, -99, -98, -97, -96].into_array(), - Scalar::from(-100i32) - ).unwrap())] - // Edge cases - #[case::for_single(FoRArray::try_new( - buffer![42i64].into_array(), - Scalar::from(40i64) - ).unwrap())] - #[case::for_zero_ref(FoRArray::try_new( - buffer![0u32, 1, 2, 3, 4].into_array(), - Scalar::from(0u32) - ).unwrap())] - // Large arrays (> 1024 elements for fastlanes chunking) - #[case::for_large(FoRArray::try_new( + ))] + #[case::for_negative(fa(buffer![-100i32, -99, -98, -97, -96].into_array(), Scalar::from(-100i32)))] + #[case::for_single(fa(buffer![42i64].into_array(), Scalar::from(40i64)))] + #[case::for_zero_ref(fa(buffer![0u32, 1, 2, 3, 4].into_array(), Scalar::from(0u32)))] + #[case::for_large(fa( PrimitiveArray::from_iter((0..1500).map(|i| 5000 + i)).into_array(), Scalar::from(5000i32) - ).unwrap())] - #[case::for_very_large(FoRArray::try_new( + ))] + #[case::for_very_large(fa( PrimitiveArray::from_iter((0..3072).map(|i| 10000 + i as i64)).into_array(), Scalar::from(10000i64) - ).unwrap())] - #[case::for_large_nullable(FoRArray::try_new( + ))] + #[case::for_large_nullable(fa( PrimitiveArray::from_option_iter((0..2048).map(|i| (i % 15 == 0).then_some(1000 + i))).into_array(), Scalar::from(1000i32) - ).unwrap())] - // Arrays with large deltas from reference - #[case::for_large_deltas(FoRArray::try_new( - buffer![100i64, 200, 300, 400, 500].into_array(), - Scalar::from(100i64) - ).unwrap())] + ))] + #[case::for_large_deltas(fa(buffer![100i64, 200, 300, 400, 500].into_array(), Scalar::from(100i64)))] fn test_for_consistency(#[case] array: FoRArray) { test_array_consistency(&array.into_array()); } #[rstest] - #[case::for_i32_basic(FoRArray::try_new( - buffer![100i32, 101, 102, 103, 104].into_array(), - Scalar::from(100i32) - ).unwrap())] - #[case::for_u32_basic(FoRArray::try_new( - buffer![1000u32, 1001, 1002, 1003, 1004].into_array(), - Scalar::from(1000u32) - ).unwrap())] - #[case::for_i64_basic(FoRArray::try_new( - buffer![5000i64, 5001, 5002, 5003, 5004].into_array(), - Scalar::from(5000i64) - ).unwrap())] - #[case::for_u64_basic(FoRArray::try_new( - buffer![10000u64, 10001, 10002, 10003, 10004].into_array(), - Scalar::from(10000u64) - ).unwrap())] - #[case::for_i32_large(FoRArray::try_new( + #[case::for_i32_basic(fa(buffer![100i32, 101, 102, 103, 104].into_array(), Scalar::from(100i32)))] + #[case::for_u32_basic(fa(buffer![1000u32, 1001, 1002, 1003, 1004].into_array(), Scalar::from(1000u32)))] + #[case::for_i64_basic(fa(buffer![5000i64, 5001, 5002, 5003, 5004].into_array(), Scalar::from(5000i64)))] + #[case::for_u64_basic(fa(buffer![10000u64, 10001, 10002, 10003, 10004].into_array(), Scalar::from(10000u64)))] + #[case::for_i32_large(fa( PrimitiveArray::from_iter((0..100).map(|i| 2000 + i)).into_array(), Scalar::from(2000i32) - ).unwrap())] + ))] fn test_for_binary_numeric(#[case] array: FoRArray) { test_binary_numeric_array(array.into_array()); } diff --git a/encodings/fastlanes/src/for/mod.rs b/encodings/fastlanes/src/for/mod.rs index 1dfaf61114f..99f19486e91 100644 --- a/encodings/fastlanes/src/for/mod.rs +++ b/encodings/fastlanes/src/for/mod.rs @@ -2,9 +2,10 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors mod array; -pub use array::FoRArray; +pub use array::FoRData; pub(crate) mod compute; mod vtable; pub use vtable::FoR; +pub use vtable::FoRArray; diff --git a/encodings/fastlanes/src/for/vtable/mod.rs b/encodings/fastlanes/src/for/vtable/mod.rs index 59189042046..80a2b165b91 100644 --- a/encodings/fastlanes/src/for/vtable/mod.rs +++ b/encodings/fastlanes/src/for/vtable/mod.rs @@ -3,24 +3,25 @@ use std::fmt::Debug; use std::hash::Hash; -use std::sync::Arc; +use vortex_array::Array; use vortex_array::ArrayEq; use vortex_array::ArrayHash; +use vortex_array::ArrayId; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::ExecutionResult; use vortex_array::IntoArray; use vortex_array::Precision; +use vortex_array::arrays::PrimitiveArray; use vortex_array::buffer::BufferHandle; use vortex_array::dtype::DType; use vortex_array::scalar::Scalar; use vortex_array::scalar::ScalarValue; use vortex_array::serde::ArrayChildren; -use vortex_array::stats::StatsSetRef; +use vortex_array::stats::ArrayStats; use vortex_array::vtable; -use vortex_array::vtable::Array; -use vortex_array::vtable::ArrayId; use vortex_array::vtable::VTable; use vortex_array::vtable::ValidityVTableFromChild; use vortex_error::VortexResult; @@ -29,7 +30,7 @@ use vortex_error::vortex_ensure; use vortex_error::vortex_panic; use vortex_session::VortexSession; -use crate::FoRArray; +use crate::FoRData; use crate::r#for::array::NUM_SLOTS; use crate::r#for::array::SLOT_NAMES; use crate::r#for::array::for_decompress::decompress; @@ -42,17 +43,17 @@ mod rules; mod slice; mod validity; -vtable!(FoR); +vtable!(FoR, FoR, FoRData); impl VTable for FoR { - type Array = FoRArray; + type ArrayData = FoRData; type Metadata = Scalar; type OperationsVTable = Self; type ValidityVTable = ValidityVTableFromChild; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &FoRData) -> &Self { &FoR } @@ -60,49 +61,49 @@ impl VTable for FoR { Self::ID } - fn len(array: &FoRArray) -> usize { + fn len(array: &FoRData) -> usize { array.encoded().len() } - fn dtype(array: &FoRArray) -> &DType { + fn dtype(array: &FoRData) -> &DType { array.reference_scalar().dtype() } - fn stats(array: &FoRArray) -> StatsSetRef<'_> { - array.stats_set().to_ref(array.as_ref()) + fn stats(array: &FoRData) -> &ArrayStats { + array.stats_set() } - fn array_hash(array: &FoRArray, state: &mut H, precision: Precision) { + fn array_hash(array: &FoRData, state: &mut H, precision: Precision) { array.encoded().array_hash(state, precision); array.reference_scalar().hash(state); } - fn array_eq(array: &FoRArray, other: &FoRArray, precision: Precision) -> bool { + fn array_eq(array: &FoRData, other: &FoRData, precision: Precision) -> bool { array.encoded().array_eq(other.encoded(), precision) && array.reference_scalar() == other.reference_scalar() } - fn nbuffers(_array: &FoRArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 0 } - fn buffer(_array: &FoRArray, idx: usize) -> BufferHandle { + fn buffer(_array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { vortex_panic!("FoRArray buffer index {idx} out of bounds") } - fn buffer_name(_array: &FoRArray, _idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, _idx: usize) -> Option { None } - fn slots(array: &FoRArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &FoRArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn with_slots(array: &mut FoRArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "FoRArray expects exactly {} slots, got {}", @@ -113,7 +114,7 @@ impl VTable for FoR { Ok(()) } - fn metadata(array: &FoRArray) -> VortexResult { + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { Ok(array.reference_scalar().clone()) } @@ -139,7 +140,7 @@ impl VTable for FoR { metadata: &Self::Metadata, _buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { if children.len() != 1 { vortex_bail!( "Expected 1 child for FoR encoding, found {}", @@ -149,23 +150,23 @@ impl VTable for FoR { let encoded = children.get(0, dtype, len)?; - FoRArray::try_new(encoded, metadata.clone()) + FoRData::try_new(encoded, metadata.clone()) } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { PARENT_RULES.evaluate(array, parent, child_idx) } - fn execute(array: Arc>, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, ctx: &mut ExecutionCtx) -> VortexResult { Ok(ExecutionResult::done(decompress(&array, ctx)?.into_array())) } fn execute_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, @@ -179,4 +180,14 @@ pub struct FoR; impl FoR { pub const ID: ArrayId = ArrayId::new_ref("fastlanes.for"); + + /// Construct a new FoR array from an encoded array and a reference scalar. + pub fn try_new(encoded: ArrayRef, reference: Scalar) -> VortexResult { + Array::try_from_data(FoRData::try_new(encoded, reference)?) + } + + /// Encode a primitive array using Frame of Reference encoding. + pub fn encode(array: PrimitiveArray) -> VortexResult { + FoRData::encode(array) + } } diff --git a/encodings/fastlanes/src/for/vtable/operations.rs b/encodings/fastlanes/src/for/vtable/operations.rs index 21f0fed5da9..a91eb83dfa3 100644 --- a/encodings/fastlanes/src/for/vtable/operations.rs +++ b/encodings/fastlanes/src/for/vtable/operations.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::match_each_integer_ptype; use vortex_array::scalar::Scalar; @@ -9,10 +10,12 @@ use vortex_error::VortexExpect; use vortex_error::VortexResult; use super::FoR; -use crate::FoRArray; - impl OperationsVTable for FoR { - fn scalar_at(array: &FoRArray, index: usize, _ctx: &mut ExecutionCtx) -> VortexResult { + fn scalar_at( + array: ArrayView<'_, FoR>, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { let encoded_pvalue = array.encoded().scalar_at(index)?; let encoded_pvalue = encoded_pvalue.as_primitive(); let reference = array.reference_scalar(); @@ -39,12 +42,11 @@ mod test { use vortex_array::arrays::PrimitiveArray; use vortex_array::assert_arrays_eq; - use crate::FoRArray; + use crate::FoRData; #[test] fn for_scalar_at() { - let for_arr = - FoRArray::encode(PrimitiveArray::from_iter([-100, 1100, 1500, 1900])).unwrap(); + let for_arr = FoRData::encode(PrimitiveArray::from_iter([-100, 1100, 1500, 1900])).unwrap(); let expected = PrimitiveArray::from_iter([-100, 1100, 1500, 1900]); assert_arrays_eq!(for_arr, expected); } diff --git a/encodings/fastlanes/src/for/vtable/rules.rs b/encodings/fastlanes/src/for/vtable/rules.rs index 3ce7d8905b3..38d4b4186f2 100644 --- a/encodings/fastlanes/src/for/vtable/rules.rs +++ b/encodings/fastlanes/src/for/vtable/rules.rs @@ -2,10 +2,9 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::arrays::Filter; -use vortex_array::arrays::FilterArray; use vortex_array::arrays::filter::FilterReduceAdaptor; use vortex_array::arrays::slice::SliceReduceAdaptor; use vortex_array::optimizer::rules::ArrayParentReduceRule; @@ -14,7 +13,7 @@ use vortex_array::scalar_fn::fns::cast::CastReduceAdaptor; use vortex_error::VortexResult; use crate::FoR; -use crate::FoRArray; +use crate::FoRData; pub(super) const PARENT_RULES: ParentRuleSet = ParentRuleSet::new(&[ // TODO: add BetweenReduceAdaptor(FoR) @@ -32,12 +31,12 @@ impl ArrayParentReduceRule for FoRFilterPushDownRule { fn reduce_parent( &self, - child: &FoRArray, - parent: &FilterArray, + child: ArrayView<'_, FoR>, + parent: ArrayView<'_, Filter>, _child_idx: usize, ) -> VortexResult> { let new_array = unsafe { - FoRArray::new_unchecked( + FoRData::new_unchecked( child.encoded().filter(parent.filter_mask().clone())?, child.reference.clone(), ) diff --git a/encodings/fastlanes/src/for/vtable/slice.rs b/encodings/fastlanes/src/for/vtable/slice.rs index 2bf9a7ff7da..c7571ac274a 100644 --- a/encodings/fastlanes/src/for/vtable/slice.rs +++ b/encodings/fastlanes/src/for/vtable/slice.rs @@ -4,18 +4,19 @@ use std::ops::Range; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::arrays::slice::SliceReduce; use vortex_error::VortexResult; use crate::FoR; -use crate::FoRArray; +use crate::FoRData; impl SliceReduce for FoR { - fn slice(array: &Self::Array, range: Range) -> VortexResult> { + fn slice(array: ArrayView<'_, Self>, range: Range) -> VortexResult> { // SAFETY: Just slicing encoded data does not affect FOR. Ok(Some(unsafe { - FoRArray::new_unchecked( + FoRData::new_unchecked( array.encoded().slice(range)?, array.reference_scalar().clone(), ) diff --git a/encodings/fastlanes/src/for/vtable/validity.rs b/encodings/fastlanes/src/for/vtable/validity.rs index 3b86795d458..2131f0ba2f4 100644 --- a/encodings/fastlanes/src/for/vtable/validity.rs +++ b/encodings/fastlanes/src/for/vtable/validity.rs @@ -5,10 +5,10 @@ use vortex_array::ArrayRef; use vortex_array::vtable::ValidityChild; use super::FoR; -use crate::FoRArray; +use crate::FoRData; impl ValidityChild for FoR { - fn validity_child(array: &FoRArray) -> &ArrayRef { + fn validity_child(array: &FoRData) -> &ArrayRef { array.encoded() } } diff --git a/encodings/fastlanes/src/rle/array/mod.rs b/encodings/fastlanes/src/rle/array/mod.rs index 02282602dd6..d0d207c1795 100644 --- a/encodings/fastlanes/src/rle/array/mod.rs +++ b/encodings/fastlanes/src/rle/array/mod.rs @@ -2,7 +2,6 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::dtype::DType; use vortex_array::dtype::PType; use vortex_array::stats::ArrayStats; @@ -33,7 +32,7 @@ pub(super) const NUM_SLOTS: usize = 3; pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["values", "indices", "values_idx_offsets"]; #[derive(Clone, Debug)] -pub struct RLEArray { +pub struct RLEData { pub(super) dtype: DType, pub(super) slots: Vec>, pub(super) stats_set: ArrayStats, @@ -42,7 +41,7 @@ pub struct RLEArray { pub(super) length: usize, } -impl RLEArray { +impl RLEData { fn validate( values: &ArrayRef, indices: &ArrayRef, @@ -221,7 +220,6 @@ impl RLEArray { #[cfg(test)] mod tests { use vortex_array::ArrayContext; - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::LEGACY_SESSION; use vortex_array::ToCanonical; @@ -236,11 +234,13 @@ mod tests { use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_buffer::ByteBufferMut; + use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_session::registry::ReadContext; use crate::FL_CHUNK_SIZE; use crate::RLEArray; + use crate::RLEData; use crate::test::SESSION; #[test] @@ -252,7 +252,10 @@ mod tests { PrimitiveArray::from_iter([0u16, 0, 1, 1, 2].iter().cycle().take(1024).copied()) .into_array(); let values_idx_offsets = PrimitiveArray::from_iter([0u64]).into_array(); - let rle_array = RLEArray::try_new(values, indices, values_idx_offsets, 0, 5).unwrap(); + let rle_array = RLEArray::try_from_data( + RLEData::try_new(values, indices, values_idx_offsets, 0, 5).unwrap(), + ) + .vortex_expect("RLEData is always valid"); assert_eq!(rle_array.len(), 5); assert_eq!(rle_array.values().len(), 3); @@ -279,14 +282,10 @@ mod tests { ) .into_array(); - let rle_array = RLEArray::try_new( - values.clone(), - indices_with_validity, - values_idx_offsets, - 0, - 3, + let rle_array = RLEArray::try_from_data( + RLEData::try_new(values, indices_with_validity, values_idx_offsets, 0, 3).unwrap(), ) - .unwrap(); + .vortex_expect("RLEData is always valid"); assert_eq!(rle_array.len(), 3); assert_eq!(rle_array.values().len(), 2); @@ -315,14 +314,10 @@ mod tests { ) .into_array(); - let rle_array = RLEArray::try_new( - values.clone(), - indices_with_validity, - values_idx_offsets, - 0, - 5, + let rle_array = RLEArray::try_from_data( + RLEData::try_new(values, indices_with_validity, values_idx_offsets, 0, 5).unwrap(), ) - .unwrap(); + .vortex_expect("RLEData is always valid"); let valid_slice = rle_array.slice(0..3).unwrap().to_primitive(); // TODO(joe): replace with compute null count @@ -352,14 +347,10 @@ mod tests { ) .into_array(); - let rle_array = RLEArray::try_new( - values.clone(), - indices_with_validity, - values_idx_offsets, - 0, - 5, + let rle_array = RLEArray::try_from_data( + RLEData::try_new(values, indices_with_validity, values_idx_offsets, 0, 5).unwrap(), ) - .unwrap(); + .vortex_expect("RLEData is always valid"); // TODO(joe): replace with compute null count let invalid_slice = rle_array @@ -394,14 +385,10 @@ mod tests { ) .into_array(); - let rle_array = RLEArray::try_new( - values.clone(), - indices_with_validity, - values_idx_offsets, - 0, - 4, + let rle_array = RLEArray::try_from_data( + RLEData::try_new(values, indices_with_validity, values_idx_offsets, 0, 4).unwrap(), ) - .unwrap(); + .vortex_expect("RLEData is always valid"); let sliced_array = rle_array.slice(1..4).unwrap(); let validity_mask = sliced_array.validity_mask().unwrap(); @@ -421,14 +408,17 @@ mod tests { let values = PrimitiveArray::from_iter(Vec::::new()).into_array(); let indices = PrimitiveArray::from_iter(Vec::::new()).into_array(); let values_idx_offsets = PrimitiveArray::from_iter(Vec::::new()).into_array(); - let rle_array = RLEArray::try_new( - values, - indices.clone(), - values_idx_offsets, - 0, - indices.len(), + let rle_array = RLEArray::try_from_data( + RLEData::try_new( + values, + indices.clone(), + values_idx_offsets, + 0, + indices.len(), + ) + .unwrap(), ) - .unwrap(); + .vortex_expect("RLEData is always valid"); assert_eq!(rle_array.len(), 0); assert_eq!(rle_array.values().len(), 0); @@ -439,7 +429,10 @@ mod tests { let values = PrimitiveArray::from_iter([10u32, 20, 30, 40]).into_array(); let indices = PrimitiveArray::from_iter([0u16, 1].repeat(1024)).into_array(); let values_idx_offsets = PrimitiveArray::from_iter([0u64, 2]).into_array(); - let rle_array = RLEArray::try_new(values, indices, values_idx_offsets, 0, 2048).unwrap(); + let rle_array = RLEArray::try_from_data( + RLEData::try_new(values, indices, values_idx_offsets, 0, 2048).unwrap(), + ) + .vortex_expect("RLEData is always valid"); assert_eq!(rle_array.len(), 2048); assert_eq!(rle_array.values().len(), 4); @@ -451,10 +444,10 @@ mod tests { #[test] fn test_rle_serialization() { let primitive = PrimitiveArray::from_iter((0..2048).map(|i| (i / 100) as u32)); - let rle_array = RLEArray::encode(&primitive).unwrap(); + let rle_array = RLEData::encode(&primitive).unwrap(); assert_eq!(rle_array.len(), 2048); - let original_data = rle_array.to_primitive(); + let original_data = rle_array.as_array().to_primitive(); let ctx = ArrayContext::empty(); let serialized = rle_array @@ -486,16 +479,19 @@ mod tests { #[test] fn test_rle_serialization_slice() { let primitive = PrimitiveArray::from_iter((0..2048).map(|i| (i / 100) as u32)); - let rle_array = RLEArray::encode(&primitive).unwrap(); - - let sliced = RLEArray::try_new( - rle_array.values().clone(), - rle_array.indices().clone(), - rle_array.values_idx_offsets().clone(), - 100, - 100, + let rle_array = RLEData::encode(&primitive).unwrap(); + + let sliced = RLEArray::try_from_data( + RLEData::try_new( + rle_array.values().clone(), + rle_array.indices().clone(), + rle_array.values_idx_offsets().clone(), + 100, + 100, + ) + .unwrap(), ) - .unwrap(); + .vortex_expect("RLEData is always valid"); assert_eq!(sliced.len(), 100); let ctx = ArrayContext::empty(); @@ -521,7 +517,7 @@ mod tests { ) .unwrap(); - let original_data = sliced.to_primitive(); + let original_data = sliced.as_array().to_primitive(); let decoded_data = decoded.to_primitive(); assert_arrays_eq!(original_data, decoded_data); @@ -545,17 +541,17 @@ mod tests { // Chunk 1 (positions 1024..) is all-null. let original = PrimitiveArray::from_option_iter(values); - let rle = RLEArray::encode(&original)?; + let rle = RLEData::encode(&original)?; // Simulate cascading compression: narrow u16→u8 then re-encode with RLE, // matching the path taken by the BtrBlocks compressor. let indices_prim = rle.indices().to_primitive().narrow()?; - let re_encoded = RLEArray::encode(&indices_prim)?; + let re_encoded = RLEData::encode(&indices_prim)?; // Reconstruct the outer RLE with re-encoded indices. // SAFETY: we only replace the indices child; all other invariants hold. - let reconstructed = unsafe { - RLEArray::new_unchecked( + let reconstructed = RLEArray::try_from_data(unsafe { + RLEData::new_unchecked( rle.values().clone(), re_encoded.into_array(), rle.values_idx_offsets().clone(), @@ -563,10 +559,10 @@ mod tests { rle.offset(), rle.len(), ) - }; + })?; // Decompress — panicked before the fill_forward_nulls chunk-boundary fix. - let decoded = reconstructed.to_primitive(); + let decoded = reconstructed.as_array().to_primitive(); assert_arrays_eq!(decoded, original); Ok(()) } diff --git a/encodings/fastlanes/src/rle/array/rle_compress.rs b/encodings/fastlanes/src/rle/array/rle_compress.rs index 9c0feb8291d..a432097b04e 100644 --- a/encodings/fastlanes/src/rle/array/rle_compress.rs +++ b/encodings/fastlanes/src/rle/array/rle_compress.rs @@ -16,11 +16,12 @@ use vortex_error::VortexResult; use crate::FL_CHUNK_SIZE; use crate::RLEArray; +use crate::RLEData; use crate::fill_forward_nulls; -impl RLEArray { +impl RLEData { /// Encodes a primitive array of unsigned integers using FastLanes RLE. - pub fn encode(array: &PrimitiveArray) -> VortexResult { + pub fn encode(array: &PrimitiveArray) -> VortexResult { match_each_native_ptype!(array.ptype(), |T| { rle_encode_typed::(array) }) } } @@ -97,13 +98,13 @@ where // SAFETY: NativeValue is repr(transparent) to T. let values_buf = unsafe { values_buf.transmute::().freeze() }; - RLEArray::try_new( + RLEArray::try_from_data(RLEData::try_new( values_buf.into_array(), PrimitiveArray::new(indices_buf.freeze(), padded_validity(array)).into_array(), values_idx_offsets.into_array(), 0, array.len(), - ) + )?) } /// Returns validity padded to the next 1024 chunk for a given array. @@ -117,7 +118,7 @@ fn padded_validity(array: &PrimitiveArray) -> Validity { let padded_len = len.next_multiple_of(FL_CHUNK_SIZE); if len == padded_len { - return Validity::Array(validity_array.clone()); + return Validity::Array(validity_array); } let mut builder = BitBufferMut::with_capacity(padded_len); @@ -148,24 +149,24 @@ mod tests { // u8 let array_u8: Buffer = buffer![1, 1, 2, 2, 3, 3]; let encoded_u8 = - RLEArray::encode(&PrimitiveArray::new(array_u8, Validity::NonNullable)).unwrap(); - let decoded_u8 = encoded_u8.to_primitive(); + RLEData::encode(&PrimitiveArray::new(array_u8, Validity::NonNullable)).unwrap(); + let decoded_u8 = encoded_u8.as_array().to_primitive(); let expected_u8 = PrimitiveArray::from_iter(vec![1u8, 1, 2, 2, 3, 3]); assert_arrays_eq!(decoded_u8, expected_u8); // u16 let array_u16: Buffer = buffer![100, 100, 200, 200]; let encoded_u16 = - RLEArray::encode(&PrimitiveArray::new(array_u16, Validity::NonNullable)).unwrap(); - let decoded_u16 = encoded_u16.to_primitive(); + RLEData::encode(&PrimitiveArray::new(array_u16, Validity::NonNullable)).unwrap(); + let decoded_u16 = encoded_u16.as_array().to_primitive(); let expected_u16 = PrimitiveArray::from_iter(vec![100u16, 100, 200, 200]); assert_arrays_eq!(decoded_u16, expected_u16); // u64 let array_u64: Buffer = buffer![1000, 1000, 2000]; let encoded_u64 = - RLEArray::encode(&PrimitiveArray::new(array_u64, Validity::NonNullable)).unwrap(); - let decoded_u64 = encoded_u64.to_primitive(); + RLEData::encode(&PrimitiveArray::new(array_u64, Validity::NonNullable)).unwrap(); + let decoded_u64 = encoded_u64.as_array().to_primitive(); let expected_u64 = PrimitiveArray::from_iter(vec![1000u64, 1000, 2000]); assert_arrays_eq!(decoded_u64, expected_u64); } @@ -173,16 +174,14 @@ mod tests { #[test] fn test_length() { let values: Buffer = buffer![1, 1, 2, 2, 2, 3]; - let encoded = - RLEArray::encode(&PrimitiveArray::new(values, Validity::NonNullable)).unwrap(); + let encoded = RLEData::encode(&PrimitiveArray::new(values, Validity::NonNullable)).unwrap(); assert_eq!(encoded.len(), 6); } #[test] fn test_empty_length() { let values: Buffer = Buffer::empty(); - let encoded = - RLEArray::encode(&PrimitiveArray::new(values, Validity::NonNullable)).unwrap(); + let encoded = RLEData::encode(&PrimitiveArray::new(values, Validity::NonNullable)).unwrap(); assert_eq!(encoded.len(), 0); assert_eq!(encoded.values().len(), 0); @@ -192,11 +191,10 @@ mod tests { fn test_single_value() { let values: Buffer = vec![42; 2000].into_iter().collect(); - let encoded = - RLEArray::encode(&PrimitiveArray::new(values, Validity::NonNullable)).unwrap(); + let encoded = RLEData::encode(&PrimitiveArray::new(values, Validity::NonNullable)).unwrap(); assert_eq!(encoded.values().len(), 2); // 2 chunks, each storing value 42 - let decoded = encoded.to_primitive(); // Verify round-trip + let decoded = encoded.as_array().to_primitive(); // Verify round-trip let expected = PrimitiveArray::from_iter(vec![42u16; 2000]); assert_arrays_eq!(decoded, expected); } @@ -205,11 +203,10 @@ mod tests { fn test_all_different() { let values: Buffer = (0u8..=255).collect(); - let encoded = - RLEArray::encode(&PrimitiveArray::new(values, Validity::NonNullable)).unwrap(); + let encoded = RLEData::encode(&PrimitiveArray::new(values, Validity::NonNullable)).unwrap(); assert_eq!(encoded.values().len(), 256); - let decoded = encoded.to_primitive(); // Verify round-trip + let decoded = encoded.as_array().to_primitive(); // Verify round-trip let expected = PrimitiveArray::from_iter((0u8..=255).collect::>()); assert_arrays_eq!(decoded, expected); } @@ -220,7 +217,7 @@ mod tests { let values: Buffer = (0..1500).map(|i| (i / 100) as u32).collect(); let array = PrimitiveArray::new(values, Validity::NonNullable); - let encoded = RLEArray::encode(&array).unwrap(); + let encoded = RLEData::encode(&array).unwrap(); assert_eq!(encoded.len(), 1500); assert_arrays_eq!(encoded, array); @@ -234,7 +231,7 @@ mod tests { let values: Buffer = (0..2048).map(|i| (i / 100) as u32).collect(); let array = PrimitiveArray::new(values, Validity::NonNullable); - let encoded = RLEArray::encode(&array).unwrap(); + let encoded = RLEData::encode(&array).unwrap(); assert_eq!(encoded.len(), 2048); assert_arrays_eq!(encoded, array); @@ -255,8 +252,8 @@ mod tests { #[case::f64((-2000..2000).map(|i| i as f64).collect::>())] fn test_roundtrip_primitive_types(#[case] values: Buffer) { let primitive = values.clone().into_array().to_primitive(); - let result = RLEArray::encode(&primitive).unwrap(); - let decoded = result.to_primitive(); + let result = RLEData::encode(&primitive).unwrap(); + let decoded = result.as_array().to_primitive(); let expected = PrimitiveArray::new(values, primitive.validity()); assert_arrays_eq!(decoded, expected); } @@ -269,8 +266,8 @@ mod tests { #[case(vec![0f64, -0f64])] fn test_float_zeros(#[case] values: Vec) { let primitive = PrimitiveArray::from_iter(values); - let rle = RLEArray::encode(&primitive).unwrap(); - let decoded = rle.to_primitive(); + let rle = RLEData::encode(&primitive).unwrap(); + let decoded = rle.as_array().to_primitive(); assert_arrays_eq!(primitive, decoded); } } diff --git a/encodings/fastlanes/src/rle/array/rle_decompress.rs b/encodings/fastlanes/src/rle/array/rle_decompress.rs index 4bd5ac276ec..d448ca1de0b 100644 --- a/encodings/fastlanes/src/rle/array/rle_decompress.rs +++ b/encodings/fastlanes/src/rle/array/rle_decompress.rs @@ -5,7 +5,6 @@ use arrayref::array_mut_ref; use arrayref::array_ref; use fastlanes::RLE; use num_traits::AsPrimitive; -use vortex_array::DynArray; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::PrimitiveArray; diff --git a/encodings/fastlanes/src/rle/compute/cast.rs b/encodings/fastlanes/src/rle/compute/cast.rs index fca72d5afce..88078862816 100644 --- a/encodings/fastlanes/src/rle/compute/cast.rs +++ b/encodings/fastlanes/src/rle/compute/cast.rs @@ -2,17 +2,16 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::builtins::ArrayBuiltins; use vortex_array::dtype::DType; use vortex_array::scalar_fn::fns::cast::CastReduce; use vortex_error::VortexResult; +use crate::RLEData; use crate::rle::RLE; -use crate::rle::RLEArray; - impl CastReduce for RLE { - fn cast(array: &RLEArray, dtype: &DType) -> VortexResult> { + fn cast(array: ArrayView<'_, Self>, dtype: &DType) -> VortexResult> { // Cast RLE values. let casted_values = array.values().cast(dtype.clone())?; @@ -27,7 +26,7 @@ impl CastReduce for RLE { }; Ok(Some(unsafe { - RLEArray::new_unchecked( + RLEData::new_unchecked( casted_values, casted_indices, array.values_idx_offsets().clone(), @@ -43,7 +42,6 @@ impl CastReduce for RLE { #[cfg(test)] mod tests { use rstest::rstest; - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::assert_arrays_eq; @@ -55,17 +53,22 @@ mod tests { use vortex_array::validity::Validity; use vortex_buffer::Buffer; + use crate::RLEData; use crate::rle::RLEArray; + fn rle(primitive: &PrimitiveArray) -> RLEArray { + RLEData::encode(primitive).unwrap() + } + #[test] fn try_cast_rle_success() { let primitive = PrimitiveArray::new( Buffer::from_iter([10u8, 20, 30, 40, 50]), Validity::from_iter([true, true, true, true, true]), ); - let rle = RLEArray::encode(&primitive).unwrap(); + let encoded = rle(&primitive); - let casted = rle + let casted = encoded .into_array() .cast(DType::Primitive(PType::U16, Nullability::NonNullable)) .unwrap(); @@ -79,8 +82,9 @@ mod tests { Buffer::from_iter([10u8, 20, 30, 40, 50]), Validity::from_iter([true, false, true, true, false]), ); - let rle = RLEArray::encode(&primitive).unwrap(); - rle.into_array() + let encoded = rle(&primitive); + encoded + .into_array() .cast(DType::Primitive(PType::U8, Nullability::NonNullable)) .and_then(|a| a.to_canonical().map(|c| c.into_array())) .unwrap(); @@ -136,7 +140,7 @@ mod tests { ) )] fn test_cast_rle_conformance(#[case] primitive: PrimitiveArray) { - let rle_array = RLEArray::encode(&primitive).unwrap(); + let rle_array = rle(&primitive); test_cast_conformance(&rle_array.into_array()); } } diff --git a/encodings/fastlanes/src/rle/kernel.rs b/encodings/fastlanes/src/rle/kernel.rs index 6d0064b0191..1da88206913 100644 --- a/encodings/fastlanes/src/rle/kernel.rs +++ b/encodings/fastlanes/src/rle/kernel.rs @@ -4,6 +4,7 @@ use std::ops::Range; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::slice::SliceExecuteAdaptor; @@ -13,14 +14,14 @@ use vortex_error::VortexResult; use crate::FL_CHUNK_SIZE; use crate::RLE; -use crate::RLEArray; +use crate::RLEData; pub(crate) static PARENT_KERNELS: ParentKernelSet = ParentKernelSet::new(&[ParentKernelSet::lift(&SliceExecuteAdaptor(RLE))]); impl SliceKernel for RLE { fn slice( - array: &RLEArray, + array: ArrayView<'_, Self>, range: Range, _ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -47,7 +48,7 @@ impl SliceKernel for RLE { // SAFETY: Slicing preserves all invariants. Ok(Some(unsafe { - RLEArray::new_unchecked( + RLEData::new_unchecked( sliced_values, sliced_indices, sliced_values_idx_offsets, diff --git a/encodings/fastlanes/src/rle/mod.rs b/encodings/fastlanes/src/rle/mod.rs index 2fa51dd5929..1dd0b644156 100644 --- a/encodings/fastlanes/src/rle/mod.rs +++ b/encodings/fastlanes/src/rle/mod.rs @@ -2,10 +2,11 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors mod array; -pub use array::RLEArray; +pub use array::RLEData; mod compute; mod kernel; mod vtable; pub use vtable::RLE; +pub use vtable::RLEArray; diff --git a/encodings/fastlanes/src/rle/vtable/mod.rs b/encodings/fastlanes/src/rle/vtable/mod.rs index 12c83dcab48..63eeb7b5706 100644 --- a/encodings/fastlanes/src/rle/vtable/mod.rs +++ b/encodings/fastlanes/src/rle/vtable/mod.rs @@ -2,34 +2,36 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use std::hash::Hash; -use std::sync::Arc; use prost::Message; +use vortex_array::Array; use vortex_array::ArrayEq; use vortex_array::ArrayHash; +use vortex_array::ArrayId; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::ExecutionResult; use vortex_array::IntoArray; use vortex_array::Precision; use vortex_array::ProstMetadata; +use vortex_array::arrays::PrimitiveArray; use vortex_array::buffer::BufferHandle; use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; use vortex_array::dtype::PType; use vortex_array::serde::ArrayChildren; -use vortex_array::stats::StatsSetRef; +use vortex_array::stats::ArrayStats; use vortex_array::vtable; -use vortex_array::vtable::Array; -use vortex_array::vtable::ArrayId; use vortex_array::vtable::VTable; use vortex_array::vtable::ValidityVTableFromChildSliceHelper; +use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_error::vortex_ensure; use vortex_error::vortex_panic; use vortex_session::VortexSession; -use crate::RLEArray; +use crate::RLEData; use crate::rle::array::rle_decompress::rle_decompress; use crate::rle::kernel::PARENT_KERNELS; use crate::rle::vtable::rules::RULES; @@ -38,7 +40,7 @@ mod operations; mod rules; mod validity; -vtable!(RLE); +vtable!(RLE, RLE, RLEData); #[derive(Clone, prost::Message)] pub struct RLEMetadata { @@ -57,14 +59,14 @@ pub struct RLEMetadata { } impl VTable for RLE { - type Array = RLEArray; + type ArrayData = RLEData; type Metadata = ProstMetadata; type OperationsVTable = Self; type ValidityVTable = ValidityVTableFromChildSliceHelper; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &RLEData) -> &Self { &RLE } @@ -72,67 +74,63 @@ impl VTable for RLE { Self::ID } - fn len(array: &RLEArray) -> usize { + fn len(array: &RLEData) -> usize { array.len() } - fn dtype(array: &RLEArray) -> &DType { + fn dtype(array: &RLEData) -> &DType { array.dtype() } - fn stats(array: &RLEArray) -> StatsSetRef<'_> { - array.stats_set().to_ref(array.as_ref()) + fn stats(array: &RLEData) -> &ArrayStats { + array.stats_set() } - fn array_hash(array: &RLEArray, state: &mut H, precision: Precision) { - array.dtype().hash(state); + fn array_hash(array: &RLEData, state: &mut H, precision: Precision) { array.values().array_hash(state, precision); array.indices().array_hash(state, precision); array.values_idx_offsets().array_hash(state, precision); array.offset().hash(state); - array.len().hash(state); } - fn array_eq(array: &RLEArray, other: &RLEArray, precision: Precision) -> bool { - array.dtype() == other.dtype() - && array.values().array_eq(other.values(), precision) + fn array_eq(array: &RLEData, other: &RLEData, precision: Precision) -> bool { + array.values().array_eq(other.values(), precision) && array.indices().array_eq(other.indices(), precision) && array .values_idx_offsets() .array_eq(other.values_idx_offsets(), precision) && array.offset() == other.offset() - && array.len() == other.len() } - fn nbuffers(_array: &RLEArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 0 } - fn buffer(_array: &RLEArray, idx: usize) -> BufferHandle { + fn buffer(_array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { vortex_panic!("RLEArray buffer index {idx} out of bounds") } - fn buffer_name(_array: &RLEArray, _idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, _idx: usize) -> Option { None } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { RULES.evaluate(array, parent, child_idx) } - fn slots(array: &RLEArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &RLEArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { crate::rle::array::SLOT_NAMES[idx].to_string() } - fn with_slots(array: &mut RLEArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == crate::rle::array::NUM_SLOTS, "RLEArray expects {} slots, got {}", @@ -143,7 +141,7 @@ impl VTable for RLE { Ok(()) } - fn metadata(array: &RLEArray) -> VortexResult { + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { Ok(ProstMetadata(RLEMetadata { values_len: array.values().len() as u64, indices_len: array.indices().len() as u64, @@ -174,7 +172,7 @@ impl VTable for RLE { metadata: &Self::Metadata, _buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { let metadata = &metadata.0; let values = children.get( 0, @@ -197,7 +195,7 @@ impl VTable for RLE { usize::try_from(metadata.values_idx_offsets_len)?, )?; - RLEArray::try_new( + RLEData::try_new( values, indices, values_idx_offsets, @@ -207,7 +205,7 @@ impl VTable for RLE { } fn execute_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, @@ -215,7 +213,7 @@ impl VTable for RLE { PARENT_KERNELS.execute(array, parent, child_idx, ctx) } - fn execute(array: Arc>, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, ctx: &mut ExecutionCtx) -> VortexResult { Ok(ExecutionResult::done( rle_decompress(&array, ctx)?.into_array(), )) @@ -227,6 +225,29 @@ pub struct RLE; impl RLE { pub const ID: ArrayId = ArrayId::new_ref("fastlanes.rle"); + + /// Create a new RLE array without validation. + /// + /// # Safety + /// See [`RLEData::new_unchecked`] for preconditions. + pub unsafe fn new_unchecked( + values: ArrayRef, + indices: ArrayRef, + values_idx_offsets: ArrayRef, + dtype: DType, + offset: usize, + length: usize, + ) -> RLEArray { + Array::try_from_data(unsafe { + RLEData::new_unchecked(values, indices, values_idx_offsets, dtype, offset, length) + }) + .vortex_expect("RLEData is always valid") + } + + /// Encode a primitive array using FastLanes RLE. + pub fn encode(array: &PrimitiveArray) -> VortexResult { + RLEData::encode(array) + } } #[cfg(test)] diff --git a/encodings/fastlanes/src/rle/vtable/operations.rs b/encodings/fastlanes/src/rle/vtable/operations.rs index 9f00432c727..8804d30d178 100644 --- a/encodings/fastlanes/src/rle/vtable/operations.rs +++ b/encodings/fastlanes/src/rle/vtable/operations.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::scalar::Scalar; use vortex_array::vtable::OperationsVTable; @@ -9,10 +10,13 @@ use vortex_error::VortexResult; use super::RLE; use crate::FL_CHUNK_SIZE; -use crate::RLEArray; impl OperationsVTable for RLE { - fn scalar_at(array: &RLEArray, index: usize, _ctx: &mut ExecutionCtx) -> VortexResult { + fn scalar_at( + array: ArrayView<'_, RLE>, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { let offset_in_chunk = array.offset(); let chunk_relative_idx = array.indices().scalar_at(offset_in_chunk + index)?; @@ -34,7 +38,6 @@ impl OperationsVTable for RLE { #[cfg(test)] mod tests { - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::ToCanonical; use vortex_array::arrays::PrimitiveArray; @@ -44,6 +47,8 @@ mod tests { use vortex_buffer::buffer; use super::*; + use crate::RLEArray; + use crate::RLEData; mod fixture { use super::*; @@ -60,14 +65,17 @@ mod tests { .into_array(); let values_idx_offsets = PrimitiveArray::from_iter([0u64]).into_array(); - RLEArray::try_new( - values, - indices.clone(), - values_idx_offsets, - 0, - indices.len(), + RLEArray::try_from_data( + RLEData::try_new( + values, + indices.clone(), + values_idx_offsets, + 0, + indices.len(), + ) + .unwrap(), ) - .unwrap() + .vortex_expect("RLEData is always valid") } pub(super) fn rle_array_with_nulls() -> RLEArray { @@ -95,14 +103,17 @@ mod tests { ) .into_array(); - RLEArray::try_new( - values, - indices.clone(), - values_idx_offsets, - 0, - indices.len(), + RLEArray::try_from_data( + RLEData::try_new( + values, + indices.clone(), + values_idx_offsets, + 0, + indices.len(), + ) + .unwrap(), ) - .unwrap() + .vortex_expect("RLEData is always valid") } } @@ -163,7 +174,7 @@ mod tests { let expected: Vec = (0..3000).map(|i| (i / 50) as u16).collect(); let array = values.into_array(); - let encoded = RLEArray::encode(&array.to_primitive()).unwrap(); + let encoded = RLEData::encode(&array.to_primitive()).unwrap(); // Access scalars from multiple chunks. for &idx in &[1023, 1024, 1025, 2047, 2048, 2049] { @@ -217,7 +228,7 @@ mod tests { let sliced = array.slice(4..6).unwrap(); // [20, 30] let expected = buffer![20u32, 30].into_array(); - assert_arrays_eq!(sliced.to_array(), expected); + assert_arrays_eq!(sliced, expected); } #[test] @@ -226,7 +237,7 @@ mod tests { let sliced = array.slice(5..6).unwrap(); // [30] let expected = buffer![30u32].into_array(); - assert_arrays_eq!(sliced.to_array(), expected); + assert_arrays_eq!(sliced, expected); } #[test] @@ -249,7 +260,7 @@ mod tests { #[test] fn test_slice_decode_with_nulls() { let array = fixture::rle_array_with_nulls(); - let sliced = array.slice(1..4).unwrap().to_array().to_primitive(); // [null, 20, 20] + let sliced = array.slice(1..4).unwrap().to_primitive(); // [null, 20, 20] let expected = PrimitiveArray::from_option_iter([Option::::None, Some(20), Some(20)]); assert_arrays_eq!(sliced.into_array(), expected.into_array()); @@ -269,7 +280,7 @@ mod tests { let expected: Vec = (0..2100).map(|i| (i / 100) as u32).collect(); let array = values.into_array(); - let encoded = RLEArray::encode(&array.to_primitive()).unwrap(); + let encoded = RLEData::encode(&array.to_primitive()).unwrap(); // Slice across first and second chunk. let slice = encoded.slice(500..1500).unwrap(); diff --git a/encodings/fastlanes/src/rle/vtable/validity.rs b/encodings/fastlanes/src/rle/vtable/validity.rs index a8c2756b41e..f46998774cd 100644 --- a/encodings/fastlanes/src/rle/vtable/validity.rs +++ b/encodings/fastlanes/src/rle/vtable/validity.rs @@ -6,15 +6,15 @@ use vortex_array::vtable::ValidityChild; use vortex_array::vtable::ValidityChildSliceHelper; use super::RLE; -use crate::RLEArray; +use crate::RLEData; impl ValidityChild for RLE { - fn validity_child(array: &RLEArray) -> &ArrayRef { + fn validity_child(array: &RLEData) -> &ArrayRef { array.indices() } } -impl ValidityChildSliceHelper for RLEArray { +impl ValidityChildSliceHelper for RLEData { fn unsliced_child_and_slice(&self) -> (&ArrayRef, usize, usize) { let (start, len) = (self.offset(), self.len()); (self.indices(), start, start + len) diff --git a/encodings/fsst/benches/chunked_dict_fsst_builder.rs b/encodings/fsst/benches/chunked_dict_fsst_builder.rs index 25f151bb1df..50e2488d360 100644 --- a/encodings/fsst/benches/chunked_dict_fsst_builder.rs +++ b/encodings/fsst/benches/chunked_dict_fsst_builder.rs @@ -5,7 +5,6 @@ use std::sync::LazyLock; use divan::Bencher; use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; use vortex_array::arrays::ChunkedArray; diff --git a/encodings/fsst/benches/fsst_compress.rs b/encodings/fsst/benches/fsst_compress.rs index 96854f824a6..e84eef9cbce 100644 --- a/encodings/fsst/benches/fsst_compress.rs +++ b/encodings/fsst/benches/fsst_compress.rs @@ -57,14 +57,18 @@ fn compress_fsst(bencher: Bencher, (string_count, avg_len, unique_chars): (usize let compressor = fsst_train_compressor(&array); bencher .with_inputs(|| (&array, &compressor)) - .bench_refs(|(array, compressor)| fsst_compress(*array, compressor)) + .bench_refs(|(array, compressor)| { + fsst_compress(*array, array.len(), array.dtype(), compressor) + }) } #[divan::bench(args = BENCH_ARGS)] fn decompress_fsst(bencher: Bencher, (string_count, avg_len, unique_chars): (usize, usize, u8)) { let array = generate_test_data(string_count, avg_len, unique_chars); let compressor = fsst_train_compressor(&array); - let encoded = fsst_compress(array, &compressor); + let len = array.len(); + let dtype = array.dtype().clone(); + let encoded = fsst_compress(array, len, &dtype, &compressor); bencher .with_inputs(|| &encoded) @@ -83,7 +87,7 @@ fn train_compressor(bencher: Bencher, (string_count, avg_len, unique_chars): (us fn pushdown_compare(bencher: Bencher, (string_count, avg_len, unique_chars): (usize, usize, u8)) { let array = generate_test_data(string_count, avg_len, unique_chars); let compressor = fsst_train_compressor(&array); - let fsst_array = fsst_compress(&array, &compressor); + let fsst_array = fsst_compress(&array, array.len(), array.dtype(), &compressor); let constant = ConstantArray::new(Scalar::from(&b"const"[..]), array.len()); bencher @@ -112,7 +116,7 @@ fn canonicalize_compare( ) { let array = generate_test_data(string_count, avg_len, unique_chars); let compressor = fsst_train_compressor(&array); - let fsst_array = fsst_compress(&array, &compressor); + let fsst_array = fsst_compress(&array, array.len(), array.dtype(), &compressor); let constant = ConstantArray::new(Scalar::from(&b"const"[..]), array.len()); bencher @@ -127,8 +131,7 @@ fn canonicalize_compare( fsst_array .to_canonical() .unwrap() - .as_ref() - .to_array() + .into_array() .binary(constant.clone().into_array(), Operator::Eq) .unwrap() .execute::(ctx) @@ -215,7 +218,9 @@ fn generate_chunked_test_data( .map(|_| { let array = generate_test_data(string_count, avg_len, unique_chars); let compressor = fsst_train_compressor(&array); - fsst_compress(array, &compressor).into_array() + let len = array.len(); + let dtype = array.dtype().clone(); + fsst_compress(array, len, &dtype, &compressor).into_array() }) .collect::() } diff --git a/encodings/fsst/benches/fsst_url_compare.rs b/encodings/fsst/benches/fsst_url_compare.rs index 1b11e49a5ce..a8572650efb 100644 --- a/encodings/fsst/benches/fsst_url_compare.rs +++ b/encodings/fsst/benches/fsst_url_compare.rs @@ -56,7 +56,7 @@ fn pick_url_with_domain(data: &VarBinArray, domain: &str) -> String { fn eq_pushdown_high_match(bencher: Bencher) { let data = &*URL_DATA; let compressor = fsst_train_compressor(data); - let fsst_array = fsst_compress(data, &compressor); + let fsst_array = fsst_compress(data, data.len(), data.dtype(), &compressor); let match_url = pick_url_with_domain(data, HIGH_MATCH_DOMAIN); let constant = ConstantArray::new(Scalar::from(match_url.as_str()), NUM_URLS); @@ -77,7 +77,7 @@ fn eq_pushdown_high_match(bencher: Bencher) { fn eq_pushdown_low_match(bencher: Bencher) { let data = &*URL_DATA; let compressor = fsst_train_compressor(data); - let fsst_array = fsst_compress(data, &compressor); + let fsst_array = fsst_compress(data, data.len(), data.dtype(), &compressor); let match_url = pick_url_with_domain(data, LOW_MATCH_DOMAIN); let constant = ConstantArray::new(Scalar::from(match_url.as_str()), NUM_URLS); @@ -98,7 +98,7 @@ fn eq_pushdown_low_match(bencher: Bencher) { fn eq_canonicalize_high_match(bencher: Bencher) { let data = &*URL_DATA; let compressor = fsst_train_compressor(data); - let fsst_array = fsst_compress(data, &compressor); + let fsst_array = fsst_compress(data, data.len(), data.dtype(), &compressor); let match_url = pick_url_with_domain(data, HIGH_MATCH_DOMAIN); let constant = ConstantArray::new(Scalar::from(match_url.as_str()), NUM_URLS); @@ -108,8 +108,7 @@ fn eq_canonicalize_high_match(bencher: Bencher) { fsst_array .to_canonical() .unwrap() - .as_ref() - .to_array() + .into_array() .binary(constant.clone().into_array(), Operator::Eq) .unwrap() .execute::(ctx) @@ -121,7 +120,7 @@ fn eq_canonicalize_high_match(bencher: Bencher) { fn eq_canonicalize_low_match(bencher: Bencher) { let data = &*URL_DATA; let compressor = fsst_train_compressor(data); - let fsst_array = fsst_compress(data, &compressor); + let fsst_array = fsst_compress(data, data.len(), data.dtype(), &compressor); let match_url = pick_url_with_domain(data, LOW_MATCH_DOMAIN); let constant = ConstantArray::new(Scalar::from(match_url.as_str()), NUM_URLS); @@ -131,8 +130,7 @@ fn eq_canonicalize_low_match(bencher: Bencher) { fsst_array .to_canonical() .unwrap() - .as_ref() - .to_array() + .into_array() .binary(constant.clone().into_array(), Operator::Eq) .unwrap() .execute::(ctx) @@ -148,7 +146,7 @@ fn eq_canonicalize_low_match(bencher: Bencher) { fn like_substr_high_match(bencher: Bencher) { let data = &*URL_DATA; let compressor = fsst_train_compressor(data); - let fsst_array = fsst_compress(data, &compressor); + let fsst_array = fsst_compress(data, data.len(), data.dtype(), &compressor); let pattern = format!("%{HIGH_MATCH_DOMAIN}%"); let expr = like(root(), lit(pattern.as_str())); @@ -169,7 +167,7 @@ fn like_substr_high_match(bencher: Bencher) { fn like_substr_low_match(bencher: Bencher) { let data = &*URL_DATA; let compressor = fsst_train_compressor(data); - let fsst_array = fsst_compress(data, &compressor); + let fsst_array = fsst_compress(data, data.len(), data.dtype(), &compressor); let pattern = format!("%{LOW_MATCH_DOMAIN}%"); let expr = like(root(), lit(pattern.as_str())); diff --git a/encodings/fsst/public-api.lock b/encodings/fsst/public-api.lock index cfbbb51e0d6..32522dd3f04 100644 --- a/encodings/fsst/public-api.lock +++ b/encodings/fsst/public-api.lock @@ -4,7 +4,9 @@ pub struct vortex_fsst::FSST impl vortex_fsst::FSST -pub const vortex_fsst::FSST::ID: vortex_array::vtable::dyn_::ArrayId +pub const vortex_fsst::FSST::ID: vortex_array::array::ArrayId + +pub fn vortex_fsst::FSST::try_new(dtype: vortex_array::dtype::DType, symbols: vortex_buffer::buffer::Buffer, symbol_lengths: vortex_buffer::buffer::Buffer, codes: vortex_array::arrays::varbin::vtable::VarBinArray, uncompressed_lengths: vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult impl core::clone::Clone for vortex_fsst::FSST @@ -14,141 +16,133 @@ impl core::fmt::Debug for vortex_fsst::FSST pub fn vortex_fsst::FSST::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::take::TakeExecute for vortex_fsst::FSST - -pub fn vortex_fsst::FSST::take(array: &vortex_fsst::FSSTArray, indices: &vortex_array::array::ArrayRef, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::array::vtable::VTable for vortex_fsst::FSST -impl vortex_array::arrays::filter::kernel::FilterKernel for vortex_fsst::FSST - -pub fn vortex_fsst::FSST::filter(array: &vortex_fsst::FSSTArray, mask: &vortex_mask::Mask, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::arrays::slice::SliceReduce for vortex_fsst::FSST +pub type vortex_fsst::FSST::ArrayData = vortex_fsst::FSSTData -pub fn vortex_fsst::FSST::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::binary::compare::CompareKernel for vortex_fsst::FSST +pub type vortex_fsst::FSST::Metadata = vortex_array::metadata::ProstMetadata -pub fn vortex_fsst::FSST::compare(lhs: &vortex_fsst::FSSTArray, rhs: &vortex_array::array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub type vortex_fsst::FSST::OperationsVTable = vortex_fsst::FSST -impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_fsst::FSST +pub type vortex_fsst::FSST::ValidityVTable = vortex_array::array::vtable::validity::ValidityVTableFromChild -pub fn vortex_fsst::FSST::cast(array: &vortex_fsst::FSSTArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_fsst::FSST::append_to_builder(array: vortex_array::array::view::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult<()> -impl vortex_array::scalar_fn::fns::like::kernel::LikeKernel for vortex_fsst::FSST +pub fn vortex_fsst::FSST::array_eq(array: &vortex_fsst::FSSTData, other: &vortex_fsst::FSSTData, precision: vortex_array::hash::Precision) -> bool -pub fn vortex_fsst::FSST::like(array: &vortex_fsst::FSSTArray, pattern: &vortex_array::array::ArrayRef, options: vortex_array::scalar_fn::fns::like::LikeOptions, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_fsst::FSST::array_hash(array: &vortex_fsst::FSSTData, state: &mut H, precision: vortex_array::hash::Precision) -impl vortex_array::vtable::VTable for vortex_fsst::FSST +pub fn vortex_fsst::FSST::buffer(array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub type vortex_fsst::FSST::Array = vortex_fsst::FSSTArray +pub fn vortex_fsst::FSST::buffer_name(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub type vortex_fsst::FSST::Metadata = vortex_array::metadata::ProstMetadata +pub fn vortex_fsst::FSST::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub type vortex_fsst::FSST::OperationsVTable = vortex_fsst::FSST +pub fn vortex_fsst::FSST::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_fsst::FSST::ValidityVTable = vortex_array::vtable::validity::ValidityVTableFromChild +pub fn vortex_fsst::FSST::dtype(array: &vortex_fsst::FSSTData) -> &vortex_array::dtype::DType -pub fn vortex_fsst::FSST::append_to_builder(array: &vortex_fsst::FSSTArray, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_fsst::FSST::execute(array: vortex_array::array::typed::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_fsst::FSST::array_eq(array: &vortex_fsst::FSSTArray, other: &vortex_fsst::FSSTArray, precision: vortex_array::hash::Precision) -> bool +pub fn vortex_fsst::FSST::execute_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_fsst::FSST::array_hash(array: &vortex_fsst::FSSTArray, state: &mut H, precision: vortex_array::hash::Precision) +pub fn vortex_fsst::FSST::id(&self) -> vortex_array::array::ArrayId -pub fn vortex_fsst::FSST::buffer(array: &vortex_fsst::FSSTArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_fsst::FSST::len(array: &vortex_fsst::FSSTData) -> usize -pub fn vortex_fsst::FSST::buffer_name(_array: &vortex_fsst::FSSTArray, idx: usize) -> core::option::Option +pub fn vortex_fsst::FSST::metadata(array: vortex_array::array::view::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_fsst::FSST::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_fsst::FSST::nbuffers(_array: vortex_array::array::view::ArrayView<'_, Self>) -> usize -pub fn vortex_fsst::FSST::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_fsst::FSST::reduce_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_fsst::FSST::dtype(array: &vortex_fsst::FSSTArray) -> &vortex_array::dtype::DType +pub fn vortex_fsst::FSST::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_fsst::FSST::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_fsst::FSST::slot_name(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_fsst::FSST::execute_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_fsst::FSST::slots(array: vortex_array::array::view::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_fsst::FSST::id(&self) -> vortex_array::vtable::dyn_::ArrayId +pub fn vortex_fsst::FSST::stats(array: &vortex_fsst::FSSTData) -> &vortex_array::stats::array::ArrayStats -pub fn vortex_fsst::FSST::len(array: &vortex_fsst::FSSTArray) -> usize +pub fn vortex_fsst::FSST::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_fsst::FSST::metadata(array: &vortex_fsst::FSSTArray) -> vortex_error::VortexResult +pub fn vortex_fsst::FSST::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_fsst::FSST::nbuffers(_array: &vortex_fsst::FSSTArray) -> usize +impl vortex_array::array::vtable::operations::OperationsVTable for vortex_fsst::FSST -pub fn vortex_fsst::FSST::reduce_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_fsst::FSST::scalar_at(array: vortex_array::array::view::ArrayView<'_, vortex_fsst::FSST>, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_fsst::FSST::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +impl vortex_array::array::vtable::validity::ValidityChild for vortex_fsst::FSST -pub fn vortex_fsst::FSST::slot_name(_array: &vortex_fsst::FSSTArray, idx: usize) -> alloc::string::String +pub fn vortex_fsst::FSST::validity_child(array: &vortex_fsst::FSSTData) -> &vortex_array::array::erased::ArrayRef -pub fn vortex_fsst::FSST::slots(array: &vortex_fsst::FSSTArray) -> &[core::option::Option] +impl vortex_array::arrays::dict::take::TakeExecute for vortex_fsst::FSST -pub fn vortex_fsst::FSST::stats(array: &vortex_fsst::FSSTArray) -> vortex_array::stats::array::StatsSetRef<'_> +pub fn vortex_fsst::FSST::take(array: vortex_array::array::view::ArrayView<'_, Self>, indices: &vortex_array::array::erased::ArrayRef, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_fsst::FSST::vtable(_array: &Self::Array) -> &Self +impl vortex_array::arrays::filter::kernel::FilterKernel for vortex_fsst::FSST -pub fn vortex_fsst::FSST::with_slots(array: &mut vortex_fsst::FSSTArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_fsst::FSST::filter(array: vortex_array::array::view::ArrayView<'_, Self>, mask: &vortex_mask::Mask, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::vtable::operations::OperationsVTable for vortex_fsst::FSST +impl vortex_array::arrays::slice::SliceReduce for vortex_fsst::FSST -pub fn vortex_fsst::FSST::scalar_at(array: &vortex_fsst::FSSTArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_fsst::FSST::slice(array: vortex_array::array::view::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -impl vortex_array::vtable::validity::ValidityChild for vortex_fsst::FSST +impl vortex_array::scalar_fn::fns::binary::compare::CompareKernel for vortex_fsst::FSST -pub fn vortex_fsst::FSST::validity_child(array: &vortex_fsst::FSSTArray) -> &vortex_array::array::ArrayRef +pub fn vortex_fsst::FSST::compare(lhs: vortex_array::array::view::ArrayView<'_, Self>, rhs: &vortex_array::array::erased::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub struct vortex_fsst::FSSTArray +impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_fsst::FSST -impl vortex_fsst::FSSTArray +pub fn vortex_fsst::FSST::cast(array: vortex_array::array::view::ArrayView<'_, Self>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_fsst::FSSTArray::codes(&self) -> &vortex_array::arrays::varbin::array::VarBinArray +impl vortex_array::scalar_fn::fns::like::kernel::LikeKernel for vortex_fsst::FSST -pub fn vortex_fsst::FSSTArray::codes_dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_fsst::FSST::like(array: vortex_array::array::view::ArrayView<'_, Self>, pattern: &vortex_array::array::erased::ArrayRef, options: vortex_array::scalar_fn::fns::like::LikeOptions, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_fsst::FSSTArray::compressor(&self) -> &fsst::Compressor +pub struct vortex_fsst::FSSTData -pub fn vortex_fsst::FSSTArray::decompressor(&self) -> fsst::Decompressor<'_> +impl vortex_fsst::FSSTData -pub fn vortex_fsst::FSSTArray::symbol_lengths(&self) -> &vortex_buffer::buffer::Buffer +pub fn vortex_fsst::FSSTData::codes(&self) -> &vortex_array::arrays::varbin::vtable::VarBinArray -pub fn vortex_fsst::FSSTArray::symbols(&self) -> &vortex_buffer::buffer::Buffer +pub fn vortex_fsst::FSSTData::codes_dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_fsst::FSSTArray::try_new(dtype: vortex_array::dtype::DType, symbols: vortex_buffer::buffer::Buffer, symbol_lengths: vortex_buffer::buffer::Buffer, codes: vortex_array::arrays::varbin::array::VarBinArray, uncompressed_lengths: vortex_array::array::ArrayRef) -> vortex_error::VortexResult +pub fn vortex_fsst::FSSTData::compressor(&self) -> &fsst::Compressor -pub fn vortex_fsst::FSSTArray::uncompressed_lengths(&self) -> &vortex_array::array::ArrayRef +pub fn vortex_fsst::FSSTData::decompressor(&self) -> fsst::Decompressor<'_> -pub fn vortex_fsst::FSSTArray::uncompressed_lengths_dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_fsst::FSSTData::dtype(&self) -> &vortex_array::dtype::DType -impl vortex_fsst::FSSTArray +pub fn vortex_fsst::FSSTData::is_empty(&self) -> bool -pub fn vortex_fsst::FSSTArray::to_array(&self) -> vortex_array::array::ArrayRef +pub fn vortex_fsst::FSSTData::len(&self) -> usize -impl core::clone::Clone for vortex_fsst::FSSTArray +pub fn vortex_fsst::FSSTData::symbol_lengths(&self) -> &vortex_buffer::buffer::Buffer -pub fn vortex_fsst::FSSTArray::clone(&self) -> vortex_fsst::FSSTArray +pub fn vortex_fsst::FSSTData::symbols(&self) -> &vortex_buffer::buffer::Buffer -impl core::convert::AsRef for vortex_fsst::FSSTArray +pub fn vortex_fsst::FSSTData::try_new(dtype: vortex_array::dtype::DType, symbols: vortex_buffer::buffer::Buffer, symbol_lengths: vortex_buffer::buffer::Buffer, codes: vortex_array::arrays::varbin::vtable::VarBinArray, uncompressed_lengths: vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult -pub fn vortex_fsst::FSSTArray::as_ref(&self) -> &dyn vortex_array::array::DynArray +pub fn vortex_fsst::FSSTData::uncompressed_lengths(&self) -> &vortex_array::array::erased::ArrayRef -impl core::convert::From for vortex_array::array::ArrayRef +pub fn vortex_fsst::FSSTData::uncompressed_lengths_dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::array::ArrayRef::from(value: vortex_fsst::FSSTArray) -> vortex_array::array::ArrayRef +impl core::clone::Clone for vortex_fsst::FSSTData -impl core::fmt::Debug for vortex_fsst::FSSTArray +pub fn vortex_fsst::FSSTData::clone(&self) -> vortex_fsst::FSSTData -pub fn vortex_fsst::FSSTArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl core::convert::From for vortex_array::array::erased::ArrayRef -impl core::ops::deref::Deref for vortex_fsst::FSSTArray +pub fn vortex_array::array::erased::ArrayRef::from(value: vortex_fsst::FSSTData) -> vortex_array::array::erased::ArrayRef -pub type vortex_fsst::FSSTArray::Target = dyn vortex_array::array::DynArray +impl core::fmt::Debug for vortex_fsst::FSSTData -pub fn vortex_fsst::FSSTArray::deref(&self) -> &Self::Target +pub fn vortex_fsst::FSSTData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::array::IntoArray for vortex_fsst::FSSTArray +impl vortex_array::array::IntoArray for vortex_fsst::FSSTData -pub fn vortex_fsst::FSSTArray::into_array(self) -> vortex_array::array::ArrayRef +pub fn vortex_fsst::FSSTData::into_array(self) -> vortex_array::array::erased::ArrayRef pub struct vortex_fsst::FSSTMetadata @@ -184,8 +178,10 @@ pub fn vortex_fsst::FSSTMetadata::clear(&mut self) pub fn vortex_fsst::FSSTMetadata::encoded_len(&self) -> usize -pub fn vortex_fsst::fsst_compress + core::convert::AsRef>(strings: A, compressor: &fsst::Compressor) -> vortex_fsst::FSSTArray +pub fn vortex_fsst::fsst_compress>(strings: A, len: usize, dtype: &vortex_array::dtype::DType, compressor: &fsst::Compressor) -> vortex_fsst::FSSTArray pub fn vortex_fsst::fsst_compress_iter<'a, I>(iter: I, len: usize, dtype: vortex_array::dtype::DType, compressor: &fsst::Compressor) -> vortex_fsst::FSSTArray where I: core::iter::traits::iterator::Iterator> pub fn vortex_fsst::fsst_train_compressor>(array: &A) -> fsst::Compressor + +pub type vortex_fsst::FSSTArray = vortex_array::array::typed::Array diff --git a/encodings/fsst/src/array.rs b/encodings/fsst/src/array.rs index c716ebc68d2..b98d5d9edd6 100644 --- a/encodings/fsst/src/array.rs +++ b/encodings/fsst/src/array.rs @@ -3,19 +3,20 @@ use std::fmt::Debug; use std::fmt::Formatter; -use std::hash::Hash; use std::sync::Arc; use std::sync::LazyLock; use fsst::Compressor; use fsst::Decompressor; use fsst::Symbol; +use vortex_array::Array; use vortex_array::ArrayEq; use vortex_array::ArrayHash; +use vortex_array::ArrayId; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::Canonical; use vortex_array::DeserializeMetadata; -use vortex_array::DynArray; use vortex_array::ExecutionCtx; use vortex_array::ExecutionResult; use vortex_array::IntoArray; @@ -32,11 +33,8 @@ use vortex_array::dtype::Nullability; use vortex_array::dtype::PType; use vortex_array::serde::ArrayChildren; use vortex_array::stats::ArrayStats; -use vortex_array::stats::StatsSetRef; use vortex_array::validity::Validity; use vortex_array::vtable; -use vortex_array::vtable::Array; -use vortex_array::vtable::ArrayId; use vortex_array::vtable::VTable; use vortex_array::vtable::ValidityChild; use vortex_array::vtable::ValidityVTableFromChild; @@ -56,7 +54,7 @@ use crate::canonical::fsst_decode_views; use crate::kernel::PARENT_KERNELS; use crate::rules::RULES; -vtable!(FSST); +vtable!(FSST, FSST, FSSTData); #[derive(Clone, prost::Message)] pub struct FSSTMetadata { @@ -75,13 +73,13 @@ impl FSSTMetadata { } impl VTable for FSST { - type Array = FSSTArray; + type ArrayData = FSSTData; type Metadata = ProstMetadata; type OperationsVTable = Self; type ValidityVTable = ValidityVTableFromChild; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &Self::ArrayData) -> &Self { &FSST } @@ -89,46 +87,49 @@ impl VTable for FSST { Self::ID } - fn len(array: &FSSTArray) -> usize { + fn len(array: &FSSTData) -> usize { array.codes().len() } - fn dtype(array: &FSSTArray) -> &DType { + fn dtype(array: &FSSTData) -> &DType { &array.dtype } - fn stats(array: &FSSTArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &FSSTData) -> &ArrayStats { + &array.stats_set } - fn array_hash(array: &FSSTArray, state: &mut H, precision: Precision) { - array.dtype.hash(state); + fn array_hash(array: &FSSTData, state: &mut H, precision: Precision) { array.symbols.array_hash(state, precision); array.symbol_lengths.array_hash(state, precision); - array.codes.as_ref().array_hash(state, precision); + array + .codes + .clone() + .into_array() + .array_hash(state, precision); array.uncompressed_lengths().array_hash(state, precision); } - fn array_eq(array: &FSSTArray, other: &FSSTArray, precision: Precision) -> bool { - array.dtype == other.dtype - && array.symbols.array_eq(&other.symbols, precision) + fn array_eq(array: &FSSTData, other: &FSSTData, precision: Precision) -> bool { + array.symbols.array_eq(&other.symbols, precision) && array .symbol_lengths .array_eq(&other.symbol_lengths, precision) && array .codes - .as_ref() - .array_eq(other.codes.as_ref(), precision) + .clone() + .into_array() + .array_eq(&other.codes.clone().into_array(), precision) && array .uncompressed_lengths() .array_eq(other.uncompressed_lengths(), precision) } - fn nbuffers(_array: &FSSTArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 3 } - fn buffer(array: &FSSTArray, idx: usize) -> BufferHandle { + fn buffer(array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { match idx { 0 => BufferHandle::new_host(array.symbols().clone().into_byte_buffer()), 1 => BufferHandle::new_host(array.symbol_lengths().clone().into_byte_buffer()), @@ -137,7 +138,7 @@ impl VTable for FSST { } } - fn buffer_name(_array: &FSSTArray, idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, idx: usize) -> Option { match idx { 0 => Some("symbols".to_string()), 1 => Some("symbol_lengths".to_string()), @@ -146,7 +147,7 @@ impl VTable for FSST { } } - fn metadata(array: &FSSTArray) -> VortexResult { + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { Ok(ProstMetadata(FSSTMetadata { uncompressed_lengths_ptype: array.uncompressed_lengths().dtype().as_ptype().into(), codes_offsets_ptype: array.codes.offsets().dtype().as_ptype().into(), @@ -170,15 +171,15 @@ impl VTable for FSST { } fn append_to_builder( - array: &FSSTArray, + array: ArrayView<'_, Self>, builder: &mut dyn ArrayBuilder, ctx: &mut ExecutionCtx, ) -> VortexResult<()> { let Some(builder) = builder.as_any_mut().downcast_mut::() else { builder.extend_from_array( &array + .array() .clone() - .into_array() .execute::(ctx)? .into_array(), ); @@ -187,9 +188,9 @@ impl VTable for FSST { // Decompress the whole block of data into a new buffer, and create some views // from it instead. - let (buffers, views) = fsst_decode_views(array, builder.completed_block_count(), ctx)?; + let (buffers, views) = fsst_decode_views(&array, builder.completed_block_count(), ctx)?; - builder.push_buffer_and_adjusted_views(&buffers, &views, array.validity_mask()?); + builder.push_buffer_and_adjusted_views(&buffers, &views, array.array().validity_mask()?); Ok(()) } @@ -199,7 +200,7 @@ impl VTable for FSST { metadata: &Self::Metadata, buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { let symbols = Buffer::::from_byte_buffer(buffers[0].clone().try_to_host_sync()?); let symbol_lengths = Buffer::::from_byte_buffer(buffers[1].clone().try_to_host_sync()?); @@ -209,7 +210,7 @@ impl VTable for FSST { vortex_bail!(InvalidArgument: "Expected 2 children, got {}", children.len()); } let codes = children.get(0, &DType::Binary(dtype.nullability()), len)?; - let codes = codes + let codes: VarBinArray = codes .as_opt::() .ok_or_else(|| { vortex_err!( @@ -217,7 +218,7 @@ impl VTable for FSST { codes.encoding_id() ) })? - .clone(); + .into_owned(); let uncompressed_lengths = children.get( 1, &DType::Primitive( @@ -227,7 +228,7 @@ impl VTable for FSST { len, )?; - return FSSTArray::try_new( + return FSSTData::try_new( dtype.clone(), symbols, symbol_lengths, @@ -274,7 +275,7 @@ impl VTable for FSST { codes_validity, )?; - return FSSTArray::try_new( + return FSSTData::try_new( dtype.clone(), symbols, symbol_lengths, @@ -289,15 +290,15 @@ impl VTable for FSST { ); } - fn slots(array: &FSSTArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &FSSTArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn with_slots(array: &mut FSSTArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "FSSTArray expects {} slots, got {}", @@ -305,31 +306,33 @@ impl VTable for FSST { slots.len() ); - // Reconstruct codes VarBinArray from new offsets + existing bytes + new validity + // Rebuild the codes VarBinArray from the slots let codes_offsets = slots[CODES_OFFSETS_SLOT] .clone() .vortex_expect("FSSTArray requires codes_offsets slot"); let codes_validity = match &slots[CODES_VALIDITY_SLOT] { - Some(arr) => Validity::Array(arr.clone()), - None => Validity::from(array.codes.dtype().nullability()), + Some(v) => Validity::Array(v.clone()), + None => Validity::from(array.dtype.nullability()), }; - array.codes = VarBinArray::try_new_from_handle( + let codes = VarBinArray::try_new( codes_offsets, - array.codes.bytes_handle().clone(), + array.codes.bytes().clone(), array.codes.dtype().clone(), codes_validity, )?; + array.codes = codes; array.codes_array = array.codes.clone().into_array(); array.slots = slots; + Ok(()) } - fn execute(array: Arc>, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, ctx: &mut ExecutionCtx) -> VortexResult { canonicalize_fsst(&array, ctx).map(ExecutionResult::done) } fn execute_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, @@ -338,7 +341,7 @@ impl VTable for FSST { } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { @@ -357,7 +360,7 @@ pub(crate) const SLOT_NAMES: [&str; NUM_SLOTS] = ["uncompressed_lengths", "codes_offsets", "codes_validity"]; #[derive(Clone)] -pub struct FSSTArray { +pub struct FSSTData { dtype: DType, symbols: Buffer, symbol_lengths: Buffer, @@ -372,7 +375,7 @@ pub struct FSSTArray { compressor: Arc Compressor + Send>>>, } -impl Debug for FSSTArray { +impl Debug for FSSTData { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { f.debug_struct("FSSTArray") .field("dtype", &self.dtype) @@ -389,9 +392,26 @@ pub struct FSST; impl FSST { pub const ID: ArrayId = ArrayId::new_ref("vortex.fsst"); + + /// Build an FSST array from a set of `symbols` and `codes`. + pub fn try_new( + dtype: DType, + symbols: Buffer, + symbol_lengths: Buffer, + codes: VarBinArray, + uncompressed_lengths: ArrayRef, + ) -> VortexResult { + Array::try_from_data(FSSTData::try_new( + dtype, + symbols, + symbol_lengths, + codes, + uncompressed_lengths, + )?) + } } -impl FSSTArray { +impl FSSTData { /// Build an FSST array from a set of `symbols` and `codes`. /// /// Symbols are 8-bytes and can represent short strings, each of which is assigned @@ -473,6 +493,21 @@ impl FSSTArray { } } + /// Returns the number of elements in the array. + pub fn len(&self) -> usize { + self.codes.len() + } + + /// Returns `true` if the array contains no elements. + pub fn is_empty(&self) -> bool { + self.codes.len() == 0 + } + + /// Returns the logical data type of the array. + pub fn dtype(&self) -> &DType { + &self.dtype + } + /// Access the symbol table array pub fn symbols(&self) -> &Buffer { &self.symbols @@ -520,7 +555,7 @@ impl FSSTArray { } impl ValidityChild for FSST { - fn validity_child(array: &FSSTArray) -> &ArrayRef { + fn validity_child(array: &FSSTData) -> &ArrayRef { &array.codes_array } } @@ -529,7 +564,6 @@ impl ValidityChild for FSST { mod test { use fsst::Compressor; use fsst::Symbol; - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::LEGACY_SESSION; use vortex_array::ProstMetadata; diff --git a/encodings/fsst/src/canonical.rs b/encodings/fsst/src/canonical.rs index 133628e82e3..41df50f913b 100644 --- a/encodings/fsst/src/canonical.rs +++ b/encodings/fsst/src/canonical.rs @@ -17,10 +17,10 @@ use vortex_buffer::ByteBuffer; use vortex_buffer::ByteBufferMut; use vortex_error::VortexResult; -use crate::FSSTArray; +use crate::FSSTData; pub(super) fn canonicalize_fsst( - array: &FSSTArray, + array: &FSSTData, ctx: &mut ExecutionCtx, ) -> VortexResult { let (buffers, views) = fsst_decode_views(array, 0, ctx)?; @@ -38,7 +38,7 @@ pub(super) fn canonicalize_fsst( } pub(crate) fn fsst_decode_views( - fsst_array: &FSSTArray, + fsst_array: &FSSTData, start_buf_index: u32, ctx: &mut ExecutionCtx, ) -> VortexResult<(Vec, Buffer)> { @@ -150,7 +150,10 @@ mod tests { .map(|_| { let (array, data) = make_data(); let compressor = fsst_train_compressor(&array); - (fsst_compress(&array, &compressor).into_array(), data) + ( + fsst_compress(&array, array.len(), array.dtype(), &compressor).into_array(), + data, + ) }) .unzip(); @@ -166,7 +169,10 @@ mod tests { let mut builder = VarBinViewBuilder::with_capacity(chunked_arr.dtype().clone(), chunked_arr.len()); - chunked_arr.append_to_builder(&mut builder, &mut SESSION.create_execution_ctx())?; + chunked_arr + .clone() + .into_array() + .append_to_builder(&mut builder, &mut SESSION.create_execution_ctx())?; { let arr = builder.finish_into_canonical().into_varbinview(); @@ -176,7 +182,7 @@ mod tests { }; { - let arr2 = chunked_arr.to_varbinview(); + let arr2 = chunked_arr.as_array().to_varbinview(); let res2 = arr2.with_iterator(|iter| iter.map(|b| b.map(|v| v.to_vec())).collect::>()); assert_eq!(data, res2) diff --git a/encodings/fsst/src/compress.rs b/encodings/fsst/src/compress.rs index 669e488a16c..eb016789584 100644 --- a/encodings/fsst/src/compress.rs +++ b/encodings/fsst/src/compress.rs @@ -5,7 +5,6 @@ use fsst::Compressor; use fsst::Symbol; -use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::accessor::ArrayAccessor; use vortex_array::arrays::varbin::builder::VarBinBuilder; @@ -14,16 +13,16 @@ use vortex_buffer::Buffer; use vortex_buffer::BufferMut; use vortex_error::VortexExpect; -use crate::FSSTArray; - /// Compress a string array using FSST. -pub fn fsst_compress + AsRef>( +use crate::FSSTArray; +use crate::FSSTData; +pub fn fsst_compress>( strings: A, + len: usize, + dtype: &DType, compressor: &Compressor, ) -> FSSTArray { - let len = strings.as_ref().len(); - let dtype = strings.as_ref().dtype().clone(); - strings.with_iterator(|iter| fsst_compress_iter(iter, len, dtype, compressor)) + strings.with_iterator(|iter| fsst_compress_iter(iter, len, dtype.clone(), compressor)) } /// Train a compressor from an array. @@ -103,8 +102,11 @@ where let uncompressed_lengths = uncompressed_lengths.into_array(); - FSSTArray::try_new(dtype, symbols, symbol_lengths, codes, uncompressed_lengths) - .vortex_expect("building FSSTArray from parts") + FSSTArray::try_from_data( + FSSTData::try_new(dtype, symbols, symbol_lengths, codes, uncompressed_lengths) + .vortex_expect("building FSSTArray from parts"), + ) + .vortex_expect("FSSTData is always valid") } #[cfg(test)] diff --git a/encodings/fsst/src/compute/cast.rs b/encodings/fsst/src/compute/cast.rs index e21934665c6..496d5bf3f92 100644 --- a/encodings/fsst/src/compute/cast.rs +++ b/encodings/fsst/src/compute/cast.rs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::arrays::VarBin; use vortex_array::builtins::ArrayBuiltins; @@ -10,10 +11,9 @@ use vortex_array::scalar_fn::fns::cast::CastReduce; use vortex_error::VortexResult; use crate::FSST; -use crate::FSSTArray; - +use crate::FSSTData; impl CastReduce for FSST { - fn cast(array: &FSSTArray, dtype: &DType) -> VortexResult> { + fn cast(array: ArrayView<'_, Self>, dtype: &DType) -> VortexResult> { // FSST is a string compression encoding. // For nullability changes, we can cast the codes and symbols arrays if array.dtype().eq_ignore_nullability(dtype) { @@ -25,11 +25,11 @@ impl CastReduce for FSST { .cast(array.codes().dtype().with_nullability(dtype.nullability()))?; Ok(Some( - FSSTArray::try_new( + FSSTData::try_new( dtype.clone(), array.symbols().clone(), array.symbol_lengths().clone(), - new_codes.as_::().clone(), + new_codes.as_::().into_owned(), array.uncompressed_lengths().clone(), )? .into_array(), @@ -61,7 +61,9 @@ mod tests { ); let compressor = fsst_train_compressor(&strings); - let fsst = fsst_compress(strings, &compressor); + let len = strings.len(); + let dtype = strings.dtype().clone(); + let fsst = fsst_compress(strings, len, &dtype, &compressor); // Cast to nullable let casted = fsst @@ -86,7 +88,7 @@ mod tests { ))] fn test_cast_fsst_conformance(#[case] array: VarBinArray) { let compressor = fsst_train_compressor(&array); - let fsst = fsst_compress(&array, &compressor); + let fsst = fsst_compress(&array, array.len(), array.dtype(), &compressor); test_cast_conformance(&fsst.into_array()); } } diff --git a/encodings/fsst/src/compute/compare.rs b/encodings/fsst/src/compute/compare.rs index e6efbd075ed..cc0c563a887 100644 --- a/encodings/fsst/src/compute/compare.rs +++ b/encodings/fsst/src/compute/compare.rs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::BoolArray; @@ -20,17 +21,17 @@ use vortex_error::VortexResult; use vortex_error::vortex_bail; use crate::FSST; -use crate::FSSTArray; +use crate::FSSTData; impl CompareKernel for FSST { fn compare( - lhs: &FSSTArray, + lhs: ArrayView<'_, Self>, rhs: &ArrayRef, operator: CompareOperator, ctx: &mut ExecutionCtx, ) -> VortexResult> { match rhs.as_constant() { - Some(constant) => compare_fsst_constant(lhs, &constant, operator, ctx), + Some(constant) => compare_fsst_constant(&lhs, &constant, operator, ctx), // Otherwise, fall back to the default comparison behavior. _ => Ok(None), } @@ -39,7 +40,7 @@ impl CompareKernel for FSST { /// Specialized compare function implementation used when performing against a constant fn compare_fsst_constant( - left: &FSSTArray, + left: &FSSTData, right: &Scalar, operator: CompareOperator, ctx: &mut ExecutionCtx, @@ -63,7 +64,6 @@ fn compare_fsst_constant( CompareOperator::Lt => BitBuffer::new_unset(left.len()), _ => left .uncompressed_lengths() - .to_array() .binary( ConstantArray::new( Scalar::zero_value(left.uncompressed_lengths().dtype()), @@ -124,7 +124,6 @@ fn compare_fsst_constant( #[cfg(test)] mod tests { - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::ToCanonical; use vortex_array::arrays::BoolArray; @@ -154,7 +153,9 @@ mod tests { DType::Utf8(Nullability::Nullable), ); let compressor = fsst_train_compressor(&lhs); - let lhs = fsst_compress(lhs, &compressor); + let len = lhs.len(); + let dtype = lhs.dtype().clone(); + let lhs = fsst_compress(lhs, len, &dtype, &compressor); let rhs = ConstantArray::new("world", lhs.len()); diff --git a/encodings/fsst/src/compute/filter.rs b/encodings/fsst/src/compute/filter.rs index b06f442addb..de58a83d5c4 100644 --- a/encodings/fsst/src/compute/filter.rs +++ b/encodings/fsst/src/compute/filter.rs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::VarBin; @@ -11,23 +12,26 @@ use vortex_error::VortexResult; use vortex_mask::Mask; use crate::FSST; -use crate::FSSTArray; +use crate::FSSTData; impl FilterKernel for FSST { fn filter( - array: &FSSTArray, + array: ArrayView<'_, Self>, mask: &Mask, ctx: &mut ExecutionCtx, ) -> VortexResult> { - // Directly invoke VarBin's FilterKernel to get a concrete VarBinArray back. - let filtered_codes = ::filter(array.codes(), mask, ctx)? - .vortex_expect("VarBin filter kernel always returns Some") + // Directly invoke VarBin's FilterKernel on the codes child. + let codes = array.codes().clone(); + let codes = codes.as_view(); + let filtered_codes_ref = ::filter(codes, mask, ctx)? + .vortex_expect("VarBin filter kernel always returns Some"); + let filtered_codes = filtered_codes_ref .try_into::() .ok() .vortex_expect("must be VarBin"); Ok(Some( - FSSTArray::try_new( + FSSTData::try_new( array.dtype().clone(), array.symbols().clone(), array.symbol_lengths().clone(), @@ -38,57 +42,3 @@ impl FilterKernel for FSST { )) } } - -#[cfg(test)] -mod test { - use vortex_array::IntoArray; - use vortex_array::arrays::varbin::builder::VarBinBuilder; - use vortex_array::compute::conformance::filter::test_filter_conformance; - use vortex_array::dtype::DType; - use vortex_array::dtype::Nullability; - - use crate::fsst_compress; - use crate::fsst_train_compressor; - - #[test] - fn test_filter_fsst_array() { - // Test with small strings - let mut builder = VarBinBuilder::::with_capacity(5); - builder.append_value(b"hello"); - builder.append_value(b"world"); - builder.append_value(b"hello"); - builder.append_value(b"rust"); - builder.append_value(b"world"); - let varbin = builder.finish(DType::Utf8(Nullability::NonNullable)); - - let compressor = fsst_train_compressor(&varbin); - let array = fsst_compress(&varbin, &compressor); - test_filter_conformance(&array.into_array()); - - // Test with longer strings that benefit from compression - let mut builder = VarBinBuilder::::with_capacity(5); - builder.append_value(b"the quick brown fox"); - builder.append_value(b"the quick brown fox jumps"); - builder.append_value(b"the lazy dog"); - builder.append_value(b"the quick brown fox jumps over"); - builder.append_value(b"the lazy dog sleeps"); - let varbin = builder.finish(DType::Utf8(Nullability::NonNullable)); - - let compressor = fsst_train_compressor(&varbin); - let array = fsst_compress(&varbin, &compressor); - test_filter_conformance(&array.into_array()); - - // Test with nullable strings - let mut builder = VarBinBuilder::::with_capacity(5); - builder.append_value(b"compress"); - builder.append_null(); - builder.append_value(b"decompress"); - builder.append_value(b"compress"); - builder.append_null(); - let varbin = builder.finish(DType::Utf8(Nullability::Nullable)); - - let compressor = fsst_train_compressor(&varbin); - let array = fsst_compress(&varbin, &compressor); - test_filter_conformance(&array.into_array()); - } -} diff --git a/encodings/fsst/src/compute/like.rs b/encodings/fsst/src/compute/like.rs index 603582d7b78..2ef7508c60d 100644 --- a/encodings/fsst/src/compute/like.rs +++ b/encodings/fsst/src/compute/like.rs @@ -4,6 +4,7 @@ #![allow(clippy::cast_possible_truncation)] use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::ToCanonical; @@ -14,13 +15,12 @@ use vortex_array::scalar_fn::fns::like::LikeOptions; use vortex_error::VortexResult; use crate::FSST; -use crate::FSSTArray; use crate::dfa::FsstMatcher; use crate::dfa::dfa_scan_to_bitbuf; impl LikeKernel for FSST { fn like( - array: &FSSTArray, + array: ArrayView<'_, Self>, pattern: &ArrayRef, options: LikeOptions, _ctx: &mut ExecutionCtx, @@ -111,7 +111,9 @@ mod tests { fn make_fsst(strings: &[Option<&str>], nullability: Nullability) -> FSSTArray { let varbin = VarBinArray::from_iter(strings.iter().copied(), DType::Utf8(nullability)); let compressor = fsst_train_compressor(&varbin); - fsst_compress(varbin, &compressor) + let len = varbin.len(); + let dtype = varbin.dtype().clone(); + fsst_compress(varbin, len, &dtype, &compressor) } fn run_like(array: FSSTArray, pattern: &str, opts: LikeOptions) -> VortexResult { @@ -233,7 +235,8 @@ mod tests { let pattern = ConstantArray::new("http%", fsst.len()).into_array(); let mut ctx = SESSION.create_execution_ctx(); - let result = ::like(&fsst, &pattern, LikeOptions::default(), &mut ctx)?; + let fsst = fsst.as_view(); + let result = ::like(fsst, &pattern, LikeOptions::default(), &mut ctx)?; assert!(result.is_some(), "FSST LikeKernel should handle prefix%"); assert_arrays_eq!(result.unwrap(), BoolArray::from_iter([true, false])); Ok(()) @@ -249,7 +252,8 @@ mod tests { let pattern = ConstantArray::new("%world%", fsst.len()).into_array(); let mut ctx = SESSION.create_execution_ctx(); - let result = ::like(&fsst, &pattern, LikeOptions::default(), &mut ctx)?; + let fsst = fsst.as_view(); + let result = ::like(fsst, &pattern, LikeOptions::default(), &mut ctx)?; assert!(result.is_some(), "FSST LikeKernel should handle %needle%"); assert_arrays_eq!(result.unwrap(), BoolArray::from_iter([true, false])); Ok(()) @@ -263,7 +267,9 @@ mod tests { // Underscore wildcard -- not handled. let pattern = ConstantArray::new("a_c", fsst.len()).into_array(); - let result = ::like(&fsst, &pattern, LikeOptions::default(), &mut ctx)?; + let fsst_v = fsst.as_view(); + let result = + ::like(fsst_v, &pattern, LikeOptions::default(), &mut ctx)?; assert!(result.is_none(), "underscore pattern should fall back"); // Case-insensitive -- not handled. @@ -272,7 +278,7 @@ mod tests { negated: false, case_insensitive: true, }; - let result = ::like(&fsst, &pattern, opts, &mut ctx)?; + let result = ::like(fsst_v, &pattern, opts, &mut ctx)?; assert!(result.is_none(), "ilike should fall back"); Ok(()) @@ -290,8 +296,9 @@ mod tests { ); let pattern = "abcdefghijklmn%"; + let fsst = fsst.as_view(); let direct = ::like( - &fsst, + fsst, &ConstantArray::new(pattern, fsst.len()).into_array(), LikeOptions::default(), &mut SESSION.create_execution_ctx(), @@ -317,8 +324,9 @@ mod tests { Nullability::NonNullable, ); + let fsst_v = fsst.as_view(); let direct = ::like( - &fsst, + fsst_v, &ConstantArray::new(pattern.as_str(), fsst.len()).into_array(), LikeOptions::default(), &mut SESSION.create_execution_ctx(), @@ -345,8 +353,9 @@ mod tests { Nullability::NonNullable, ); + let fsst = fsst.as_view(); let direct = ::like( - &fsst, + fsst, &ConstantArray::new(pattern.as_str(), fsst.len()).into_array(), LikeOptions::default(), &mut SESSION.create_execution_ctx(), diff --git a/encodings/fsst/src/compute/mod.rs b/encodings/fsst/src/compute/mod.rs index f49c2954a04..7ca91c4c331 100644 --- a/encodings/fsst/src/compute/mod.rs +++ b/encodings/fsst/src/compute/mod.rs @@ -1,13 +1,14 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use crate::FSSTData; mod cast; mod compare; mod filter; mod like; use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::VarBin; @@ -19,29 +20,32 @@ use vortex_error::VortexResult; use vortex_error::vortex_err; use crate::FSST; -use crate::FSSTArray; impl TakeExecute for FSST { fn take( - array: &FSSTArray, + array: ArrayView<'_, Self>, indices: &ArrayRef, _ctx: &mut ExecutionCtx, ) -> VortexResult> { Ok(Some( - FSSTArray::try_new( + FSSTData::try_new( array .dtype() .clone() .union_nullability(indices.dtype().nullability()), array.symbols().clone(), array.symbol_lengths().clone(), - VarBin::take(array.codes(), indices, _ctx)? - .vortex_expect("cannot fail") - .try_into::() - .map_err(|_| vortex_err!("take for codes must return varbin array"))?, + { + let codes = array.codes(); + let codes = codes.as_view(); + ::take(codes, indices, _ctx)? + .vortex_expect("VarBin take kernel always returns Some") + } + .try_into::() + .map_err(|_| vortex_err!("take for codes must return varbin array"))?, array .uncompressed_lengths() - .take(indices.to_array())? + .take(indices.clone())? .fill_null(Scalar::zero_value( &array.uncompressed_lengths_dtype().clone(), ))?, @@ -54,7 +58,6 @@ impl TakeExecute for FSST { #[cfg(test)] mod tests { use rstest::rstest; - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::arrays::VarBinArray; @@ -71,7 +74,7 @@ mod tests { fn test_take_null() { let arr = VarBinArray::from_iter([Some("h")], DType::Utf8(Nullability::NonNullable)); let compr = fsst_train_compressor(&arr); - let fsst = fsst_compress(&arr, &compr); + let fsst = fsst_compress(&arr, arr.len(), arr.dtype(), &compr); let idx1: PrimitiveArray = (0..1).collect(); @@ -103,7 +106,7 @@ mod tests { ))] fn test_take_fsst_conformance(#[case] varbin: VarBinArray) { let compressor = fsst_train_compressor(&varbin); - let array = fsst_compress(&varbin, &compressor); + let array = fsst_compress(&varbin, varbin.len(), varbin.dtype(), &compressor); test_take_conformance(&array.into_array()); } @@ -115,7 +118,7 @@ mod tests { DType::Utf8(Nullability::NonNullable), ); let compressor = fsst_train_compressor(&varbin); - fsst_compress(&varbin, &compressor) + fsst_compress(&varbin, varbin.len(), varbin.dtype(), &compressor) })] // Nullable strings #[case::fsst_nullable({ @@ -124,7 +127,9 @@ mod tests { DType::Utf8(Nullability::Nullable), ); let compressor = fsst_train_compressor(&varbin); - fsst_compress(varbin, &compressor) + let len = varbin.len(); + let dtype = varbin.dtype().clone(); + fsst_compress(varbin, len, &dtype, &compressor) })] // Repetitive patterns (good for FSST compression) #[case::fsst_repetitive({ @@ -133,7 +138,7 @@ mod tests { DType::Utf8(Nullability::NonNullable), ); let compressor = fsst_train_compressor(&varbin); - fsst_compress(&varbin, &compressor) + fsst_compress(&varbin, varbin.len(), varbin.dtype(), &compressor) })] // Edge cases #[case::fsst_single({ @@ -142,7 +147,7 @@ mod tests { DType::Utf8(Nullability::NonNullable), ); let compressor = fsst_train_compressor(&varbin); - fsst_compress(&varbin, &compressor) + fsst_compress(&varbin, varbin.len(), varbin.dtype(), &compressor) })] #[case::fsst_empty_strings({ let varbin = VarBinArray::from_iter( @@ -150,7 +155,9 @@ mod tests { DType::Utf8(Nullability::NonNullable), ); let compressor = fsst_train_compressor(&varbin); - fsst_compress(varbin, &compressor) + let len = varbin.len(); + let dtype = varbin.dtype().clone(); + fsst_compress(varbin, len, &dtype, &compressor) })] // Large arrays #[case::fsst_large({ @@ -170,7 +177,9 @@ mod tests { .collect(); let varbin = VarBinArray::from_iter(data, DType::Utf8(Nullability::NonNullable)); let compressor = fsst_train_compressor(&varbin); - fsst_compress(varbin, &compressor) + let len = varbin.len(); + let dtype = varbin.dtype().clone(); + fsst_compress(varbin, len, &dtype, &compressor) })] fn test_fsst_consistency(#[case] array: FSSTArray) { diff --git a/encodings/fsst/src/dfa/tests.rs b/encodings/fsst/src/dfa/tests.rs index d135014c42e..0d61d92090a 100644 --- a/encodings/fsst/src/dfa/tests.rs +++ b/encodings/fsst/src/dfa/tests.rs @@ -227,7 +227,9 @@ fn make_fsst_str(strings: &[Option<&str>]) -> FSSTArray { DType::Utf8(Nullability::NonNullable), ); let compressor = fsst_train_compressor(&varbin); - fsst_compress(varbin, &compressor) + let len = varbin.len(); + let dtype = varbin.dtype().clone(); + fsst_compress(varbin, len, &dtype, &compressor) } fn run_like(array: FSSTArray, pattern_arr: ArrayRef) -> VortexResult { diff --git a/encodings/fsst/src/kernel.rs b/encodings/fsst/src/kernel.rs index 3ec36dd1b32..05b58e3215d 100644 --- a/encodings/fsst/src/kernel.rs +++ b/encodings/fsst/src/kernel.rs @@ -22,7 +22,6 @@ mod tests { use vortex_array::ArrayRef; use vortex_array::Canonical; - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; use vortex_array::arrays::FilterArray; @@ -57,7 +56,9 @@ mod tests { let input = builder.finish(DType::Utf8(Nullability::NonNullable)); let compressor = fsst_train_compressor(&input); - fsst_compress(input, &compressor).into_array() + let len = input.len(); + let dtype = input.dtype().clone(); + fsst_compress(input, len, &dtype, &compressor).into_array() } #[test] @@ -130,14 +131,15 @@ mod tests { let input = builder.finish(DType::Utf8(Nullability::Nullable)); let compressor = fsst_train_compressor(&input); - let fsst_array: ArrayRef = fsst_compress(input.clone(), &compressor).into_array(); + let fsst_array: ArrayRef = + fsst_compress(input.clone(), input.len(), input.dtype(), &compressor).into_array(); // Filter: only select the last element (index 22) let mut mask = vec![false; 22]; mask.push(true); let mask = Mask::from_iter(mask); - let filter_array = FilterArray::new(fsst_array.clone(), mask.clone()).into_array(); + let filter_array = FilterArray::new(fsst_array, mask.clone()).into_array(); let mut ctx = SESSION.create_execution_ctx(); let result = filter_array.execute::(&mut ctx)?; @@ -158,11 +160,12 @@ mod tests { let input = builder.finish(DType::Utf8(Nullability::Nullable)); let compressor = fsst_train_compressor(&input); - let fsst_array: ArrayRef = fsst_compress(input.clone(), &compressor).into_array(); + let fsst_array: ArrayRef = + fsst_compress(input.clone(), input.len(), input.dtype(), &compressor).into_array(); let mask = Mask::from_iter([true, false, true]); - let filter_array = FilterArray::new(fsst_array.clone(), mask.clone()).into_array(); + let filter_array = FilterArray::new(fsst_array, mask.clone()).into_array(); let mut ctx = SESSION.create_execution_ctx(); let result = filter_array.execute::(&mut ctx)?; diff --git a/encodings/fsst/src/ops.rs b/encodings/fsst/src/ops.rs index ba6c709d65e..d55e8a61584 100644 --- a/encodings/fsst/src/ops.rs +++ b/encodings/fsst/src/ops.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::arrays::varbin::varbin_scalar; use vortex_array::scalar::Scalar; @@ -10,10 +11,13 @@ use vortex_error::VortexExpect; use vortex_error::VortexResult; use crate::FSST; -use crate::FSSTArray; impl OperationsVTable for FSST { - fn scalar_at(array: &FSSTArray, index: usize, _ctx: &mut ExecutionCtx) -> VortexResult { + fn scalar_at( + array: ArrayView<'_, FSST>, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { let compressed = array.codes().scalar_at(index)?; let binary_datum = compressed.as_binary().value().vortex_expect("non-null"); diff --git a/encodings/fsst/src/slice.rs b/encodings/fsst/src/slice.rs index a010a703250..b30e574e9bd 100644 --- a/encodings/fsst/src/slice.rs +++ b/encodings/fsst/src/slice.rs @@ -4,6 +4,7 @@ use std::ops::Range; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::arrays::VarBin; use vortex_array::arrays::slice::SliceReduce; @@ -11,18 +12,20 @@ use vortex_error::VortexResult; use vortex_error::vortex_err; use crate::FSST; -use crate::FSSTArray; +use crate::FSSTData; impl SliceReduce for FSST { - fn slice(array: &Self::Array, range: Range) -> VortexResult> { + fn slice(array: ArrayView<'_, Self>, range: Range) -> VortexResult> { // SAFETY: slicing the `codes` leaves the symbol table intact Ok(Some( unsafe { - FSSTArray::new_unchecked( + FSSTData::new_unchecked( array.dtype().clone(), array.symbols().clone(), array.symbol_lengths().clone(), - VarBin::_slice(array.codes().as_::(), range.clone())? + array + .codes() + .slice(range.clone())? .try_into::() .map_err(|_| vortex_err!("cannot fail conversion"))?, array.uncompressed_lengths().slice(range)?, diff --git a/encodings/fsst/src/test_utils.rs b/encodings/fsst/src/test_utils.rs index 701a41828c5..421a5d4c3f5 100644 --- a/encodings/fsst/src/test_utils.rs +++ b/encodings/fsst/src/test_utils.rs @@ -43,7 +43,9 @@ pub fn gen_fsst_test_data(len: usize, avg_str_len: usize, unique_chars: u8) -> A ); let compressor = fsst_train_compressor(&varbin); - fsst_compress(varbin, &compressor).into_array() + let len = varbin.len(); + let dtype = varbin.dtype().clone(); + fsst_compress(varbin, len, &dtype, &compressor).into_array() } pub fn gen_dict_fsst_test_data( @@ -137,7 +139,9 @@ pub fn generate_url_data_n(n: usize) -> VarBinArray { pub fn make_fsst_urls(n: usize) -> FSSTArray { let varbin = generate_url_data_n(n); let compressor = fsst_train_compressor(&varbin); - fsst_compress(varbin, &compressor) + let len = varbin.len(); + let dtype = varbin.dtype().clone(); + fsst_compress(varbin, len, &dtype, &compressor) } // --------------------------------------------------------------------------- @@ -231,7 +235,9 @@ pub fn make_fsst_clickbench_urls(n: usize) -> FSSTArray { DType::Utf8(Nullability::NonNullable), ); let compressor = fsst_train_compressor(&varbin); - fsst_compress(varbin, &compressor) + let len = varbin.len(); + let dtype = varbin.dtype().clone(); + fsst_compress(varbin, len, &dtype, &compressor) } // --------------------------------------------------------------------------- @@ -297,7 +303,9 @@ pub fn make_fsst_short_urls(n: usize) -> FSSTArray { DType::Utf8(Nullability::NonNullable), ); let compressor = fsst_train_compressor(&varbin); - fsst_compress(varbin, &compressor) + let len = varbin.len(); + let dtype = varbin.dtype().clone(); + fsst_compress(varbin, len, &dtype, &compressor) } // --------------------------------------------------------------------------- @@ -367,7 +375,9 @@ pub fn make_fsst_log_lines(n: usize) -> FSSTArray { DType::Utf8(Nullability::NonNullable), ); let compressor = fsst_train_compressor(&varbin); - fsst_compress(varbin, &compressor) + let len = varbin.len(); + let dtype = varbin.dtype().clone(); + fsst_compress(varbin, len, &dtype, &compressor) } // --------------------------------------------------------------------------- @@ -424,7 +434,9 @@ pub fn make_fsst_json_strings(n: usize) -> FSSTArray { DType::Utf8(Nullability::NonNullable), ); let compressor = fsst_train_compressor(&varbin); - fsst_compress(varbin, &compressor) + let len = varbin.len(); + let dtype = varbin.dtype().clone(); + fsst_compress(varbin, len, &dtype, &compressor) } // --------------------------------------------------------------------------- @@ -494,7 +506,9 @@ pub fn make_fsst_file_paths(n: usize) -> FSSTArray { DType::Utf8(Nullability::NonNullable), ); let compressor = fsst_train_compressor(&varbin); - fsst_compress(varbin, &compressor) + let len = varbin.len(); + let dtype = varbin.dtype().clone(); + fsst_compress(varbin, len, &dtype, &compressor) } // --------------------------------------------------------------------------- @@ -545,7 +559,9 @@ pub fn make_fsst_emails(n: usize) -> FSSTArray { DType::Utf8(Nullability::NonNullable), ); let compressor = fsst_train_compressor(&varbin); - fsst_compress(varbin, &compressor) + let len = varbin.len(); + let dtype = varbin.dtype().clone(); + fsst_compress(varbin, len, &dtype, &compressor) } // --------------------------------------------------------------------------- @@ -582,5 +598,7 @@ pub fn make_fsst_rare_match(n: usize) -> FSSTArray { DType::Utf8(Nullability::NonNullable), ); let compressor = fsst_train_compressor(&varbin); - fsst_compress(varbin, &compressor) + let len = varbin.len(); + let dtype = varbin.dtype().clone(); + fsst_compress(varbin, len, &dtype, &compressor) } diff --git a/encodings/fsst/src/tests.rs b/encodings/fsst/src/tests.rs index e5a7b2f327c..fb45ed31629 100644 --- a/encodings/fsst/src/tests.rs +++ b/encodings/fsst/src/tests.rs @@ -2,7 +2,6 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::ToCanonical; use vortex_array::arrays::varbin::builder::VarBinBuilder; @@ -28,7 +27,9 @@ pub(crate) fn build_fsst_array() -> ArrayRef { let input_array = input_array.finish(DType::Utf8(Nullability::NonNullable)); let compressor = fsst_train_compressor(&input_array); - fsst_compress(input_array, &compressor).into_array() + let len = input_array.len(); + let dtype = input_array.dtype().clone(); + fsst_compress(input_array, len, &dtype, &compressor).into_array() } #[test] @@ -96,5 +97,5 @@ fn test_fsst_array_ops() { // test to_canonical let canonical_array = fsst_array.to_varbinview().into_array(); - assert_arrays_eq!(fsst_array.to_array(), canonical_array); + assert_arrays_eq!(fsst_array, canonical_array); } diff --git a/encodings/parquet-variant/src/array.rs b/encodings/parquet-variant/src/array.rs index c886fddc660..f07ae0e847f 100644 --- a/encodings/parquet-variant/src/array.rs +++ b/encodings/parquet-variant/src/array.rs @@ -62,21 +62,21 @@ pub(crate) const SLOT_NAMES: [&str; NUM_SLOTS] = ["validity", "metadata", "value /// 3. **Typed-value child nullability**: the `typed_value` child carries its own `DType` /// (which includes nullability). #[derive(Clone, Debug)] -pub struct ParquetVariantArray { +pub struct ParquetVariantData { pub(crate) dtype: DType, pub(crate) validity: Validity, pub(crate) slots: Vec>, pub(crate) stats_set: ArrayStats, } -impl ParquetVariantArray { +impl ParquetVariantData { /// Creates a Parquet Variant array with explicit outer validity. pub fn try_new( validity: Validity, metadata: ArrayRef, value: Option, typed_value: Option, - ) -> VortexResult { + ) -> VortexResult { vortex_ensure!( value.is_some() || typed_value.is_some(), "at least one of value or typed_value must be present" @@ -168,7 +168,7 @@ impl ParquetVariantArray { .map(|tv| ArrayRef::from_arrow(tv.as_ref(), typed_value_nullable)) .transpose()?; - let pv = ParquetVariantArray::try_new(validity, metadata, value, typed_value)?; + let pv = ParquetVariantData::try_new(validity, metadata, value, typed_value)?; Ok(VariantArray::new(pv.into_array()).into_array()) } @@ -242,17 +242,14 @@ mod tests { use vortex_error::VortexResult; use crate::ParquetVariant; - use crate::ParquetVariantArray; + use crate::ParquetVariantData; fn assert_arrow_variant_storage_roundtrip(struct_array: StructArray) -> VortexResult<()> { let arrow_variant = ArrowVariantArray::try_new(&struct_array).unwrap(); - let vortex_arr = ParquetVariantArray::from_arrow_variant(&arrow_variant)?; - let inner = vortex_arr - .as_opt::() - .unwrap() - .child() - .as_opt::() - .unwrap(); + let vortex_arr = ParquetVariantData::from_arrow_variant(&arrow_variant)?; + let variant_view = vortex_arr.as_opt::().unwrap(); + let child = variant_view.child(); + let inner = child.as_opt::().unwrap(); let mut ctx = LEGACY_SESSION.create_execution_ctx(); let roundtripped = inner.to_arrow(&mut ctx)?; @@ -300,7 +297,7 @@ mod tests { builder.append_variant(PqVariant::from(true)); let arrow_variant = builder.build(); - let vortex_arr = ParquetVariantArray::from_arrow_variant(&arrow_variant)?; + let vortex_arr = ParquetVariantData::from_arrow_variant(&arrow_variant)?; assert_eq!(vortex_arr.len(), 3); assert_eq!( @@ -333,7 +330,7 @@ mod tests { let arrow_variant = ArrowVariantArray::try_new(&struct_array).unwrap(); - let vortex_arr = ParquetVariantArray::from_arrow_variant(&arrow_variant)?; + let vortex_arr = ParquetVariantData::from_arrow_variant(&arrow_variant)?; assert_eq!(vortex_arr.len(), 3); assert_eq!( vortex_arr.dtype(), @@ -352,7 +349,7 @@ mod tests { let metadata = VarBinViewArray::from_iter_bin([b"\x01\x00", b"\x01\x00"]).into_array(); let value = VarBinViewArray::from_iter_bin([b"\x10", b"\x11"]).into_array(); let pv_array = - ParquetVariantArray::try_new(Validity::NonNullable, metadata, Some(value), None)?; + ParquetVariantData::try_new(Validity::NonNullable, metadata, Some(value), None)?; let mut ctx = LEGACY_SESSION.create_execution_ctx(); let variant_arr = pv_array.to_arrow(&mut ctx)?; @@ -369,7 +366,7 @@ mod tests { let metadata = VarBinViewArray::from_iter_bin([b"\x01\x00", b"\x01\x00"]).into_array(); let value = VarBinViewArray::from_iter_bin([b"\x10", b"\x11"]).into_array(); let typed_value = buffer![1i32, 2].into_array(); - let pv_array = ParquetVariantArray::try_new( + let pv_array = ParquetVariantData::try_new( Validity::NonNullable, metadata, Some(value), diff --git a/encodings/parquet-variant/src/kernel.rs b/encodings/parquet-variant/src/kernel.rs index 08698b0f6b0..d921f97a325 100644 --- a/encodings/parquet-variant/src/kernel.rs +++ b/encodings/parquet-variant/src/kernel.rs @@ -4,7 +4,7 @@ use std::ops::Range; use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::dict::TakeExecute; @@ -18,7 +18,7 @@ use vortex_error::VortexResult; use vortex_mask::Mask; use crate::ParquetVariant; -use crate::array::ParquetVariantArray; +use crate::array::ParquetVariantData; pub(crate) static PARENT_KERNELS: ParentKernelSet = ParentKernelSet::new(&[ ParentKernelSet::lift(&FilterExecuteAdaptor(ParquetVariant)), @@ -28,7 +28,7 @@ pub(crate) static PARENT_KERNELS: ParentKernelSet = ParentKernel impl SliceKernel for ParquetVariant { fn slice( - array: &ParquetVariantArray, + array: ArrayView<'_, Self>, range: Range, _ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -43,14 +43,14 @@ impl SliceKernel for ParquetVariant { .map(|tv| tv.slice(range)) .transpose()?; Ok(Some( - ParquetVariantArray::try_new(validity, metadata, value, typed_value)?.into_array(), + ParquetVariantData::try_new(validity, metadata, value, typed_value)?.into_array(), )) } } impl FilterKernel for ParquetVariant { fn filter( - array: &ParquetVariantArray, + array: ArrayView<'_, Self>, mask: &Mask, _ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -65,29 +65,29 @@ impl FilterKernel for ParquetVariant { .map(|tv| tv.filter(mask.clone())) .transpose()?; Ok(Some( - ParquetVariantArray::try_new(validity, metadata, value, typed_value)?.into_array(), + ParquetVariantData::try_new(validity, metadata, value, typed_value)?.into_array(), )) } } impl TakeExecute for ParquetVariant { fn take( - array: &ParquetVariantArray, + array: ArrayView<'_, Self>, indices: &ArrayRef, _ctx: &mut ExecutionCtx, ) -> VortexResult> { let validity = array.validity.take(indices)?; - let metadata = array.metadata_array().take(indices.to_array())?; + let metadata = array.metadata_array().take(indices.clone())?; let value = array .value_array() - .map(|v| v.take(indices.to_array())) + .map(|v| v.take(indices.clone())) .transpose()?; let typed_value = array .typed_value_array() - .map(|tv| tv.take(indices.to_array())) + .map(|tv| tv.take(indices.clone())) .transpose()?; Ok(Some( - ParquetVariantArray::try_new(validity, metadata, value, typed_value)?.into_array(), + ParquetVariantData::try_new(validity, metadata, value, typed_value)?.into_array(), )) } } @@ -105,13 +105,12 @@ mod tests { use parquet_variant_compute::VariantArray as ArrowVariantArray; use parquet_variant_compute::VariantArrayBuilder; use vortex_array::ArrayRef; - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::arrays::PrimitiveArray; use vortex_error::VortexResult; use vortex_mask::Mask; - use crate::ParquetVariantArray; + use crate::ParquetVariantData; fn make_unshredded_array() -> VortexResult { let mut builder = VariantArrayBuilder::new(4); @@ -119,7 +118,7 @@ mod tests { builder.append_variant(PqVariant::from("hello")); builder.append_variant(PqVariant::from(true)); builder.append_variant(PqVariant::from(99i64)); - ParquetVariantArray::from_arrow_variant(&builder.build()) + ParquetVariantData::from_arrow_variant(&builder.build()) } fn make_nullable_array() -> VortexResult { @@ -137,7 +136,7 @@ mod tests { ) .unwrap(); let arrow_variant = ArrowVariantArray::try_new(&null_struct).unwrap(); - ParquetVariantArray::from_arrow_variant(&arrow_variant) + ParquetVariantData::from_arrow_variant(&arrow_variant) } #[test] @@ -247,7 +246,7 @@ mod tests { ) .unwrap(); let arrow_variant = ArrowVariantArray::try_new(&struct_array).unwrap(); - let arr = ParquetVariantArray::from_arrow_variant(&arrow_variant)?; + let arr = ParquetVariantData::from_arrow_variant(&arrow_variant)?; let sliced = arr.slice(1..3)?; assert_eq!(sliced.len(), 2); diff --git a/encodings/parquet-variant/src/lib.rs b/encodings/parquet-variant/src/lib.rs index 6188f8fe727..3f1f7cb68a6 100644 --- a/encodings/parquet-variant/src/lib.rs +++ b/encodings/parquet-variant/src/lib.rs @@ -30,6 +30,7 @@ mod operations; mod validity; mod vtable; -pub use array::ParquetVariantArray; +pub use array::ParquetVariantData; pub use vtable::ParquetVariant; +pub use vtable::ParquetVariantArray; pub use vtable::ParquetVariantMetadata; diff --git a/encodings/parquet-variant/src/operations.rs b/encodings/parquet-variant/src/operations.rs index c11d1b370ab..6ccbfeb6d75 100644 --- a/encodings/parquet-variant/src/operations.rs +++ b/encodings/parquet-variant/src/operations.rs @@ -6,6 +6,7 @@ use std::sync::Arc; use chrono::Timelike; use parquet_variant::Variant as PqVariant; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::dtype::DType; use vortex_array::dtype::DecimalDType; @@ -25,7 +26,6 @@ use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_error::vortex_err; -use crate::array::ParquetVariantArray; use crate::vtable::ParquetVariant; impl OperationsVTable for ParquetVariant { @@ -38,7 +38,7 @@ impl OperationsVTable for ParquetVariant { /// | NULL | non-NULL | Perfectly shredded: use typed_value directly | /// | non-NULL | non-NULL | Partially shredded object (typed_value takes priority) | fn scalar_at( - array: &ParquetVariantArray, + array: ArrayView<'_, ParquetVariant>, index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { @@ -355,7 +355,7 @@ mod tests { use vortex_error::VortexResult; use crate::ParquetVariant; - use crate::ParquetVariantArray; + use crate::ParquetVariantData; use crate::operations::parquet_variant_to_scalar; fn binary_view_array(values: &[&[u8]]) -> ArrowArrayRef { @@ -370,7 +370,7 @@ mod tests { arrow_variant: &ArrowVariantArray, rows: impl IntoIterator, ) -> VortexResult<()> { - let vortex_arr = ParquetVariantArray::from_arrow_variant(arrow_variant)?; + let vortex_arr = ParquetVariantData::from_arrow_variant(arrow_variant)?; for index in rows { let expected_inner = @@ -402,7 +402,7 @@ mod tests { .unwrap(); let arrow_variant = ArrowVariantArray::try_new(&null_struct).unwrap(); - let vortex_arr = ParquetVariantArray::from_arrow_variant(&arrow_variant)?; + let vortex_arr = ParquetVariantData::from_arrow_variant(&arrow_variant)?; assert_eq!(vortex_arr.dtype(), &DType::Variant(Nullability::Nullable)); @@ -431,18 +431,15 @@ mod tests { .unwrap(); let arrow_variant = ArrowVariantArray::try_new(&null_struct).unwrap(); - let vortex_arr = ParquetVariantArray::from_arrow_variant(&arrow_variant)?; + let vortex_arr = ParquetVariantData::from_arrow_variant(&arrow_variant)?; assert_eq!(vortex_arr.dtype(), &DType::Variant(Nullability::Nullable)); assert!(vortex_arr.scalar_at(0)?.is_null()); assert!(vortex_arr.scalar_at(1)?.is_null()); - let inner_pv = vortex_arr - .as_opt::() - .unwrap() - .child() - .as_opt::() - .unwrap(); + let variant_view = vortex_arr.as_opt::().unwrap(); + let child = variant_view.child(); + let inner_pv = child.as_opt::().unwrap(); let mut ctx = vortex_array::LEGACY_SESSION.create_execution_ctx(); let roundtripped = inner_pv.to_arrow(&mut ctx)?; assert_eq!(roundtripped.inner().null_count(), 2); @@ -457,7 +454,7 @@ mod tests { builder.append_variant(PqVariant::from(2i32)); let arrow_variant = builder.build(); - let vortex_arr = ParquetVariantArray::from_arrow_variant(&arrow_variant)?; + let vortex_arr = ParquetVariantData::from_arrow_variant(&arrow_variant)?; assert_eq!( vortex_arr.dtype(), @@ -577,7 +574,7 @@ mod tests { .unwrap(); let arrow_variant = ArrowVariantArray::try_new(&struct_array).unwrap(); - let vortex_arr = ParquetVariantArray::from_arrow_variant(&arrow_variant)?; + let vortex_arr = ParquetVariantData::from_arrow_variant(&arrow_variant)?; let row0 = vortex_arr.scalar_at(0)?; let row0 = row0.as_variant().value().unwrap().as_list(); @@ -674,7 +671,7 @@ mod tests { .unwrap(); let arrow_variant = ArrowVariantArray::try_new(&struct_array).unwrap(); - let vortex_arr = ParquetVariantArray::from_arrow_variant(&arrow_variant)?; + let vortex_arr = ParquetVariantData::from_arrow_variant(&arrow_variant)?; let object = vortex_arr.scalar_at(0)?; let object = object.as_variant().value().unwrap().as_struct(); diff --git a/encodings/parquet-variant/src/validity.rs b/encodings/parquet-variant/src/validity.rs index 7d163663517..3f7b33c6eba 100644 --- a/encodings/parquet-variant/src/validity.rs +++ b/encodings/parquet-variant/src/validity.rs @@ -4,10 +4,10 @@ use vortex_array::validity::Validity; use vortex_array::vtable::ValidityHelper; -use crate::array::ParquetVariantArray; +use crate::array::ParquetVariantData; -impl ValidityHelper for ParquetVariantArray { - fn validity(&self) -> Validity { - self.validity.clone() +impl ValidityHelper for ParquetVariantData { + fn validity(&self) -> &Validity { + &self.validity } } diff --git a/encodings/parquet-variant/src/vtable.rs b/encodings/parquet-variant/src/vtable.rs index 7023121313a..8815734e0c9 100644 --- a/encodings/parquet-variant/src/vtable.rs +++ b/encodings/parquet-variant/src/vtable.rs @@ -3,12 +3,14 @@ use std::hash::Hash; use std::hash::Hasher; -use std::sync::Arc; use prost::Message; +use vortex_array::Array; use vortex_array::ArrayEq; use vortex_array::ArrayHash; +use vortex_array::ArrayId; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::ExecutionResult; use vortex_array::IntoArray; @@ -18,11 +20,9 @@ use vortex_array::buffer::BufferHandle; use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; use vortex_array::serde::ArrayChildren; -use vortex_array::stats::StatsSetRef; +use vortex_array::stats::ArrayStats; use vortex_array::validity::Validity; use vortex_array::vtable; -use vortex_array::vtable::Array; -use vortex_array::vtable::ArrayId; use vortex_array::vtable::VTable; use vortex_array::vtable::ValidityVTableFromValidityHelper; use vortex_error::VortexResult; @@ -33,7 +33,7 @@ use vortex_proto::dtype as pb; use vortex_session::VortexSession; use crate::array::NUM_SLOTS; -use crate::array::ParquetVariantArray; +use crate::array::ParquetVariantData; use crate::array::SLOT_NAMES; use crate::array::VALIDITY_SLOT; use crate::kernel::PARENT_KERNELS; @@ -76,15 +76,15 @@ struct ParquetVariantMetadataProto { pub value_nullable: bool, } -vtable!(ParquetVariant); +vtable!(ParquetVariant, ParquetVariant, ParquetVariantData); impl VTable for ParquetVariant { - type Array = ParquetVariantArray; + type ArrayData = ParquetVariantData; type Metadata = ParquetVariantMetadata; type OperationsVTable = Self; type ValidityVTable = ValidityVTableFromValidityHelper; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &Self::ArrayData) -> &Self { &ParquetVariant } @@ -92,19 +92,19 @@ impl VTable for ParquetVariant { Self::ID } - fn len(array: &ParquetVariantArray) -> usize { + fn len(array: &ParquetVariantData) -> usize { array.metadata_array().len() } - fn dtype(array: &ParquetVariantArray) -> &DType { + fn dtype(array: &ParquetVariantData) -> &DType { &array.dtype } - fn stats(array: &ParquetVariantArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &ParquetVariantData) -> &ArrayStats { + &array.stats_set } - fn array_hash(array: &ParquetVariantArray, state: &mut H, precision: Precision) { + fn array_hash(array: &ParquetVariantData, state: &mut H, precision: Precision) { array.validity.array_hash(state, precision); array.metadata_array().array_hash(state, precision); // Hash discriminators so that (value=Some, typed_value=None) and @@ -120,8 +120,8 @@ impl VTable for ParquetVariant { } fn array_eq( - array: &ParquetVariantArray, - other: &ParquetVariantArray, + array: &ParquetVariantData, + other: &ParquetVariantData, precision: Precision, ) -> bool { if !array.validity.array_eq(&other.validity, precision) @@ -147,27 +147,27 @@ impl VTable for ParquetVariant { } } - fn nbuffers(_array: &ParquetVariantArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 0 } - fn buffer(_array: &ParquetVariantArray, idx: usize) -> BufferHandle { + fn buffer(_array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { vortex_panic!("ParquetVariantArray buffer index {idx} out of bounds") } - fn buffer_name(_array: &ParquetVariantArray, _idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, _idx: usize) -> Option { None } - fn slots(array: &ParquetVariantArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &ParquetVariantArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn metadata(array: &ParquetVariantArray) -> VortexResult { + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { Ok(ParquetVariantMetadata { has_value: array.value_array().is_some(), value_nullable: array.value_array().is_some_and(|v| v.dtype().is_nullable()), @@ -216,7 +216,7 @@ impl VTable for ParquetVariant { metadata: &Self::Metadata, _buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { vortex_ensure!(matches!(dtype, DType::Variant(_)), "Expected Variant DType"); let has_typed_value = metadata.typed_value_dtype.is_some(); vortex_ensure!( @@ -266,10 +266,10 @@ impl VTable for ParquetVariant { None }; - ParquetVariantArray::try_new(validity, variant_metadata, value, typed_value) + ParquetVariantData::try_new(validity, variant_metadata, value, typed_value) } - fn with_slots(array: &mut Self::Array, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "ParquetVariantArray expects {} slots, got {}", @@ -284,14 +284,14 @@ impl VTable for ParquetVariant { Ok(()) } - fn execute(array: Arc>, _ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, _ctx: &mut ExecutionCtx) -> VortexResult { Ok(ExecutionResult::done( VariantArray::new(array.as_ref().clone().into_array()).into_array(), )) } fn execute_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, @@ -324,7 +324,7 @@ mod tests { use vortex_session::registry::ReadContext; use crate::ParquetVariant; - use crate::ParquetVariantArray; + use crate::ParquetVariantData; fn roundtrip(array: ArrayRef) -> ArrayRef { let dtype = array.dtype().clone(); @@ -357,7 +357,7 @@ mod tests { let inner_metadata = VarBinViewArray::from_iter_bin([b"\x01\x00", b"\x01\x00", b"\x01\x00"]).into_array(); let inner_value = VarBinViewArray::from_iter_bin([b"\x02", b"\x03", b"\x04"]).into_array(); - let inner_pv = ParquetVariantArray::try_new( + let inner_pv = ParquetVariantData::try_new( Validity::NonNullable, inner_metadata, Some(inner_value), @@ -366,7 +366,7 @@ mod tests { .unwrap(); let typed_value = VariantArray::new(inner_pv.into_array()).into_array(); - let outer_pv = ParquetVariantArray::try_new( + let outer_pv = ParquetVariantData::try_new( Validity::NonNullable, outer_metadata, None, @@ -389,7 +389,7 @@ mod tests { let value = VarBinViewArray::from_iter_bin([b"\x10", b"\x11", b"\x12"]).into_array(); let validity = Validity::from(BitBuffer::from_iter([true, false, true])); - let pv = ParquetVariantArray::try_new(validity, metadata, Some(value), None).unwrap(); + let pv = ParquetVariantData::try_new(validity, metadata, Some(value), None).unwrap(); let array = pv.into_array(); let decoded = roundtrip(array.clone()); @@ -406,7 +406,7 @@ mod tests { VarBinViewArray::from_iter_bin([b"\x01\x00", b"\x01\x00", b"\x01\x00"]).into_array(); let typed_value = buffer![10i32, 20, 30].into_array(); - let outer_pv = ParquetVariantArray::try_new( + let outer_pv = ParquetVariantData::try_new( Validity::NonNullable, outer_metadata, None, diff --git a/encodings/pco/public-api.lock b/encodings/pco/public-api.lock index 207432082d8..21d9c41cec2 100644 --- a/encodings/pco/public-api.lock +++ b/encodings/pco/public-api.lock @@ -4,7 +4,9 @@ pub struct vortex_pco::Pco impl vortex_pco::Pco -pub const vortex_pco::Pco::ID: vortex_array::vtable::dyn_::ArrayId +pub const vortex_pco::Pco::ID: vortex_array::array::ArrayId + +pub fn vortex_pco::Pco::from_primitive(parray: &vortex_array::arrays::primitive::vtable::PrimitiveArray, level: usize, values_per_page: usize) -> vortex_error::VortexResult impl core::clone::Clone for vortex_pco::Pco @@ -14,133 +16,125 @@ impl core::fmt::Debug for vortex_pco::Pco pub fn vortex_pco::Pco::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::slice::SliceReduce for vortex_pco::Pco - -pub fn vortex_pco::Pco::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_pco::Pco - -pub fn vortex_pco::Pco::cast(array: &vortex_pco::PcoArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +impl vortex_array::array::vtable::VTable for vortex_pco::Pco -impl vortex_array::vtable::VTable for vortex_pco::Pco - -pub type vortex_pco::Pco::Array = vortex_pco::PcoArray +pub type vortex_pco::Pco::ArrayData = vortex_pco::PcoData pub type vortex_pco::Pco::Metadata = vortex_array::metadata::ProstMetadata pub type vortex_pco::Pco::OperationsVTable = vortex_pco::Pco -pub type vortex_pco::Pco::ValidityVTable = vortex_array::vtable::validity::ValidityVTableFromValiditySliceHelper +pub type vortex_pco::Pco::ValidityVTable = vortex_array::array::vtable::validity::ValidityVTableFromValiditySliceHelper -pub fn vortex_pco::Pco::array_eq(array: &vortex_pco::PcoArray, other: &vortex_pco::PcoArray, precision: vortex_array::hash::Precision) -> bool +pub fn vortex_pco::Pco::array_eq(array: &vortex_pco::PcoData, other: &vortex_pco::PcoData, precision: vortex_array::hash::Precision) -> bool -pub fn vortex_pco::Pco::array_hash(array: &vortex_pco::PcoArray, state: &mut H, precision: vortex_array::hash::Precision) +pub fn vortex_pco::Pco::array_hash(array: &vortex_pco::PcoData, state: &mut H, precision: vortex_array::hash::Precision) -pub fn vortex_pco::Pco::buffer(array: &vortex_pco::PcoArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_pco::Pco::buffer(array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_pco::Pco::buffer_name(array: &vortex_pco::PcoArray, idx: usize) -> core::option::Option +pub fn vortex_pco::Pco::buffer_name(array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_pco::Pco::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_pco::Pco::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult pub fn vortex_pco::Pco::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_pco::Pco::dtype(array: &vortex_pco::PcoArray) -> &vortex_array::dtype::DType +pub fn vortex_pco::Pco::dtype(array: &vortex_pco::PcoData) -> &vortex_array::dtype::DType -pub fn vortex_pco::Pco::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_pco::Pco::execute(array: vortex_array::array::typed::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_pco::Pco::id(&self) -> vortex_array::vtable::dyn_::ArrayId +pub fn vortex_pco::Pco::id(&self) -> vortex_array::array::ArrayId -pub fn vortex_pco::Pco::len(array: &vortex_pco::PcoArray) -> usize +pub fn vortex_pco::Pco::len(array: &vortex_pco::PcoData) -> usize -pub fn vortex_pco::Pco::metadata(array: &vortex_pco::PcoArray) -> vortex_error::VortexResult +pub fn vortex_pco::Pco::metadata(array: vortex_array::array::view::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_pco::Pco::nbuffers(array: &vortex_pco::PcoArray) -> usize +pub fn vortex_pco::Pco::nbuffers(array: vortex_array::array::view::ArrayView<'_, Self>) -> usize -pub fn vortex_pco::Pco::reduce_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_pco::Pco::reduce_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> pub fn vortex_pco::Pco::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_pco::Pco::slot_name(_array: &vortex_pco::PcoArray, idx: usize) -> alloc::string::String +pub fn vortex_pco::Pco::slot_name(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_pco::Pco::slots(array: &vortex_pco::PcoArray) -> &[core::option::Option] +pub fn vortex_pco::Pco::slots(array: vortex_array::array::view::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_pco::Pco::stats(array: &vortex_pco::PcoArray) -> vortex_array::stats::array::StatsSetRef<'_> +pub fn vortex_pco::Pco::stats(array: &vortex_pco::PcoData) -> &vortex_array::stats::array::ArrayStats -pub fn vortex_pco::Pco::vtable(_array: &Self::Array) -> &Self +pub fn vortex_pco::Pco::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_pco::Pco::with_slots(array: &mut vortex_pco::PcoArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_pco::Pco::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl vortex_array::vtable::operations::OperationsVTable for vortex_pco::Pco +impl vortex_array::array::vtable::operations::OperationsVTable for vortex_pco::Pco -pub fn vortex_pco::Pco::scalar_at(array: &vortex_pco::PcoArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_pco::Pco::scalar_at(array: vortex_array::array::view::ArrayView<'_, vortex_pco::Pco>, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub struct vortex_pco::PcoArray +impl vortex_array::arrays::slice::SliceReduce for vortex_pco::Pco -impl vortex_pco::PcoArray +pub fn vortex_pco::Pco::slice(array: vortex_array::array::view::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_pco::PcoArray::decompress(&self, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_pco::Pco -pub fn vortex_pco::PcoArray::from_array(array: vortex_array::array::ArrayRef, level: usize, nums_per_page: usize) -> vortex_error::VortexResult +pub fn vortex_pco::Pco::cast(array: vortex_array::array::view::ArrayView<'_, Self>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_pco::PcoArray::from_primitive(parray: &vortex_array::arrays::primitive::array::PrimitiveArray, level: usize, values_per_page: usize) -> vortex_error::VortexResult +pub struct vortex_pco::PcoChunkInfo -pub fn vortex_pco::PcoArray::new(chunk_metas: alloc::vec::Vec, pages: alloc::vec::Vec, dtype: vortex_array::dtype::DType, metadata: vortex_pco::PcoMetadata, len: usize, validity: vortex_array::validity::Validity) -> Self +pub vortex_pco::PcoChunkInfo::pages: alloc::vec::Vec -impl vortex_pco::PcoArray +impl core::clone::Clone for vortex_pco::PcoChunkInfo -pub fn vortex_pco::PcoArray::to_array(&self) -> vortex_array::array::ArrayRef +pub fn vortex_pco::PcoChunkInfo::clone(&self) -> vortex_pco::PcoChunkInfo -impl core::clone::Clone for vortex_pco::PcoArray +impl core::default::Default for vortex_pco::PcoChunkInfo -pub fn vortex_pco::PcoArray::clone(&self) -> vortex_pco::PcoArray +pub fn vortex_pco::PcoChunkInfo::default() -> Self -impl core::convert::AsRef for vortex_pco::PcoArray +impl core::fmt::Debug for vortex_pco::PcoChunkInfo -pub fn vortex_pco::PcoArray::as_ref(&self) -> &dyn vortex_array::array::DynArray +pub fn vortex_pco::PcoChunkInfo::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::convert::From for vortex_array::array::ArrayRef +impl prost::message::Message for vortex_pco::PcoChunkInfo -pub fn vortex_array::array::ArrayRef::from(value: vortex_pco::PcoArray) -> vortex_array::array::ArrayRef +pub fn vortex_pco::PcoChunkInfo::clear(&mut self) -impl core::fmt::Debug for vortex_pco::PcoArray +pub fn vortex_pco::PcoChunkInfo::encoded_len(&self) -> usize -pub fn vortex_pco::PcoArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub struct vortex_pco::PcoData -impl core::ops::deref::Deref for vortex_pco::PcoArray +impl vortex_pco::PcoData -pub type vortex_pco::PcoArray::Target = dyn vortex_array::array::DynArray +pub fn vortex_pco::PcoData::decompress(&self, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_pco::PcoArray::deref(&self) -> &Self::Target +pub fn vortex_pco::PcoData::dtype(&self) -> &vortex_array::dtype::DType -impl vortex_array::array::IntoArray for vortex_pco::PcoArray +pub fn vortex_pco::PcoData::from_array(array: vortex_array::array::erased::ArrayRef, level: usize, nums_per_page: usize) -> vortex_error::VortexResult -pub fn vortex_pco::PcoArray::into_array(self) -> vortex_array::array::ArrayRef +pub fn vortex_pco::PcoData::from_primitive(parray: &vortex_array::arrays::primitive::vtable::PrimitiveArray, level: usize, values_per_page: usize) -> vortex_error::VortexResult -impl vortex_array::vtable::validity::ValiditySliceHelper for vortex_pco::PcoArray +pub fn vortex_pco::PcoData::is_empty(&self) -> bool -pub fn vortex_pco::PcoArray::unsliced_validity_and_slice(&self) -> (&vortex_array::validity::Validity, usize, usize) +pub fn vortex_pco::PcoData::len(&self) -> usize -pub struct vortex_pco::PcoChunkInfo +pub fn vortex_pco::PcoData::new(chunk_metas: alloc::vec::Vec, pages: alloc::vec::Vec, dtype: vortex_array::dtype::DType, metadata: vortex_pco::PcoMetadata, len: usize, validity: vortex_array::validity::Validity) -> Self -pub vortex_pco::PcoChunkInfo::pages: alloc::vec::Vec +impl core::clone::Clone for vortex_pco::PcoData -impl core::clone::Clone for vortex_pco::PcoChunkInfo +pub fn vortex_pco::PcoData::clone(&self) -> vortex_pco::PcoData -pub fn vortex_pco::PcoChunkInfo::clone(&self) -> vortex_pco::PcoChunkInfo +impl core::convert::From for vortex_array::array::erased::ArrayRef -impl core::default::Default for vortex_pco::PcoChunkInfo +pub fn vortex_array::array::erased::ArrayRef::from(value: vortex_pco::PcoData) -> vortex_array::array::erased::ArrayRef -pub fn vortex_pco::PcoChunkInfo::default() -> Self +impl core::fmt::Debug for vortex_pco::PcoData -impl core::fmt::Debug for vortex_pco::PcoChunkInfo +pub fn vortex_pco::PcoData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_pco::PcoChunkInfo::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl vortex_array::array::IntoArray for vortex_pco::PcoData -impl prost::message::Message for vortex_pco::PcoChunkInfo +pub fn vortex_pco::PcoData::into_array(self) -> vortex_array::array::erased::ArrayRef -pub fn vortex_pco::PcoChunkInfo::clear(&mut self) +impl vortex_array::array::vtable::validity::ValiditySliceHelper for vortex_pco::PcoData -pub fn vortex_pco::PcoChunkInfo::encoded_len(&self) -> usize +pub fn vortex_pco::PcoData::unsliced_validity_and_slice(&self) -> (&vortex_array::validity::Validity, usize, usize) pub struct vortex_pco::PcoMetadata @@ -187,3 +181,5 @@ impl prost::message::Message for vortex_pco::PcoPageInfo pub fn vortex_pco::PcoPageInfo::clear(&mut self) pub fn vortex_pco::PcoPageInfo::encoded_len(&self) -> usize + +pub type vortex_pco::PcoArray = vortex_array::array::typed::Array diff --git a/encodings/pco/src/array.rs b/encodings/pco/src/array.rs index 2859e878afb..1365d8ad087 100644 --- a/encodings/pco/src/array.rs +++ b/encodings/pco/src/array.rs @@ -4,7 +4,6 @@ use std::cmp; use std::fmt::Debug; use std::hash::Hash; -use std::sync::Arc; use pco::ChunkConfig; use pco::PagingSpec; @@ -16,10 +15,12 @@ use pco::wrapped::ChunkDecompressor; use pco::wrapped::FileCompressor; use pco::wrapped::FileDecompressor; use prost::Message; +use vortex_array::Array; use vortex_array::ArrayEq; use vortex_array::ArrayHash; +use vortex_array::ArrayId; use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::ExecutionResult; use vortex_array::IntoArray; @@ -37,11 +38,8 @@ use vortex_array::dtype::half; use vortex_array::scalar::Scalar; use vortex_array::serde::ArrayChildren; use vortex_array::stats::ArrayStats; -use vortex_array::stats::StatsSetRef; use vortex_array::validity::Validity; use vortex_array::vtable; -use vortex_array::vtable::Array; -use vortex_array::vtable::ArrayId; use vortex_array::vtable::OperationsVTable; use vortex_array::vtable::VTable; use vortex_array::vtable::ValiditySliceHelper; @@ -81,16 +79,16 @@ use crate::PcoPageInfo; const VALUES_PER_CHUNK: usize = pco::DEFAULT_MAX_PAGE_N; -vtable!(Pco); +vtable!(Pco, Pco, PcoData); impl VTable for Pco { - type Array = PcoArray; + type ArrayData = PcoData; type Metadata = ProstMetadata; type OperationsVTable = Self; type ValidityVTable = ValidityVTableFromValiditySliceHelper; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &Self::ArrayData) -> &Self { &Pco } @@ -98,20 +96,19 @@ impl VTable for Pco { Self::ID } - fn len(array: &PcoArray) -> usize { + fn len(array: &PcoData) -> usize { array.slice_stop - array.slice_start } - fn dtype(array: &PcoArray) -> &DType { + fn dtype(array: &PcoData) -> &DType { &array.dtype } - fn stats(array: &PcoArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &PcoData) -> &ArrayStats { + &array.stats_set } - fn array_hash(array: &PcoArray, state: &mut H, precision: Precision) { - array.dtype.hash(state); + fn array_hash(array: &PcoData, state: &mut H, precision: Precision) { array.unsliced_validity.array_hash(state, precision); array.unsliced_n_rows.hash(state); array.slice_start.hash(state); @@ -125,11 +122,10 @@ impl VTable for Pco { } } - fn array_eq(array: &PcoArray, other: &PcoArray, precision: Precision) -> bool { - if array.dtype != other.dtype - || !array - .unsliced_validity - .array_eq(&other.unsliced_validity, precision) + fn array_eq(array: &PcoData, other: &PcoData, precision: Precision) -> bool { + if !array + .unsliced_validity + .array_eq(&other.unsliced_validity, precision) || array.unsliced_n_rows != other.unsliced_n_rows || array.slice_start != other.slice_start || array.slice_stop != other.slice_stop @@ -151,11 +147,11 @@ impl VTable for Pco { true } - fn nbuffers(array: &PcoArray) -> usize { + fn nbuffers(array: ArrayView<'_, Self>) -> usize { array.chunk_metas.len() + array.pages.len() } - fn buffer(array: &PcoArray, idx: usize) -> BufferHandle { + fn buffer(array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { if idx < array.chunk_metas.len() { BufferHandle::new_host(array.chunk_metas[idx].clone()) } else { @@ -164,7 +160,7 @@ impl VTable for Pco { } } - fn buffer_name(array: &PcoArray, idx: usize) -> Option { + fn buffer_name(array: ArrayView<'_, Self>, idx: usize) -> Option { if idx < array.chunk_metas.len() { Some(format!("chunk_meta_{idx}")) } else { @@ -172,7 +168,7 @@ impl VTable for Pco { } } - fn metadata(array: &PcoArray) -> VortexResult { + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { Ok(ProstMetadata(array.metadata.clone())) } @@ -196,7 +192,7 @@ impl VTable for Pco { metadata: &Self::Metadata, buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { let validity = if children.is_empty() { Validity::from(dtype.nullability()) } else if children.len() == 1 { @@ -224,7 +220,7 @@ impl VTable for Pco { .sum::(); vortex_ensure!(pages.len() == expected_n_pages); - Ok(PcoArray::new( + Ok(PcoData::new( chunk_metas, pages, dtype.clone(), @@ -234,15 +230,15 @@ impl VTable for Pco { )) } - fn slots(array: &PcoArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &PcoArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn with_slots(array: &mut PcoArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "PcoArray expects {} slots, got {}", @@ -257,12 +253,12 @@ impl VTable for Pco { Ok(()) } - fn execute(array: Arc>, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, ctx: &mut ExecutionCtx) -> VortexResult { Ok(ExecutionResult::done(array.decompress(ctx)?.into_array())) } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { @@ -288,7 +284,7 @@ pub(crate) fn number_type_from_dtype(dtype: &DType) -> NumberType { fn collect_valid(parray: &PrimitiveArray) -> VortexResult { let mask = parray.validity_mask()?; - Ok(parray.clone().into_array().filter(mask)?.to_primitive()) + Ok(parray.filter(mask)?.to_primitive()) } pub(crate) fn vortex_err_from_pco(err: PcoError) -> VortexError { @@ -305,6 +301,15 @@ pub struct Pco; impl Pco { pub const ID: ArrayId = ArrayId::new_ref("vortex.pco"); + + /// Compress a primitive array using pcodec. + pub fn from_primitive( + parray: &PrimitiveArray, + level: usize, + values_per_page: usize, + ) -> VortexResult { + Array::try_from_data(PcoData::from_primitive(parray, level, values_per_page)?) + } } /// The validity bitmap indicating which elements are non-null. @@ -313,7 +318,7 @@ pub(super) const NUM_SLOTS: usize = 1; pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["validity"]; #[derive(Clone, Debug)] -pub struct PcoArray { +pub struct PcoData { pub(crate) chunk_metas: Vec, pub(crate) pages: Vec, pub(crate) metadata: PcoMetadata, @@ -326,7 +331,7 @@ pub struct PcoArray { slice_stop: usize, } -impl PcoArray { +impl PcoData { pub fn new( chunk_metas: Vec, pages: Vec, @@ -422,7 +427,7 @@ impl PcoArray { header, chunks: chunk_infos, }; - Ok(PcoArray::new( + Ok(PcoData::new( chunk_meta_buffers, page_buffers, parray.dtype().clone(), @@ -433,11 +438,13 @@ impl PcoArray { } pub fn from_array(array: ArrayRef, level: usize, nums_per_page: usize) -> VortexResult { - if let Some(parray) = array.as_opt::() { - Self::from_primitive(parray, level, nums_per_page) - } else { - Err(vortex_err!("Pco can only encode primitive arrays")) - } + let parray = array.try_into::().map_err(|a| { + vortex_err!( + "Pco can only encode primitive arrays, got {}", + a.encoding_id() + ) + })?; + Self::from_primitive(&parray, level, nums_per_page) } pub fn decompress(&self, ctx: &mut ExecutionCtx) -> VortexResult { @@ -537,7 +544,7 @@ impl PcoArray { } pub(crate) fn _slice(&self, start: usize, stop: usize) -> Self { - PcoArray { + PcoData { slice_start: self.slice_start + start, slice_stop: self.slice_start + stop, stats_set: Default::default(), @@ -545,7 +552,18 @@ impl PcoArray { } } - pub(crate) fn dtype(&self) -> &DType { + /// Returns the number of elements in the array. + pub fn len(&self) -> usize { + self.slice_stop - self.slice_start + } + + /// Returns `true` if the array contains no elements. + pub fn is_empty(&self) -> bool { + self.slice_stop == self.slice_start + } + + /// Returns the logical data type of the array. + pub fn dtype(&self) -> &DType { &self.dtype } @@ -562,18 +580,23 @@ impl PcoArray { } } -impl ValiditySliceHelper for PcoArray { +impl ValiditySliceHelper for PcoData { fn unsliced_validity_and_slice(&self) -> (&Validity, usize, usize) { (&self.unsliced_validity, self.slice_start, self.slice_stop) } } impl OperationsVTable for Pco { - fn scalar_at(array: &PcoArray, index: usize, _ctx: &mut ExecutionCtx) -> VortexResult { + fn scalar_at( + array: ArrayView<'_, Pco>, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { let mut ctx = LEGACY_SESSION.create_execution_ctx(); array ._slice(index, index + 1) .decompress(&mut ctx)? + .into_array() .scalar_at(0) } } @@ -586,7 +609,7 @@ mod tests { use vortex_array::validity::Validity; use vortex_buffer::buffer; - use crate::PcoArray; + use crate::Pco; #[test] fn test_slice_nullable() { @@ -595,7 +618,7 @@ mod tests { buffer![10u32, 20, 30, 40, 50, 60], Validity::from_iter([false, true, true, true, true, false]), ); - let pco = PcoArray::from_primitive(&values, 0, 128).unwrap(); + let pco = Pco::from_primitive(&values, 0, 128).unwrap(); assert_arrays_eq!( pco, PrimitiveArray::from_option_iter([ diff --git a/encodings/pco/src/compute/cast.rs b/encodings/pco/src/compute/cast.rs index 86dc4758977..378f07254ac 100644 --- a/encodings/pco/src/compute/cast.rs +++ b/encodings/pco/src/compute/cast.rs @@ -2,17 +2,17 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::dtype::DType; use vortex_array::scalar_fn::fns::cast::CastReduce; use vortex_error::VortexResult; use crate::Pco; -use crate::PcoArray; - +use crate::PcoData; impl CastReduce for Pco { - fn cast(array: &PcoArray, dtype: &DType) -> VortexResult> { - if !dtype.is_nullable() || !array.all_valid()? { + fn cast(array: ArrayView<'_, Self>, dtype: &DType) -> VortexResult> { + if !dtype.is_nullable() || !array.array().all_valid()? { // TODO(joe): fixme // We cannot cast to non-nullable since the validity containing nulls is used to decode // the PCO array, this would require rewriting tables. @@ -30,7 +30,7 @@ impl CastReduce for Pco { .cast_nullability(dtype.nullability(), array.len())?; return Ok(Some( - PcoArray::new( + PcoData::new( array.chunk_metas.clone(), array.pages.clone(), dtype.clone(), @@ -62,12 +62,12 @@ mod tests { use vortex_array::validity::Validity; use vortex_buffer::buffer; - use crate::PcoArray; + use crate::Pco; #[test] fn test_cast_pco_f32_to_f64() { let values = PrimitiveArray::from_iter([1.0f32, 2.0, 3.0, 4.0, 5.0]); - let pco = PcoArray::from_primitive(&values, 0, 128).unwrap(); + let pco = Pco::from_primitive(&values, 0, 128).unwrap(); let casted = pco .into_array() @@ -88,7 +88,7 @@ mod tests { fn test_cast_pco_nullability_change() { // Test casting from NonNullable to Nullable let values = PrimitiveArray::from_iter([10u32, 20, 30, 40]); - let pco = PcoArray::from_primitive(&values, 0, 128).unwrap(); + let pco = Pco::from_primitive(&values, 0, 128).unwrap(); let casted = pco .into_array() @@ -106,7 +106,7 @@ mod tests { buffer![10u32, 20, 30, 40, 50, 60], Validity::from_iter([true, true, true, true, true, true]), ); - let pco = PcoArray::from_primitive(&values, 0, 128).unwrap(); + let pco = Pco::from_primitive(&values, 0, 128).unwrap(); let sliced = pco.slice(1..5).unwrap(); let casted = sliced .cast(DType::Primitive(PType::U32, Nullability::NonNullable)) @@ -129,7 +129,7 @@ mod tests { Some(50), Some(60), ]); - let pco = PcoArray::from_primitive(&values, 0, 128).unwrap(); + let pco = Pco::from_primitive(&values, 0, 128).unwrap(); let sliced = pco.slice(1..5).unwrap(); let casted = sliced .cast(DType::Primitive(PType::U32, Nullability::NonNullable)) @@ -163,7 +163,7 @@ mod tests { Validity::NonNullable, ))] fn test_cast_pco_conformance(#[case] values: PrimitiveArray) { - let pco = PcoArray::from_primitive(&values, 0, 128).unwrap(); + let pco = Pco::from_primitive(&values, 0, 128).unwrap(); test_cast_conformance(&pco.into_array()); } } diff --git a/encodings/pco/src/compute/mod.rs b/encodings/pco/src/compute/mod.rs index a5db93b4833..990a54179ae 100644 --- a/encodings/pco/src/compute/mod.rs +++ b/encodings/pco/src/compute/mod.rs @@ -10,46 +10,47 @@ mod tests { use vortex_array::arrays::PrimitiveArray; use vortex_array::compute::conformance::consistency::test_array_consistency; + use crate::Pco; use crate::PcoArray; fn pco_f32() -> PcoArray { let values = PrimitiveArray::from_iter([1.23f32, 4.56, 7.89, 10.11, 12.13]); - PcoArray::from_primitive(&values, 0, 128).unwrap() + Pco::from_primitive(&values, 0, 128).unwrap() } fn pco_f64() -> PcoArray { let values = PrimitiveArray::from_iter([100.1f64, 200.2, 300.3, 400.4, 500.5]); - PcoArray::from_primitive(&values, 0, 128).unwrap() + Pco::from_primitive(&values, 0, 128).unwrap() } fn pco_i32() -> PcoArray { let values = PrimitiveArray::from_iter([100i32, 200, 300, 400, 500]); - PcoArray::from_primitive(&values, 0, 128).unwrap() + Pco::from_primitive(&values, 0, 128).unwrap() } fn pco_u64() -> PcoArray { let values = PrimitiveArray::from_iter([1000u64, 2000, 3000, 4000]); - PcoArray::from_primitive(&values, 0, 128).unwrap() + Pco::from_primitive(&values, 0, 128).unwrap() } fn pco_i16() -> PcoArray { let values = PrimitiveArray::from_iter([10i16, 20, 30, 40, 50]); - PcoArray::from_primitive(&values, 0, 128).unwrap() + Pco::from_primitive(&values, 0, 128).unwrap() } fn pco_i32_alt() -> PcoArray { let values = PrimitiveArray::from_iter([1i32, 2, 3, 4, 5]); - PcoArray::from_primitive(&values, 0, 128).unwrap() + Pco::from_primitive(&values, 0, 128).unwrap() } fn pco_single() -> PcoArray { let values = PrimitiveArray::from_iter([42.42f64]); - PcoArray::from_primitive(&values, 0, 128).unwrap() + Pco::from_primitive(&values, 0, 128).unwrap() } fn pco_large() -> PcoArray { let values = PrimitiveArray::from_iter(0u32..1000); - PcoArray::from_primitive(&values, 3, 128).unwrap() + Pco::from_primitive(&values, 3, 128).unwrap() } #[rstest] diff --git a/encodings/pco/src/slice.rs b/encodings/pco/src/slice.rs index 66bcaa5cf87..bdaa1006294 100644 --- a/encodings/pco/src/slice.rs +++ b/encodings/pco/src/slice.rs @@ -4,6 +4,7 @@ use std::ops::Range; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::arrays::slice::SliceReduce; use vortex_error::VortexResult; @@ -11,7 +12,7 @@ use vortex_error::VortexResult; use crate::Pco; impl SliceReduce for Pco { - fn slice(array: &Self::Array, range: Range) -> VortexResult> { + fn slice(array: ArrayView<'_, Self>, range: Range) -> VortexResult> { Ok(Some(array._slice(range.start, range.end).into_array())) } } diff --git a/encodings/pco/src/test.rs b/encodings/pco/src/test.rs index 7656a82397d..bfadb843fd4 100644 --- a/encodings/pco/src/test.rs +++ b/encodings/pco/src/test.rs @@ -24,11 +24,14 @@ use vortex_array::session::ArraySessionExt; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_buffer::BufferMut; +use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_mask::Mask; use vortex_session::VortexSession; use vortex_session::registry::ReadContext; +use crate::PcoData; + static SESSION: LazyLock = LazyLock::new(|| { let session = VortexSession::empty().with::(); session.arrays().register(Pco); @@ -42,9 +45,9 @@ use crate::PcoArray; fn test_compress_decompress() { let data: Vec = (0..200).collect(); let array = PrimitiveArray::from_iter(data.clone()); - let compressed = PcoArray::from_primitive(&array, 3, 0).unwrap(); + let compressed = Pco::from_primitive(&array, 3, 0).unwrap(); // this data should be compressible - assert!(compressed.pages.len() < array.nbytes() as usize); + assert!(compressed.pages.len() < array.into_array().nbytes() as usize); // check full decompression works let mut ctx = LEGACY_SESSION.create_execution_ctx(); @@ -65,7 +68,7 @@ fn test_compress_decompress() { #[test] fn test_compress_decompress_small() { let array = PrimitiveArray::from_option_iter([None, Some(1)]); - let compressed = PcoArray::from_primitive(&array, 3, 0).unwrap(); + let compressed = Pco::from_primitive(&array, 3, 0).unwrap(); let expected = array.into_array(); assert_arrays_eq!(compressed, expected); @@ -79,7 +82,7 @@ fn test_compress_decompress_small() { fn test_empty() { let data: Vec = vec![]; let array = PrimitiveArray::from_iter(data.clone()); - let compressed = PcoArray::from_primitive(&array, 3, 100).unwrap(); + let compressed = Pco::from_primitive(&array, 3, 100).unwrap(); let mut ctx = LEGACY_SESSION.create_execution_ctx(); let primitive = compressed.decompress(&mut ctx).unwrap(); assert_arrays_eq!(primitive, PrimitiveArray::from_iter(data)); @@ -98,13 +101,16 @@ fn test_validity_and_multiple_chunks_and_pages() { let compression_level = 3; let values_per_chunk = 33; let values_per_page = 10; - let compressed = PcoArray::from_primitive_with_values_per_chunk( - &array, - compression_level, - values_per_chunk, - values_per_page, + let compressed = PcoArray::try_from_data( + PcoData::from_primitive_with_values_per_chunk( + &array, + compression_level, + values_per_chunk, + values_per_page, + ) + .unwrap(), ) - .unwrap(); + .vortex_expect("PcoData is always valid"); assert_eq!(compressed.metadata.chunks.len(), 6); // 191 values / 33 rounds up to 6 assert_eq!(compressed.metadata.chunks[0].pages.len(), 4); // 33 / 10 rounds up to 4 @@ -142,9 +148,9 @@ fn test_validity_vtable() { Buffer::from(data), Validity::Array(BoolArray::from_iter(mask_bools.clone()).into_array()), ); - let compressed = PcoArray::from_primitive(&array, 3, 0).unwrap(); + let compressed = Pco::from_primitive(&array, 3, 0).unwrap(); assert_eq!( - compressed.validity_mask().unwrap(), + compressed.as_array().validity_mask().unwrap(), Mask::from_iter(mask_bools) ); assert_eq!( @@ -156,7 +162,7 @@ fn test_validity_vtable() { #[test] fn test_serde() -> VortexResult<()> { let data: PrimitiveArray = (0i32..1_000_000).collect(); - let pco = PcoArray::from_primitive(&data, 3, 100)?.into_array(); + let pco = Pco::from_primitive(&data, 3, 100)?.into_array(); let context = ArrayContext::empty(); diff --git a/encodings/runend/benches/run_end_compress.rs b/encodings/runend/benches/run_end_compress.rs index bac8175b37a..024f3281c36 100644 --- a/encodings/runend/benches/run_end_compress.rs +++ b/encodings/runend/benches/run_end_compress.rs @@ -14,7 +14,7 @@ use vortex_array::arrays::VarBinViewArray; use vortex_array::dtype::IntegerPType; use vortex_array::validity::Validity; use vortex_buffer::Buffer; -use vortex_runend::RunEndArray; +use vortex_runend::RunEnd; use vortex_runend::compress::runend_encode; fn main() { @@ -48,7 +48,7 @@ fn compress(bencher: Bencher, (length, run_step): (usize, usize)) { bencher .with_inputs(|| &values) - .bench_refs(|values| runend_encode(values)); + .bench_refs(|values| runend_encode(values.as_view())); } #[divan::bench(types = [u8, u16, u32, u64], args = BENCH_ARGS)] @@ -64,7 +64,7 @@ fn decompress(bencher: Bencher, (length, run_step): (usize, usi .collect::>() .into_array(); - let run_end_array = RunEndArray::new(ends, values); + let run_end_array = RunEnd::new(ends, values); let array = run_end_array.into_array(); bencher @@ -88,8 +88,8 @@ fn take_indices(bencher: Bencher, (length, run_step): (usize, usize)) { ); let source_array = PrimitiveArray::from_iter(0..(length as i32)).into_array(); - let (ends, values) = runend_encode(&values); - let runend_array = RunEndArray::try_new(ends.into_array(), values) + let (ends, values) = runend_encode(values.as_view()); + let runend_array = RunEnd::try_new(ends.into_array(), values) .unwrap() .into_array(); @@ -103,7 +103,7 @@ fn take_indices(bencher: Bencher, (length, run_step): (usize, usize)) { }) .bench_refs(|(array, indices, execution_ctx)| { array - .take(indices.to_array()) + .take(indices.clone()) .unwrap() .execute::(execution_ctx) .unwrap() @@ -121,7 +121,7 @@ fn decompress_utf8(bencher: Bencher, (length, run_step): (usize, usize)) { let values = VarBinViewArray::from_iter_str((0..num_runs).map(|i| format!("run_value_{i}"))) .into_array(); - let run_end_array = RunEndArray::new(ends, values); + let run_end_array = RunEnd::new(ends, values); let array = run_end_array.into_array(); bencher diff --git a/encodings/runend/benches/run_end_null_count.rs b/encodings/runend/benches/run_end_null_count.rs index d85683a4c92..e101abf6799 100644 --- a/encodings/runend/benches/run_end_null_count.rs +++ b/encodings/runend/benches/run_end_null_count.rs @@ -7,10 +7,10 @@ use divan::Bencher; use rand::RngExt; use rand::SeedableRng; use rand::rngs::StdRng; -use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::arrays::PrimitiveArray; use vortex_buffer::Buffer; +use vortex_runend::RunEnd; use vortex_runend::RunEndArray; fn main() { @@ -68,5 +68,5 @@ fn fixture(n: usize, run_step: usize, valid_density: f64) -> RunEndArray { ) .into_array(); - RunEndArray::new(ends, values) + RunEnd::new(ends, values) } diff --git a/encodings/runend/public-api.lock b/encodings/runend/public-api.lock index e6647c92ece..a3736617650 100644 --- a/encodings/runend/public-api.lock +++ b/encodings/runend/public-api.lock @@ -2,57 +2,47 @@ pub mod vortex_runend pub mod vortex_runend::compress -pub fn vortex_runend::compress::runend_decode_primitive(ends: vortex_array::arrays::primitive::array::PrimitiveArray, values: vortex_array::arrays::primitive::array::PrimitiveArray, offset: usize, length: usize) -> vortex_error::VortexResult +pub fn vortex_runend::compress::runend_decode_primitive(ends: vortex_array::arrays::primitive::vtable::PrimitiveArray, values: vortex_array::arrays::primitive::vtable::PrimitiveArray, offset: usize, length: usize) -> vortex_error::VortexResult -pub fn vortex_runend::compress::runend_decode_typed_primitive(run_ends: impl core::iter::traits::iterator::Iterator, values: &[T], values_validity: vortex_mask::Mask, values_nullability: vortex_array::dtype::nullability::Nullability, length: usize) -> vortex_array::arrays::primitive::array::PrimitiveArray +pub fn vortex_runend::compress::runend_decode_typed_primitive(run_ends: impl core::iter::traits::iterator::Iterator, values: &[T], values_validity: vortex_mask::Mask, values_nullability: vortex_array::dtype::nullability::Nullability, length: usize) -> vortex_array::arrays::primitive::vtable::PrimitiveArray -pub fn vortex_runend::compress::runend_decode_varbinview(ends: vortex_array::arrays::primitive::array::PrimitiveArray, values: vortex_array::arrays::varbinview::array::VarBinViewArray, offset: usize, length: usize) -> vortex_error::VortexResult +pub fn vortex_runend::compress::runend_decode_varbinview(ends: vortex_array::arrays::primitive::vtable::PrimitiveArray, values: vortex_array::arrays::varbinview::vtable::VarBinViewArray, offset: usize, length: usize) -> vortex_error::VortexResult -pub fn vortex_runend::compress::runend_encode(array: &vortex_array::arrays::primitive::array::PrimitiveArray) -> (vortex_array::arrays::primitive::array::PrimitiveArray, vortex_array::array::ArrayRef) +pub fn vortex_runend::compress::runend_encode(array: vortex_array::array::view::ArrayView<'_, vortex_array::arrays::primitive::vtable::Primitive>) -> (vortex_array::arrays::primitive::vtable::PrimitiveArray, vortex_array::array::erased::ArrayRef) pub mod vortex_runend::decompress_bool -pub fn vortex_runend::decompress_bool::runend_decode_bools(ends: vortex_array::arrays::primitive::array::PrimitiveArray, values: vortex_array::arrays::bool::array::BoolArray, offset: usize, length: usize) -> vortex_error::VortexResult +pub fn vortex_runend::decompress_bool::runend_decode_bools(ends: vortex_array::arrays::primitive::vtable::PrimitiveArray, values: vortex_array::arrays::bool::vtable::BoolArray, offset: usize, length: usize) -> vortex_error::VortexResult -pub fn vortex_runend::decompress_bool::runend_decode_typed_bool(run_ends: impl core::iter::traits::iterator::Iterator, values: &vortex_buffer::bit::buf::BitBuffer, values_validity: vortex_mask::Mask, values_nullability: vortex_array::dtype::nullability::Nullability, length: usize) -> vortex_array::array::ArrayRef +pub fn vortex_runend::decompress_bool::runend_decode_typed_bool(run_ends: impl core::iter::traits::iterator::Iterator, values: &vortex_buffer::bit::buf::BitBuffer, values_validity: vortex_mask::Mask, values_nullability: vortex_array::dtype::nullability::Nullability, length: usize) -> vortex_array::array::erased::ArrayRef pub struct vortex_runend::RunEnd impl vortex_runend::RunEnd -pub const vortex_runend::RunEnd::ID: vortex_array::vtable::dyn_::ArrayId +pub const vortex_runend::RunEnd::ID: vortex_array::array::ArrayId -impl core::clone::Clone for vortex_runend::RunEnd - -pub fn vortex_runend::RunEnd::clone(&self) -> vortex_runend::RunEnd - -impl core::fmt::Debug for vortex_runend::RunEnd - -pub fn vortex_runend::RunEnd::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result - -impl vortex_array::arrays::dict::take::TakeExecute for vortex_runend::RunEnd - -pub fn vortex_runend::RunEnd::take(array: &vortex_runend::RunEndArray, indices: &vortex_array::array::ArrayRef, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_runend::RunEnd::encode(array: vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult -impl vortex_array::arrays::filter::kernel::FilterKernel for vortex_runend::RunEnd +pub fn vortex_runend::RunEnd::new(ends: vortex_array::array::erased::ArrayRef, values: vortex_array::array::erased::ArrayRef) -> vortex_runend::RunEndArray -pub fn vortex_runend::RunEnd::filter(array: &vortex_runend::RunEndArray, mask: &vortex_mask::Mask, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub unsafe fn vortex_runend::RunEnd::new_unchecked(ends: vortex_array::array::erased::ArrayRef, values: vortex_array::array::erased::ArrayRef, offset: usize, length: usize) -> vortex_runend::RunEndArray -impl vortex_array::scalar_fn::fns::binary::compare::CompareKernel for vortex_runend::RunEnd +pub fn vortex_runend::RunEnd::try_new(ends: vortex_array::array::erased::ArrayRef, values: vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult -pub fn vortex_runend::RunEnd::compare(lhs: &vortex_runend::RunEndArray, rhs: &vortex_array::array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_runend::RunEnd::try_new_offset_length(ends: vortex_array::array::erased::ArrayRef, values: vortex_array::array::erased::ArrayRef, offset: usize, length: usize) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_runend::RunEnd +impl core::clone::Clone for vortex_runend::RunEnd -pub fn vortex_runend::RunEnd::cast(array: &vortex_runend::RunEndArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_runend::RunEnd::clone(&self) -> vortex_runend::RunEnd -impl vortex_array::scalar_fn::fns::fill_null::kernel::FillNullReduce for vortex_runend::RunEnd +impl core::fmt::Debug for vortex_runend::RunEnd -pub fn vortex_runend::RunEnd::fill_null(array: &vortex_runend::RunEndArray, fill_value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult> +pub fn vortex_runend::RunEnd::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::vtable::VTable for vortex_runend::RunEnd +impl vortex_array::array::vtable::VTable for vortex_runend::RunEnd -pub type vortex_runend::RunEnd::Array = vortex_runend::RunEndArray +pub type vortex_runend::RunEnd::ArrayData = vortex_runend::RunEndData pub type vortex_runend::RunEnd::Metadata = vortex_array::metadata::ProstMetadata @@ -60,117 +50,129 @@ pub type vortex_runend::RunEnd::OperationsVTable = vortex_runend::RunEnd pub type vortex_runend::RunEnd::ValidityVTable = vortex_runend::RunEnd -pub fn vortex_runend::RunEnd::array_eq(array: &vortex_runend::RunEndArray, other: &vortex_runend::RunEndArray, precision: vortex_array::hash::Precision) -> bool +pub fn vortex_runend::RunEnd::array_eq(array: &vortex_runend::RunEndData, other: &vortex_runend::RunEndData, precision: vortex_array::hash::Precision) -> bool -pub fn vortex_runend::RunEnd::array_hash(array: &vortex_runend::RunEndArray, state: &mut H, precision: vortex_array::hash::Precision) +pub fn vortex_runend::RunEnd::array_hash(array: &vortex_runend::RunEndData, state: &mut H, precision: vortex_array::hash::Precision) -pub fn vortex_runend::RunEnd::buffer(_array: &vortex_runend::RunEndArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_runend::RunEnd::buffer(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_runend::RunEnd::buffer_name(_array: &vortex_runend::RunEndArray, idx: usize) -> core::option::Option +pub fn vortex_runend::RunEnd::buffer_name(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_runend::RunEnd::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_runend::RunEnd::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult pub fn vortex_runend::RunEnd::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_runend::RunEnd::dtype(array: &vortex_runend::RunEndArray) -> &vortex_array::dtype::DType +pub fn vortex_runend::RunEnd::dtype(array: &vortex_runend::RunEndData) -> &vortex_array::dtype::DType -pub fn vortex_runend::RunEnd::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_runend::RunEnd::execute(array: vortex_array::array::typed::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_runend::RunEnd::execute_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_runend::RunEnd::execute_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_runend::RunEnd::id(&self) -> vortex_array::vtable::dyn_::ArrayId +pub fn vortex_runend::RunEnd::id(&self) -> vortex_array::array::ArrayId -pub fn vortex_runend::RunEnd::len(array: &vortex_runend::RunEndArray) -> usize +pub fn vortex_runend::RunEnd::len(array: &vortex_runend::RunEndData) -> usize -pub fn vortex_runend::RunEnd::metadata(array: &vortex_runend::RunEndArray) -> vortex_error::VortexResult +pub fn vortex_runend::RunEnd::metadata(array: vortex_array::array::view::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_runend::RunEnd::nbuffers(_array: &vortex_runend::RunEndArray) -> usize +pub fn vortex_runend::RunEnd::nbuffers(_array: vortex_array::array::view::ArrayView<'_, Self>) -> usize -pub fn vortex_runend::RunEnd::reduce_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_runend::RunEnd::reduce_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> pub fn vortex_runend::RunEnd::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_runend::RunEnd::slot_name(_array: &vortex_runend::RunEndArray, idx: usize) -> alloc::string::String +pub fn vortex_runend::RunEnd::slot_name(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> alloc::string::String + +pub fn vortex_runend::RunEnd::slots(array: vortex_array::array::view::ArrayView<'_, Self>) -> &[core::option::Option] + +pub fn vortex_runend::RunEnd::stats(array: &vortex_runend::RunEndData) -> &vortex_array::stats::array::ArrayStats + +pub fn vortex_runend::RunEnd::vtable(_array: &Self::ArrayData) -> &Self + +pub fn vortex_runend::RunEnd::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> + +impl vortex_array::array::vtable::operations::OperationsVTable for vortex_runend::RunEnd + +pub fn vortex_runend::RunEnd::scalar_at(array: vortex_array::array::view::ArrayView<'_, vortex_runend::RunEnd>, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_runend::RunEnd::slots(array: &vortex_runend::RunEndArray) -> &[core::option::Option] +impl vortex_array::array::vtable::validity::ValidityVTable for vortex_runend::RunEnd -pub fn vortex_runend::RunEnd::stats(array: &vortex_runend::RunEndArray) -> vortex_array::stats::array::StatsSetRef<'_> +pub fn vortex_runend::RunEnd::validity(array: vortex_array::array::view::ArrayView<'_, vortex_runend::RunEnd>) -> vortex_error::VortexResult -pub fn vortex_runend::RunEnd::vtable(_array: &Self::Array) -> &Self +impl vortex_array::arrays::dict::take::TakeExecute for vortex_runend::RunEnd -pub fn vortex_runend::RunEnd::with_slots(array: &mut vortex_runend::RunEndArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_runend::RunEnd::take(array: vortex_array::array::view::ArrayView<'_, Self>, indices: &vortex_array::array::erased::ArrayRef, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::vtable::operations::OperationsVTable for vortex_runend::RunEnd +impl vortex_array::arrays::filter::kernel::FilterKernel for vortex_runend::RunEnd -pub fn vortex_runend::RunEnd::scalar_at(array: &vortex_runend::RunEndArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_runend::RunEnd::filter(array: vortex_array::array::view::ArrayView<'_, Self>, mask: &vortex_mask::Mask, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::vtable::validity::ValidityVTable for vortex_runend::RunEnd +impl vortex_array::scalar_fn::fns::binary::compare::CompareKernel for vortex_runend::RunEnd -pub fn vortex_runend::RunEnd::validity(array: &vortex_runend::RunEndArray) -> vortex_error::VortexResult +pub fn vortex_runend::RunEnd::compare(lhs: vortex_array::array::view::ArrayView<'_, Self>, rhs: &vortex_array::array::erased::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub struct vortex_runend::RunEndArray +impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_runend::RunEnd -impl vortex_runend::RunEndArray +pub fn vortex_runend::RunEnd::cast(array: vortex_array::array::view::ArrayView<'_, Self>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_runend::RunEndArray::encode(array: vortex_array::array::ArrayRef) -> vortex_error::VortexResult +impl vortex_array::scalar_fn::fns::fill_null::kernel::FillNullReduce for vortex_runend::RunEnd -pub fn vortex_runend::RunEndArray::ends(&self) -> &vortex_array::array::ArrayRef +pub fn vortex_runend::RunEnd::fill_null(array: vortex_array::array::view::ArrayView<'_, Self>, fill_value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult> -pub fn vortex_runend::RunEndArray::find_physical_index(&self, index: usize) -> vortex_error::VortexResult +pub struct vortex_runend::RunEndArrayParts -pub fn vortex_runend::RunEndArray::into_parts(self) -> vortex_runend::RunEndArrayParts +pub vortex_runend::RunEndArrayParts::ends: vortex_array::array::erased::ArrayRef -pub fn vortex_runend::RunEndArray::new(ends: vortex_array::array::ArrayRef, values: vortex_array::array::ArrayRef) -> Self +pub vortex_runend::RunEndArrayParts::values: vortex_array::array::erased::ArrayRef -pub unsafe fn vortex_runend::RunEndArray::new_unchecked(ends: vortex_array::array::ArrayRef, values: vortex_array::array::ArrayRef, offset: usize, length: usize) -> Self +pub struct vortex_runend::RunEndData -pub fn vortex_runend::RunEndArray::offset(&self) -> usize +impl vortex_runend::RunEndData -pub fn vortex_runend::RunEndArray::try_new(ends: vortex_array::array::ArrayRef, values: vortex_array::array::ArrayRef) -> vortex_error::VortexResult +pub fn vortex_runend::RunEndData::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_runend::RunEndArray::try_new_offset_length(ends: vortex_array::array::ArrayRef, values: vortex_array::array::ArrayRef, offset: usize, length: usize) -> vortex_error::VortexResult +pub fn vortex_runend::RunEndData::encode(array: vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult -pub fn vortex_runend::RunEndArray::values(&self) -> &vortex_array::array::ArrayRef +pub fn vortex_runend::RunEndData::ends(&self) -> &vortex_array::array::erased::ArrayRef -impl vortex_runend::RunEndArray +pub fn vortex_runend::RunEndData::find_physical_index(&self, index: usize) -> vortex_error::VortexResult -pub fn vortex_runend::RunEndArray::to_array(&self) -> vortex_array::array::ArrayRef +pub fn vortex_runend::RunEndData::into_parts(self) -> vortex_runend::RunEndArrayParts -impl core::clone::Clone for vortex_runend::RunEndArray +pub fn vortex_runend::RunEndData::is_empty(&self) -> bool -pub fn vortex_runend::RunEndArray::clone(&self) -> vortex_runend::RunEndArray +pub fn vortex_runend::RunEndData::len(&self) -> usize -impl core::convert::AsRef for vortex_runend::RunEndArray +pub fn vortex_runend::RunEndData::new(ends: vortex_array::array::erased::ArrayRef, values: vortex_array::array::erased::ArrayRef) -> Self -pub fn vortex_runend::RunEndArray::as_ref(&self) -> &dyn vortex_array::array::DynArray +pub unsafe fn vortex_runend::RunEndData::new_unchecked(ends: vortex_array::array::erased::ArrayRef, values: vortex_array::array::erased::ArrayRef, offset: usize, length: usize) -> Self -impl core::convert::From for vortex_array::array::ArrayRef +pub fn vortex_runend::RunEndData::offset(&self) -> usize -pub fn vortex_array::array::ArrayRef::from(value: vortex_runend::RunEndArray) -> vortex_array::array::ArrayRef +pub fn vortex_runend::RunEndData::try_new(ends: vortex_array::array::erased::ArrayRef, values: vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_runend::RunEndArray +pub fn vortex_runend::RunEndData::try_new_offset_length(ends: vortex_array::array::erased::ArrayRef, values: vortex_array::array::erased::ArrayRef, offset: usize, length: usize) -> vortex_error::VortexResult -pub fn vortex_runend::RunEndArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_runend::RunEndData::values(&self) -> &vortex_array::array::erased::ArrayRef -impl core::ops::deref::Deref for vortex_runend::RunEndArray +impl core::clone::Clone for vortex_runend::RunEndData -pub type vortex_runend::RunEndArray::Target = dyn vortex_array::array::DynArray +pub fn vortex_runend::RunEndData::clone(&self) -> vortex_runend::RunEndData -pub fn vortex_runend::RunEndArray::deref(&self) -> &Self::Target +impl core::convert::From for vortex_array::array::erased::ArrayRef -impl vortex_array::array::IntoArray for vortex_runend::RunEndArray +pub fn vortex_array::array::erased::ArrayRef::from(value: vortex_runend::RunEndData) -> vortex_array::array::erased::ArrayRef -pub fn vortex_runend::RunEndArray::into_array(self) -> vortex_array::array::ArrayRef +impl core::fmt::Debug for vortex_runend::RunEndData -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::run_array::RunArray> for vortex_runend::RunEndArray where ::Native: vortex_array::dtype::ptype::NativePType +pub fn vortex_runend::RunEndData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_runend::RunEndArray::from_arrow(array: &arrow_array::array::run_array::RunArray, nullable: bool) -> vortex_error::VortexResult +impl vortex_array::array::IntoArray for vortex_runend::RunEndData -pub struct vortex_runend::RunEndArrayParts +pub fn vortex_runend::RunEndData::into_array(self) -> vortex_array::array::erased::ArrayRef -pub vortex_runend::RunEndArrayParts::ends: vortex_array::array::ArrayRef +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::run_array::RunArray> for vortex_runend::RunEndData where ::Native: vortex_array::dtype::ptype::NativePType -pub vortex_runend::RunEndArrayParts::values: vortex_array::array::ArrayRef +pub fn vortex_runend::RunEndData::from_arrow(array: &arrow_array::array::run_array::RunArray, nullable: bool) -> vortex_error::VortexResult pub struct vortex_runend::RunEndMetadata @@ -207,3 +209,5 @@ pub fn vortex_runend::RunEndMetadata::encoded_len(&self) -> usize pub fn vortex_runend::initialize(session: &mut vortex_session::VortexSession) pub fn vortex_runend::trimmed_ends_iter(run_ends: &[E], offset: usize, length: usize) -> impl core::iter::traits::iterator::Iterator + use<'_, E> + +pub type vortex_runend::RunEndArray = vortex_array::array::typed::Array diff --git a/encodings/runend/src/arbitrary.rs b/encodings/runend/src/arbitrary.rs index f4a3a83f150..a63fa9bb2ed 100644 --- a/encodings/runend/src/arbitrary.rs +++ b/encodings/runend/src/arbitrary.rs @@ -14,11 +14,11 @@ use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_error::VortexExpect; -use crate::RunEndArray; +use crate::RunEndData; /// A wrapper type to implement `Arbitrary` for `RunEndArray`. #[derive(Clone, Debug)] -pub struct ArbitraryRunEndArray(pub RunEndArray); +pub struct ArbitraryRunEndArray(pub RunEndData); impl<'a> Arbitrary<'a> for ArbitraryRunEndArray { fn arbitrary(u: &mut Unstructured<'a>) -> Result { @@ -42,7 +42,7 @@ impl ArbitraryRunEndArray { // Empty RunEndArray let ends = PrimitiveArray::from_iter(Vec::::new()).into_array(); let values = ArbitraryArray::arbitrary_with(u, Some(0), dtype)?.0; - let runend_array = RunEndArray::try_new(ends, values) + let runend_array = RunEndData::try_new(ends, values) .vortex_expect("Empty RunEndArray creation should succeed"); return Ok(ArbitraryRunEndArray(runend_array)); } @@ -54,7 +54,7 @@ impl ArbitraryRunEndArray { // Each end must be > previous end, and first end must be >= 1 let ends = random_strictly_sorted_ends(u, num_runs, len)?; - let runend_array = RunEndArray::try_new(ends, values) + let runend_array = RunEndData::try_new(ends, values) .vortex_expect("RunEndArray creation should succeed in arbitrary impl"); Ok(ArbitraryRunEndArray(runend_array)) diff --git a/encodings/runend/src/array.rs b/encodings/runend/src/array.rs index edba8a0f219..081b48ab678 100644 --- a/encodings/runend/src/array.rs +++ b/encodings/runend/src/array.rs @@ -3,13 +3,14 @@ use std::fmt::Debug; use std::hash::Hash; -use std::sync::Arc; +use vortex_array::Array; use vortex_array::ArrayEq; use vortex_array::ArrayHash; +use vortex_array::ArrayId; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::DeserializeMetadata; -use vortex_array::DynArray; use vortex_array::ExecutionCtx; use vortex_array::ExecutionResult; use vortex_array::IntoArray; @@ -27,11 +28,8 @@ use vortex_array::search_sorted::SearchSorted; use vortex_array::search_sorted::SearchSortedSide; use vortex_array::serde::ArrayChildren; use vortex_array::stats::ArrayStats; -use vortex_array::stats::StatsSetRef; use vortex_array::validity::Validity; use vortex_array::vtable; -use vortex_array::vtable::Array; -use vortex_array::vtable::ArrayId; use vortex_array::vtable::VTable; use vortex_array::vtable::ValidityVTable; use vortex_error::VortexExpect as _; @@ -48,7 +46,7 @@ use crate::decompress_bool::runend_decode_bools; use crate::kernel::PARENT_KERNELS; use crate::rules::RULES; -vtable!(RunEnd); +vtable!(RunEnd, RunEnd, RunEndData); #[derive(Clone, prost::Message)] pub struct RunEndMetadata { @@ -61,13 +59,13 @@ pub struct RunEndMetadata { } impl VTable for RunEnd { - type Array = RunEndArray; + type ArrayData = RunEndData; type Metadata = ProstMetadata; type OperationsVTable = Self; type ValidityVTable = Self; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &Self::ArrayData) -> &Self { &RunEnd } @@ -75,45 +73,43 @@ impl VTable for RunEnd { Self::ID } - fn len(array: &RunEndArray) -> usize { + fn len(array: &RunEndData) -> usize { array.length } - fn dtype(array: &RunEndArray) -> &DType { + fn dtype(array: &RunEndData) -> &DType { array.values().dtype() } - fn stats(array: &RunEndArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &RunEndData) -> &ArrayStats { + &array.stats_set } - fn array_hash(array: &RunEndArray, state: &mut H, precision: Precision) { + fn array_hash(array: &RunEndData, state: &mut H, precision: Precision) { array.ends().array_hash(state, precision); array.values().array_hash(state, precision); array.offset.hash(state); - array.length.hash(state); } - fn array_eq(array: &RunEndArray, other: &RunEndArray, precision: Precision) -> bool { + fn array_eq(array: &RunEndData, other: &RunEndData, precision: Precision) -> bool { array.ends().array_eq(other.ends(), precision) && array.values().array_eq(other.values(), precision) && array.offset == other.offset - && array.length == other.length } - fn nbuffers(_array: &RunEndArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 0 } - fn buffer(_array: &RunEndArray, idx: usize) -> BufferHandle { + fn buffer(_array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { vortex_panic!("RunEndArray buffer index {idx} out of bounds") } - fn buffer_name(_array: &RunEndArray, idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, idx: usize) -> Option { vortex_panic!("RunEndArray buffer_name index {idx} out of bounds") } - fn metadata(array: &RunEndArray) -> VortexResult { + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { Ok(ProstMetadata(RunEndMetadata { ends_ptype: PType::try_from(array.ends().dtype()).vortex_expect("Must be a valid PType") as i32, @@ -143,14 +139,14 @@ impl VTable for RunEnd { metadata: &Self::Metadata, _buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { let ends_dtype = DType::Primitive(metadata.ends_ptype(), Nullability::NonNullable); let runs = usize::try_from(metadata.num_runs).vortex_expect("Must be a valid usize"); let ends = children.get(0, &ends_dtype, runs)?; let values = children.get(1, dtype, runs)?; - RunEndArray::try_new_offset_length( + RunEndData::try_new_offset_length( ends, values, usize::try_from(metadata.offset).vortex_expect("Offset must be a valid usize"), @@ -158,15 +154,15 @@ impl VTable for RunEnd { ) } - fn slots(array: &RunEndArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &RunEndArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn with_slots(array: &mut RunEndArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "RunEndArray expects exactly {} slots, got {}", @@ -178,7 +174,7 @@ impl VTable for RunEnd { } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { @@ -186,7 +182,7 @@ impl VTable for RunEnd { } fn execute_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, @@ -194,7 +190,7 @@ impl VTable for RunEnd { PARENT_KERNELS.execute(array, parent, child_idx, ctx) } - fn execute(array: Arc>, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, ctx: &mut ExecutionCtx) -> VortexResult { run_end_canonicalize(&array, ctx).map(ExecutionResult::done) } } @@ -207,7 +203,7 @@ pub(super) const NUM_SLOTS: usize = 2; pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["ends", "values"]; #[derive(Clone, Debug)] -pub struct RunEndArray { +pub struct RunEndData { pub(super) slots: Vec>, offset: usize, length: usize, @@ -224,9 +220,51 @@ pub struct RunEnd; impl RunEnd { pub const ID: ArrayId = ArrayId::new_ref("vortex.runend"); + + /// Build a new [`RunEndArray`] without validation. + /// + /// # Safety + /// See [`RunEndData::new_unchecked`] for preconditions. + pub unsafe fn new_unchecked( + ends: ArrayRef, + values: ArrayRef, + offset: usize, + length: usize, + ) -> RunEndArray { + Array::try_from_data(unsafe { RunEndData::new_unchecked(ends, values, offset, length) }) + .vortex_expect("RunEndData is always valid") + } + + /// Build a new [`RunEndArray`] from ends and values. + pub fn try_new(ends: ArrayRef, values: ArrayRef) -> VortexResult { + Array::try_from_data(RunEndData::try_new(ends, values)?) + } + + /// Build a new [`RunEndArray`] from ends, values, offset, and length. + pub fn try_new_offset_length( + ends: ArrayRef, + values: ArrayRef, + offset: usize, + length: usize, + ) -> VortexResult { + Array::try_from_data(RunEndData::try_new_offset_length( + ends, values, offset, length, + )?) + } + + /// Build a new [`RunEndArray`] from ends and values (panics on invalid input). + pub fn new(ends: ArrayRef, values: ArrayRef) -> RunEndArray { + Array::try_from_data(RunEndData::new(ends, values)) + .vortex_expect("RunEndData is always valid") + } + + /// Run the array through run-end encoding. + pub fn encode(array: ArrayRef) -> VortexResult { + Array::try_from_data(RunEndData::encode(array)?) + } } -impl RunEndArray { +impl RunEndData { fn validate( ends: &ArrayRef, values: &ArrayRef, @@ -302,10 +340,10 @@ impl RunEndArray { } } -impl RunEndArray { +impl RunEndData { /// Build a new `RunEndArray` from an array of run `ends` and an array of `values`. /// - /// Panics if any of the validation conditions described in [`RunEndArray::try_new`] is + /// Panics if any of the validation conditions described in [`RunEndData::try_new`] is /// not satisfied. /// /// # Examples @@ -315,11 +353,11 @@ impl RunEndArray { /// # use vortex_array::IntoArray; /// # use vortex_buffer::buffer; /// # use vortex_error::VortexResult; - /// # use vortex_runend::RunEndArray; + /// # use vortex_runend::RunEnd; /// # fn main() -> VortexResult<()> { /// let ends = buffer![2u8, 3u8].into_array(); /// let values = BoolArray::from_iter([false, true]).into_array(); - /// let run_end = RunEndArray::new(ends, values); + /// let run_end = RunEnd::new(ends, values); /// /// // Array encodes /// assert_eq!(run_end.scalar_at(0)?, false.into()); @@ -349,7 +387,7 @@ impl RunEndArray { /// Construct a new sliced `RunEndArray` with the provided offset and length. /// - /// This performs all the same validation as [`RunEndArray::try_new`]. + /// This performs all the same validation as [`RunEndData::try_new`]. pub fn try_new_offset_length( ends: ArrayRef, values: ArrayRef, @@ -370,10 +408,10 @@ impl RunEndArray { /// /// # Safety /// - /// The caller must ensure that all the validation performed in [`RunEndArray::try_new`] is + /// The caller must ensure that all the validation performed in [`RunEndData::try_new`] is /// satisfied before calling this function. /// - /// See [`RunEndArray::try_new`] for the preconditions needed to build a new array. + /// See [`RunEndData::try_new`] for the preconditions needed to build a new array. pub unsafe fn new_unchecked( ends: ArrayRef, values: ArrayRef, @@ -418,6 +456,24 @@ impl RunEndArray { } } + /// Returns the length of the array. + #[inline] + pub fn len(&self) -> usize { + self.length + } + + /// Returns whether the array is empty. + #[inline] + pub fn is_empty(&self) -> bool { + self.length == 0 + } + + /// Returns the logical data type of the array. + #[inline] + pub fn dtype(&self) -> &DType { + self.values().dtype() + } + /// The offset that the `ends` is relative to. /// /// This is generally zero for a "new" array, and non-zero after a slicing operation. @@ -463,12 +519,12 @@ impl RunEndArray { } impl ValidityVTable for RunEnd { - fn validity(array: &RunEndArray) -> VortexResult { + fn validity(array: ArrayView<'_, RunEnd>) -> VortexResult { Ok(match array.values().validity()? { Validity::NonNullable | Validity::AllValid => Validity::AllValid, Validity::AllInvalid => Validity::AllInvalid, Validity::Array(values_validity) => Validity::Array(unsafe { - RunEndArray::new_unchecked( + RunEndData::new_unchecked( array.ends().clone(), values_validity, array.offset(), @@ -517,11 +573,11 @@ mod tests { use vortex_array::dtype::PType; use vortex_buffer::buffer; - use crate::RunEndArray; + use crate::RunEnd; #[test] fn test_runend_constructor() { - let arr = RunEndArray::new( + let arr = RunEnd::new( buffer![2u32, 5, 10].into_array(), buffer![1i32, 2, 3].into_array(), ); @@ -541,7 +597,7 @@ mod tests { #[test] fn test_runend_utf8() { let values = VarBinViewArray::from_iter_str(["a", "b", "c"]).into_array(); - let arr = RunEndArray::new(buffer![2u32, 5, 10].into_array(), values); + let arr = RunEnd::new(buffer![2u32, 5, 10].into_array(), values); assert_eq!(arr.len(), 10); assert_eq!(arr.dtype(), &DType::Utf8(Nullability::NonNullable)); @@ -557,8 +613,7 @@ mod tests { let dict_codes = buffer![0u32, 1, 2].into_array(); let dict = DictArray::try_new(dict_codes, dict_values).unwrap(); - let arr = - RunEndArray::try_new(buffer![2u32, 5, 10].into_array(), dict.into_array()).unwrap(); + let arr = RunEnd::try_new(buffer![2u32, 5, 10].into_array(), dict.into_array()).unwrap(); assert_eq!(arr.len(), 10); let expected = diff --git a/encodings/runend/src/arrow.rs b/encodings/runend/src/arrow.rs index 4b2ddc9a448..82eb837f48f 100644 --- a/encodings/runend/src/arrow.rs +++ b/encodings/runend/src/arrow.rs @@ -15,10 +15,9 @@ use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_error::VortexResult; -use crate::RunEndArray; +use crate::RunEndData; use crate::ops::find_slice_end_index; - -impl FromArrowArray<&RunArray> for RunEndArray +impl FromArrowArray<&RunArray> for RunEndData where R::Native: NativePType, { @@ -31,23 +30,24 @@ where .reinterpret_cast(R::Native::PTYPE.to_unsigned()); let values = ArrayRef::from_arrow(array.values().as_ref(), nullable)?; + let ends_array = ends.into_array(); let (ends_slice, values_slice) = if offset == 0 && len == array.run_ends().max_value() { - (ends.into_array(), values) + (ends_array, values) } else { - let slice_begin = ends + let slice_begin = ends_array .as_primitive_typed() .search_sorted(&PValue::from(offset), SearchSortedSide::Right)? - .to_ends_index(ends.len()); - let slice_end = find_slice_end_index(&ends.clone().into_array(), offset + len)?; + .to_ends_index(ends_array.len()); + let slice_end = find_slice_end_index(&ends_array, offset + len)?; ( - ends.slice(slice_begin..slice_end)?, + ends_array.slice(slice_begin..slice_end)?, values.slice(slice_begin..slice_end)?, ) }; // SAFETY: arrow-rs enforces the RunEndArray invariants, we inherit their guarantees - Ok(unsafe { RunEndArray::new_unchecked(ends_slice, values_slice, offset, len) }) + Ok(unsafe { RunEndData::new_unchecked(ends_slice, values_slice, offset, len) }) } } @@ -79,7 +79,7 @@ mod tests { use vortex_error::VortexResult; use vortex_session::VortexSession; - use crate::RunEndArray; + use crate::RunEndData; static SESSION: LazyLock = LazyLock::new(|| VortexSession::empty().with::()); @@ -94,10 +94,10 @@ mod tests { let arrow_run_array = RunArray::::try_new(&run_ends, &values).unwrap(); // Convert to Vortex - let vortex_array = RunEndArray::from_arrow(&arrow_run_array, false)?; + let vortex_array = RunEndData::from_arrow(&arrow_run_array, false)?; assert_arrays_eq!( - vortex_array.as_ref(), + vortex_array.into_array(), buffer![10i32, 10, 10, 20, 20, 30, 30, 30].into_array() ); Ok(()) @@ -111,10 +111,10 @@ mod tests { let arrow_run_array = RunArray::::try_new(&run_ends, &values).unwrap(); // Convert to Vortex with nullable=true - let vortex_array = RunEndArray::from_arrow(&arrow_run_array, true)?; + let vortex_array = RunEndData::from_arrow(&arrow_run_array, true)?; assert_arrays_eq!( - vortex_array.as_ref(), + vortex_array.into_array(), PrimitiveArray::from_option_iter([ Some(100i32), Some(100i32), @@ -135,7 +135,7 @@ mod tests { let arrow_run_array = RunArray::::try_new(&run_ends, &values).unwrap(); // Convert to Vortex - let vortex_array = RunEndArray::from_arrow(&arrow_run_array, false)?; + let vortex_array = RunEndData::from_arrow(&arrow_run_array, false)?; assert_arrays_eq!(vortex_array, buffer![1.5f64, 2.5, 2.5, 3.5].into_array()); Ok(()) @@ -155,7 +155,7 @@ mod tests { let sliced_array = arrow_run_array.slice(1, 6); // Convert the sliced array to Vortex - let vortex_array = RunEndArray::from_arrow(&sliced_array, false)?; + let vortex_array = RunEndData::from_arrow(&sliced_array, false)?; assert_arrays_eq!( vortex_array, buffer![100, 200, 200, 200, 300, 300].into_array() @@ -178,7 +178,7 @@ mod tests { let sliced_array = arrow_run_array.slice(4, 6); // Convert to Vortex with nullable=true - let vortex_array = RunEndArray::from_arrow(&sliced_array, true)?; + let vortex_array = RunEndData::from_arrow(&sliced_array, true)?; assert_arrays_eq!( vortex_array, @@ -209,7 +209,7 @@ mod tests { let sliced_array = arrow_run_array.slice(4, 0); // Convert to Vortex with nullable=true - let vortex_array = RunEndArray::from_arrow(&sliced_array, true)?; + let vortex_array = RunEndData::from_arrow(&sliced_array, true)?; // Verify properties assert_eq!(vortex_array.len(), 0); @@ -240,7 +240,7 @@ mod tests { &Int32Array::from(vec![3i32, 5, 8]), &Int32Array::from(vec![10, 20, 30]), )?; - let vortex_array = RunEndArray::from_arrow(&original, false)?; + let vortex_array = RunEndData::from_arrow(&original, false)?; let target = ree_type(DataType::Int32, DataType::Int32); let result = execute(vortex_array.into_array(), &target)?; @@ -274,7 +274,7 @@ mod tests { #[case] expected_values: &[i32], ) -> VortexResult<()> { let array = - RunEndArray::encode(PrimitiveArray::from_iter(input.iter().copied()).into_array())?; + RunEndData::encode(PrimitiveArray::from_iter(input.iter().copied()).into_array())?; let sliced = array.into_array().slice(slice_range.clone())?; let target = ree_type(DataType::Int32, DataType::Int32); let result = execute(sliced, &target)?; diff --git a/encodings/runend/src/compress.rs b/encodings/runend/src/compress.rs index bdba123e3d7..04dad945531 100644 --- a/encodings/runend/src/compress.rs +++ b/encodings/runend/src/compress.rs @@ -3,10 +3,12 @@ use itertools::Itertools; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::ToCanonical; use vortex_array::arrays::BoolArray; use vortex_array::arrays::ConstantArray; +use vortex_array::arrays::Primitive; use vortex_array::arrays::PrimitiveArray; use vortex_array::arrays::VarBinViewArray; use vortex_array::buffer::BufferHandle; @@ -30,7 +32,7 @@ use vortex_mask::Mask; use crate::iter::trimmed_ends_iter; /// Run-end encode a `PrimitiveArray`, returning a tuple of `(ends, values)`. -pub fn runend_encode(array: &PrimitiveArray) -> (PrimitiveArray, ArrayRef) { +pub fn runend_encode(array: ArrayView) -> (PrimitiveArray, ArrayRef) { let validity = match array.validity() { Validity::NonNullable => None, Validity::AllValid => None, @@ -69,10 +71,7 @@ pub fn runend_encode(array: &PrimitiveArray) -> (PrimitiveArray, ArrayRef) { } }; - let ends = ends - .narrow() - .vortex_expect("Ends must succeed downcasting") - .to_primitive(); + let ends = ends.narrow().vortex_expect("Ends must succeed downcasting"); ends.statistics() .set(Stat::IsStrictSorted, Precision::Exact(true.into())); @@ -286,7 +285,7 @@ pub fn runend_decode_varbinview( ) }); - let parts = values.into_parts(); + let parts = values.into_data().into_parts(); let view_handle = BufferHandle::new_host(decoded_views.into_byte_buffer()); // SAFETY: we are expanding views from a valid VarBinViewArray with the same @@ -312,7 +311,7 @@ mod test { #[test] fn encode() { let arr = PrimitiveArray::from_iter([1i32, 1, 2, 2, 2, 3, 3, 3, 3, 3]); - let (ends, values) = runend_encode(&arr); + let (ends, values) = runend_encode(arr.as_view()); let values = values.to_primitive(); let expected_ends = PrimitiveArray::from_iter(vec![2u8, 5, 10]); @@ -329,7 +328,7 @@ mod test { true, true, false, false, true, true, true, true, false, false, ])), ); - let (ends, values) = runend_encode(&arr); + let (ends, values) = runend_encode(arr.as_view()); let values = values.to_primitive(); let expected_ends = PrimitiveArray::from_iter(vec![2u8, 4, 5, 8, 10]); @@ -345,7 +344,7 @@ mod test { buffer![0, 0, 0, 0, 0], Validity::from(BitBuffer::new_unset(5)), ); - let (ends, values) = runend_encode(&arr); + let (ends, values) = runend_encode(arr.as_view()); let values = values.to_primitive(); let expected_ends = PrimitiveArray::from_iter(vec![5u64]); diff --git a/encodings/runend/src/compute/cast.rs b/encodings/runend/src/compute/cast.rs index d106c2e86aa..a5fec75d802 100644 --- a/encodings/runend/src/compute/cast.rs +++ b/encodings/runend/src/compute/cast.rs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::builtins::ArrayBuiltins; use vortex_array::dtype::DType; @@ -9,17 +10,16 @@ use vortex_array::scalar_fn::fns::cast::CastReduce; use vortex_error::VortexResult; use crate::RunEnd; -use crate::RunEndArray; - +use crate::RunEndData; impl CastReduce for RunEnd { - fn cast(array: &RunEndArray, dtype: &DType) -> VortexResult> { + fn cast(array: ArrayView<'_, Self>, dtype: &DType) -> VortexResult> { // Cast the values array to the target type let casted_values = array.values().cast(dtype.clone())?; // SAFETY: casting does not affect the ends being valid unsafe { Ok(Some( - RunEndArray::new_unchecked( + RunEndData::new_unchecked( array.ends().clone(), casted_values, array.offset(), @@ -34,7 +34,6 @@ impl CastReduce for RunEnd { #[cfg(test)] mod tests { use rstest::rstest; - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::ToCanonical; use vortex_array::arrays::BoolArray; @@ -47,11 +46,12 @@ mod tests { use vortex_array::dtype::PType; use vortex_buffer::buffer; + use crate::RunEnd; use crate::RunEndArray; #[test] fn test_cast_runend_i32_to_i64() { - let runend = RunEndArray::try_new( + let runend = RunEnd::try_new( buffer![3u64, 5, 8, 10].into_array(), buffer![100i32, 200, 100, 300].into_array(), ) @@ -90,7 +90,7 @@ mod tests { #[test] fn test_cast_runend_nullable() { - let runend = RunEndArray::try_new( + let runend = RunEnd::try_new( buffer![2u64, 4, 7].into_array(), PrimitiveArray::from_option_iter([Some(10i32), None, Some(20)]).into_array(), ) @@ -109,7 +109,7 @@ mod tests { #[test] fn test_cast_runend_with_offset() { // Create a RunEndArray: [100, 100, 100, 200, 200, 300, 300, 300, 300, 300] - let runend = RunEndArray::try_new( + let runend = RunEnd::try_new( buffer![3u64, 5, 10].into_array(), buffer![100i32, 200, 300].into_array(), ) @@ -134,23 +134,23 @@ mod tests { } #[rstest] - #[case(RunEndArray::try_new( + #[case(RunEnd::try_new( buffer![3u64, 5, 8].into_array(), buffer![100i32, 200, 300].into_array() ).unwrap())] - #[case(RunEndArray::try_new( + #[case(RunEnd::try_new( buffer![1u64, 4, 10].into_array(), buffer![1.5f32, 2.5, 3.5].into_array() ).unwrap())] - #[case(RunEndArray::try_new( + #[case(RunEnd::try_new( buffer![2u64, 3, 5].into_array(), PrimitiveArray::from_option_iter([Some(42i32), None, Some(84)]).into_array() ).unwrap())] - #[case(RunEndArray::try_new( + #[case(RunEnd::try_new( buffer![10u64].into_array(), buffer![255u8].into_array() ).unwrap())] - #[case(RunEndArray::try_new( + #[case(RunEnd::try_new( buffer![2u64, 4, 6, 8, 10].into_array(), BoolArray::from_iter(vec![true, false, true, false, true]).into_array() ).unwrap())] diff --git a/encodings/runend/src/compute/compare.rs b/encodings/runend/src/compute/compare.rs index 9601d0502d8..d9926538944 100644 --- a/encodings/runend/src/compute/compare.rs +++ b/encodings/runend/src/compute/compare.rs @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::BoolArray; @@ -15,12 +15,11 @@ use vortex_array::scalar_fn::fns::operators::Operator; use vortex_error::VortexResult; use crate::RunEnd; -use crate::RunEndArray; use crate::decompress_bool::runend_decode_bools; impl CompareKernel for RunEnd { fn compare( - lhs: &RunEndArray, + lhs: ArrayView<'_, Self>, rhs: &ArrayRef, operator: CompareOperator, ctx: &mut ExecutionCtx, @@ -55,13 +54,12 @@ mod test { use vortex_array::builtins::ArrayBuiltins; use vortex_array::scalar_fn::fns::operators::Operator; + use crate::RunEnd; use crate::RunEndArray; fn ree_array() -> RunEndArray { - RunEndArray::encode( - PrimitiveArray::from_iter([1, 1, 1, 4, 4, 4, 2, 2, 5, 5, 5, 5]).into_array(), - ) - .unwrap() + RunEnd::encode(PrimitiveArray::from_iter([1, 1, 1, 4, 4, 4, 2, 2, 5, 5, 5, 5]).into_array()) + .unwrap() } #[test] diff --git a/encodings/runend/src/compute/fill_null.rs b/encodings/runend/src/compute/fill_null.rs index 0f0445ba58e..bb138e406d6 100644 --- a/encodings/runend/src/compute/fill_null.rs +++ b/encodings/runend/src/compute/fill_null.rs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::builtins::ArrayBuiltins; use vortex_array::scalar::Scalar; @@ -9,17 +10,25 @@ use vortex_array::scalar_fn::fns::fill_null::FillNullReduce; use vortex_error::VortexResult; use crate::RunEnd; -use crate::RunEndArray; -use crate::RunEndArrayParts; +use crate::RunEndData; impl FillNullReduce for RunEnd { - fn fill_null(array: &RunEndArray, fill_value: &Scalar) -> VortexResult> { - let RunEndArrayParts { values, ends } = array.clone().into_parts(); - let new_values = values.fill_null(fill_value.clone())?; + fn fill_null( + array: ArrayView<'_, Self>, + fill_value: &Scalar, + ) -> VortexResult> { + let new_values = array.values().fill_null(fill_value.clone())?; // SAFETY: modifying values only, does not affect ends Ok(Some( - unsafe { RunEndArray::new_unchecked(ends, new_values, array.offset(), array.len()) } - .into_array(), + unsafe { + RunEndData::new_unchecked( + array.ends().clone(), + new_values, + array.offset(), + array.len(), + ) + } + .into_array(), )) } } diff --git a/encodings/runend/src/compute/filter.rs b/encodings/runend/src/compute/filter.rs index cf6f6043de9..92c3ef40b8e 100644 --- a/encodings/runend/src/compute/filter.rs +++ b/encodings/runend/src/compute/filter.rs @@ -6,6 +6,7 @@ use std::ops::AddAssign; use num_traits::AsPrimitive; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::PrimitiveArray; @@ -20,14 +21,13 @@ use vortex_error::VortexResult; use vortex_mask::Mask; use crate::RunEnd; -use crate::RunEndArray; +use crate::RunEndData; use crate::compute::take::take_indices_unchecked; - const FILTER_TAKE_THRESHOLD: f64 = 0.1; impl FilterKernel for RunEnd { fn filter( - array: &RunEndArray, + array: ArrayView<'_, Self>, mask: &Mask, ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -39,7 +39,7 @@ impl FilterKernel for RunEnd { if runs_ratio < FILTER_TAKE_THRESHOLD || mask_values.true_count() < 25 { Ok(Some(take_indices_unchecked( - array, + &array, mask_values.indices(), &Validity::NonNullable, )?)) @@ -59,7 +59,7 @@ impl FilterKernel for RunEnd { // SAFETY: guaranteed by implementation of filter_run_end_primitive unsafe { Ok(Some( - RunEndArray::new_unchecked( + RunEndData::new_unchecked( run_ends.into_array(), values, 0, @@ -114,20 +114,18 @@ fn filter_run_end_primitive + AsPrimitiv #[cfg(test)] mod tests { - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::assert_arrays_eq; use vortex_error::VortexResult; use vortex_mask::Mask; + use crate::RunEnd; use crate::RunEndArray; fn ree_array() -> RunEndArray { - RunEndArray::encode( - PrimitiveArray::from_iter([1, 1, 1, 4, 4, 4, 2, 2, 5, 5, 5, 5]).into_array(), - ) - .unwrap() + RunEnd::encode(PrimitiveArray::from_iter([1, 1, 1, 4, 4, 4, 2, 2, 5, 5, 5, 5]).into_array()) + .unwrap() } #[test] @@ -137,7 +135,7 @@ mod tests { assert_arrays_eq!( filtered, - RunEndArray::new( + RunEnd::new( PrimitiveArray::from_iter([1u8, 2, 3]).into_array(), PrimitiveArray::from_iter([1i32, 4, 2]).into_array() ) diff --git a/encodings/runend/src/compute/is_sorted.rs b/encodings/runend/src/compute/is_sorted.rs index b0d00bfb146..e3989b4972c 100644 --- a/encodings/runend/src/compute/is_sorted.rs +++ b/encodings/runend/src/compute/is_sorted.rs @@ -39,7 +39,7 @@ impl DynAggregateKernel for RunEndIsSortedKernel { let result = if options.strict { // Strict sort with run-end encoding means we need to canonicalize // since run-end encoding repeats values. - is_strict_sorted(&array.to_canonical()?.into_array(), ctx)? + is_strict_sorted(&array.array().to_canonical()?.into_array(), ctx)? } else { is_sorted(array.values(), ctx)? }; diff --git a/encodings/runend/src/compute/mod.rs b/encodings/runend/src/compute/mod.rs index 0e4f4ce8d1a..f1f6dd97593 100644 --- a/encodings/runend/src/compute/mod.rs +++ b/encodings/runend/src/compute/mod.rs @@ -19,28 +19,29 @@ mod tests { use vortex_array::compute::conformance::consistency::test_array_consistency; use vortex_buffer::buffer; + use crate::RunEnd; use crate::RunEndArray; #[rstest] // Simple run-end arrays - #[case::runend_i32(RunEndArray::encode( + #[case::runend_i32(RunEnd::encode( buffer![1i32, 1, 1, 2, 2, 3, 3, 3, 3].into_array() ).unwrap())] - #[case::runend_single_run(RunEndArray::encode( + #[case::runend_single_run(RunEnd::encode( buffer![5i32, 5, 5, 5, 5].into_array() ).unwrap())] - #[case::runend_alternating(RunEndArray::encode( + #[case::runend_alternating(RunEnd::encode( buffer![1i32, 2, 1, 2, 1, 2].into_array() ).unwrap())] // Different types - #[case::runend_u64(RunEndArray::encode( + #[case::runend_u64(RunEnd::encode( buffer![100u64, 100, 200, 200, 200].into_array() ).unwrap())] // Edge cases - #[case::runend_single(RunEndArray::encode( + #[case::runend_single(RunEnd::encode( buffer![42i32].into_array() ).unwrap())] - #[case::runend_large(RunEndArray::encode( + #[case::runend_large(RunEnd::encode( PrimitiveArray::from_iter((0..1000).map(|i| i / 10)).into_array() ).unwrap())] diff --git a/encodings/runend/src/compute/take.rs b/encodings/runend/src/compute/take.rs index f07a44cd3af..e2104499621 100644 --- a/encodings/runend/src/compute/take.rs +++ b/encodings/runend/src/compute/take.rs @@ -4,7 +4,7 @@ use num_traits::AsPrimitive; use num_traits::NumCast; use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::ToCanonical; @@ -20,7 +20,7 @@ use vortex_error::VortexResult; use vortex_error::vortex_bail; use crate::RunEnd; -use crate::RunEndArray; +use crate::RunEndData; impl TakeExecute for RunEnd { #[expect( @@ -28,7 +28,7 @@ impl TakeExecute for RunEnd { reason = "index cast to usize inside macro" )] fn take( - array: &RunEndArray, + array: ArrayView<'_, Self>, indices: &ArrayRef, ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -49,13 +49,13 @@ impl TakeExecute for RunEnd { .collect::>>()? }); - take_indices_unchecked(array, &checked_indices, &primitive_indices.validity()).map(Some) + take_indices_unchecked(&array, &checked_indices, &primitive_indices.validity()).map(Some) } } /// Perform a take operation on a RunEndArray by binary searching for each of the indices. pub fn take_indices_unchecked>( - array: &RunEndArray, + array: &RunEndData, indices: &[T], validity: &Validity, ) -> VortexResult { @@ -92,7 +92,6 @@ mod test { use rstest::rstest; use vortex_array::ArrayRef; use vortex_array::Canonical; - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::LEGACY_SESSION; use vortex_array::VortexSessionExecute; @@ -101,10 +100,11 @@ mod test { use vortex_array::compute::conformance::take::test_take_conformance; use vortex_buffer::buffer; + use crate::RunEnd; use crate::RunEndArray; fn ree_array() -> RunEndArray { - RunEndArray::encode(buffer![1, 1, 1, 4, 4, 4, 2, 2, 5, 5, 5, 5].into_array()).unwrap() + RunEnd::encode(buffer![1, 1, 1, 4, 4, 4, 2, 2, 5, 5, 5, 5].into_array()).unwrap() } #[test] @@ -152,10 +152,10 @@ mod test { #[rstest] #[case(ree_array())] - #[case(RunEndArray::encode( + #[case(RunEnd::encode( buffer![1u8, 1, 2, 2, 2, 3, 3, 3, 3, 4].into_array(), ).unwrap())] - #[case(RunEndArray::encode( + #[case(RunEnd::encode( PrimitiveArray::from_option_iter([ Some(10), Some(10), @@ -167,9 +167,9 @@ mod test { ]) .into_array(), ).unwrap())] - #[case(RunEndArray::encode(buffer![42i32, 42, 42, 42, 42].into_array()) + #[case(RunEnd::encode(buffer![42i32, 42, 42, 42, 42].into_array()) .unwrap())] - #[case(RunEndArray::encode( + #[case(RunEnd::encode( buffer![1i32, 2, 3, 4, 5, 6, 7, 8, 9, 10].into_array(), ).unwrap())] #[case({ @@ -179,7 +179,7 @@ mod test { values.push(i); } } - RunEndArray::encode(PrimitiveArray::from_iter(values).into_array()).unwrap() + RunEnd::encode(PrimitiveArray::from_iter(values).into_array()).unwrap() })] fn test_take_runend_conformance(#[case] array: RunEndArray) { test_take_conformance(&array.into_array()); @@ -188,7 +188,7 @@ mod test { #[rstest] #[case(ree_array().slice(3..6).unwrap())] #[case({ - let array = RunEndArray::encode( + let array = RunEnd::encode( buffer![1i32, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3].into_array(), ) .unwrap(); diff --git a/encodings/runend/src/compute/take_from.rs b/encodings/runend/src/compute/take_from.rs index 12cb415bd12..85d3dcf4fae 100644 --- a/encodings/runend/src/compute/take_from.rs +++ b/encodings/runend/src/compute/take_from.rs @@ -2,16 +2,15 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::Dict; -use vortex_array::arrays::DictArray; use vortex_array::dtype::DType; use vortex_array::kernel::ExecuteParentKernel; use vortex_error::VortexResult; use crate::RunEnd; -use crate::RunEndArray; #[derive(Debug)] pub(crate) struct RunEndTakeFrom; @@ -21,8 +20,8 @@ impl ExecuteParentKernel for RunEndTakeFrom { fn execute_parent( &self, - array: &RunEndArray, - dict: &DictArray, + array: ArrayView<'_, RunEnd>, + dict: ArrayView<'_, Dict>, child_idx: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -38,7 +37,7 @@ impl ExecuteParentKernel for RunEndTakeFrom { // Create a new run-end array containing values as values, instead of indices as values. // SAFETY: we are copying ends from an existing valid RunEndArray let ree_array = unsafe { - RunEndArray::new_unchecked( + RunEnd::new_unchecked( array.ends().clone(), dict.values().take(array.values().clone())?, array.offset(), @@ -52,7 +51,6 @@ impl ExecuteParentKernel for RunEndTakeFrom { #[cfg(test)] mod tests { - use vortex_array::DynArray; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::DictArray; @@ -63,6 +61,7 @@ mod tests { use vortex_error::VortexResult; use vortex_session::VortexSession; + use crate::RunEnd; use crate::RunEndArray; use crate::compute::take_from::RunEndTakeFrom; @@ -73,7 +72,7 @@ mod tests { /// Codes: `[0, 0, 0, 1, 1, 0, 0]` /// RunEnd encoded codes: ends=`[3, 5, 7]`, values=`[0, 1, 0]` fn make_dict_with_runend_codes() -> (RunEndArray, DictArray) { - let codes = RunEndArray::encode(buffer![0u32, 0, 0, 1, 1, 0, 0].into_array()).unwrap(); + let codes = RunEnd::encode(buffer![0u32, 0, 0, 1, 1, 0, 0].into_array()).unwrap(); let values = buffer![2i32, 3].into_array(); let dict = DictArray::try_new(codes.clone().into_array(), values).unwrap(); (codes, dict) @@ -85,7 +84,7 @@ mod tests { let mut ctx = ExecutionCtx::new(VortexSession::empty()); let result = RunEndTakeFrom - .execute_parent(&codes, &dict, 0, &mut ctx)? + .execute_parent(codes.as_view(), dict.as_view(), 0, &mut ctx)? .expect("kernel should return Some"); let expected = PrimitiveArray::from_iter([2i32, 2, 2, 3, 3, 2, 2]); @@ -98,7 +97,7 @@ mod tests { let (codes, dict) = make_dict_with_runend_codes(); // Slice codes to positions 2..5 → logical codes [0, 1, 1] → values [2, 3, 3] let sliced_codes = unsafe { - RunEndArray::new_unchecked( + RunEnd::new_unchecked( codes.ends().clone(), codes.values().clone(), 2, // offset @@ -108,7 +107,7 @@ mod tests { let mut ctx = ExecutionCtx::new(VortexSession::empty()); let result = RunEndTakeFrom - .execute_parent(&sliced_codes, &dict, 0, &mut ctx)? + .execute_parent(sliced_codes.as_view(), dict.as_view(), 0, &mut ctx)? .expect("kernel should return Some"); let expected = PrimitiveArray::from_iter([2i32, 3, 3]); @@ -121,7 +120,7 @@ mod tests { let (codes, dict) = make_dict_with_runend_codes(); // Slice codes to positions 3..7 → logical codes [1, 1, 0, 0] → values [3, 3, 2, 2] let sliced_codes = unsafe { - RunEndArray::new_unchecked( + RunEnd::new_unchecked( codes.ends().clone(), codes.values().clone(), 3, // offset at exact run boundary @@ -131,7 +130,7 @@ mod tests { let mut ctx = ExecutionCtx::new(VortexSession::empty()); let result = RunEndTakeFrom - .execute_parent(&sliced_codes, &dict, 0, &mut ctx)? + .execute_parent(sliced_codes.as_view(), dict.as_view(), 0, &mut ctx)? .expect("kernel should return Some"); let expected = PrimitiveArray::from_iter([3i32, 3, 2, 2]); @@ -144,7 +143,7 @@ mod tests { let (codes, dict) = make_dict_with_runend_codes(); // Slice to single element at position 4 → code=1 → value=3 let sliced_codes = unsafe { - RunEndArray::new_unchecked( + RunEnd::new_unchecked( codes.ends().slice(1..3)?, codes.values().slice(1..3)?, 4, // offset @@ -154,7 +153,7 @@ mod tests { let mut ctx = ExecutionCtx::new(VortexSession::empty()); let result = RunEndTakeFrom - .execute_parent(&sliced_codes, &dict, 0, &mut ctx)? + .execute_parent(sliced_codes.as_view(), dict.as_view(), 0, &mut ctx)? .expect("kernel should return Some"); let expected = PrimitiveArray::from_iter([3i32]); @@ -167,7 +166,7 @@ mod tests { let (codes, dict) = make_dict_with_runend_codes(); let mut ctx = ExecutionCtx::new(VortexSession::empty()); - let result = RunEndTakeFrom.execute_parent(&codes, &dict, 1, &mut ctx)?; + let result = RunEndTakeFrom.execute_parent(codes.as_view(), dict.as_view(), 1, &mut ctx)?; assert!(result.is_none()); Ok(()) } diff --git a/encodings/runend/src/kernel.rs b/encodings/runend/src/kernel.rs index 42a51da7070..2ca1586bb51 100644 --- a/encodings/runend/src/kernel.rs +++ b/encodings/runend/src/kernel.rs @@ -4,11 +4,11 @@ use std::ops::Range; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::ConstantArray; use vortex_array::arrays::Slice; -use vortex_array::arrays::SliceArray; use vortex_array::arrays::dict::TakeExecuteAdaptor; use vortex_array::arrays::filter::FilterExecuteAdaptor; use vortex_array::kernel::ExecuteParentKernel; @@ -17,7 +17,7 @@ use vortex_array::scalar_fn::fns::binary::CompareExecuteAdaptor; use vortex_error::VortexResult; use crate::RunEnd; -use crate::RunEndArray; +use crate::RunEndData; use crate::compute::take_from::RunEndTakeFrom; pub(super) const PARENT_KERNELS: ParentKernelSet = ParentKernelSet::new(&[ @@ -40,16 +40,16 @@ impl ExecuteParentKernel for RunEndSliceKernel { fn execute_parent( &self, - array: &RunEndArray, - parent: &SliceArray, + array: ArrayView<'_, RunEnd>, + parent: ArrayView<'_, Slice>, _child_idx: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult> { - slice(array, parent.slice_range().clone()).map(Some) + slice(&array, parent.slice_range().clone()).map(Some) } } -fn slice(array: &RunEndArray, range: Range) -> VortexResult { +fn slice(array: &RunEndData, range: Range) -> VortexResult { let new_length = range.len(); let slice_begin = array.find_physical_index(range.start)?; @@ -63,7 +63,7 @@ fn slice(array: &RunEndArray, range: Range) -> VortexResult { // SAFETY: we maintain the ends invariant in our slice implementation Ok(unsafe { - RunEndArray::new_unchecked( + RunEndData::new_unchecked( array.ends().slice(slice_begin..slice_end)?, array.values().slice(slice_begin..slice_end)?, range.start + array.offset(), diff --git a/encodings/runend/src/ops.rs b/encodings/runend/src/ops.rs index 098f4b35051..d0d6716d5ad 100644 --- a/encodings/runend/src/ops.rs +++ b/encodings/runend/src/ops.rs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::scalar::PValue; use vortex_array::scalar::Scalar; @@ -12,11 +13,10 @@ use vortex_array::vtable::OperationsVTable; use vortex_error::VortexResult; use crate::RunEnd; -use crate::RunEndArray; impl OperationsVTable for RunEnd { fn scalar_at( - array: &RunEndArray, + array: ArrayView<'_, RunEnd>, index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { @@ -47,7 +47,6 @@ pub(crate) fn find_slice_end_index(array: &ArrayRef, index: usize) -> VortexResu #[cfg(test)] mod tests { - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::LEGACY_SESSION; use vortex_array::VortexSessionExecute; @@ -59,11 +58,11 @@ mod tests { use vortex_array::dtype::PType; use vortex_buffer::buffer; - use crate::RunEndArray; + use crate::RunEnd; #[test] fn slice_array() { - let arr = RunEndArray::try_new( + let arr = RunEnd::try_new( buffer![2u32, 5, 10].into_array(), buffer![1i32, 2, 3].into_array(), ) @@ -82,7 +81,7 @@ mod tests { #[test] fn double_slice() { - let arr = RunEndArray::try_new( + let arr = RunEnd::try_new( buffer![2u32, 5, 10].into_array(), buffer![1i32, 2, 3].into_array(), ) @@ -99,7 +98,7 @@ mod tests { #[test] fn slice_end_inclusive() { - let arr = RunEndArray::try_new( + let arr = RunEnd::try_new( buffer![2u32, 5, 10].into_array(), buffer![1i32, 2, 3].into_array(), ) @@ -118,7 +117,7 @@ mod tests { #[test] fn slice_at_end() { - let re_array = RunEndArray::try_new( + let re_array = RunEnd::try_new( buffer![7_u64, 10].into_array(), buffer![2_u64, 3].into_array(), ) @@ -132,7 +131,7 @@ mod tests { #[test] fn slice_single_end() { - let re_array = RunEndArray::try_new( + let re_array = RunEnd::try_new( buffer![7_u64, 10].into_array(), buffer![2_u64, 3].into_array(), ) @@ -148,7 +147,7 @@ mod tests { #[test] fn ree_scalar_at_end() { - let scalar = RunEndArray::encode(buffer![1, 1, 1, 4, 4, 4, 2, 2, 5, 5, 5, 5].into_array()) + let scalar = RunEnd::encode(buffer![1, 1, 1, 4, 4, 4, 2, 2, 5, 5, 5, 5].into_array()) .unwrap() .scalar_at(11) .unwrap(); @@ -160,7 +159,7 @@ mod tests { fn slice_along_run_boundaries() { // Create a runend array with runs: [1, 1, 1] [4, 4, 4] [2, 2] [5, 5, 5, 5] // Run ends at indices: 3, 6, 8, 12 - let arr = RunEndArray::try_new( + let arr = RunEnd::try_new( buffer![3u32, 6, 8, 12].into_array(), buffer![1i32, 4, 2, 5].into_array(), ) diff --git a/encodings/runend/src/rules.rs b/encodings/runend/src/rules.rs index 06f56fbafb3..4ad3db969c3 100644 --- a/encodings/runend/src/rules.rs +++ b/encodings/runend/src/rules.rs @@ -2,11 +2,13 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::arrays::Constant; use vortex_array::arrays::ConstantArray; use vortex_array::arrays::ScalarFnArray; use vortex_array::arrays::scalar_fn::AnyScalarFn; +use vortex_array::arrays::scalar_fn::ScalarFnVTable; use vortex_array::dtype::DType; use vortex_array::optimizer::rules::ArrayParentReduceRule; use vortex_array::optimizer::rules::ParentRuleSet; @@ -15,7 +17,7 @@ use vortex_array::scalar_fn::fns::fill_null::FillNullReduceAdaptor; use vortex_error::VortexResult; use crate::RunEnd; -use crate::RunEndArray; +use crate::RunEndData; pub(super) const RULES: ParentRuleSet = ParentRuleSet::new(&[ // CastReduceAdaptor must come before RunEndScalarFnRule so that cast operations are executed @@ -37,8 +39,8 @@ impl ArrayParentReduceRule for RunEndScalarFnRule { fn reduce_parent( &self, - run_end: &RunEndArray, - parent: &ScalarFnArray, + run_end: ArrayView<'_, RunEnd>, + parent: ArrayView<'_, ScalarFnVTable>, child_idx: usize, ) -> VortexResult> { for (idx, child) in parent.iter_children().enumerate() { @@ -79,7 +81,7 @@ impl ArrayParentReduceRule for RunEndScalarFnRule { Ok(Some( unsafe { - RunEndArray::new_unchecked( + RunEndData::new_unchecked( run_end.ends().clone(), new_values, run_end.offset(), diff --git a/encodings/sequence/public-api.lock b/encodings/sequence/public-api.lock index 5fbfde94fb4..95ccfef438c 100644 --- a/encodings/sequence/public-api.lock +++ b/encodings/sequence/public-api.lock @@ -4,7 +4,11 @@ pub struct vortex_sequence::Sequence impl vortex_sequence::Sequence -pub const vortex_sequence::Sequence::ID: vortex_array::vtable::dyn_::ArrayId +pub const vortex_sequence::Sequence::ID: vortex_array::array::ArrayId + +pub fn vortex_sequence::Sequence::try_new(base: vortex_array::scalar::typed_view::primitive::pvalue::PValue, multiplier: vortex_array::scalar::typed_view::primitive::pvalue::PValue, ptype: vortex_array::dtype::ptype::PType, nullability: vortex_array::dtype::nullability::Nullability, length: usize) -> vortex_error::VortexResult + +pub fn vortex_sequence::Sequence::try_new_typed>(base: T, multiplier: T, nullability: vortex_array::dtype::nullability::Nullability, length: usize) -> vortex_error::VortexResult impl core::clone::Clone for vortex_sequence::Sequence @@ -14,148 +18,142 @@ impl core::fmt::Debug for vortex_sequence::Sequence pub fn vortex_sequence::Sequence::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::take::TakeExecute for vortex_sequence::Sequence - -pub fn vortex_sequence::Sequence::take(array: &vortex_sequence::SequenceArray, indices: &vortex_array::array::ArrayRef, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::arrays::filter::kernel::FilterKernel for vortex_sequence::Sequence +impl vortex_array::array::vtable::VTable for vortex_sequence::Sequence -pub fn vortex_sequence::Sequence::filter(array: &vortex_sequence::SequenceArray, mask: &vortex_mask::Mask, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub type vortex_sequence::Sequence::ArrayData = vortex_sequence::SequenceData -impl vortex_array::arrays::slice::SliceReduce for vortex_sequence::Sequence - -pub fn vortex_sequence::Sequence::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub type vortex_sequence::Sequence::Metadata = vortex_sequence::array::SequenceMetadata -impl vortex_array::scalar_fn::fns::binary::compare::CompareKernel for vortex_sequence::Sequence +pub type vortex_sequence::Sequence::OperationsVTable = vortex_sequence::Sequence -pub fn vortex_sequence::Sequence::compare(lhs: &vortex_sequence::SequenceArray, rhs: &vortex_array::array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub type vortex_sequence::Sequence::ValidityVTable = vortex_sequence::Sequence -impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_sequence::Sequence +pub fn vortex_sequence::Sequence::array_eq(array: &vortex_sequence::SequenceData, other: &vortex_sequence::SequenceData, _precision: vortex_array::hash::Precision) -> bool -pub fn vortex_sequence::Sequence::cast(array: &vortex_sequence::SequenceArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_sequence::Sequence::array_hash(array: &vortex_sequence::SequenceData, state: &mut H, _precision: vortex_array::hash::Precision) -impl vortex_array::scalar_fn::fns::list_contains::kernel::ListContainsElementReduce for vortex_sequence::Sequence +pub fn vortex_sequence::Sequence::buffer(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_sequence::Sequence::list_contains(list: &vortex_array::array::ArrayRef, element: &Self::Array) -> vortex_error::VortexResult> +pub fn vortex_sequence::Sequence::buffer_name(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> core::option::Option -impl vortex_array::vtable::VTable for vortex_sequence::Sequence +pub fn vortex_sequence::Sequence::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], _children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub type vortex_sequence::Sequence::Array = vortex_sequence::SequenceArray +pub fn vortex_sequence::Sequence::deserialize(bytes: &[u8], dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_sequence::Sequence::Metadata = vortex_sequence::array::SequenceMetadata +pub fn vortex_sequence::Sequence::dtype(array: &vortex_sequence::SequenceData) -> &vortex_array::dtype::DType -pub type vortex_sequence::Sequence::OperationsVTable = vortex_sequence::Sequence +pub fn vortex_sequence::Sequence::execute(array: vortex_array::array::typed::Array, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_sequence::Sequence::ValidityVTable = vortex_sequence::Sequence +pub fn vortex_sequence::Sequence::execute_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_sequence::Sequence::array_eq(array: &vortex_sequence::SequenceArray, other: &vortex_sequence::SequenceArray, _precision: vortex_array::hash::Precision) -> bool +pub fn vortex_sequence::Sequence::id(&self) -> vortex_array::array::ArrayId -pub fn vortex_sequence::Sequence::array_hash(array: &vortex_sequence::SequenceArray, state: &mut H, _precision: vortex_array::hash::Precision) +pub fn vortex_sequence::Sequence::len(array: &vortex_sequence::SequenceData) -> usize -pub fn vortex_sequence::Sequence::buffer(_array: &vortex_sequence::SequenceArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_sequence::Sequence::metadata(array: vortex_array::array::view::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_sequence::Sequence::buffer_name(_array: &vortex_sequence::SequenceArray, idx: usize) -> core::option::Option +pub fn vortex_sequence::Sequence::nbuffers(_array: vortex_array::array::view::ArrayView<'_, Self>) -> usize -pub fn vortex_sequence::Sequence::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], _children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_sequence::Sequence::reduce_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_sequence::Sequence::deserialize(bytes: &[u8], dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_sequence::Sequence::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_sequence::Sequence::dtype(array: &vortex_sequence::SequenceArray) -> &vortex_array::dtype::DType +pub fn vortex_sequence::Sequence::slot_name(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_sequence::Sequence::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_sequence::Sequence::slots(array: vortex_array::array::view::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_sequence::Sequence::execute_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_sequence::Sequence::stats(array: &vortex_sequence::SequenceData) -> &vortex_array::stats::array::ArrayStats -pub fn vortex_sequence::Sequence::id(&self) -> vortex_array::vtable::dyn_::ArrayId +pub fn vortex_sequence::Sequence::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_sequence::Sequence::len(array: &vortex_sequence::SequenceArray) -> usize +pub fn vortex_sequence::Sequence::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_sequence::Sequence::metadata(array: &vortex_sequence::SequenceArray) -> vortex_error::VortexResult +impl vortex_array::array::vtable::operations::OperationsVTable for vortex_sequence::Sequence -pub fn vortex_sequence::Sequence::nbuffers(_array: &vortex_sequence::SequenceArray) -> usize +pub fn vortex_sequence::Sequence::scalar_at(array: vortex_array::array::view::ArrayView<'_, vortex_sequence::Sequence>, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_sequence::Sequence::reduce_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +impl vortex_array::array::vtable::validity::ValidityVTable for vortex_sequence::Sequence -pub fn vortex_sequence::Sequence::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_sequence::Sequence::validity(_array: vortex_array::array::view::ArrayView<'_, vortex_sequence::Sequence>) -> vortex_error::VortexResult -pub fn vortex_sequence::Sequence::slot_name(_array: &vortex_sequence::SequenceArray, idx: usize) -> alloc::string::String - -pub fn vortex_sequence::Sequence::slots(array: &vortex_sequence::SequenceArray) -> &[core::option::Option] +impl vortex_array::arrays::dict::take::TakeExecute for vortex_sequence::Sequence -pub fn vortex_sequence::Sequence::stats(array: &vortex_sequence::SequenceArray) -> vortex_array::stats::array::StatsSetRef<'_> +pub fn vortex_sequence::Sequence::take(array: vortex_array::array::view::ArrayView<'_, Self>, indices: &vortex_array::array::erased::ArrayRef, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_sequence::Sequence::vtable(_array: &Self::Array) -> &Self +impl vortex_array::arrays::filter::kernel::FilterKernel for vortex_sequence::Sequence -pub fn vortex_sequence::Sequence::with_slots(array: &mut vortex_sequence::SequenceArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_sequence::Sequence::filter(array: vortex_array::array::view::ArrayView<'_, Self>, mask: &vortex_mask::Mask, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::vtable::operations::OperationsVTable for vortex_sequence::Sequence +impl vortex_array::arrays::slice::SliceReduce for vortex_sequence::Sequence -pub fn vortex_sequence::Sequence::scalar_at(array: &vortex_sequence::SequenceArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_sequence::Sequence::slice(array: vortex_array::array::view::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -impl vortex_array::vtable::validity::ValidityVTable for vortex_sequence::Sequence +impl vortex_array::scalar_fn::fns::binary::compare::CompareKernel for vortex_sequence::Sequence -pub fn vortex_sequence::Sequence::validity(_array: &vortex_sequence::SequenceArray) -> vortex_error::VortexResult +pub fn vortex_sequence::Sequence::compare(lhs: vortex_array::array::view::ArrayView<'_, Self>, rhs: &vortex_array::array::erased::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub struct vortex_sequence::SequenceArray +impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_sequence::Sequence -impl vortex_sequence::SequenceArray +pub fn vortex_sequence::Sequence::cast(array: vortex_array::array::view::ArrayView<'_, Self>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_sequence::SequenceArray::base(&self) -> vortex_array::scalar::typed_view::primitive::pvalue::PValue +impl vortex_array::scalar_fn::fns::list_contains::kernel::ListContainsElementReduce for vortex_sequence::Sequence -pub fn vortex_sequence::SequenceArray::into_parts(self) -> vortex_sequence::SequenceArrayParts +pub fn vortex_sequence::Sequence::list_contains(list: &vortex_array::array::erased::ArrayRef, element: vortex_array::array::view::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_sequence::SequenceArray::last(&self) -> vortex_array::scalar::typed_view::primitive::pvalue::PValue +pub struct vortex_sequence::SequenceArrayParts -pub fn vortex_sequence::SequenceArray::multiplier(&self) -> vortex_array::scalar::typed_view::primitive::pvalue::PValue +pub vortex_sequence::SequenceArrayParts::base: vortex_array::scalar::typed_view::primitive::pvalue::PValue -pub fn vortex_sequence::SequenceArray::ptype(&self) -> vortex_array::dtype::ptype::PType +pub vortex_sequence::SequenceArrayParts::len: usize -pub fn vortex_sequence::SequenceArray::try_new(base: vortex_array::scalar::typed_view::primitive::pvalue::PValue, multiplier: vortex_array::scalar::typed_view::primitive::pvalue::PValue, ptype: vortex_array::dtype::ptype::PType, nullability: vortex_array::dtype::nullability::Nullability, length: usize) -> vortex_error::VortexResult +pub vortex_sequence::SequenceArrayParts::multiplier: vortex_array::scalar::typed_view::primitive::pvalue::PValue -pub fn vortex_sequence::SequenceArray::try_new_typed>(base: T, multiplier: T, nullability: vortex_array::dtype::nullability::Nullability, length: usize) -> vortex_error::VortexResult +pub vortex_sequence::SequenceArrayParts::nullability: vortex_array::dtype::nullability::Nullability -impl vortex_sequence::SequenceArray +pub vortex_sequence::SequenceArrayParts::ptype: vortex_array::dtype::ptype::PType -pub fn vortex_sequence::SequenceArray::to_array(&self) -> vortex_array::array::ArrayRef +pub struct vortex_sequence::SequenceData -impl core::clone::Clone for vortex_sequence::SequenceArray +impl vortex_sequence::SequenceData -pub fn vortex_sequence::SequenceArray::clone(&self) -> vortex_sequence::SequenceArray +pub fn vortex_sequence::SequenceData::base(&self) -> vortex_array::scalar::typed_view::primitive::pvalue::PValue -impl core::convert::AsRef for vortex_sequence::SequenceArray +pub fn vortex_sequence::SequenceData::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_sequence::SequenceArray::as_ref(&self) -> &dyn vortex_array::array::DynArray +pub fn vortex_sequence::SequenceData::into_parts(self) -> vortex_sequence::SequenceArrayParts -impl core::convert::From for vortex_array::array::ArrayRef +pub fn vortex_sequence::SequenceData::is_empty(&self) -> bool -pub fn vortex_array::array::ArrayRef::from(value: vortex_sequence::SequenceArray) -> vortex_array::array::ArrayRef +pub fn vortex_sequence::SequenceData::last(&self) -> vortex_array::scalar::typed_view::primitive::pvalue::PValue -impl core::fmt::Debug for vortex_sequence::SequenceArray +pub fn vortex_sequence::SequenceData::len(&self) -> usize -pub fn vortex_sequence::SequenceArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_sequence::SequenceData::multiplier(&self) -> vortex_array::scalar::typed_view::primitive::pvalue::PValue -impl core::ops::deref::Deref for vortex_sequence::SequenceArray +pub fn vortex_sequence::SequenceData::ptype(&self) -> vortex_array::dtype::ptype::PType -pub type vortex_sequence::SequenceArray::Target = dyn vortex_array::array::DynArray +pub fn vortex_sequence::SequenceData::try_new(base: vortex_array::scalar::typed_view::primitive::pvalue::PValue, multiplier: vortex_array::scalar::typed_view::primitive::pvalue::PValue, ptype: vortex_array::dtype::ptype::PType, nullability: vortex_array::dtype::nullability::Nullability, length: usize) -> vortex_error::VortexResult -pub fn vortex_sequence::SequenceArray::deref(&self) -> &Self::Target +pub fn vortex_sequence::SequenceData::try_new_typed>(base: T, multiplier: T, nullability: vortex_array::dtype::nullability::Nullability, length: usize) -> vortex_error::VortexResult -impl vortex_array::array::IntoArray for vortex_sequence::SequenceArray +impl core::clone::Clone for vortex_sequence::SequenceData -pub fn vortex_sequence::SequenceArray::into_array(self) -> vortex_array::array::ArrayRef +pub fn vortex_sequence::SequenceData::clone(&self) -> vortex_sequence::SequenceData -pub struct vortex_sequence::SequenceArrayParts +impl core::convert::From for vortex_array::array::erased::ArrayRef -pub vortex_sequence::SequenceArrayParts::base: vortex_array::scalar::typed_view::primitive::pvalue::PValue +pub fn vortex_array::array::erased::ArrayRef::from(value: vortex_sequence::SequenceData) -> vortex_array::array::erased::ArrayRef -pub vortex_sequence::SequenceArrayParts::len: usize +impl core::fmt::Debug for vortex_sequence::SequenceData -pub vortex_sequence::SequenceArrayParts::multiplier: vortex_array::scalar::typed_view::primitive::pvalue::PValue +pub fn vortex_sequence::SequenceData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub vortex_sequence::SequenceArrayParts::nullability: vortex_array::dtype::nullability::Nullability +impl vortex_array::array::IntoArray for vortex_sequence::SequenceData -pub vortex_sequence::SequenceArrayParts::ptype: vortex_array::dtype::ptype::PType +pub fn vortex_sequence::SequenceData::into_array(self) -> vortex_array::array::erased::ArrayRef pub fn vortex_sequence::initialize(session: &mut vortex_session::VortexSession) -pub fn vortex_sequence::sequence_encode(primitive_array: &vortex_array::arrays::primitive::array::PrimitiveArray) -> vortex_error::VortexResult> +pub fn vortex_sequence::sequence_encode(primitive_array: &vortex_array::arrays::primitive::vtable::PrimitiveArray) -> vortex_error::VortexResult> + +pub type vortex_sequence::SequenceArray = vortex_array::array::typed::Array diff --git a/encodings/sequence/src/array.rs b/encodings/sequence/src/array.rs index ad50e0d1e93..4b38b5f9124 100644 --- a/encodings/sequence/src/array.rs +++ b/encodings/sequence/src/array.rs @@ -2,10 +2,12 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use std::hash::Hash; -use std::sync::Arc; use num_traits::cast::FromPrimitive; +use vortex_array::Array; +use vortex_array::ArrayId; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::DeserializeMetadata; use vortex_array::ExecutionCtx; use vortex_array::ExecutionResult; @@ -29,11 +31,8 @@ use vortex_array::scalar::ScalarValue; use vortex_array::serde::ArrayChildren; use vortex_array::stats::ArrayStats; use vortex_array::stats::StatsSet; -use vortex_array::stats::StatsSetRef; use vortex_array::validity::Validity; use vortex_array::vtable; -use vortex_array::vtable::Array; -use vortex_array::vtable::ArrayId; use vortex_array::vtable::OperationsVTable; use vortex_array::vtable::VTable; use vortex_array::vtable::ValidityVTable; @@ -49,7 +48,7 @@ use crate::compress::sequence_decompress; use crate::kernel::PARENT_KERNELS; use crate::rules::RULES; -vtable!(Sequence); +vtable!(Sequence, Sequence, SequenceData); #[derive(Debug, Clone, Copy)] pub struct SequenceMetadata { @@ -78,7 +77,7 @@ pub(super) const SLOT_NAMES: [&str; 0] = []; #[derive(Clone, Debug)] /// An array representing the equation `A[i] = base + i * multiplier`. -pub struct SequenceArray { +pub struct SequenceData { base: PValue, multiplier: PValue, dtype: DType, @@ -87,7 +86,7 @@ pub struct SequenceArray { stats_set: ArrayStats, } -impl SequenceArray { +impl SequenceData { pub fn try_new_typed>( base: T, multiplier: T, @@ -177,6 +176,24 @@ impl SequenceArray { } } + /// Returns the length of the array. + #[inline] + pub fn len(&self) -> usize { + self.len + } + + /// Returns whether the array is empty. + #[inline] + pub fn is_empty(&self) -> bool { + self.len == 0 + } + + /// Returns the logical data type of the array. + #[inline] + pub fn dtype(&self) -> &DType { + &self.dtype + } + pub fn ptype(&self) -> PType { self.dtype.as_ptype() } @@ -242,13 +259,13 @@ impl SequenceArray { } impl VTable for Sequence { - type Array = SequenceArray; + type ArrayData = SequenceData; type Metadata = SequenceMetadata; type OperationsVTable = Self; type ValidityVTable = Self; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &Self::ArrayData) -> &Self { &Sequence } @@ -256,49 +273,44 @@ impl VTable for Sequence { Self::ID } - fn len(array: &SequenceArray) -> usize { + fn len(array: &SequenceData) -> usize { array.len } - fn dtype(array: &SequenceArray) -> &DType { + fn dtype(array: &SequenceData) -> &DType { &array.dtype } - fn stats(array: &SequenceArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &SequenceData) -> &ArrayStats { + &array.stats_set } fn array_hash( - array: &SequenceArray, + array: &SequenceData, state: &mut H, _precision: Precision, ) { array.base.hash(state); array.multiplier.hash(state); - array.dtype.hash(state); - array.len.hash(state); } - fn array_eq(array: &SequenceArray, other: &SequenceArray, _precision: Precision) -> bool { - array.base == other.base - && array.multiplier == other.multiplier - && array.dtype == other.dtype - && array.len == other.len + fn array_eq(array: &SequenceData, other: &SequenceData, _precision: Precision) -> bool { + array.base == other.base && array.multiplier == other.multiplier } - fn nbuffers(_array: &SequenceArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 0 } - fn buffer(_array: &SequenceArray, idx: usize) -> BufferHandle { + fn buffer(_array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { vortex_panic!("SequenceArray buffer index {idx} out of bounds") } - fn buffer_name(_array: &SequenceArray, idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, idx: usize) -> Option { vortex_panic!("SequenceArray buffer_name index {idx} out of bounds") } - fn metadata(array: &SequenceArray) -> VortexResult { + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { Ok(SequenceMetadata { base: array.base(), multiplier: array.multiplier(), @@ -360,8 +372,8 @@ impl VTable for Sequence { metadata: &Self::Metadata, _buffers: &[BufferHandle], _children: &dyn ArrayChildren, - ) -> VortexResult { - SequenceArray::try_new( + ) -> VortexResult { + SequenceData::try_new( metadata.base, metadata.multiplier, dtype.as_ptype(), @@ -370,16 +382,15 @@ impl VTable for Sequence { ) } - fn slots(array: &SequenceArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &SequenceArray, idx: usize) -> String { - let _ = SLOT_NAMES; - vortex_panic!("SequenceArray has no slots, requested index {idx}") + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { + SLOT_NAMES[idx].to_string() } - fn with_slots(array: &mut SequenceArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.is_empty(), "SequenceArray expects 0 slots, got {}", @@ -389,12 +400,12 @@ impl VTable for Sequence { Ok(()) } - fn execute(array: Arc>, _ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, _ctx: &mut ExecutionCtx) -> VortexResult { sequence_decompress(&array).map(ExecutionResult::done) } fn execute_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, @@ -403,7 +414,7 @@ impl VTable for Sequence { } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { @@ -413,7 +424,7 @@ impl VTable for Sequence { impl OperationsVTable for Sequence { fn scalar_at( - array: &SequenceArray, + array: ArrayView<'_, Sequence>, index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { @@ -425,7 +436,7 @@ impl OperationsVTable for Sequence { } impl ValidityVTable for Sequence { - fn validity(_array: &SequenceArray) -> VortexResult { + fn validity(_array: ArrayView<'_, Sequence>) -> VortexResult { Ok(Validity::AllValid) } } @@ -435,6 +446,38 @@ pub struct Sequence; impl Sequence { pub const ID: ArrayId = ArrayId::new_ref("vortex.sequence"); + + /// Construct a new [`SequenceArray`] from its components. + pub fn try_new( + base: PValue, + multiplier: PValue, + ptype: PType, + nullability: Nullability, + length: usize, + ) -> VortexResult { + Array::try_from_data(SequenceData::try_new( + base, + multiplier, + ptype, + nullability, + length, + )?) + } + + /// Construct a new typed [`SequenceArray`] from base/multiplier values. + pub fn try_new_typed>( + base: T, + multiplier: T, + nullability: Nullability, + length: usize, + ) -> VortexResult { + Array::try_from_data(SequenceData::try_new_typed( + base, + multiplier, + nullability, + length, + )?) + } } #[cfg(test)] @@ -449,11 +492,11 @@ mod tests { use vortex_array::scalar::ScalarValue; use vortex_error::VortexResult; - use crate::array::SequenceArray; + use crate::Sequence; #[test] fn test_sequence_canonical() { - let arr = SequenceArray::try_new_typed(2i64, 3, Nullability::NonNullable, 4).unwrap(); + let arr = Sequence::try_new_typed(2i64, 3, Nullability::NonNullable, 4).unwrap(); let canon = PrimitiveArray::from_iter((0..4).map(|i| 2i64 + i * 3)); @@ -462,7 +505,7 @@ mod tests { #[test] fn test_sequence_slice_canonical() { - let arr = SequenceArray::try_new_typed(2i64, 3, Nullability::NonNullable, 4) + let arr = Sequence::try_new_typed(2i64, 3, Nullability::NonNullable, 4) .unwrap() .slice(2..3) .unwrap(); @@ -474,7 +517,7 @@ mod tests { #[test] fn test_sequence_scalar_at() { - let scalar = SequenceArray::try_new_typed(2i64, 3, Nullability::NonNullable, 4) + let scalar = Sequence::try_new_typed(2i64, 3, Nullability::NonNullable, 4) .unwrap() .scalar_at(2) .unwrap(); @@ -487,19 +530,19 @@ mod tests { #[test] fn test_sequence_min_max() { - assert!(SequenceArray::try_new_typed(-127i8, -1i8, Nullability::NonNullable, 2).is_ok()); - assert!(SequenceArray::try_new_typed(126i8, -1i8, Nullability::NonNullable, 2).is_ok()); + assert!(Sequence::try_new_typed(-127i8, -1i8, Nullability::NonNullable, 2).is_ok()); + assert!(Sequence::try_new_typed(126i8, -1i8, Nullability::NonNullable, 2).is_ok()); } #[test] fn test_sequence_too_big() { - assert!(SequenceArray::try_new_typed(127i8, 1i8, Nullability::NonNullable, 2).is_err()); - assert!(SequenceArray::try_new_typed(-128i8, -1i8, Nullability::NonNullable, 2).is_err()); + assert!(Sequence::try_new_typed(127i8, 1i8, Nullability::NonNullable, 2).is_err()); + assert!(Sequence::try_new_typed(-128i8, -1i8, Nullability::NonNullable, 2).is_err()); } #[test] fn positive_multiplier_is_strict_sorted() -> VortexResult<()> { - let arr = SequenceArray::try_new_typed(0i64, 3, Nullability::NonNullable, 4)?; + let arr = Sequence::try_new_typed(0i64, 3, Nullability::NonNullable, 4)?; let is_sorted = arr .statistics() @@ -515,7 +558,7 @@ mod tests { #[test] fn zero_multiplier_is_sorted_not_strict() -> VortexResult<()> { - let arr = SequenceArray::try_new_typed(5i64, 0, Nullability::NonNullable, 4)?; + let arr = Sequence::try_new_typed(5i64, 0, Nullability::NonNullable, 4)?; let is_sorted = arr .statistics() @@ -531,7 +574,7 @@ mod tests { #[test] fn negative_multiplier_not_sorted() -> VortexResult<()> { - let arr = SequenceArray::try_new_typed(10i64, -1, Nullability::NonNullable, 4)?; + let arr = Sequence::try_new_typed(10i64, -1, Nullability::NonNullable, 4)?; let is_sorted = arr .statistics() @@ -550,7 +593,7 @@ mod tests { #[test] fn test_large_multiplier_sorted() -> VortexResult<()> { let large_multiplier = (i64::MAX as u64) + 1; - let arr = SequenceArray::try_new_typed(0, large_multiplier, Nullability::NonNullable, 2)?; + let arr = Sequence::try_new_typed(0, large_multiplier, Nullability::NonNullable, 2)?; let is_sorted = arr .statistics() diff --git a/encodings/sequence/src/compress.rs b/encodings/sequence/src/compress.rs index 09ffa47bc55..b073ace8dc2 100644 --- a/encodings/sequence/src/compress.rs +++ b/encodings/sequence/src/compress.rs @@ -19,8 +19,8 @@ use vortex_buffer::trusted_len::TrustedLen; use vortex_error::VortexResult; use crate::SequenceArray; - /// An iterator that yields `base, base + step, base + 2*step, ...` via repeated addition. +use crate::SequenceData; struct SequenceIter { acc: T, step: T, @@ -112,7 +112,7 @@ fn encode_primitive_array + CheckedAdd + CheckedSu ) -> VortexResult> { if slice.len() == 1 { // The multiplier here can be any value, zero is chosen - return SequenceArray::try_new_typed(slice[0], P::zero(), nullability, 1) + return SequenceData::try_new_typed(slice[0], P::zero(), nullability, 1) .map(|a| Some(a.into_array())); } let base = slice[0]; @@ -124,7 +124,7 @@ fn encode_primitive_array + CheckedAdd + CheckedSu return Ok(None); } - if SequenceArray::try_last(base.into(), multiplier.into(), P::PTYPE, slice.len()).is_err() { + if SequenceData::try_last(base.into(), multiplier.into(), P::PTYPE, slice.len()).is_err() { // If the last value is out of range, we cannot encode return Ok(None); } @@ -133,7 +133,7 @@ fn encode_primitive_array + CheckedAdd + CheckedSu .windows(2) .all(|w| Some(w[1]) == w[0].checked_add(&multiplier)) .then_some( - SequenceArray::try_new_typed(base, multiplier, nullability, slice.len()) + SequenceData::try_new_typed(base, multiplier, nullability, slice.len()) .map(|a| a.into_array()), ) .transpose() diff --git a/encodings/sequence/src/compute/cast.rs b/encodings/sequence/src/compute/cast.rs index 85a42b74c81..54f3393f16e 100644 --- a/encodings/sequence/src/compute/cast.rs +++ b/encodings/sequence/src/compute/cast.rs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; @@ -12,10 +13,9 @@ use vortex_error::VortexResult; use vortex_error::vortex_err; use crate::Sequence; -use crate::SequenceArray; - +use crate::SequenceData; impl CastReduce for Sequence { - fn cast(array: &SequenceArray, dtype: &DType) -> VortexResult> { + fn cast(array: ArrayView<'_, Self>, dtype: &DType) -> VortexResult> { // SequenceArray represents arithmetic sequences (base + i * multiplier) which // only makes sense for integer types. Floating-point sequences would accumulate // rounding errors, and other types don't support arithmetic operations. @@ -32,7 +32,7 @@ impl CastReduce for Sequence { // For SequenceArray, we can just create a new one with the same parameters // but different nullability return Ok(Some( - SequenceArray::try_new( + SequenceData::try_new( array.base(), array.multiplier(), *target_ptype, @@ -71,7 +71,7 @@ impl CastReduce for Sequence { .ok_or_else(|| vortex_err!("Cast resulted in null multiplier value"))?; return Ok(Some( - SequenceArray::try_new( + SequenceData::try_new( new_base, new_multiplier, *target_ptype, @@ -99,12 +99,12 @@ mod tests { use vortex_array::dtype::Nullability; use vortex_array::dtype::PType; + use crate::Sequence; use crate::SequenceArray; #[test] fn test_cast_sequence_nullability() { - let sequence = - SequenceArray::try_new_typed(0u32, 1u32, Nullability::NonNullable, 4).unwrap(); + let sequence = Sequence::try_new_typed(0u32, 1u32, Nullability::NonNullable, 4).unwrap(); // Cast to nullable let casted = sequence @@ -119,8 +119,7 @@ mod tests { #[test] fn test_cast_sequence_u32_to_i64() { - let sequence = - SequenceArray::try_new_typed(100u32, 10u32, Nullability::NonNullable, 4).unwrap(); + let sequence = Sequence::try_new_typed(100u32, 10u32, Nullability::NonNullable, 4).unwrap(); let casted = sequence .into_array() @@ -139,8 +138,7 @@ mod tests { #[test] fn test_cast_sequence_i16_to_i32_nullable() { // Test ptype change AND nullability change in one cast - let sequence = - SequenceArray::try_new_typed(5i16, 3i16, Nullability::NonNullable, 3).unwrap(); + let sequence = Sequence::try_new_typed(5i16, 3i16, Nullability::NonNullable, 3).unwrap(); let casted = sequence .into_array() @@ -161,8 +159,7 @@ mod tests { #[test] fn test_cast_sequence_to_float_delegates_to_canonical() { - let sequence = - SequenceArray::try_new_typed(0i32, 1i32, Nullability::NonNullable, 5).unwrap(); + let sequence = Sequence::try_new_typed(0i32, 1i32, Nullability::NonNullable, 5).unwrap(); // Cast to float should delegate to canonical (SequenceArray doesn't support float) let casted = sequence @@ -184,15 +181,15 @@ mod tests { } #[rstest] - #[case::i32(SequenceArray::try_new_typed(0i32, 1i32, Nullability::NonNullable, 5).unwrap())] - #[case::u64(SequenceArray::try_new_typed(1000u64, 100u64, Nullability::NonNullable, 4).unwrap())] + #[case::i32(Sequence::try_new_typed(0i32, 1i32, Nullability::NonNullable, 5).unwrap())] + #[case::u64(Sequence::try_new_typed(1000u64, 100u64, Nullability::NonNullable, 4).unwrap())] // TODO(DK): SequenceArray does not actually conform. You cannot cast this array to u8 even // though all its values are representable therein. // - // #[case::negative_step(SequenceArray::try_new_typed(100i32, -10i32, Nullability::NonNullable, + // #[case::negative_step(Sequence::try_new_typed(100i32, -10i32, Nullability::NonNullable, // 5).unwrap())] - #[case::single(SequenceArray::try_new_typed(42i64, 0i64, Nullability::NonNullable, 1).unwrap())] - #[case::constant(SequenceArray::try_new_typed( + #[case::single(Sequence::try_new_typed(42i64, 0i64, Nullability::NonNullable, 1).unwrap())] + #[case::constant(Sequence::try_new_typed( 100i32, 0i32, // multiplier of 0 means constant array Nullability::NonNullable, diff --git a/encodings/sequence/src/compute/compare.rs b/encodings/sequence/src/compute/compare.rs index 18ed08daa8a..c0c9d1367d6 100644 --- a/encodings/sequence/src/compute/compare.rs +++ b/encodings/sequence/src/compute/compare.rs @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::BoolArray; @@ -20,12 +20,11 @@ use vortex_error::VortexResult; use vortex_error::vortex_bail; use vortex_error::vortex_err; -use crate::SequenceArray; use crate::array::Sequence; impl CompareKernel for Sequence { fn compare( - lhs: &SequenceArray, + lhs: ArrayView<'_, Self>, rhs: &ArrayRef, operator: CompareOperator, _ctx: &mut ExecutionCtx, @@ -145,11 +144,11 @@ mod tests { use vortex_array::dtype::Nullability::Nullable; use vortex_array::scalar_fn::fns::operators::Operator; - use crate::SequenceArray; + use crate::Sequence; #[test] fn test_compare_match() { - let lhs = SequenceArray::try_new_typed(2i64, 1, NonNullable, 4).unwrap(); + let lhs = Sequence::try_new_typed(2i64, 1, NonNullable, 4).unwrap(); let rhs = ConstantArray::new(4i64, lhs.len()); let result = lhs .into_array() @@ -161,7 +160,7 @@ mod tests { #[test] fn test_compare_match_scale() { - let lhs = SequenceArray::try_new_typed(2i64, 3, Nullable, 4).unwrap(); + let lhs = Sequence::try_new_typed(2i64, 3, Nullable, 4).unwrap(); let rhs = ConstantArray::new(8i64, lhs.len()); let result = lhs .into_array() @@ -173,7 +172,7 @@ mod tests { #[test] fn test_compare_no_match() { - let lhs = SequenceArray::try_new_typed(2i64, 1, NonNullable, 4).unwrap(); + let lhs = Sequence::try_new_typed(2i64, 1, NonNullable, 4).unwrap(); let rhs = ConstantArray::new(1i64, lhs.len()); let result = lhs .into_array() diff --git a/encodings/sequence/src/compute/filter.rs b/encodings/sequence/src/compute/filter.rs index 9b49ce2bdd9..3ef24188fbf 100644 --- a/encodings/sequence/src/compute/filter.rs +++ b/encodings/sequence/src/compute/filter.rs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::PrimitiveArray; @@ -15,11 +16,10 @@ use vortex_error::VortexResult; use vortex_mask::Mask; use crate::Sequence; -use crate::SequenceArray; impl FilterKernel for Sequence { fn filter( - array: &SequenceArray, + array: ArrayView<'_, Self>, mask: &Mask, _ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -53,21 +53,22 @@ mod tests { use vortex_array::compute::conformance::filter::test_filter_conformance; use vortex_array::dtype::Nullability; + use crate::Sequence; use crate::SequenceArray; #[rstest] - #[case(SequenceArray::try_new_typed(0i32, 1, Nullability::NonNullable, 5).unwrap())] - #[case(SequenceArray::try_new_typed(10i32, 2, Nullability::NonNullable, 5).unwrap())] - #[case(SequenceArray::try_new_typed(100i32, -3, Nullability::NonNullable, 5).unwrap())] - #[case(SequenceArray::try_new_typed(0i32, 1, Nullability::NonNullable, 1).unwrap())] - #[case(SequenceArray::try_new_typed(0i32, 1, Nullability::NonNullable, MEDIUM_SIZE).unwrap())] - #[case(SequenceArray::try_new_typed(0i32, 1, Nullability::NonNullable, LARGE_SIZE).unwrap())] - #[case(SequenceArray::try_new_typed(0i64, 1, Nullability::NonNullable, 5).unwrap())] - #[case(SequenceArray::try_new_typed(1000i64, 50, Nullability::NonNullable, 5).unwrap())] - #[case(SequenceArray::try_new_typed(-100i64, 10, Nullability::NonNullable, MEDIUM_SIZE).unwrap())] - #[case(SequenceArray::try_new_typed(0u32, 1, Nullability::NonNullable, 5).unwrap())] - #[case(SequenceArray::try_new_typed(0u32, 5, Nullability::NonNullable, MEDIUM_SIZE).unwrap())] - #[case(SequenceArray::try_new_typed(0u64, 1, Nullability::NonNullable, LARGE_SIZE).unwrap())] + #[case(Sequence::try_new_typed(0i32, 1, Nullability::NonNullable, 5).unwrap())] + #[case(Sequence::try_new_typed(10i32, 2, Nullability::NonNullable, 5).unwrap())] + #[case(Sequence::try_new_typed(100i32, -3, Nullability::NonNullable, 5).unwrap())] + #[case(Sequence::try_new_typed(0i32, 1, Nullability::NonNullable, 1).unwrap())] + #[case(Sequence::try_new_typed(0i32, 1, Nullability::NonNullable, MEDIUM_SIZE).unwrap())] + #[case(Sequence::try_new_typed(0i32, 1, Nullability::NonNullable, LARGE_SIZE).unwrap())] + #[case(Sequence::try_new_typed(0i64, 1, Nullability::NonNullable, 5).unwrap())] + #[case(Sequence::try_new_typed(1000i64, 50, Nullability::NonNullable, 5).unwrap())] + #[case(Sequence::try_new_typed(-100i64, 10, Nullability::NonNullable, MEDIUM_SIZE).unwrap())] + #[case(Sequence::try_new_typed(0u32, 1, Nullability::NonNullable, 5).unwrap())] + #[case(Sequence::try_new_typed(0u32, 5, Nullability::NonNullable, MEDIUM_SIZE).unwrap())] + #[case(Sequence::try_new_typed(0u64, 1, Nullability::NonNullable, LARGE_SIZE).unwrap())] fn test_filter_sequence_conformance(#[case] array: SequenceArray) { test_filter_conformance(&array.into_array()); } diff --git a/encodings/sequence/src/compute/list_contains.rs b/encodings/sequence/src/compute/list_contains.rs index 8dbd1360d88..fa2cacb5e19 100644 --- a/encodings/sequence/src/compute/list_contains.rs +++ b/encodings/sequence/src/compute/list_contains.rs @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::arrays::BoolArray; use vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduce; @@ -13,7 +13,10 @@ use crate::array::Sequence; use crate::compute::compare::find_intersection_scalar; impl ListContainsElementReduce for Sequence { - fn list_contains(list: &ArrayRef, element: &Self::Array) -> VortexResult> { + fn list_contains( + list: &ArrayRef, + element: ArrayView<'_, Self>, + ) -> VortexResult> { let Some(list_scalar) = list.as_constant() else { return Ok(None); }; @@ -50,7 +53,6 @@ impl ListContainsElementReduce for Sequence { mod tests { use std::sync::Arc; - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::arrays::BoolArray; use vortex_array::assert_arrays_eq; @@ -61,7 +63,7 @@ mod tests { use vortex_array::expr::root; use vortex_array::scalar::Scalar; - use crate::SequenceArray; + use crate::Sequence; #[test] fn test_list_contains_seq() { @@ -75,7 +77,9 @@ mod tests { // [1, 3] in 1 // 2 // 3 - let array = SequenceArray::try_new_typed(1, 1, Nullability::NonNullable, 3).unwrap(); + let array = Sequence::try_new_typed(1, 1, Nullability::NonNullable, 3) + .unwrap() + .into_array(); let expr = list_contains(lit(list_scalar.clone()), root()); let result = array.into_array().apply(&expr).unwrap(); @@ -87,7 +91,9 @@ mod tests { // [1, 3] in 1 // 3 // 5 - let array = SequenceArray::try_new_typed(1, 2, Nullability::NonNullable, 3).unwrap(); + let array = Sequence::try_new_typed(1, 2, Nullability::NonNullable, 3) + .unwrap() + .into_array(); let expr = list_contains(lit(list_scalar), root()); let result = array.into_array().apply(&expr).unwrap(); diff --git a/encodings/sequence/src/compute/mod.rs b/encodings/sequence/src/compute/mod.rs index 2cf0ec5cc2e..9a99ff235c4 100644 --- a/encodings/sequence/src/compute/mod.rs +++ b/encodings/sequence/src/compute/mod.rs @@ -17,17 +17,18 @@ mod tests { use vortex_array::compute::conformance::consistency::test_array_consistency; use vortex_array::dtype::Nullability; + use crate::Sequence; use crate::SequenceArray; #[rstest] // Basic sequence arrays - A[i] = base + i * multiplier - #[case::sequence_i32(SequenceArray::try_new_typed( + #[case::sequence_i32(Sequence::try_new_typed( 0i32, // base 1i32, // multiplier Nullability::NonNullable, 5 // length ).unwrap())] // Results in [0, 1, 2, 3, 4] - #[case::sequence_i64_step2(SequenceArray::try_new_typed( + #[case::sequence_i64_step2(Sequence::try_new_typed( 10i64, // base 2i64, // multiplier Nullability::NonNullable, @@ -35,13 +36,13 @@ mod tests { ).unwrap())] // Results in [10, 12, 14, 16, 18] // Different types - #[case::sequence_u32(SequenceArray::try_new_typed( + #[case::sequence_u32(Sequence::try_new_typed( 100u32, // base 10u32, // multiplier Nullability::NonNullable, 5 // length ).unwrap())] // Results in [100, 110, 120, 130, 140] - #[case::sequence_i16(SequenceArray::try_new_typed( + #[case::sequence_i16(Sequence::try_new_typed( -10i16, // base 3i16, // multiplier Nullability::NonNullable, @@ -49,19 +50,19 @@ mod tests { ).unwrap())] // Results in [-10, -7, -4, -1, 2] // Edge cases - #[case::sequence_single(SequenceArray::try_new_typed( + #[case::sequence_single(Sequence::try_new_typed( 42i32, 0i32, // multiplier of 0 means constant array Nullability::NonNullable, 1 ).unwrap())] - #[case::sequence_zero_multiplier(SequenceArray::try_new_typed( + #[case::sequence_zero_multiplier(Sequence::try_new_typed( 100i32, 0i32, // All values will be 100 Nullability::NonNullable, 5 ).unwrap())] - #[case::sequence_negative_step(SequenceArray::try_new_typed( + #[case::sequence_negative_step(Sequence::try_new_typed( 100i32, -10i32, // Decreasing sequence Nullability::NonNullable, @@ -69,13 +70,13 @@ mod tests { ).unwrap())] // Results in [100, 90, 80, 70, 60] // Large arrays - #[case::sequence_large(SequenceArray::try_new_typed( + #[case::sequence_large(Sequence::try_new_typed( 0i64, 1i64, Nullability::NonNullable, 2000 ).unwrap())] // Results in [0, 1, 2, ..., 1999] - #[case::sequence_large_step(SequenceArray::try_new_typed( + #[case::sequence_large_step(Sequence::try_new_typed( 1000i32, 100i32, Nullability::NonNullable, diff --git a/encodings/sequence/src/compute/slice.rs b/encodings/sequence/src/compute/slice.rs index fe717791ea1..3eb79f0b23b 100644 --- a/encodings/sequence/src/compute/slice.rs +++ b/encodings/sequence/src/compute/slice.rs @@ -4,19 +4,20 @@ use std::ops::Range; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::arrays::slice::SliceReduce; use vortex_error::VortexResult; use crate::Sequence; -use crate::SequenceArray; +use crate::SequenceData; impl SliceReduce for Sequence { - fn slice(array: &Self::Array, range: Range) -> VortexResult> { + fn slice(array: ArrayView<'_, Self>, range: Range) -> VortexResult> { // SAFETY: this is a slice of an already-validated `SequenceArray`, so this is still valid. Ok(Some( unsafe { - SequenceArray::new_unchecked( + SequenceData::new_unchecked( array.index_value(range.start), array.multiplier(), array.ptype(), diff --git a/encodings/sequence/src/compute/take.rs b/encodings/sequence/src/compute/take.rs index 23b91cabc36..ab3a4ce5f97 100644 --- a/encodings/sequence/src/compute/take.rs +++ b/encodings/sequence/src/compute/take.rs @@ -3,7 +3,7 @@ use num_traits::cast::NumCast; use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::ConstantArray; @@ -25,7 +25,6 @@ use vortex_mask::AllOr; use vortex_mask::Mask; use crate::Sequence; -use crate::SequenceArray; fn take_inner( mul: S, @@ -74,7 +73,7 @@ fn take_inner( impl TakeExecute for Sequence { fn take( - array: &SequenceArray, + array: ArrayView<'_, Self>, indices: &ArrayRef, ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -110,52 +109,53 @@ mod test { use vortex_array::arrays::PrimitiveArray; use vortex_array::dtype::Nullability; + use crate::Sequence; use crate::SequenceArray; #[rstest] - #[case::basic_sequence(SequenceArray::try_new_typed( + #[case::basic_sequence(Sequence::try_new_typed( 0i32, 1i32, Nullability::NonNullable, 10 ).unwrap())] - #[case::sequence_with_multiplier(SequenceArray::try_new_typed( + #[case::sequence_with_multiplier(Sequence::try_new_typed( 10i32, 5i32, Nullability::Nullable, 20 ).unwrap())] - #[case::sequence_i64(SequenceArray::try_new_typed( + #[case::sequence_i64(Sequence::try_new_typed( 100i64, 10i64, Nullability::NonNullable, 50 ).unwrap())] - #[case::sequence_u32(SequenceArray::try_new_typed( + #[case::sequence_u32(Sequence::try_new_typed( 0u32, 2u32, Nullability::NonNullable, 100 ).unwrap())] - #[case::sequence_negative_step(SequenceArray::try_new_typed( + #[case::sequence_negative_step(Sequence::try_new_typed( 1000i32, -10i32, Nullability::Nullable, 30 ).unwrap())] - #[case::sequence_constant(SequenceArray::try_new_typed( + #[case::sequence_constant(Sequence::try_new_typed( 42i32, 0i32, // multiplier of 0 means all values are the same Nullability::Nullable, 15 ).unwrap())] - #[case::sequence_i16(SequenceArray::try_new_typed( + #[case::sequence_i16(Sequence::try_new_typed( -100i16, 3i16, Nullability::NonNullable, 25 ).unwrap())] - #[case::sequence_large(SequenceArray::try_new_typed( + #[case::sequence_large(Sequence::try_new_typed( 0i64, 1i64, Nullability::Nullable, @@ -169,7 +169,7 @@ mod test { #[test] #[should_panic(expected = "out of bounds")] fn test_bounds_check() { - let array = SequenceArray::try_new_typed(0i32, 1i32, Nullability::NonNullable, 10).unwrap(); + let array = Sequence::try_new_typed(0i32, 1i32, Nullability::NonNullable, 10).unwrap(); let indices = PrimitiveArray::from_iter([0i32, 20]); let _array = array .take(indices.into_array()) diff --git a/encodings/sequence/src/lib.rs b/encodings/sequence/src/lib.rs index a6ff277b23d..958bbf6352f 100644 --- a/encodings/sequence/src/lib.rs +++ b/encodings/sequence/src/lib.rs @@ -14,6 +14,7 @@ pub use array::Sequence; /// This can be used for compression, fast comparisons and also for row ids. pub use array::SequenceArray; pub use array::SequenceArrayParts; +pub use array::SequenceData; pub use compress::sequence_encode; use vortex_array::aggregate_fn::AggregateFnVTable; use vortex_array::aggregate_fn::fns::is_sorted::IsSorted; diff --git a/encodings/sparse/public-api.lock b/encodings/sparse/public-api.lock index 7eef7eeb184..71b42ab8dbd 100644 --- a/encodings/sparse/public-api.lock +++ b/encodings/sparse/public-api.lock @@ -24,7 +24,11 @@ pub struct vortex_sparse::Sparse impl vortex_sparse::Sparse -pub const vortex_sparse::Sparse::ID: vortex_array::vtable::dyn_::ArrayId +pub const vortex_sparse::Sparse::ID: vortex_array::array::ArrayId + +pub fn vortex_sparse::Sparse::encode(array: &vortex_array::array::erased::ArrayRef, fill_value: core::option::Option) -> vortex_error::VortexResult + +pub fn vortex_sparse::Sparse::try_new(indices: vortex_array::array::erased::ArrayRef, values: vortex_array::array::erased::ArrayRef, len: usize, fill_value: vortex_array::scalar::Scalar) -> vortex_error::VortexResult impl core::clone::Clone for vortex_sparse::Sparse @@ -34,132 +38,126 @@ impl core::fmt::Debug for vortex_sparse::Sparse pub fn vortex_sparse::Sparse::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::take::TakeExecute for vortex_sparse::Sparse - -pub fn vortex_sparse::Sparse::take(array: &vortex_sparse::SparseArray, indices: &vortex_array::array::ArrayRef, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::arrays::filter::kernel::FilterKernel for vortex_sparse::Sparse - -pub fn vortex_sparse::Sparse::filter(array: &vortex_sparse::SparseArray, mask: &vortex_mask::Mask, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::array::vtable::VTable for vortex_sparse::Sparse -impl vortex_array::arrays::slice::SliceKernel for vortex_sparse::Sparse +pub type vortex_sparse::Sparse::ArrayData = vortex_sparse::SparseData -pub fn vortex_sparse::Sparse::slice(array: &vortex_sparse::SparseArray, range: core::ops::range::Range, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub type vortex_sparse::Sparse::Metadata = vortex_sparse::SparseMetadata -impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_sparse::Sparse +pub type vortex_sparse::Sparse::OperationsVTable = vortex_sparse::Sparse -pub fn vortex_sparse::Sparse::cast(array: &vortex_sparse::SparseArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub type vortex_sparse::Sparse::ValidityVTable = vortex_sparse::Sparse -impl vortex_array::scalar_fn::fns::not::kernel::NotReduce for vortex_sparse::Sparse +pub fn vortex_sparse::Sparse::array_eq(array: &vortex_sparse::SparseData, other: &vortex_sparse::SparseData, precision: vortex_array::hash::Precision) -> bool -pub fn vortex_sparse::Sparse::invert(array: &vortex_sparse::SparseArray) -> vortex_error::VortexResult> +pub fn vortex_sparse::Sparse::array_hash(array: &vortex_sparse::SparseData, state: &mut H, precision: vortex_array::hash::Precision) -impl vortex_array::vtable::VTable for vortex_sparse::Sparse +pub fn vortex_sparse::Sparse::buffer(array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub type vortex_sparse::Sparse::Array = vortex_sparse::SparseArray +pub fn vortex_sparse::Sparse::buffer_name(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub type vortex_sparse::Sparse::Metadata = vortex_sparse::SparseMetadata +pub fn vortex_sparse::Sparse::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub type vortex_sparse::Sparse::OperationsVTable = vortex_sparse::Sparse +pub fn vortex_sparse::Sparse::deserialize(bytes: &[u8], dtype: &vortex_array::dtype::DType, _len: usize, buffers: &[vortex_array::buffer::BufferHandle], session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_sparse::Sparse::ValidityVTable = vortex_sparse::Sparse +pub fn vortex_sparse::Sparse::dtype(array: &vortex_sparse::SparseData) -> &vortex_array::dtype::DType -pub fn vortex_sparse::Sparse::array_eq(array: &vortex_sparse::SparseArray, other: &vortex_sparse::SparseArray, precision: vortex_array::hash::Precision) -> bool +pub fn vortex_sparse::Sparse::execute(array: vortex_array::array::typed::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_sparse::Sparse::array_hash(array: &vortex_sparse::SparseArray, state: &mut H, precision: vortex_array::hash::Precision) +pub fn vortex_sparse::Sparse::execute_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_sparse::Sparse::buffer(array: &vortex_sparse::SparseArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_sparse::Sparse::id(&self) -> vortex_array::array::ArrayId -pub fn vortex_sparse::Sparse::buffer_name(_array: &vortex_sparse::SparseArray, idx: usize) -> core::option::Option +pub fn vortex_sparse::Sparse::len(array: &vortex_sparse::SparseData) -> usize -pub fn vortex_sparse::Sparse::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_sparse::Sparse::metadata(array: vortex_array::array::view::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_sparse::Sparse::deserialize(bytes: &[u8], dtype: &vortex_array::dtype::DType, _len: usize, buffers: &[vortex_array::buffer::BufferHandle], session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_sparse::Sparse::nbuffers(_array: vortex_array::array::view::ArrayView<'_, Self>) -> usize -pub fn vortex_sparse::Sparse::dtype(array: &vortex_sparse::SparseArray) -> &vortex_array::dtype::DType +pub fn vortex_sparse::Sparse::reduce_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_sparse::Sparse::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult - -pub fn vortex_sparse::Sparse::execute_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_sparse::Sparse::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_sparse::Sparse::id(&self) -> vortex_array::vtable::dyn_::ArrayId +pub fn vortex_sparse::Sparse::slot_name(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_sparse::Sparse::len(array: &vortex_sparse::SparseArray) -> usize +pub fn vortex_sparse::Sparse::slots(array: vortex_array::array::view::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_sparse::Sparse::metadata(array: &vortex_sparse::SparseArray) -> vortex_error::VortexResult +pub fn vortex_sparse::Sparse::stats(array: &vortex_sparse::SparseData) -> &vortex_array::stats::array::ArrayStats -pub fn vortex_sparse::Sparse::nbuffers(_array: &vortex_sparse::SparseArray) -> usize +pub fn vortex_sparse::Sparse::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_sparse::Sparse::reduce_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_sparse::Sparse::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_sparse::Sparse::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +impl vortex_array::array::vtable::operations::OperationsVTable for vortex_sparse::Sparse -pub fn vortex_sparse::Sparse::slot_name(_array: &vortex_sparse::SparseArray, idx: usize) -> alloc::string::String +pub fn vortex_sparse::Sparse::scalar_at(array: vortex_array::array::view::ArrayView<'_, vortex_sparse::Sparse>, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_sparse::Sparse::slots(array: &vortex_sparse::SparseArray) -> &[core::option::Option] +impl vortex_array::array::vtable::validity::ValidityVTable for vortex_sparse::Sparse -pub fn vortex_sparse::Sparse::stats(array: &vortex_sparse::SparseArray) -> vortex_array::stats::array::StatsSetRef<'_> +pub fn vortex_sparse::Sparse::validity(array: vortex_array::array::view::ArrayView<'_, vortex_sparse::Sparse>) -> vortex_error::VortexResult -pub fn vortex_sparse::Sparse::vtable(_array: &Self::Array) -> &Self +impl vortex_array::arrays::dict::take::TakeExecute for vortex_sparse::Sparse -pub fn vortex_sparse::Sparse::with_slots(array: &mut vortex_sparse::SparseArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_sparse::Sparse::take(array: vortex_array::array::view::ArrayView<'_, Self>, indices: &vortex_array::array::erased::ArrayRef, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::vtable::operations::OperationsVTable for vortex_sparse::Sparse +impl vortex_array::arrays::filter::kernel::FilterKernel for vortex_sparse::Sparse -pub fn vortex_sparse::Sparse::scalar_at(array: &vortex_sparse::SparseArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_sparse::Sparse::filter(array: vortex_array::array::view::ArrayView<'_, Self>, mask: &vortex_mask::Mask, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::vtable::validity::ValidityVTable for vortex_sparse::Sparse +impl vortex_array::arrays::slice::SliceKernel for vortex_sparse::Sparse -pub fn vortex_sparse::Sparse::validity(array: &vortex_sparse::SparseArray) -> vortex_error::VortexResult +pub fn vortex_sparse::Sparse::slice(array: vortex_array::array::view::ArrayView<'_, Self>, range: core::ops::range::Range, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub struct vortex_sparse::SparseArray +impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_sparse::Sparse -impl vortex_sparse::SparseArray +pub fn vortex_sparse::Sparse::cast(array: vortex_array::array::view::ArrayView<'_, Self>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_sparse::SparseArray::encode(array: &vortex_array::array::ArrayRef, fill_value: core::option::Option) -> vortex_error::VortexResult +impl vortex_array::scalar_fn::fns::not::kernel::NotReduce for vortex_sparse::Sparse -pub fn vortex_sparse::SparseArray::fill_scalar(&self) -> &vortex_array::scalar::Scalar +pub fn vortex_sparse::Sparse::invert(array: vortex_array::array::view::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_sparse::SparseArray::patches(&self) -> &vortex_array::patches::Patches +pub struct vortex_sparse::SparseData -pub fn vortex_sparse::SparseArray::resolved_patches(&self) -> vortex_error::VortexResult +impl vortex_sparse::SparseData -pub fn vortex_sparse::SparseArray::try_new(indices: vortex_array::array::ArrayRef, values: vortex_array::array::ArrayRef, len: usize, fill_value: vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_sparse::SparseData::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_sparse::SparseArray::try_new_from_patches(patches: vortex_array::patches::Patches, fill_value: vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_sparse::SparseData::encode(array: &vortex_array::array::erased::ArrayRef, fill_value: core::option::Option) -> vortex_error::VortexResult -impl vortex_sparse::SparseArray +pub fn vortex_sparse::SparseData::fill_scalar(&self) -> &vortex_array::scalar::Scalar -pub fn vortex_sparse::SparseArray::to_array(&self) -> vortex_array::array::ArrayRef +pub fn vortex_sparse::SparseData::is_empty(&self) -> bool -impl core::clone::Clone for vortex_sparse::SparseArray +pub fn vortex_sparse::SparseData::len(&self) -> usize -pub fn vortex_sparse::SparseArray::clone(&self) -> vortex_sparse::SparseArray +pub fn vortex_sparse::SparseData::patches(&self) -> &vortex_array::patches::Patches -impl core::convert::AsRef for vortex_sparse::SparseArray +pub fn vortex_sparse::SparseData::resolved_patches(&self) -> vortex_error::VortexResult -pub fn vortex_sparse::SparseArray::as_ref(&self) -> &dyn vortex_array::array::DynArray +pub fn vortex_sparse::SparseData::try_new(indices: vortex_array::array::erased::ArrayRef, values: vortex_array::array::erased::ArrayRef, len: usize, fill_value: vortex_array::scalar::Scalar) -> vortex_error::VortexResult -impl core::convert::From for vortex_array::array::ArrayRef +pub fn vortex_sparse::SparseData::try_new_from_patches(patches: vortex_array::patches::Patches, fill_value: vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub fn vortex_array::array::ArrayRef::from(value: vortex_sparse::SparseArray) -> vortex_array::array::ArrayRef +impl core::clone::Clone for vortex_sparse::SparseData -impl core::fmt::Debug for vortex_sparse::SparseArray +pub fn vortex_sparse::SparseData::clone(&self) -> vortex_sparse::SparseData -pub fn vortex_sparse::SparseArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl core::convert::From for vortex_array::array::erased::ArrayRef -impl core::ops::deref::Deref for vortex_sparse::SparseArray +pub fn vortex_array::array::erased::ArrayRef::from(value: vortex_sparse::SparseData) -> vortex_array::array::erased::ArrayRef -pub type vortex_sparse::SparseArray::Target = dyn vortex_array::array::DynArray +impl core::fmt::Debug for vortex_sparse::SparseData -pub fn vortex_sparse::SparseArray::deref(&self) -> &Self::Target +pub fn vortex_sparse::SparseData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::array::IntoArray for vortex_sparse::SparseArray +impl vortex_array::array::IntoArray for vortex_sparse::SparseData -pub fn vortex_sparse::SparseArray::into_array(self) -> vortex_array::array::ArrayRef +pub fn vortex_sparse::SparseData::into_array(self) -> vortex_array::array::erased::ArrayRef pub struct vortex_sparse::SparseMetadata impl core::fmt::Debug for vortex_sparse::SparseMetadata pub fn vortex_sparse::SparseMetadata::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +pub type vortex_sparse::SparseArray = vortex_array::array::typed::Array diff --git a/encodings/sparse/src/canonical.rs b/encodings/sparse/src/canonical.rs index 2e0f51843cd..a3cb566dddb 100644 --- a/encodings/sparse/src/canonical.rs +++ b/encodings/sparse/src/canonical.rs @@ -6,7 +6,6 @@ use std::sync::Arc; use itertools::Itertools; use num_traits::NumCast; use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::BoolArray; @@ -40,7 +39,6 @@ use vortex_array::scalar::ListScalar; use vortex_array::scalar::Scalar; use vortex_array::scalar::StructScalar; use vortex_array::validity::Validity; -use vortex_array::vtable::ValidityHelper; use vortex_buffer::BitBuffer; use vortex_buffer::Buffer; use vortex_buffer::BufferString; @@ -55,7 +53,7 @@ use vortex_error::vortex_panic; use crate::ConstantArray; use crate::SparseArray; - +use crate::SparseData; pub(super) fn execute_sparse( array: &SparseArray, ctx: &mut ExecutionCtx, @@ -147,7 +145,7 @@ fn execute_sparse_lists( let n_filled = array.len() - resolved_patches.num_patches(); let total_canonical_values = values.elements().len() + fill_value.len() * n_filled; - let validity = Validity::from_mask(array.validity_mask()?, nullability); + let validity = Validity::from_mask(array.as_array().validity_mask()?, nullability); Ok(match_each_integer_ptype!(indices.ptype(), |I| { match_smallest_offset_type!(total_canonical_values, |O| { @@ -232,7 +230,7 @@ fn execute_sparse_fixed_size_list( .execute::(ctx)?; let fill_value = array.fill_scalar().as_list(); - let validity = Validity::from_mask(array.validity_mask()?, nullability); + let validity = Validity::from_mask(array.as_array().validity_mask()?, nullability); Ok(match_each_integer_ptype!(indices.ptype(), |I| { execute_sparse_fixed_size_list_inner::( @@ -439,7 +437,7 @@ fn execute_sparse_struct( .cloned() .zip_eq(fill_values) .map(|(patch_values, fill_value)| unsafe { - SparseArray::new_unchecked( + SparseData::new_unchecked( unresolved_patches .clone() .map_values(|_| Ok(patch_values)) @@ -476,7 +474,7 @@ fn execute_sparse_decimal( } } let filled_array = builder.finish_into_decimal(); - let array = filled_array.patch(patches, ctx)?; + let array = filled_array.into_data().patch(patches, ctx)?; Ok(array.into_array()) } @@ -489,7 +487,7 @@ fn execute_varbin( let patches = array.resolved_patches()?; let indices = patches.indices().clone().execute::(ctx)?; let values = patches.values().clone().execute::(ctx)?; - let validity = Validity::from_mask(array.validity_mask()?, dtype.nullability()); + let validity = Validity::from_mask(array.as_array().validity_mask()?, dtype.nullability()); let len = array.len(); Ok(match_each_integer_ptype!(indices.ptype(), |I| { @@ -508,8 +506,8 @@ fn execute_varbin_inner( ) -> VarBinViewArray { assert_eq!(dtype.nullability(), validity.nullability()); - let n_patch_buffers = values.buffers().len(); - let mut buffers = values.buffers().to_vec(); + let n_patch_buffers = values.data_buffers().len(); + let mut buffers = values.data_buffers().to_vec(); let fill = if let Some(buffer) = &fill_value { buffers.push(BufferHandle::new_host(buffer.clone())); @@ -571,7 +569,7 @@ mod test { use vortex_error::VortexResult; use vortex_mask::Mask; - use crate::SparseArray; + use crate::Sparse; #[rstest] #[case(Some(true))] @@ -580,9 +578,8 @@ mod test { fn test_sparse_bool(#[case] fill_value: Option) { let indices = buffer![0u64, 1, 7].into_array(); let values = BoolArray::from_iter([Some(true), None, Some(false)]).into_array(); - let sparse_bools = - SparseArray::try_new(indices, values, 10, Scalar::from(fill_value)).unwrap(); - let actual = sparse_bools.to_bool(); + let sparse_bools = Sparse::try_new(indices, values, 10, Scalar::from(fill_value)).unwrap(); + let actual = sparse_bools.as_array().to_bool(); let expected = BoolArray::from_iter([ Some(true), @@ -607,11 +604,10 @@ mod test { fn test_sparse_primitive(#[case] fill_value: Option) { let indices = buffer![0u64, 1, 7].into_array(); let values = PrimitiveArray::from_option_iter([Some(0i32), None, Some(1)]).into_array(); - let sparse_ints = - SparseArray::try_new(indices, values, 10, Scalar::from(fill_value)).unwrap(); + let sparse_ints = Sparse::try_new(indices, values, 10, Scalar::from(fill_value)).unwrap(); assert_eq!(*sparse_ints.dtype(), DType::Primitive(PType::I32, Nullable)); - let flat_ints = sparse_ints.to_primitive(); + let flat_ints = sparse_ints.as_array().to_primitive(); let expected = PrimitiveArray::from_option_iter([ Some(0i32), None, @@ -659,7 +655,7 @@ mod test { vec![Scalar::from(Some(-10i32)), Scalar::from(Some(-1i32))], ); let len = 10; - let sparse_struct = SparseArray::try_new(indices, patch_values, len, fill_scalar).unwrap(); + let sparse_struct = Sparse::try_new(indices, patch_values, len, fill_scalar).unwrap(); let expected_a = PrimitiveArray::from_option_iter((0..len).map(|i| { if i == 0 { @@ -694,7 +690,7 @@ mod test { .unwrap() .into_array(); - let actual = sparse_struct.to_struct(); + let actual = sparse_struct.as_array().to_struct(); assert_arrays_eq!(actual, expected); } @@ -726,7 +722,7 @@ mod test { let fill_scalar = Scalar::null(struct_dtype); let len = 10; - let sparse_struct = SparseArray::try_new(indices, patch_values, len, fill_scalar).unwrap(); + let sparse_struct = Sparse::try_new(indices, patch_values, len, fill_scalar).unwrap(); let expected_a = PrimitiveArray::from_option_iter((0..len).map(|i| { if i == 0 { @@ -761,7 +757,7 @@ mod test { .unwrap() .into_array(); - let actual = sparse_struct.to_struct(); + let actual = sparse_struct.as_array().to_struct(); assert_arrays_eq!(actual, expected); } @@ -777,7 +773,7 @@ mod test { .into_array(); let len = 10; let fill_scalar = Scalar::decimal(DecimalValue::I32(123), decimal_dtype, Nullable); - let sparse_struct = SparseArray::try_new(indices, patch_values, len, fill_scalar).unwrap(); + let sparse_struct = Sparse::try_new(indices, patch_values, len, fill_scalar).unwrap(); let expected = DecimalArray::new( buffer![100i128, 200, 123, 123, 123, 123, 123, 300, 4000, 123], @@ -790,6 +786,7 @@ mod test { .unwrap(); let actual = sparse_struct + .as_array() .to_decimal() .into_array() .into_arrow_preferred() @@ -812,7 +809,7 @@ mod test { ]) .into_array(); - let array = SparseArray::try_new( + let array = Sparse::try_new( buffer![0u16, 3, 4, 5, 7, 9, 10].into_array(), strings, 12, @@ -820,7 +817,7 @@ mod test { ) .unwrap(); - let actual = array.to_varbinview().into_array(); + let actual = array.as_array().to_varbinview().into_array(); let expected = >::from_iter([ Some("hello"), Some("123"), @@ -853,7 +850,7 @@ mod test { ]) .into_array(); - let array = SparseArray::try_new( + let array = Sparse::try_new( buffer![0u16, 3, 4, 5, 7, 9, 10].into_array(), strings, 12, @@ -861,7 +858,7 @@ mod test { ) .unwrap(); - let actual = array.to_varbinview().into_array(); + let actual = array.as_array().to_varbinview().into_array(); let expected = >::from_iter([ Some("hello"), None, @@ -887,7 +884,7 @@ mod test { VarBinViewArray::from_iter_str(["hello", "goodbye", "hello", "bonjour", "你好"]) .into_array(); - let array = SparseArray::try_new( + let array = Sparse::try_new( buffer![0u16, 3, 4, 5, 8].into_array(), strings, 9, @@ -895,7 +892,7 @@ mod test { ) .unwrap(); - let actual = array.to_varbinview().into_array(); + let actual = array.as_array().to_varbinview().into_array(); let expected = VarBinViewArray::from_iter_str([ "hello", "123", "123", "goodbye", "hello", "bonjour", "123", "123", "你好", ]) @@ -917,7 +914,7 @@ mod test { ]) .into_array(); - let array = SparseArray::try_new( + let array = Sparse::try_new( buffer![0u16, 3, 4, 5, 7, 9, 10].into_array(), strings, 12, @@ -925,7 +922,7 @@ mod test { ) .unwrap(); - let actual = array.to_varbinview().into_array(); + let actual = array.as_array().to_varbinview().into_array(); let expected = >::from_iter([ Some("hello"), None, @@ -958,7 +955,7 @@ mod test { ]) .into_array(); - let array = SparseArray::try_new( + let array = Sparse::try_new( buffer![0u16, 3, 4, 5, 7, 9, 10].into_array(), binaries, 12, @@ -966,7 +963,7 @@ mod test { ) .unwrap(); - let actual = array.to_varbinview().into_array(); + let actual = array.as_array().to_varbinview().into_array(); let expected = VarBinViewArray::from_iter_nullable_bin([ Some(b"hello" as &[u8]), Some(b"123"), @@ -1005,7 +1002,7 @@ mod test { let indices = buffer![0u8, 3u8, 4u8, 5u8].into_array(); let fill_value = Scalar::null(lists.dtype().clone()); - let sparse = SparseArray::try_new(indices, lists, 6, fill_value) + let sparse = Sparse::try_new(indices, lists, 6, fill_value) .unwrap() .into_array(); @@ -1059,7 +1056,7 @@ mod test { let indices = buffer![0u8, 3u8, 4u8, 5u8].into_array(); let fill_value = Scalar::null(lists.dtype().clone()); - let sparse = SparseArray::try_new(indices, lists, 6, fill_value) + let sparse = Sparse::try_new(indices, lists, 6, fill_value) .unwrap() .into_array(); @@ -1102,7 +1099,7 @@ mod test { let indices = buffer![0u8, 3u8, 4u8, 5u8].into_array(); let fill_value = Scalar::from(Some(vec![5i32, 6, 7, 8])); - let sparse = SparseArray::try_new(indices, lists, 6, fill_value) + let sparse = Sparse::try_new(indices, lists, 6, fill_value) .unwrap() .into_array(); @@ -1171,7 +1168,7 @@ mod test { ]) .into_array(); - let array = SparseArray::try_new( + let array = Sparse::try_new( buffer![0u16, 3, 4, 5, 7, 9, 10].into_array(), strings, 12, @@ -1179,7 +1176,7 @@ mod test { ) .unwrap(); - let actual = array.to_varbinview().into_array(); + let actual = array.as_array().to_varbinview().into_array(); let expected = VarBinViewArray::from_iter_nullable_bin([ Some(b"hello" as &[u8]), None, @@ -1213,7 +1210,7 @@ mod test { 3, Nullable, )); - let sparse = SparseArray::try_new(indices, fsl, 5, fill_value) + let sparse = Sparse::try_new(indices, fsl, 5, fill_value) .unwrap() .into_array(); @@ -1251,7 +1248,7 @@ mod test { ], NonNullable, ); - let sparse = SparseArray::try_new(indices, fsl, 6, fill_value) + let sparse = Sparse::try_new(indices, fsl, 6, fill_value) .unwrap() .into_array(); @@ -1289,7 +1286,7 @@ mod test { ], Nullable, ); - let sparse = SparseArray::try_new(indices, fsl, 6, fill_value) + let sparse = Sparse::try_new(indices, fsl, 6, fill_value) .unwrap() .into_array(); @@ -1337,7 +1334,7 @@ mod test { NonNullable, ); - let sparse = SparseArray::try_new(indices, fsl, 100, fill_value) + let sparse = Sparse::try_new(indices, fsl, 100, fill_value) .unwrap() .into_array(); @@ -1394,7 +1391,7 @@ mod test { ], NonNullable, ); - let sparse = SparseArray::try_new(indices, fsl, 1, fill_value) + let sparse = Sparse::try_new(indices, fsl, 1, fill_value) .unwrap() .into_array(); @@ -1420,7 +1417,7 @@ mod test { let indices = buffer![0u8, 1u8, 2u8, 3u8].into_array(); let fill_value = Scalar::from(Some(vec![42i32; 252])); // 252 + 4 elements = 256 > u8::MAX - let sparse = SparseArray::try_new(indices, lists, 5, fill_value) + let sparse = Sparse::try_new(indices, lists, 5, fill_value) .unwrap() .into_array(); @@ -1466,7 +1463,7 @@ mod test { let sizes = buffer![3u32, 2, 4].into_array(); let list_view = unsafe { - ListViewArray::new_unchecked(elements.clone(), offsets, sizes, Validity::AllValid) + ListViewArray::new_unchecked(elements, offsets, sizes, Validity::AllValid) .with_zero_copy_to_list(true) }; @@ -1482,7 +1479,7 @@ mod test { // - Index 7: List 2 [30, 31, 32, 33] // - Index 8-9: null let indices = buffer![1u8, 4, 7].into_array(); - let sparse = SparseArray::try_new( + let sparse = Sparse::try_new( indices, list_view.into_array(), 10, @@ -1568,7 +1565,7 @@ mod test { // Extract only the values we need from the sliced array let values = sliced.slice(0..2).unwrap(); let sparse = - SparseArray::try_new(indices, values, 5, Scalar::null(sliced.dtype().clone())).unwrap(); + Sparse::try_new(indices, values, 5, Scalar::null(sliced.dtype().clone())).unwrap(); let canonical = sparse.to_canonical()?.into_array(); let result_listview = canonical.to_listview(); diff --git a/encodings/sparse/src/compute/cast.rs b/encodings/sparse/src/compute/cast.rs index 1b9b1a1bb61..9806974979a 100644 --- a/encodings/sparse/src/compute/cast.rs +++ b/encodings/sparse/src/compute/cast.rs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::builtins::ArrayBuiltins; use vortex_array::dtype::DType; @@ -10,10 +11,9 @@ use vortex_array::scalar_fn::fns::cast::CastReduce; use vortex_error::VortexResult; use crate::Sparse; -use crate::SparseArray; - +use crate::SparseData; impl CastReduce for Sparse { - fn cast(array: &SparseArray, dtype: &DType) -> VortexResult> { + fn cast(array: ArrayView<'_, Self>, dtype: &DType) -> VortexResult> { let casted_patches = array .patches() .clone() @@ -28,7 +28,7 @@ impl CastReduce for Sparse { }; Ok(Some( - SparseArray::try_new_from_patches(casted_patches, casted_fill)?.into_array(), + SparseData::try_new_from_patches(casted_patches, casted_fill)?.into_array(), )) } } @@ -48,11 +48,12 @@ mod tests { use vortex_array::scalar::Scalar; use vortex_buffer::buffer; + use crate::Sparse; use crate::SparseArray; #[test] fn test_cast_sparse_i32_to_i64() { - let sparse = SparseArray::try_new( + let sparse = Sparse::try_new( buffer![2u64, 5, 8].into_array(), buffer![100i32, 200, 300].into_array(), 10, @@ -75,7 +76,7 @@ mod tests { #[test] fn test_cast_sparse_with_null_fill() { - let sparse = SparseArray::try_new( + let sparse = Sparse::try_new( buffer![1u64, 3, 5].into_array(), PrimitiveArray::from_option_iter([Some(42i32), Some(84), Some(126)]).into_array(), 8, @@ -94,25 +95,25 @@ mod tests { } #[rstest] - #[case(SparseArray::try_new( + #[case(Sparse::try_new( buffer![2u64, 5, 8].into_array(), buffer![100i32, 200, 300].into_array(), 10, Scalar::from(0i32) ).unwrap())] - #[case(SparseArray::try_new( + #[case(Sparse::try_new( buffer![0u64, 4, 9].into_array(), buffer![1.5f32, 2.5, 3.5].into_array(), 10, Scalar::from(0.0f32) ).unwrap())] - #[case(SparseArray::try_new( + #[case(Sparse::try_new( buffer![1u64, 3, 7].into_array(), PrimitiveArray::from_option_iter([Some(100i32), None, Some(300)]).into_array(), 10, Scalar::null_native::() ).unwrap())] - #[case(SparseArray::try_new( + #[case(Sparse::try_new( buffer![5u64].into_array(), buffer![42u8].into_array(), 10, @@ -129,7 +130,7 @@ mod tests { // When all positions are patched the null fill is unused, so a cast to // non-nullable is valid. Sparse::cast detects this case, substitutes a // zero fill, and keeps the result in the Sparse encoding. - let sparse = SparseArray::try_new( + let sparse = Sparse::try_new( buffer![0u64, 1, 2, 3, 4].into_array(), buffer![10u64, 20, 30, 40, 50].into_array(), 5, @@ -155,7 +156,7 @@ mod tests { // Regression test for https://github.com/vortex-data/vortex/issues/6932 // fill_null on a sparse array with null fill triggers an internal cast to // non-nullable, which must not panic. - let sparse = SparseArray::try_new( + let sparse = Sparse::try_new( buffer![1u64, 3].into_array(), buffer![10u64, 20].into_array(), 5, diff --git a/encodings/sparse/src/compute/filter.rs b/encodings/sparse/src/compute/filter.rs index 56556d285ed..a3d3d5a1946 100644 --- a/encodings/sparse/src/compute/filter.rs +++ b/encodings/sparse/src/compute/filter.rs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::filter::FilterKernel; @@ -10,11 +11,10 @@ use vortex_mask::Mask; use crate::ConstantArray; use crate::Sparse; -use crate::SparseArray; - +use crate::SparseData; impl FilterKernel for Sparse { fn filter( - array: &SparseArray, + array: ArrayView<'_, Self>, mask: &Mask, ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -27,7 +27,7 @@ impl FilterKernel for Sparse { }; Ok(Some( - SparseArray::try_new_from_patches(new_patches, array.fill_scalar().clone())? + SparseData::try_new_from_patches(new_patches, array.fill_scalar().clone())? .into_array(), )) } @@ -38,7 +38,6 @@ mod tests { use rstest::fixture; use rstest::rstest; use vortex_array::ArrayRef; - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::assert_arrays_eq; @@ -52,11 +51,11 @@ mod tests { use vortex_buffer::buffer; use vortex_mask::Mask; - use crate::SparseArray; + use crate::Sparse; #[fixture] fn array() -> ArrayRef { - SparseArray::try_new( + Sparse::try_new( buffer![2u64, 9, 15].into_array(), PrimitiveArray::new(buffer![33_i32, 44, 55], Validity::AllValid).into_array(), 20, @@ -76,7 +75,7 @@ mod tests { // Construct expected SparseArray: index 2 was kept, which had value 33. // The new index is 0 (since it's the only element). - let expected = SparseArray::try_new( + let expected = Sparse::try_new( buffer![0u64].into_array(), PrimitiveArray::new(buffer![33_i32], Validity::AllValid).into_array(), 1, @@ -90,7 +89,7 @@ mod tests { #[test] fn true_fill_value() { let mask = Mask::from_iter([false, true, false, true, false, true, true]); - let array = SparseArray::try_new( + let array = Sparse::try_new( buffer![0_u64, 3, 6].into_array(), PrimitiveArray::new(buffer![33_i32, 44, 55], Validity::AllValid).into_array(), 7, @@ -105,7 +104,7 @@ mod tests { // Mask keeps indices 1, 3, 5, 6 -> new indices 0, 1, 2, 3. // Index 3 (value 44) maps to new index 1. // Index 6 (value 55) maps to new index 3. - let expected = SparseArray::try_new( + let expected = Sparse::try_new( buffer![1u64, 3].into_array(), PrimitiveArray::new(buffer![44_i32, 55], Validity::AllValid).into_array(), 4, @@ -120,7 +119,7 @@ mod tests { fn test_filter_sparse_array() { let null_fill_value = Scalar::null(DType::Primitive(PType::I32, Nullability::Nullable)); test_filter_conformance( - &SparseArray::try_new( + &Sparse::try_new( buffer![1u64, 2, 4].into_array(), buffer![100i32, 200, 300] .into_array() @@ -135,7 +134,7 @@ mod tests { let ten_fill_value = Scalar::from(10i32); test_filter_conformance( - &SparseArray::try_new( + &Sparse::try_new( buffer![1u64, 2, 4].into_array(), buffer![100i32, 200, 300].into_array(), 5, diff --git a/encodings/sparse/src/compute/mod.rs b/encodings/sparse/src/compute/mod.rs index 0f0ad4b98c4..a303a06b58a 100644 --- a/encodings/sparse/src/compute/mod.rs +++ b/encodings/sparse/src/compute/mod.rs @@ -24,11 +24,11 @@ mod test { use vortex_buffer::buffer; use vortex_mask::Mask; - use crate::SparseArray; + use crate::Sparse; #[fixture] fn array() -> ArrayRef { - SparseArray::try_new( + Sparse::try_new( buffer![2u64, 9, 15].into_array(), PrimitiveArray::new(buffer![33_i32, 44, 55], Validity::AllValid).into_array(), 20, @@ -48,7 +48,7 @@ mod test { // Construct expected SparseArray: index 2 was kept, which had value 33. // The new index is 0 (since it's the only element). - let expected = SparseArray::try_new( + let expected = Sparse::try_new( buffer![0u64].into_array(), PrimitiveArray::new(buffer![33_i32], Validity::AllValid).into_array(), 1, @@ -62,7 +62,7 @@ mod test { #[test] fn true_fill_value() { let mask = Mask::from_iter([false, true, false, true, false, true, true]); - let array = SparseArray::try_new( + let array = Sparse::try_new( buffer![0_u64, 3, 6].into_array(), PrimitiveArray::new(buffer![33_i32, 44, 55], Validity::AllValid).into_array(), 7, @@ -77,7 +77,7 @@ mod test { // Mask keeps indices 1, 3, 5, 6 -> new indices 0, 1, 2, 3. // Index 3 (value 44) maps to new index 1. // Index 6 (value 55) maps to new index 3. - let expected = SparseArray::try_new( + let expected = Sparse::try_new( buffer![1u64, 3].into_array(), PrimitiveArray::new(buffer![44_i32, 55], Validity::AllValid).into_array(), 4, @@ -97,7 +97,7 @@ mod test { fn test_mask_sparse_array() { let null_fill_value = Scalar::null(DType::Primitive(PType::I32, Nullability::Nullable)); test_mask_conformance( - &SparseArray::try_new( + &Sparse::try_new( buffer![1u64, 2, 4].into_array(), buffer![100i32, 200, 300] .into_array() @@ -112,7 +112,7 @@ mod test { let ten_fill_value = Scalar::from(10i32); test_mask_conformance( - &SparseArray::try_new( + &Sparse::try_new( buffer![1u64, 2, 4].into_array(), buffer![100i32, 200, 300].into_array(), 5, @@ -138,50 +138,51 @@ mod tests { use vortex_array::scalar::Scalar; use vortex_buffer::buffer; + use crate::Sparse; use crate::SparseArray; #[rstest] // Basic sparse arrays - #[case::sparse_i32_null_fill(SparseArray::try_new( + #[case::sparse_i32_null_fill(Sparse::try_new( buffer![2u64, 5, 8].into_array(), PrimitiveArray::from_option_iter([Some(100i32), Some(200), Some(300)]).into_array(), 10, Scalar::null_native::() ).unwrap())] - #[case::sparse_i32_value_fill(SparseArray::try_new( + #[case::sparse_i32_value_fill(Sparse::try_new( buffer![1u64, 3, 7].into_array(), buffer![42i32, 84, 126].into_array(), 10, Scalar::from(0i32) ).unwrap())] // Different types - #[case::sparse_u64(SparseArray::try_new( + #[case::sparse_u64(Sparse::try_new( buffer![0u64, 4, 9].into_array(), buffer![1000u64, 2000, 3000].into_array(), 10, Scalar::from(999u64) ).unwrap())] - #[case::sparse_f32(SparseArray::try_new( + #[case::sparse_f32(Sparse::try_new( buffer![2u64, 6].into_array(), buffer![std::f32::consts::PI, std::f32::consts::E].into_array(), 8, Scalar::from(0.0f32) ).unwrap())] // Edge cases - #[case::sparse_single_patch(SparseArray::try_new( + #[case::sparse_single_patch(Sparse::try_new( buffer![5u64].into_array(), buffer![42i32].into_array(), 10, Scalar::from(-1i32) ).unwrap())] - #[case::sparse_dense_patches(SparseArray::try_new( + #[case::sparse_dense_patches(Sparse::try_new( buffer![0u64, 1, 2, 3, 4].into_array(), PrimitiveArray::from_option_iter([Some(10i32), Some(20), Some(30), Some(40), Some(50)]).into_array(), 5, Scalar::null_native::() ).unwrap())] // Large sparse arrays - #[case::sparse_large(SparseArray::try_new( + #[case::sparse_large(Sparse::try_new( buffer![100u64, 500, 900, 1500, 1999].into_array(), buffer![111i32, 222, 333, 444, 555].into_array(), 2000, @@ -190,7 +191,7 @@ mod tests { // Nullable patches #[case::sparse_nullable_patches({ let null_fill_value = Scalar::null(DType::Primitive(PType::I32, Nullability::Nullable)); - SparseArray::try_new( + Sparse::try_new( buffer![1u64, 4, 7].into_array(), PrimitiveArray::from_option_iter([Some(100i32), None, Some(300)]) .into_array() @@ -206,37 +207,37 @@ mod tests { } #[rstest] - #[case::sparse_i32_basic(SparseArray::try_new( + #[case::sparse_i32_basic(Sparse::try_new( buffer![2u64, 5, 8].into_array(), buffer![100i32, 200, 300].into_array(), 10, Scalar::from(0i32) ).unwrap())] - #[case::sparse_u32_basic(SparseArray::try_new( + #[case::sparse_u32_basic(Sparse::try_new( buffer![1u64, 3, 7].into_array(), buffer![1000u32, 2000, 3000].into_array(), 10, Scalar::from(100u32) ).unwrap())] - #[case::sparse_i64_basic(SparseArray::try_new( + #[case::sparse_i64_basic(Sparse::try_new( buffer![0u64, 4, 9].into_array(), buffer![5000i64, 6000, 7000].into_array(), 10, Scalar::from(1000i64) ).unwrap())] - #[case::sparse_f32_basic(SparseArray::try_new( + #[case::sparse_f32_basic(Sparse::try_new( buffer![2u64, 6].into_array(), buffer![1.5f32, 2.5].into_array(), 8, Scalar::from(0.5f32) ).unwrap())] - #[case::sparse_f64_basic(SparseArray::try_new( + #[case::sparse_f64_basic(Sparse::try_new( buffer![1u64, 5, 9].into_array(), buffer![10.1f64, 20.2, 30.3].into_array(), 10, Scalar::from(5.0f64) ).unwrap())] - #[case::sparse_i32_large(SparseArray::try_new( + #[case::sparse_i32_large(Sparse::try_new( buffer![10u64, 50, 90, 150, 199].into_array(), buffer![111i32, 222, 333, 444, 555].into_array(), 200, diff --git a/encodings/sparse/src/compute/take.rs b/encodings/sparse/src/compute/take.rs index 610cd52d064..ebcc2570fc1 100644 --- a/encodings/sparse/src/compute/take.rs +++ b/encodings/sparse/src/compute/take.rs @@ -2,7 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::dict::TakeExecute; @@ -10,11 +10,10 @@ use vortex_error::VortexResult; use crate::ConstantArray; use crate::Sparse; -use crate::SparseArray; - +use crate::SparseData; impl TakeExecute for Sparse { fn take( - array: &SparseArray, + array: ArrayView<'_, Self>, indices: &ArrayRef, ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -41,7 +40,7 @@ impl TakeExecute for Sparse { } Ok(Some( - SparseArray::try_new_from_patches( + SparseData::try_new_from_patches( new_patches, array.fill_scalar().cast( &array @@ -58,7 +57,6 @@ impl TakeExecute for Sparse { mod test { use rstest::rstest; use vortex_array::ArrayRef; - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::arrays::ConstantArray; use vortex_array::arrays::PrimitiveArray; @@ -68,6 +66,7 @@ mod test { use vortex_array::validity::Validity; use vortex_buffer::buffer; + use crate::Sparse; use crate::SparseArray; fn test_array_fill_value() -> Scalar { @@ -76,7 +75,7 @@ mod test { } fn sparse_array() -> ArrayRef { - SparseArray::try_new( + Sparse::try_new( buffer![0u64, 37, 47, 99].into_array(), PrimitiveArray::new(buffer![1.23f64, 0.47, 9.99, 3.5], Validity::AllValid).into_array(), 100, @@ -129,7 +128,7 @@ mod test { #[test] fn nullable_take() { - let arr = SparseArray::try_new( + let arr = Sparse::try_new( buffer![1u32].into_array(), buffer![10].into_array(), 10, @@ -150,7 +149,7 @@ mod test { #[test] fn nullable_take_with_many_patches() { - let arr = SparseArray::try_new( + let arr = Sparse::try_new( buffer![1u32, 3, 7, 8, 9].into_array(), buffer![10, 8, 3, 2, 1].into_array(), 10, @@ -170,13 +169,13 @@ mod test { } #[rstest] - #[case(SparseArray::try_new( + #[case(Sparse::try_new( buffer![0u64, 37, 47, 99].into_array(), PrimitiveArray::new(buffer![1.23f64, 0.47, 9.99, 3.5], Validity::AllValid).into_array(), 100, Scalar::null_native::(), ).unwrap())] - #[case(SparseArray::try_new( + #[case(Sparse::try_new( buffer![1u32, 3, 7, 8, 9].into_array(), buffer![10, 8, 3, 2, 1].into_array(), 10, @@ -184,14 +183,14 @@ mod test { ).unwrap())] #[case({ let nullable_values = PrimitiveArray::from_option_iter([Some(100i64), None, Some(300)]); - SparseArray::try_new( + Sparse::try_new( buffer![2u64, 4, 6].into_array(), nullable_values.into_array(), 10, Scalar::null_native::(), ).unwrap() })] - #[case(SparseArray::try_new( + #[case(Sparse::try_new( buffer![5u64].into_array(), buffer![999i32].into_array(), 20, diff --git a/encodings/sparse/src/lib.rs b/encodings/sparse/src/lib.rs index 52484cd9202..2d79238230b 100644 --- a/encodings/sparse/src/lib.rs +++ b/encodings/sparse/src/lib.rs @@ -3,14 +3,15 @@ use std::fmt::Debug; use std::hash::Hash; -use std::sync::Arc; use kernel::PARENT_KERNELS; use prost::Message as _; +use vortex_array::Array; use vortex_array::ArrayEq; use vortex_array::ArrayHash; +use vortex_array::ArrayId; use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::ExecutionResult; use vortex_array::IntoArray; @@ -28,11 +29,8 @@ use vortex_array::scalar::ScalarValue; use vortex_array::scalar_fn::fns::operators::Operator; use vortex_array::serde::ArrayChildren; use vortex_array::stats::ArrayStats; -use vortex_array::stats::StatsSetRef; use vortex_array::validity::Validity; use vortex_array::vtable; -use vortex_array::vtable::Array; -use vortex_array::vtable::ArrayId; use vortex_array::vtable::VTable; use vortex_array::vtable::ValidityVTable; use vortex_buffer::Buffer; @@ -57,7 +55,7 @@ mod ops; mod rules; mod slice; -vtable!(Sparse); +vtable!(Sparse, Sparse, SparseData); #[derive(Debug)] pub struct SparseMetadata { @@ -73,13 +71,13 @@ pub struct ProstPatchesMetadata { } impl VTable for Sparse { - type Array = SparseArray; + type ArrayData = SparseData; type Metadata = SparseMetadata; type OperationsVTable = Self; type ValidityVTable = Self; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &Self::ArrayData) -> &Self { &Sparse } @@ -87,32 +85,32 @@ impl VTable for Sparse { Self::ID } - fn len(array: &SparseArray) -> usize { + fn len(array: &SparseData) -> usize { array.patches.array_len() } - fn dtype(array: &SparseArray) -> &DType { + fn dtype(array: &SparseData) -> &DType { array.fill_scalar().dtype() } - fn stats(array: &SparseArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &SparseData) -> &ArrayStats { + &array.stats_set } - fn array_hash(array: &SparseArray, state: &mut H, precision: Precision) { + fn array_hash(array: &SparseData, state: &mut H, precision: Precision) { array.patches.array_hash(state, precision); array.fill_value.hash(state); } - fn array_eq(array: &SparseArray, other: &SparseArray, precision: Precision) -> bool { + fn array_eq(array: &SparseData, other: &SparseData, precision: Precision) -> bool { array.patches.array_eq(&other.patches, precision) && array.fill_value == other.fill_value } - fn nbuffers(_array: &SparseArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 1 } - fn buffer(array: &SparseArray, idx: usize) -> BufferHandle { + fn buffer(array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { match idx { 0 => { let fill_value_buffer = @@ -123,14 +121,14 @@ impl VTable for Sparse { } } - fn buffer_name(_array: &SparseArray, idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, idx: usize) -> Option { match idx { 0 => Some("fill_value".to_string()), _ => vortex_panic!("SparseArray buffer_name index {idx} out of bounds"), } } - fn metadata(array: &SparseArray) -> VortexResult { + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { let patches = array.patches().to_metadata(array.len(), array.dtype())?; Ok(SparseMetadata { @@ -179,7 +177,7 @@ impl VTable for Sparse { metadata: &Self::Metadata, _buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { vortex_ensure_eq!( children.len(), 2, @@ -194,7 +192,7 @@ impl VTable for Sparse { )?; let patch_values = children.get(1, dtype, metadata.patches.len()?)?; - SparseArray::try_new_from_patches( + SparseData::try_new_from_patches( Patches::new( len, metadata.patches.offset()?, @@ -206,15 +204,15 @@ impl VTable for Sparse { ) } - fn slots(array: &SparseArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &SparseArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn with_slots(array: &mut SparseArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "SparseArray expects {} slots, got {}", @@ -242,7 +240,7 @@ impl VTable for Sparse { } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { @@ -250,7 +248,7 @@ impl VTable for Sparse { } fn execute_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, @@ -258,7 +256,7 @@ impl VTable for Sparse { PARENT_KERNELS.execute(array, parent, child_idx, ctx) } - fn execute(array: Arc>, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, ctx: &mut ExecutionCtx) -> VortexResult { execute_sparse(&array, ctx).map(ExecutionResult::done) } } @@ -274,7 +272,7 @@ pub(crate) const SLOT_NAMES: [&str; NUM_SLOTS] = ["patch_indices", "patch_values", "patch_chunk_offsets"]; #[derive(Clone, Debug)] -pub struct SparseArray { +pub struct SparseData { pub(crate) slots: Vec>, patches: Patches, fill_value: Scalar, @@ -286,9 +284,32 @@ pub struct Sparse; impl Sparse { pub const ID: ArrayId = ArrayId::new_ref("vortex.sparse"); + + /// Construct a new [`SparseArray`] from indices, values, length, and fill value. + pub fn try_new( + indices: ArrayRef, + values: ArrayRef, + len: usize, + fill_value: Scalar, + ) -> VortexResult { + Array::try_from_data(SparseData::try_new(indices, values, len, fill_value)?) + } + + /// Encode the given array as a [`SparseArray`]. + pub fn encode(array: &ArrayRef, fill_value: Option) -> VortexResult { + SparseData::encode(array, fill_value) + } } -impl SparseArray { +impl SparseData { + fn make_slots(patches: &Patches) -> Vec> { + vec![ + Some(patches.indices().clone()), + Some(patches.values().clone()), + patches.chunk_offsets().clone(), + ] + } + pub fn try_new( indices: ArrayRef, values: ArrayRef, @@ -363,12 +384,22 @@ impl SparseArray { } } - fn make_slots(patches: &Patches) -> Vec> { - vec![ - Some(patches.indices().clone()), - Some(patches.values().clone()), - patches.chunk_offsets().clone(), - ] + /// Returns the length of the array. + #[inline] + pub fn len(&self) -> usize { + self.patches.array_len() + } + + /// Returns whether the array is empty. + #[inline] + pub fn is_empty(&self) -> bool { + self.patches.array_len() == 0 + } + + /// Returns the logical data type of the array. + #[inline] + pub fn dtype(&self) -> &DType { + self.fill_scalar().dtype() } #[inline] @@ -380,7 +411,7 @@ impl SparseArray { pub fn resolved_patches(&self) -> VortexResult { let patches = self.patches(); let indices_offset = Scalar::from(patches.offset()).cast(patches.indices().dtype())?; - let indices = patches.indices().to_array().binary( + let indices = patches.indices().binary( ConstantArray::new(indices_offset, patches.indices().len()).into_array(), Operator::Sub, )?; @@ -443,7 +474,7 @@ impl SparseArray { } }; - return Ok(SparseArray::try_new( + return Ok(SparseData::try_new( non_null_indices, non_null_values, array.len(), @@ -467,7 +498,6 @@ impl SparseArray { let fill_array = ConstantArray::new(fill.clone(), array.len()).into_array(); let non_top_mask = Mask::from_buffer( array - .to_array() .binary(fill_array.clone(), Operator::NotEq)? .fill_null(Scalar::bool(true, Nullability::NonNullable))? .to_bool() @@ -491,13 +521,13 @@ impl SparseArray { Mask::Values(values) => values.indices().iter().map(|v| *v as u64).collect(), }; - SparseArray::try_new(indices.into_array(), non_top_values, array.len(), fill) + SparseData::try_new(indices.into_array(), non_top_values, array.len(), fill) .map(|a| a.into_array()) } } impl ValidityVTable for Sparse { - fn validity(array: &SparseArray) -> VortexResult { + fn validity(array: ArrayView<'_, Sparse>) -> VortexResult { let patches = unsafe { Patches::new_unchecked( array.patches.array_len(), @@ -514,7 +544,7 @@ impl ValidityVTable for Sparse { }; Ok(Validity::Array( - unsafe { SparseArray::new_unchecked(patches, array.fill_value.is_valid().into()) } + unsafe { SparseData::new_unchecked(patches, array.fill_value.is_valid().into()) } .into_array(), )) } @@ -523,7 +553,6 @@ impl ValidityVTable for Sparse { #[cfg(test)] mod test { use itertools::Itertools; - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::arrays::ConstantArray; use vortex_array::arrays::PrimitiveArray; @@ -538,6 +567,7 @@ mod test { use vortex_error::VortexExpect; use super::*; + use crate::Sparse; fn nullable_fill() -> Scalar { Scalar::null(DType::Primitive(PType::I32, Nullability::Nullable)) @@ -552,7 +582,7 @@ mod test { let mut values = buffer![100i32, 200, 300].into_array(); values = values.cast(fill_value.dtype().clone()).unwrap(); - SparseArray::try_new(buffer![2u64, 5, 8].into_array(), values, 10, fill_value) + Sparse::try_new(buffer![2u64, 5, 8].into_array(), values, 10, fill_value) .unwrap() .into_array() } @@ -575,7 +605,7 @@ mod test { #[test] pub fn test_scalar_at_again() { - let arr = SparseArray::try_new( + let arr = Sparse::try_new( ConstantArray::new(10u32, 1).into_array(), ConstantArray::new(Scalar::primitive(1234u32, Nullability::Nullable), 1).into_array(), 100, @@ -611,7 +641,7 @@ mod test { #[test] pub fn validity_mask_sliced_nonnull_fill() { - let sliced = SparseArray::try_new( + let sliced = Sparse::try_new( buffer![2u64, 5, 8].into_array(), ConstantArray::new( Scalar::null(DType::Primitive(PType::F32, Nullability::Nullable)), @@ -674,7 +704,7 @@ mod test { let values = buffer![15_u32, 135, 13531, 42].into_array(); let indices = buffer![10_u64, 11, 50, 100].into_array(); - SparseArray::try_new(indices, values, 100, 0_u32.into()).unwrap(); + Sparse::try_new(indices, values, 100, 0_u32.into()).unwrap(); } #[test] @@ -682,7 +712,7 @@ mod test { let values = buffer![15_u32, 135, 13531, 42].into_array(); let indices = buffer![10_u64, 11, 50, 100].into_array(); - SparseArray::try_new(indices, values, 101, 0_u32.into()).unwrap(); + Sparse::try_new(indices, values, 101, 0_u32.into()).unwrap(); } #[test] @@ -693,8 +723,8 @@ mod test { true, true, false, true, false, true, false, true, true, false, true, false, ]), ); - let sparse = SparseArray::encode(&original.clone().into_array(), None) - .vortex_expect("SparseArray::encode should succeed for test data"); + let sparse = Sparse::encode(&original.clone().into_array(), None) + .vortex_expect("Sparse::encode should succeed for test data"); assert_eq!( sparse.validity_mask().unwrap(), Mask::from_iter(vec![ @@ -709,8 +739,7 @@ mod test { let indices = buffer![0u8, 2, 4, 6, 8].into_array(); let values = PrimitiveArray::from_option_iter([Some(0i16), Some(1), None, None, Some(4)]) .into_array(); - let array = - SparseArray::try_new(indices, values, 10, Scalar::null_native::()).unwrap(); + let array = Sparse::try_new(indices, values, 10, Scalar::null_native::()).unwrap(); let actual = array.validity_mask().unwrap(); let expected = Mask::from_iter([ true, false, true, false, false, false, false, false, true, false, diff --git a/encodings/sparse/src/ops.rs b/encodings/sparse/src/ops.rs index 7371298a5f4..552dcf5fa6e 100644 --- a/encodings/sparse/src/ops.rs +++ b/encodings/sparse/src/ops.rs @@ -1,17 +1,17 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::scalar::Scalar; use vortex_array::vtable::OperationsVTable; use vortex_error::VortexResult; use crate::Sparse; -use crate::SparseArray; impl OperationsVTable for Sparse { fn scalar_at( - array: &SparseArray, + array: ArrayView<'_, Sparse>, index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { @@ -30,14 +30,14 @@ mod tests { use vortex_array::assert_arrays_eq; use vortex_buffer::buffer; - use super::*; + use crate::Sparse; #[test] fn slice_partially_invalid() { let values = buffer![0u64].into_array(); let indices = buffer![0u8].into_array(); - let sparse = SparseArray::try_new(indices, values, 1000, 999u64.into()).unwrap(); + let sparse = Sparse::try_new(indices, values, 1000, 999u64.into()).unwrap(); let sliced = sparse.slice(0..1000).unwrap(); let mut expected = vec![999u64; 1000]; expected[0] = 0; diff --git a/encodings/sparse/src/rules.rs b/encodings/sparse/src/rules.rs index 797ccbc20b8..91b4edf80b0 100644 --- a/encodings/sparse/src/rules.rs +++ b/encodings/sparse/src/rules.rs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::builtins::ArrayBuiltins; use vortex_array::optimizer::rules::ParentRuleSet; @@ -11,7 +12,7 @@ use vortex_array::scalar_fn::fns::not::NotReduceAdaptor; use vortex_error::VortexResult; use crate::Sparse; -use crate::SparseArray; +use crate::SparseData; pub(crate) static RULES: ParentRuleSet = ParentRuleSet::new(&[ ParentRuleSet::lift(&CastReduceAdaptor(Sparse)), @@ -19,11 +20,11 @@ pub(crate) static RULES: ParentRuleSet = ParentRuleSet::new(&[ ]); impl NotReduce for Sparse { - fn invert(array: &SparseArray) -> VortexResult> { + fn invert(array: ArrayView<'_, Self>) -> VortexResult> { let inverted_fill = array.fill_scalar().as_bool().invert().into_scalar(); let inverted_patches = array.patches().clone().map_values(|values| values.not())?; Ok(Some( - SparseArray::try_new_from_patches(inverted_patches, inverted_fill)?.into_array(), + SparseData::try_new_from_patches(inverted_patches, inverted_fill)?.into_array(), )) } } diff --git a/encodings/sparse/src/slice.rs b/encodings/sparse/src/slice.rs index e83d9d76a2f..6d06da58029 100644 --- a/encodings/sparse/src/slice.rs +++ b/encodings/sparse/src/slice.rs @@ -4,6 +4,7 @@ use std::ops::Range; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::slice::SliceKernel; @@ -11,11 +12,11 @@ use vortex_error::VortexResult; use crate::ConstantArray; use crate::Sparse; -use crate::SparseArray; +use crate::SparseData; impl SliceKernel for Sparse { fn slice( - array: &SparseArray, + array: ArrayView<'_, Self>, range: Range, _ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -35,7 +36,7 @@ impl SliceKernel for Sparse { // patches slice will ensure that dtype of patches is unchanged and the indices and // values match Ok(Some( - unsafe { SparseArray::new_unchecked(new_patches, array.fill_scalar().clone()) } + unsafe { SparseData::new_unchecked(new_patches, array.fill_scalar().clone()) } .into_array(), )) } diff --git a/encodings/zigzag/public-api.lock b/encodings/zigzag/public-api.lock index 4418feb629e..ab49a0acca7 100644 --- a/encodings/zigzag/public-api.lock +++ b/encodings/zigzag/public-api.lock @@ -4,7 +4,9 @@ pub struct vortex_zigzag::ZigZag impl vortex_zigzag::ZigZag -pub const vortex_zigzag::ZigZag::ID: vortex_array::vtable::dyn_::ArrayId +pub const vortex_zigzag::ZigZag::ID: vortex_array::array::ArrayId + +pub fn vortex_zigzag::ZigZag::try_new(encoded: vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult impl core::clone::Clone for vortex_zigzag::ZigZag @@ -14,126 +16,120 @@ impl core::fmt::Debug for vortex_zigzag::ZigZag pub fn vortex_zigzag::ZigZag::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::take::TakeExecute for vortex_zigzag::ZigZag - -pub fn vortex_zigzag::ZigZag::take(array: &vortex_zigzag::ZigZagArray, indices: &vortex_array::array::ArrayRef, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::array::vtable::VTable for vortex_zigzag::ZigZag -impl vortex_array::arrays::filter::kernel::FilterReduce for vortex_zigzag::ZigZag - -pub fn vortex_zigzag::ZigZag::filter(array: &vortex_zigzag::ZigZagArray, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> +pub type vortex_zigzag::ZigZag::ArrayData = vortex_zigzag::ZigZagData -impl vortex_array::arrays::slice::SliceReduce for vortex_zigzag::ZigZag - -pub fn vortex_zigzag::ZigZag::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub type vortex_zigzag::ZigZag::Metadata = vortex_array::metadata::EmptyMetadata -impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_zigzag::ZigZag +pub type vortex_zigzag::ZigZag::OperationsVTable = vortex_zigzag::ZigZag -pub fn vortex_zigzag::ZigZag::cast(array: &vortex_zigzag::ZigZagArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub type vortex_zigzag::ZigZag::ValidityVTable = vortex_array::array::vtable::validity::ValidityVTableFromChild -impl vortex_array::scalar_fn::fns::mask::kernel::MaskReduce for vortex_zigzag::ZigZag +pub fn vortex_zigzag::ZigZag::array_eq(array: &vortex_zigzag::ZigZagData, other: &vortex_zigzag::ZigZagData, precision: vortex_array::hash::Precision) -> bool -pub fn vortex_zigzag::ZigZag::mask(array: &vortex_zigzag::ZigZagArray, mask: &vortex_array::array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_zigzag::ZigZag::array_hash(array: &vortex_zigzag::ZigZagData, state: &mut H, precision: vortex_array::hash::Precision) -impl vortex_array::vtable::VTable for vortex_zigzag::ZigZag +pub fn vortex_zigzag::ZigZag::buffer(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub type vortex_zigzag::ZigZag::Array = vortex_zigzag::ZigZagArray +pub fn vortex_zigzag::ZigZag::buffer_name(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub type vortex_zigzag::ZigZag::Metadata = vortex_array::metadata::EmptyMetadata +pub fn vortex_zigzag::ZigZag::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub type vortex_zigzag::ZigZag::OperationsVTable = vortex_zigzag::ZigZag +pub fn vortex_zigzag::ZigZag::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_zigzag::ZigZag::ValidityVTable = vortex_array::vtable::validity::ValidityVTableFromChild +pub fn vortex_zigzag::ZigZag::dtype(array: &vortex_zigzag::ZigZagData) -> &vortex_array::dtype::DType -pub fn vortex_zigzag::ZigZag::array_eq(array: &vortex_zigzag::ZigZagArray, other: &vortex_zigzag::ZigZagArray, precision: vortex_array::hash::Precision) -> bool +pub fn vortex_zigzag::ZigZag::execute(array: vortex_array::array::typed::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_zigzag::ZigZag::array_hash(array: &vortex_zigzag::ZigZagArray, state: &mut H, precision: vortex_array::hash::Precision) +pub fn vortex_zigzag::ZigZag::execute_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_zigzag::ZigZag::buffer(_array: &vortex_zigzag::ZigZagArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_zigzag::ZigZag::id(&self) -> vortex_array::array::ArrayId -pub fn vortex_zigzag::ZigZag::buffer_name(_array: &vortex_zigzag::ZigZagArray, idx: usize) -> core::option::Option +pub fn vortex_zigzag::ZigZag::len(array: &vortex_zigzag::ZigZagData) -> usize -pub fn vortex_zigzag::ZigZag::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_zigzag::ZigZag::metadata(_array: vortex_array::array::view::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_zigzag::ZigZag::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_zigzag::ZigZag::nbuffers(_array: vortex_array::array::view::ArrayView<'_, Self>) -> usize -pub fn vortex_zigzag::ZigZag::dtype(array: &vortex_zigzag::ZigZagArray) -> &vortex_array::dtype::DType +pub fn vortex_zigzag::ZigZag::reduce_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_zigzag::ZigZag::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_zigzag::ZigZag::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_zigzag::ZigZag::execute_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_zigzag::ZigZag::slot_name(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_zigzag::ZigZag::id(&self) -> vortex_array::vtable::dyn_::ArrayId +pub fn vortex_zigzag::ZigZag::slots(array: vortex_array::array::view::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_zigzag::ZigZag::len(array: &vortex_zigzag::ZigZagArray) -> usize +pub fn vortex_zigzag::ZigZag::stats(array: &vortex_zigzag::ZigZagData) -> &vortex_array::stats::array::ArrayStats -pub fn vortex_zigzag::ZigZag::metadata(_array: &vortex_zigzag::ZigZagArray) -> vortex_error::VortexResult +pub fn vortex_zigzag::ZigZag::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_zigzag::ZigZag::nbuffers(_array: &vortex_zigzag::ZigZagArray) -> usize +pub fn vortex_zigzag::ZigZag::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_zigzag::ZigZag::reduce_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +impl vortex_array::array::vtable::operations::OperationsVTable for vortex_zigzag::ZigZag -pub fn vortex_zigzag::ZigZag::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_zigzag::ZigZag::scalar_at(array: vortex_array::array::view::ArrayView<'_, vortex_zigzag::ZigZag>, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_zigzag::ZigZag::slot_name(_array: &vortex_zigzag::ZigZagArray, idx: usize) -> alloc::string::String +impl vortex_array::array::vtable::validity::ValidityChild for vortex_zigzag::ZigZag -pub fn vortex_zigzag::ZigZag::slots(array: &vortex_zigzag::ZigZagArray) -> &[core::option::Option] +pub fn vortex_zigzag::ZigZag::validity_child(array: &vortex_zigzag::ZigZagData) -> &vortex_array::array::erased::ArrayRef -pub fn vortex_zigzag::ZigZag::stats(array: &vortex_zigzag::ZigZagArray) -> vortex_array::stats::array::StatsSetRef<'_> +impl vortex_array::arrays::dict::take::TakeExecute for vortex_zigzag::ZigZag -pub fn vortex_zigzag::ZigZag::vtable(_array: &Self::Array) -> &Self +pub fn vortex_zigzag::ZigZag::take(array: vortex_array::array::view::ArrayView<'_, Self>, indices: &vortex_array::array::erased::ArrayRef, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_zigzag::ZigZag::with_slots(array: &mut vortex_zigzag::ZigZagArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +impl vortex_array::arrays::filter::kernel::FilterReduce for vortex_zigzag::ZigZag -impl vortex_array::vtable::operations::OperationsVTable for vortex_zigzag::ZigZag +pub fn vortex_zigzag::ZigZag::filter(array: vortex_array::array::view::ArrayView<'_, Self>, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> -pub fn vortex_zigzag::ZigZag::scalar_at(array: &vortex_zigzag::ZigZagArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::arrays::slice::SliceReduce for vortex_zigzag::ZigZag -impl vortex_array::vtable::validity::ValidityChild for vortex_zigzag::ZigZag +pub fn vortex_zigzag::ZigZag::slice(array: vortex_array::array::view::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_zigzag::ZigZag::validity_child(array: &vortex_zigzag::ZigZagArray) -> &vortex_array::array::ArrayRef +impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_zigzag::ZigZag -pub struct vortex_zigzag::ZigZagArray +pub fn vortex_zigzag::ZigZag::cast(array: vortex_array::array::view::ArrayView<'_, Self>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -impl vortex_zigzag::ZigZagArray +impl vortex_array::scalar_fn::fns::mask::kernel::MaskReduce for vortex_zigzag::ZigZag -pub fn vortex_zigzag::ZigZagArray::encoded(&self) -> &vortex_array::array::ArrayRef +pub fn vortex_zigzag::ZigZag::mask(array: vortex_array::array::view::ArrayView<'_, Self>, mask: &vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_zigzag::ZigZagArray::new(encoded: vortex_array::array::ArrayRef) -> Self +pub struct vortex_zigzag::ZigZagData -pub fn vortex_zigzag::ZigZagArray::ptype(&self) -> vortex_array::dtype::ptype::PType +impl vortex_zigzag::ZigZagData -pub fn vortex_zigzag::ZigZagArray::try_new(encoded: vortex_array::array::ArrayRef) -> vortex_error::VortexResult +pub fn vortex_zigzag::ZigZagData::dtype(&self) -> &vortex_array::dtype::DType -impl vortex_zigzag::ZigZagArray +pub fn vortex_zigzag::ZigZagData::encoded(&self) -> &vortex_array::array::erased::ArrayRef -pub fn vortex_zigzag::ZigZagArray::to_array(&self) -> vortex_array::array::ArrayRef +pub fn vortex_zigzag::ZigZagData::is_empty(&self) -> bool -impl core::clone::Clone for vortex_zigzag::ZigZagArray +pub fn vortex_zigzag::ZigZagData::len(&self) -> usize -pub fn vortex_zigzag::ZigZagArray::clone(&self) -> vortex_zigzag::ZigZagArray +pub fn vortex_zigzag::ZigZagData::new(encoded: vortex_array::array::erased::ArrayRef) -> Self -impl core::convert::AsRef for vortex_zigzag::ZigZagArray +pub fn vortex_zigzag::ZigZagData::ptype(&self) -> vortex_array::dtype::ptype::PType -pub fn vortex_zigzag::ZigZagArray::as_ref(&self) -> &dyn vortex_array::array::DynArray +pub fn vortex_zigzag::ZigZagData::try_new(encoded: vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult -impl core::convert::From for vortex_array::array::ArrayRef +impl core::clone::Clone for vortex_zigzag::ZigZagData -pub fn vortex_array::array::ArrayRef::from(value: vortex_zigzag::ZigZagArray) -> vortex_array::array::ArrayRef +pub fn vortex_zigzag::ZigZagData::clone(&self) -> vortex_zigzag::ZigZagData -impl core::fmt::Debug for vortex_zigzag::ZigZagArray +impl core::convert::From for vortex_array::array::erased::ArrayRef -pub fn vortex_zigzag::ZigZagArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::array::erased::ArrayRef::from(value: vortex_zigzag::ZigZagData) -> vortex_array::array::erased::ArrayRef -impl core::ops::deref::Deref for vortex_zigzag::ZigZagArray +impl core::fmt::Debug for vortex_zigzag::ZigZagData -pub type vortex_zigzag::ZigZagArray::Target = dyn vortex_array::array::DynArray +pub fn vortex_zigzag::ZigZagData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_zigzag::ZigZagArray::deref(&self) -> &Self::Target +impl vortex_array::array::IntoArray for vortex_zigzag::ZigZagData -impl vortex_array::array::IntoArray for vortex_zigzag::ZigZagArray +pub fn vortex_zigzag::ZigZagData::into_array(self) -> vortex_array::array::erased::ArrayRef -pub fn vortex_zigzag::ZigZagArray::into_array(self) -> vortex_array::array::ArrayRef +pub fn vortex_zigzag::zigzag_decode(parray: vortex_array::arrays::primitive::vtable::PrimitiveArray) -> vortex_array::arrays::primitive::vtable::PrimitiveArray -pub fn vortex_zigzag::zigzag_decode(parray: vortex_array::arrays::primitive::array::PrimitiveArray) -> vortex_array::arrays::primitive::array::PrimitiveArray +pub fn vortex_zigzag::zigzag_encode(parray: vortex_array::arrays::primitive::vtable::PrimitiveArray) -> vortex_error::VortexResult -pub fn vortex_zigzag::zigzag_encode(parray: vortex_array::arrays::primitive::array::PrimitiveArray) -> vortex_error::VortexResult +pub type vortex_zigzag::ZigZagArray = vortex_array::array::typed::Array diff --git a/encodings/zigzag/src/array.rs b/encodings/zigzag/src/array.rs index a417aae1af1..0cb2102c8c6 100644 --- a/encodings/zigzag/src/array.rs +++ b/encodings/zigzag/src/array.rs @@ -1,13 +1,12 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors -use std::hash::Hash; -use std::sync::Arc; - +use vortex_array::Array; use vortex_array::ArrayEq; use vortex_array::ArrayHash; +use vortex_array::ArrayId; use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::EmptyMetadata; use vortex_array::ExecutionCtx; use vortex_array::ExecutionResult; @@ -20,10 +19,7 @@ use vortex_array::match_each_unsigned_integer_ptype; use vortex_array::scalar::Scalar; use vortex_array::serde::ArrayChildren; use vortex_array::stats::ArrayStats; -use vortex_array::stats::StatsSetRef; use vortex_array::vtable; -use vortex_array::vtable::Array; -use vortex_array::vtable::ArrayId; use vortex_array::vtable::OperationsVTable; use vortex_array::vtable::VTable; use vortex_array::vtable::ValidityChild; @@ -41,16 +37,16 @@ use crate::kernel::PARENT_KERNELS; use crate::rules::RULES; use crate::zigzag_decode; -vtable!(ZigZag); +vtable!(ZigZag, ZigZag, ZigZagData); impl VTable for ZigZag { - type Array = ZigZagArray; + type ArrayData = ZigZagData; type Metadata = EmptyMetadata; type OperationsVTable = Self; type ValidityVTable = ValidityVTableFromChild; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &Self::ArrayData) -> &Self { &ZigZag } @@ -58,40 +54,39 @@ impl VTable for ZigZag { Self::ID } - fn len(array: &ZigZagArray) -> usize { + fn len(array: &ZigZagData) -> usize { array.encoded().len() } - fn dtype(array: &ZigZagArray) -> &DType { + fn dtype(array: &ZigZagData) -> &DType { &array.dtype } - fn stats(array: &ZigZagArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &ZigZagData) -> &ArrayStats { + &array.stats_set } - fn array_hash(array: &ZigZagArray, state: &mut H, precision: Precision) { - array.dtype.hash(state); + fn array_hash(array: &ZigZagData, state: &mut H, precision: Precision) { array.encoded().array_hash(state, precision); } - fn array_eq(array: &ZigZagArray, other: &ZigZagArray, precision: Precision) -> bool { - array.dtype == other.dtype && array.encoded().array_eq(other.encoded(), precision) + fn array_eq(array: &ZigZagData, other: &ZigZagData, precision: Precision) -> bool { + array.encoded().array_eq(other.encoded(), precision) } - fn nbuffers(_array: &ZigZagArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 0 } - fn buffer(_array: &ZigZagArray, idx: usize) -> BufferHandle { + fn buffer(_array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { vortex_panic!("ZigZagArray buffer index {idx} out of bounds") } - fn buffer_name(_array: &ZigZagArray, idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, idx: usize) -> Option { vortex_panic!("ZigZagArray buffer_name index {idx} out of bounds") } - fn metadata(_array: &ZigZagArray) -> VortexResult { + fn metadata(_array: ArrayView<'_, Self>) -> VortexResult { Ok(EmptyMetadata) } @@ -115,7 +110,7 @@ impl VTable for ZigZag { _metadata: &Self::Metadata, _buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { if children.len() != 1 { vortex_bail!("Expected 1 child, got {}", children.len()); } @@ -124,18 +119,18 @@ impl VTable for ZigZag { let encoded_type = DType::Primitive(ptype.to_unsigned(), dtype.nullability()); let encoded = children.get(0, &encoded_type, len)?; - ZigZagArray::try_new(encoded) + ZigZagData::try_new(encoded) } - fn slots(array: &ZigZagArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &ZigZagArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn with_slots(array: &mut ZigZagArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "ZigZagArray expects exactly {} slots, got {}", @@ -146,14 +141,14 @@ impl VTable for ZigZag { Ok(()) } - fn execute(array: Arc>, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, ctx: &mut ExecutionCtx) -> VortexResult { Ok(ExecutionResult::done( zigzag_decode(array.encoded().clone().execute(ctx)?).into_array(), )) } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { @@ -161,7 +156,7 @@ impl VTable for ZigZag { } fn execute_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, @@ -176,7 +171,7 @@ pub(super) const NUM_SLOTS: usize = 1; pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["encoded"]; #[derive(Clone, Debug)] -pub struct ZigZagArray { +pub struct ZigZagData { dtype: DType, pub(super) slots: Vec>, stats_set: ArrayStats, @@ -187,9 +182,14 @@ pub struct ZigZag; impl ZigZag { pub const ID: ArrayId = ArrayId::new_ref("vortex.zigzag"); + + /// Construct a new [`ZigZagArray`] from an encoded unsigned integer array. + pub fn try_new(encoded: ArrayRef) -> VortexResult { + Array::try_from_data(ZigZagData::try_new(encoded)?) + } } -impl ZigZagArray { +impl ZigZagData { pub fn new(encoded: ArrayRef) -> Self { Self::try_new(encoded).vortex_expect("ZigZagArray new") } @@ -210,6 +210,24 @@ impl ZigZagArray { }) } + /// Returns the length of the array. + #[inline] + pub fn len(&self) -> usize { + self.encoded().len() + } + + /// Returns whether the array is empty. + #[inline] + pub fn is_empty(&self) -> bool { + self.encoded().is_empty() + } + + /// Returns the logical data type of the array. + #[inline] + pub fn dtype(&self) -> &DType { + &self.dtype + } + pub fn ptype(&self) -> PType { self.dtype().as_ptype() } @@ -223,7 +241,7 @@ impl ZigZagArray { impl OperationsVTable for ZigZag { fn scalar_at( - array: &ZigZagArray, + array: ArrayView<'_, ZigZag>, index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { @@ -247,7 +265,7 @@ impl OperationsVTable for ZigZag { } impl ValidityChild for ZigZag { - fn validity_child(array: &ZigZagArray) -> &ArrayRef { + fn validity_child(array: &ZigZagData) -> &ArrayRef { array.encoded() } } @@ -285,7 +303,7 @@ mod test { let sliced = zigzag.slice(0..2).unwrap(); let sliced = sliced.as_::(); assert_eq!( - sliced.scalar_at(sliced.len() - 1).unwrap(), + sliced.array().scalar_at(sliced.len() - 1).unwrap(), Scalar::from(-5i32) ); diff --git a/encodings/zigzag/src/compress.rs b/encodings/zigzag/src/compress.rs index 2fc6101fc7e..690cd52deac 100644 --- a/encodings/zigzag/src/compress.rs +++ b/encodings/zigzag/src/compress.rs @@ -13,7 +13,7 @@ use vortex_error::vortex_panic; use zigzag::ZigZag as ExternalZigZag; use crate::ZigZagArray; - +use crate::ZigZagData; pub fn zigzag_encode(parray: PrimitiveArray) -> VortexResult { let validity = parray.validity(); let encoded = match parray.ptype() { @@ -26,7 +26,7 @@ pub fn zigzag_encode(parray: PrimitiveArray) -> VortexResult { parray.ptype() ), }; - ZigZagArray::try_new(encoded.into_array()) + ZigZagArray::try_from_data(ZigZagData::try_new(encoded.into_array())?) } fn zigzag_encode_primitive( @@ -71,6 +71,7 @@ where #[cfg(test)] mod test { + use vortex_array::IntoArray; use vortex_array::ToCanonical; use vortex_array::assert_arrays_eq; @@ -79,7 +80,9 @@ mod test { #[test] fn test_compress_i8() { - let compressed = zigzag_encode(PrimitiveArray::from_iter(-100_i8..100)).unwrap(); + let compressed = zigzag_encode(PrimitiveArray::from_iter(-100_i8..100)) + .unwrap() + .into_array(); assert!(compressed.is::()); assert_arrays_eq!( compressed.to_primitive(), @@ -88,7 +91,9 @@ mod test { } #[test] fn test_compress_i16() { - let compressed = zigzag_encode(PrimitiveArray::from_iter(-100_i16..100)).unwrap(); + let compressed = zigzag_encode(PrimitiveArray::from_iter(-100_i16..100)) + .unwrap() + .into_array(); assert!(compressed.is::()); assert_arrays_eq!( compressed.to_primitive(), @@ -97,7 +102,9 @@ mod test { } #[test] fn test_compress_i32() { - let compressed = zigzag_encode(PrimitiveArray::from_iter(-100_i32..100)).unwrap(); + let compressed = zigzag_encode(PrimitiveArray::from_iter(-100_i32..100)) + .unwrap() + .into_array(); assert!(compressed.is::()); assert_arrays_eq!( compressed.to_primitive(), @@ -106,7 +113,9 @@ mod test { } #[test] fn test_compress_i64() { - let compressed = zigzag_encode(PrimitiveArray::from_iter(-100_i64..100)).unwrap(); + let compressed = zigzag_encode(PrimitiveArray::from_iter(-100_i64..100)) + .unwrap() + .into_array(); assert!(compressed.is::()); assert_arrays_eq!( compressed.to_primitive(), diff --git a/encodings/zigzag/src/compute/cast.rs b/encodings/zigzag/src/compute/cast.rs index 74a8c4a5442..c69d91f5347 100644 --- a/encodings/zigzag/src/compute/cast.rs +++ b/encodings/zigzag/src/compute/cast.rs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::builtins::ArrayBuiltins; use vortex_array::dtype::DType; @@ -9,10 +10,9 @@ use vortex_array::scalar_fn::fns::cast::CastReduce; use vortex_error::VortexResult; use crate::ZigZag; -use crate::ZigZagArray; - +use crate::ZigZagData; impl CastReduce for ZigZag { - fn cast(array: &ZigZagArray, dtype: &DType) -> VortexResult> { + fn cast(array: ArrayView<'_, Self>, dtype: &DType) -> VortexResult> { if !dtype.is_signed_int() { return Ok(None); } @@ -20,14 +20,13 @@ impl CastReduce for ZigZag { let new_encoded_dtype = DType::Primitive(dtype.as_ptype().to_unsigned(), dtype.nullability()); let new_encoded = array.encoded().cast(new_encoded_dtype)?; - Ok(Some(ZigZagArray::try_new(new_encoded)?.into_array())) + Ok(Some(ZigZagData::try_new(new_encoded)?.into_array())) } } #[cfg(test)] mod tests { use rstest::rstest; - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::assert_arrays_eq; diff --git a/encodings/zigzag/src/compute/mod.rs b/encodings/zigzag/src/compute/mod.rs index 86e343208b7..9967ba5bb95 100644 --- a/encodings/zigzag/src/compute/mod.rs +++ b/encodings/zigzag/src/compute/mod.rs @@ -1,10 +1,11 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use crate::ZigZagData; mod cast; use vortex_array::ArrayRef; -use vortex_array::DynArray; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::dict::TakeExecute; @@ -17,34 +18,33 @@ use vortex_error::VortexResult; use vortex_mask::Mask; use crate::ZigZag; -use crate::ZigZagArray; impl FilterReduce for ZigZag { - fn filter(array: &ZigZagArray, mask: &Mask) -> VortexResult> { + fn filter(array: ArrayView<'_, Self>, mask: &Mask) -> VortexResult> { let encoded = array.encoded().filter(mask.clone())?; - Ok(Some(ZigZagArray::try_new(encoded)?.into_array())) + Ok(Some(ZigZagData::try_new(encoded)?.into_array())) } } impl TakeExecute for ZigZag { fn take( - array: &ZigZagArray, + array: ArrayView<'_, Self>, indices: &ArrayRef, _ctx: &mut ExecutionCtx, ) -> VortexResult> { - let encoded = array.encoded().take(indices.to_array())?; - Ok(Some(ZigZagArray::try_new(encoded)?.into_array())) + let encoded = array.encoded().take(indices.clone())?; + Ok(Some(ZigZagData::try_new(encoded)?.into_array())) } } impl MaskReduce for ZigZag { - fn mask(array: &ZigZagArray, mask: &ArrayRef) -> VortexResult> { + fn mask(array: ArrayView<'_, Self>, mask: &ArrayRef) -> VortexResult> { let masked_encoded = MaskExpr.try_new_array( array.encoded().len(), EmptyOptions, [array.encoded().clone(), mask.clone()], )?; - Ok(Some(ZigZagArray::try_new(masked_encoded)?.into_array())) + Ok(Some(ZigZagData::try_new(masked_encoded)?.into_array())) } } @@ -72,7 +72,6 @@ impl ZigZagEncoded for u64 { mod tests { use rstest::rstest; use vortex_array::ArrayRef; - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::ToCanonical; use vortex_array::arrays::PrimitiveArray; @@ -110,8 +109,9 @@ mod tests { ))?; let indices = buffer![0, 2].into_array(); - let actual = zigzag.take(indices.to_array()).unwrap(); - let expected = zigzag_encode(PrimitiveArray::new(buffer![-189, 1], Validity::AllValid))?; + let actual = zigzag.take(indices).unwrap(); + let expected = + zigzag_encode(PrimitiveArray::new(buffer![-189, 1], Validity::AllValid))?.into_array(); assert_arrays_eq!(actual, expected); Ok(()) } @@ -194,40 +194,28 @@ mod tests { #[rstest] // Basic ZigZag arrays #[case::zigzag_i8(zigzag_encode(PrimitiveArray::from_iter([-128i8, -1, 0, 1, 127])).unwrap())] - #[case::zigzag_i16(zigzag_encode(PrimitiveArray::from_iter([-1000i16, -100, 0, 100, 1000])).unwrap() - )] - #[case::zigzag_i32(zigzag_encode(PrimitiveArray::from_iter([-100000i32, -1000, 0, 1000, 100000])).unwrap() - )] - #[case::zigzag_i64(zigzag_encode(PrimitiveArray::from_iter([-1000000i64, -10000, 0, 10000, 1000000])).unwrap() - )] + #[case::zigzag_i16(zigzag_encode(PrimitiveArray::from_iter([-1000i16, -100, 0, 100, 1000])).unwrap())] + #[case::zigzag_i32(zigzag_encode(PrimitiveArray::from_iter([-100000i32, -1000, 0, 1000, 100000])).unwrap())] + #[case::zigzag_i64(zigzag_encode(PrimitiveArray::from_iter([-1000000i64, -10000, 0, 10000, 1000000])).unwrap())] // Nullable arrays - #[case::zigzag_nullable_i32(zigzag_encode(PrimitiveArray::from_option_iter([Some(-100i32), None, Some(0), Some(100), None])).unwrap() - )] - #[case::zigzag_nullable_i64(zigzag_encode(PrimitiveArray::from_option_iter([Some(-1000i64), None, Some(0), Some(1000), None])).unwrap() - )] + #[case::zigzag_nullable_i32(zigzag_encode(PrimitiveArray::from_option_iter([Some(-100i32), None, Some(0), Some(100), None])).unwrap())] + #[case::zigzag_nullable_i64(zigzag_encode(PrimitiveArray::from_option_iter([Some(-1000i64), None, Some(0), Some(1000), None])).unwrap())] // Edge cases #[case::zigzag_single(zigzag_encode(PrimitiveArray::from_iter([-42i32])).unwrap())] - #[case::zigzag_alternating(zigzag_encode(PrimitiveArray::from_iter([-1i32, 1, -2, 2, -3, 3])).unwrap() - )] + #[case::zigzag_alternating(zigzag_encode(PrimitiveArray::from_iter([-1i32, 1, -2, 2, -3, 3])).unwrap())] // Large arrays #[case::zigzag_large_i32(zigzag_encode(PrimitiveArray::from_iter(-500..500)).unwrap())] - #[case::zigzag_large_i64(zigzag_encode(PrimitiveArray::from_iter((-1000..1000).map(|i| i as i64 * 100))).unwrap() - )] + #[case::zigzag_large_i64(zigzag_encode(PrimitiveArray::from_iter((-1000..1000).map(|i| i as i64 * 100))).unwrap())] fn test_zigzag_consistency(#[case] array: ZigZagArray) { test_array_consistency(&array.into_array()); } #[rstest] - #[case::zigzag_i8_basic(zigzag_encode(PrimitiveArray::from_iter([-10i8, -5, 0, 5, 10])).unwrap() - )] - #[case::zigzag_i16_basic(zigzag_encode(PrimitiveArray::from_iter([-100i16, -50, 0, 50, 100])).unwrap() - )] - #[case::zigzag_i32_basic(zigzag_encode(PrimitiveArray::from_iter([-1000i32, -500, 0, 500, 1000])).unwrap() - )] - #[case::zigzag_i64_basic(zigzag_encode(PrimitiveArray::from_iter([-10000i64, -5000, 0, 5000, 10000])).unwrap() - )] - #[case::zigzag_i32_large(zigzag_encode(PrimitiveArray::from_iter((-50..50).map(|i| i * 10))).unwrap() - )] + #[case::zigzag_i8_basic(zigzag_encode(PrimitiveArray::from_iter([-10i8, -5, 0, 5, 10])).unwrap())] + #[case::zigzag_i16_basic(zigzag_encode(PrimitiveArray::from_iter([-100i16, -50, 0, 50, 100])).unwrap())] + #[case::zigzag_i32_basic(zigzag_encode(PrimitiveArray::from_iter([-1000i32, -500, 0, 500, 1000])).unwrap())] + #[case::zigzag_i64_basic(zigzag_encode(PrimitiveArray::from_iter([-10000i64, -5000, 0, 5000, 10000])).unwrap())] + #[case::zigzag_i32_large(zigzag_encode(PrimitiveArray::from_iter((-50..50).map(|i| i * 10))).unwrap())] fn test_zigzag_binary_numeric(#[case] array: ZigZagArray) { test_binary_numeric_array(array.into_array()); } diff --git a/encodings/zigzag/src/slice.rs b/encodings/zigzag/src/slice.rs index 95f5e272c81..599d365809f 100644 --- a/encodings/zigzag/src/slice.rs +++ b/encodings/zigzag/src/slice.rs @@ -4,17 +4,18 @@ use std::ops::Range; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::arrays::slice::SliceReduce; use vortex_error::VortexResult; use crate::ZigZag; -use crate::ZigZagArray; +use crate::ZigZagData; impl SliceReduce for ZigZag { - fn slice(array: &Self::Array, range: Range) -> VortexResult> { + fn slice(array: ArrayView<'_, Self>, range: Range) -> VortexResult> { Ok(Some( - ZigZagArray::new(array.encoded().slice(range)?).into_array(), + ZigZagData::new(array.encoded().slice(range)?).into_array(), )) } } diff --git a/encodings/zstd/benches/listview_rebuild.rs b/encodings/zstd/benches/listview_rebuild.rs index 68147912f17..0e91342c8ac 100644 --- a/encodings/zstd/benches/listview_rebuild.rs +++ b/encodings/zstd/benches/listview_rebuild.rs @@ -10,13 +10,13 @@ use vortex_array::arrays::VarBinViewArray; use vortex_array::arrays::listview::ListViewRebuildMode; use vortex_array::validity::Validity; use vortex_buffer::Buffer; -use vortex_zstd::ZstdArray; +use vortex_zstd::ZstdData; #[divan::bench(sample_size = 1000)] fn rebuild_naive(bencher: Bencher) { let dudes = VarBinViewArray::from_iter_str(["Washington", "Adams", "Jefferson", "Madison"]) .into_array(); - let dudes = ZstdArray::from_array(dudes, 9, 1024).unwrap().into_array(); + let dudes = ZstdData::from_array(dudes, 9, 1024).unwrap().into_array(); let offsets = std::iter::repeat_n(0u32, 1024) .collect::>() diff --git a/encodings/zstd/public-api.lock b/encodings/zstd/public-api.lock index 7ed3514287b..29554686839 100644 --- a/encodings/zstd/public-api.lock +++ b/encodings/zstd/public-api.lock @@ -4,7 +4,13 @@ pub struct vortex_zstd::Zstd impl vortex_zstd::Zstd -pub const vortex_zstd::Zstd::ID: vortex_array::vtable::dyn_::ArrayId +pub const vortex_zstd::Zstd::ID: vortex_array::array::ArrayId + +pub fn vortex_zstd::Zstd::from_primitive(parray: &vortex_array::arrays::primitive::vtable::PrimitiveArray, level: i32, values_per_frame: usize) -> vortex_error::VortexResult + +pub fn vortex_zstd::Zstd::from_var_bin_view(vbv: &vortex_array::arrays::varbinview::vtable::VarBinViewArray, level: i32, values_per_frame: usize) -> vortex_error::VortexResult + +pub fn vortex_zstd::Zstd::from_var_bin_view_without_dict(vbv: &vortex_array::arrays::varbinview::vtable::VarBinViewArray, level: i32, values_per_frame: usize) -> vortex_error::VortexResult impl core::clone::Clone for vortex_zstd::Zstd @@ -14,121 +20,65 @@ impl core::fmt::Debug for vortex_zstd::Zstd pub fn vortex_zstd::Zstd::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::slice::SliceReduce for vortex_zstd::Zstd - -pub fn vortex_zstd::Zstd::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_zstd::Zstd - -pub fn vortex_zstd::Zstd::cast(array: &vortex_zstd::ZstdArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +impl vortex_array::array::vtable::VTable for vortex_zstd::Zstd -impl vortex_array::vtable::VTable for vortex_zstd::Zstd - -pub type vortex_zstd::Zstd::Array = vortex_zstd::ZstdArray +pub type vortex_zstd::Zstd::ArrayData = vortex_zstd::ZstdData pub type vortex_zstd::Zstd::Metadata = vortex_array::metadata::ProstMetadata pub type vortex_zstd::Zstd::OperationsVTable = vortex_zstd::Zstd -pub type vortex_zstd::Zstd::ValidityVTable = vortex_array::vtable::validity::ValidityVTableFromValiditySliceHelper +pub type vortex_zstd::Zstd::ValidityVTable = vortex_array::array::vtable::validity::ValidityVTableFromValiditySliceHelper -pub fn vortex_zstd::Zstd::array_eq(array: &vortex_zstd::ZstdArray, other: &vortex_zstd::ZstdArray, precision: vortex_array::hash::Precision) -> bool +pub fn vortex_zstd::Zstd::array_eq(array: &vortex_zstd::ZstdData, other: &vortex_zstd::ZstdData, precision: vortex_array::hash::Precision) -> bool -pub fn vortex_zstd::Zstd::array_hash(array: &vortex_zstd::ZstdArray, state: &mut H, precision: vortex_array::hash::Precision) +pub fn vortex_zstd::Zstd::array_hash(array: &vortex_zstd::ZstdData, state: &mut H, precision: vortex_array::hash::Precision) -pub fn vortex_zstd::Zstd::buffer(array: &vortex_zstd::ZstdArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_zstd::Zstd::buffer(array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_zstd::Zstd::buffer_name(array: &vortex_zstd::ZstdArray, idx: usize) -> core::option::Option +pub fn vortex_zstd::Zstd::buffer_name(array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_zstd::Zstd::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_zstd::Zstd::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult pub fn vortex_zstd::Zstd::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_zstd::Zstd::dtype(array: &vortex_zstd::ZstdArray) -> &vortex_array::dtype::DType +pub fn vortex_zstd::Zstd::dtype(array: &vortex_zstd::ZstdData) -> &vortex_array::dtype::DType -pub fn vortex_zstd::Zstd::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_zstd::Zstd::execute(array: vortex_array::array::typed::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_zstd::Zstd::id(&self) -> vortex_array::vtable::dyn_::ArrayId +pub fn vortex_zstd::Zstd::id(&self) -> vortex_array::array::ArrayId -pub fn vortex_zstd::Zstd::len(array: &vortex_zstd::ZstdArray) -> usize +pub fn vortex_zstd::Zstd::len(array: &vortex_zstd::ZstdData) -> usize -pub fn vortex_zstd::Zstd::metadata(array: &vortex_zstd::ZstdArray) -> vortex_error::VortexResult +pub fn vortex_zstd::Zstd::metadata(array: vortex_array::array::view::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_zstd::Zstd::nbuffers(array: &vortex_zstd::ZstdArray) -> usize +pub fn vortex_zstd::Zstd::nbuffers(array: vortex_array::array::view::ArrayView<'_, Self>) -> usize -pub fn vortex_zstd::Zstd::reduce_parent(array: &vortex_array::vtable::typed::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_zstd::Zstd::reduce_parent(array: vortex_array::array::view::ArrayView<'_, Self>, parent: &vortex_array::array::erased::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> pub fn vortex_zstd::Zstd::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_zstd::Zstd::slot_name(_array: &vortex_zstd::ZstdArray, idx: usize) -> alloc::string::String - -pub fn vortex_zstd::Zstd::slots(array: &vortex_zstd::ZstdArray) -> &[core::option::Option] - -pub fn vortex_zstd::Zstd::stats(array: &vortex_zstd::ZstdArray) -> vortex_array::stats::array::StatsSetRef<'_> - -pub fn vortex_zstd::Zstd::vtable(_array: &Self::Array) -> &Self - -pub fn vortex_zstd::Zstd::with_slots(array: &mut vortex_zstd::ZstdArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> - -impl vortex_array::vtable::operations::OperationsVTable for vortex_zstd::Zstd - -pub fn vortex_zstd::Zstd::scalar_at(array: &vortex_zstd::ZstdArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult - -pub struct vortex_zstd::ZstdArray - -impl vortex_zstd::ZstdArray - -pub fn vortex_zstd::ZstdArray::decompress(&self, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult - -pub fn vortex_zstd::ZstdArray::from_array(array: vortex_array::array::ArrayRef, level: i32, values_per_frame: usize) -> vortex_error::VortexResult - -pub fn vortex_zstd::ZstdArray::from_canonical(canonical: &vortex_array::canonical::Canonical, level: i32, values_per_frame: usize) -> vortex_error::VortexResult> - -pub fn vortex_zstd::ZstdArray::from_primitive(parray: &vortex_array::arrays::primitive::array::PrimitiveArray, level: i32, values_per_frame: usize) -> vortex_error::VortexResult - -pub fn vortex_zstd::ZstdArray::from_primitive_without_dict(parray: &vortex_array::arrays::primitive::array::PrimitiveArray, level: i32, values_per_frame: usize) -> vortex_error::VortexResult - -pub fn vortex_zstd::ZstdArray::from_var_bin_view(vbv: &vortex_array::arrays::varbinview::array::VarBinViewArray, level: i32, values_per_frame: usize) -> vortex_error::VortexResult - -pub fn vortex_zstd::ZstdArray::from_var_bin_view_without_dict(vbv: &vortex_array::arrays::varbinview::array::VarBinViewArray, level: i32, values_per_frame: usize) -> vortex_error::VortexResult - -pub fn vortex_zstd::ZstdArray::into_parts(self) -> vortex_zstd::ZstdArrayParts - -pub fn vortex_zstd::ZstdArray::new(dictionary: core::option::Option, frames: alloc::vec::Vec, dtype: vortex_array::dtype::DType, metadata: vortex_zstd::ZstdMetadata, n_rows: usize, validity: vortex_array::validity::Validity) -> Self - -impl vortex_zstd::ZstdArray - -pub fn vortex_zstd::ZstdArray::to_array(&self) -> vortex_array::array::ArrayRef - -impl core::clone::Clone for vortex_zstd::ZstdArray - -pub fn vortex_zstd::ZstdArray::clone(&self) -> vortex_zstd::ZstdArray +pub fn vortex_zstd::Zstd::slot_name(_array: vortex_array::array::view::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl core::convert::AsRef for vortex_zstd::ZstdArray +pub fn vortex_zstd::Zstd::slots(array: vortex_array::array::view::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_zstd::ZstdArray::as_ref(&self) -> &dyn vortex_array::array::DynArray +pub fn vortex_zstd::Zstd::stats(array: &vortex_zstd::ZstdData) -> &vortex_array::stats::array::ArrayStats -impl core::convert::From for vortex_array::array::ArrayRef +pub fn vortex_zstd::Zstd::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::array::ArrayRef::from(value: vortex_zstd::ZstdArray) -> vortex_array::array::ArrayRef +pub fn vortex_zstd::Zstd::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl core::fmt::Debug for vortex_zstd::ZstdArray +impl vortex_array::array::vtable::operations::OperationsVTable for vortex_zstd::Zstd -pub fn vortex_zstd::ZstdArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_zstd::Zstd::scalar_at(array: vortex_array::array::view::ArrayView<'_, vortex_zstd::Zstd>, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -impl core::ops::deref::Deref for vortex_zstd::ZstdArray - -pub type vortex_zstd::ZstdArray::Target = dyn vortex_array::array::DynArray - -pub fn vortex_zstd::ZstdArray::deref(&self) -> &Self::Target - -impl vortex_array::array::IntoArray for vortex_zstd::ZstdArray +impl vortex_array::arrays::slice::SliceReduce for vortex_zstd::Zstd -pub fn vortex_zstd::ZstdArray::into_array(self) -> vortex_array::array::ArrayRef +pub fn vortex_zstd::Zstd::slice(array: vortex_array::array::view::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -impl vortex_array::vtable::validity::ValiditySliceHelper for vortex_zstd::ZstdArray +impl vortex_array::scalar_fn::fns::cast::kernel::CastReduce for vortex_zstd::Zstd -pub fn vortex_zstd::ZstdArray::unsliced_validity_and_slice(&self) -> (&vortex_array::validity::Validity, usize, usize) +pub fn vortex_zstd::Zstd::cast(array: vortex_array::array::view::ArrayView<'_, Self>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> pub struct vortex_zstd::ZstdArrayParts @@ -180,6 +130,54 @@ pub fn vortex_zstd::ZstdBuffersMetadata::clear(&mut self) pub fn vortex_zstd::ZstdBuffersMetadata::encoded_len(&self) -> usize +pub struct vortex_zstd::ZstdData + +impl vortex_zstd::ZstdData + +pub fn vortex_zstd::ZstdData::decompress(&self, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult + +pub fn vortex_zstd::ZstdData::dtype(&self) -> &vortex_array::dtype::DType + +pub fn vortex_zstd::ZstdData::from_array(array: vortex_array::array::erased::ArrayRef, level: i32, values_per_frame: usize) -> vortex_error::VortexResult + +pub fn vortex_zstd::ZstdData::from_canonical(canonical: &vortex_array::canonical::Canonical, level: i32, values_per_frame: usize) -> vortex_error::VortexResult> + +pub fn vortex_zstd::ZstdData::from_primitive(parray: &vortex_array::arrays::primitive::vtable::PrimitiveArray, level: i32, values_per_frame: usize) -> vortex_error::VortexResult + +pub fn vortex_zstd::ZstdData::from_primitive_without_dict(parray: &vortex_array::arrays::primitive::vtable::PrimitiveArray, level: i32, values_per_frame: usize) -> vortex_error::VortexResult + +pub fn vortex_zstd::ZstdData::from_var_bin_view(vbv: &vortex_array::arrays::varbinview::vtable::VarBinViewArray, level: i32, values_per_frame: usize) -> vortex_error::VortexResult + +pub fn vortex_zstd::ZstdData::from_var_bin_view_without_dict(vbv: &vortex_array::arrays::varbinview::vtable::VarBinViewArray, level: i32, values_per_frame: usize) -> vortex_error::VortexResult + +pub fn vortex_zstd::ZstdData::into_parts(self) -> vortex_zstd::ZstdArrayParts + +pub fn vortex_zstd::ZstdData::is_empty(&self) -> bool + +pub fn vortex_zstd::ZstdData::len(&self) -> usize + +pub fn vortex_zstd::ZstdData::new(dictionary: core::option::Option, frames: alloc::vec::Vec, dtype: vortex_array::dtype::DType, metadata: vortex_zstd::ZstdMetadata, n_rows: usize, validity: vortex_array::validity::Validity) -> Self + +impl core::clone::Clone for vortex_zstd::ZstdData + +pub fn vortex_zstd::ZstdData::clone(&self) -> vortex_zstd::ZstdData + +impl core::convert::From for vortex_array::array::erased::ArrayRef + +pub fn vortex_array::array::erased::ArrayRef::from(value: vortex_zstd::ZstdData) -> vortex_array::array::erased::ArrayRef + +impl core::fmt::Debug for vortex_zstd::ZstdData + +pub fn vortex_zstd::ZstdData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl vortex_array::array::IntoArray for vortex_zstd::ZstdData + +pub fn vortex_zstd::ZstdData::into_array(self) -> vortex_array::array::erased::ArrayRef + +impl vortex_array::array::vtable::validity::ValiditySliceHelper for vortex_zstd::ZstdData + +pub fn vortex_zstd::ZstdData::unsliced_validity_and_slice(&self) -> (&vortex_array::validity::Validity, usize, usize) + pub struct vortex_zstd::ZstdFrameMetadata pub vortex_zstd::ZstdFrameMetadata::n_values: u64 @@ -229,3 +227,5 @@ pub fn vortex_zstd::ZstdMetadata::clear(&mut self) pub fn vortex_zstd::ZstdMetadata::encoded_len(&self) -> usize pub fn vortex_zstd::reconstruct_views(buffer: &vortex_buffer::ByteBuffer, max_buffer_len: usize) -> (alloc::vec::Vec, vortex_buffer::buffer::Buffer) + +pub type vortex_zstd::ZstdArray = vortex_array::array::typed::Array diff --git a/encodings/zstd/src/array.rs b/encodings/zstd/src/array.rs index 200cffb0ff0..d8c6875fa39 100644 --- a/encodings/zstd/src/array.rs +++ b/encodings/zstd/src/array.rs @@ -7,11 +7,13 @@ use std::sync::Arc; use itertools::Itertools as _; use prost::Message as _; +use vortex_array::Array; use vortex_array::ArrayEq; use vortex_array::ArrayHash; +use vortex_array::ArrayId; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::Canonical; -use vortex_array::DynArray; use vortex_array::ExecutionCtx; use vortex_array::ExecutionResult; use vortex_array::IntoArray; @@ -31,11 +33,8 @@ use vortex_array::dtype::DType; use vortex_array::scalar::Scalar; use vortex_array::serde::ArrayChildren; use vortex_array::stats::ArrayStats; -use vortex_array::stats::StatsSetRef; use vortex_array::validity::Validity; use vortex_array::vtable; -use vortex_array::vtable::Array; -use vortex_array::vtable::ArrayId; use vortex_array::vtable::OperationsVTable; use vortex_array::vtable::VTable; use vortex_array::vtable::ValiditySliceHelper; @@ -81,16 +80,16 @@ type ViewLen = u32; // We then insert these values to the correct position using a primitive array // constructor. -vtable!(Zstd); +vtable!(Zstd, Zstd, ZstdData); impl VTable for Zstd { - type Array = ZstdArray; + type ArrayData = ZstdData; type Metadata = ProstMetadata; type OperationsVTable = Self; type ValidityVTable = ValidityVTableFromValiditySliceHelper; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &Self::ArrayData) -> &Self { &Zstd } @@ -98,19 +97,19 @@ impl VTable for Zstd { Self::ID } - fn len(array: &ZstdArray) -> usize { + fn len(array: &ZstdData) -> usize { array.slice_stop - array.slice_start } - fn dtype(array: &ZstdArray) -> &DType { + fn dtype(array: &ZstdData) -> &DType { &array.dtype } - fn stats(array: &ZstdArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &ZstdData) -> &ArrayStats { + &array.stats_set } - fn array_hash(array: &ZstdArray, state: &mut H, precision: Precision) { + fn array_hash(array: &ZstdData, state: &mut H, precision: Precision) { match &array.dictionary { Some(dict) => { true.hash(state); @@ -123,14 +122,13 @@ impl VTable for Zstd { for frame in &array.frames { frame.array_hash(state, precision); } - array.dtype.hash(state); array.unsliced_validity.array_hash(state, precision); array.unsliced_n_rows.hash(state); array.slice_start.hash(state); array.slice_stop.hash(state); } - fn array_eq(array: &ZstdArray, other: &ZstdArray, precision: Precision) -> bool { + fn array_eq(array: &ZstdData, other: &ZstdData, precision: Precision) -> bool { if !match (&array.dictionary, &other.dictionary) { (Some(d1), Some(d2)) => d1.array_eq(d2, precision), (None, None) => true, @@ -146,20 +144,19 @@ impl VTable for Zstd { return false; } } - array.dtype == other.dtype - && array - .unsliced_validity - .array_eq(&other.unsliced_validity, precision) + array + .unsliced_validity + .array_eq(&other.unsliced_validity, precision) && array.unsliced_n_rows == other.unsliced_n_rows && array.slice_start == other.slice_start && array.slice_stop == other.slice_stop } - fn nbuffers(array: &ZstdArray) -> usize { + fn nbuffers(array: ArrayView<'_, Self>) -> usize { array.dictionary.is_some() as usize + array.frames.len() } - fn buffer(array: &ZstdArray, idx: usize) -> BufferHandle { + fn buffer(array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { if let Some(dict) = &array.dictionary { if idx == 0 { return BufferHandle::new_host(dict.clone()); @@ -170,7 +167,7 @@ impl VTable for Zstd { } } - fn buffer_name(array: &ZstdArray, idx: usize) -> Option { + fn buffer_name(array: ArrayView<'_, Self>, idx: usize) -> Option { if array.dictionary.is_some() { if idx == 0 { Some("dictionary".to_string()) @@ -182,7 +179,7 @@ impl VTable for Zstd { } } - fn metadata(array: &ZstdArray) -> VortexResult { + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { Ok(ProstMetadata(array.metadata.clone())) } @@ -206,7 +203,7 @@ impl VTable for Zstd { metadata: &Self::Metadata, buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { let validity = if children.is_empty() { Validity::from(dtype.nullability()) } else if children.len() == 1 { @@ -236,7 +233,7 @@ impl VTable for Zstd { ) }; - Ok(ZstdArray::new( + Ok(ZstdData::new( dictionary_buffer, compressed_buffers, dtype.clone(), @@ -246,15 +243,15 @@ impl VTable for Zstd { )) } - fn slots(array: &ZstdArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &ZstdArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn with_slots(array: &mut ZstdArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "ZstdArray expects {} slots, got {}", @@ -271,7 +268,7 @@ impl VTable for Zstd { Ok(()) } - fn execute(array: Arc>, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, ctx: &mut ExecutionCtx) -> VortexResult { array .decompress(ctx)? .execute::(ctx) @@ -279,7 +276,7 @@ impl VTable for Zstd { } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { @@ -292,6 +289,37 @@ pub struct Zstd; impl Zstd { pub const ID: ArrayId = ArrayId::new_ref("vortex.zstd"); + + /// Compress a [`VarBinViewArray`] using Zstd without a dictionary. + pub fn from_var_bin_view_without_dict( + vbv: &VarBinViewArray, + level: i32, + values_per_frame: usize, + ) -> VortexResult { + Array::try_from_data(ZstdData::from_var_bin_view_without_dict( + vbv, + level, + values_per_frame, + )?) + } + + /// Compress a [`PrimitiveArray`] using Zstd. + pub fn from_primitive( + parray: &PrimitiveArray, + level: i32, + values_per_frame: usize, + ) -> VortexResult { + Array::try_from_data(ZstdData::from_primitive(parray, level, values_per_frame)?) + } + + /// Compress a [`VarBinViewArray`] using Zstd. + pub fn from_var_bin_view( + vbv: &VarBinViewArray, + level: i32, + values_per_frame: usize, + ) -> VortexResult { + Array::try_from_data(ZstdData::from_var_bin_view(vbv, level, values_per_frame)?) + } } /// The validity bitmap indicating which elements are non-null. @@ -300,7 +328,7 @@ pub(super) const NUM_SLOTS: usize = 1; pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["validity"]; #[derive(Clone, Debug)] -pub struct ZstdArray { +pub struct ZstdData { pub(crate) dictionary: Option, pub(crate) frames: Vec, pub(crate) metadata: ZstdMetadata, @@ -350,7 +378,7 @@ fn choose_max_dict_size(uncompressed_size: usize) -> usize { fn collect_valid_primitive(parray: &PrimitiveArray) -> VortexResult { let mask = parray.validity_mask()?; - Ok(parray.clone().into_array().filter(mask)?.to_primitive()) + Ok(parray.filter(mask)?.to_primitive()) } fn collect_valid_vbv(vbv: &VarBinViewArray) -> VortexResult<(ByteBuffer, Vec)> { @@ -430,7 +458,7 @@ pub fn reconstruct_views( (buffers, views.freeze()) } -impl ZstdArray { +impl ZstdData { pub fn new( dictionary: Option, frames: Vec, @@ -598,7 +626,7 @@ impl ZstdArray { frames: frame_metas, }; - Ok(ZstdArray::new( + Ok(ZstdData::new( dictionary, frames, dtype, @@ -689,7 +717,7 @@ impl ZstdArray { .try_into()?, frames: frame_metas, }; - Ok(ZstdArray::new( + Ok(ZstdData::new( dictionary, frames, dtype, @@ -705,12 +733,12 @@ impl ZstdArray { values_per_frame: usize, ) -> VortexResult> { match canonical { - Canonical::Primitive(parray) => Ok(Some(ZstdArray::from_primitive( + Canonical::Primitive(parray) => Ok(Some(ZstdData::from_primitive( parray, level, values_per_frame, )?)), - Canonical::VarBinView(vbv) => Ok(Some(ZstdArray::from_var_bin_view( + Canonical::VarBinView(vbv) => Ok(Some(ZstdData::from_var_bin_view( vbv, level, values_per_frame, @@ -916,12 +944,13 @@ impl ZstdArray { self.slice_stop ); - ZstdArray { + Array::try_from_data(ZstdData { slice_start: self.slice_start + start, slice_stop: self.slice_start + stop, stats_set: Default::default(), ..self.clone() - } + }) + .vortex_expect("ZstdData is always valid") } /// Consumes the array and returns its parts. @@ -938,7 +967,21 @@ impl ZstdArray { } } - pub(crate) fn dtype(&self) -> &DType { + /// Returns the length of the array. + #[inline] + pub fn len(&self) -> usize { + self.slice_stop - self.slice_start + } + + /// Returns whether the array is empty. + #[inline] + pub fn is_empty(&self) -> bool { + self.slice_stop == self.slice_start + } + + /// Returns the logical data type of the array. + #[inline] + pub fn dtype(&self) -> &DType { &self.dtype } @@ -955,14 +998,18 @@ impl ZstdArray { } } -impl ValiditySliceHelper for ZstdArray { +impl ValiditySliceHelper for ZstdData { fn unsliced_validity_and_slice(&self) -> (&Validity, usize, usize) { (&self.unsliced_validity, self.slice_start, self.slice_stop) } } impl OperationsVTable for Zstd { - fn scalar_at(array: &ZstdArray, index: usize, _ctx: &mut ExecutionCtx) -> VortexResult { + fn scalar_at( + array: ArrayView<'_, Zstd>, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { let mut ctx = LEGACY_SESSION.create_execution_ctx(); array ._slice(index, index + 1) diff --git a/encodings/zstd/src/compute/cast.rs b/encodings/zstd/src/compute/cast.rs index f57637df88c..feadd131e95 100644 --- a/encodings/zstd/src/compute/cast.rs +++ b/encodings/zstd/src/compute/cast.rs @@ -2,18 +2,19 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; use vortex_array::scalar_fn::fns::cast::CastReduce; use vortex_array::validity::Validity; +use vortex_array::vtable::ValiditySliceHelper; use vortex_error::VortexResult; use crate::Zstd; -use crate::ZstdArray; - +use crate::ZstdData; impl CastReduce for Zstd { - fn cast(array: &ZstdArray, dtype: &DType) -> VortexResult> { + fn cast(array: ArrayView<'_, Self>, dtype: &DType) -> VortexResult> { if !dtype.eq_ignore_nullability(array.dtype()) { // Type changes can't be handled in ZSTD, need to decode and tweak. // TODO(aduffy): handle trivial conversions like Binary -> UTF8, integer widening, etc. @@ -28,12 +29,12 @@ impl CastReduce for Zstd { // completeness of the match arms we also handle it here. (Nullability::Nullable, Nullability::Nullable) | (Nullability::NonNullable, Nullability::NonNullable) => { - Ok(Some(array.clone().into_array())) + Ok(Some(array.array().clone())) } (Nullability::NonNullable, Nullability::Nullable) => { // nonnull => null, trivial cast by altering the validity Ok(Some( - ZstdArray::new( + ZstdData::new( array.dictionary.clone(), array.frames.clone(), dtype.clone(), @@ -41,13 +42,14 @@ impl CastReduce for Zstd { array.unsliced_n_rows(), array.unsliced_validity.clone(), ) + .into_array() .slice(array.slice_start()..array.slice_stop())?, )) } (Nullability::Nullable, Nullability::NonNullable) => { // null => non-null works if there are no nulls in the sliced range let has_nulls = !matches!( - array.validity()?, + array.sliced_validity()?, Validity::AllValid | Validity::NonNullable ); @@ -58,7 +60,7 @@ impl CastReduce for Zstd { // If there are no nulls, the cast is trivial Ok(Some( - ZstdArray::new( + ZstdData::new( array.dictionary.clone(), array.frames.clone(), dtype.clone(), @@ -66,6 +68,7 @@ impl CastReduce for Zstd { array.unsliced_n_rows(), array.unsliced_validity.clone(), ) + .into_array() .slice(array.slice_start()..array.slice_stop())?, )) } @@ -88,12 +91,12 @@ mod tests { use vortex_array::validity::Validity; use vortex_buffer::buffer; - use crate::ZstdArray; + use crate::Zstd; #[test] fn test_cast_zstd_i32_to_i64() { let values = PrimitiveArray::from_iter([1i32, 2, 3, 4, 5]); - let zstd = ZstdArray::from_primitive(&values, 0, 0).unwrap(); + let zstd = Zstd::from_primitive(&values, 0, 0).unwrap(); let casted = zstd .into_array() @@ -111,7 +114,7 @@ mod tests { #[test] fn test_cast_zstd_nullability_change() { let values = PrimitiveArray::from_iter([10u32, 20, 30, 40]); - let zstd = ZstdArray::from_primitive(&values, 0, 0).unwrap(); + let zstd = Zstd::from_primitive(&values, 0, 0).unwrap(); let casted = zstd .into_array() @@ -129,7 +132,7 @@ mod tests { buffer![10u32, 20, 30, 40, 50, 60], Validity::from_iter([true, true, true, true, true, true]), ); - let zstd = ZstdArray::from_primitive(&values, 0, 128).unwrap(); + let zstd = Zstd::from_primitive(&values, 0, 128).unwrap(); let sliced = zstd.slice(1..5).unwrap(); let casted = sliced .cast(DType::Primitive(PType::U32, Nullability::NonNullable)) @@ -153,7 +156,7 @@ mod tests { Some(50), Some(60), ]); - let zstd = ZstdArray::from_primitive(&values, 0, 128).unwrap(); + let zstd = Zstd::from_primitive(&values, 0, 128).unwrap(); let sliced = zstd.slice(1..5).unwrap(); let casted = sliced .cast(DType::Primitive(PType::U32, Nullability::NonNullable)) @@ -185,7 +188,7 @@ mod tests { Validity::NonNullable, ))] fn test_cast_zstd_conformance(#[case] values: PrimitiveArray) { - let zstd = ZstdArray::from_primitive(&values, 0, 0).unwrap(); + let zstd = Zstd::from_primitive(&values, 0, 0).unwrap(); test_cast_conformance(&zstd.into_array()); } } diff --git a/encodings/zstd/src/compute/mod.rs b/encodings/zstd/src/compute/mod.rs index 73e941b82c3..adf6937c246 100644 --- a/encodings/zstd/src/compute/mod.rs +++ b/encodings/zstd/src/compute/mod.rs @@ -11,27 +11,28 @@ mod tests { use vortex_array::compute::conformance::consistency::test_array_consistency; use vortex_buffer::buffer; + use crate::Zstd; use crate::ZstdArray; fn zstd_i32() -> ZstdArray { let values = PrimitiveArray::from_iter([100i32, 200, 300, 400, 500]); - ZstdArray::from_primitive(&values, 0, 0).unwrap() + Zstd::from_primitive(&values, 0, 0).unwrap() } fn zstd_f64() -> ZstdArray { let values = PrimitiveArray::from_iter([1.1f64, 2.2, 3.3, 4.4, 5.5]); - ZstdArray::from_primitive(&values, 0, 0).unwrap() + Zstd::from_primitive(&values, 0, 0).unwrap() } fn zstd_u32() -> ZstdArray { let values = PrimitiveArray::from_iter([10u32, 20, 30, 40, 50]); - ZstdArray::from_primitive(&values, 0, 0).unwrap() + Zstd::from_primitive(&values, 0, 0).unwrap() } fn zstd_nullable_i64() -> ZstdArray { let values = PrimitiveArray::from_option_iter([Some(1000i64), None, Some(3000), Some(4000), None]); - ZstdArray::from_primitive(&values, 0, 0).unwrap() + Zstd::from_primitive(&values, 0, 0).unwrap() } fn zstd_single() -> ZstdArray { @@ -39,7 +40,7 @@ mod tests { buffer![42i64], vortex_array::validity::Validity::NonNullable, ); - ZstdArray::from_primitive(&values, 0, 0).unwrap() + Zstd::from_primitive(&values, 0, 0).unwrap() } fn zstd_large() -> ZstdArray { @@ -47,7 +48,7 @@ mod tests { buffer![0u32..1000], vortex_array::validity::Validity::NonNullable, ); - ZstdArray::from_primitive(&values, 3, 0).unwrap() + Zstd::from_primitive(&values, 3, 0).unwrap() } fn zstd_all_same() -> ZstdArray { @@ -55,12 +56,12 @@ mod tests { buffer![42i32; 100], vortex_array::validity::Validity::NonNullable, ); - ZstdArray::from_primitive(&values, 0, 0).unwrap() + Zstd::from_primitive(&values, 0, 0).unwrap() } fn zstd_negative() -> ZstdArray { let values = PrimitiveArray::from_iter([-100i32, -50, 0, 50, 100]); - ZstdArray::from_primitive(&values, 0, 0).unwrap() + Zstd::from_primitive(&values, 0, 0).unwrap() } #[rstest] diff --git a/encodings/zstd/src/slice.rs b/encodings/zstd/src/slice.rs index ddc300f7233..fad72ae3279 100644 --- a/encodings/zstd/src/slice.rs +++ b/encodings/zstd/src/slice.rs @@ -4,19 +4,15 @@ use std::ops::Range; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::IntoArray; use vortex_array::arrays::slice::SliceReduce; use vortex_error::VortexResult; use crate::Zstd; -use crate::ZstdArray; impl SliceReduce for Zstd { - fn slice(array: &Self::Array, range: Range) -> VortexResult> { - Ok(Some(slice_zstd(array, range))) + fn slice(array: ArrayView<'_, Self>, range: Range) -> VortexResult> { + Ok(Some(array._slice(range.start, range.end).into_array())) } } - -fn slice_zstd(array: &ZstdArray, range: Range) -> ArrayRef { - array._slice(range.start, range.end).into_array() -} diff --git a/encodings/zstd/src/test.rs b/encodings/zstd/src/test.rs index 802ef768d51..e95ce025667 100644 --- a/encodings/zstd/src/test.rs +++ b/encodings/zstd/src/test.rs @@ -18,16 +18,16 @@ use vortex_buffer::Alignment; use vortex_buffer::Buffer; use vortex_mask::Mask; -use crate::ZstdArray; +use crate::Zstd; #[test] fn test_zstd_compress_decompress() { let data: Vec = (0..200).collect(); let array = PrimitiveArray::from_iter(data.clone()); - let compressed = ZstdArray::from_primitive(&array, 3, 0).unwrap(); + let compressed = Zstd::from_primitive(&array, 3, 0).unwrap(); // this data should be compressible - assert!(compressed.frames.len() < array.nbytes() as usize); + assert!(compressed.frames.len() < array.into_array().nbytes() as usize); assert!(compressed.dictionary.is_none()); // check full decompression works @@ -54,7 +54,7 @@ fn test_zstd_empty() { Validity::NonNullable, ); - let compressed = ZstdArray::from_primitive(&array, 3, 100).unwrap(); + let compressed = Zstd::from_primitive(&array, 3, 100).unwrap(); assert_arrays_eq!(compressed, PrimitiveArray::from_iter(data)); } @@ -70,7 +70,7 @@ fn test_zstd_with_validity_and_multi_frame() { Validity::Array(BoolArray::from_iter(validity).into_array()), ); - let compressed = ZstdArray::from_primitive(&array, 0, 30).unwrap(); + let compressed = Zstd::from_primitive(&array, 0, 30).unwrap(); assert!(compressed.dictionary.is_none()); assert_nth_scalar!(compressed, 0, None::); assert_nth_scalar!(compressed, 3, 3); @@ -115,7 +115,7 @@ fn test_zstd_with_dict() { Validity::NonNullable, ); - let compressed = ZstdArray::from_primitive(&array, 0, 16).unwrap(); + let compressed = Zstd::from_primitive(&array, 0, 16).unwrap(); assert!(compressed.dictionary.is_some()); assert_nth_scalar!(compressed, 0, 0); assert_nth_scalar!(compressed, 199, 199); @@ -137,9 +137,9 @@ fn test_validity_vtable() { (0..5).collect::>(), Validity::Array(BoolArray::from_iter(mask_bools.clone()).into_array()), ); - let compressed = ZstdArray::from_primitive(&array, 3, 0).unwrap(); + let compressed = Zstd::from_primitive(&array, 3, 0).unwrap(); assert_eq!( - compressed.validity_mask().unwrap(), + compressed.as_array().validity_mask().unwrap(), Mask::from_iter(mask_bools) ); assert_eq!( @@ -159,7 +159,7 @@ fn test_zstd_var_bin_view() { ]; let array = VarBinViewArray::from_iter(data, DType::Utf8(Nullability::Nullable)); - let compressed = ZstdArray::from_var_bin_view(&array, 0, 3).unwrap(); + let compressed = Zstd::from_var_bin_view(&array, 0, 3).unwrap(); assert!(compressed.dictionary.is_none()); assert_nth_scalar!(compressed, 0, "foo"); assert_nth_scalar!(compressed, 1, "bar"); @@ -184,7 +184,7 @@ fn test_zstd_decompress_var_bin_view() { ]; let array = VarBinViewArray::from_iter(data, DType::Utf8(Nullability::Nullable)); - let compressed = ZstdArray::from_var_bin_view(&array, 0, 3).unwrap(); + let compressed = Zstd::from_var_bin_view(&array, 0, 3).unwrap(); assert!(compressed.dictionary.is_none()); assert_nth_scalar!(compressed, 0, "foo"); assert_nth_scalar!(compressed, 1, "bar"); @@ -204,8 +204,7 @@ fn test_zstd_decompress_var_bin_view() { #[test] fn test_sliced_array_children() { let data: Vec> = (0..10).map(|v| (v != 5).then_some(v)).collect(); - let compressed = - ZstdArray::from_primitive(&PrimitiveArray::from_option_iter(data), 0, 100).unwrap(); + let compressed = Zstd::from_primitive(&PrimitiveArray::from_option_iter(data), 0, 100).unwrap(); let sliced = compressed.slice(0..4).unwrap(); sliced.children(); } @@ -218,7 +217,7 @@ fn test_zstd_frame_start_buffer_alignment() { let aligned_buffer = Buffer::copy_from_aligned(&data, Alignment::new(8)); // u8 array now has a 8-byte alignment. let array = PrimitiveArray::new(aligned_buffer, Validity::NonNullable); - let compressed = ZstdArray::from_primitive(&array, 0, 1); + let compressed = Zstd::from_primitive(&array, 0, 1); assert!(compressed.is_ok()); } diff --git a/encodings/zstd/src/zstd_buffers.rs b/encodings/zstd/src/zstd_buffers.rs index 9ac127bcecd..4f5b8a9b918 100644 --- a/encodings/zstd/src/zstd_buffers.rs +++ b/encodings/zstd/src/zstd_buffers.rs @@ -6,11 +6,15 @@ use std::hash::Hash; use std::sync::Arc; use prost::Message as _; +use vortex_array::Array; use vortex_array::ArrayEq; use vortex_array::ArrayHash; +use vortex_array::ArrayId; use vortex_array::ArrayRef; +use vortex_array::ArrayView; use vortex_array::ExecutionCtx; use vortex_array::ExecutionResult; +use vortex_array::IntoArray; use vortex_array::Precision; use vortex_array::ProstMetadata; use vortex_array::buffer::BufferHandle; @@ -19,10 +23,7 @@ use vortex_array::scalar::Scalar; use vortex_array::serde::ArrayChildren; use vortex_array::session::ArraySessionExt; use vortex_array::stats::ArrayStats; -use vortex_array::stats::StatsSetRef; use vortex_array::vtable; -use vortex_array::vtable::Array; -use vortex_array::vtable::ArrayId; use vortex_array::vtable::OperationsVTable; use vortex_array::vtable::VTable; use vortex_array::vtable::ValidityVTable; @@ -36,7 +37,7 @@ use vortex_session::VortexSession; use crate::ZstdBuffersMetadata; -vtable!(ZstdBuffers); +vtable!(ZstdBuffers, ZstdBuffers, ZstdBuffersData); #[derive(Clone, Debug)] pub struct ZstdBuffers; @@ -51,7 +52,7 @@ impl ZstdBuffers { /// `ZstdBuffersArray` compresses each buffer independently. This enables zero-conversion /// GPU decompression since the original buffer layout is preserved after decompression. #[derive(Clone, Debug)] -pub struct ZstdBuffersArray { +pub struct ZstdBuffersData { inner_encoding_id: ArrayId, inner_metadata: Vec, compressed_buffers: Vec, @@ -122,7 +123,25 @@ impl ZstdBuffersDecodePlan { } } -impl ZstdBuffersArray { +impl ZstdBuffersData { + /// Returns the length of the array. + #[inline] + pub fn len(&self) -> usize { + self.len + } + + /// Returns whether the array is empty. + #[inline] + pub fn is_empty(&self) -> bool { + self.len == 0 + } + + /// Returns the logical data type of the array. + #[inline] + pub fn dtype(&self) -> &DType { + &self.dtype + } + fn validate(&self) -> VortexResult<()> { vortex_ensure_eq!( self.compressed_buffers.len(), @@ -178,9 +197,10 @@ impl ZstdBuffersArray { len: array.len(), stats_set: Default::default(), }; + let compressed_ref = compressed.clone().into_array(); compressed .stats_set - .to_ref(compressed.as_ref()) + .to_ref(&compressed_ref) .inherit_from(array.statistics()); Ok(compressed) } @@ -325,13 +345,13 @@ fn array_id_from_string(s: &str) -> ArrayId { } impl VTable for ZstdBuffers { - type Array = ZstdBuffersArray; + type ArrayData = ZstdBuffersData; type Metadata = ProstMetadata; type OperationsVTable = Self; type ValidityVTable = Self; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &Self::ArrayData) -> &Self { &ZstdBuffers } @@ -339,20 +359,20 @@ impl VTable for ZstdBuffers { Self::ID } - fn len(array: &ZstdBuffersArray) -> usize { + fn len(array: &ZstdBuffersData) -> usize { array.len } - fn dtype(array: &ZstdBuffersArray) -> &DType { + fn dtype(array: &ZstdBuffersData) -> &DType { &array.dtype } - fn stats(array: &ZstdBuffersArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &ZstdBuffersData) -> &ArrayStats { + &array.stats_set } fn array_hash( - array: &ZstdBuffersArray, + array: &ZstdBuffersData, state: &mut H, precision: Precision, ) { @@ -363,14 +383,12 @@ impl VTable for ZstdBuffers { } array.uncompressed_sizes.hash(state); array.buffer_alignments.hash(state); - array.dtype.hash(state); - array.len.hash(state); for child in array.slots.iter().flatten() { child.array_hash(state, precision); } } - fn array_eq(array: &ZstdBuffersArray, other: &ZstdBuffersArray, precision: Precision) -> bool { + fn array_eq(array: &ZstdBuffersData, other: &ZstdBuffersData, precision: Precision) -> bool { array.inner_encoding_id == other.inner_encoding_id && array.inner_metadata == other.inner_metadata && array.compressed_buffers.len() == other.compressed_buffers.len() @@ -381,8 +399,6 @@ impl VTable for ZstdBuffers { .all(|(a, b)| a.array_eq(b, precision)) && array.uncompressed_sizes == other.uncompressed_sizes && array.buffer_alignments == other.buffer_alignments - && array.dtype == other.dtype - && array.len == other.len && array.slots.len() == other.slots.len() && array .slots @@ -392,32 +408,32 @@ impl VTable for ZstdBuffers { .all(|(a, b)| a.array_eq(b, precision)) } - fn nbuffers(array: &ZstdBuffersArray) -> usize { + fn nbuffers(array: ArrayView<'_, Self>) -> usize { array.compressed_buffers.len() } - fn buffer(array: &ZstdBuffersArray, idx: usize) -> BufferHandle { + fn buffer(array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { array.compressed_buffers[idx].clone() } - fn buffer_name(_array: &ZstdBuffersArray, idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, idx: usize) -> Option { Some(format!("compressed_{idx}")) } - fn slots(array: &ZstdBuffersArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &ZstdBuffersArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { format!("child_{idx}") } - fn with_slots(array: &mut ZstdBuffersArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { array.slots = slots; Ok(()) } - fn metadata(array: &ZstdBuffersArray) -> VortexResult { + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { Ok(ProstMetadata(ZstdBuffersMetadata { inner_encoding_id: array.inner_encoding_id.to_string(), inner_metadata: array.inner_metadata.clone(), @@ -446,14 +462,14 @@ impl VTable for ZstdBuffers { metadata: &Self::Metadata, buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { let compressed_buffers: Vec = buffers.to_vec(); let child_arrays: Vec> = (0..children.len()) .map(|i| children.get(i, dtype, len).map(Some)) .collect::>>()?; - let array = ZstdBuffersArray { + let data = ZstdBuffersData { inner_encoding_id: array_id_from_string(&metadata.0.inner_encoding_id), inner_metadata: metadata.0.inner_metadata.clone(), compressed_buffers, @@ -465,11 +481,13 @@ impl VTable for ZstdBuffers { stats_set: Default::default(), }; - array.validate()?; - Ok(array) + data.validate()?; + Ok(data) } - fn execute(array: Arc>, ctx: &mut ExecutionCtx) -> VortexResult { + // with_slots handles child replacement via the slots mechanism + + fn execute(array: Array, ctx: &mut ExecutionCtx) -> VortexResult { let session = ctx.session(); let inner_array = array.decompress_and_build_inner(session)?; inner_array @@ -480,7 +498,7 @@ impl VTable for ZstdBuffers { impl OperationsVTable for ZstdBuffers { fn scalar_at( - array: &ZstdBuffersArray, + array: ArrayView<'_, ZstdBuffers>, index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { @@ -493,7 +511,9 @@ impl OperationsVTable for ZstdBuffers { } impl ValidityVTable for ZstdBuffers { - fn validity(array: &ZstdBuffersArray) -> VortexResult { + fn validity( + array: ArrayView<'_, ZstdBuffers>, + ) -> VortexResult { if !array.dtype.is_nullable() { return Ok(vortex_array::validity::Validity::NonNullable); } @@ -560,7 +580,7 @@ mod tests { #[case::empty_primitive(make_empty_primitive_array())] #[case::inlined_varbinview(make_inlined_varbinview_array())] fn test_roundtrip(#[case] input: ArrayRef) -> VortexResult<()> { - let compressed = ZstdBuffersArray::compress(&input, 3)?; + let compressed = ZstdBuffersData::compress(&input, 3)?; assert_eq!(compressed.len, input.len()); assert_eq!(&compressed.dtype, input.dtype()); @@ -577,7 +597,8 @@ mod tests { let input = make_primitive_array(); input.statistics().set(Stat::Min, Precision::exact(0i32)); - let compressed = ZstdBuffersArray::compress(&input, 3)?; + let compressed = ZstdBuffersData::compress(&input, 3)?; + let compressed = ZstdBuffersArray::try_from_data(compressed)?; assert!(compressed.statistics().get(Stat::Min).is_some()); Ok(()) @@ -586,7 +607,7 @@ mod tests { #[test] fn test_validity_delegates_for_nullable_input() -> VortexResult<()> { let input = make_nullable_primitive_array(); - let compressed = ZstdBuffersArray::compress(&input, 3)?.into_array(); + let compressed = ZstdBuffersData::compress(&input, 3)?.into_array(); assert_eq!(compressed.all_valid()?, input.all_valid()?); assert_eq!(compressed.all_invalid()?, input.all_invalid()?); diff --git a/fuzz/fuzz_targets/file_io.rs b/fuzz/fuzz_targets/file_io.rs index 2c1cc995c61..eea63039fc6 100644 --- a/fuzz/fuzz_targets/file_io.rs +++ b/fuzz/fuzz_targets/file_io.rs @@ -8,7 +8,6 @@ use itertools::Itertools; use libfuzzer_sys::Corpus; use libfuzzer_sys::fuzz_target; use vortex_array::Canonical; -use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::ToCanonical; use vortex_array::arrays::ChunkedArray; @@ -114,7 +113,10 @@ fuzz_target!(|fuzz: FuzzFileAction| -> Corpus { .to_bool(); let true_count = bool_result.to_bit_buffer().true_count(); if true_count != expected_array.len() - && (bool_result.all_valid().vortex_expect("all_valid") + && (bool_result + .into_array() + .all_valid() + .vortex_expect("all_valid") || expected_array.all_valid().vortex_expect("all_valid")) { vortex_panic!( diff --git a/fuzz/src/array/cast.rs b/fuzz/src/array/cast.rs index 174e524e682..a6112bec0ff 100644 --- a/fuzz/src/array/cast.rs +++ b/fuzz/src/array/cast.rs @@ -2,7 +2,6 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::ToCanonical; use vortex_array::arrays::PrimitiveArray; diff --git a/fuzz/src/array/compare.rs b/fuzz/src/array/compare.rs index 0f639548a3c..df42ee81f64 100644 --- a/fuzz/src/array/compare.rs +++ b/fuzz/src/array/compare.rs @@ -2,7 +2,6 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::ToCanonical; use vortex_array::accessor::ArrayAccessor; diff --git a/fuzz/src/array/fill_null.rs b/fuzz/src/array/fill_null.rs index 5954d6982f7..1f15f3b6d77 100644 --- a/fuzz/src/array/fill_null.rs +++ b/fuzz/src/array/fill_null.rs @@ -174,6 +174,7 @@ fn fill_varbinview_array( fill_value: &Scalar, result_nullability: Nullability, ) -> ArrayRef { + let array_ref = array.clone().into_array(); match array.validity() { Validity::NonNullable | Validity::AllValid => array.into_array(), Validity::AllInvalid => ConstantArray::new(fill_value.clone(), array.len()).into_array(), @@ -190,7 +191,7 @@ fn fill_varbinview_array( let strings: Vec = (0..array.len()) .map(|i| { if validity_bits.value(i) { - array + array_ref .scalar_at(i) .vortex_expect("scalar_at") .as_utf8() @@ -207,7 +208,7 @@ fn fill_varbinview_array( if result_nullability == Nullability::Nullable { VarBinViewArray::new_handle( result.to_varbinview().views_handle().clone(), - result.to_varbinview().buffers().clone(), + result.to_varbinview().data_buffers().clone(), result.dtype().as_nullable(), result_nullability.into(), ) @@ -224,7 +225,7 @@ fn fill_varbinview_array( let binaries: Vec> = (0..array.len()) .map(|i| { if validity_bits.value(i) { - array + array_ref .scalar_at(i) .vortex_expect("scalar_at") .as_binary() @@ -241,7 +242,7 @@ fn fill_varbinview_array( if result_nullability == Nullability::Nullable { VarBinViewArray::new_handle( result.to_varbinview().views_handle().clone(), - result.to_varbinview().buffers().clone(), + result.to_varbinview().data_buffers().clone(), result.dtype().as_nullable(), result_nullability.into(), ) @@ -258,7 +259,6 @@ fn fill_varbinview_array( #[cfg(test)] mod tests { - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::arrays::BoolArray; use vortex_array::arrays::DecimalArray; diff --git a/fuzz/src/array/filter.rs b/fuzz/src/array/filter.rs index cb86febffa4..7db3e1f8f74 100644 --- a/fuzz/src/array/filter.rs +++ b/fuzz/src/array/filter.rs @@ -2,7 +2,6 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::ToCanonical; use vortex_array::accessor::ArrayAccessor; diff --git a/fuzz/src/array/mask.rs b/fuzz/src/array/mask.rs index 71049e8c748..02974d72df7 100644 --- a/fuzz/src/array/mask.rs +++ b/fuzz/src/array/mask.rs @@ -3,7 +3,6 @@ use vortex_array::ArrayRef; use vortex_array::Canonical; -use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::ToCanonical; use vortex_array::arrays::BoolArray; @@ -17,7 +16,6 @@ use vortex_array::arrays::VarBinViewArray; use vortex_array::dtype::Nullability; use vortex_array::match_each_decimal_value_type; use vortex_array::validity::Validity; -use vortex_array::vtable::ValidityHelper; use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_mask::AllOr; @@ -83,7 +81,7 @@ pub fn mask_canonical_array(canonical: Canonical, mask: &Mask) -> VortexResult VortexResult { let new_validity = mask_validity(&array.validity(), mask); StructArray::try_new_with_dtype( - array.unmasked_fields().clone(), + array.unmasked_fields(), array.struct_fields().clone(), array.len(), new_validity, @@ -142,7 +140,6 @@ pub fn mask_canonical_array(canonical: Canonical, mask: &Mask) -> VortexResult Arbitrary<'a> for FuzzArrayAction { fn arbitrary(u: &mut Unstructured<'a>) -> arbitrary::Result { let array = ArbitraryArray::arbitrary(u)?.0; - let mut current_array = array.to_array(); + let mut current_array = array.clone(); let mut ctx = SESSION.create_execution_ctx(); @@ -200,7 +199,7 @@ impl<'a> Arbitrary<'a> for FuzzArrayAction { let strategy = CompressorStrategy::arbitrary(u)?; ( Action::Compress(strategy), - ExpectedValue::Array(current_array.to_array()), + ExpectedValue::Array(current_array.clone()), ) } ActionType::Slice => { @@ -211,7 +210,7 @@ impl<'a> Arbitrary<'a> for FuzzArrayAction { ( Action::Slice(start..stop), - ExpectedValue::Array(current_array.to_array()), + ExpectedValue::Array(current_array.clone()), ) } ActionType::Take => { @@ -244,7 +243,7 @@ impl<'a> Arbitrary<'a> for FuzzArrayAction { .vortex_expect("BtrBlocksCompressor compress should succeed in fuzz test"); ( Action::Take(compressed), - ExpectedValue::Array(current_array.to_array()), + ExpectedValue::Array(current_array.clone()), ) } ActionType::SearchSorted => { @@ -289,7 +288,7 @@ impl<'a> Arbitrary<'a> for FuzzArrayAction { .vortex_expect("filter_canonical_array should succeed in fuzz test"); ( Action::Filter(Mask::from_iter(mask)), - ExpectedValue::Array(current_array.to_array()), + ExpectedValue::Array(current_array.clone()), ) } ActionType::Compare => { @@ -307,7 +306,7 @@ impl<'a> Arbitrary<'a> for FuzzArrayAction { current_array = compare_canonical_array(¤t_array, &scalar, op); ( Action::Compare(scalar, op), - ExpectedValue::Array(current_array.to_array()), + ExpectedValue::Array(current_array.clone()), ) } ActionType::Cast => { @@ -575,7 +574,7 @@ pub fn compress_array(array: &ArrayRef, _strategy: CompressorStrategy) -> ArrayR #[allow(clippy::result_large_err)] pub fn run_fuzz_action(fuzz_action: FuzzArrayAction) -> VortexFuzzResult { let FuzzArrayAction { array, actions } = fuzz_action; - let mut current_array = array.to_array(); + let mut current_array = array; let mut ctx = SESSION.create_execution_ctx(); @@ -701,7 +700,7 @@ fn assert_search_sorted( Err(VortexFuzzError::SearchSortedError( s, expected, - array.to_array(), + array, side, search_result, step, @@ -728,8 +727,8 @@ pub fn assert_array_eq(lhs: &ArrayRef, rhs: &ArrayRef, step: usize) -> VortexFuz return Err(VortexFuzzError::LengthMismatch( lhs.len(), rhs.len(), - lhs.to_array(), - rhs.to_array(), + lhs.clone(), + rhs.clone(), step, Backtrace::capture(), )); diff --git a/fuzz/src/array/scalar_at.rs b/fuzz/src/array/scalar_at.rs index d1c7c16f120..4fb29b1b69e 100644 --- a/fuzz/src/array/scalar_at.rs +++ b/fuzz/src/array/scalar_at.rs @@ -4,7 +4,7 @@ use std::sync::Arc; use vortex_array::Canonical; -use vortex_array::DynArray; +use vortex_array::IntoArray; use vortex_array::arrays::varbin::varbin_scalar; use vortex_array::dtype::DType; use vortex_array::match_each_decimal_value_type; @@ -18,8 +18,9 @@ use vortex_error::VortexResult; /// This implementation manually extracts the scalar value from each canonical type /// without using the scalar_at method, to serve as an independent baseline for testing. pub fn scalar_at_canonical_array(canonical: Canonical, index: usize) -> VortexResult { - if canonical.as_ref().is_invalid(index)? { - return Ok(Scalar::null(canonical.as_ref().dtype().clone())); + let canonical_ref = canonical.clone().into_array(); + if canonical_ref.is_invalid(index)? { + return Ok(Scalar::null(canonical_ref.dtype().clone())); } Ok(match canonical { Canonical::Null(_array) => Scalar::null(DType::Null), diff --git a/fuzz/src/array/search_sorted.rs b/fuzz/src/array/search_sorted.rs index 0bad7191bb8..068e5281f73 100644 --- a/fuzz/src/array/search_sorted.rs +++ b/fuzz/src/array/search_sorted.rs @@ -5,7 +5,6 @@ use std::cmp::Ordering; use std::fmt::Debug; use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::ToCanonical; use vortex_array::accessor::ArrayAccessor; use vortex_array::dtype::DType; diff --git a/fuzz/src/array/slice.rs b/fuzz/src/array/slice.rs index b5402cb5d21..b3b259c0072 100644 --- a/fuzz/src/array/slice.rs +++ b/fuzz/src/array/slice.rs @@ -2,7 +2,6 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::ToCanonical; use vortex_array::accessor::ArrayAccessor; diff --git a/fuzz/src/array/sort.rs b/fuzz/src/array/sort.rs index 6c1da201fca..e1a57de5658 100644 --- a/fuzz/src/array/sort.rs +++ b/fuzz/src/array/sort.rs @@ -4,7 +4,6 @@ use std::cmp::Ordering; use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::ToCanonical; use vortex_array::accessor::ArrayAccessor; diff --git a/fuzz/src/array/take.rs b/fuzz/src/array/take.rs index 2eb27b032fd..d807c37c21c 100644 --- a/fuzz/src/array/take.rs +++ b/fuzz/src/array/take.rs @@ -2,7 +2,6 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::ToCanonical; use vortex_array::accessor::ArrayAccessor; diff --git a/fuzz/src/compress.rs b/fuzz/src/compress.rs index d12e762b84c..9ca6fadb348 100644 --- a/fuzz/src/compress.rs +++ b/fuzz/src/compress.rs @@ -9,7 +9,6 @@ use arbitrary::Arbitrary; use arbitrary::Unstructured; use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::arrays::constant::ArbitraryConstantArray; use vortex_array::arrays::dict::ArbitraryDictArray; diff --git a/fuzz/src/error.rs b/fuzz/src/error.rs index c15f62ebf46..b82afd9ad9b 100644 --- a/fuzz/src/error.rs +++ b/fuzz/src/error.rs @@ -11,7 +11,6 @@ use std::fmt::Display; use std::fmt::Formatter; use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::aggregate_fn::fns::min_max::MinMaxResult; use vortex_array::scalar::Scalar; use vortex_array::search_sorted::SearchResult; diff --git a/fuzz/src/fsst_like.rs b/fuzz/src/fsst_like.rs index f2f0f3bac48..8c1cc108fd8 100644 --- a/fuzz/src/fsst_like.rs +++ b/fuzz/src/fsst_like.rs @@ -9,6 +9,7 @@ use std::sync::LazyLock; use arbitrary::Arbitrary; use arbitrary::Unstructured; +use vortex_array::ArrayRef; use vortex_array::Canonical; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; @@ -111,7 +112,8 @@ pub fn run_fsst_like_fuzz(fuzz: FuzzFsstLike) -> VortexFuzzResult { // Train FSST compressor and compress. let compressor = fsst_train_compressor(&varbin); - let fsst_array: FSSTArray = fsst_compress(varbin.clone(), &compressor); + let fsst_array: FSSTArray = + fsst_compress(varbin.clone(), varbin.len(), varbin.dtype(), &compressor); let opts = LikeOptions { negated, @@ -119,11 +121,11 @@ pub fn run_fsst_like_fuzz(fuzz: FuzzFsstLike) -> VortexFuzzResult { }; // Run LIKE on the uncompressed array. - let expected = run_like_on_array(varbin.into_array().as_ref(), &pattern, len, opts) + let expected = run_like_on_array(&varbin.into_array(), &pattern, len, opts) .map_err(|err| VortexFuzzError::VortexError(err, Backtrace::capture()))?; // Run LIKE on the FSST-compressed array. - let actual = run_like_on_array(fsst_array.into_array().as_ref(), &pattern, len, opts) + let actual = run_like_on_array(&fsst_array.into_array(), &pattern, len, opts) .map_err(|err| VortexFuzzError::VortexError(err, Backtrace::capture()))?; // Compare bit-for-bit. @@ -151,18 +153,16 @@ pub fn run_fsst_like_fuzz(fuzz: FuzzFsstLike) -> VortexFuzzResult { } fn run_like_on_array( - array: &dyn vortex_array::DynArray, + array: &ArrayRef, pattern: &str, len: usize, opts: LikeOptions, ) -> VortexResult { - use vortex_array::ArrayRef; use vortex_array::arrays::scalar_fn::ScalarFnArrayExt; - let arr: ArrayRef = array.to_array(); let pattern_arr = ConstantArray::new(pattern, len).into_array(); let result = Like - .try_new_array(len, opts, [arr, pattern_arr])? + .try_new_array(len, opts, [array.clone(), pattern_arr])? .into_array() .execute::(&mut SESSION.create_execution_ctx())?; Ok(result.into_bool()) diff --git a/java/testfiles/src/main.rs b/java/testfiles/src/main.rs index 206db638726..1db61c7f08b 100644 --- a/java/testfiles/src/main.rs +++ b/java/testfiles/src/main.rs @@ -5,16 +5,21 @@ use std::path::Path; +use vortex::VortexSessionDefault; +use vortex::array::IntoArray; use vortex::array::arrays::StructArray; -use vortex::array::builders::{ArrayBuilder, DecimalBuilder, VarBinViewBuilder}; +use vortex::array::builders::ArrayBuilder; +use vortex::array::builders::DecimalBuilder; +use vortex::array::builders::VarBinViewBuilder; use vortex::array::validity::Validity; -use vortex::dtype::{DType, DecimalDType, Nullability}; +use vortex::dtype::DType; +use vortex::dtype::DecimalDType; +use vortex::dtype::Nullability; use vortex::file::WriteOptionsSessionExt; -use vortex::io::runtime::current::CurrentThreadRuntime; use vortex::io::runtime::BlockingRuntime; +use vortex::io::runtime::current::CurrentThreadRuntime; use vortex::io::session::RuntimeSessionExt; use vortex::session::VortexSession; -use vortex::VortexSessionDefault; /// Generate a test dataset with the following small set of rows: /// @@ -74,7 +79,8 @@ fn main() { 10, Validity::NonNullable, ) - .expect("Could not create struct array"); + .expect("Could not create struct array") + .into_array(); // Save to file let minimal_path = Path::new(env!("CARGO_MANIFEST_DIR")) diff --git a/vortex-array/benches/chunk_array_builder.rs b/vortex-array/benches/chunk_array_builder.rs index e37e26dd526..b334b65e9e6 100644 --- a/vortex-array/benches/chunk_array_builder.rs +++ b/vortex-array/benches/chunk_array_builder.rs @@ -8,7 +8,6 @@ use rand::RngExt; use rand::SeedableRng; use rand::prelude::StdRng; use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; use vortex_array::arrays::BoolArray; diff --git a/vortex-array/benches/chunked_dict_builder.rs b/vortex-array/benches/chunked_dict_builder.rs index 8b72d37eb3b..b42514fcf19 100644 --- a/vortex-array/benches/chunked_dict_builder.rs +++ b/vortex-array/benches/chunked_dict_builder.rs @@ -7,7 +7,6 @@ use divan::Bencher; use rand::distr::Distribution; use rand::distr::StandardUniform; use vortex_array::Canonical; -use vortex_array::DynArray; use vortex_array::VortexSessionExecute; use vortex_array::arrays::dict_test::gen_dict_primitive_chunks; use vortex_array::builders::builder_with_capacity; diff --git a/vortex-array/benches/compare.rs b/vortex-array/benches/compare.rs index 3f07c0cfe93..4aceffd6de1 100644 --- a/vortex-array/benches/compare.rs +++ b/vortex-array/benches/compare.rs @@ -37,8 +37,8 @@ fn compare_bool(bencher: Bencher) { .bench_refs(|input| { input .0 - .to_array() - .binary(input.1.to_array(), Operator::Gte) + .clone() + .binary(input.1.clone(), Operator::Gte) .unwrap() .execute::(&mut input.2) }); @@ -65,8 +65,8 @@ fn compare_int(bencher: Bencher) { .bench_refs(|input| { input .0 - .to_array() - .binary(input.1.to_array(), Operator::Gte) + .clone() + .binary(input.1.clone(), Operator::Gte) .unwrap() .execute::(&mut input.2) }); diff --git a/vortex-array/benches/dict_compare.rs b/vortex-array/benches/dict_compare.rs index 803d199b351..b361ba1006e 100644 --- a/vortex-array/benches/dict_compare.rs +++ b/vortex-array/benches/dict_compare.rs @@ -123,7 +123,7 @@ fn bench_compare_sliced_dict_primitive( ) { let primitive_arr = gen_primitive_for_dict::(codes_len.max(values_len), values_len); let dict = dict_encode(&primitive_arr.clone().into_array()).unwrap(); - let dict = dict.slice(0..codes_len).unwrap(); + let dict = dict.into_array().slice(0..codes_len).unwrap(); let value = primitive_arr.as_slice::()[0]; let session = VortexSession::empty(); @@ -145,7 +145,7 @@ fn bench_compare_sliced_dict_varbinview( ) { let varbin_arr = VarBinArray::from(gen_varbin_words(codes_len.max(values_len), values_len)); let dict = dict_encode(&varbin_arr.clone().into_array()).unwrap(); - let dict = dict.slice(0..codes_len).unwrap(); + let dict = dict.into_array().slice(0..codes_len).unwrap(); let bytes = varbin_arr.with_iterator(|i| i.next().unwrap().unwrap().to_vec()); let value = from_utf8(bytes.as_slice()).unwrap(); let session = VortexSession::empty(); diff --git a/vortex-array/benches/dict_compress.rs b/vortex-array/benches/dict_compress.rs index b52d66a031c..5ecf06378cb 100644 --- a/vortex-array/benches/dict_compress.rs +++ b/vortex-array/benches/dict_compress.rs @@ -70,7 +70,9 @@ where StandardUniform: Distribution, { let primitive_arr = gen_primitive_for_dict::(len, unique_values); - let dict = dict_encode(&primitive_arr.into_array()).unwrap(); + let dict = dict_encode(&primitive_arr.into_array()) + .unwrap() + .into_array(); bencher .with_inputs(|| &dict) @@ -80,7 +82,7 @@ where #[divan::bench(args = BENCH_ARGS)] fn decode_varbin(bencher: Bencher, (len, unique_values): (usize, usize)) { let varbin_arr = VarBinArray::from(gen_varbin_words(len, unique_values)); - let dict = dict_encode(&varbin_arr.into_array()).unwrap(); + let dict = dict_encode(&varbin_arr.into_array()).unwrap().into_array(); bencher .with_inputs(|| &dict) @@ -90,7 +92,9 @@ fn decode_varbin(bencher: Bencher, (len, unique_values): (usize, usize)) { #[divan::bench(args = BENCH_ARGS)] fn decode_varbinview(bencher: Bencher, (len, unique_values): (usize, usize)) { let varbinview_arr = VarBinViewArray::from_iter_str(gen_varbin_words(len, unique_values)); - let dict = dict_encode(&varbinview_arr.into_array()).unwrap(); + let dict = dict_encode(&varbinview_arr.into_array()) + .unwrap() + .into_array(); bencher .with_inputs(|| &dict) diff --git a/vortex-array/benches/filter_bool.rs b/vortex-array/benches/filter_bool.rs index 68971772da4..c346f653814 100644 --- a/vortex-array/benches/filter_bool.rs +++ b/vortex-array/benches/filter_bool.rs @@ -147,6 +147,7 @@ fn filter_random_by_mostly_true(bencher: Bencher, n: usize) { }) .bench_refs(|(array, m, ctx)| { array + .clone() .filter(m.clone()) .unwrap() .execute::(ctx) @@ -166,6 +167,7 @@ fn filter_random_by_mostly_false(bencher: Bencher, n: usize) { }) .bench_refs(|(array, m, ctx)| { array + .clone() .filter(m.clone()) .unwrap() .execute::(ctx) @@ -185,6 +187,7 @@ fn filter_random_by_random(bencher: Bencher, n: usize) { }) .bench_refs(|(array, m, ctx)| { array + .clone() .filter(m.clone()) .unwrap() .execute::(ctx) @@ -204,6 +207,7 @@ fn filter_random_by_correlated_runs(bencher: Bencher, n: usize) { }) .bench_refs(|(array, m, ctx)| { array + .clone() .filter(m.clone()) .unwrap() .execute::(ctx) @@ -223,6 +227,7 @@ fn filter_random_by_power_law(bencher: Bencher, n: usize) { }) .bench_refs(|(array, m, ctx)| { array + .clone() .filter(m.clone()) .unwrap() .execute::(ctx) @@ -244,6 +249,7 @@ fn filter_powerlaw_by_mostly_true(bencher: Bencher, n: usize) { }) .bench_refs(|(array, m, ctx)| { array + .clone() .filter(m.clone()) .unwrap() .execute::(ctx) @@ -263,6 +269,7 @@ fn filter_powerlaw_by_mostly_false(bencher: Bencher, n: usize) { }) .bench_refs(|(array, m, ctx)| { array + .clone() .filter(m.clone()) .unwrap() .execute::(ctx) @@ -282,6 +289,7 @@ fn filter_powerlaw_by_random(bencher: Bencher, n: usize) { }) .bench_refs(|(array, m, ctx)| { array + .clone() .filter(m.clone()) .unwrap() .execute::(ctx) @@ -301,6 +309,7 @@ fn filter_powerlaw_by_correlated_runs(bencher: Bencher, n: usize) { }) .bench_refs(|(array, m, ctx)| { array + .clone() .filter(m.clone()) .unwrap() .execute::(ctx) @@ -320,6 +329,7 @@ fn filter_powerlaw_by_power_law(bencher: Bencher, n: usize) { }) .bench_refs(|(array, m, ctx)| { array + .clone() .filter(m.clone()) .unwrap() .execute::(ctx) @@ -345,6 +355,7 @@ fn density_sweep_random(bencher: Bencher, density: f64) { }) .bench_refs(|(array, m, ctx)| { array + .clone() .filter(m.clone()) .unwrap() .execute::(ctx) @@ -365,6 +376,7 @@ fn density_sweep_dense_runs(bencher: Bencher, density: f64) { }) .bench_refs(|(array, m, ctx)| { array + .clone() .filter(m.clone()) .unwrap() .execute::(ctx) @@ -384,6 +396,7 @@ fn density_sweep_single_slice(bencher: Bencher, density: f64) { }) .bench_refs(|(array, m, ctx)| { array + .clone() .filter(m.clone()) .unwrap() .execute::(ctx) @@ -407,6 +420,7 @@ fn filter_all_true(bencher: Bencher, n: usize) { }) .bench_refs(|(array, m, ctx)| { array + .clone() .filter(m.clone()) .unwrap() .execute::(ctx) @@ -428,6 +442,7 @@ fn filter_one_false(bencher: Bencher, n: usize) { }) .bench_refs(|(array, m, ctx)| { array + .clone() .filter(m.clone()) .unwrap() .execute::(ctx) @@ -447,6 +462,7 @@ fn filter_ultra_sparse(bencher: Bencher, n: usize) { }) .bench_refs(|(array, m, ctx)| { array + .clone() .filter(m.clone()) .unwrap() .execute::(ctx) diff --git a/vortex-array/benches/scalar_at_struct.rs b/vortex-array/benches/scalar_at_struct.rs index 3a54dea249e..a4ab5c32df8 100644 --- a/vortex-array/benches/scalar_at_struct.rs +++ b/vortex-array/benches/scalar_at_struct.rs @@ -8,6 +8,7 @@ use rand::RngExt; use rand::SeedableRng; use rand::distr::Uniform; use rand::rngs::StdRng; +use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::arrays::StructArray; use vortex_array::dtype::FieldNames; @@ -39,6 +40,7 @@ fn scalar_at_struct_simple(bencher: Bencher) { Validity::NonNullable, ) .unwrap(); + let struct_array: ArrayRef = struct_array.into_array(); let indices: Vec = (0..NUM_ACCESSES) .map(|_| rng.random_range(0..ARRAY_SIZE)) @@ -72,8 +74,10 @@ fn scalar_at_struct_wide(bencher: Bencher) { "field1", "field2", "field3", "field4", "field5", "field6", "field7", "field8", ]); - let struct_array = - StructArray::try_new(field_names, fields, ARRAY_SIZE, Validity::NonNullable).unwrap(); + let struct_array: ArrayRef = + StructArray::try_new(field_names, fields, ARRAY_SIZE, Validity::NonNullable) + .unwrap() + .into_array(); let indices: Vec = (0..NUM_ACCESSES) .map(|_| rng.random_range(0..ARRAY_SIZE)) diff --git a/vortex-array/benches/scalar_subtract.rs b/vortex-array/benches/scalar_subtract.rs index 701a9f533e7..0d026db5d3e 100644 --- a/vortex-array/benches/scalar_subtract.rs +++ b/vortex-array/benches/scalar_subtract.rs @@ -44,7 +44,7 @@ fn scalar_subtract(bencher: Bencher) { .with_inputs(|| (&chunked, LEGACY_SESSION.create_execution_ctx())) .bench_refs(|(chunked, ctx)| { chunked - .to_array() + .clone() .binary( ConstantArray::new( vortex_array::scalar::Scalar::from(to_subtract), diff --git a/vortex-array/benches/take_fsl.rs b/vortex-array/benches/take_fsl.rs index e22a18f5210..5c66847669e 100644 --- a/vortex-array/benches/take_fsl.rs +++ b/vortex-array/benches/take_fsl.rs @@ -14,7 +14,6 @@ use divan::Bencher; use rand::RngExt; use rand::SeedableRng; use rand::rngs::StdRng; -use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::LEGACY_SESSION; use vortex_array::RecursiveCanonical; @@ -66,7 +65,8 @@ fn take_fsl_random(bencher: Bencher, num_indices: usize) .with_inputs(|| (&fsl, &indices_array, LEGACY_SESSION.create_execution_ctx())) .bench_refs(|(array, indices, execution_ctx)| { array - .take(indices.to_array()) + .clone() + .take(indices.clone()) .unwrap() .execute::(execution_ctx) .unwrap() @@ -91,7 +91,8 @@ fn take_fsl_nullable_random(bencher: Bencher, num_indice .with_inputs(|| (&fsl, &indices_array, LEGACY_SESSION.create_execution_ctx())) .bench_refs(|(array, indices, execution_ctx)| { array - .take(indices.to_array()) + .clone() + .take(indices.clone()) .unwrap() .execute::(execution_ctx) .unwrap() diff --git a/vortex-array/benches/take_struct.rs b/vortex-array/benches/take_struct.rs index 96acd2e01ef..2eabaab62dc 100644 --- a/vortex-array/benches/take_struct.rs +++ b/vortex-array/benches/take_struct.rs @@ -8,7 +8,6 @@ use rand::RngExt; use rand::SeedableRng; use rand::distr::Uniform; use rand::rngs::StdRng; -use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::LEGACY_SESSION; use vortex_array::RecursiveCanonical; @@ -42,7 +41,8 @@ fn take_struct_simple(bencher: Bencher) { ARRAY_SIZE, Validity::NonNullable, ) - .unwrap(); + .unwrap() + .into_array(); let indices: Buffer = (0..TAKE_SIZE) .map(|_| rng.random_range(0..ARRAY_SIZE) as u64) @@ -59,7 +59,7 @@ fn take_struct_simple(bencher: Bencher) { }) .bench_refs(|(array, indices, ctx)| { array - .take(indices.to_array()) + .take((*indices).clone()) .unwrap() .execute::(ctx) }); @@ -83,8 +83,9 @@ fn take_struct_wide(bencher: Bencher, width: usize) { "field1", "field2", "field3", "field4", "field5", "field6", "field7", "field8", ]); - let struct_array = - StructArray::try_new(field_names, fields, ARRAY_SIZE, Validity::NonNullable).unwrap(); + let struct_array = StructArray::try_new(field_names, fields, ARRAY_SIZE, Validity::NonNullable) + .unwrap() + .into_array(); let indices: Buffer = (0..TAKE_SIZE) .map(|_| rng.random_range(0..ARRAY_SIZE) as u64) @@ -101,7 +102,7 @@ fn take_struct_wide(bencher: Bencher, width: usize) { }) .bench_refs(|(array, indices, ctx)| { array - .take(indices.clone()) + .take((*indices).clone()) .unwrap() .execute::(ctx) }); @@ -124,7 +125,8 @@ fn take_struct_sequential_indices(bencher: Bencher) { ARRAY_SIZE, Validity::NonNullable, ) - .unwrap(); + .unwrap() + .into_array(); // Sequential indices for better cache performance let indices: Buffer = (0..TAKE_SIZE as u64).collect(); @@ -140,7 +142,7 @@ fn take_struct_sequential_indices(bencher: Bencher) { }) .bench_refs(|(array, indices, ctx)| { array - .take(indices.to_array()) + .take((*indices).clone()) .unwrap() .execute::(ctx) }); diff --git a/vortex-array/benches/varbinview_compact.rs b/vortex-array/benches/varbinview_compact.rs index 489be8d852d..ae763055db1 100644 --- a/vortex-array/benches/varbinview_compact.rs +++ b/vortex-array/benches/varbinview_compact.rs @@ -42,6 +42,7 @@ fn compact_impl(bencher: Bencher, (output_size, utilization_pct): (usize, usize) let base_array = build_varbinview_fixture(base_size); let indices = random_indices(output_size, base_size); let taken = base_array + .into_array() .take(indices) .vortex_expect("operation should succeed in benchmark"); let array = taken.to_varbinview(); @@ -57,7 +58,7 @@ fn compact_sliced_impl(bencher: Bencher, (output_size, utilization_pct): (usize, let base_size = (output_size * 100) / utilization_pct; let base_array = build_varbinview_fixture(base_size); let sliced = base_array - .as_ref() + .into_array() .slice(0..output_size) .vortex_expect("slice should succeed"); let array = sliced.to_varbinview(); diff --git a/vortex-array/public-api.lock b/vortex-array/public-api.lock index c193f10da92..5189514d877 100644 --- a/vortex-array/public-api.lock +++ b/vortex-array/public-api.lock @@ -398,7 +398,7 @@ impl vortex_array::aggregate_fn::session::AggregateFnSession pub fn vortex_array::aggregate_fn::session::AggregateFnSession::register(&self, vtable: V) -pub fn vortex_array::aggregate_fn::session::AggregateFnSession::register_aggregate_kernel(&self, array_id: vortex_array::vtable::ArrayId, agg_fn_id: core::option::Option, kernel: &'static dyn vortex_array::aggregate_fn::kernels::DynAggregateKernel) +pub fn vortex_array::aggregate_fn::session::AggregateFnSession::register_aggregate_kernel(&self, array_id: vortex_array::ArrayId, agg_fn_id: core::option::Option, kernel: &'static dyn vortex_array::aggregate_fn::kernels::DynAggregateKernel) pub fn vortex_array::aggregate_fn::session::AggregateFnSession::registry(&self) -> &vortex_array::aggregate_fn::session::AggregateFnRegistry @@ -846,7 +846,7 @@ pub struct vortex_array::arrays::bool::Bool impl vortex_array::arrays::Bool -pub const vortex_array::arrays::Bool::ID: vortex_array::vtable::ArrayId +pub const vortex_array::arrays::Bool::ID: vortex_array::ArrayId impl core::clone::Clone for vortex_array::arrays::Bool @@ -856,43 +856,13 @@ impl core::fmt::Debug for vortex_array::arrays::Bool pub fn vortex_array::arrays::Bool::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::Bool - -pub fn vortex_array::arrays::Bool::take(array: &vortex_array::arrays::BoolArray, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::Bool - -pub fn vortex_array::arrays::Bool::filter(array: &vortex_array::arrays::BoolArray, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> - -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Bool - -pub fn vortex_array::arrays::Bool::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> - -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::arrays::bool::BoolMaskedValidityRule - -pub type vortex_array::arrays::bool::BoolMaskedValidityRule::Parent = vortex_array::arrays::Masked - -pub fn vortex_array::arrays::bool::BoolMaskedValidityRule::reduce_parent(&self, array: &vortex_array::arrays::BoolArray, parent: &vortex_array::arrays::MaskedArray, child_idx: usize) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::Bool - -pub fn vortex_array::arrays::Bool::cast(array: &vortex_array::arrays::BoolArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +impl vortex_array::OperationsVTable for vortex_array::arrays::Bool -impl vortex_array::scalar_fn::fns::fill_null::FillNullKernel for vortex_array::arrays::Bool - -pub fn vortex_array::arrays::Bool::fill_null(array: &vortex_array::arrays::BoolArray, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Bool +pub fn vortex_array::arrays::Bool::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Bool::mask(array: &vortex_array::arrays::BoolArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +impl vortex_array::VTable for vortex_array::arrays::Bool -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Bool - -pub fn vortex_array::arrays::Bool::scalar_at(array: &vortex_array::arrays::BoolArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult - -impl vortex_array::vtable::VTable for vortex_array::arrays::Bool - -pub type vortex_array::arrays::Bool::Array = vortex_array::arrays::BoolArray +pub type vortex_array::arrays::Bool::ArrayData = vortex_array::arrays::bool::BoolData pub type vortex_array::arrays::Bool::Metadata = vortex_array::ProstMetadata @@ -900,151 +870,141 @@ pub type vortex_array::arrays::Bool::OperationsVTable = vortex_array::arrays::Bo pub type vortex_array::arrays::Bool::ValidityVTable = vortex_array::arrays::Bool -pub fn vortex_array::arrays::Bool::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Bool::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Bool::array_eq(array: &vortex_array::arrays::BoolArray, other: &vortex_array::arrays::BoolArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Bool::array_eq(array: &vortex_array::arrays::bool::BoolData, other: &vortex_array::arrays::bool::BoolData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::Bool::array_hash(array: &vortex_array::arrays::BoolArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Bool::array_hash(array: &vortex_array::arrays::bool::BoolData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::Bool::buffer(array: &vortex_array::arrays::BoolArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Bool::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Bool::buffer_name(_array: &vortex_array::arrays::BoolArray, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::Bool::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Bool::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Bool::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Bool::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Bool::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Bool::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Bool::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String pub fn vortex_array::arrays::Bool::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Bool::dtype(array: &vortex_array::arrays::BoolArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::Bool::dtype(array: &vortex_array::arrays::bool::BoolData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::Bool::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Bool::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Bool::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Bool::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Bool::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::Bool::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Bool::len(array: &vortex_array::arrays::BoolArray) -> usize +pub fn vortex_array::arrays::Bool::len(array: &vortex_array::arrays::bool::BoolData) -> usize -pub fn vortex_array::arrays::Bool::metadata(array: &vortex_array::arrays::BoolArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Bool::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Bool::nbuffers(_array: &vortex_array::arrays::BoolArray) -> usize +pub fn vortex_array::arrays::Bool::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Bool::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::Bool::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Bool::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Bool::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Bool::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Bool::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> pub fn vortex_array::arrays::Bool::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Bool::slot_name(_array: &vortex_array::arrays::BoolArray, idx: usize) -> alloc::string::String - -pub fn vortex_array::arrays::Bool::slots(array: &vortex_array::arrays::BoolArray) -> &[core::option::Option] +pub fn vortex_array::arrays::Bool::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Bool::stats(array: &vortex_array::arrays::BoolArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::Bool::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::Bool::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::Bool::stats(array: &vortex_array::arrays::bool::BoolData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Bool::with_slots(array: &mut vortex_array::arrays::BoolArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Bool::vtable(_array: &Self::ArrayData) -> &Self -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Bool +pub fn vortex_array::arrays::Bool::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Bool::validity(array: &vortex_array::arrays::BoolArray) -> vortex_error::VortexResult +impl vortex_array::ValidityVTable for vortex_array::arrays::Bool -pub struct vortex_array::arrays::bool::BoolArray +pub fn vortex_array::arrays::Bool::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>) -> vortex_error::VortexResult -impl vortex_array::arrays::BoolArray - -pub fn vortex_array::arrays::BoolArray::from_indices>(length: usize, indices: I, validity: vortex_array::validity::Validity) -> Self - -pub fn vortex_array::arrays::BoolArray::into_bit_buffer(self) -> vortex_buffer::bit::buf::BitBuffer - -pub fn vortex_array::arrays::BoolArray::into_parts(self) -> vortex_array::arrays::bool::BoolArrayParts - -pub fn vortex_array::arrays::BoolArray::maybe_to_mask(&self) -> vortex_error::VortexResult> +impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::Bool -pub fn vortex_array::arrays::BoolArray::new(bits: vortex_buffer::bit::buf::BitBuffer, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::arrays::Bool::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::BoolArray::new_handle(handle: vortex_array::buffer::BufferHandle, offset: usize, len: usize, validity: vortex_array::validity::Validity) -> Self +impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::Bool -pub unsafe fn vortex_array::arrays::BoolArray::new_unchecked(bits: vortex_buffer::bit::buf::BitBuffer, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::arrays::Bool::filter(array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::BoolArray::to_bit_buffer(&self) -> vortex_buffer::bit::buf::BitBuffer +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Bool -pub fn vortex_array::arrays::BoolArray::to_mask(&self) -> vortex_mask::Mask +pub fn vortex_array::arrays::Bool::slice(array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::BoolArray::to_mask_fill_null_false(&self) -> vortex_mask::Mask +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::arrays::bool::BoolMaskedValidityRule -pub fn vortex_array::arrays::BoolArray::try_new(bits: vortex_buffer::bit::buf::BitBuffer, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +pub type vortex_array::arrays::bool::BoolMaskedValidityRule::Parent = vortex_array::arrays::Masked -pub fn vortex_array::arrays::BoolArray::try_new_from_handle(bits: vortex_array::buffer::BufferHandle, offset: usize, len: usize, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +pub fn vortex_array::arrays::bool::BoolMaskedValidityRule::reduce_parent(&self, array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>, parent: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::BoolArray::validate(bits: &vortex_buffer::bit::buf::BitBuffer, validity: &vortex_array::validity::Validity) -> vortex_error::VortexResult<()> +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::Bool -pub fn vortex_array::arrays::BoolArray::validity(&self) -> vortex_array::validity::Validity +pub fn vortex_array::arrays::Bool::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -impl vortex_array::arrays::BoolArray +impl vortex_array::scalar_fn::fns::fill_null::FillNullKernel for vortex_array::arrays::Bool -pub fn vortex_array::arrays::BoolArray::patch(self, patches: &vortex_array::patches::Patches, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Bool::fill_null(array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::arrays::BoolArray +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Bool -pub fn vortex_array::arrays::BoolArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Bool::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -impl core::clone::Clone for vortex_array::arrays::BoolArray +pub struct vortex_array::arrays::bool::BoolArrayParts -pub fn vortex_array::arrays::BoolArray::clone(&self) -> vortex_array::arrays::BoolArray +pub vortex_array::arrays::bool::BoolArrayParts::bits: vortex_array::buffer::BufferHandle -impl core::convert::AsRef for vortex_array::arrays::BoolArray +pub vortex_array::arrays::bool::BoolArrayParts::len: usize -pub fn vortex_array::arrays::BoolArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub vortex_array::arrays::bool::BoolArrayParts::offset: usize -impl core::convert::From for vortex_array::ArrayRef +pub vortex_array::arrays::bool::BoolArrayParts::validity: vortex_array::validity::Validity -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::BoolArray) -> vortex_array::ArrayRef +pub struct vortex_array::arrays::bool::BoolData -impl core::convert::From for vortex_array::arrays::BoolArray +impl vortex_array::arrays::bool::BoolData -pub fn vortex_array::arrays::BoolArray::from(value: vortex_buffer::bit::buf::BitBuffer) -> Self +pub fn vortex_array::arrays::bool::BoolData::dtype(&self) -> &vortex_array::dtype::DType -impl core::fmt::Debug for vortex_array::arrays::BoolArray +pub fn vortex_array::arrays::bool::BoolData::into_bit_buffer(self) -> vortex_buffer::bit::buf::BitBuffer -pub fn vortex_array::arrays::BoolArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::bool::BoolData::into_parts(self) -> vortex_array::arrays::bool::BoolArrayParts -impl core::iter::traits::collect::FromIterator for vortex_array::arrays::BoolArray +pub fn vortex_array::arrays::bool::BoolData::is_empty(&self) -> bool -pub fn vortex_array::arrays::BoolArray::from_iter>(iter: T) -> Self +pub fn vortex_array::arrays::bool::BoolData::len(&self) -> usize -impl core::iter::traits::collect::FromIterator> for vortex_array::arrays::BoolArray +pub fn vortex_array::arrays::bool::BoolData::maybe_to_mask(&self) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::BoolArray::from_iter>>(iter: I) -> Self +pub fn vortex_array::arrays::bool::BoolData::to_bit_buffer(&self) -> vortex_buffer::bit::buf::BitBuffer -impl core::ops::deref::Deref for vortex_array::arrays::BoolArray +pub fn vortex_array::arrays::bool::BoolData::to_mask(&self) -> vortex_mask::Mask -pub type vortex_array::arrays::BoolArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::arrays::bool::BoolData::to_mask_fill_null_false(&self) -> vortex_mask::Mask -pub fn vortex_array::arrays::BoolArray::deref(&self) -> &Self::Target +pub fn vortex_array::arrays::bool::BoolData::validity(&self) -> vortex_array::validity::Validity -impl vortex_array::Executable for vortex_array::arrays::BoolArray +pub fn vortex_array::arrays::bool::BoolData::validity_mask(&self) -> vortex_mask::Mask -pub fn vortex_array::arrays::BoolArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl core::clone::Clone for vortex_array::arrays::bool::BoolData -impl vortex_array::IntoArray for vortex_array::arrays::BoolArray +pub fn vortex_array::arrays::bool::BoolData::clone(&self) -> vortex_array::arrays::bool::BoolData -pub fn vortex_array::arrays::BoolArray::into_array(self) -> vortex_array::ArrayRef +impl core::convert::From for vortex_array::ArrayRef -pub struct vortex_array::arrays::bool::BoolArrayParts +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::bool::BoolData) -> vortex_array::ArrayRef -pub vortex_array::arrays::bool::BoolArrayParts::bits: vortex_array::buffer::BufferHandle +impl core::fmt::Debug for vortex_array::arrays::bool::BoolData -pub vortex_array::arrays::bool::BoolArrayParts::len: usize +pub fn vortex_array::arrays::bool::BoolData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub vortex_array::arrays::bool::BoolArrayParts::offset: usize +impl vortex_array::IntoArray for vortex_array::arrays::bool::BoolData -pub vortex_array::arrays::bool::BoolArrayParts::validity: vortex_array::validity::Validity +pub fn vortex_array::arrays::bool::BoolData::into_array(self) -> vortex_array::ArrayRef pub struct vortex_array::arrays::bool::BoolMaskedValidityRule @@ -1060,7 +1020,9 @@ impl vortex_array::optimizer::rules::ArrayParentReduceRule vortex_error::VortexResult> +pub fn vortex_array::arrays::bool::BoolMaskedValidityRule::reduce_parent(&self, array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>, parent: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>, child_idx: usize) -> vortex_error::VortexResult> + +pub type vortex_array::arrays::bool::BoolArray = vortex_array::Array pub mod vortex_array::arrays::chunked @@ -1068,7 +1030,7 @@ pub struct vortex_array::arrays::chunked::Chunked impl vortex_array::arrays::Chunked -pub const vortex_array::arrays::Chunked::ID: vortex_array::vtable::ArrayId +pub const vortex_array::arrays::Chunked::ID: vortex_array::ArrayId impl core::clone::Clone for vortex_array::arrays::Chunked @@ -1078,163 +1040,153 @@ impl core::fmt::Debug for vortex_array::arrays::Chunked pub fn vortex_array::arrays::Chunked::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::Chunked - -pub fn vortex_array::arrays::Chunked::take(array: &vortex_array::arrays::ChunkedArray, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::arrays::filter::FilterKernel for vortex_array::arrays::Chunked - -pub fn vortex_array::arrays::Chunked::filter(array: &vortex_array::arrays::ChunkedArray, mask: &vortex_mask::Mask, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::arrays::slice::SliceKernel for vortex_array::arrays::Chunked - -pub fn vortex_array::arrays::Chunked::slice(array: &Self::Array, range: core::ops::range::Range, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::OperationsVTable for vortex_array::arrays::Chunked -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::Chunked +pub fn vortex_array::arrays::Chunked::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Chunked>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Chunked::cast(array: &vortex_array::arrays::ChunkedArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +impl vortex_array::VTable for vortex_array::arrays::Chunked -impl vortex_array::scalar_fn::fns::fill_null::FillNullReduce for vortex_array::arrays::Chunked +pub type vortex_array::arrays::Chunked::ArrayData = vortex_array::arrays::chunked::ChunkedData -pub fn vortex_array::arrays::Chunked::fill_null(array: &vortex_array::arrays::ChunkedArray, fill_value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Chunked::Metadata = vortex_array::EmptyMetadata -impl vortex_array::scalar_fn::fns::mask::MaskKernel for vortex_array::arrays::Chunked +pub type vortex_array::arrays::Chunked::OperationsVTable = vortex_array::arrays::Chunked -pub fn vortex_array::arrays::Chunked::mask(array: &vortex_array::arrays::ChunkedArray, mask: &vortex_array::ArrayRef, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Chunked::ValidityVTable = vortex_array::arrays::Chunked -impl vortex_array::scalar_fn::fns::zip::ZipKernel for vortex_array::arrays::Chunked +pub fn vortex_array::arrays::Chunked::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Chunked::zip(if_true: &vortex_array::arrays::ChunkedArray, if_false: &vortex_array::ArrayRef, mask: &vortex_array::ArrayRef, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Chunked::array_eq(array: &vortex_array::arrays::chunked::ChunkedData, other: &vortex_array::arrays::chunked::ChunkedData, precision: vortex_array::Precision) -> bool -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Chunked +pub fn vortex_array::arrays::Chunked::array_hash(array: &vortex_array::arrays::chunked::ChunkedData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::Chunked::scalar_at(array: &vortex_array::arrays::ChunkedArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Chunked::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -impl vortex_array::vtable::VTable for vortex_array::arrays::Chunked +pub fn vortex_array::arrays::Chunked::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub type vortex_array::arrays::Chunked::Array = vortex_array::arrays::ChunkedArray +pub fn vortex_array::arrays::Chunked::build(dtype: &vortex_array::dtype::DType, _len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub type vortex_array::arrays::Chunked::Metadata = vortex_array::EmptyMetadata +pub fn vortex_array::arrays::Chunked::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub type vortex_array::arrays::Chunked::OperationsVTable = vortex_array::arrays::Chunked +pub fn vortex_array::arrays::Chunked::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub type vortex_array::arrays::Chunked::ValidityVTable = vortex_array::arrays::Chunked +pub fn vortex_array::arrays::Chunked::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Chunked::append_to_builder(array: &vortex_array::arrays::ChunkedArray, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Chunked::dtype(array: &vortex_array::arrays::chunked::ChunkedData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::Chunked::array_eq(array: &vortex_array::arrays::ChunkedArray, other: &vortex_array::arrays::ChunkedArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Chunked::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Chunked::array_hash(array: &vortex_array::arrays::ChunkedArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Chunked::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Chunked::buffer(_array: &vortex_array::arrays::ChunkedArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Chunked::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Chunked::buffer_name(_array: &vortex_array::arrays::ChunkedArray, _idx: usize) -> core::option::Option +pub fn vortex_array::arrays::Chunked::len(array: &vortex_array::arrays::chunked::ChunkedData) -> usize -pub fn vortex_array::arrays::Chunked::build(dtype: &vortex_array::dtype::DType, _len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Chunked::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Chunked::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Chunked::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Chunked::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Chunked::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Chunked::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Chunked::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Chunked::dtype(array: &vortex_array::arrays::ChunkedArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::Chunked::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Chunked::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Chunked::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Chunked::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Chunked::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Chunked::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::Chunked::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::Chunked::len(array: &vortex_array::arrays::ChunkedArray) -> usize +pub fn vortex_array::arrays::Chunked::stats(array: &vortex_array::arrays::chunked::ChunkedData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Chunked::metadata(_array: &vortex_array::arrays::ChunkedArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Chunked::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::Chunked::nbuffers(_array: &vortex_array::arrays::ChunkedArray) -> usize +pub fn vortex_array::arrays::Chunked::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Chunked::nchildren(array: &Self::Array) -> usize +impl vortex_array::ValidityVTable for vortex_array::arrays::Chunked -pub fn vortex_array::arrays::Chunked::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Chunked::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Chunked>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Chunked::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::Chunked -pub fn vortex_array::arrays::Chunked::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Chunked::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::Chunked>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Chunked::slot_name(_array: &vortex_array::arrays::ChunkedArray, idx: usize) -> alloc::string::String +impl vortex_array::arrays::filter::FilterKernel for vortex_array::arrays::Chunked -pub fn vortex_array::arrays::Chunked::slots(array: &vortex_array::arrays::ChunkedArray) -> &[core::option::Option] +pub fn vortex_array::arrays::Chunked::filter(array: vortex_array::ArrayView<'_, vortex_array::arrays::Chunked>, mask: &vortex_mask::Mask, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Chunked::stats(array: &vortex_array::arrays::ChunkedArray) -> vortex_array::stats::StatsSetRef<'_> +impl vortex_array::arrays::slice::SliceKernel for vortex_array::arrays::Chunked -pub fn vortex_array::arrays::Chunked::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::Chunked::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Chunked::with_slots(array: &mut vortex_array::arrays::ChunkedArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::Chunked -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Chunked +pub fn vortex_array::arrays::Chunked::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::Chunked>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Chunked::validity(array: &vortex_array::arrays::ChunkedArray) -> vortex_error::VortexResult +impl vortex_array::scalar_fn::fns::fill_null::FillNullReduce for vortex_array::arrays::Chunked -pub struct vortex_array::arrays::chunked::ChunkedArray +pub fn vortex_array::arrays::Chunked::fill_null(array: vortex_array::ArrayView<'_, vortex_array::arrays::Chunked>, fill_value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult> -impl vortex_array::arrays::ChunkedArray +impl vortex_array::scalar_fn::fns::mask::MaskKernel for vortex_array::arrays::Chunked -pub fn vortex_array::arrays::ChunkedArray::array_iterator(&self) -> impl vortex_array::iter::ArrayIterator + '_ +pub fn vortex_array::arrays::Chunked::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::Chunked>, mask: &vortex_array::ArrayRef, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ChunkedArray::array_stream(&self) -> impl vortex_array::stream::ArrayStream + '_ +impl vortex_array::scalar_fn::fns::zip::ZipKernel for vortex_array::arrays::Chunked -pub fn vortex_array::arrays::ChunkedArray::chunk(&self, idx: usize) -> &vortex_array::ArrayRef +pub fn vortex_array::arrays::Chunked::zip(if_true: vortex_array::ArrayView<'_, vortex_array::arrays::Chunked>, if_false: &vortex_array::ArrayRef, mask: &vortex_array::ArrayRef, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ChunkedArray::chunk_offsets(&self) -> vortex_buffer::buffer::Buffer +pub struct vortex_array::arrays::chunked::ChunkedData -pub fn vortex_array::arrays::ChunkedArray::chunks(&self) -> alloc::vec::Vec +impl vortex_array::arrays::chunked::ChunkedData -pub fn vortex_array::arrays::ChunkedArray::iter_chunks(&self) -> impl core::iter::traits::iterator::Iterator + '_ +pub fn vortex_array::arrays::chunked::ChunkedData::array_iterator(&self) -> impl vortex_array::iter::ArrayIterator + '_ -pub fn vortex_array::arrays::ChunkedArray::nchunks(&self) -> usize +pub fn vortex_array::arrays::chunked::ChunkedData::array_stream(&self) -> impl vortex_array::stream::ArrayStream + '_ -pub unsafe fn vortex_array::arrays::ChunkedArray::new_unchecked(chunks: alloc::vec::Vec, dtype: vortex_array::dtype::DType) -> Self +pub fn vortex_array::arrays::chunked::ChunkedData::chunk(&self, idx: usize) -> &vortex_array::ArrayRef -pub fn vortex_array::arrays::ChunkedArray::non_empty_chunks(&self) -> impl core::iter::traits::iterator::Iterator + '_ +pub fn vortex_array::arrays::chunked::ChunkedData::chunk_offsets(&self) -> vortex_buffer::buffer::Buffer -pub fn vortex_array::arrays::ChunkedArray::rechunk(&self, target_bytesize: u64, target_rowsize: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::chunked::ChunkedData::chunks(&self) -> alloc::vec::Vec -pub fn vortex_array::arrays::ChunkedArray::try_new(chunks: alloc::vec::Vec, dtype: vortex_array::dtype::DType) -> vortex_error::VortexResult +pub fn vortex_array::arrays::chunked::ChunkedData::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::ChunkedArray::validate(chunks: &[vortex_array::ArrayRef], dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::chunked::ChunkedData::is_empty(&self) -> bool -impl vortex_array::arrays::ChunkedArray +pub fn vortex_array::arrays::chunked::ChunkedData::iter_chunks(&self) -> impl core::iter::traits::iterator::Iterator + '_ -pub fn vortex_array::arrays::ChunkedArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::chunked::ChunkedData::len(&self) -> usize -impl core::clone::Clone for vortex_array::arrays::ChunkedArray +pub fn vortex_array::arrays::chunked::ChunkedData::nchunks(&self) -> usize -pub fn vortex_array::arrays::ChunkedArray::clone(&self) -> vortex_array::arrays::ChunkedArray +pub unsafe fn vortex_array::arrays::chunked::ChunkedData::new_unchecked(chunks: alloc::vec::Vec, dtype: vortex_array::dtype::DType) -> Self -impl core::convert::AsRef for vortex_array::arrays::ChunkedArray +pub fn vortex_array::arrays::chunked::ChunkedData::non_empty_chunks(&self) -> impl core::iter::traits::iterator::Iterator + '_ -pub fn vortex_array::arrays::ChunkedArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::chunked::ChunkedData::rechunk(&self, target_bytesize: u64, target_rowsize: usize) -> vortex_error::VortexResult -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::arrays::chunked::ChunkedData::try_new(chunks: alloc::vec::Vec, dtype: vortex_array::dtype::DType) -> vortex_error::VortexResult -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::ChunkedArray) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::chunked::ChunkedData::validate(chunks: &[vortex_array::ArrayRef], dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult<()> -impl core::fmt::Debug for vortex_array::arrays::ChunkedArray +impl core::clone::Clone for vortex_array::arrays::chunked::ChunkedData -pub fn vortex_array::arrays::ChunkedArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::chunked::ChunkedData::clone(&self) -> vortex_array::arrays::chunked::ChunkedData -impl core::iter::traits::collect::FromIterator> for vortex_array::arrays::ChunkedArray +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::ChunkedArray::from_iter>(iter: T) -> Self +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::chunked::ChunkedData) -> vortex_array::ArrayRef -impl core::ops::deref::Deref for vortex_array::arrays::ChunkedArray +impl core::fmt::Debug for vortex_array::arrays::chunked::ChunkedData -pub type vortex_array::arrays::ChunkedArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::arrays::chunked::ChunkedData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::ChunkedArray::deref(&self) -> &Self::Target +impl vortex_array::IntoArray for vortex_array::arrays::chunked::ChunkedData -impl vortex_array::IntoArray for vortex_array::arrays::ChunkedArray +pub fn vortex_array::arrays::chunked::ChunkedData::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::ChunkedArray::into_array(self) -> vortex_array::ArrayRef +pub type vortex_array::arrays::chunked::ChunkedArray = vortex_array::Array pub mod vortex_array::arrays::constant @@ -1242,7 +1194,7 @@ pub struct vortex_array::arrays::constant::Constant impl vortex_array::arrays::Constant -pub const vortex_array::arrays::Constant::ID: vortex_array::vtable::ArrayId +pub const vortex_array::arrays::Constant::ID: vortex_array::ArrayId impl vortex_array::arrays::Constant @@ -1256,203 +1208,195 @@ impl core::fmt::Debug for vortex_array::arrays::Constant pub fn vortex_array::arrays::Constant::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::TakeReduce for vortex_array::arrays::Constant - -pub fn vortex_array::arrays::Constant::take(array: &vortex_array::arrays::ConstantArray, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +impl vortex_array::OperationsVTable for vortex_array::arrays::Constant -impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::Constant - -pub fn vortex_array::arrays::Constant::filter(array: &vortex_array::arrays::ConstantArray, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> - -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Constant +pub fn vortex_array::arrays::Constant::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Constant>, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Constant::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +impl vortex_array::VTable for vortex_array::arrays::Constant -impl vortex_array::scalar_fn::fns::between::BetweenReduce for vortex_array::arrays::Constant +pub type vortex_array::arrays::Constant::ArrayData = vortex_array::arrays::constant::ConstantData -pub fn vortex_array::arrays::Constant::between(array: &vortex_array::arrays::ConstantArray, lower: &vortex_array::ArrayRef, upper: &vortex_array::ArrayRef, options: &vortex_array::scalar_fn::fns::between::BetweenOptions) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Constant::Metadata = vortex_array::scalar::Scalar -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::Constant +pub type vortex_array::arrays::Constant::OperationsVTable = vortex_array::arrays::Constant -pub fn vortex_array::arrays::Constant::cast(array: &vortex_array::arrays::ConstantArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Constant::ValidityVTable = vortex_array::arrays::Constant -impl vortex_array::scalar_fn::fns::fill_null::FillNullReduce for vortex_array::arrays::Constant +pub fn vortex_array::arrays::Constant::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Constant::fill_null(array: &vortex_array::arrays::ConstantArray, fill_value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Constant::array_eq(array: &vortex_array::arrays::constant::ConstantData, other: &vortex_array::arrays::constant::ConstantData, _precision: vortex_array::Precision) -> bool -impl vortex_array::scalar_fn::fns::not::NotReduce for vortex_array::arrays::Constant +pub fn vortex_array::arrays::Constant::array_hash(array: &vortex_array::arrays::constant::ConstantData, state: &mut H, _precision: vortex_array::Precision) -pub fn vortex_array::arrays::Constant::invert(array: &vortex_array::arrays::ConstantArray) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Constant::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Constant +pub fn vortex_array::arrays::Constant::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Constant::scalar_at(array: &vortex_array::arrays::ConstantArray, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Constant::build(_dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], _children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -impl vortex_array::vtable::VTable for vortex_array::arrays::Constant +pub fn vortex_array::arrays::Constant::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub type vortex_array::arrays::Constant::Array = vortex_array::arrays::ConstantArray +pub fn vortex_array::arrays::Constant::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub type vortex_array::arrays::Constant::Metadata = vortex_array::scalar::Scalar +pub fn vortex_array::arrays::Constant::deserialize(_bytes: &[u8], dtype: &vortex_array::dtype::DType, _len: usize, buffers: &[vortex_array::buffer::BufferHandle], session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::arrays::Constant::OperationsVTable = vortex_array::arrays::Constant +pub fn vortex_array::arrays::Constant::dtype(array: &vortex_array::arrays::constant::ConstantData) -> &vortex_array::dtype::DType -pub type vortex_array::arrays::Constant::ValidityVTable = vortex_array::arrays::Constant +pub fn vortex_array::arrays::Constant::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Constant::append_to_builder(array: &vortex_array::arrays::ConstantArray, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Constant::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Constant::array_eq(array: &vortex_array::arrays::ConstantArray, other: &vortex_array::arrays::ConstantArray, _precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Constant::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Constant::array_hash(array: &vortex_array::arrays::ConstantArray, state: &mut H, _precision: vortex_array::Precision) +pub fn vortex_array::arrays::Constant::len(array: &vortex_array::arrays::constant::ConstantData) -> usize -pub fn vortex_array::arrays::Constant::buffer(array: &vortex_array::arrays::ConstantArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Constant::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Constant::buffer_name(_array: &vortex_array::arrays::ConstantArray, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::Constant::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Constant::build(_dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], _children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Constant::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Constant::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Constant::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Constant::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Constant::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Constant::deserialize(_bytes: &[u8], dtype: &vortex_array::dtype::DType, _len: usize, buffers: &[vortex_array::buffer::BufferHandle], session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Constant::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Constant::dtype(array: &vortex_array::arrays::ConstantArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::Constant::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Constant::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Constant::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::Constant::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Constant::stats(array: &vortex_array::arrays::constant::ConstantData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Constant::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::Constant::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::Constant::len(array: &vortex_array::arrays::ConstantArray) -> usize +pub fn vortex_array::arrays::Constant::with_slots(_array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Constant::metadata(array: &vortex_array::arrays::ConstantArray) -> vortex_error::VortexResult +impl vortex_array::ValidityVTable for vortex_array::arrays::Constant -pub fn vortex_array::arrays::Constant::nbuffers(_array: &vortex_array::arrays::ConstantArray) -> usize +pub fn vortex_array::arrays::Constant::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Constant>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Constant::nchildren(array: &Self::Array) -> usize +impl vortex_array::arrays::dict::TakeReduce for vortex_array::arrays::Constant -pub fn vortex_array::arrays::Constant::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Constant::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::Constant>, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Constant::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::Constant -pub fn vortex_array::arrays::Constant::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Constant::filter(array: vortex_array::ArrayView<'_, vortex_array::arrays::Constant>, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Constant::slot_name(_array: &vortex_array::arrays::ConstantArray, idx: usize) -> alloc::string::String +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Constant -pub fn vortex_array::arrays::Constant::slots(array: &vortex_array::arrays::ConstantArray) -> &[core::option::Option] +pub fn vortex_array::arrays::Constant::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Constant::stats(array: &vortex_array::arrays::ConstantArray) -> vortex_array::stats::StatsSetRef<'_> +impl vortex_array::scalar_fn::fns::between::BetweenReduce for vortex_array::arrays::Constant -pub fn vortex_array::arrays::Constant::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::Constant::between(array: vortex_array::ArrayView<'_, vortex_array::arrays::Constant>, lower: &vortex_array::ArrayRef, upper: &vortex_array::ArrayRef, options: &vortex_array::scalar_fn::fns::between::BetweenOptions) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Constant::with_slots(array: &mut vortex_array::arrays::ConstantArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::Constant -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Constant +pub fn vortex_array::arrays::Constant::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::Constant>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Constant::validity(array: &vortex_array::arrays::ConstantArray) -> vortex_error::VortexResult +impl vortex_array::scalar_fn::fns::fill_null::FillNullReduce for vortex_array::arrays::Constant -pub struct vortex_array::arrays::constant::ConstantArray +pub fn vortex_array::arrays::Constant::fill_null(array: vortex_array::ArrayView<'_, vortex_array::arrays::Constant>, fill_value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult> -impl vortex_array::arrays::ConstantArray +impl vortex_array::scalar_fn::fns::not::NotReduce for vortex_array::arrays::Constant -pub fn vortex_array::arrays::ConstantArray::into_parts(self) -> vortex_array::scalar::Scalar +pub fn vortex_array::arrays::Constant::invert(array: vortex_array::ArrayView<'_, vortex_array::arrays::Constant>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ConstantArray::new(scalar: S, len: usize) -> Self where S: core::convert::Into +pub struct vortex_array::arrays::constant::ConstantData -pub fn vortex_array::arrays::ConstantArray::scalar(&self) -> &vortex_array::scalar::Scalar +impl vortex_array::arrays::constant::ConstantData -impl vortex_array::arrays::ConstantArray +pub fn vortex_array::arrays::constant::ConstantData::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::ConstantArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::constant::ConstantData::into_parts(self) -> vortex_array::scalar::Scalar -impl core::clone::Clone for vortex_array::arrays::ConstantArray +pub fn vortex_array::arrays::constant::ConstantData::is_empty(&self) -> bool -pub fn vortex_array::arrays::ConstantArray::clone(&self) -> vortex_array::arrays::ConstantArray +pub fn vortex_array::arrays::constant::ConstantData::len(&self) -> usize -impl core::convert::AsRef for vortex_array::arrays::ConstantArray +pub fn vortex_array::arrays::constant::ConstantData::new(scalar: S, len: usize) -> Self where S: core::convert::Into -pub fn vortex_array::arrays::ConstantArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::constant::ConstantData::scalar(&self) -> &vortex_array::scalar::Scalar -impl core::convert::From for vortex_array::ArrayRef +impl core::clone::Clone for vortex_array::arrays::constant::ConstantData -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::ConstantArray) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::constant::ConstantData::clone(&self) -> vortex_array::arrays::constant::ConstantData -impl core::fmt::Debug for vortex_array::arrays::ConstantArray +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::ConstantArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::constant::ConstantData) -> vortex_array::ArrayRef -impl core::ops::deref::Deref for vortex_array::arrays::ConstantArray +impl core::fmt::Debug for vortex_array::arrays::constant::ConstantData -pub type vortex_array::arrays::ConstantArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::arrays::constant::ConstantData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::ConstantArray::deref(&self) -> &Self::Target +impl vortex_array::IntoArray for vortex_array::arrays::constant::ConstantData -impl vortex_array::IntoArray for vortex_array::arrays::ConstantArray +pub fn vortex_array::arrays::constant::ConstantData::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::ConstantArray::into_array(self) -> vortex_array::ArrayRef +pub type vortex_array::arrays::constant::ConstantArray = vortex_array::Array pub mod vortex_array::arrays::datetime -pub struct vortex_array::arrays::datetime::TemporalArray - -impl vortex_array::arrays::datetime::TemporalArray +pub struct vortex_array::arrays::datetime::TemporalData -pub fn vortex_array::arrays::datetime::TemporalArray::dtype(&self) -> &vortex_array::dtype::DType +impl vortex_array::arrays::datetime::TemporalData -pub fn vortex_array::arrays::datetime::TemporalArray::ext_dtype(&self) -> vortex_array::dtype::extension::ExtDTypeRef +pub fn vortex_array::arrays::datetime::TemporalData::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::datetime::TemporalArray::temporal_metadata(&self) -> vortex_array::extension::datetime::TemporalMetadata<'_> +pub fn vortex_array::arrays::datetime::TemporalData::ext_dtype(&self) -> vortex_array::dtype::extension::ExtDTypeRef -pub fn vortex_array::arrays::datetime::TemporalArray::temporal_values(&self) -> &vortex_array::ArrayRef +pub fn vortex_array::arrays::datetime::TemporalData::temporal_metadata(&self) -> vortex_array::extension::datetime::TemporalMetadata<'_> -impl vortex_array::arrays::datetime::TemporalArray +pub fn vortex_array::arrays::datetime::TemporalData::temporal_values(&self) -> &vortex_array::ArrayRef -pub fn vortex_array::arrays::datetime::TemporalArray::new_date(array: vortex_array::ArrayRef, time_unit: vortex_array::extension::datetime::TimeUnit) -> Self +impl vortex_array::arrays::datetime::TemporalData -pub fn vortex_array::arrays::datetime::TemporalArray::new_time(array: vortex_array::ArrayRef, time_unit: vortex_array::extension::datetime::TimeUnit) -> Self +pub fn vortex_array::arrays::datetime::TemporalData::new_date(array: vortex_array::ArrayRef, time_unit: vortex_array::extension::datetime::TimeUnit) -> Self -pub fn vortex_array::arrays::datetime::TemporalArray::new_timestamp(array: vortex_array::ArrayRef, time_unit: vortex_array::extension::datetime::TimeUnit, time_zone: core::option::Option>) -> Self +pub fn vortex_array::arrays::datetime::TemporalData::new_time(array: vortex_array::ArrayRef, time_unit: vortex_array::extension::datetime::TimeUnit) -> Self -impl core::clone::Clone for vortex_array::arrays::datetime::TemporalArray +pub fn vortex_array::arrays::datetime::TemporalData::new_timestamp(array: vortex_array::ArrayRef, time_unit: vortex_array::extension::datetime::TimeUnit, time_zone: core::option::Option>) -> Self -pub fn vortex_array::arrays::datetime::TemporalArray::clone(&self) -> vortex_array::arrays::datetime::TemporalArray +impl core::clone::Clone for vortex_array::arrays::datetime::TemporalData -impl core::convert::AsRef for vortex_array::arrays::datetime::TemporalArray +pub fn vortex_array::arrays::datetime::TemporalData::clone(&self) -> vortex_array::arrays::datetime::TemporalData -pub fn vortex_array::arrays::datetime::TemporalArray::as_ref(&self) -> &dyn vortex_array::DynArray +impl core::convert::From<&vortex_array::arrays::datetime::TemporalData> for vortex_array::arrays::ExtensionArray -impl core::convert::From<&vortex_array::arrays::datetime::TemporalArray> for vortex_array::arrays::ExtensionArray +pub fn vortex_array::arrays::ExtensionArray::from(value: &vortex_array::arrays::datetime::TemporalData) -> Self -pub fn vortex_array::arrays::ExtensionArray::from(value: &vortex_array::arrays::datetime::TemporalArray) -> Self +impl core::convert::From for vortex_array::ArrayRef -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::datetime::TemporalData) -> Self -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::datetime::TemporalArray) -> Self +impl core::convert::From for vortex_array::arrays::ExtensionArray -impl core::convert::From for vortex_array::arrays::ExtensionArray +pub fn vortex_array::arrays::ExtensionArray::from(value: vortex_array::arrays::datetime::TemporalData) -> Self -pub fn vortex_array::arrays::ExtensionArray::from(value: vortex_array::arrays::datetime::TemporalArray) -> Self +impl core::convert::TryFrom> for vortex_array::arrays::datetime::TemporalData -impl core::convert::TryFrom> for vortex_array::arrays::datetime::TemporalArray +pub type vortex_array::arrays::datetime::TemporalData::Error = vortex_error::VortexError -pub type vortex_array::arrays::datetime::TemporalArray::Error = vortex_error::VortexError +pub fn vortex_array::arrays::datetime::TemporalData::try_from(ext: vortex_array::arrays::ExtensionArray) -> core::result::Result -pub fn vortex_array::arrays::datetime::TemporalArray::try_from(value: vortex_array::ArrayRef) -> core::result::Result +impl core::convert::TryFrom for vortex_array::arrays::datetime::TemporalData -impl core::convert::TryFrom for vortex_array::arrays::datetime::TemporalArray +pub type vortex_array::arrays::datetime::TemporalData::Error = vortex_error::VortexError -pub type vortex_array::arrays::datetime::TemporalArray::Error = vortex_error::VortexError +pub fn vortex_array::arrays::datetime::TemporalData::try_from(value: vortex_array::ArrayRef) -> core::result::Result -pub fn vortex_array::arrays::datetime::TemporalArray::try_from(ext: vortex_array::arrays::ExtensionArray) -> core::result::Result +impl core::fmt::Debug for vortex_array::arrays::datetime::TemporalData -impl core::fmt::Debug for vortex_array::arrays::datetime::TemporalArray +pub fn vortex_array::arrays::datetime::TemporalData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::datetime::TemporalArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl vortex_array::IntoArray for vortex_array::arrays::datetime::TemporalData -impl vortex_array::IntoArray for vortex_array::arrays::datetime::TemporalArray +pub fn vortex_array::arrays::datetime::TemporalData::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::datetime::TemporalArray::into_array(self) -> vortex_array::ArrayRef +pub type vortex_array::arrays::datetime::TemporalArray = vortex_array::arrays::datetime::TemporalData pub mod vortex_array::arrays::decimal @@ -1460,7 +1404,7 @@ pub struct vortex_array::arrays::decimal::Decimal impl vortex_array::arrays::Decimal -pub const vortex_array::arrays::Decimal::ID: vortex_array::vtable::ArrayId +pub const vortex_array::arrays::Decimal::ID: vortex_array::ArrayId impl core::clone::Clone for vortex_array::arrays::Decimal @@ -1470,187 +1414,175 @@ impl core::fmt::Debug for vortex_array::arrays::Decimal pub fn vortex_array::arrays::Decimal::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::Decimal - -pub fn vortex_array::arrays::Decimal::take(array: &vortex_array::arrays::DecimalArray, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Decimal - -pub fn vortex_array::arrays::Decimal::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> - -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::arrays::decimal::DecimalMaskedValidityRule - -pub type vortex_array::arrays::decimal::DecimalMaskedValidityRule::Parent = vortex_array::arrays::Masked - -pub fn vortex_array::arrays::decimal::DecimalMaskedValidityRule::reduce_parent(&self, array: &vortex_array::arrays::DecimalArray, parent: &vortex_array::arrays::MaskedArray, _child_idx: usize) -> vortex_error::VortexResult> +impl vortex_array::OperationsVTable for vortex_array::arrays::Decimal -impl vortex_array::scalar_fn::fns::between::BetweenKernel for vortex_array::arrays::Decimal +pub fn vortex_array::arrays::Decimal::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Decimal>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Decimal::between(arr: &vortex_array::arrays::DecimalArray, lower: &vortex_array::ArrayRef, upper: &vortex_array::ArrayRef, options: &vortex_array::scalar_fn::fns::between::BetweenOptions, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::VTable for vortex_array::arrays::Decimal -impl vortex_array::scalar_fn::fns::cast::CastKernel for vortex_array::arrays::Decimal +pub type vortex_array::arrays::Decimal::ArrayData = vortex_array::arrays::decimal::DecimalData -pub fn vortex_array::arrays::Decimal::cast(array: &vortex_array::arrays::DecimalArray, dtype: &vortex_array::dtype::DType, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Decimal::Metadata = vortex_array::ProstMetadata -impl vortex_array::scalar_fn::fns::fill_null::FillNullKernel for vortex_array::arrays::Decimal +pub type vortex_array::arrays::Decimal::OperationsVTable = vortex_array::arrays::Decimal -pub fn vortex_array::arrays::Decimal::fill_null(array: &vortex_array::arrays::DecimalArray, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Decimal::ValidityVTable = vortex_array::arrays::Decimal -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Decimal +pub fn vortex_array::arrays::Decimal::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Decimal::mask(array: &vortex_array::arrays::DecimalArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Decimal::array_eq(array: &vortex_array::arrays::decimal::DecimalData, other: &vortex_array::arrays::decimal::DecimalData, precision: vortex_array::Precision) -> bool -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Decimal +pub fn vortex_array::arrays::Decimal::array_hash(array: &vortex_array::arrays::decimal::DecimalData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::Decimal::scalar_at(array: &vortex_array::arrays::DecimalArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Decimal::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -impl vortex_array::vtable::VTable for vortex_array::arrays::Decimal +pub fn vortex_array::arrays::Decimal::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub type vortex_array::arrays::Decimal::Array = vortex_array::arrays::DecimalArray +pub fn vortex_array::arrays::Decimal::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub type vortex_array::arrays::Decimal::Metadata = vortex_array::ProstMetadata +pub fn vortex_array::arrays::Decimal::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub type vortex_array::arrays::Decimal::OperationsVTable = vortex_array::arrays::Decimal +pub fn vortex_array::arrays::Decimal::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub type vortex_array::arrays::Decimal::ValidityVTable = vortex_array::arrays::Decimal +pub fn vortex_array::arrays::Decimal::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Decimal::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Decimal::dtype(array: &vortex_array::arrays::decimal::DecimalData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::Decimal::array_eq(array: &vortex_array::arrays::DecimalArray, other: &vortex_array::arrays::DecimalArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Decimal::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Decimal::array_hash(array: &vortex_array::arrays::DecimalArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Decimal::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Decimal::buffer(array: &vortex_array::arrays::DecimalArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Decimal::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Decimal::buffer_name(_array: &vortex_array::arrays::DecimalArray, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::Decimal::len(array: &vortex_array::arrays::decimal::DecimalData) -> usize -pub fn vortex_array::arrays::Decimal::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Decimal::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Decimal::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Decimal::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Decimal::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Decimal::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Decimal::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Decimal::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Decimal::dtype(array: &vortex_array::arrays::DecimalArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::Decimal::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Decimal::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Decimal::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Decimal::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Decimal::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Decimal::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::Decimal::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::Decimal::len(array: &vortex_array::arrays::DecimalArray) -> usize +pub fn vortex_array::arrays::Decimal::stats(array: &vortex_array::arrays::decimal::DecimalData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Decimal::metadata(array: &vortex_array::arrays::DecimalArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Decimal::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::Decimal::nbuffers(_array: &vortex_array::arrays::DecimalArray) -> usize +pub fn vortex_array::arrays::Decimal::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Decimal::nchildren(array: &Self::Array) -> usize +impl vortex_array::ValidityVTable for vortex_array::arrays::Decimal -pub fn vortex_array::arrays::Decimal::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Decimal::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Decimal>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Decimal::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::Decimal -pub fn vortex_array::arrays::Decimal::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Decimal::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::Decimal>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Decimal::slot_name(_array: &vortex_array::arrays::DecimalArray, idx: usize) -> alloc::string::String +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Decimal -pub fn vortex_array::arrays::Decimal::slots(array: &vortex_array::arrays::DecimalArray) -> &[core::option::Option] +pub fn vortex_array::arrays::Decimal::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Decimal::stats(array: &vortex_array::arrays::DecimalArray) -> vortex_array::stats::StatsSetRef<'_> +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::arrays::decimal::DecimalMaskedValidityRule -pub fn vortex_array::arrays::Decimal::vtable(_array: &Self::Array) -> &Self +pub type vortex_array::arrays::decimal::DecimalMaskedValidityRule::Parent = vortex_array::arrays::Masked -pub fn vortex_array::arrays::Decimal::with_slots(array: &mut vortex_array::arrays::DecimalArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::decimal::DecimalMaskedValidityRule::reduce_parent(&self, array: vortex_array::ArrayView<'_, vortex_array::arrays::Decimal>, parent: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>, _child_idx: usize) -> vortex_error::VortexResult> -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Decimal +impl vortex_array::scalar_fn::fns::between::BetweenKernel for vortex_array::arrays::Decimal -pub fn vortex_array::arrays::Decimal::validity(array: &vortex_array::arrays::DecimalArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Decimal::between(arr: vortex_array::ArrayView<'_, vortex_array::arrays::Decimal>, lower: &vortex_array::ArrayRef, upper: &vortex_array::ArrayRef, options: &vortex_array::scalar_fn::fns::between::BetweenOptions, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub struct vortex_array::arrays::decimal::DecimalArray +impl vortex_array::scalar_fn::fns::cast::CastKernel for vortex_array::arrays::Decimal -impl vortex_array::arrays::DecimalArray +pub fn vortex_array::arrays::Decimal::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::Decimal>, dtype: &vortex_array::dtype::DType, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::DecimalArray::buffer(&self) -> vortex_buffer::buffer::Buffer +impl vortex_array::scalar_fn::fns::fill_null::FillNullKernel for vortex_array::arrays::Decimal -pub fn vortex_array::arrays::DecimalArray::buffer_handle(&self) -> &vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Decimal::fill_null(array: vortex_array::ArrayView<'_, vortex_array::arrays::Decimal>, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::DecimalArray::decimal_dtype(&self) -> vortex_array::dtype::DecimalDType +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Decimal -pub fn vortex_array::arrays::DecimalArray::from_iter>(iter: I, decimal_dtype: vortex_array::dtype::DecimalDType) -> Self +pub fn vortex_array::arrays::Decimal::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::Decimal>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::DecimalArray::from_option_iter>>(iter: I, decimal_dtype: vortex_array::dtype::DecimalDType) -> Self +pub struct vortex_array::arrays::decimal::DecimalArrayParts -pub fn vortex_array::arrays::DecimalArray::into_parts(self) -> vortex_array::arrays::decimal::DecimalArrayParts +pub vortex_array::arrays::decimal::DecimalArrayParts::decimal_dtype: vortex_array::dtype::DecimalDType -pub fn vortex_array::arrays::DecimalArray::new(buffer: vortex_buffer::buffer::Buffer, decimal_dtype: vortex_array::dtype::DecimalDType, validity: vortex_array::validity::Validity) -> Self +pub vortex_array::arrays::decimal::DecimalArrayParts::validity: vortex_array::validity::Validity -pub fn vortex_array::arrays::DecimalArray::new_handle(values: vortex_array::buffer::BufferHandle, values_type: vortex_array::dtype::DecimalType, decimal_dtype: vortex_array::dtype::DecimalDType, validity: vortex_array::validity::Validity) -> Self +pub vortex_array::arrays::decimal::DecimalArrayParts::values: vortex_array::buffer::BufferHandle -pub unsafe fn vortex_array::arrays::DecimalArray::new_unchecked(buffer: vortex_buffer::buffer::Buffer, decimal_dtype: vortex_array::dtype::DecimalDType, validity: vortex_array::validity::Validity) -> Self +pub vortex_array::arrays::decimal::DecimalArrayParts::values_type: vortex_array::dtype::DecimalType -pub unsafe fn vortex_array::arrays::DecimalArray::new_unchecked_from_byte_buffer(byte_buffer: vortex_buffer::ByteBuffer, values_type: vortex_array::dtype::DecimalType, decimal_dtype: vortex_array::dtype::DecimalDType, validity: vortex_array::validity::Validity) -> Self +pub struct vortex_array::arrays::decimal::DecimalData -pub unsafe fn vortex_array::arrays::DecimalArray::new_unchecked_handle(values: vortex_array::buffer::BufferHandle, values_type: vortex_array::dtype::DecimalType, decimal_dtype: vortex_array::dtype::DecimalDType, validity: vortex_array::validity::Validity) -> Self +impl vortex_array::arrays::decimal::DecimalData -pub fn vortex_array::arrays::DecimalArray::patch(self, patches: &vortex_array::patches::Patches, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::decimal::DecimalData::buffer(&self) -> vortex_buffer::buffer::Buffer -pub fn vortex_array::arrays::DecimalArray::precision(&self) -> u8 +pub fn vortex_array::arrays::decimal::DecimalData::buffer_handle(&self) -> &vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::DecimalArray::scale(&self) -> i8 +pub fn vortex_array::arrays::decimal::DecimalData::decimal_dtype(&self) -> vortex_array::dtype::DecimalDType -pub fn vortex_array::arrays::DecimalArray::try_new(buffer: vortex_buffer::buffer::Buffer, decimal_dtype: vortex_array::dtype::DecimalDType, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +pub fn vortex_array::arrays::decimal::DecimalData::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::DecimalArray::try_new_handle(values: vortex_array::buffer::BufferHandle, values_type: vortex_array::dtype::DecimalType, decimal_dtype: vortex_array::dtype::DecimalDType, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +pub fn vortex_array::arrays::decimal::DecimalData::from_iter>(iter: I, decimal_dtype: vortex_array::dtype::DecimalDType) -> Self -pub fn vortex_array::arrays::DecimalArray::validity(&self) -> vortex_array::validity::Validity +pub fn vortex_array::arrays::decimal::DecimalData::from_option_iter>>(iter: I, decimal_dtype: vortex_array::dtype::DecimalDType) -> Self -pub fn vortex_array::arrays::DecimalArray::values_type(&self) -> vortex_array::dtype::DecimalType +pub fn vortex_array::arrays::decimal::DecimalData::into_parts(self) -> vortex_array::arrays::decimal::DecimalArrayParts -impl vortex_array::arrays::DecimalArray +pub fn vortex_array::arrays::decimal::DecimalData::is_empty(&self) -> bool -pub fn vortex_array::arrays::DecimalArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::decimal::DecimalData::len(&self) -> usize -impl core::clone::Clone for vortex_array::arrays::DecimalArray +pub fn vortex_array::arrays::decimal::DecimalData::new(buffer: vortex_buffer::buffer::Buffer, decimal_dtype: vortex_array::dtype::DecimalDType, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::arrays::DecimalArray::clone(&self) -> vortex_array::arrays::DecimalArray +pub fn vortex_array::arrays::decimal::DecimalData::new_handle(values: vortex_array::buffer::BufferHandle, values_type: vortex_array::dtype::DecimalType, decimal_dtype: vortex_array::dtype::DecimalDType, validity: vortex_array::validity::Validity) -> Self -impl core::convert::AsRef for vortex_array::arrays::DecimalArray +pub unsafe fn vortex_array::arrays::decimal::DecimalData::new_unchecked(buffer: vortex_buffer::buffer::Buffer, decimal_dtype: vortex_array::dtype::DecimalDType, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::arrays::DecimalArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub unsafe fn vortex_array::arrays::decimal::DecimalData::new_unchecked_from_byte_buffer(byte_buffer: vortex_buffer::ByteBuffer, values_type: vortex_array::dtype::DecimalType, decimal_dtype: vortex_array::dtype::DecimalDType, validity: vortex_array::validity::Validity) -> Self -impl core::convert::From for vortex_array::ArrayRef +pub unsafe fn vortex_array::arrays::decimal::DecimalData::new_unchecked_handle(values: vortex_array::buffer::BufferHandle, values_type: vortex_array::dtype::DecimalType, decimal_dtype: vortex_array::dtype::DecimalDType, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::DecimalArray) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::decimal::DecimalData::patch(self, patches: &vortex_array::patches::Patches, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::arrays::DecimalArray +pub fn vortex_array::arrays::decimal::DecimalData::precision(&self) -> u8 -pub fn vortex_array::arrays::DecimalArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::decimal::DecimalData::scale(&self) -> i8 -impl core::ops::deref::Deref for vortex_array::arrays::DecimalArray +pub fn vortex_array::arrays::decimal::DecimalData::try_new(buffer: vortex_buffer::buffer::Buffer, decimal_dtype: vortex_array::dtype::DecimalDType, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult -pub type vortex_array::arrays::DecimalArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::arrays::decimal::DecimalData::try_new_handle(values: vortex_array::buffer::BufferHandle, values_type: vortex_array::dtype::DecimalType, decimal_dtype: vortex_array::dtype::DecimalDType, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult -pub fn vortex_array::arrays::DecimalArray::deref(&self) -> &Self::Target +pub fn vortex_array::arrays::decimal::DecimalData::validity(&self) -> vortex_array::validity::Validity -impl vortex_array::Executable for vortex_array::arrays::DecimalArray +pub fn vortex_array::arrays::decimal::DecimalData::values_type(&self) -> vortex_array::dtype::DecimalType -pub fn vortex_array::arrays::DecimalArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl core::clone::Clone for vortex_array::arrays::decimal::DecimalData -impl vortex_array::IntoArray for vortex_array::arrays::DecimalArray +pub fn vortex_array::arrays::decimal::DecimalData::clone(&self) -> vortex_array::arrays::decimal::DecimalData -pub fn vortex_array::arrays::DecimalArray::into_array(self) -> vortex_array::ArrayRef +impl core::convert::From for vortex_array::ArrayRef -pub struct vortex_array::arrays::decimal::DecimalArrayParts +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::decimal::DecimalData) -> vortex_array::ArrayRef -pub vortex_array::arrays::decimal::DecimalArrayParts::decimal_dtype: vortex_array::dtype::DecimalDType +impl core::fmt::Debug for vortex_array::arrays::decimal::DecimalData -pub vortex_array::arrays::decimal::DecimalArrayParts::validity: vortex_array::validity::Validity +pub fn vortex_array::arrays::decimal::DecimalData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub vortex_array::arrays::decimal::DecimalArrayParts::values: vortex_array::buffer::BufferHandle +impl vortex_array::IntoArray for vortex_array::arrays::decimal::DecimalData -pub vortex_array::arrays::decimal::DecimalArrayParts::values_type: vortex_array::dtype::DecimalType +pub fn vortex_array::arrays::decimal::DecimalData::into_array(self) -> vortex_array::ArrayRef pub struct vortex_array::arrays::decimal::DecimalMaskedValidityRule @@ -1666,10 +1598,12 @@ impl vortex_array::optimizer::rules::ArrayParentReduceRule vortex_error::VortexResult> +pub fn vortex_array::arrays::decimal::DecimalMaskedValidityRule::reduce_parent(&self, array: vortex_array::ArrayView<'_, vortex_array::arrays::Decimal>, parent: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>, _child_idx: usize) -> vortex_error::VortexResult> pub fn vortex_array::arrays::decimal::narrowed_decimal(decimal_array: vortex_array::arrays::DecimalArray) -> vortex_array::arrays::DecimalArray +pub type vortex_array::arrays::decimal::DecimalArray = vortex_array::Array + pub mod vortex_array::arrays::dict pub mod vortex_array::arrays::dict::vtable @@ -1678,7 +1612,7 @@ pub struct vortex_array::arrays::dict::vtable::Dict impl vortex_array::arrays::dict::Dict -pub const vortex_array::arrays::dict::Dict::ID: vortex_array::vtable::ArrayId +pub const vortex_array::arrays::dict::Dict::ID: vortex_array::ArrayId impl core::clone::Clone for vortex_array::arrays::dict::Dict @@ -1688,111 +1622,113 @@ impl core::fmt::Debug for vortex_array::arrays::dict::Dict pub fn vortex_array::arrays::dict::Dict::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::dict::Dict +impl vortex_array::OperationsVTable for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::dict::Dict::take(array: &vortex_array::arrays::dict::DictArray, indices: &vortex_array::ArrayRef, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::dict::Dict +impl vortex_array::VTable for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::dict::Dict::filter(array: &vortex_array::arrays::dict::DictArray, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> +pub type vortex_array::arrays::dict::Dict::ArrayData = vortex_array::arrays::dict::DictData -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::dict::Dict +pub type vortex_array::arrays::dict::Dict::Metadata = vortex_array::ProstMetadata -pub fn vortex_array::arrays::dict::Dict::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub type vortex_array::arrays::dict::Dict::OperationsVTable = vortex_array::arrays::dict::Dict -impl vortex_array::scalar_fn::fns::binary::CompareKernel for vortex_array::arrays::dict::Dict +pub type vortex_array::arrays::dict::Dict::ValidityVTable = vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::dict::Dict::compare(lhs: &vortex_array::arrays::dict::DictArray, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::dict::Dict::array_eq(array: &vortex_array::arrays::dict::DictData, other: &vortex_array::arrays::dict::DictData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::dict::Dict::cast(array: &vortex_array::arrays::dict::DictArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::array_hash(array: &vortex_array::arrays::dict::DictData, state: &mut H, precision: vortex_array::Precision) -impl vortex_array::scalar_fn::fns::fill_null::FillNullKernel for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::dict::Dict::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::dict::Dict::fill_null(array: &vortex_array::arrays::dict::DictArray, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -impl vortex_array::scalar_fn::fns::like::LikeReduce for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::dict::Dict::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::dict::Dict::like(array: &vortex_array::arrays::dict::DictArray, pattern: &vortex_array::ArrayRef, options: vortex_array::scalar_fn::fns::like::LikeOptions) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::dict::Dict::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::dict::Dict::mask(array: &vortex_array::arrays::dict::DictArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::dict::Dict::dtype(array: &vortex_array::arrays::dict::DictData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::dict::Dict::scalar_at(array: &vortex_array::arrays::dict::DictArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::vtable::VTable for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::dict::Dict::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub type vortex_array::arrays::dict::Dict::Array = vortex_array::arrays::dict::DictArray +pub fn vortex_array::arrays::dict::Dict::id(&self) -> vortex_array::ArrayId -pub type vortex_array::arrays::dict::Dict::Metadata = vortex_array::ProstMetadata +pub fn vortex_array::arrays::dict::Dict::len(array: &vortex_array::arrays::dict::DictData) -> usize -pub type vortex_array::arrays::dict::Dict::OperationsVTable = vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::dict::Dict::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub type vortex_array::arrays::dict::Dict::ValidityVTable = vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::dict::Dict::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::dict::Dict::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::dict::Dict::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::dict::Dict::array_eq(array: &vortex_array::arrays::dict::DictArray, other: &vortex_array::arrays::dict::DictArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::dict::Dict::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::Dict::array_hash(array: &vortex_array::arrays::dict::DictArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::dict::Dict::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::Dict::buffer(_array: &vortex_array::arrays::dict::DictArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::dict::Dict::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::dict::Dict::buffer_name(_array: &vortex_array::arrays::dict::DictArray, _idx: usize) -> core::option::Option +pub fn vortex_array::arrays::dict::Dict::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::dict::Dict::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::dict::Dict::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::dict::Dict::stats(array: &vortex_array::arrays::dict::DictData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::dict::Dict::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::dict::Dict::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::dict::Dict::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::dict::Dict::dtype(array: &vortex_array::arrays::dict::DictArray) -> &vortex_array::dtype::DType +impl vortex_array::ValidityVTable for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::dict::Dict::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::dict::Dict::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::dict::Dict + +pub fn vortex_array::arrays::dict::Dict::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, indices: &vortex_array::ArrayRef, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::Dict::id(&self) -> vortex_array::vtable::ArrayId +impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::dict::Dict::len(array: &vortex_array::arrays::dict::DictArray) -> usize +pub fn vortex_array::arrays::dict::Dict::filter(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::Dict::metadata(array: &vortex_array::arrays::dict::DictArray) -> vortex_error::VortexResult +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::dict::Dict::nbuffers(_array: &vortex_array::arrays::dict::DictArray) -> usize +pub fn vortex_array::arrays::dict::Dict::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::Dict::nchildren(array: &Self::Array) -> usize +impl vortex_array::scalar_fn::fns::binary::CompareKernel for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::dict::Dict::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::compare(lhs: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::Dict::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::dict::Dict::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::dict::Dict::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::Dict::slot_name(_array: &vortex_array::arrays::dict::DictArray, idx: usize) -> alloc::string::String +impl vortex_array::scalar_fn::fns::fill_null::FillNullKernel for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::dict::Dict::slots(array: &vortex_array::arrays::dict::DictArray) -> &[core::option::Option] +pub fn vortex_array::arrays::dict::Dict::fill_null(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::Dict::stats(array: &vortex_array::arrays::dict::DictArray) -> vortex_array::stats::StatsSetRef<'_> +impl vortex_array::scalar_fn::fns::like::LikeReduce for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::dict::Dict::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::dict::Dict::like(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, pattern: &vortex_array::ArrayRef, options: vortex_array::scalar_fn::fns::like::LikeOptions) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::Dict::with_slots(array: &mut vortex_array::arrays::dict::DictArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::dict::Dict -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::dict::Dict::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::Dict::validity(array: &vortex_array::arrays::dict::DictArray) -> vortex_error::VortexResult +pub type vortex_array::arrays::dict::vtable::DictArray = vortex_array::Array pub struct vortex_array::arrays::dict::Dict impl vortex_array::arrays::dict::Dict -pub const vortex_array::arrays::dict::Dict::ID: vortex_array::vtable::ArrayId +pub const vortex_array::arrays::dict::Dict::ID: vortex_array::ArrayId impl core::clone::Clone for vortex_array::arrays::dict::Dict @@ -1802,171 +1738,161 @@ impl core::fmt::Debug for vortex_array::arrays::dict::Dict pub fn vortex_array::arrays::dict::Dict::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::dict::Dict - -pub fn vortex_array::arrays::dict::Dict::take(array: &vortex_array::arrays::dict::DictArray, indices: &vortex_array::ArrayRef, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::dict::Dict - -pub fn vortex_array::arrays::dict::Dict::filter(array: &vortex_array::arrays::dict::DictArray, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> - -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::dict::Dict - -pub fn vortex_array::arrays::dict::Dict::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +impl vortex_array::OperationsVTable for vortex_array::arrays::dict::Dict -impl vortex_array::scalar_fn::fns::binary::CompareKernel for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::dict::Dict::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::dict::Dict::compare(lhs: &vortex_array::arrays::dict::DictArray, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::VTable for vortex_array::arrays::dict::Dict -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::dict::Dict +pub type vortex_array::arrays::dict::Dict::ArrayData = vortex_array::arrays::dict::DictData -pub fn vortex_array::arrays::dict::Dict::cast(array: &vortex_array::arrays::dict::DictArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub type vortex_array::arrays::dict::Dict::Metadata = vortex_array::ProstMetadata -impl vortex_array::scalar_fn::fns::fill_null::FillNullKernel for vortex_array::arrays::dict::Dict +pub type vortex_array::arrays::dict::Dict::OperationsVTable = vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::dict::Dict::fill_null(array: &vortex_array::arrays::dict::DictArray, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub type vortex_array::arrays::dict::Dict::ValidityVTable = vortex_array::arrays::dict::Dict -impl vortex_array::scalar_fn::fns::like::LikeReduce for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::dict::Dict::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::dict::Dict::like(array: &vortex_array::arrays::dict::DictArray, pattern: &vortex_array::ArrayRef, options: vortex_array::scalar_fn::fns::like::LikeOptions) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::array_eq(array: &vortex_array::arrays::dict::DictData, other: &vortex_array::arrays::dict::DictData, precision: vortex_array::Precision) -> bool -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::dict::Dict::array_hash(array: &vortex_array::arrays::dict::DictData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::dict::Dict::mask(array: &vortex_array::arrays::dict::DictArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::dict::Dict::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::arrays::dict::Dict::scalar_at(array: &vortex_array::arrays::dict::DictArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -impl vortex_array::vtable::VTable for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::dict::Dict::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub type vortex_array::arrays::dict::Dict::Array = vortex_array::arrays::dict::DictArray +pub fn vortex_array::arrays::dict::Dict::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub type vortex_array::arrays::dict::Dict::Metadata = vortex_array::ProstMetadata +pub fn vortex_array::arrays::dict::Dict::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::arrays::dict::Dict::OperationsVTable = vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::dict::Dict::dtype(array: &vortex_array::arrays::dict::DictData) -> &vortex_array::dtype::DType -pub type vortex_array::arrays::dict::Dict::ValidityVTable = vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::dict::Dict::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::dict::Dict::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::dict::Dict::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::Dict::array_eq(array: &vortex_array::arrays::dict::DictArray, other: &vortex_array::arrays::dict::DictArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::dict::Dict::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::dict::Dict::array_hash(array: &vortex_array::arrays::dict::DictArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::dict::Dict::len(array: &vortex_array::arrays::dict::DictData) -> usize -pub fn vortex_array::arrays::dict::Dict::buffer(_array: &vortex_array::arrays::dict::DictArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::dict::Dict::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::dict::Dict::buffer_name(_array: &vortex_array::arrays::dict::DictArray, _idx: usize) -> core::option::Option +pub fn vortex_array::arrays::dict::Dict::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::dict::Dict::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::dict::Dict::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::dict::Dict::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::Dict::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::dict::Dict::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::Dict::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::dict::Dict::dtype(array: &vortex_array::arrays::dict::DictArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::dict::Dict::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::dict::Dict::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::dict::Dict::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::stats(array: &vortex_array::arrays::dict::DictData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::dict::Dict::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::dict::Dict::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::dict::Dict::len(array: &vortex_array::arrays::dict::DictArray) -> usize +pub fn vortex_array::arrays::dict::Dict::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::dict::Dict::metadata(array: &vortex_array::arrays::dict::DictArray) -> vortex_error::VortexResult +impl vortex_array::ValidityVTable for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::dict::Dict::nbuffers(_array: &vortex_array::arrays::dict::DictArray) -> usize +pub fn vortex_array::arrays::dict::Dict::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::dict::Dict::nchildren(array: &Self::Array) -> usize +impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::dict::Dict::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, indices: &vortex_array::ArrayRef, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::Dict::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::dict::Dict::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::dict::Dict::filter(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::Dict::slot_name(_array: &vortex_array::arrays::dict::DictArray, idx: usize) -> alloc::string::String +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::dict::Dict::slots(array: &vortex_array::arrays::dict::DictArray) -> &[core::option::Option] +pub fn vortex_array::arrays::dict::Dict::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::Dict::stats(array: &vortex_array::arrays::dict::DictArray) -> vortex_array::stats::StatsSetRef<'_> +impl vortex_array::scalar_fn::fns::binary::CompareKernel for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::dict::Dict::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::dict::Dict::compare(lhs: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::Dict::with_slots(array: &mut vortex_array::arrays::dict::DictArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::dict::Dict -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::dict::Dict::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::Dict::validity(array: &vortex_array::arrays::dict::DictArray) -> vortex_error::VortexResult +impl vortex_array::scalar_fn::fns::fill_null::FillNullKernel for vortex_array::arrays::dict::Dict -pub struct vortex_array::arrays::dict::DictArray +pub fn vortex_array::arrays::dict::Dict::fill_null(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::arrays::dict::DictArray +impl vortex_array::scalar_fn::fns::like::LikeReduce for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::dict::DictArray::codes(&self) -> &vortex_array::ArrayRef +pub fn vortex_array::arrays::dict::Dict::like(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, pattern: &vortex_array::ArrayRef, options: vortex_array::scalar_fn::fns::like::LikeOptions) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::DictArray::compute_referenced_values_mask(&self, referenced: bool) -> vortex_error::VortexResult +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::dict::DictArray::has_all_values_referenced(&self) -> bool +pub fn vortex_array::arrays::dict::Dict::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::DictArray::into_parts(self) -> vortex_array::arrays::dict::DictArrayParts +pub struct vortex_array::arrays::dict::DictArrayParts -pub fn vortex_array::arrays::dict::DictArray::new(codes: vortex_array::ArrayRef, values: vortex_array::ArrayRef) -> Self +pub vortex_array::arrays::dict::DictArrayParts::codes: vortex_array::ArrayRef -pub unsafe fn vortex_array::arrays::dict::DictArray::new_unchecked(codes: vortex_array::ArrayRef, values: vortex_array::ArrayRef) -> Self +pub vortex_array::arrays::dict::DictArrayParts::dtype: vortex_array::dtype::DType -pub unsafe fn vortex_array::arrays::dict::DictArray::set_all_values_referenced(self, all_values_referenced: bool) -> Self +pub vortex_array::arrays::dict::DictArrayParts::values: vortex_array::ArrayRef -pub fn vortex_array::arrays::dict::DictArray::try_new(codes: vortex_array::ArrayRef, values: vortex_array::ArrayRef) -> vortex_error::VortexResult +pub struct vortex_array::arrays::dict::DictData -pub fn vortex_array::arrays::dict::DictArray::validate_all_values_referenced(&self) -> vortex_error::VortexResult<()> +impl vortex_array::arrays::dict::DictData -pub fn vortex_array::arrays::dict::DictArray::values(&self) -> &vortex_array::ArrayRef +pub fn vortex_array::arrays::dict::DictData::codes(&self) -> &vortex_array::ArrayRef -impl vortex_array::arrays::dict::DictArray +pub fn vortex_array::arrays::dict::DictData::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::dict::DictArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::dict::DictData::has_all_values_referenced(&self) -> bool -impl core::clone::Clone for vortex_array::arrays::dict::DictArray +pub fn vortex_array::arrays::dict::DictData::into_parts(self) -> vortex_array::arrays::dict::DictArrayParts -pub fn vortex_array::arrays::dict::DictArray::clone(&self) -> vortex_array::arrays::dict::DictArray +pub fn vortex_array::arrays::dict::DictData::is_empty(&self) -> bool -impl core::convert::AsRef for vortex_array::arrays::dict::DictArray +pub fn vortex_array::arrays::dict::DictData::len(&self) -> usize -pub fn vortex_array::arrays::dict::DictArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::dict::DictData::new(codes: vortex_array::ArrayRef, values: vortex_array::ArrayRef) -> Self -impl core::convert::From for vortex_array::ArrayRef +pub unsafe fn vortex_array::arrays::dict::DictData::new_unchecked(codes: vortex_array::ArrayRef, values: vortex_array::ArrayRef) -> Self -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::dict::DictArray) -> vortex_array::ArrayRef +pub unsafe fn vortex_array::arrays::dict::DictData::set_all_values_referenced(self, all_values_referenced: bool) -> Self -impl core::fmt::Debug for vortex_array::arrays::dict::DictArray +pub fn vortex_array::arrays::dict::DictData::try_new(codes: vortex_array::ArrayRef, values: vortex_array::ArrayRef) -> vortex_error::VortexResult -pub fn vortex_array::arrays::dict::DictArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::dict::DictData::validate_all_values_referenced(&self) -> vortex_error::VortexResult<()> -impl core::ops::deref::Deref for vortex_array::arrays::dict::DictArray +pub fn vortex_array::arrays::dict::DictData::values(&self) -> &vortex_array::ArrayRef -pub type vortex_array::arrays::dict::DictArray::Target = dyn vortex_array::DynArray +impl vortex_array::arrays::dict::DictData -pub fn vortex_array::arrays::dict::DictArray::deref(&self) -> &Self::Target +pub fn vortex_array::arrays::dict::DictData::compute_referenced_values_mask(&self, referenced: bool) -> vortex_error::VortexResult -impl vortex_array::IntoArray for vortex_array::arrays::dict::DictArray +impl core::clone::Clone for vortex_array::arrays::dict::DictData -pub fn vortex_array::arrays::dict::DictArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::dict::DictData::clone(&self) -> vortex_array::arrays::dict::DictData -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::dictionary_array::DictionaryArray> for vortex_array::arrays::dict::DictArray +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::dict::DictArray::from_arrow(array: &arrow_array::array::dictionary_array::DictionaryArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::dict::DictData) -> vortex_array::ArrayRef -pub struct vortex_array::arrays::dict::DictArrayParts +impl core::fmt::Debug for vortex_array::arrays::dict::DictData -pub vortex_array::arrays::dict::DictArrayParts::codes: vortex_array::ArrayRef +pub fn vortex_array::arrays::dict::DictData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub vortex_array::arrays::dict::DictArrayParts::dtype: vortex_array::dtype::DType +impl vortex_array::IntoArray for vortex_array::arrays::dict::DictData -pub vortex_array::arrays::dict::DictArrayParts::values: vortex_array::ArrayRef +pub fn vortex_array::arrays::dict::DictData::into_array(self) -> vortex_array::ArrayRef pub struct vortex_array::arrays::dict::DictMetadata @@ -2012,7 +1938,7 @@ impl vortex_array::kernel::ExecuteParentKernel for vortex_array::arrays::d pub type vortex_array::arrays::dict::TakeExecuteAdaptor::Parent = vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::dict::TakeExecuteAdaptor::execute_parent(&self, array: &::Array, parent: ::Match, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::TakeExecuteAdaptor::execute_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: ::Match, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> pub struct vortex_array::arrays::dict::TakeReduceAdaptor(pub V) @@ -2028,89 +1954,91 @@ impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_arra pub type vortex_array::arrays::dict::TakeReduceAdaptor::Parent = vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::dict::TakeReduceAdaptor::reduce_parent(&self, array: &::Array, parent: &vortex_array::arrays::dict::DictArray, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::TakeReduceAdaptor::reduce_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, child_idx: usize) -> vortex_error::VortexResult> -pub trait vortex_array::arrays::dict::TakeExecute: vortex_array::vtable::VTable +pub trait vortex_array::arrays::dict::TakeExecute: vortex_array::VTable -pub fn vortex_array::arrays::dict::TakeExecute::take(array: &Self::Array, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::TakeExecute::take(array: vortex_array::ArrayView<'_, Self>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::Bool -pub fn vortex_array::arrays::Bool::take(array: &vortex_array::arrays::BoolArray, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Bool::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::Chunked -pub fn vortex_array::arrays::Chunked::take(array: &vortex_array::arrays::ChunkedArray, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Chunked::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::Chunked>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::Decimal -pub fn vortex_array::arrays::Decimal::take(array: &vortex_array::arrays::DecimalArray, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Decimal::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::Decimal>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::Extension -pub fn vortex_array::arrays::Extension::take(array: &vortex_array::arrays::ExtensionArray, indices: &vortex_array::ArrayRef, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Extension::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::Extension>, indices: &vortex_array::ArrayRef, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::FixedSizeList -pub fn vortex_array::arrays::FixedSizeList::take(array: &vortex_array::arrays::FixedSizeListArray, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::FixedSizeList::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::FixedSizeList>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::List -pub fn vortex_array::arrays::List::take(array: &vortex_array::arrays::ListArray, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::List::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::List>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::Primitive -pub fn vortex_array::arrays::Primitive::take(array: &vortex_array::arrays::PrimitiveArray, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Primitive::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::Primitive>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::VarBin -pub fn vortex_array::arrays::VarBin::take(array: &vortex_array::arrays::VarBinArray, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBin>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::VarBinView -pub fn vortex_array::arrays::VarBinView::take(array: &vortex_array::arrays::VarBinViewArray, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBinView::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBinView>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::dict::Dict::take(array: &vortex_array::arrays::dict::DictArray, indices: &vortex_array::ArrayRef, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, indices: &vortex_array::ArrayRef, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::patched::Patched -pub fn vortex_array::arrays::patched::Patched::take(array: &Self::Array, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::patched::Patched::take(array: vortex_array::ArrayView<'_, Self>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub trait vortex_array::arrays::dict::TakeReduce: vortex_array::vtable::VTable +pub trait vortex_array::arrays::dict::TakeReduce: vortex_array::VTable -pub fn vortex_array::arrays::dict::TakeReduce::take(array: &Self::Array, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::TakeReduce::take(array: vortex_array::ArrayView<'_, Self>, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> impl vortex_array::arrays::dict::TakeReduce for vortex_array::arrays::Constant -pub fn vortex_array::arrays::Constant::take(array: &vortex_array::arrays::ConstantArray, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Constant::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::Constant>, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> impl vortex_array::arrays::dict::TakeReduce for vortex_array::arrays::ListView -pub fn vortex_array::arrays::ListView::take(array: &vortex_array::arrays::ListViewArray, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::ListView::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::ListView>, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> impl vortex_array::arrays::dict::TakeReduce for vortex_array::arrays::Masked -pub fn vortex_array::arrays::Masked::take(array: &vortex_array::arrays::MaskedArray, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Masked::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> impl vortex_array::arrays::dict::TakeReduce for vortex_array::arrays::Struct -pub fn vortex_array::arrays::Struct::take(array: &vortex_array::arrays::StructArray, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::Struct>, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> impl vortex_array::arrays::dict::TakeReduce for vortex_array::arrays::null::Null -pub fn vortex_array::arrays::null::Null::take(array: &vortex_array::arrays::null::NullArray, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::null::Null::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::null::Null>, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> pub fn vortex_array::arrays::dict::take_canonical(values: vortex_array::Canonical, codes: &vortex_array::arrays::PrimitiveArray, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub type vortex_array::arrays::dict::DictArray = vortex_array::Array + pub mod vortex_array::arrays::extension pub struct vortex_array::arrays::extension::Extension impl vortex_array::arrays::Extension -pub const vortex_array::arrays::Extension::ID: vortex_array::vtable::ArrayId +pub const vortex_array::arrays::Extension::ID: vortex_array::ArrayId impl core::clone::Clone for vortex_array::arrays::Extension @@ -2120,159 +2048,135 @@ impl core::fmt::Debug for vortex_array::arrays::Extension pub fn vortex_array::arrays::Extension::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::Extension - -pub fn vortex_array::arrays::Extension::take(array: &vortex_array::arrays::ExtensionArray, indices: &vortex_array::ArrayRef, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::Extension - -pub fn vortex_array::arrays::Extension::filter(array: &vortex_array::arrays::ExtensionArray, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> - -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Extension - -pub fn vortex_array::arrays::Extension::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::binary::CompareKernel for vortex_array::arrays::Extension - -pub fn vortex_array::arrays::Extension::compare(lhs: &vortex_array::arrays::ExtensionArray, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::Extension - -pub fn vortex_array::arrays::Extension::cast(array: &vortex_array::arrays::ExtensionArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Extension +impl vortex_array::OperationsVTable for vortex_array::arrays::Extension -pub fn vortex_array::arrays::Extension::mask(array: &vortex_array::arrays::ExtensionArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Extension::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Extension>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Extension +impl vortex_array::VTable for vortex_array::arrays::Extension -pub fn vortex_array::arrays::Extension::scalar_at(array: &vortex_array::arrays::ExtensionArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult - -impl vortex_array::vtable::VTable for vortex_array::arrays::Extension - -pub type vortex_array::arrays::Extension::Array = vortex_array::arrays::ExtensionArray +pub type vortex_array::arrays::Extension::ArrayData = vortex_array::arrays::extension::ExtensionData pub type vortex_array::arrays::Extension::Metadata = vortex_array::EmptyMetadata pub type vortex_array::arrays::Extension::OperationsVTable = vortex_array::arrays::Extension -pub type vortex_array::arrays::Extension::ValidityVTable = vortex_array::vtable::ValidityVTableFromChild +pub type vortex_array::arrays::Extension::ValidityVTable = vortex_array::ValidityVTableFromChild -pub fn vortex_array::arrays::Extension::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Extension::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Extension::array_eq(array: &vortex_array::arrays::ExtensionArray, other: &vortex_array::arrays::ExtensionArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Extension::array_eq(array: &vortex_array::arrays::extension::ExtensionData, other: &vortex_array::arrays::extension::ExtensionData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::Extension::array_hash(array: &vortex_array::arrays::ExtensionArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Extension::array_hash(array: &vortex_array::arrays::extension::ExtensionData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::Extension::buffer(_array: &vortex_array::arrays::ExtensionArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Extension::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Extension::buffer_name(_array: &vortex_array::arrays::ExtensionArray, _idx: usize) -> core::option::Option +pub fn vortex_array::arrays::Extension::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Extension::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Extension::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Extension::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Extension::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Extension::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Extension::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String pub fn vortex_array::arrays::Extension::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Extension::dtype(array: &vortex_array::arrays::ExtensionArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::Extension::dtype(array: &vortex_array::arrays::extension::ExtensionData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::Extension::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Extension::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Extension::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Extension::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Extension::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::Extension::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Extension::len(array: &vortex_array::arrays::ExtensionArray) -> usize +pub fn vortex_array::arrays::Extension::len(array: &vortex_array::arrays::extension::ExtensionData) -> usize -pub fn vortex_array::arrays::Extension::metadata(_array: &vortex_array::arrays::ExtensionArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Extension::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Extension::nbuffers(_array: &vortex_array::arrays::ExtensionArray) -> usize +pub fn vortex_array::arrays::Extension::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Extension::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::Extension::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Extension::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Extension::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Extension::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Extension::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> pub fn vortex_array::arrays::Extension::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Extension::slot_name(_array: &vortex_array::arrays::ExtensionArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Extension::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Extension::slots(array: &vortex_array::arrays::ExtensionArray) -> &[core::option::Option] +pub fn vortex_array::arrays::Extension::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::Extension::stats(array: &vortex_array::arrays::ExtensionArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::Extension::stats(array: &vortex_array::arrays::extension::ExtensionData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Extension::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::Extension::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::Extension::with_slots(array: &mut Self::Array, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Extension::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl vortex_array::vtable::ValidityChild for vortex_array::arrays::Extension +impl vortex_array::ValidityChild for vortex_array::arrays::Extension -pub fn vortex_array::arrays::Extension::validity_child(array: &vortex_array::arrays::ExtensionArray) -> &vortex_array::ArrayRef +pub fn vortex_array::arrays::Extension::validity_child(array: &vortex_array::arrays::extension::ExtensionData) -> &vortex_array::ArrayRef -pub struct vortex_array::arrays::extension::ExtensionArray +impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::Extension -impl vortex_array::arrays::ExtensionArray +pub fn vortex_array::arrays::Extension::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::Extension>, indices: &vortex_array::ArrayRef, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ExtensionArray::ext_dtype(&self) -> &vortex_array::dtype::extension::ExtDTypeRef +impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::Extension -pub fn vortex_array::arrays::ExtensionArray::new(ext_dtype: vortex_array::dtype::extension::ExtDTypeRef, storage_array: vortex_array::ArrayRef) -> Self +pub fn vortex_array::arrays::Extension::filter(array: vortex_array::ArrayView<'_, vortex_array::arrays::Extension>, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> -pub unsafe fn vortex_array::arrays::ExtensionArray::new_unchecked(ext_dtype: vortex_array::dtype::extension::ExtDTypeRef, storage_array: vortex_array::ArrayRef) -> Self +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Extension -pub fn vortex_array::arrays::ExtensionArray::storage_array(&self) -> &vortex_array::ArrayRef +pub fn vortex_array::arrays::Extension::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ExtensionArray::try_new(ext_dtype: vortex_array::dtype::extension::ExtDTypeRef, storage_array: vortex_array::ArrayRef) -> vortex_error::VortexResult +impl vortex_array::scalar_fn::fns::binary::CompareKernel for vortex_array::arrays::Extension -impl vortex_array::arrays::ExtensionArray +pub fn vortex_array::arrays::Extension::compare(lhs: vortex_array::ArrayView<'_, vortex_array::arrays::Extension>, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ExtensionArray::to_array(&self) -> vortex_array::ArrayRef +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::Extension -impl core::clone::Clone for vortex_array::arrays::ExtensionArray +pub fn vortex_array::arrays::Extension::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::Extension>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ExtensionArray::clone(&self) -> vortex_array::arrays::ExtensionArray +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Extension -impl core::convert::AsRef for vortex_array::arrays::ExtensionArray +pub fn vortex_array::arrays::Extension::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::Extension>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ExtensionArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub struct vortex_array::arrays::extension::ExtensionData -impl core::convert::From<&vortex_array::arrays::datetime::TemporalArray> for vortex_array::arrays::ExtensionArray +impl vortex_array::arrays::extension::ExtensionData -pub fn vortex_array::arrays::ExtensionArray::from(value: &vortex_array::arrays::datetime::TemporalArray) -> Self +pub fn vortex_array::arrays::extension::ExtensionData::dtype(&self) -> &vortex_array::dtype::DType -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::arrays::extension::ExtensionData::ext_dtype(&self) -> &vortex_array::dtype::extension::ExtDTypeRef -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::ExtensionArray) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::extension::ExtensionData::is_empty(&self) -> bool -impl core::convert::From for vortex_array::arrays::ExtensionArray +pub fn vortex_array::arrays::extension::ExtensionData::len(&self) -> usize -pub fn vortex_array::arrays::ExtensionArray::from(value: vortex_array::arrays::datetime::TemporalArray) -> Self +pub fn vortex_array::arrays::extension::ExtensionData::new(ext_dtype: vortex_array::dtype::extension::ExtDTypeRef, storage_array: vortex_array::ArrayRef) -> Self -impl core::convert::TryFrom for vortex_array::arrays::datetime::TemporalArray +pub unsafe fn vortex_array::arrays::extension::ExtensionData::new_unchecked(ext_dtype: vortex_array::dtype::extension::ExtDTypeRef, storage_array: vortex_array::ArrayRef) -> Self -pub type vortex_array::arrays::datetime::TemporalArray::Error = vortex_error::VortexError +pub fn vortex_array::arrays::extension::ExtensionData::storage_array(&self) -> &vortex_array::ArrayRef -pub fn vortex_array::arrays::datetime::TemporalArray::try_from(ext: vortex_array::arrays::ExtensionArray) -> core::result::Result +pub fn vortex_array::arrays::extension::ExtensionData::try_new(ext_dtype: vortex_array::dtype::extension::ExtDTypeRef, storage_array: vortex_array::ArrayRef) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::arrays::ExtensionArray +impl core::clone::Clone for vortex_array::arrays::extension::ExtensionData -pub fn vortex_array::arrays::ExtensionArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::extension::ExtensionData::clone(&self) -> vortex_array::arrays::extension::ExtensionData -impl core::ops::deref::Deref for vortex_array::arrays::ExtensionArray +impl core::convert::From for vortex_array::ArrayRef -pub type vortex_array::arrays::ExtensionArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::extension::ExtensionData) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::ExtensionArray::deref(&self) -> &Self::Target +impl core::fmt::Debug for vortex_array::arrays::extension::ExtensionData -impl vortex_array::Executable for vortex_array::arrays::ExtensionArray +pub fn vortex_array::arrays::extension::ExtensionData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::ExtensionArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::IntoArray for vortex_array::arrays::extension::ExtensionData -impl vortex_array::IntoArray for vortex_array::arrays::ExtensionArray +pub fn vortex_array::arrays::extension::ExtensionData::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::ExtensionArray::into_array(self) -> vortex_array::ArrayRef +pub type vortex_array::arrays::extension::ExtensionArray = vortex_array::Array pub mod vortex_array::arrays::filter @@ -2280,7 +2184,7 @@ pub struct vortex_array::arrays::filter::Filter impl vortex_array::arrays::Filter -pub const vortex_array::arrays::Filter::ID: vortex_array::vtable::ArrayId +pub const vortex_array::arrays::Filter::ID: vortex_array::ArrayId impl core::clone::Clone for vortex_array::arrays::Filter @@ -2290,13 +2194,13 @@ impl core::fmt::Debug for vortex_array::arrays::Filter pub fn vortex_array::arrays::Filter::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Filter +impl vortex_array::OperationsVTable for vortex_array::arrays::Filter -pub fn vortex_array::arrays::Filter::scalar_at(array: &vortex_array::arrays::FilterArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Filter::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Filter>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::vtable::VTable for vortex_array::arrays::Filter +impl vortex_array::VTable for vortex_array::arrays::Filter -pub type vortex_array::arrays::Filter::Array = vortex_array::arrays::FilterArray +pub type vortex_array::arrays::Filter::ArrayData = vortex_array::arrays::filter::FilterData pub type vortex_array::arrays::Filter::Metadata = vortex_array::arrays::filter::vtable::FilterMetadata @@ -2304,109 +2208,103 @@ pub type vortex_array::arrays::Filter::OperationsVTable = vortex_array::arrays:: pub type vortex_array::arrays::Filter::ValidityVTable = vortex_array::arrays::Filter -pub fn vortex_array::arrays::Filter::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Filter::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Filter::array_eq(array: &vortex_array::arrays::FilterArray, other: &vortex_array::arrays::FilterArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Filter::array_eq(array: &vortex_array::arrays::filter::FilterData, other: &vortex_array::arrays::filter::FilterData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::Filter::array_hash(array: &vortex_array::arrays::FilterArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Filter::array_hash(array: &vortex_array::arrays::filter::FilterData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::Filter::buffer(_array: &Self::Array, _idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Filter::buffer(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Filter::buffer_name(_array: &Self::Array, _idx: usize) -> core::option::Option +pub fn vortex_array::arrays::Filter::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Filter::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::filter::vtable::FilterMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Filter::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::filter::vtable::FilterMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Filter::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Filter::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Filter::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Filter::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String pub fn vortex_array::arrays::Filter::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Filter::dtype(array: &vortex_array::arrays::FilterArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::Filter::dtype(array: &vortex_array::arrays::filter::FilterData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::Filter::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Filter::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Filter::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Filter::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::Filter::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Filter::len(array: &vortex_array::arrays::FilterArray) -> usize +pub fn vortex_array::arrays::Filter::len(array: &vortex_array::arrays::filter::FilterData) -> usize -pub fn vortex_array::arrays::Filter::metadata(array: &Self::Array) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Filter::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Filter::nbuffers(_array: &Self::Array) -> usize +pub fn vortex_array::arrays::Filter::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Filter::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::Filter::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Filter::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Filter::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> pub fn vortex_array::arrays::Filter::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Filter::slot_name(_array: &Self::Array, idx: usize) -> alloc::string::String - -pub fn vortex_array::arrays::Filter::slots(array: &Self::Array) -> &[core::option::Option] - -pub fn vortex_array::arrays::Filter::stats(array: &vortex_array::arrays::FilterArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::Filter::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Filter::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::Filter::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::Filter::with_slots(array: &mut Self::Array, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Filter::stats(array: &vortex_array::arrays::filter::FilterData) -> &vortex_array::stats::ArrayStats -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Filter +pub fn vortex_array::arrays::Filter::vtable(_array: &vortex_array::arrays::filter::FilterData) -> &Self -pub fn vortex_array::arrays::Filter::validity(array: &vortex_array::arrays::FilterArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Filter::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub struct vortex_array::arrays::filter::FilterArray +impl vortex_array::ValidityVTable for vortex_array::arrays::Filter -impl vortex_array::arrays::FilterArray +pub fn vortex_array::arrays::Filter::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Filter>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::FilterArray::child(&self) -> &vortex_array::ArrayRef - -pub fn vortex_array::arrays::FilterArray::filter_mask(&self) -> &vortex_mask::Mask +pub struct vortex_array::arrays::filter::FilterArrayParts -pub fn vortex_array::arrays::FilterArray::into_parts(self) -> vortex_array::arrays::filter::FilterArrayParts +pub vortex_array::arrays::filter::FilterArrayParts::child: vortex_array::ArrayRef -pub fn vortex_array::arrays::FilterArray::new(array: vortex_array::ArrayRef, mask: vortex_mask::Mask) -> Self +pub vortex_array::arrays::filter::FilterArrayParts::mask: vortex_mask::Mask -pub fn vortex_array::arrays::FilterArray::try_new(array: vortex_array::ArrayRef, mask: vortex_mask::Mask) -> vortex_error::VortexResult +pub struct vortex_array::arrays::filter::FilterData -impl vortex_array::arrays::FilterArray +impl vortex_array::arrays::filter::FilterData -pub fn vortex_array::arrays::FilterArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::filter::FilterData::child(&self) -> &vortex_array::ArrayRef -impl core::clone::Clone for vortex_array::arrays::FilterArray +pub fn vortex_array::arrays::filter::FilterData::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::FilterArray::clone(&self) -> vortex_array::arrays::FilterArray +pub fn vortex_array::arrays::filter::FilterData::filter_mask(&self) -> &vortex_mask::Mask -impl core::convert::AsRef for vortex_array::arrays::FilterArray +pub fn vortex_array::arrays::filter::FilterData::is_empty(&self) -> bool -pub fn vortex_array::arrays::FilterArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::filter::FilterData::len(&self) -> usize -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::arrays::filter::FilterData::new(array: vortex_array::ArrayRef, mask: vortex_mask::Mask) -> Self -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::FilterArray) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::filter::FilterData::try_new(array: vortex_array::ArrayRef, mask: vortex_mask::Mask) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::arrays::FilterArray +impl vortex_array::arrays::filter::FilterData -pub fn vortex_array::arrays::FilterArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::filter::FilterData::into_parts(self) -> vortex_array::arrays::filter::FilterArrayParts -impl core::ops::deref::Deref for vortex_array::arrays::FilterArray +impl core::clone::Clone for vortex_array::arrays::filter::FilterData -pub type vortex_array::arrays::FilterArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::arrays::filter::FilterData::clone(&self) -> vortex_array::arrays::filter::FilterData -pub fn vortex_array::arrays::FilterArray::deref(&self) -> &Self::Target +impl core::convert::From for vortex_array::ArrayRef -impl vortex_array::IntoArray for vortex_array::arrays::FilterArray +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::filter::FilterData) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::FilterArray::into_array(self) -> vortex_array::ArrayRef +impl core::fmt::Debug for vortex_array::arrays::filter::FilterData -pub struct vortex_array::arrays::filter::FilterArrayParts +pub fn vortex_array::arrays::filter::FilterData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub vortex_array::arrays::filter::FilterArrayParts::child: vortex_array::ArrayRef +impl vortex_array::IntoArray for vortex_array::arrays::filter::FilterData -pub vortex_array::arrays::filter::FilterArrayParts::mask: vortex_mask::Mask +pub fn vortex_array::arrays::filter::FilterData::into_array(self) -> vortex_array::ArrayRef pub struct vortex_array::arrays::filter::FilterExecuteAdaptor(pub V) @@ -2422,7 +2320,7 @@ impl vortex_array::kernel::ExecuteParentKernel for vortex_array::arrays::f pub type vortex_array::arrays::filter::FilterExecuteAdaptor::Parent = vortex_array::arrays::Filter -pub fn vortex_array::arrays::filter::FilterExecuteAdaptor::execute_parent(&self, array: &::Array, parent: ::Match, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::filter::FilterExecuteAdaptor::execute_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: ::Match, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> pub struct vortex_array::arrays::filter::FilterReduceAdaptor(pub V) @@ -2438,55 +2336,57 @@ impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_arra pub type vortex_array::arrays::filter::FilterReduceAdaptor::Parent = vortex_array::arrays::Filter -pub fn vortex_array::arrays::filter::FilterReduceAdaptor::reduce_parent(&self, array: &::Array, parent: &vortex_array::arrays::FilterArray, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::filter::FilterReduceAdaptor::reduce_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::ArrayView<'_, vortex_array::arrays::Filter>, child_idx: usize) -> vortex_error::VortexResult> -pub trait vortex_array::arrays::filter::FilterKernel: vortex_array::vtable::VTable +pub trait vortex_array::arrays::filter::FilterKernel: vortex_array::VTable -pub fn vortex_array::arrays::filter::FilterKernel::filter(array: &Self::Array, mask: &vortex_mask::Mask, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::filter::FilterKernel::filter(array: vortex_array::ArrayView<'_, Self>, mask: &vortex_mask::Mask, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> impl vortex_array::arrays::filter::FilterKernel for vortex_array::arrays::Chunked -pub fn vortex_array::arrays::Chunked::filter(array: &vortex_array::arrays::ChunkedArray, mask: &vortex_mask::Mask, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Chunked::filter(array: vortex_array::ArrayView<'_, vortex_array::arrays::Chunked>, mask: &vortex_mask::Mask, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> impl vortex_array::arrays::filter::FilterKernel for vortex_array::arrays::List -pub fn vortex_array::arrays::List::filter(array: &vortex_array::arrays::ListArray, mask: &vortex_mask::Mask, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::List::filter(array: vortex_array::ArrayView<'_, vortex_array::arrays::List>, mask: &vortex_mask::Mask, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> impl vortex_array::arrays::filter::FilterKernel for vortex_array::arrays::VarBin -pub fn vortex_array::arrays::VarBin::filter(array: &vortex_array::arrays::VarBinArray, mask: &vortex_mask::Mask, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::filter(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBin>, mask: &vortex_mask::Mask, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub trait vortex_array::arrays::filter::FilterReduce: vortex_array::vtable::VTable +pub trait vortex_array::arrays::filter::FilterReduce: vortex_array::VTable -pub fn vortex_array::arrays::filter::FilterReduce::filter(array: &Self::Array, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::filter::FilterReduce::filter(array: vortex_array::ArrayView<'_, Self>, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::Bool -pub fn vortex_array::arrays::Bool::filter(array: &vortex_array::arrays::BoolArray, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Bool::filter(array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::Constant -pub fn vortex_array::arrays::Constant::filter(array: &vortex_array::arrays::ConstantArray, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Constant::filter(array: vortex_array::ArrayView<'_, vortex_array::arrays::Constant>, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::Extension -pub fn vortex_array::arrays::Extension::filter(array: &vortex_array::arrays::ExtensionArray, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Extension::filter(array: vortex_array::ArrayView<'_, vortex_array::arrays::Extension>, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::Masked -pub fn vortex_array::arrays::Masked::filter(array: &vortex_array::arrays::MaskedArray, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Masked::filter(array: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::dict::Dict::filter(array: &vortex_array::arrays::dict::DictArray, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::filter(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::null::Null -pub fn vortex_array::arrays::null::Null::filter(_array: &vortex_array::arrays::null::NullArray, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::null::Null::filter(_array: vortex_array::ArrayView<'_, vortex_array::arrays::null::Null>, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::patched::Patched -pub fn vortex_array::arrays::patched::Patched::filter(array: &Self::Array, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::patched::Patched::filter(array: vortex_array::ArrayView<'_, Self>, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> + +pub type vortex_array::arrays::filter::FilterArray = vortex_array::Array pub mod vortex_array::arrays::fixed_size_list @@ -2494,7 +2394,7 @@ pub struct vortex_array::arrays::fixed_size_list::FixedSizeList impl vortex_array::arrays::FixedSizeList -pub const vortex_array::arrays::FixedSizeList::ID: vortex_array::vtable::ArrayId +pub const vortex_array::arrays::FixedSizeList::ID: vortex_array::ArrayId impl core::clone::Clone for vortex_array::arrays::FixedSizeList @@ -2504,143 +2404,139 @@ impl core::fmt::Debug for vortex_array::arrays::FixedSizeList pub fn vortex_array::arrays::FixedSizeList::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::FixedSizeList - -pub fn vortex_array::arrays::FixedSizeList::take(array: &vortex_array::arrays::FixedSizeListArray, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::FixedSizeList +impl vortex_array::OperationsVTable for vortex_array::arrays::FixedSizeList -pub fn vortex_array::arrays::FixedSizeList::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::FixedSizeList::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::FixedSizeList>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::FixedSizeList +impl vortex_array::VTable for vortex_array::arrays::FixedSizeList -pub fn vortex_array::arrays::FixedSizeList::cast(array: &vortex_array::arrays::FixedSizeListArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub type vortex_array::arrays::FixedSizeList::ArrayData = vortex_array::arrays::fixed_size_list::FixedSizeListData -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::FixedSizeList +pub type vortex_array::arrays::FixedSizeList::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::arrays::FixedSizeList::mask(array: &vortex_array::arrays::FixedSizeListArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub type vortex_array::arrays::FixedSizeList::OperationsVTable = vortex_array::arrays::FixedSizeList -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::FixedSizeList +pub type vortex_array::arrays::FixedSizeList::ValidityVTable = vortex_array::arrays::FixedSizeList -pub fn vortex_array::arrays::FixedSizeList::scalar_at(array: &vortex_array::arrays::FixedSizeListArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl vortex_array::vtable::VTable for vortex_array::arrays::FixedSizeList +pub fn vortex_array::arrays::FixedSizeList::array_eq(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData, other: &vortex_array::arrays::fixed_size_list::FixedSizeListData, precision: vortex_array::Precision) -> bool -pub type vortex_array::arrays::FixedSizeList::Array = vortex_array::arrays::FixedSizeListArray +pub fn vortex_array::arrays::FixedSizeList::array_hash(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData, state: &mut H, precision: vortex_array::Precision) -pub type vortex_array::arrays::FixedSizeList::Metadata = vortex_array::EmptyMetadata +pub fn vortex_array::arrays::FixedSizeList::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub type vortex_array::arrays::FixedSizeList::OperationsVTable = vortex_array::arrays::FixedSizeList +pub fn vortex_array::arrays::FixedSizeList::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub type vortex_array::arrays::FixedSizeList::ValidityVTable = vortex_array::vtable::ValidityVTableFromValidityHelper +pub fn vortex_array::arrays::FixedSizeList::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::FixedSizeList::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::FixedSizeList::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::FixedSizeList::array_eq(array: &vortex_array::arrays::FixedSizeListArray, other: &vortex_array::arrays::FixedSizeListArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::FixedSizeList::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::FixedSizeList::array_hash(array: &vortex_array::arrays::FixedSizeListArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::FixedSizeList::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::FixedSizeList::buffer(_array: &vortex_array::arrays::FixedSizeListArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::FixedSizeList::dtype(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::FixedSizeList::buffer_name(_array: &vortex_array::arrays::FixedSizeListArray, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::FixedSizeList::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::FixedSizeList::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::FixedSizeList::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::FixedSizeList::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::FixedSizeList::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::FixedSizeList::len(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData) -> usize -pub fn vortex_array::arrays::FixedSizeList::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::FixedSizeList::dtype(array: &vortex_array::arrays::FixedSizeListArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::FixedSizeList::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::FixedSizeList::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::FixedSizeList::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::FixedSizeList::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::FixedSizeList::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::FixedSizeList::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::FixedSizeList::len(array: &vortex_array::arrays::FixedSizeListArray) -> usize +pub fn vortex_array::arrays::FixedSizeList::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::FixedSizeList::metadata(_array: &vortex_array::arrays::FixedSizeListArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::FixedSizeList::nbuffers(_array: &vortex_array::arrays::FixedSizeListArray) -> usize +pub fn vortex_array::arrays::FixedSizeList::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::FixedSizeList::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::FixedSizeList::stats(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::FixedSizeList::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::FixedSizeList::vtable(_array: &vortex_array::arrays::fixed_size_list::FixedSizeListData) -> &Self -pub fn vortex_array::arrays::FixedSizeList::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::FixedSizeList::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::FixedSizeList::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +impl vortex_array::ValidityVTable for vortex_array::arrays::FixedSizeList -pub fn vortex_array::arrays::FixedSizeList::slot_name(_array: &vortex_array::arrays::FixedSizeListArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::FixedSizeList::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::FixedSizeList>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::FixedSizeList::slots(array: &vortex_array::arrays::FixedSizeListArray) -> &[core::option::Option] +impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::FixedSizeList -pub fn vortex_array::arrays::FixedSizeList::stats(array: &vortex_array::arrays::FixedSizeListArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::FixedSizeList::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::FixedSizeList>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::FixedSizeList::vtable(_array: &Self::Array) -> &Self +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::FixedSizeList -pub fn vortex_array::arrays::FixedSizeList::with_slots(array: &mut vortex_array::arrays::FixedSizeListArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::FixedSizeList::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub struct vortex_array::arrays::fixed_size_list::FixedSizeListArray +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::FixedSizeList -impl vortex_array::arrays::FixedSizeListArray +pub fn vortex_array::arrays::FixedSizeList::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::FixedSizeList>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::FixedSizeListArray::elements(&self) -> &vortex_array::ArrayRef +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::FixedSizeList -pub fn vortex_array::arrays::FixedSizeListArray::fixed_size_list_elements_at(&self, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::FixedSizeList>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::FixedSizeListArray::into_parts(self) -> (vortex_array::ArrayRef, vortex_array::validity::Validity, vortex_array::dtype::DType) +pub struct vortex_array::arrays::fixed_size_list::FixedSizeListData -pub const fn vortex_array::arrays::FixedSizeListArray::list_size(&self) -> u32 +impl vortex_array::arrays::fixed_size_list::FixedSizeListData -pub fn vortex_array::arrays::FixedSizeListArray::new(elements: vortex_array::ArrayRef, list_size: u32, validity: vortex_array::validity::Validity, len: usize) -> Self +pub fn vortex_array::arrays::fixed_size_list::FixedSizeListData::dtype(&self) -> &vortex_array::dtype::DType -pub unsafe fn vortex_array::arrays::FixedSizeListArray::new_unchecked(elements: vortex_array::ArrayRef, list_size: u32, validity: vortex_array::validity::Validity, len: usize) -> Self +pub fn vortex_array::arrays::fixed_size_list::FixedSizeListData::elements(&self) -> &vortex_array::ArrayRef -pub fn vortex_array::arrays::FixedSizeListArray::try_new(elements: vortex_array::ArrayRef, list_size: u32, validity: vortex_array::validity::Validity, len: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::fixed_size_list::FixedSizeListData::into_parts(self) -> (vortex_array::ArrayRef, vortex_array::validity::Validity, vortex_array::dtype::DType) -pub fn vortex_array::arrays::FixedSizeListArray::validate(elements: &vortex_array::ArrayRef, len: usize, list_size: u32, validity: &vortex_array::validity::Validity) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::fixed_size_list::FixedSizeListData::is_empty(&self) -> bool -impl vortex_array::arrays::FixedSizeListArray +pub fn vortex_array::arrays::fixed_size_list::FixedSizeListData::len(&self) -> usize -pub fn vortex_array::arrays::FixedSizeListArray::to_array(&self) -> vortex_array::ArrayRef +pub const fn vortex_array::arrays::fixed_size_list::FixedSizeListData::list_size(&self) -> u32 -impl core::clone::Clone for vortex_array::arrays::FixedSizeListArray +pub fn vortex_array::arrays::fixed_size_list::FixedSizeListData::new(elements: vortex_array::ArrayRef, list_size: u32, validity: vortex_array::validity::Validity, len: usize) -> Self -pub fn vortex_array::arrays::FixedSizeListArray::clone(&self) -> vortex_array::arrays::FixedSizeListArray +pub unsafe fn vortex_array::arrays::fixed_size_list::FixedSizeListData::new_unchecked(elements: vortex_array::ArrayRef, list_size: u32, validity: vortex_array::validity::Validity, len: usize) -> Self -impl core::convert::AsRef for vortex_array::arrays::FixedSizeListArray +pub fn vortex_array::arrays::fixed_size_list::FixedSizeListData::try_new(elements: vortex_array::ArrayRef, list_size: u32, validity: vortex_array::validity::Validity, len: usize) -> vortex_error::VortexResult -pub fn vortex_array::arrays::FixedSizeListArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::fixed_size_list::FixedSizeListData::validate(elements: &vortex_array::ArrayRef, len: usize, list_size: u32, validity: &vortex_array::validity::Validity) -> vortex_error::VortexResult<()> -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::arrays::fixed_size_list::FixedSizeListData::validity(&self) -> vortex_array::validity::Validity -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::FixedSizeListArray) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::fixed_size_list::FixedSizeListData::validity_mask(&self) -> vortex_mask::Mask -impl core::fmt::Debug for vortex_array::arrays::FixedSizeListArray +impl vortex_array::arrays::fixed_size_list::FixedSizeListData -pub fn vortex_array::arrays::FixedSizeListArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::fixed_size_list::FixedSizeListData::fixed_size_list_elements_at(&self, index: usize) -> vortex_error::VortexResult -impl core::ops::deref::Deref for vortex_array::arrays::FixedSizeListArray +impl core::clone::Clone for vortex_array::arrays::fixed_size_list::FixedSizeListData -pub type vortex_array::arrays::FixedSizeListArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::arrays::fixed_size_list::FixedSizeListData::clone(&self) -> vortex_array::arrays::fixed_size_list::FixedSizeListData -pub fn vortex_array::arrays::FixedSizeListArray::deref(&self) -> &Self::Target +impl core::convert::From for vortex_array::ArrayRef -impl vortex_array::Executable for vortex_array::arrays::FixedSizeListArray +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::fixed_size_list::FixedSizeListData) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::FixedSizeListArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl core::fmt::Debug for vortex_array::arrays::fixed_size_list::FixedSizeListData -impl vortex_array::IntoArray for vortex_array::arrays::FixedSizeListArray +pub fn vortex_array::arrays::fixed_size_list::FixedSizeListData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::FixedSizeListArray::into_array(self) -> vortex_array::ArrayRef +impl vortex_array::IntoArray for vortex_array::arrays::fixed_size_list::FixedSizeListData -impl vortex_array::vtable::ValidityHelper for vortex_array::arrays::FixedSizeListArray +pub fn vortex_array::arrays::fixed_size_list::FixedSizeListData::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::FixedSizeListArray::validity(&self) -> vortex_array::validity::Validity +pub type vortex_array::arrays::fixed_size_list::FixedSizeListArray = vortex_array::Array pub mod vortex_array::arrays::list @@ -2648,7 +2544,7 @@ pub struct vortex_array::arrays::list::List impl vortex_array::arrays::List -pub const vortex_array::arrays::List::ID: vortex_array::vtable::ArrayId +pub const vortex_array::arrays::List::ID: vortex_array::ArrayId impl core::clone::Clone for vortex_array::arrays::List @@ -2658,161 +2554,161 @@ impl core::fmt::Debug for vortex_array::arrays::List pub fn vortex_array::arrays::List::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::List +impl vortex_array::OperationsVTable for vortex_array::arrays::List -pub fn vortex_array::arrays::List::take(array: &vortex_array::arrays::ListArray, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::List::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::List>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::arrays::filter::FilterKernel for vortex_array::arrays::List +impl vortex_array::VTable for vortex_array::arrays::List -pub fn vortex_array::arrays::List::filter(array: &vortex_array::arrays::ListArray, mask: &vortex_mask::Mask, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub type vortex_array::arrays::List::ArrayData = vortex_array::arrays::list::ListData -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::List +pub type vortex_array::arrays::List::Metadata = vortex_array::ProstMetadata -pub fn vortex_array::arrays::List::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub type vortex_array::arrays::List::OperationsVTable = vortex_array::arrays::List -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::List +pub type vortex_array::arrays::List::ValidityVTable = vortex_array::arrays::List -pub fn vortex_array::arrays::List::cast(array: &vortex_array::arrays::ListArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::List::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::List +pub fn vortex_array::arrays::List::array_eq(array: &vortex_array::arrays::list::ListData, other: &vortex_array::arrays::list::ListData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::List::mask(array: &vortex_array::arrays::ListArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::List::array_hash(array: &vortex_array::arrays::list::ListData, state: &mut H, precision: vortex_array::Precision) -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::List +pub fn vortex_array::arrays::List::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::List::scalar_at(array: &vortex_array::arrays::ListArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -impl vortex_array::vtable::VTable for vortex_array::arrays::List +pub fn vortex_array::arrays::List::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub type vortex_array::arrays::List::Array = vortex_array::arrays::ListArray +pub fn vortex_array::arrays::List::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub type vortex_array::arrays::List::Metadata = vortex_array::ProstMetadata +pub fn vortex_array::arrays::List::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub type vortex_array::arrays::List::OperationsVTable = vortex_array::arrays::List +pub fn vortex_array::arrays::List::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::arrays::List::ValidityVTable = vortex_array::vtable::ValidityVTableFromValidityHelper +pub fn vortex_array::arrays::List::dtype(array: &vortex_array::arrays::list::ListData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::List::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::List::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::List::array_eq(array: &vortex_array::arrays::ListArray, other: &vortex_array::arrays::ListArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::List::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::List::array_hash(array: &vortex_array::arrays::ListArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::List::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::List::buffer(_array: &vortex_array::arrays::ListArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::List::len(array: &vortex_array::arrays::list::ListData) -> usize -pub fn vortex_array::arrays::List::buffer_name(_array: &vortex_array::arrays::ListArray, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::List::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::List::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::List::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::List::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::List::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::List::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::List::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::List::dtype(array: &vortex_array::arrays::ListArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::List::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::List::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::List::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::List::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::List::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::List::stats(array: &vortex_array::arrays::list::ListData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::List::len(array: &vortex_array::arrays::ListArray) -> usize +pub fn vortex_array::arrays::List::vtable(_array: &vortex_array::arrays::list::ListData) -> &Self -pub fn vortex_array::arrays::List::metadata(array: &vortex_array::arrays::ListArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::List::nbuffers(_array: &vortex_array::arrays::ListArray) -> usize +impl vortex_array::ValidityVTable for vortex_array::arrays::List -pub fn vortex_array::arrays::List::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::List::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::List>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::List::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::List -pub fn vortex_array::arrays::List::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::List::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::List>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::List::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +impl vortex_array::arrays::filter::FilterKernel for vortex_array::arrays::List -pub fn vortex_array::arrays::List::slot_name(_array: &vortex_array::arrays::ListArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::List::filter(array: vortex_array::ArrayView<'_, vortex_array::arrays::List>, mask: &vortex_mask::Mask, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::List::slots(array: &vortex_array::arrays::ListArray) -> &[core::option::Option] +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::List -pub fn vortex_array::arrays::List::stats(array: &vortex_array::arrays::ListArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::List::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::List::vtable(_array: &Self::Array) -> &Self +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::List -pub fn vortex_array::arrays::List::with_slots(array: &mut vortex_array::arrays::ListArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::List::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::List>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub struct vortex_array::arrays::list::ListArray +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::List -impl vortex_array::arrays::ListArray +pub fn vortex_array::arrays::List::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::List>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ListArray::element_dtype(&self) -> &alloc::sync::Arc +pub struct vortex_array::arrays::list::ListArrayParts -pub fn vortex_array::arrays::ListArray::elements(&self) -> &vortex_array::ArrayRef +pub vortex_array::arrays::list::ListArrayParts::dtype: vortex_array::dtype::DType -pub fn vortex_array::arrays::ListArray::into_parts(self) -> vortex_array::arrays::list::ListArrayParts +pub vortex_array::arrays::list::ListArrayParts::elements: vortex_array::ArrayRef -pub fn vortex_array::arrays::ListArray::list_elements_at(&self, index: usize) -> vortex_error::VortexResult +pub vortex_array::arrays::list::ListArrayParts::offsets: vortex_array::ArrayRef -pub fn vortex_array::arrays::ListArray::new(elements: vortex_array::ArrayRef, offsets: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> Self +pub vortex_array::arrays::list::ListArrayParts::validity: vortex_array::validity::Validity -pub unsafe fn vortex_array::arrays::ListArray::new_unchecked(elements: vortex_array::ArrayRef, offsets: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> Self +pub struct vortex_array::arrays::list::ListData -pub fn vortex_array::arrays::ListArray::offset_at(&self, index: usize) -> vortex_error::VortexResult +impl vortex_array::arrays::list::ListData -pub fn vortex_array::arrays::ListArray::offsets(&self) -> &vortex_array::ArrayRef +pub fn vortex_array::arrays::list::ListData::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::ListArray::reset_offsets(&self, recurse: bool) -> vortex_error::VortexResult +pub fn vortex_array::arrays::list::ListData::element_dtype(&self) -> &alloc::sync::Arc -pub fn vortex_array::arrays::ListArray::sliced_elements(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::list::ListData::elements(&self) -> &vortex_array::ArrayRef -pub fn vortex_array::arrays::ListArray::try_new(elements: vortex_array::ArrayRef, offsets: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +pub fn vortex_array::arrays::list::ListData::into_parts(self) -> vortex_array::arrays::list::ListArrayParts -pub fn vortex_array::arrays::ListArray::validate(elements: &vortex_array::ArrayRef, offsets: &vortex_array::ArrayRef, validity: &vortex_array::validity::Validity) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::list::ListData::is_empty(&self) -> bool -impl vortex_array::arrays::ListArray +pub fn vortex_array::arrays::list::ListData::len(&self) -> usize -pub fn vortex_array::arrays::ListArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::list::ListData::list_elements_at(&self, index: usize) -> vortex_error::VortexResult -impl core::clone::Clone for vortex_array::arrays::ListArray +pub fn vortex_array::arrays::list::ListData::new(elements: vortex_array::ArrayRef, offsets: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::arrays::ListArray::clone(&self) -> vortex_array::arrays::ListArray +pub unsafe fn vortex_array::arrays::list::ListData::new_unchecked(elements: vortex_array::ArrayRef, offsets: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> Self -impl core::convert::AsRef for vortex_array::arrays::ListArray +pub fn vortex_array::arrays::list::ListData::offset_at(&self, index: usize) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::list::ListData::offsets(&self) -> &vortex_array::ArrayRef -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::arrays::list::ListData::sliced_elements(&self) -> vortex_error::VortexResult -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::ListArray) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::list::ListData::try_new(elements: vortex_array::ArrayRef, offsets: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::arrays::ListArray +pub fn vortex_array::arrays::list::ListData::validate(elements: &vortex_array::ArrayRef, offsets: &vortex_array::ArrayRef, validity: &vortex_array::validity::Validity) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::ListArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::list::ListData::validity(&self) -> vortex_array::validity::Validity -impl core::ops::deref::Deref for vortex_array::arrays::ListArray +pub fn vortex_array::arrays::list::ListData::validity_mask(&self) -> vortex_mask::Mask -pub type vortex_array::arrays::ListArray::Target = dyn vortex_array::DynArray +impl vortex_array::arrays::list::ListData -pub fn vortex_array::arrays::ListArray::deref(&self) -> &Self::Target +pub fn vortex_array::arrays::list::ListData::reset_offsets(&self, recurse: bool) -> vortex_error::VortexResult -impl vortex_array::IntoArray for vortex_array::arrays::ListArray +impl core::clone::Clone for vortex_array::arrays::list::ListData -pub fn vortex_array::arrays::ListArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::list::ListData::clone(&self) -> vortex_array::arrays::list::ListData -impl vortex_array::vtable::ValidityHelper for vortex_array::arrays::ListArray +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::ListArray::validity(&self) -> vortex_array::validity::Validity +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::list::ListData) -> vortex_array::ArrayRef -pub struct vortex_array::arrays::list::ListArrayParts +impl core::fmt::Debug for vortex_array::arrays::list::ListData -pub vortex_array::arrays::list::ListArrayParts::dtype: vortex_array::dtype::DType +pub fn vortex_array::arrays::list::ListData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub vortex_array::arrays::list::ListArrayParts::elements: vortex_array::ArrayRef +impl vortex_array::IntoArray for vortex_array::arrays::list::ListData -pub vortex_array::arrays::list::ListArrayParts::offsets: vortex_array::ArrayRef +pub fn vortex_array::arrays::list::ListData::into_array(self) -> vortex_array::ArrayRef -pub vortex_array::arrays::list::ListArrayParts::validity: vortex_array::validity::Validity +pub type vortex_array::arrays::list::ListArray = vortex_array::Array pub mod vortex_array::arrays::listview @@ -2830,7 +2726,7 @@ pub struct vortex_array::arrays::listview::ListView impl vortex_array::arrays::ListView -pub const vortex_array::arrays::ListView::ID: vortex_array::vtable::ArrayId +pub const vortex_array::arrays::ListView::ID: vortex_array::ArrayId impl core::clone::Clone for vortex_array::arrays::ListView @@ -2840,171 +2736,159 @@ impl core::fmt::Debug for vortex_array::arrays::ListView pub fn vortex_array::arrays::ListView::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::TakeReduce for vortex_array::arrays::ListView - -pub fn vortex_array::arrays::ListView::take(array: &vortex_array::arrays::ListViewArray, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> - -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::ListView - -pub fn vortex_array::arrays::ListView::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::ListView - -pub fn vortex_array::arrays::ListView::cast(array: &vortex_array::arrays::ListViewArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +impl vortex_array::OperationsVTable for vortex_array::arrays::ListView -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::ListView - -pub fn vortex_array::arrays::ListView::mask(array: &vortex_array::arrays::ListViewArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> - -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::ListView - -pub fn vortex_array::arrays::ListView::scalar_at(array: &vortex_array::arrays::ListViewArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ListView::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::ListView>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::vtable::VTable for vortex_array::arrays::ListView +impl vortex_array::VTable for vortex_array::arrays::ListView -pub type vortex_array::arrays::ListView::Array = vortex_array::arrays::ListViewArray +pub type vortex_array::arrays::ListView::ArrayData = vortex_array::arrays::listview::ListViewData pub type vortex_array::arrays::ListView::Metadata = vortex_array::ProstMetadata pub type vortex_array::arrays::ListView::OperationsVTable = vortex_array::arrays::ListView -pub type vortex_array::arrays::ListView::ValidityVTable = vortex_array::vtable::ValidityVTableFromValidityHelper +pub type vortex_array::arrays::ListView::ValidityVTable = vortex_array::arrays::ListView -pub fn vortex_array::arrays::ListView::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::ListView::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::ListView::array_eq(array: &vortex_array::arrays::ListViewArray, other: &vortex_array::arrays::ListViewArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::ListView::array_eq(array: &vortex_array::arrays::listview::ListViewData, other: &vortex_array::arrays::listview::ListViewData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::ListView::array_hash(array: &vortex_array::arrays::ListViewArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::ListView::array_hash(array: &vortex_array::arrays::listview::ListViewData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::ListView::buffer(_array: &vortex_array::arrays::ListViewArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::ListView::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::ListView::buffer_name(_array: &vortex_array::arrays::ListViewArray, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::ListView::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::ListView::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ListView::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListView::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::ListView::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::ListView::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::ListView::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String pub fn vortex_array::arrays::ListView::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListView::dtype(array: &vortex_array::arrays::ListViewArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::ListView::dtype(array: &vortex_array::arrays::listview::ListViewData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::ListView::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ListView::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListView::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::ListView::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ListView::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::ListView::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::ListView::len(array: &vortex_array::arrays::ListViewArray) -> usize +pub fn vortex_array::arrays::ListView::len(array: &vortex_array::arrays::listview::ListViewData) -> usize -pub fn vortex_array::arrays::ListView::metadata(array: &vortex_array::arrays::ListViewArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ListView::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListView::nbuffers(_array: &vortex_array::arrays::ListViewArray) -> usize +pub fn vortex_array::arrays::ListView::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::ListView::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::ListView::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::ListView::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::ListView::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ListView::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::ListView::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> pub fn vortex_array::arrays::ListView::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::ListView::slot_name(_array: &vortex_array::arrays::ListViewArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::ListView::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::ListView::slots(array: &vortex_array::arrays::ListViewArray) -> &[core::option::Option] +pub fn vortex_array::arrays::ListView::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::ListView::stats(array: &vortex_array::arrays::ListViewArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::ListView::stats(array: &vortex_array::arrays::listview::ListViewData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::ListView::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::ListView::vtable(_array: &vortex_array::arrays::listview::ListViewData) -> &Self -pub fn vortex_array::arrays::ListView::with_slots(array: &mut vortex_array::arrays::ListViewArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::ListView::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub struct vortex_array::arrays::listview::ListViewArray +impl vortex_array::ValidityVTable for vortex_array::arrays::ListView -impl vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::ListView::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::ListView>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListViewArray::elements(&self) -> &vortex_array::ArrayRef +impl vortex_array::arrays::dict::TakeReduce for vortex_array::arrays::ListView + +pub fn vortex_array::arrays::ListView::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::ListView>, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> + +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::ListView -pub fn vortex_array::arrays::ListViewArray::into_parts(self) -> vortex_array::arrays::listview::ListViewArrayParts +pub fn vortex_array::arrays::ListView::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ListViewArray::is_zero_copy_to_list(&self) -> bool +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::ListView -pub fn vortex_array::arrays::ListViewArray::list_elements_at(&self, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ListView::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::ListView>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ListViewArray::new(elements: vortex_array::ArrayRef, offsets: vortex_array::ArrayRef, sizes: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> Self +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::ListView -pub unsafe fn vortex_array::arrays::ListViewArray::new_unchecked(elements: vortex_array::ArrayRef, offsets: vortex_array::ArrayRef, sizes: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::arrays::ListView::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::ListView>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ListViewArray::offset_at(&self, index: usize) -> usize +pub struct vortex_array::arrays::listview::ListViewArrayParts -pub fn vortex_array::arrays::ListViewArray::offsets(&self) -> &vortex_array::ArrayRef +pub vortex_array::arrays::listview::ListViewArrayParts::elements: vortex_array::ArrayRef -pub fn vortex_array::arrays::ListViewArray::size_at(&self, index: usize) -> usize +pub vortex_array::arrays::listview::ListViewArrayParts::elements_dtype: alloc::sync::Arc -pub fn vortex_array::arrays::ListViewArray::sizes(&self) -> &vortex_array::ArrayRef +pub vortex_array::arrays::listview::ListViewArrayParts::offsets: vortex_array::ArrayRef -pub fn vortex_array::arrays::ListViewArray::try_new(elements: vortex_array::ArrayRef, offsets: vortex_array::ArrayRef, sizes: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +pub vortex_array::arrays::listview::ListViewArrayParts::sizes: vortex_array::ArrayRef -pub fn vortex_array::arrays::ListViewArray::validate(elements: &vortex_array::ArrayRef, offsets: &vortex_array::ArrayRef, sizes: &vortex_array::ArrayRef, validity: &vortex_array::validity::Validity) -> vortex_error::VortexResult<()> +pub vortex_array::arrays::listview::ListViewArrayParts::validity: vortex_array::validity::Validity -pub fn vortex_array::arrays::ListViewArray::verify_is_zero_copy_to_list(&self) -> bool +pub struct vortex_array::arrays::listview::ListViewData -pub unsafe fn vortex_array::arrays::ListViewArray::with_zero_copy_to_list(self, is_zctl: bool) -> Self +impl vortex_array::arrays::listview::ListViewData -impl vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::listview::ListViewData::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::ListViewArray::rebuild(&self, mode: vortex_array::arrays::listview::ListViewRebuildMode) -> vortex_error::VortexResult +pub fn vortex_array::arrays::listview::ListViewData::elements(&self) -> &vortex_array::ArrayRef -impl vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::listview::ListViewData::into_parts(self) -> vortex_array::arrays::listview::ListViewArrayParts -pub fn vortex_array::arrays::ListViewArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::listview::ListViewData::is_empty(&self) -> bool -impl core::clone::Clone for vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::listview::ListViewData::is_zero_copy_to_list(&self) -> bool -pub fn vortex_array::arrays::ListViewArray::clone(&self) -> vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::listview::ListViewData::len(&self) -> usize -impl core::convert::AsRef for vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::listview::ListViewData::list_elements_at(&self, index: usize) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListViewArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::listview::ListViewData::new(elements: vortex_array::ArrayRef, offsets: vortex_array::ArrayRef, sizes: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> Self -impl core::convert::From for vortex_array::ArrayRef +pub unsafe fn vortex_array::arrays::listview::ListViewData::new_unchecked(elements: vortex_array::ArrayRef, offsets: vortex_array::ArrayRef, sizes: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::ListViewArray) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::listview::ListViewData::offset_at(&self, index: usize) -> usize -impl core::fmt::Debug for vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::listview::ListViewData::offsets(&self) -> &vortex_array::ArrayRef -pub fn vortex_array::arrays::ListViewArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::listview::ListViewData::size_at(&self, index: usize) -> usize -impl core::ops::deref::Deref for vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::listview::ListViewData::sizes(&self) -> &vortex_array::ArrayRef -pub type vortex_array::arrays::ListViewArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::arrays::listview::ListViewData::try_new(elements: vortex_array::ArrayRef, offsets: vortex_array::ArrayRef, sizes: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListViewArray::deref(&self) -> &Self::Target +pub fn vortex_array::arrays::listview::ListViewData::validate(elements: &vortex_array::ArrayRef, offsets: &vortex_array::ArrayRef, sizes: &vortex_array::ArrayRef, validity: &vortex_array::validity::Validity) -> vortex_error::VortexResult<()> -impl vortex_array::Executable for vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::listview::ListViewData::validity(&self) -> vortex_array::validity::Validity -pub fn vortex_array::arrays::ListViewArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::listview::ListViewData::validity_mask(&self) -> vortex_mask::Mask -impl vortex_array::IntoArray for vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::listview::ListViewData::verify_is_zero_copy_to_list(&self) -> bool -pub fn vortex_array::arrays::ListViewArray::into_array(self) -> vortex_array::ArrayRef +pub unsafe fn vortex_array::arrays::listview::ListViewData::with_zero_copy_to_list(self, is_zctl: bool) -> Self -impl vortex_array::vtable::ValidityHelper for vortex_array::arrays::ListViewArray +impl core::clone::Clone for vortex_array::arrays::listview::ListViewData -pub fn vortex_array::arrays::ListViewArray::validity(&self) -> vortex_array::validity::Validity +pub fn vortex_array::arrays::listview::ListViewData::clone(&self) -> vortex_array::arrays::listview::ListViewData -pub struct vortex_array::arrays::listview::ListViewArrayParts +impl core::convert::From for vortex_array::ArrayRef -pub vortex_array::arrays::listview::ListViewArrayParts::elements: vortex_array::ArrayRef +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::listview::ListViewData) -> vortex_array::ArrayRef -pub vortex_array::arrays::listview::ListViewArrayParts::elements_dtype: alloc::sync::Arc +impl core::fmt::Debug for vortex_array::arrays::listview::ListViewData -pub vortex_array::arrays::listview::ListViewArrayParts::offsets: vortex_array::ArrayRef +pub fn vortex_array::arrays::listview::ListViewData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub vortex_array::arrays::listview::ListViewArrayParts::sizes: vortex_array::ArrayRef +impl vortex_array::IntoArray for vortex_array::arrays::listview::ListViewData -pub vortex_array::arrays::listview::ListViewArrayParts::validity: vortex_array::validity::Validity +pub fn vortex_array::arrays::listview::ListViewData::into_array(self) -> vortex_array::ArrayRef pub fn vortex_array::arrays::listview::list_from_list_view(list_view: vortex_array::arrays::ListViewArray) -> vortex_error::VortexResult @@ -3012,13 +2896,15 @@ pub fn vortex_array::arrays::listview::list_view_from_list(list: vortex_array::a pub fn vortex_array::arrays::listview::recursive_list_from_list_view(array: vortex_array::ArrayRef) -> vortex_error::VortexResult +pub type vortex_array::arrays::listview::ListViewArray = vortex_array::Array + pub mod vortex_array::arrays::masked pub struct vortex_array::arrays::masked::Masked impl vortex_array::arrays::Masked -pub const vortex_array::arrays::Masked::ID: vortex_array::vtable::ArrayId +pub const vortex_array::arrays::Masked::ID: vortex_array::ArrayId impl core::clone::Clone for vortex_array::arrays::Masked @@ -3028,29 +2914,13 @@ impl core::fmt::Debug for vortex_array::arrays::Masked pub fn vortex_array::arrays::Masked::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::TakeReduce for vortex_array::arrays::Masked - -pub fn vortex_array::arrays::Masked::take(array: &vortex_array::arrays::MaskedArray, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> - -impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::Masked - -pub fn vortex_array::arrays::Masked::filter(array: &vortex_array::arrays::MaskedArray, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> - -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Masked - -pub fn vortex_array::arrays::Masked::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Masked - -pub fn vortex_array::arrays::Masked::mask(array: &vortex_array::arrays::MaskedArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +impl vortex_array::OperationsVTable for vortex_array::arrays::Masked -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Masked +pub fn vortex_array::arrays::Masked::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Masked::scalar_at(array: &vortex_array::arrays::MaskedArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::VTable for vortex_array::arrays::Masked -impl vortex_array::vtable::VTable for vortex_array::arrays::Masked - -pub type vortex_array::arrays::Masked::Array = vortex_array::arrays::MaskedArray +pub type vortex_array::arrays::Masked::ArrayData = vortex_array::arrays::masked::MaskedData pub type vortex_array::arrays::Masked::Metadata = vortex_array::EmptyMetadata @@ -3058,109 +2928,121 @@ pub type vortex_array::arrays::Masked::OperationsVTable = vortex_array::arrays:: pub type vortex_array::arrays::Masked::ValidityVTable = vortex_array::arrays::Masked -pub fn vortex_array::arrays::Masked::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Masked::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Masked::array_eq(array: &vortex_array::arrays::MaskedArray, other: &vortex_array::arrays::MaskedArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Masked::array_eq(array: &vortex_array::arrays::masked::MaskedData, other: &vortex_array::arrays::masked::MaskedData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::Masked::array_hash(array: &vortex_array::arrays::MaskedArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Masked::array_hash(array: &vortex_array::arrays::masked::MaskedData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::Masked::buffer(_array: &Self::Array, _idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Masked::buffer(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Masked::buffer_name(_array: &Self::Array, _idx: usize) -> core::option::Option +pub fn vortex_array::arrays::Masked::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Masked::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Masked::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Masked::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Masked::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Masked::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Masked::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String pub fn vortex_array::arrays::Masked::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Masked::dtype(array: &vortex_array::arrays::MaskedArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::Masked::dtype(array: &vortex_array::arrays::masked::MaskedData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::Masked::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Masked::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Masked::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Masked::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Masked::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::Masked::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Masked::len(array: &vortex_array::arrays::MaskedArray) -> usize +pub fn vortex_array::arrays::Masked::len(array: &vortex_array::arrays::masked::MaskedData) -> usize -pub fn vortex_array::arrays::Masked::metadata(_array: &vortex_array::arrays::MaskedArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Masked::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Masked::nbuffers(_array: &Self::Array) -> usize +pub fn vortex_array::arrays::Masked::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Masked::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::Masked::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Masked::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Masked::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Masked::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Masked::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> pub fn vortex_array::arrays::Masked::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Masked::slot_name(_array: &vortex_array::arrays::MaskedArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Masked::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String + +pub fn vortex_array::arrays::Masked::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] + +pub fn vortex_array::arrays::Masked::stats(array: &vortex_array::arrays::masked::MaskedData) -> &vortex_array::stats::ArrayStats + +pub fn vortex_array::arrays::Masked::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::Masked::slots(array: &vortex_array::arrays::MaskedArray) -> &[core::option::Option] +pub fn vortex_array::arrays::Masked::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Masked::stats(array: &vortex_array::arrays::MaskedArray) -> vortex_array::stats::StatsSetRef<'_> +impl vortex_array::ValidityVTable for vortex_array::arrays::Masked -pub fn vortex_array::arrays::Masked::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::Masked::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Masked::with_slots(array: &mut vortex_array::arrays::MaskedArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +impl vortex_array::arrays::dict::TakeReduce for vortex_array::arrays::Masked + +pub fn vortex_array::arrays::Masked::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> + +impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::Masked -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Masked +pub fn vortex_array::arrays::Masked::filter(array: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Masked::validity(array: &vortex_array::arrays::MaskedArray) -> vortex_error::VortexResult +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Masked -pub struct vortex_array::arrays::masked::MaskedArray +pub fn vortex_array::arrays::Masked::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -impl vortex_array::arrays::MaskedArray +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Masked -pub fn vortex_array::arrays::MaskedArray::child(&self) -> &vortex_array::ArrayRef +pub fn vortex_array::arrays::Masked::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::MaskedArray::try_new(child: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +pub struct vortex_array::arrays::masked::MaskedData -pub fn vortex_array::arrays::MaskedArray::validity(&self) -> vortex_array::validity::Validity +impl vortex_array::arrays::masked::MaskedData -impl vortex_array::arrays::MaskedArray +pub fn vortex_array::arrays::masked::MaskedData::child(&self) -> &vortex_array::ArrayRef -pub fn vortex_array::arrays::MaskedArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::masked::MaskedData::dtype(&self) -> &vortex_array::dtype::DType -impl core::clone::Clone for vortex_array::arrays::MaskedArray +pub fn vortex_array::arrays::masked::MaskedData::is_empty(&self) -> bool -pub fn vortex_array::arrays::MaskedArray::clone(&self) -> vortex_array::arrays::MaskedArray +pub fn vortex_array::arrays::masked::MaskedData::len(&self) -> usize -impl core::convert::AsRef for vortex_array::arrays::MaskedArray +pub fn vortex_array::arrays::masked::MaskedData::try_new(child: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult -pub fn vortex_array::arrays::MaskedArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::masked::MaskedData::validity(&self) -> vortex_array::validity::Validity -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::arrays::masked::MaskedData::validity_mask(&self) -> vortex_mask::Mask -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::MaskedArray) -> vortex_array::ArrayRef +impl core::clone::Clone for vortex_array::arrays::masked::MaskedData -impl core::fmt::Debug for vortex_array::arrays::MaskedArray +pub fn vortex_array::arrays::masked::MaskedData::clone(&self) -> vortex_array::arrays::masked::MaskedData -pub fn vortex_array::arrays::MaskedArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl core::convert::From for vortex_array::ArrayRef -impl core::ops::deref::Deref for vortex_array::arrays::MaskedArray +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::masked::MaskedData) -> vortex_array::ArrayRef -pub type vortex_array::arrays::MaskedArray::Target = dyn vortex_array::DynArray +impl core::fmt::Debug for vortex_array::arrays::masked::MaskedData -pub fn vortex_array::arrays::MaskedArray::deref(&self) -> &Self::Target +pub fn vortex_array::arrays::masked::MaskedData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::IntoArray for vortex_array::arrays::MaskedArray +impl vortex_array::IntoArray for vortex_array::arrays::masked::MaskedData -pub fn vortex_array::arrays::MaskedArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::masked::MaskedData::into_array(self) -> vortex_array::ArrayRef pub fn vortex_array::arrays::masked::mask_validity_canonical(canonical: vortex_array::Canonical, validity_mask: &vortex_mask::Mask, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub type vortex_array::arrays::masked::MaskedArray = vortex_array::Array + pub mod vortex_array::arrays::null pub struct vortex_array::arrays::null::Null impl vortex_array::arrays::null::Null -pub const vortex_array::arrays::null::Null::ID: vortex_array::vtable::ArrayId +pub const vortex_array::arrays::null::Null::ID: vortex_array::ArrayId impl vortex_array::arrays::null::Null @@ -3174,33 +3056,13 @@ impl core::fmt::Debug for vortex_array::arrays::null::Null pub fn vortex_array::arrays::null::Null::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::TakeReduce for vortex_array::arrays::null::Null - -pub fn vortex_array::arrays::null::Null::take(array: &vortex_array::arrays::null::NullArray, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> - -impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::null::Null - -pub fn vortex_array::arrays::null::Null::filter(_array: &vortex_array::arrays::null::NullArray, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> - -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::null::Null - -pub fn vortex_array::arrays::null::Null::slice(_array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::null::Null - -pub fn vortex_array::arrays::null::Null::cast(array: &vortex_array::arrays::null::NullArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::null::Null +impl vortex_array::OperationsVTable for vortex_array::arrays::null::Null -pub fn vortex_array::arrays::null::Null::mask(array: &vortex_array::arrays::null::NullArray, _mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::null::Null::scalar_at(_array: vortex_array::ArrayView<'_, vortex_array::arrays::null::Null>, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::null::Null +impl vortex_array::VTable for vortex_array::arrays::null::Null -pub fn vortex_array::arrays::null::Null::scalar_at(_array: &vortex_array::arrays::null::NullArray, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult - -impl vortex_array::vtable::VTable for vortex_array::arrays::null::Null - -pub type vortex_array::arrays::null::Null::Array = vortex_array::arrays::null::NullArray +pub type vortex_array::arrays::null::Null::ArrayData = vortex_array::arrays::null::NullData pub type vortex_array::arrays::null::Null::Metadata = vortex_array::EmptyMetadata @@ -3208,99 +3070,109 @@ pub type vortex_array::arrays::null::Null::OperationsVTable = vortex_array::arra pub type vortex_array::arrays::null::Null::ValidityVTable = vortex_array::arrays::null::Null -pub fn vortex_array::arrays::null::Null::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::null::Null::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::null::Null::array_eq(array: &vortex_array::arrays::null::NullArray, other: &vortex_array::arrays::null::NullArray, _precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::null::Null::array_eq(_array: &vortex_array::arrays::null::NullData, _other: &vortex_array::arrays::null::NullData, _precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::null::Null::array_hash(array: &vortex_array::arrays::null::NullArray, state: &mut H, _precision: vortex_array::Precision) +pub fn vortex_array::arrays::null::Null::array_hash(_array: &vortex_array::arrays::null::NullData, _state: &mut H, _precision: vortex_array::Precision) -pub fn vortex_array::arrays::null::Null::buffer(_array: &vortex_array::arrays::null::NullArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::null::Null::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::null::Null::buffer_name(_array: &vortex_array::arrays::null::NullArray, _idx: usize) -> core::option::Option +pub fn vortex_array::arrays::null::Null::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::arrays::null::Null::build(_dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], _children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::build(_dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], _children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::null::Null::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::null::Null::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::null::Null::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::null::Null::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String pub fn vortex_array::arrays::null::Null::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::null::Null::dtype(_array: &vortex_array::arrays::null::NullArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::null::Null::dtype(_array: &vortex_array::arrays::null::NullData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::null::Null::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::null::Null::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::null::Null::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::null::Null::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::null::Null::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::null::Null::len(array: &vortex_array::arrays::null::NullArray) -> usize +pub fn vortex_array::arrays::null::Null::len(array: &vortex_array::arrays::null::NullData) -> usize -pub fn vortex_array::arrays::null::Null::metadata(_array: &vortex_array::arrays::null::NullArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::null::Null::nbuffers(_array: &vortex_array::arrays::null::NullArray) -> usize +pub fn vortex_array::arrays::null::Null::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::null::Null::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::null::Null::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::null::Null::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::null::Null::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::null::Null::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::null::Null::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> pub fn vortex_array::arrays::null::Null::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::null::Null::slot_name(_array: &vortex_array::arrays::null::NullArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::null::Null::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String + +pub fn vortex_array::arrays::null::Null::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] + +pub fn vortex_array::arrays::null::Null::stats(array: &vortex_array::arrays::null::NullData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::null::Null::slots(array: &vortex_array::arrays::null::NullArray) -> &[core::option::Option] +pub fn vortex_array::arrays::null::Null::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::null::Null::stats(array: &vortex_array::arrays::null::NullArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::null::Null::with_slots(_array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::null::Null::vtable(_array: &Self::Array) -> &Self +impl vortex_array::ValidityVTable for vortex_array::arrays::null::Null -pub fn vortex_array::arrays::null::Null::with_slots(array: &mut vortex_array::arrays::null::NullArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::null::Null::validity(_array: vortex_array::ArrayView<'_, vortex_array::arrays::null::Null>) -> vortex_error::VortexResult -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::null::Null +impl vortex_array::arrays::dict::TakeReduce for vortex_array::arrays::null::Null + +pub fn vortex_array::arrays::null::Null::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::null::Null>, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::null::Null::validity(_array: &vortex_array::arrays::null::NullArray) -> vortex_error::VortexResult +impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::null::Null -pub struct vortex_array::arrays::null::NullArray +pub fn vortex_array::arrays::null::Null::filter(_array: vortex_array::ArrayView<'_, vortex_array::arrays::null::Null>, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> -impl vortex_array::arrays::null::NullArray +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::null::Null -pub fn vortex_array::arrays::null::NullArray::new(len: usize) -> Self +pub fn vortex_array::arrays::null::Null::slice(_array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -impl vortex_array::arrays::null::NullArray +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::null::Null -pub fn vortex_array::arrays::null::NullArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::null::Null::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::null::Null>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -impl core::clone::Clone for vortex_array::arrays::null::NullArray +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::null::Null -pub fn vortex_array::arrays::null::NullArray::clone(&self) -> vortex_array::arrays::null::NullArray +pub fn vortex_array::arrays::null::Null::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::null::Null>, _mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -impl core::convert::AsRef for vortex_array::arrays::null::NullArray +pub struct vortex_array::arrays::null::NullData -pub fn vortex_array::arrays::null::NullArray::as_ref(&self) -> &dyn vortex_array::DynArray +impl vortex_array::arrays::null::NullData -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::arrays::null::NullData::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::null::NullArray) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::null::NullData::is_empty(&self) -> bool -impl core::fmt::Debug for vortex_array::arrays::null::NullArray +pub fn vortex_array::arrays::null::NullData::len(&self) -> usize -pub fn vortex_array::arrays::null::NullArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::null::NullData::new(len: usize) -> Self -impl core::ops::deref::Deref for vortex_array::arrays::null::NullArray +impl core::clone::Clone for vortex_array::arrays::null::NullData -pub type vortex_array::arrays::null::NullArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::arrays::null::NullData::clone(&self) -> vortex_array::arrays::null::NullData -pub fn vortex_array::arrays::null::NullArray::deref(&self) -> &Self::Target +impl core::convert::From for vortex_array::ArrayRef -impl vortex_array::Executable for vortex_array::arrays::null::NullArray +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::null::NullData) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::null::NullArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl core::fmt::Debug for vortex_array::arrays::null::NullData -impl vortex_array::IntoArray for vortex_array::arrays::null::NullArray +pub fn vortex_array::arrays::null::NullData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::null::NullArray::into_array(self) -> vortex_array::ArrayRef +impl vortex_array::IntoArray for vortex_array::arrays::null::NullData + +pub fn vortex_array::arrays::null::NullData::into_array(self) -> vortex_array::ArrayRef + +pub type vortex_array::arrays::null::NullArray = vortex_array::Array pub mod vortex_array::arrays::patched @@ -3314,89 +3186,89 @@ impl core::fmt::Debug for vortex_array::arrays::patched::Patched pub fn vortex_array::arrays::patched::Patched::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::patched::Patched +impl vortex_array::OperationsVTable for vortex_array::arrays::patched::Patched -pub fn vortex_array::arrays::patched::Patched::take(array: &Self::Array, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::patched::Patched::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::patched::Patched>, index: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::patched::Patched +impl vortex_array::VTable for vortex_array::arrays::patched::Patched -pub fn vortex_array::arrays::patched::Patched::filter(array: &Self::Array, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> +pub type vortex_array::arrays::patched::Patched::ArrayData = vortex_array::arrays::patched::PatchedArray -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::patched::Patched +pub type vortex_array::arrays::patched::Patched::Metadata = vortex_array::ProstMetadata -pub fn vortex_array::arrays::patched::Patched::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub type vortex_array::arrays::patched::Patched::OperationsVTable = vortex_array::arrays::patched::Patched -impl vortex_array::scalar_fn::fns::binary::CompareKernel for vortex_array::arrays::patched::Patched +pub type vortex_array::arrays::patched::Patched::ValidityVTable = vortex_array::ValidityVTableFromChild -pub fn vortex_array::arrays::patched::Patched::compare(lhs: &Self::Array, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::patched::Patched::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::patched::Patched +pub fn vortex_array::arrays::patched::Patched::array_eq(array: &vortex_array::arrays::patched::PatchedArray, other: &vortex_array::arrays::patched::PatchedArray, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::patched::Patched::scalar_at(array: &vortex_array::arrays::patched::PatchedArray, index: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::patched::Patched::array_hash(array: &vortex_array::arrays::patched::PatchedArray, state: &mut H, precision: vortex_array::Precision) -impl vortex_array::vtable::VTable for vortex_array::arrays::patched::Patched +pub fn vortex_array::arrays::patched::Patched::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub type vortex_array::arrays::patched::Patched::Array = vortex_array::arrays::patched::PatchedArray +pub fn vortex_array::arrays::patched::Patched::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub type vortex_array::arrays::patched::Patched::Metadata = vortex_array::ProstMetadata +pub fn vortex_array::arrays::patched::Patched::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub type vortex_array::arrays::patched::Patched::OperationsVTable = vortex_array::arrays::patched::Patched +pub fn vortex_array::arrays::patched::Patched::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub type vortex_array::arrays::patched::Patched::ValidityVTable = vortex_array::vtable::ValidityVTableFromChild +pub fn vortex_array::arrays::patched::Patched::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::patched::Patched::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::patched::Patched::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::patched::Patched::array_eq(array: &Self::Array, other: &Self::Array, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::patched::Patched::dtype(array: &Self::ArrayData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::patched::Patched::array_hash(array: &Self::Array, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::patched::Patched::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::patched::Patched::buffer(_array: &Self::Array, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::patched::Patched::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::patched::Patched::buffer_name(_array: &Self::Array, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::patched::Patched::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::patched::Patched::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::patched::Patched::len(array: &Self::ArrayData) -> usize -pub fn vortex_array::arrays::patched::Patched::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::patched::Patched::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::patched::Patched::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::patched::Patched::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::patched::Patched::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::patched::Patched::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::patched::Patched::dtype(array: &Self::Array) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::patched::Patched::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::patched::Patched::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::patched::Patched::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::patched::Patched::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::patched::Patched::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::patched::Patched::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::patched::Patched::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::patched::Patched::len(array: &Self::Array) -> usize +pub fn vortex_array::arrays::patched::Patched::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::patched::Patched::metadata(array: &Self::Array) -> vortex_error::VortexResult +pub fn vortex_array::arrays::patched::Patched::stats(array: &Self::ArrayData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::patched::Patched::nbuffers(_array: &Self::Array) -> usize +pub fn vortex_array::arrays::patched::Patched::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::patched::Patched::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::patched::Patched::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::patched::Patched::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +impl vortex_array::ValidityChild for vortex_array::arrays::patched::Patched -pub fn vortex_array::arrays::patched::Patched::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::patched::Patched::validity_child(array: &vortex_array::arrays::patched::PatchedArray) -> &vortex_array::ArrayRef -pub fn vortex_array::arrays::patched::Patched::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::patched::Patched -pub fn vortex_array::arrays::patched::Patched::slot_name(_array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::patched::Patched::take(array: vortex_array::ArrayView<'_, Self>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::patched::Patched::slots(array: &Self::Array) -> &[core::option::Option] +impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::patched::Patched -pub fn vortex_array::arrays::patched::Patched::stats(array: &Self::Array) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::patched::Patched::filter(array: vortex_array::ArrayView<'_, Self>, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::patched::Patched::vtable(_array: &Self::Array) -> &Self +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::patched::Patched -pub fn vortex_array::arrays::patched::Patched::with_slots(array: &mut Self::Array, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::patched::Patched::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -impl vortex_array::vtable::ValidityChild for vortex_array::arrays::patched::Patched +impl vortex_array::scalar_fn::fns::binary::CompareKernel for vortex_array::arrays::patched::Patched -pub fn vortex_array::arrays::patched::Patched::validity_child(array: &vortex_array::arrays::patched::PatchedArray) -> &vortex_array::ArrayRef +pub fn vortex_array::arrays::patched::Patched::compare(lhs: vortex_array::ArrayView<'_, Self>, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> pub struct vortex_array::arrays::patched::PatchedArray @@ -3422,10 +3294,6 @@ impl core::clone::Clone for vortex_array::arrays::patched::PatchedArray pub fn vortex_array::arrays::patched::PatchedArray::clone(&self) -> vortex_array::arrays::patched::PatchedArray -impl core::convert::AsRef for vortex_array::arrays::patched::PatchedArray - -pub fn vortex_array::arrays::patched::PatchedArray::as_ref(&self) -> &dyn vortex_array::DynArray - impl core::convert::From for vortex_array::ArrayRef pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::patched::PatchedArray) -> vortex_array::ArrayRef @@ -3434,12 +3302,6 @@ impl core::fmt::Debug for vortex_array::arrays::patched::PatchedArray pub fn vortex_array::arrays::patched::PatchedArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::ops::deref::Deref for vortex_array::arrays::patched::PatchedArray - -pub type vortex_array::arrays::patched::PatchedArray::Target = dyn vortex_array::DynArray - -pub fn vortex_array::arrays::patched::PatchedArray::deref(&self) -> &Self::Target - impl vortex_array::IntoArray for vortex_array::arrays::patched::PatchedArray pub fn vortex_array::arrays::patched::PatchedArray::into_array(self) -> vortex_array::ArrayRef @@ -3536,7 +3398,7 @@ pub struct vortex_array::arrays::primitive::Primitive impl vortex_array::arrays::Primitive -pub const vortex_array::arrays::Primitive::ID: vortex_array::vtable::ArrayId +pub const vortex_array::arrays::Primitive::ID: vortex_array::ArrayId impl core::clone::Clone for vortex_array::arrays::Primitive @@ -3546,43 +3408,13 @@ impl core::fmt::Debug for vortex_array::arrays::Primitive pub fn vortex_array::arrays::Primitive::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::Primitive - -pub fn vortex_array::arrays::Primitive::take(array: &vortex_array::arrays::PrimitiveArray, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Primitive - -pub fn vortex_array::arrays::Primitive::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +impl vortex_array::OperationsVTable for vortex_array::arrays::Primitive -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::arrays::primitive::PrimitiveMaskedValidityRule - -pub type vortex_array::arrays::primitive::PrimitiveMaskedValidityRule::Parent = vortex_array::arrays::Masked - -pub fn vortex_array::arrays::primitive::PrimitiveMaskedValidityRule::reduce_parent(&self, array: &vortex_array::arrays::PrimitiveArray, parent: &vortex_array::arrays::MaskedArray, _child_idx: usize) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::between::BetweenKernel for vortex_array::arrays::Primitive - -pub fn vortex_array::arrays::Primitive::between(arr: &vortex_array::arrays::PrimitiveArray, lower: &vortex_array::ArrayRef, upper: &vortex_array::ArrayRef, options: &vortex_array::scalar_fn::fns::between::BetweenOptions, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::cast::CastKernel for vortex_array::arrays::Primitive - -pub fn vortex_array::arrays::Primitive::cast(array: &vortex_array::arrays::PrimitiveArray, dtype: &vortex_array::dtype::DType, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::fill_null::FillNullKernel for vortex_array::arrays::Primitive - -pub fn vortex_array::arrays::Primitive::fill_null(array: &vortex_array::arrays::PrimitiveArray, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Primitive - -pub fn vortex_array::arrays::Primitive::mask(array: &vortex_array::arrays::PrimitiveArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Primitive::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Primitive>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Primitive +impl vortex_array::VTable for vortex_array::arrays::Primitive -pub fn vortex_array::arrays::Primitive::scalar_at(array: &vortex_array::arrays::PrimitiveArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult - -impl vortex_array::vtable::VTable for vortex_array::arrays::Primitive - -pub type vortex_array::arrays::Primitive::Array = vortex_array::arrays::PrimitiveArray +pub type vortex_array::arrays::Primitive::ArrayData = vortex_array::arrays::primitive::PrimitiveData pub type vortex_array::arrays::Primitive::Metadata = vortex_array::EmptyMetadata @@ -3590,175 +3422,173 @@ pub type vortex_array::arrays::Primitive::OperationsVTable = vortex_array::array pub type vortex_array::arrays::Primitive::ValidityVTable = vortex_array::arrays::Primitive -pub fn vortex_array::arrays::Primitive::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Primitive::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Primitive::array_eq(array: &vortex_array::arrays::PrimitiveArray, other: &vortex_array::arrays::PrimitiveArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Primitive::array_eq(array: &vortex_array::arrays::primitive::PrimitiveData, other: &vortex_array::arrays::primitive::PrimitiveData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::Primitive::array_hash(array: &vortex_array::arrays::PrimitiveArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Primitive::array_hash(array: &vortex_array::arrays::primitive::PrimitiveData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::Primitive::buffer(array: &vortex_array::arrays::PrimitiveArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Primitive::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Primitive::buffer_name(_array: &vortex_array::arrays::PrimitiveArray, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::Primitive::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Primitive::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Primitive::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Primitive::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Primitive::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Primitive::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Primitive::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String pub fn vortex_array::arrays::Primitive::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Primitive::dtype(array: &vortex_array::arrays::PrimitiveArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::Primitive::dtype(array: &vortex_array::arrays::primitive::PrimitiveData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::Primitive::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Primitive::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Primitive::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Primitive::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Primitive::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::Primitive::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Primitive::len(array: &vortex_array::arrays::PrimitiveArray) -> usize +pub fn vortex_array::arrays::Primitive::len(array: &vortex_array::arrays::primitive::PrimitiveData) -> usize -pub fn vortex_array::arrays::Primitive::metadata(_array: &vortex_array::arrays::PrimitiveArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Primitive::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Primitive::nbuffers(_array: &vortex_array::arrays::PrimitiveArray) -> usize +pub fn vortex_array::arrays::Primitive::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Primitive::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::Primitive::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Primitive::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Primitive::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Primitive::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Primitive::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> pub fn vortex_array::arrays::Primitive::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Primitive::slot_name(_array: &vortex_array::arrays::PrimitiveArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Primitive::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Primitive::slots(array: &vortex_array::arrays::PrimitiveArray) -> &[core::option::Option] +pub fn vortex_array::arrays::Primitive::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::Primitive::stats(array: &vortex_array::arrays::PrimitiveArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::Primitive::stats(array: &vortex_array::arrays::primitive::PrimitiveData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Primitive::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::Primitive::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::Primitive::with_slots(array: &mut vortex_array::arrays::PrimitiveArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Primitive::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Primitive +impl vortex_array::ValidityVTable for vortex_array::arrays::Primitive -pub fn vortex_array::arrays::Primitive::validity(array: &vortex_array::arrays::PrimitiveArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Primitive::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Primitive>) -> vortex_error::VortexResult -pub struct vortex_array::arrays::primitive::PrimitiveArray - -impl vortex_array::arrays::PrimitiveArray +impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::Primitive -pub fn vortex_array::arrays::PrimitiveArray::as_slice(&self) -> &[T] +pub fn vortex_array::arrays::Primitive::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::Primitive>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::PrimitiveArray::narrow(&self) -> vortex_error::VortexResult +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Primitive -pub fn vortex_array::arrays::PrimitiveArray::reinterpret_cast(&self, ptype: vortex_array::dtype::PType) -> Self +pub fn vortex_array::arrays::Primitive::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -impl vortex_array::arrays::PrimitiveArray +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::arrays::primitive::PrimitiveMaskedValidityRule -pub fn vortex_array::arrays::PrimitiveArray::buffer_handle(&self) -> &vortex_array::buffer::BufferHandle +pub type vortex_array::arrays::primitive::PrimitiveMaskedValidityRule::Parent = vortex_array::arrays::Masked -pub fn vortex_array::arrays::PrimitiveArray::from_buffer_handle(handle: vortex_array::buffer::BufferHandle, ptype: vortex_array::dtype::PType, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::arrays::primitive::PrimitiveMaskedValidityRule::reduce_parent(&self, array: vortex_array::ArrayView<'_, vortex_array::arrays::Primitive>, parent: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>, _child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::PrimitiveArray::from_byte_buffer(buffer: vortex_buffer::ByteBuffer, ptype: vortex_array::dtype::PType, validity: vortex_array::validity::Validity) -> Self +impl vortex_array::scalar_fn::fns::between::BetweenKernel for vortex_array::arrays::Primitive -pub fn vortex_array::arrays::PrimitiveArray::from_values_byte_buffer(valid_elems_buffer: vortex_buffer::ByteBuffer, ptype: vortex_array::dtype::PType, validity: vortex_array::validity::Validity, n_rows: usize) -> Self +pub fn vortex_array::arrays::Primitive::between(arr: vortex_array::ArrayView<'_, vortex_array::arrays::Primitive>, lower: &vortex_array::ArrayRef, upper: &vortex_array::ArrayRef, options: &vortex_array::scalar_fn::fns::between::BetweenOptions, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::PrimitiveArray::map_each(self, f: F) -> vortex_array::arrays::PrimitiveArray where T: vortex_array::dtype::NativePType, R: vortex_array::dtype::NativePType, F: core::ops::function::FnMut(T) -> R +impl vortex_array::scalar_fn::fns::cast::CastKernel for vortex_array::arrays::Primitive -pub fn vortex_array::arrays::PrimitiveArray::map_each_with_validity(self, f: F) -> vortex_error::VortexResult where T: vortex_array::dtype::NativePType, R: vortex_array::dtype::NativePType, F: core::ops::function::FnMut((T, bool)) -> R +pub fn vortex_array::arrays::Primitive::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::Primitive>, dtype: &vortex_array::dtype::DType, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::PrimitiveArray::ptype(&self) -> vortex_array::dtype::PType +impl vortex_array::scalar_fn::fns::fill_null::FillNullKernel for vortex_array::arrays::Primitive -impl vortex_array::arrays::PrimitiveArray +pub fn vortex_array::arrays::Primitive::fill_null(array: vortex_array::ArrayView<'_, vortex_array::arrays::Primitive>, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::PrimitiveArray::empty(nullability: vortex_array::dtype::Nullability) -> Self +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Primitive -pub fn vortex_array::arrays::PrimitiveArray::new(buffer: impl core::convert::Into>, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::arrays::Primitive::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::Primitive>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub unsafe fn vortex_array::arrays::PrimitiveArray::new_unchecked(buffer: vortex_buffer::buffer::Buffer, validity: vortex_array::validity::Validity) -> Self +pub struct vortex_array::arrays::primitive::PrimitiveArrayParts -pub unsafe fn vortex_array::arrays::PrimitiveArray::new_unchecked_from_handle(handle: vortex_array::buffer::BufferHandle, ptype: vortex_array::dtype::PType, validity: vortex_array::validity::Validity) -> Self +pub vortex_array::arrays::primitive::PrimitiveArrayParts::buffer: vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::PrimitiveArray::try_new(buffer: vortex_buffer::buffer::Buffer, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +pub vortex_array::arrays::primitive::PrimitiveArrayParts::ptype: vortex_array::dtype::PType -pub fn vortex_array::arrays::PrimitiveArray::validate(buffer: &vortex_buffer::buffer::Buffer, validity: &vortex_array::validity::Validity) -> vortex_error::VortexResult<()> +pub vortex_array::arrays::primitive::PrimitiveArrayParts::validity: vortex_array::validity::Validity -impl vortex_array::arrays::PrimitiveArray +pub struct vortex_array::arrays::primitive::PrimitiveData -pub fn vortex_array::arrays::PrimitiveArray::from_option_iter>>(iter: I) -> Self +impl vortex_array::arrays::primitive::PrimitiveData -pub fn vortex_array::arrays::PrimitiveArray::into_buffer(self) -> vortex_buffer::buffer::Buffer +pub fn vortex_array::arrays::primitive::PrimitiveData::as_slice(&self) -> &[T] -pub fn vortex_array::arrays::PrimitiveArray::into_buffer_mut(self) -> vortex_buffer::buffer_mut::BufferMut +pub fn vortex_array::arrays::primitive::PrimitiveData::reinterpret_cast(&self, ptype: vortex_array::dtype::PType) -> Self -pub fn vortex_array::arrays::PrimitiveArray::to_buffer(&self) -> vortex_buffer::buffer::Buffer +impl vortex_array::arrays::primitive::PrimitiveData -pub fn vortex_array::arrays::PrimitiveArray::try_into_buffer_mut(self) -> core::result::Result, vortex_buffer::buffer::Buffer> +pub fn vortex_array::arrays::primitive::PrimitiveData::buffer_handle(&self) -> &vortex_array::buffer::BufferHandle -impl vortex_array::arrays::PrimitiveArray +pub fn vortex_array::arrays::primitive::PrimitiveData::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::PrimitiveArray::into_parts(self) -> vortex_array::arrays::primitive::PrimitiveArrayParts +pub fn vortex_array::arrays::primitive::PrimitiveData::from_buffer_handle(handle: vortex_array::buffer::BufferHandle, ptype: vortex_array::dtype::PType, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::arrays::PrimitiveArray::validity(&self) -> vortex_array::validity::Validity +pub fn vortex_array::arrays::primitive::PrimitiveData::from_byte_buffer(buffer: vortex_buffer::ByteBuffer, ptype: vortex_array::dtype::PType, validity: vortex_array::validity::Validity) -> Self -impl vortex_array::arrays::PrimitiveArray +pub fn vortex_array::arrays::primitive::PrimitiveData::from_values_byte_buffer(valid_elems_buffer: vortex_buffer::ByteBuffer, ptype: vortex_array::dtype::PType, validity: vortex_array::validity::Validity, n_rows: usize) -> Self -pub fn vortex_array::arrays::PrimitiveArray::patch(self, patches: &vortex_array::patches::Patches, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::primitive::PrimitiveData::into_buffer(self) -> vortex_buffer::buffer::Buffer -impl vortex_array::arrays::PrimitiveArray +pub fn vortex_array::arrays::primitive::PrimitiveData::into_buffer_mut(self) -> vortex_buffer::buffer_mut::BufferMut -pub fn vortex_array::arrays::PrimitiveArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::primitive::PrimitiveData::is_empty(&self) -> bool -impl vortex_array::arrays::PrimitiveArray +pub fn vortex_array::arrays::primitive::PrimitiveData::len(&self) -> usize -pub fn vortex_array::arrays::PrimitiveArray::top_value(&self) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::primitive::PrimitiveData::map_each(self, f: F) -> Self where T: vortex_array::dtype::NativePType, R: vortex_array::dtype::NativePType, F: core::ops::function::FnMut(T) -> R -impl core::clone::Clone for vortex_array::arrays::PrimitiveArray +pub fn vortex_array::arrays::primitive::PrimitiveData::map_each_with_validity(self, f: F) -> vortex_error::VortexResult where T: vortex_array::dtype::NativePType, R: vortex_array::dtype::NativePType, F: core::ops::function::FnMut((T, bool)) -> R -pub fn vortex_array::arrays::PrimitiveArray::clone(&self) -> vortex_array::arrays::PrimitiveArray +pub fn vortex_array::arrays::primitive::PrimitiveData::ptype(&self) -> vortex_array::dtype::PType -impl core::convert::AsRef for vortex_array::arrays::PrimitiveArray +pub fn vortex_array::arrays::primitive::PrimitiveData::to_buffer(&self) -> vortex_buffer::buffer::Buffer -pub fn vortex_array::arrays::PrimitiveArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::primitive::PrimitiveData::try_into_buffer_mut(self) -> core::result::Result, vortex_buffer::buffer::Buffer> -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::arrays::primitive::PrimitiveData::validity(&self) -> vortex_array::validity::Validity -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::PrimitiveArray) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::primitive::PrimitiveData::validity_mask(&self) -> vortex_mask::Mask -impl core::fmt::Debug for vortex_array::arrays::PrimitiveArray +impl vortex_array::arrays::primitive::PrimitiveData -pub fn vortex_array::arrays::PrimitiveArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::primitive::PrimitiveData::empty(nullability: vortex_array::dtype::Nullability) -> Self -impl core::ops::deref::Deref for vortex_array::arrays::PrimitiveArray +pub fn vortex_array::arrays::primitive::PrimitiveData::new(buffer: impl core::convert::Into>, validity: vortex_array::validity::Validity) -> Self -pub type vortex_array::arrays::PrimitiveArray::Target = dyn vortex_array::DynArray +pub unsafe fn vortex_array::arrays::primitive::PrimitiveData::new_unchecked(buffer: vortex_buffer::buffer::Buffer, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::arrays::PrimitiveArray::deref(&self) -> &Self::Target +pub unsafe fn vortex_array::arrays::primitive::PrimitiveData::new_unchecked_from_handle(handle: vortex_array::buffer::BufferHandle, ptype: vortex_array::dtype::PType, validity: vortex_array::validity::Validity) -> Self -impl vortex_array::Executable for vortex_array::arrays::PrimitiveArray +pub fn vortex_array::arrays::primitive::PrimitiveData::try_new(buffer: vortex_buffer::buffer::Buffer, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult -pub fn vortex_array::arrays::PrimitiveArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::primitive::PrimitiveData::validate(buffer: &vortex_buffer::buffer::Buffer, validity: &vortex_array::validity::Validity) -> vortex_error::VortexResult<()> -impl vortex_array::IntoArray for vortex_array::arrays::PrimitiveArray +impl vortex_array::arrays::primitive::PrimitiveData -pub fn vortex_array::arrays::PrimitiveArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::primitive::PrimitiveData::into_parts(self) -> vortex_array::arrays::primitive::PrimitiveArrayParts -impl core::iter::traits::collect::FromIterator for vortex_array::arrays::PrimitiveArray +impl core::clone::Clone for vortex_array::arrays::primitive::PrimitiveData -pub fn vortex_array::arrays::PrimitiveArray::from_iter>(iter: I) -> Self +pub fn vortex_array::arrays::primitive::PrimitiveData::clone(&self) -> vortex_array::arrays::primitive::PrimitiveData -impl vortex_array::accessor::ArrayAccessor for vortex_array::arrays::PrimitiveArray +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::PrimitiveArray::with_iterator(&self, f: F) -> R where F: for<'a> core::ops::function::FnOnce(&mut dyn core::iter::traits::iterator::Iterator>) -> R +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::primitive::PrimitiveData) -> vortex_array::ArrayRef -pub struct vortex_array::arrays::primitive::PrimitiveArrayParts +impl core::fmt::Debug for vortex_array::arrays::primitive::PrimitiveData -pub vortex_array::arrays::primitive::PrimitiveArrayParts::buffer: vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::primitive::PrimitiveData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub vortex_array::arrays::primitive::PrimitiveArrayParts::ptype: vortex_array::dtype::PType +impl vortex_array::IntoArray for vortex_array::arrays::primitive::PrimitiveData -pub vortex_array::arrays::primitive::PrimitiveArrayParts::validity: vortex_array::validity::Validity +pub fn vortex_array::arrays::primitive::PrimitiveData::into_array(self) -> vortex_array::ArrayRef pub struct vortex_array::arrays::primitive::PrimitiveMaskedValidityRule @@ -3774,12 +3604,14 @@ impl vortex_array::optimizer::rules::ArrayParentReduceRule vortex_error::VortexResult> +pub fn vortex_array::arrays::primitive::PrimitiveMaskedValidityRule::reduce_parent(&self, array: vortex_array::ArrayView<'_, vortex_array::arrays::Primitive>, parent: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>, _child_idx: usize) -> vortex_error::VortexResult> pub fn vortex_array::arrays::primitive::chunk_range(chunk_idx: usize, offset: usize, array_len: usize) -> core::ops::range::Range pub fn vortex_array::arrays::primitive::patch_chunk(decoded_values: &mut [T], patches_indices: &[I], patches_values: &[T], patches_offset: usize, chunk_offsets_slice: &[C], chunk_idx: usize, offset_within_chunk: usize) where T: vortex_array::dtype::NativePType, I: vortex_array::dtype::UnsignedPType, C: vortex_array::dtype::UnsignedPType +pub type vortex_array::arrays::primitive::PrimitiveArray = vortex_array::Array + pub mod vortex_array::arrays::scalar_fn pub struct vortex_array::arrays::scalar_fn::AnyScalarFn @@ -3790,11 +3622,11 @@ pub fn vortex_array::arrays::scalar_fn::AnyScalarFn::fmt(&self, f: &mut core::fm impl vortex_array::matcher::Matcher for vortex_array::arrays::scalar_fn::AnyScalarFn -pub type vortex_array::arrays::scalar_fn::AnyScalarFn::Match<'a> = &'a vortex_array::arrays::scalar_fn::ScalarFnArray +pub type vortex_array::arrays::scalar_fn::AnyScalarFn::Match<'a> = vortex_array::ArrayView<'a, vortex_array::arrays::scalar_fn::ScalarFnVTable> -pub fn vortex_array::arrays::scalar_fn::AnyScalarFn::matches(array: &dyn vortex_array::DynArray) -> bool +pub fn vortex_array::arrays::scalar_fn::AnyScalarFn::matches(array: &vortex_array::ArrayRef) -> bool -pub fn vortex_array::arrays::scalar_fn::AnyScalarFn::try_match(array: &dyn vortex_array::DynArray) -> core::option::Option +pub fn vortex_array::arrays::scalar_fn::AnyScalarFn::try_match(array: &vortex_array::ArrayRef) -> core::option::Option pub struct vortex_array::arrays::scalar_fn::ExactScalarFn(_) @@ -3810,79 +3642,59 @@ impl vortex_array::matcher::Matcher pub type vortex_array::arrays::scalar_fn::ExactScalarFn::Match<'a> = vortex_array::arrays::scalar_fn::ScalarFnArrayView<'a, F> -pub fn vortex_array::arrays::scalar_fn::ExactScalarFn::matches(array: &dyn vortex_array::DynArray) -> bool - -pub fn vortex_array::arrays::scalar_fn::ExactScalarFn::try_match(array: &dyn vortex_array::DynArray) -> core::option::Option - -pub struct vortex_array::arrays::scalar_fn::ScalarFnArray - -impl vortex_array::arrays::scalar_fn::ScalarFnArray - -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::children(&self) -> alloc::vec::Vec - -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::get_child(&self, idx: usize) -> &vortex_array::ArrayRef - -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::iter_children(&self) -> impl core::iter::traits::iterator::Iterator + '_ - -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::nchildren(&self) -> usize - -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::scalar_fn(&self) -> &vortex_array::scalar_fn::ScalarFnRef +pub fn vortex_array::arrays::scalar_fn::ExactScalarFn::matches(array: &vortex_array::ArrayRef) -> bool -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::try_new(scalar_fn: vortex_array::scalar_fn::ScalarFnRef, children: alloc::vec::Vec, len: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ExactScalarFn::try_match(array: &vortex_array::ArrayRef) -> core::option::Option -impl vortex_array::arrays::scalar_fn::ScalarFnArray - -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::to_array(&self) -> vortex_array::ArrayRef - -impl core::clone::Clone for vortex_array::arrays::scalar_fn::ScalarFnArray +pub struct vortex_array::arrays::scalar_fn::ScalarFnArrayView<'a, F: vortex_array::scalar_fn::ScalarFnVTable> -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::clone(&self) -> vortex_array::arrays::scalar_fn::ScalarFnArray +pub vortex_array::arrays::scalar_fn::ScalarFnArrayView::options: &'a ::Options -impl core::convert::AsRef for vortex_array::arrays::scalar_fn::ScalarFnArray +pub vortex_array::arrays::scalar_fn::ScalarFnArrayView::vtable: &'a F -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::as_ref(&self) -> &dyn vortex_array::DynArray +impl core::ops::deref::Deref for vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, F> -impl core::convert::From for vortex_array::ArrayRef +pub type vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, F>::Target = vortex_array::ArrayRef -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::scalar_fn::ScalarFnArray) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, F>::deref(&self) -> &Self::Target -impl core::fmt::Debug for vortex_array::arrays::scalar_fn::ScalarFnArray +pub struct vortex_array::arrays::scalar_fn::ScalarFnData -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl vortex_array::arrays::scalar_fn::ScalarFnData -impl core::ops::deref::Deref for vortex_array::arrays::scalar_fn::ScalarFnArray +pub fn vortex_array::arrays::scalar_fn::ScalarFnData::children(&self) -> alloc::vec::Vec -pub type vortex_array::arrays::scalar_fn::ScalarFnArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::arrays::scalar_fn::ScalarFnData::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::deref(&self) -> &Self::Target +pub fn vortex_array::arrays::scalar_fn::ScalarFnData::get_child(&self, idx: usize) -> &vortex_array::ArrayRef -impl vortex_array::IntoArray for vortex_array::arrays::scalar_fn::ScalarFnArray +pub fn vortex_array::arrays::scalar_fn::ScalarFnData::is_empty(&self) -> bool -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::scalar_fn::ScalarFnData::iter_children(&self) -> impl core::iter::traits::iterator::Iterator + '_ -impl vortex_array::scalar_fn::ReduceNode for vortex_array::arrays::scalar_fn::ScalarFnArray +pub fn vortex_array::arrays::scalar_fn::ScalarFnData::len(&self) -> usize -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::as_any(&self) -> &dyn core::any::Any +pub fn vortex_array::arrays::scalar_fn::ScalarFnData::nchildren(&self) -> usize -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::child(&self, idx: usize) -> vortex_array::scalar_fn::ReduceNodeRef +pub fn vortex_array::arrays::scalar_fn::ScalarFnData::scalar_fn(&self) -> &vortex_array::scalar_fn::ScalarFnRef -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::child_count(&self) -> usize +pub fn vortex_array::arrays::scalar_fn::ScalarFnData::try_new(scalar_fn: vortex_array::scalar_fn::ScalarFnRef, children: alloc::vec::Vec, len: usize) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::node_dtype(&self) -> vortex_error::VortexResult +impl core::clone::Clone for vortex_array::arrays::scalar_fn::ScalarFnData -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::scalar_fn(&self) -> core::option::Option<&vortex_array::scalar_fn::ScalarFnRef> +pub fn vortex_array::arrays::scalar_fn::ScalarFnData::clone(&self) -> vortex_array::arrays::scalar_fn::ScalarFnData -pub struct vortex_array::arrays::scalar_fn::ScalarFnArrayView<'a, F: vortex_array::scalar_fn::ScalarFnVTable> +impl core::convert::From for vortex_array::ArrayRef -pub vortex_array::arrays::scalar_fn::ScalarFnArrayView::options: &'a ::Options +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::scalar_fn::ScalarFnData) -> vortex_array::ArrayRef -pub vortex_array::arrays::scalar_fn::ScalarFnArrayView::vtable: &'a F +impl core::fmt::Debug for vortex_array::arrays::scalar_fn::ScalarFnData -impl core::ops::deref::Deref for vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, F> +pub fn vortex_array::arrays::scalar_fn::ScalarFnData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub type vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, F>::Target = dyn vortex_array::DynArray +impl vortex_array::IntoArray for vortex_array::arrays::scalar_fn::ScalarFnData -pub fn vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, F>::deref(&self) -> &Self::Target +pub fn vortex_array::arrays::scalar_fn::ScalarFnData::into_array(self) -> vortex_array::ArrayRef pub struct vortex_array::arrays::scalar_fn::ScalarFnVTable @@ -3894,13 +3706,13 @@ impl core::fmt::Debug for vortex_array::arrays::scalar_fn::ScalarFnVTable pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::scalar_fn::ScalarFnVTable +impl vortex_array::OperationsVTable for vortex_array::arrays::scalar_fn::ScalarFnVTable -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::scalar_at(array: &vortex_array::arrays::scalar_fn::ScalarFnArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::scalar_fn::ScalarFnVTable>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::vtable::VTable for vortex_array::arrays::scalar_fn::ScalarFnVTable +impl vortex_array::VTable for vortex_array::arrays::scalar_fn::ScalarFnVTable -pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::Array = vortex_array::arrays::scalar_fn::ScalarFnArray +pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::ArrayData = vortex_array::arrays::scalar_fn::ScalarFnData pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::Metadata = vortex_array::arrays::scalar_fn::metadata::ScalarFnMetadata @@ -3908,59 +3720,59 @@ pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::OperationsVTable = vor pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::ValidityVTable = vortex_array::arrays::scalar_fn::ScalarFnVTable -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::array_eq(array: &vortex_array::arrays::scalar_fn::ScalarFnArray, other: &vortex_array::arrays::scalar_fn::ScalarFnArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::array_eq(array: &vortex_array::arrays::scalar_fn::ScalarFnData, other: &vortex_array::arrays::scalar_fn::ScalarFnData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::array_hash(array: &vortex_array::arrays::scalar_fn::ScalarFnArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::array_hash(array: &vortex_array::arrays::scalar_fn::ScalarFnData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::buffer(_array: &vortex_array::arrays::scalar_fn::ScalarFnArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::buffer_name(_array: &vortex_array::arrays::scalar_fn::ScalarFnArray, _idx: usize) -> core::option::Option +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::scalar_fn::metadata::ScalarFnMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::scalar_fn::metadata::ScalarFnMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::dtype(array: &vortex_array::arrays::scalar_fn::ScalarFnArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::dtype(array: &vortex_array::arrays::scalar_fn::ScalarFnData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::len(array: &vortex_array::arrays::scalar_fn::ScalarFnArray) -> usize +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::len(array: &vortex_array::arrays::scalar_fn::ScalarFnData) -> usize -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::metadata(array: &Self::Array) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::nbuffers(_array: &vortex_array::arrays::scalar_fn::ScalarFnArray) -> usize +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::slot_name(array: &vortex_array::arrays::scalar_fn::ScalarFnArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::slot_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::slots(array: &vortex_array::arrays::scalar_fn::ScalarFnArray) -> &[core::option::Option] +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::stats(array: &vortex_array::arrays::scalar_fn::ScalarFnArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::stats(array: &vortex_array::arrays::scalar_fn::ScalarFnData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::vtable(array: &Self::Array) -> &Self +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::vtable(array: &vortex_array::arrays::scalar_fn::ScalarFnData) -> &Self -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::with_slots(array: &mut vortex_array::arrays::scalar_fn::ScalarFnArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::scalar_fn::ScalarFnVTable +impl vortex_array::ValidityVTable for vortex_array::arrays::scalar_fn::ScalarFnVTable -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::validity(array: &vortex_array::arrays::scalar_fn::ScalarFnArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::scalar_fn::ScalarFnVTable>) -> vortex_error::VortexResult pub trait vortex_array::arrays::scalar_fn::ScalarFnArrayExt: vortex_array::scalar_fn::ScalarFnVTable @@ -3970,13 +3782,15 @@ impl vortex_array::arrays::scalar_fn pub fn V::try_new_array(&self, len: usize, options: Self::Options, children: impl core::convert::Into>) -> vortex_error::VortexResult +pub type vortex_array::arrays::scalar_fn::ScalarFnArray = vortex_array::Array + pub mod vortex_array::arrays::shared pub struct vortex_array::arrays::shared::Shared impl vortex_array::arrays::Shared -pub const vortex_array::arrays::Shared::ID: vortex_array::vtable::ArrayId +pub const vortex_array::arrays::Shared::ID: vortex_array::ArrayId impl core::clone::Clone for vortex_array::arrays::Shared @@ -3986,13 +3800,13 @@ impl core::fmt::Debug for vortex_array::arrays::Shared pub fn vortex_array::arrays::Shared::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Shared +impl vortex_array::OperationsVTable for vortex_array::arrays::Shared -pub fn vortex_array::arrays::Shared::scalar_at(array: &vortex_array::arrays::SharedArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Shared::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Shared>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::vtable::VTable for vortex_array::arrays::Shared +impl vortex_array::VTable for vortex_array::arrays::Shared -pub type vortex_array::arrays::Shared::Array = vortex_array::arrays::SharedArray +pub type vortex_array::arrays::Shared::ArrayData = vortex_array::arrays::shared::SharedData pub type vortex_array::arrays::Shared::Metadata = vortex_array::EmptyMetadata @@ -4000,99 +3814,93 @@ pub type vortex_array::arrays::Shared::OperationsVTable = vortex_array::arrays:: pub type vortex_array::arrays::Shared::ValidityVTable = vortex_array::arrays::Shared -pub fn vortex_array::arrays::Shared::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Shared::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Shared::array_eq(array: &vortex_array::arrays::SharedArray, other: &vortex_array::arrays::SharedArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Shared::array_eq(array: &vortex_array::arrays::shared::SharedData, other: &vortex_array::arrays::shared::SharedData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::Shared::array_hash(array: &vortex_array::arrays::SharedArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Shared::array_hash(array: &vortex_array::arrays::shared::SharedData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::Shared::buffer(_array: &Self::Array, _idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Shared::buffer(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Shared::buffer_name(_array: &Self::Array, _idx: usize) -> core::option::Option +pub fn vortex_array::arrays::Shared::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Shared::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Shared::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Shared::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Shared::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Shared::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Shared::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String pub fn vortex_array::arrays::Shared::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Shared::dtype(array: &vortex_array::arrays::SharedArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::Shared::dtype(array: &vortex_array::arrays::shared::SharedData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::Shared::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Shared::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Shared::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Shared::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Shared::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::Shared::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Shared::len(array: &vortex_array::arrays::SharedArray) -> usize +pub fn vortex_array::arrays::Shared::len(array: &vortex_array::arrays::shared::SharedData) -> usize -pub fn vortex_array::arrays::Shared::metadata(_array: &Self::Array) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Shared::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Shared::nbuffers(_array: &Self::Array) -> usize +pub fn vortex_array::arrays::Shared::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Shared::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::Shared::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Shared::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Shared::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Shared::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Shared::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> pub fn vortex_array::arrays::Shared::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Shared::slot_name(_array: &vortex_array::arrays::SharedArray, idx: usize) -> alloc::string::String - -pub fn vortex_array::arrays::Shared::slots(array: &vortex_array::arrays::SharedArray) -> &[core::option::Option] - -pub fn vortex_array::arrays::Shared::stats(array: &vortex_array::arrays::SharedArray) -> vortex_array::stats::StatsSetRef<'_> - -pub fn vortex_array::arrays::Shared::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::Shared::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Shared::with_slots(array: &mut Self::Array, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Shared::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Shared +pub fn vortex_array::arrays::Shared::stats(array: &vortex_array::arrays::shared::SharedData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Shared::validity(array: &vortex_array::arrays::SharedArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Shared::vtable(_array: &vortex_array::arrays::shared::SharedData) -> &Self -pub struct vortex_array::arrays::shared::SharedArray +pub fn vortex_array::arrays::Shared::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl vortex_array::arrays::SharedArray +impl vortex_array::ValidityVTable for vortex_array::arrays::Shared -pub fn vortex_array::arrays::SharedArray::get_or_compute(&self, f: impl core::ops::function::FnOnce(&vortex_array::ArrayRef) -> vortex_error::VortexResult) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Shared::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Shared>) -> vortex_error::VortexResult -pub async fn vortex_array::arrays::SharedArray::get_or_compute_async(&self, f: F) -> vortex_error::VortexResult where F: core::ops::function::FnOnce(vortex_array::ArrayRef) -> Fut, Fut: core::future::future::Future> +pub struct vortex_array::arrays::shared::SharedData -pub fn vortex_array::arrays::SharedArray::new(source: vortex_array::ArrayRef) -> Self +impl vortex_array::arrays::shared::SharedData -impl vortex_array::arrays::SharedArray +pub fn vortex_array::arrays::shared::SharedData::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::SharedArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::shared::SharedData::get_or_compute(&self, f: impl core::ops::function::FnOnce(&vortex_array::ArrayRef) -> vortex_error::VortexResult) -> vortex_error::VortexResult -impl core::clone::Clone for vortex_array::arrays::SharedArray +pub async fn vortex_array::arrays::shared::SharedData::get_or_compute_async(&self, f: F) -> vortex_error::VortexResult where F: core::ops::function::FnOnce(vortex_array::ArrayRef) -> Fut, Fut: core::future::future::Future> -pub fn vortex_array::arrays::SharedArray::clone(&self) -> vortex_array::arrays::SharedArray +pub fn vortex_array::arrays::shared::SharedData::is_empty(&self) -> bool -impl core::convert::AsRef for vortex_array::arrays::SharedArray +pub fn vortex_array::arrays::shared::SharedData::len(&self) -> usize -pub fn vortex_array::arrays::SharedArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::shared::SharedData::new(source: vortex_array::ArrayRef) -> Self -impl core::convert::From for vortex_array::ArrayRef +impl core::clone::Clone for vortex_array::arrays::shared::SharedData -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::SharedArray) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::shared::SharedData::clone(&self) -> vortex_array::arrays::shared::SharedData -impl core::fmt::Debug for vortex_array::arrays::SharedArray +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::SharedArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::shared::SharedData) -> vortex_array::ArrayRef -impl core::ops::deref::Deref for vortex_array::arrays::SharedArray +impl core::fmt::Debug for vortex_array::arrays::shared::SharedData -pub type vortex_array::arrays::SharedArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::arrays::shared::SharedData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::SharedArray::deref(&self) -> &Self::Target +impl vortex_array::IntoArray for vortex_array::arrays::shared::SharedData -impl vortex_array::IntoArray for vortex_array::arrays::SharedArray +pub fn vortex_array::arrays::shared::SharedData::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::SharedArray::into_array(self) -> vortex_array::ArrayRef +pub type vortex_array::arrays::shared::SharedArray = vortex_array::Array pub mod vortex_array::arrays::slice @@ -4100,7 +3908,7 @@ pub struct vortex_array::arrays::slice::Slice impl vortex_array::arrays::slice::Slice -pub const vortex_array::arrays::slice::Slice::ID: vortex_array::vtable::ArrayId +pub const vortex_array::arrays::slice::Slice::ID: vortex_array::ArrayId impl core::clone::Clone for vortex_array::arrays::slice::Slice @@ -4110,17 +3918,13 @@ impl core::fmt::Debug for vortex_array::arrays::slice::Slice pub fn vortex_array::arrays::slice::Slice::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::slice::Slice - -pub fn vortex_array::arrays::slice::Slice::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +impl vortex_array::OperationsVTable for vortex_array::arrays::slice::Slice -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::slice::Slice +pub fn vortex_array::arrays::slice::Slice::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::slice::Slice>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::slice::Slice::scalar_at(array: &vortex_array::arrays::slice::SliceArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::VTable for vortex_array::arrays::slice::Slice -impl vortex_array::vtable::VTable for vortex_array::arrays::slice::Slice - -pub type vortex_array::arrays::slice::Slice::Array = vortex_array::arrays::slice::SliceArray +pub type vortex_array::arrays::slice::Slice::ArrayData = vortex_array::arrays::slice::SliceData pub type vortex_array::arrays::slice::Slice::Metadata = vortex_array::arrays::slice::SliceMetadata @@ -4128,109 +3932,107 @@ pub type vortex_array::arrays::slice::Slice::OperationsVTable = vortex_array::ar pub type vortex_array::arrays::slice::Slice::ValidityVTable = vortex_array::arrays::slice::Slice -pub fn vortex_array::arrays::slice::Slice::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::slice::Slice::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::slice::Slice::array_eq(array: &vortex_array::arrays::slice::SliceArray, other: &vortex_array::arrays::slice::SliceArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::slice::Slice::array_eq(array: &vortex_array::arrays::slice::SliceData, other: &vortex_array::arrays::slice::SliceData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::slice::Slice::array_hash(array: &vortex_array::arrays::slice::SliceArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::slice::Slice::array_hash(array: &vortex_array::arrays::slice::SliceData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::slice::Slice::buffer(_array: &Self::Array, _idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::slice::Slice::buffer(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::slice::Slice::buffer_name(_array: &Self::Array, _idx: usize) -> core::option::Option +pub fn vortex_array::arrays::slice::Slice::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::arrays::slice::Slice::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::slice::SliceMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::slice::Slice::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::slice::SliceMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::slice::Slice::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::slice::Slice::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::slice::Slice::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::slice::Slice::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String pub fn vortex_array::arrays::slice::Slice::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::slice::Slice::dtype(array: &vortex_array::arrays::slice::SliceArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::slice::Slice::dtype(array: &vortex_array::arrays::slice::SliceData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::slice::Slice::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::slice::Slice::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::slice::Slice::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::slice::Slice::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::slice::Slice::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::slice::Slice::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::slice::Slice::len(array: &vortex_array::arrays::slice::SliceArray) -> usize +pub fn vortex_array::arrays::slice::Slice::len(array: &vortex_array::arrays::slice::SliceData) -> usize -pub fn vortex_array::arrays::slice::Slice::metadata(array: &Self::Array) -> vortex_error::VortexResult +pub fn vortex_array::arrays::slice::Slice::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::slice::Slice::nbuffers(_array: &Self::Array) -> usize +pub fn vortex_array::arrays::slice::Slice::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::slice::Slice::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::slice::Slice::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::slice::Slice::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::slice::Slice::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::slice::Slice::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::slice::Slice::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> pub fn vortex_array::arrays::slice::Slice::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::slice::Slice::slot_name(_array: &Self::Array, idx: usize) -> alloc::string::String - -pub fn vortex_array::arrays::slice::Slice::slots(array: &Self::Array) -> &[core::option::Option] +pub fn vortex_array::arrays::slice::Slice::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::slice::Slice::stats(array: &vortex_array::arrays::slice::SliceArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::slice::Slice::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::slice::Slice::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::slice::Slice::stats(array: &vortex_array::arrays::slice::SliceData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::slice::Slice::with_slots(array: &mut Self::Array, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::slice::Slice::vtable(_array: &vortex_array::arrays::slice::SliceData) -> &Self -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::slice::Slice +pub fn vortex_array::arrays::slice::Slice::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::slice::Slice::validity(array: &vortex_array::arrays::slice::SliceArray) -> vortex_error::VortexResult +impl vortex_array::ValidityVTable for vortex_array::arrays::slice::Slice -pub struct vortex_array::arrays::slice::SliceArray +pub fn vortex_array::arrays::slice::Slice::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::slice::Slice>) -> vortex_error::VortexResult -impl vortex_array::arrays::slice::SliceArray +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::slice::Slice -pub fn vortex_array::arrays::slice::SliceArray::child(&self) -> &vortex_array::ArrayRef +pub fn vortex_array::arrays::slice::Slice::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::slice::SliceArray::into_parts(self) -> vortex_array::arrays::slice::SliceArrayParts +pub struct vortex_array::arrays::slice::SliceArrayParts -pub fn vortex_array::arrays::slice::SliceArray::new(child: vortex_array::ArrayRef, range: core::ops::range::Range) -> Self +pub vortex_array::arrays::slice::SliceArrayParts::child: vortex_array::ArrayRef -pub fn vortex_array::arrays::slice::SliceArray::slice_range(&self) -> &core::ops::range::Range +pub vortex_array::arrays::slice::SliceArrayParts::range: core::ops::range::Range -pub fn vortex_array::arrays::slice::SliceArray::try_new(child: vortex_array::ArrayRef, range: core::ops::range::Range) -> vortex_error::VortexResult +pub struct vortex_array::arrays::slice::SliceData -impl vortex_array::arrays::slice::SliceArray +impl vortex_array::arrays::slice::SliceData -pub fn vortex_array::arrays::slice::SliceArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::slice::SliceData::child(&self) -> &vortex_array::ArrayRef -impl core::clone::Clone for vortex_array::arrays::slice::SliceArray +pub fn vortex_array::arrays::slice::SliceData::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::slice::SliceArray::clone(&self) -> vortex_array::arrays::slice::SliceArray +pub fn vortex_array::arrays::slice::SliceData::is_empty(&self) -> bool -impl core::convert::AsRef for vortex_array::arrays::slice::SliceArray +pub fn vortex_array::arrays::slice::SliceData::len(&self) -> usize -pub fn vortex_array::arrays::slice::SliceArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::slice::SliceData::new(child: vortex_array::ArrayRef, range: core::ops::range::Range) -> Self -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::arrays::slice::SliceData::slice_range(&self) -> &core::ops::range::Range -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::slice::SliceArray) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::slice::SliceData::try_new(child: vortex_array::ArrayRef, range: core::ops::range::Range) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::arrays::slice::SliceArray +impl vortex_array::arrays::slice::SliceData -pub fn vortex_array::arrays::slice::SliceArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::slice::SliceData::into_parts(self) -> vortex_array::arrays::slice::SliceArrayParts -impl core::ops::deref::Deref for vortex_array::arrays::slice::SliceArray +impl core::clone::Clone for vortex_array::arrays::slice::SliceData -pub type vortex_array::arrays::slice::SliceArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::arrays::slice::SliceData::clone(&self) -> vortex_array::arrays::slice::SliceData -pub fn vortex_array::arrays::slice::SliceArray::deref(&self) -> &Self::Target +impl core::convert::From for vortex_array::ArrayRef -impl vortex_array::IntoArray for vortex_array::arrays::slice::SliceArray +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::slice::SliceData) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::slice::SliceArray::into_array(self) -> vortex_array::ArrayRef +impl core::fmt::Debug for vortex_array::arrays::slice::SliceData -pub struct vortex_array::arrays::slice::SliceArrayParts +pub fn vortex_array::arrays::slice::SliceData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub vortex_array::arrays::slice::SliceArrayParts::child: vortex_array::ArrayRef +impl vortex_array::IntoArray for vortex_array::arrays::slice::SliceData -pub vortex_array::arrays::slice::SliceArrayParts::range: core::ops::range::Range +pub fn vortex_array::arrays::slice::SliceData::into_array(self) -> vortex_array::ArrayRef pub struct vortex_array::arrays::slice::SliceExecuteAdaptor(pub V) @@ -4246,7 +4048,7 @@ impl vortex_array::kernel::ExecuteParentKernel for vortex_array::arrays::s pub type vortex_array::arrays::slice::SliceExecuteAdaptor::Parent = vortex_array::arrays::slice::Slice -pub fn vortex_array::arrays::slice::SliceExecuteAdaptor::execute_parent(&self, array: &::Array, parent: ::Match, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::slice::SliceExecuteAdaptor::execute_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: ::Match, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> pub struct vortex_array::arrays::slice::SliceMetadata(_) @@ -4268,83 +4070,85 @@ impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_arra pub type vortex_array::arrays::slice::SliceReduceAdaptor::Parent = vortex_array::arrays::slice::Slice -pub fn vortex_array::arrays::slice::SliceReduceAdaptor::reduce_parent(&self, array: &::Array, parent: ::Match, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::slice::SliceReduceAdaptor::reduce_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: ::Match, child_idx: usize) -> vortex_error::VortexResult> -pub trait vortex_array::arrays::slice::SliceKernel: vortex_array::vtable::VTable +pub trait vortex_array::arrays::slice::SliceKernel: vortex_array::VTable -pub fn vortex_array::arrays::slice::SliceKernel::slice(array: &Self::Array, range: core::ops::range::Range, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::slice::SliceKernel::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> impl vortex_array::arrays::slice::SliceKernel for vortex_array::arrays::Chunked -pub fn vortex_array::arrays::Chunked::slice(array: &Self::Array, range: core::ops::range::Range, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Chunked::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub trait vortex_array::arrays::slice::SliceReduce: vortex_array::vtable::VTable +pub trait vortex_array::arrays::slice::SliceReduce: vortex_array::VTable -pub fn vortex_array::arrays::slice::SliceReduce::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::slice::SliceReduce::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Bool -pub fn vortex_array::arrays::Bool::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Bool::slice(array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>, range: core::ops::range::Range) -> vortex_error::VortexResult> impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Constant -pub fn vortex_array::arrays::Constant::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Constant::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Decimal -pub fn vortex_array::arrays::Decimal::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Decimal::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Extension -pub fn vortex_array::arrays::Extension::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Extension::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::FixedSizeList -pub fn vortex_array::arrays::FixedSizeList::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::FixedSizeList::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::List -pub fn vortex_array::arrays::List::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::List::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::ListView -pub fn vortex_array::arrays::ListView::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::ListView::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Masked -pub fn vortex_array::arrays::Masked::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Masked::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Primitive -pub fn vortex_array::arrays::Primitive::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Primitive::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Struct -pub fn vortex_array::arrays::Struct::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::VarBin -pub fn vortex_array::arrays::VarBin::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::VarBinView -pub fn vortex_array::arrays::VarBinView::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBinView::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::dict::Dict::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::null::Null -pub fn vortex_array::arrays::null::Null::slice(_array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::null::Null::slice(_array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::patched::Patched -pub fn vortex_array::arrays::patched::Patched::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::patched::Patched::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::slice::Slice -pub fn vortex_array::arrays::slice::Slice::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::slice::Slice::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> + +pub type vortex_array::arrays::slice::SliceArray = vortex_array::Array pub mod vortex_array::arrays::struct_ @@ -4352,7 +4156,7 @@ pub struct vortex_array::arrays::struct_::Struct impl vortex_array::arrays::Struct -pub const vortex_array::arrays::Struct::ID: vortex_array::vtable::ArrayId +pub const vortex_array::arrays::Struct::ID: vortex_array::ArrayId impl core::clone::Clone for vortex_array::arrays::Struct @@ -4362,33 +4166,13 @@ impl core::fmt::Debug for vortex_array::arrays::Struct pub fn vortex_array::arrays::Struct::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::TakeReduce for vortex_array::arrays::Struct - -pub fn vortex_array::arrays::Struct::take(array: &vortex_array::arrays::StructArray, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> - -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Struct - -pub fn vortex_array::arrays::Struct::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::cast::CastKernel for vortex_array::arrays::Struct - -pub fn vortex_array::arrays::Struct::cast(array: &vortex_array::arrays::StructArray, dtype: &vortex_array::dtype::DType, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Struct - -pub fn vortex_array::arrays::Struct::mask(array: &vortex_array::arrays::StructArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::zip::ZipKernel for vortex_array::arrays::Struct - -pub fn vortex_array::arrays::Struct::zip(if_true: &vortex_array::arrays::StructArray, if_false: &vortex_array::ArrayRef, mask: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::OperationsVTable for vortex_array::arrays::Struct -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Struct +pub fn vortex_array::arrays::Struct::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Struct>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Struct::scalar_at(array: &vortex_array::arrays::StructArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::VTable for vortex_array::arrays::Struct -impl vortex_array::vtable::VTable for vortex_array::arrays::Struct - -pub type vortex_array::arrays::Struct::Array = vortex_array::arrays::StructArray +pub type vortex_array::arrays::Struct::ArrayData = vortex_array::arrays::struct_::StructData pub type vortex_array::arrays::Struct::Metadata = vortex_array::EmptyMetadata @@ -4396,153 +4180,161 @@ pub type vortex_array::arrays::Struct::OperationsVTable = vortex_array::arrays:: pub type vortex_array::arrays::Struct::ValidityVTable = vortex_array::arrays::Struct -pub fn vortex_array::arrays::Struct::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Struct::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Struct::array_eq(array: &vortex_array::arrays::StructArray, other: &vortex_array::arrays::StructArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Struct::array_eq(array: &vortex_array::arrays::struct_::StructData, other: &vortex_array::arrays::struct_::StructData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::Struct::array_hash(array: &vortex_array::arrays::StructArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Struct::array_hash(array: &vortex_array::arrays::struct_::StructData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::Struct::buffer(_array: &vortex_array::arrays::StructArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Struct::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Struct::buffer_name(_array: &vortex_array::arrays::StructArray, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::Struct::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Struct::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Struct::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Struct::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Struct::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Struct::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Struct::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String pub fn vortex_array::arrays::Struct::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Struct::dtype(array: &vortex_array::arrays::StructArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::Struct::dtype(array: &vortex_array::arrays::struct_::StructData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::Struct::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Struct::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Struct::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Struct::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::Struct::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Struct::len(array: &vortex_array::arrays::StructArray) -> usize +pub fn vortex_array::arrays::Struct::len(array: &vortex_array::arrays::struct_::StructData) -> usize -pub fn vortex_array::arrays::Struct::metadata(_array: &vortex_array::arrays::StructArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Struct::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Struct::nbuffers(_array: &vortex_array::arrays::StructArray) -> usize +pub fn vortex_array::arrays::Struct::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Struct::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::Struct::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Struct::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Struct::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> pub fn vortex_array::arrays::Struct::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Struct::slot_name(array: &vortex_array::arrays::StructArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Struct::slot_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Struct::slots(array: &vortex_array::arrays::StructArray) -> &[core::option::Option] +pub fn vortex_array::arrays::Struct::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::Struct::stats(array: &vortex_array::arrays::StructArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::Struct::stats(array: &vortex_array::arrays::struct_::StructData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Struct::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::Struct::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::Struct::with_slots(array: &mut vortex_array::arrays::StructArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Struct::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Struct +impl vortex_array::ValidityVTable for vortex_array::arrays::Struct -pub fn vortex_array::arrays::Struct::validity(array: &vortex_array::arrays::StructArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Struct::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Struct>) -> vortex_error::VortexResult -pub struct vortex_array::arrays::struct_::StructArray +impl vortex_array::arrays::dict::TakeReduce for vortex_array::arrays::Struct -impl vortex_array::arrays::StructArray +pub fn vortex_array::arrays::Struct::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::Struct>, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::StructArray::from_fields>(items: &[(N, vortex_array::ArrayRef)]) -> vortex_error::VortexResult +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Struct -pub fn vortex_array::arrays::StructArray::into_fields(self) -> alloc::vec::Vec +pub fn vortex_array::arrays::Struct::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::StructArray::into_parts(self) -> vortex_array::arrays::struct_::StructArrayParts +impl vortex_array::scalar_fn::fns::cast::CastKernel for vortex_array::arrays::Struct -pub fn vortex_array::arrays::StructArray::iter_unmasked_fields(&self) -> impl core::iter::traits::iterator::Iterator + '_ +pub fn vortex_array::arrays::Struct::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::Struct>, dtype: &vortex_array::dtype::DType, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::StructArray::names(&self) -> &vortex_array::dtype::FieldNames +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Struct -pub fn vortex_array::arrays::StructArray::new(names: vortex_array::dtype::FieldNames, fields: impl core::convert::Into>, length: usize, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::arrays::Struct::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::Struct>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::StructArray::new_fieldless_with_len(len: usize) -> Self +impl vortex_array::scalar_fn::fns::zip::ZipKernel for vortex_array::arrays::Struct -pub unsafe fn vortex_array::arrays::StructArray::new_unchecked(fields: impl core::convert::Into>, dtype: vortex_array::dtype::StructFields, length: usize, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::arrays::Struct::zip(if_true: vortex_array::ArrayView<'_, vortex_array::arrays::Struct>, if_false: &vortex_array::ArrayRef, mask: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::StructArray::project(&self, projection: &[vortex_array::dtype::FieldName]) -> vortex_error::VortexResult +pub struct vortex_array::arrays::struct_::StructArrayParts -pub fn vortex_array::arrays::StructArray::remove_column(&mut self, name: impl core::convert::Into) -> core::option::Option +pub vortex_array::arrays::struct_::StructArrayParts::fields: alloc::sync::Arc<[vortex_array::ArrayRef]> -pub fn vortex_array::arrays::StructArray::struct_fields(&self) -> &vortex_array::dtype::StructFields +pub vortex_array::arrays::struct_::StructArrayParts::struct_fields: vortex_array::dtype::StructFields -pub fn vortex_array::arrays::StructArray::try_from_iter, A: vortex_array::IntoArray, T: core::iter::traits::collect::IntoIterator>(iter: T) -> vortex_error::VortexResult +pub vortex_array::arrays::struct_::StructArrayParts::validity: vortex_array::validity::Validity -pub fn vortex_array::arrays::StructArray::try_from_iter_with_validity, A: vortex_array::IntoArray, T: core::iter::traits::collect::IntoIterator>(iter: T, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +pub struct vortex_array::arrays::struct_::StructData -pub fn vortex_array::arrays::StructArray::try_new(names: vortex_array::dtype::FieldNames, fields: impl core::convert::Into>, length: usize, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +impl vortex_array::arrays::struct_::StructData -pub fn vortex_array::arrays::StructArray::try_new_with_dtype(fields: impl core::convert::Into>, dtype: vortex_array::dtype::StructFields, length: usize, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +pub fn vortex_array::arrays::struct_::StructData::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::StructArray::unmasked_field(&self, idx: usize) -> &vortex_array::ArrayRef +pub fn vortex_array::arrays::struct_::StructData::from_fields>(items: &[(N, vortex_array::ArrayRef)]) -> vortex_error::VortexResult -pub fn vortex_array::arrays::StructArray::unmasked_field_by_name(&self, name: impl core::convert::AsRef) -> vortex_error::VortexResult<&vortex_array::ArrayRef> +pub fn vortex_array::arrays::struct_::StructData::into_fields(self) -> alloc::vec::Vec -pub fn vortex_array::arrays::StructArray::unmasked_field_by_name_opt(&self, name: impl core::convert::AsRef) -> core::option::Option<&vortex_array::ArrayRef> +pub fn vortex_array::arrays::struct_::StructData::into_parts(self) -> vortex_array::arrays::struct_::StructArrayParts -pub fn vortex_array::arrays::StructArray::unmasked_fields(&self) -> alloc::sync::Arc<[vortex_array::ArrayRef]> +pub fn vortex_array::arrays::struct_::StructData::is_empty(&self) -> bool -pub fn vortex_array::arrays::StructArray::validate(fields: &[vortex_array::ArrayRef], dtype: &vortex_array::dtype::StructFields, length: usize, validity: &vortex_array::validity::Validity) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::struct_::StructData::iter_unmasked_fields(&self) -> impl core::iter::traits::iterator::Iterator + '_ -pub fn vortex_array::arrays::StructArray::validity(&self) -> vortex_array::validity::Validity +pub fn vortex_array::arrays::struct_::StructData::len(&self) -> usize -pub fn vortex_array::arrays::StructArray::with_column(&self, name: impl core::convert::Into, array: vortex_array::ArrayRef) -> vortex_error::VortexResult +pub fn vortex_array::arrays::struct_::StructData::names(&self) -> &vortex_array::dtype::FieldNames -impl vortex_array::arrays::StructArray +pub fn vortex_array::arrays::struct_::StructData::new(names: vortex_array::dtype::FieldNames, fields: impl core::convert::Into>, length: usize, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::arrays::StructArray::into_record_batch_with_schema(self, schema: impl core::convert::AsRef) -> vortex_error::VortexResult +pub fn vortex_array::arrays::struct_::StructData::new_fieldless_with_len(len: usize) -> Self -impl vortex_array::arrays::StructArray +pub unsafe fn vortex_array::arrays::struct_::StructData::new_unchecked(fields: impl core::convert::Into>, dtype: vortex_array::dtype::StructFields, length: usize, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::arrays::StructArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::struct_::StructData::project(&self, projection: &[vortex_array::dtype::FieldName]) -> vortex_error::VortexResult -impl core::clone::Clone for vortex_array::arrays::StructArray +pub fn vortex_array::arrays::struct_::StructData::remove_column(&mut self, name: impl core::convert::Into) -> core::option::Option -pub fn vortex_array::arrays::StructArray::clone(&self) -> vortex_array::arrays::StructArray +pub fn vortex_array::arrays::struct_::StructData::struct_fields(&self) -> &vortex_array::dtype::StructFields -impl core::convert::AsRef for vortex_array::arrays::StructArray +pub fn vortex_array::arrays::struct_::StructData::try_from_iter, A: vortex_array::IntoArray, T: core::iter::traits::collect::IntoIterator>(iter: T) -> vortex_error::VortexResult -pub fn vortex_array::arrays::StructArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::struct_::StructData::try_from_iter_with_validity, A: vortex_array::IntoArray, T: core::iter::traits::collect::IntoIterator>(iter: T, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::arrays::struct_::StructData::try_new(names: vortex_array::dtype::FieldNames, fields: impl core::convert::Into>, length: usize, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::StructArray) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::struct_::StructData::try_new_with_dtype(fields: impl core::convert::Into>, dtype: vortex_array::dtype::StructFields, length: usize, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::arrays::StructArray +pub fn vortex_array::arrays::struct_::StructData::unmasked_field(&self, idx: usize) -> &vortex_array::ArrayRef -pub fn vortex_array::arrays::StructArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::struct_::StructData::unmasked_field_by_name(&self, name: impl core::convert::AsRef) -> vortex_error::VortexResult<&vortex_array::ArrayRef> -impl core::ops::deref::Deref for vortex_array::arrays::StructArray +pub fn vortex_array::arrays::struct_::StructData::unmasked_field_by_name_opt(&self, name: impl core::convert::AsRef) -> core::option::Option<&vortex_array::ArrayRef> -pub type vortex_array::arrays::StructArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::arrays::struct_::StructData::unmasked_fields(&self) -> alloc::sync::Arc<[vortex_array::ArrayRef]> -pub fn vortex_array::arrays::StructArray::deref(&self) -> &Self::Target +pub fn vortex_array::arrays::struct_::StructData::validate(fields: &[vortex_array::ArrayRef], dtype: &vortex_array::dtype::StructFields, length: usize, validity: &vortex_array::validity::Validity) -> vortex_error::VortexResult<()> -impl vortex_array::Executable for vortex_array::arrays::StructArray +pub fn vortex_array::arrays::struct_::StructData::validity(&self) -> vortex_array::validity::Validity -pub fn vortex_array::arrays::StructArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::arrays::struct_::StructData -impl vortex_array::IntoArray for vortex_array::arrays::StructArray +pub fn vortex_array::arrays::struct_::StructData::with_column(&self, name: impl core::convert::Into, array: vortex_array::ArrayRef) -> vortex_error::VortexResult -pub fn vortex_array::arrays::StructArray::into_array(self) -> vortex_array::ArrayRef +impl core::clone::Clone for vortex_array::arrays::struct_::StructData -pub struct vortex_array::arrays::struct_::StructArrayParts +pub fn vortex_array::arrays::struct_::StructData::clone(&self) -> vortex_array::arrays::struct_::StructData -pub vortex_array::arrays::struct_::StructArrayParts::fields: alloc::sync::Arc<[vortex_array::ArrayRef]> +impl core::convert::From for vortex_array::ArrayRef -pub vortex_array::arrays::struct_::StructArrayParts::struct_fields: vortex_array::dtype::StructFields +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::struct_::StructData) -> vortex_array::ArrayRef -pub vortex_array::arrays::struct_::StructArrayParts::validity: vortex_array::validity::Validity +impl core::fmt::Debug for vortex_array::arrays::struct_::StructData + +pub fn vortex_array::arrays::struct_::StructData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl vortex_array::IntoArray for vortex_array::arrays::struct_::StructData + +pub fn vortex_array::arrays::struct_::StructData::into_array(self) -> vortex_array::ArrayRef + +pub type vortex_array::arrays::struct_::StructArray = vortex_array::Array pub mod vortex_array::arrays::varbin @@ -4576,11 +4368,11 @@ pub struct vortex_array::arrays::varbin::VarBin impl vortex_array::arrays::VarBin -pub const vortex_array::arrays::VarBin::ID: vortex_array::vtable::ArrayId +pub const vortex_array::arrays::VarBin::ID: vortex_array::ArrayId impl vortex_array::arrays::VarBin -pub fn vortex_array::arrays::VarBin::_slice(array: &vortex_array::arrays::VarBinArray, range: core::ops::range::Range) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBin::_slice(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBin>, range: core::ops::range::Range) -> vortex_error::VortexResult impl core::clone::Clone for vortex_array::arrays::VarBin @@ -4590,226 +4382,216 @@ impl core::fmt::Debug for vortex_array::arrays::VarBin pub fn vortex_array::arrays::VarBin::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::VarBin - -pub fn vortex_array::arrays::VarBin::take(array: &vortex_array::arrays::VarBinArray, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::OperationsVTable for vortex_array::arrays::VarBin -impl vortex_array::arrays::filter::FilterKernel for vortex_array::arrays::VarBin - -pub fn vortex_array::arrays::VarBin::filter(array: &vortex_array::arrays::VarBinArray, mask: &vortex_mask::Mask, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::VarBin - -pub fn vortex_array::arrays::VarBin::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::binary::CompareKernel for vortex_array::arrays::VarBin - -pub fn vortex_array::arrays::VarBin::compare(lhs: &vortex_array::arrays::VarBinArray, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBin>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::VarBin +impl vortex_array::VTable for vortex_array::arrays::VarBin -pub fn vortex_array::arrays::VarBin::cast(array: &vortex_array::arrays::VarBinArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub type vortex_array::arrays::VarBin::ArrayData = vortex_array::arrays::varbin::VarBinData -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::VarBin +pub type vortex_array::arrays::VarBin::Metadata = vortex_array::ProstMetadata -pub fn vortex_array::arrays::VarBin::mask(array: &vortex_array::arrays::VarBinArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub type vortex_array::arrays::VarBin::OperationsVTable = vortex_array::arrays::VarBin -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::VarBin +pub type vortex_array::arrays::VarBin::ValidityVTable = vortex_array::arrays::VarBin -pub fn vortex_array::arrays::VarBin::scalar_at(array: &vortex_array::arrays::VarBinArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBin::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl vortex_array::vtable::VTable for vortex_array::arrays::VarBin +pub fn vortex_array::arrays::VarBin::array_eq(array: &vortex_array::arrays::varbin::VarBinData, other: &vortex_array::arrays::varbin::VarBinData, precision: vortex_array::Precision) -> bool -pub type vortex_array::arrays::VarBin::Array = vortex_array::arrays::VarBinArray +pub fn vortex_array::arrays::VarBin::array_hash(array: &vortex_array::arrays::varbin::VarBinData, state: &mut H, precision: vortex_array::Precision) -pub type vortex_array::arrays::VarBin::Metadata = vortex_array::ProstMetadata +pub fn vortex_array::arrays::VarBin::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub type vortex_array::arrays::VarBin::OperationsVTable = vortex_array::arrays::VarBin +pub fn vortex_array::arrays::VarBin::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub type vortex_array::arrays::VarBin::ValidityVTable = vortex_array::arrays::VarBin +pub fn vortex_array::arrays::VarBin::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBin::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::VarBin::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::VarBin::array_eq(array: &vortex_array::arrays::VarBinArray, other: &vortex_array::arrays::VarBinArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::VarBin::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::VarBin::array_hash(array: &vortex_array::arrays::VarBinArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::VarBin::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBin::buffer(array: &vortex_array::arrays::VarBinArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::VarBin::dtype(array: &vortex_array::arrays::varbin::VarBinData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::VarBin::buffer_name(_array: &vortex_array::arrays::VarBinArray, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::VarBin::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBin::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBin::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::VarBin::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::VarBin::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::VarBin::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::VarBin::len(array: &vortex_array::arrays::varbin::VarBinData) -> usize -pub fn vortex_array::arrays::VarBin::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBin::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBin::dtype(array: &vortex_array::arrays::VarBinArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::VarBin::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::VarBin::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBin::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::VarBin::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::VarBin::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::VarBin::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::VarBin::len(array: &vortex_array::arrays::VarBinArray) -> usize +pub fn vortex_array::arrays::VarBin::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::VarBin::metadata(array: &vortex_array::arrays::VarBinArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBin::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::VarBin::nbuffers(_array: &vortex_array::arrays::VarBinArray) -> usize +pub fn vortex_array::arrays::VarBin::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::VarBin::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::VarBin::stats(array: &vortex_array::arrays::varbin::VarBinData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::VarBin::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::vtable(_array: &vortex_array::arrays::varbin::VarBinData) -> &Self -pub fn vortex_array::arrays::VarBin::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::VarBin::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +impl vortex_array::ValidityVTable for vortex_array::arrays::VarBin -pub fn vortex_array::arrays::VarBin::slot_name(_array: &vortex_array::arrays::VarBinArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::VarBin::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBin>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBin::slots(array: &vortex_array::arrays::VarBinArray) -> &[core::option::Option] +impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::VarBin -pub fn vortex_array::arrays::VarBin::stats(array: &vortex_array::arrays::VarBinArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::VarBin::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBin>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::VarBin::vtable(_array: &Self::Array) -> &Self +impl vortex_array::arrays::filter::FilterKernel for vortex_array::arrays::VarBin -pub fn vortex_array::arrays::VarBin::with_slots(array: &mut vortex_array::arrays::VarBinArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::VarBin::filter(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBin>, mask: &vortex_mask::Mask, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::VarBin +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::VarBin -pub fn vortex_array::arrays::VarBin::validity(array: &vortex_array::arrays::VarBinArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBin::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub struct vortex_array::arrays::varbin::VarBinArray +impl vortex_array::scalar_fn::fns::binary::CompareKernel for vortex_array::arrays::VarBin -impl vortex_array::arrays::VarBinArray +pub fn vortex_array::arrays::VarBin::compare(lhs: vortex_array::ArrayView<'_, vortex_array::arrays::VarBin>, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::VarBinArray::bytes(&self) -> &vortex_buffer::ByteBuffer +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::VarBin -pub fn vortex_array::arrays::VarBinArray::bytes_at(&self, index: usize) -> vortex_buffer::ByteBuffer +pub fn vortex_array::arrays::VarBin::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBin>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::VarBinArray::bytes_handle(&self) -> &vortex_array::buffer::BufferHandle +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::VarBin -pub fn vortex_array::arrays::VarBinArray::from_iter, I: core::iter::traits::collect::IntoIterator>>(iter: I, dtype: vortex_array::dtype::DType) -> Self +pub fn vortex_array::arrays::VarBin::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBin>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::VarBinArray::from_iter_nonnull, I: core::iter::traits::collect::IntoIterator>(iter: I, dtype: vortex_array::dtype::DType) -> Self +pub struct vortex_array::arrays::varbin::VarBinData -pub fn vortex_array::arrays::VarBinArray::from_vec>(vec: alloc::vec::Vec, dtype: vortex_array::dtype::DType) -> Self +impl vortex_array::arrays::varbin::VarBinData -pub fn vortex_array::arrays::VarBinArray::into_parts(self) -> (vortex_array::dtype::DType, vortex_array::buffer::BufferHandle, vortex_array::ArrayRef, vortex_array::validity::Validity) +pub fn vortex_array::arrays::varbin::VarBinData::bytes(&self) -> &vortex_buffer::ByteBuffer -pub fn vortex_array::arrays::VarBinArray::new(offsets: vortex_array::ArrayRef, bytes: vortex_buffer::ByteBuffer, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::arrays::varbin::VarBinData::bytes_handle(&self) -> &vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::VarBinArray::new_from_handle(offset: vortex_array::ArrayRef, bytes: vortex_array::buffer::BufferHandle, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::arrays::varbin::VarBinData::dtype(&self) -> &vortex_array::dtype::DType -pub unsafe fn vortex_array::arrays::VarBinArray::new_unchecked(offsets: vortex_array::ArrayRef, bytes: vortex_buffer::ByteBuffer, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::arrays::varbin::VarBinData::from_iter, I: core::iter::traits::collect::IntoIterator>>(iter: I, dtype: vortex_array::dtype::DType) -> Self -pub unsafe fn vortex_array::arrays::VarBinArray::new_unchecked_from_handle(offsets: vortex_array::ArrayRef, bytes: vortex_array::buffer::BufferHandle, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::arrays::varbin::VarBinData::from_iter_nonnull, I: core::iter::traits::collect::IntoIterator>(iter: I, dtype: vortex_array::dtype::DType) -> Self -pub fn vortex_array::arrays::VarBinArray::offset_at(&self, index: usize) -> usize +pub fn vortex_array::arrays::varbin::VarBinData::from_vec>(vec: alloc::vec::Vec, dtype: vortex_array::dtype::DType) -> Self -pub fn vortex_array::arrays::VarBinArray::offsets(&self) -> &vortex_array::ArrayRef +pub fn vortex_array::arrays::varbin::VarBinData::is_empty(&self) -> bool -pub fn vortex_array::arrays::VarBinArray::sliced_bytes(&self) -> vortex_buffer::ByteBuffer +pub fn vortex_array::arrays::varbin::VarBinData::len(&self) -> usize -pub fn vortex_array::arrays::VarBinArray::try_new(offsets: vortex_array::ArrayRef, bytes: vortex_buffer::ByteBuffer, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +pub fn vortex_array::arrays::varbin::VarBinData::new(offsets: vortex_array::ArrayRef, bytes: vortex_buffer::ByteBuffer, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::arrays::VarBinArray::try_new_from_handle(offsets: vortex_array::ArrayRef, bytes: vortex_array::buffer::BufferHandle, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +pub fn vortex_array::arrays::varbin::VarBinData::new_from_handle(offset: vortex_array::ArrayRef, bytes: vortex_array::buffer::BufferHandle, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::arrays::VarBinArray::validate(offsets: &vortex_array::ArrayRef, bytes: &vortex_array::buffer::BufferHandle, dtype: &vortex_array::dtype::DType, validity: &vortex_array::validity::Validity) -> vortex_error::VortexResult<()> +pub unsafe fn vortex_array::arrays::varbin::VarBinData::new_unchecked(offsets: vortex_array::ArrayRef, bytes: vortex_buffer::ByteBuffer, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::arrays::VarBinArray::validity(&self) -> vortex_array::validity::Validity +pub unsafe fn vortex_array::arrays::varbin::VarBinData::new_unchecked_from_handle(offsets: vortex_array::ArrayRef, bytes: vortex_array::buffer::BufferHandle, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self -impl vortex_array::arrays::VarBinArray +pub fn vortex_array::arrays::varbin::VarBinData::offsets(&self) -> &vortex_array::ArrayRef -pub fn vortex_array::arrays::VarBinArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::varbin::VarBinData::sliced_bytes(&self) -> vortex_buffer::ByteBuffer -impl core::clone::Clone for vortex_array::arrays::VarBinArray +pub fn vortex_array::arrays::varbin::VarBinData::try_new(offsets: vortex_array::ArrayRef, bytes: vortex_buffer::ByteBuffer, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBinArray::clone(&self) -> vortex_array::arrays::VarBinArray +pub fn vortex_array::arrays::varbin::VarBinData::try_new_from_handle(offsets: vortex_array::ArrayRef, bytes: vortex_array::buffer::BufferHandle, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult -impl core::convert::AsRef for vortex_array::arrays::VarBinArray +pub fn vortex_array::arrays::varbin::VarBinData::validate(offsets: &vortex_array::ArrayRef, bytes: &vortex_array::buffer::BufferHandle, dtype: &vortex_array::dtype::DType, validity: &vortex_array::validity::Validity) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::VarBinArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::varbin::VarBinData::validity(&self) -> vortex_array::validity::Validity -impl core::convert::From> for vortex_array::arrays::VarBinArray +pub fn vortex_array::arrays::varbin::VarBinData::validity_mask(&self) -> vortex_mask::Mask -pub fn vortex_array::arrays::VarBinArray::from(value: alloc::vec::Vec<&[u8]>) -> Self +impl vortex_array::arrays::varbin::VarBinData -impl core::convert::From> for vortex_array::arrays::VarBinArray +pub fn vortex_array::arrays::varbin::VarBinData::bytes_at(&self, index: usize) -> vortex_buffer::ByteBuffer -pub fn vortex_array::arrays::VarBinArray::from(value: alloc::vec::Vec<&str>) -> Self +pub fn vortex_array::arrays::varbin::VarBinData::into_parts(self) -> (vortex_array::dtype::DType, vortex_array::buffer::BufferHandle, vortex_array::ArrayRef, vortex_array::validity::Validity) -impl core::convert::From> for vortex_array::arrays::VarBinArray +pub fn vortex_array::arrays::varbin::VarBinData::offset_at(&self, index: usize) -> usize -pub fn vortex_array::arrays::VarBinArray::from(value: alloc::vec::Vec) -> Self +impl core::clone::Clone for vortex_array::arrays::varbin::VarBinData -impl core::convert::From>> for vortex_array::arrays::VarBinArray +pub fn vortex_array::arrays::varbin::VarBinData::clone(&self) -> vortex_array::arrays::varbin::VarBinData -pub fn vortex_array::arrays::VarBinArray::from(value: alloc::vec::Vec>) -> Self +impl core::convert::From> for vortex_array::arrays::varbin::VarBinData -impl core::convert::From>> for vortex_array::arrays::VarBinArray +pub fn vortex_array::arrays::varbin::VarBinData::from(value: alloc::vec::Vec<&[u8]>) -> Self -pub fn vortex_array::arrays::VarBinArray::from(value: alloc::vec::Vec>) -> Self +impl core::convert::From> for vortex_array::arrays::varbin::VarBinData -impl core::convert::From>> for vortex_array::arrays::VarBinArray +pub fn vortex_array::arrays::varbin::VarBinData::from(value: alloc::vec::Vec<&str>) -> Self -pub fn vortex_array::arrays::VarBinArray::from(value: alloc::vec::Vec>) -> Self +impl core::convert::From> for vortex_array::arrays::varbin::VarBinData -impl core::convert::From>> for vortex_array::arrays::VarBinArray +pub fn vortex_array::arrays::varbin::VarBinData::from(value: alloc::vec::Vec) -> Self -pub fn vortex_array::arrays::VarBinArray::from(value: alloc::vec::Vec>) -> Self +impl core::convert::From>> for vortex_array::arrays::varbin::VarBinData -impl core::convert::From>>> for vortex_array::arrays::VarBinArray +pub fn vortex_array::arrays::varbin::VarBinData::from(value: alloc::vec::Vec>) -> Self -pub fn vortex_array::arrays::VarBinArray::from(value: alloc::vec::Vec>>) -> Self +impl core::convert::From>> for vortex_array::arrays::varbin::VarBinData -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::arrays::varbin::VarBinData::from(value: alloc::vec::Vec>) -> Self -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::VarBinArray) -> vortex_array::ArrayRef +impl core::convert::From>> for vortex_array::arrays::varbin::VarBinData -impl core::fmt::Debug for vortex_array::arrays::VarBinArray +pub fn vortex_array::arrays::varbin::VarBinData::from(value: alloc::vec::Vec>) -> Self -pub fn vortex_array::arrays::VarBinArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl core::convert::From>> for vortex_array::arrays::varbin::VarBinData -impl core::iter::traits::collect::FromIterator> for vortex_array::arrays::VarBinArray +pub fn vortex_array::arrays::varbin::VarBinData::from(value: alloc::vec::Vec>) -> Self -pub fn vortex_array::arrays::VarBinArray::from_iter>>(iter: T) -> Self +impl core::convert::From>>> for vortex_array::arrays::varbin::VarBinData -impl core::iter::traits::collect::FromIterator>> for vortex_array::arrays::VarBinArray +pub fn vortex_array::arrays::varbin::VarBinData::from(value: alloc::vec::Vec>>) -> Self -pub fn vortex_array::arrays::VarBinArray::from_iter>>>(iter: T) -> Self +impl core::convert::From for vortex_array::ArrayRef -impl core::ops::deref::Deref for vortex_array::arrays::VarBinArray +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::varbin::VarBinData) -> vortex_array::ArrayRef -pub type vortex_array::arrays::VarBinArray::Target = dyn vortex_array::DynArray +impl core::fmt::Debug for vortex_array::arrays::varbin::VarBinData -pub fn vortex_array::arrays::VarBinArray::deref(&self) -> &Self::Target +pub fn vortex_array::arrays::varbin::VarBinData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::IntoArray for vortex_array::arrays::VarBinArray +impl core::iter::traits::collect::FromIterator> for vortex_array::arrays::varbin::VarBinData -pub fn vortex_array::arrays::VarBinArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::varbin::VarBinData::from_iter>>(iter: T) -> Self -impl vortex_array::accessor::ArrayAccessor<[u8]> for &vortex_array::arrays::VarBinArray +impl core::iter::traits::collect::FromIterator>> for vortex_array::arrays::varbin::VarBinData -pub fn &vortex_array::arrays::VarBinArray::with_iterator(&self, f: F) -> R where F: for<'a> core::ops::function::FnOnce(&mut dyn core::iter::traits::iterator::Iterator>) -> R +pub fn vortex_array::arrays::varbin::VarBinData::from_iter>>>(iter: T) -> Self -impl vortex_array::accessor::ArrayAccessor<[u8]> for vortex_array::arrays::VarBinArray +impl vortex_array::IntoArray for vortex_array::arrays::varbin::VarBinData -pub fn vortex_array::arrays::VarBinArray::with_iterator(&self, f: F) -> R where F: for<'a> core::ops::function::FnOnce(&mut dyn core::iter::traits::iterator::Iterator>) -> R +pub fn vortex_array::arrays::varbin::VarBinData::into_array(self) -> vortex_array::ArrayRef -impl<'a> core::iter::traits::collect::FromIterator> for vortex_array::arrays::VarBinArray +impl<'a> core::iter::traits::collect::FromIterator> for vortex_array::arrays::varbin::VarBinData -pub fn vortex_array::arrays::VarBinArray::from_iter>>(iter: T) -> Self +pub fn vortex_array::arrays::varbin::VarBinData::from_iter>>(iter: T) -> Self -impl<'a> core::iter::traits::collect::FromIterator> for vortex_array::arrays::VarBinArray +impl<'a> core::iter::traits::collect::FromIterator> for vortex_array::arrays::varbin::VarBinData -pub fn vortex_array::arrays::VarBinArray::from_iter>>(iter: T) -> Self +pub fn vortex_array::arrays::varbin::VarBinData::from_iter>>(iter: T) -> Self pub fn vortex_array::arrays::varbin::varbin_scalar(value: vortex_buffer::ByteBuffer, dtype: &vortex_array::dtype::DType) -> vortex_array::scalar::Scalar +pub type vortex_array::arrays::varbin::VarBinArray = vortex_array::Array + pub mod vortex_array::arrays::varbinview pub mod vortex_array::arrays::varbinview::build_views @@ -4998,7 +4780,7 @@ pub struct vortex_array::arrays::varbinview::VarBinView impl vortex_array::arrays::VarBinView -pub const vortex_array::arrays::VarBinView::ID: vortex_array::vtable::ArrayId +pub const vortex_array::arrays::VarBinView::ID: vortex_array::ArrayId impl core::clone::Clone for vortex_array::arrays::VarBinView @@ -5008,33 +4790,13 @@ impl core::fmt::Debug for vortex_array::arrays::VarBinView pub fn vortex_array::arrays::VarBinView::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::VarBinView - -pub fn vortex_array::arrays::VarBinView::take(array: &vortex_array::arrays::VarBinViewArray, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::VarBinView - -pub fn vortex_array::arrays::VarBinView::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::VarBinView - -pub fn vortex_array::arrays::VarBinView::cast(array: &vortex_array::arrays::VarBinViewArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::VarBinView - -pub fn vortex_array::arrays::VarBinView::mask(array: &vortex_array::arrays::VarBinViewArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> - -impl vortex_array::scalar_fn::fns::zip::ZipKernel for vortex_array::arrays::VarBinView +impl vortex_array::OperationsVTable for vortex_array::arrays::VarBinView -pub fn vortex_array::arrays::VarBinView::zip(if_true: &vortex_array::arrays::VarBinViewArray, if_false: &vortex_array::ArrayRef, mask: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBinView::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBinView>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::VarBinView +impl vortex_array::VTable for vortex_array::arrays::VarBinView -pub fn vortex_array::arrays::VarBinView::scalar_at(array: &vortex_array::arrays::VarBinViewArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult - -impl vortex_array::vtable::VTable for vortex_array::arrays::VarBinView - -pub type vortex_array::arrays::VarBinView::Array = vortex_array::arrays::VarBinViewArray +pub type vortex_array::arrays::VarBinView::ArrayData = vortex_array::arrays::varbinview::VarBinViewData pub type vortex_array::arrays::VarBinView::Metadata = vortex_array::EmptyMetadata @@ -5042,177 +4804,173 @@ pub type vortex_array::arrays::VarBinView::OperationsVTable = vortex_array::arra pub type vortex_array::arrays::VarBinView::ValidityVTable = vortex_array::arrays::VarBinView -pub fn vortex_array::arrays::VarBinView::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::VarBinView::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::VarBinView::array_eq(array: &vortex_array::arrays::VarBinViewArray, other: &vortex_array::arrays::VarBinViewArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::VarBinView::array_eq(array: &vortex_array::arrays::varbinview::VarBinViewData, other: &vortex_array::arrays::varbinview::VarBinViewData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::VarBinView::array_hash(array: &vortex_array::arrays::VarBinViewArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::VarBinView::array_hash(array: &vortex_array::arrays::varbinview::VarBinViewData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::VarBinView::buffer(array: &vortex_array::arrays::VarBinViewArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::VarBinView::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::VarBinView::buffer_name(array: &vortex_array::arrays::VarBinViewArray, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::VarBinView::buffer_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::VarBinView::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinView::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBinView::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::VarBinView::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::VarBinView::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::VarBinView::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String pub fn vortex_array::arrays::VarBinView::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBinView::dtype(array: &vortex_array::arrays::VarBinViewArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::VarBinView::dtype(array: &vortex_array::arrays::varbinview::VarBinViewData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::VarBinView::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinView::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBinView::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBinView::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::VarBinView::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::VarBinView::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::VarBinView::len(array: &vortex_array::arrays::VarBinViewArray) -> usize +pub fn vortex_array::arrays::VarBinView::len(array: &vortex_array::arrays::varbinview::VarBinViewData) -> usize -pub fn vortex_array::arrays::VarBinView::metadata(_array: &vortex_array::arrays::VarBinViewArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinView::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBinView::nbuffers(array: &vortex_array::arrays::VarBinViewArray) -> usize +pub fn vortex_array::arrays::VarBinView::nbuffers(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::VarBinView::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::VarBinView::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::VarBinView::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBinView::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::VarBinView::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBinView::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> pub fn vortex_array::arrays::VarBinView::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::VarBinView::slot_name(_array: &vortex_array::arrays::VarBinViewArray, idx: usize) -> alloc::string::String - -pub fn vortex_array::arrays::VarBinView::slots(array: &vortex_array::arrays::VarBinViewArray) -> &[core::option::Option] - -pub fn vortex_array::arrays::VarBinView::stats(array: &vortex_array::arrays::VarBinViewArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::VarBinView::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::VarBinView::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::VarBinView::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::VarBinView::with_slots(array: &mut vortex_array::arrays::VarBinViewArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::VarBinView::stats(array: &vortex_array::arrays::varbinview::VarBinViewData) -> &vortex_array::stats::ArrayStats -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::VarBinView +pub fn vortex_array::arrays::VarBinView::vtable(_array: &vortex_array::arrays::varbinview::VarBinViewData) -> &Self -pub fn vortex_array::arrays::VarBinView::validity(array: &vortex_array::arrays::VarBinViewArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinView::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub struct vortex_array::arrays::varbinview::VarBinViewArray +impl vortex_array::ValidityVTable for vortex_array::arrays::VarBinView -impl vortex_array::arrays::VarBinViewArray +pub fn vortex_array::arrays::VarBinView::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBinView>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBinViewArray::buffer(&self, idx: usize) -> &vortex_buffer::ByteBuffer +impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::VarBinView -pub fn vortex_array::arrays::VarBinViewArray::buffers(&self) -> &alloc::sync::Arc<[vortex_array::buffer::BufferHandle]> +pub fn vortex_array::arrays::VarBinView::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBinView>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::VarBinViewArray::bytes_at(&self, index: usize) -> vortex_buffer::ByteBuffer +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::VarBinView -pub fn vortex_array::arrays::VarBinViewArray::from_iter, I: core::iter::traits::collect::IntoIterator>>(iter: I, dtype: vortex_array::dtype::DType) -> Self +pub fn vortex_array::arrays::VarBinView::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::VarBinViewArray::from_iter_bin, I: core::iter::traits::collect::IntoIterator>(iter: I) -> Self +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::VarBinView -pub fn vortex_array::arrays::VarBinViewArray::from_iter_nullable_bin, I: core::iter::traits::collect::IntoIterator>>(iter: I) -> Self +pub fn vortex_array::arrays::VarBinView::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBinView>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::VarBinViewArray::from_iter_nullable_str, I: core::iter::traits::collect::IntoIterator>>(iter: I) -> Self +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::VarBinView -pub fn vortex_array::arrays::VarBinViewArray::from_iter_str, I: core::iter::traits::collect::IntoIterator>(iter: I) -> Self +pub fn vortex_array::arrays::VarBinView::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBinView>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::VarBinViewArray::into_parts(self) -> vortex_array::arrays::varbinview::VarBinViewArrayParts +impl vortex_array::scalar_fn::fns::zip::ZipKernel for vortex_array::arrays::VarBinView -pub fn vortex_array::arrays::VarBinViewArray::nbuffers(&self) -> usize +pub fn vortex_array::arrays::VarBinView::zip(if_true: vortex_array::ArrayView<'_, vortex_array::arrays::VarBinView>, if_false: &vortex_array::ArrayRef, mask: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::VarBinViewArray::new(views: vortex_buffer::buffer::Buffer, buffers: alloc::sync::Arc<[vortex_buffer::ByteBuffer]>, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self +pub struct vortex_array::arrays::varbinview::VarBinViewArrayParts -pub fn vortex_array::arrays::VarBinViewArray::new_handle(views: vortex_array::buffer::BufferHandle, buffers: alloc::sync::Arc<[vortex_array::buffer::BufferHandle]>, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self +pub vortex_array::arrays::varbinview::VarBinViewArrayParts::buffers: alloc::sync::Arc<[vortex_array::buffer::BufferHandle]> -pub unsafe fn vortex_array::arrays::VarBinViewArray::new_handle_unchecked(views: vortex_array::buffer::BufferHandle, buffers: alloc::sync::Arc<[vortex_array::buffer::BufferHandle]>, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self +pub vortex_array::arrays::varbinview::VarBinViewArrayParts::dtype: vortex_array::dtype::DType -pub unsafe fn vortex_array::arrays::VarBinViewArray::new_unchecked(views: vortex_buffer::buffer::Buffer, buffers: alloc::sync::Arc<[vortex_buffer::ByteBuffer]>, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self +pub vortex_array::arrays::varbinview::VarBinViewArrayParts::validity: vortex_array::validity::Validity -pub fn vortex_array::arrays::VarBinViewArray::try_new(views: vortex_buffer::buffer::Buffer, buffers: alloc::sync::Arc<[vortex_buffer::ByteBuffer]>, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +pub vortex_array::arrays::varbinview::VarBinViewArrayParts::views: vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::VarBinViewArray::try_new_handle(views: vortex_array::buffer::BufferHandle, buffers: alloc::sync::Arc<[vortex_array::buffer::BufferHandle]>, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +pub struct vortex_array::arrays::varbinview::VarBinViewData -pub fn vortex_array::arrays::VarBinViewArray::validate(views: &vortex_buffer::buffer::Buffer, buffers: &alloc::sync::Arc<[vortex_buffer::ByteBuffer]>, dtype: &vortex_array::dtype::DType, validity: &vortex_array::validity::Validity) -> vortex_error::VortexResult<()> +impl vortex_array::arrays::varbinview::VarBinViewData -pub fn vortex_array::arrays::VarBinViewArray::validity(&self) -> vortex_array::validity::Validity +pub fn vortex_array::arrays::varbinview::VarBinViewData::buffer(&self, idx: usize) -> &vortex_buffer::ByteBuffer -pub fn vortex_array::arrays::VarBinViewArray::views(&self) -> &[vortex_array::arrays::varbinview::BinaryView] +pub fn vortex_array::arrays::varbinview::VarBinViewData::bytes_at(&self, index: usize) -> vortex_buffer::ByteBuffer -pub fn vortex_array::arrays::VarBinViewArray::views_handle(&self) -> &vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::varbinview::VarBinViewData::data_buffers(&self) -> &alloc::sync::Arc<[vortex_array::buffer::BufferHandle]> -impl vortex_array::arrays::VarBinViewArray +pub fn vortex_array::arrays::varbinview::VarBinViewData::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::VarBinViewArray::compact_buffers(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::varbinview::VarBinViewData::from_iter, I: core::iter::traits::collect::IntoIterator>>(iter: I, dtype: vortex_array::dtype::DType) -> Self -pub fn vortex_array::arrays::VarBinViewArray::compact_with_threshold(&self, buffer_utilization_threshold: f64) -> vortex_error::VortexResult +pub fn vortex_array::arrays::varbinview::VarBinViewData::from_iter_bin, I: core::iter::traits::collect::IntoIterator>(iter: I) -> Self -impl vortex_array::arrays::VarBinViewArray +pub fn vortex_array::arrays::varbinview::VarBinViewData::from_iter_nullable_bin, I: core::iter::traits::collect::IntoIterator>>(iter: I) -> Self -pub fn vortex_array::arrays::VarBinViewArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::varbinview::VarBinViewData::from_iter_nullable_str, I: core::iter::traits::collect::IntoIterator>>(iter: I) -> Self -impl core::clone::Clone for vortex_array::arrays::VarBinViewArray +pub fn vortex_array::arrays::varbinview::VarBinViewData::from_iter_str, I: core::iter::traits::collect::IntoIterator>(iter: I) -> Self -pub fn vortex_array::arrays::VarBinViewArray::clone(&self) -> vortex_array::arrays::VarBinViewArray +pub fn vortex_array::arrays::varbinview::VarBinViewData::into_parts(self) -> vortex_array::arrays::varbinview::VarBinViewArrayParts -impl core::convert::AsRef for vortex_array::arrays::VarBinViewArray +pub fn vortex_array::arrays::varbinview::VarBinViewData::is_empty(&self) -> bool -pub fn vortex_array::arrays::VarBinViewArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::varbinview::VarBinViewData::len(&self) -> usize -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::arrays::varbinview::VarBinViewData::new(views: vortex_buffer::buffer::Buffer, buffers: alloc::sync::Arc<[vortex_buffer::ByteBuffer]>, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::VarBinViewArray) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::varbinview::VarBinViewData::new_handle(views: vortex_array::buffer::BufferHandle, buffers: alloc::sync::Arc<[vortex_array::buffer::BufferHandle]>, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self -impl core::fmt::Debug for vortex_array::arrays::VarBinViewArray +pub unsafe fn vortex_array::arrays::varbinview::VarBinViewData::new_handle_unchecked(views: vortex_array::buffer::BufferHandle, buffers: alloc::sync::Arc<[vortex_array::buffer::BufferHandle]>, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::arrays::VarBinViewArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub unsafe fn vortex_array::arrays::varbinview::VarBinViewData::new_unchecked(views: vortex_buffer::buffer::Buffer, buffers: alloc::sync::Arc<[vortex_buffer::ByteBuffer]>, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self -impl core::iter::traits::collect::FromIterator> for vortex_array::arrays::VarBinViewArray +pub fn vortex_array::arrays::varbinview::VarBinViewData::try_new(views: vortex_buffer::buffer::Buffer, buffers: alloc::sync::Arc<[vortex_buffer::ByteBuffer]>, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBinViewArray::from_iter>>(iter: T) -> Self +pub fn vortex_array::arrays::varbinview::VarBinViewData::try_new_handle(views: vortex_array::buffer::BufferHandle, buffers: alloc::sync::Arc<[vortex_array::buffer::BufferHandle]>, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult -impl core::iter::traits::collect::FromIterator>> for vortex_array::arrays::VarBinViewArray +pub fn vortex_array::arrays::varbinview::VarBinViewData::validate(views: &vortex_buffer::buffer::Buffer, buffers: &alloc::sync::Arc<[vortex_buffer::ByteBuffer]>, dtype: &vortex_array::dtype::DType, validity: &vortex_array::validity::Validity) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::VarBinViewArray::from_iter>>>(iter: T) -> Self +pub fn vortex_array::arrays::varbinview::VarBinViewData::validity(&self) -> vortex_array::validity::Validity -impl core::ops::deref::Deref for vortex_array::arrays::VarBinViewArray +pub fn vortex_array::arrays::varbinview::VarBinViewData::validity_mask(&self) -> vortex_mask::Mask -pub type vortex_array::arrays::VarBinViewArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::arrays::varbinview::VarBinViewData::views(&self) -> &[vortex_array::arrays::varbinview::BinaryView] -pub fn vortex_array::arrays::VarBinViewArray::deref(&self) -> &Self::Target +pub fn vortex_array::arrays::varbinview::VarBinViewData::views_handle(&self) -> &vortex_array::buffer::BufferHandle -impl vortex_array::Executable for vortex_array::arrays::VarBinViewArray +impl core::clone::Clone for vortex_array::arrays::varbinview::VarBinViewData -pub fn vortex_array::arrays::VarBinViewArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::varbinview::VarBinViewData::clone(&self) -> vortex_array::arrays::varbinview::VarBinViewData -impl vortex_array::IntoArray for vortex_array::arrays::VarBinViewArray +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::VarBinViewArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::varbinview::VarBinViewData) -> vortex_array::ArrayRef -impl vortex_array::accessor::ArrayAccessor<[u8]> for &vortex_array::arrays::VarBinViewArray +impl core::fmt::Debug for vortex_array::arrays::varbinview::VarBinViewData -pub fn &vortex_array::arrays::VarBinViewArray::with_iterator(&self, f: F) -> R where F: for<'a> core::ops::function::FnOnce(&mut dyn core::iter::traits::iterator::Iterator>) -> R +pub fn vortex_array::arrays::varbinview::VarBinViewData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::accessor::ArrayAccessor<[u8]> for vortex_array::arrays::VarBinViewArray +impl core::iter::traits::collect::FromIterator> for vortex_array::arrays::varbinview::VarBinViewData -pub fn vortex_array::arrays::VarBinViewArray::with_iterator core::ops::function::FnOnce(&mut dyn core::iter::traits::iterator::Iterator>) -> R, R>(&self, f: F) -> R +pub fn vortex_array::arrays::varbinview::VarBinViewData::from_iter>>(iter: T) -> Self -impl<'a> core::iter::traits::collect::FromIterator> for vortex_array::arrays::VarBinViewArray +impl core::iter::traits::collect::FromIterator>> for vortex_array::arrays::varbinview::VarBinViewData -pub fn vortex_array::arrays::VarBinViewArray::from_iter>>(iter: T) -> Self +pub fn vortex_array::arrays::varbinview::VarBinViewData::from_iter>>>(iter: T) -> Self -impl<'a> core::iter::traits::collect::FromIterator> for vortex_array::arrays::VarBinViewArray +impl vortex_array::IntoArray for vortex_array::arrays::varbinview::VarBinViewData -pub fn vortex_array::arrays::VarBinViewArray::from_iter>>(iter: T) -> Self +pub fn vortex_array::arrays::varbinview::VarBinViewData::into_array(self) -> vortex_array::ArrayRef -pub struct vortex_array::arrays::varbinview::VarBinViewArrayParts +impl<'a> core::iter::traits::collect::FromIterator> for vortex_array::arrays::varbinview::VarBinViewData -pub vortex_array::arrays::varbinview::VarBinViewArrayParts::buffers: alloc::sync::Arc<[vortex_array::buffer::BufferHandle]> +pub fn vortex_array::arrays::varbinview::VarBinViewData::from_iter>>(iter: T) -> Self -pub vortex_array::arrays::varbinview::VarBinViewArrayParts::dtype: vortex_array::dtype::DType +impl<'a> core::iter::traits::collect::FromIterator> for vortex_array::arrays::varbinview::VarBinViewData -pub vortex_array::arrays::varbinview::VarBinViewArrayParts::validity: vortex_array::validity::Validity +pub fn vortex_array::arrays::varbinview::VarBinViewData::from_iter>>(iter: T) -> Self -pub vortex_array::arrays::varbinview::VarBinViewArrayParts::views: vortex_array::buffer::BufferHandle +pub type vortex_array::arrays::varbinview::VarBinViewArray = vortex_array::Array pub mod vortex_array::arrays::variant @@ -5220,7 +4978,7 @@ pub struct vortex_array::arrays::variant::Variant impl vortex_array::arrays::Variant -pub const vortex_array::arrays::Variant::ID: vortex_array::vtable::ArrayId +pub const vortex_array::arrays::Variant::ID: vortex_array::ArrayId impl core::clone::Clone for vortex_array::arrays::Variant @@ -5230,13 +4988,13 @@ impl core::fmt::Debug for vortex_array::arrays::Variant pub fn vortex_array::arrays::Variant::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Variant +impl vortex_array::OperationsVTable for vortex_array::arrays::Variant -pub fn vortex_array::arrays::Variant::scalar_at(array: &::Array, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Variant>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::vtable::VTable for vortex_array::arrays::Variant +impl vortex_array::VTable for vortex_array::arrays::Variant -pub type vortex_array::arrays::Variant::Array = vortex_array::arrays::variant::VariantArray +pub type vortex_array::arrays::Variant::ArrayData = vortex_array::arrays::variant::VariantData pub type vortex_array::arrays::Variant::Metadata = vortex_array::EmptyMetadata @@ -5244,103 +5002,97 @@ pub type vortex_array::arrays::Variant::OperationsVTable = vortex_array::arrays: pub type vortex_array::arrays::Variant::ValidityVTable = vortex_array::arrays::Variant -pub fn vortex_array::arrays::Variant::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Variant::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Variant::array_eq(array: &Self::Array, other: &Self::Array, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Variant::array_eq(array: &vortex_array::arrays::variant::VariantData, other: &vortex_array::arrays::variant::VariantData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::Variant::array_hash(array: &Self::Array, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Variant::array_hash(array: &vortex_array::arrays::variant::VariantData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::Variant::buffer(_array: &Self::Array, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Variant::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Variant::buffer_name(_array: &Self::Array, _idx: usize) -> core::option::Option +pub fn vortex_array::arrays::Variant::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Variant::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Variant::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Variant::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Variant::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Variant::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String pub fn vortex_array::arrays::Variant::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Variant::dtype(array: &Self::Array) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::Variant::dtype(array: &Self::ArrayData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::Variant::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Variant::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Variant::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Variant::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::Variant::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Variant::len(array: &Self::Array) -> usize +pub fn vortex_array::arrays::Variant::len(array: &Self::ArrayData) -> usize -pub fn vortex_array::arrays::Variant::metadata(_array: &Self::Array) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Variant::nbuffers(_array: &Self::Array) -> usize +pub fn vortex_array::arrays::Variant::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Variant::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::Variant::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Variant::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Variant::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Variant::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Variant::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> pub fn vortex_array::arrays::Variant::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Variant::slot_name(_array: &Self::Array, idx: usize) -> alloc::string::String - -pub fn vortex_array::arrays::Variant::slots(array: &Self::Array) -> &[core::option::Option] - -pub fn vortex_array::arrays::Variant::stats(array: &Self::Array) -> vortex_array::stats::StatsSetRef<'_> - -pub fn vortex_array::arrays::Variant::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::Variant::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Variant::with_slots(array: &mut Self::Array, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Variant::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Variant +pub fn vortex_array::arrays::Variant::stats(array: &Self::ArrayData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Variant::validity(array: &::Array) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::vtable(_array: &Self::ArrayData) -> &Self -pub struct vortex_array::arrays::variant::VariantArray +pub fn vortex_array::arrays::Variant::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl vortex_array::arrays::variant::VariantArray +impl vortex_array::ValidityVTable for vortex_array::arrays::Variant -pub fn vortex_array::arrays::variant::VariantArray::child(&self) -> &vortex_array::ArrayRef +pub fn vortex_array::arrays::Variant::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Variant>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::variant::VariantArray::new(child: vortex_array::ArrayRef) -> Self +pub struct vortex_array::arrays::variant::VariantData -impl vortex_array::arrays::variant::VariantArray +impl vortex_array::arrays::variant::VariantData -pub fn vortex_array::arrays::variant::VariantArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::variant::VariantData::child(&self) -> &vortex_array::ArrayRef -impl core::clone::Clone for vortex_array::arrays::variant::VariantArray +pub fn vortex_array::arrays::variant::VariantData::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::variant::VariantArray::clone(&self) -> vortex_array::arrays::variant::VariantArray +pub fn vortex_array::arrays::variant::VariantData::is_empty(&self) -> bool -impl core::convert::AsRef for vortex_array::arrays::variant::VariantArray +pub fn vortex_array::arrays::variant::VariantData::len(&self) -> usize -pub fn vortex_array::arrays::variant::VariantArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::variant::VariantData::new(child: vortex_array::ArrayRef) -> Self -impl core::convert::From for vortex_array::ArrayRef +impl core::clone::Clone for vortex_array::arrays::variant::VariantData -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::variant::VariantArray) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::variant::VariantData::clone(&self) -> vortex_array::arrays::variant::VariantData -impl core::fmt::Debug for vortex_array::arrays::variant::VariantArray +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::variant::VariantArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::variant::VariantData) -> vortex_array::ArrayRef -impl core::ops::deref::Deref for vortex_array::arrays::variant::VariantArray +impl core::fmt::Debug for vortex_array::arrays::variant::VariantData -pub type vortex_array::arrays::variant::VariantArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::arrays::variant::VariantData::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::variant::VariantArray::deref(&self) -> &Self::Target +impl vortex_array::IntoArray for vortex_array::arrays::variant::VariantData -impl vortex_array::IntoArray for vortex_array::arrays::variant::VariantArray +pub fn vortex_array::arrays::variant::VariantData::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::variant::VariantArray::into_array(self) -> vortex_array::ArrayRef +pub type vortex_array::arrays::variant::VariantArray = vortex_array::Array pub struct vortex_array::arrays::Bool impl vortex_array::arrays::Bool -pub const vortex_array::arrays::Bool::ID: vortex_array::vtable::ArrayId +pub const vortex_array::arrays::Bool::ID: vortex_array::ArrayId impl core::clone::Clone for vortex_array::arrays::Bool @@ -5350,19955 +5102,21923 @@ impl core::fmt::Debug for vortex_array::arrays::Bool pub fn vortex_array::arrays::Bool::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::Bool - -pub fn vortex_array::arrays::Bool::take(array: &vortex_array::arrays::BoolArray, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> - -impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::Bool - -pub fn vortex_array::arrays::Bool::filter(array: &vortex_array::arrays::BoolArray, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> - -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Bool - -pub fn vortex_array::arrays::Bool::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +impl vortex_array::OperationsVTable for vortex_array::arrays::Bool -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::arrays::bool::BoolMaskedValidityRule - -pub type vortex_array::arrays::bool::BoolMaskedValidityRule::Parent = vortex_array::arrays::Masked - -pub fn vortex_array::arrays::bool::BoolMaskedValidityRule::reduce_parent(&self, array: &vortex_array::arrays::BoolArray, parent: &vortex_array::arrays::MaskedArray, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Bool::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::Bool +impl vortex_array::VTable for vortex_array::arrays::Bool -pub fn vortex_array::arrays::Bool::cast(array: &vortex_array::arrays::BoolArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Bool::ArrayData = vortex_array::arrays::bool::BoolData -impl vortex_array::scalar_fn::fns::fill_null::FillNullKernel for vortex_array::arrays::Bool +pub type vortex_array::arrays::Bool::Metadata = vortex_array::ProstMetadata -pub fn vortex_array::arrays::Bool::fill_null(array: &vortex_array::arrays::BoolArray, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Bool::OperationsVTable = vortex_array::arrays::Bool -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Bool +pub type vortex_array::arrays::Bool::ValidityVTable = vortex_array::arrays::Bool -pub fn vortex_array::arrays::Bool::mask(array: &vortex_array::arrays::BoolArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Bool::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Bool +pub fn vortex_array::arrays::Bool::array_eq(array: &vortex_array::arrays::bool::BoolData, other: &vortex_array::arrays::bool::BoolData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::Bool::scalar_at(array: &vortex_array::arrays::BoolArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Bool::array_hash(array: &vortex_array::arrays::bool::BoolData, state: &mut H, precision: vortex_array::Precision) -impl vortex_array::vtable::VTable for vortex_array::arrays::Bool +pub fn vortex_array::arrays::Bool::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub type vortex_array::arrays::Bool::Array = vortex_array::arrays::BoolArray +pub fn vortex_array::arrays::Bool::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub type vortex_array::arrays::Bool::Metadata = vortex_array::ProstMetadata +pub fn vortex_array::arrays::Bool::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub type vortex_array::arrays::Bool::OperationsVTable = vortex_array::arrays::Bool +pub fn vortex_array::arrays::Bool::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub type vortex_array::arrays::Bool::ValidityVTable = vortex_array::arrays::Bool +pub fn vortex_array::arrays::Bool::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Bool::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Bool::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Bool::array_eq(array: &vortex_array::arrays::BoolArray, other: &vortex_array::arrays::BoolArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Bool::dtype(array: &vortex_array::arrays::bool::BoolData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::Bool::array_hash(array: &vortex_array::arrays::BoolArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Bool::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Bool::buffer(array: &vortex_array::arrays::BoolArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Bool::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Bool::buffer_name(_array: &vortex_array::arrays::BoolArray, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::Bool::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Bool::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Bool::len(array: &vortex_array::arrays::bool::BoolData) -> usize -pub fn vortex_array::arrays::Bool::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Bool::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Bool::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Bool::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Bool::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Bool::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Bool::dtype(array: &vortex_array::arrays::BoolArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::Bool::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Bool::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Bool::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Bool::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Bool::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Bool::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::Bool::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Bool::len(array: &vortex_array::arrays::BoolArray) -> usize +pub fn vortex_array::arrays::Bool::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::Bool::metadata(array: &vortex_array::arrays::BoolArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Bool::stats(array: &vortex_array::arrays::bool::BoolData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Bool::nbuffers(_array: &vortex_array::arrays::BoolArray) -> usize +pub fn vortex_array::arrays::Bool::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::Bool::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::Bool::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Bool::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +impl vortex_array::ValidityVTable for vortex_array::arrays::Bool -pub fn vortex_array::arrays::Bool::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Bool::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Bool::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::Bool -pub fn vortex_array::arrays::Bool::slot_name(_array: &vortex_array::arrays::BoolArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Bool::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Bool::slots(array: &vortex_array::arrays::BoolArray) -> &[core::option::Option] +impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::Bool -pub fn vortex_array::arrays::Bool::stats(array: &vortex_array::arrays::BoolArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::Bool::filter(array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Bool::vtable(_array: &Self::Array) -> &Self +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Bool -pub fn vortex_array::arrays::Bool::with_slots(array: &mut vortex_array::arrays::BoolArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Bool::slice(array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>, range: core::ops::range::Range) -> vortex_error::VortexResult> -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Bool +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::arrays::bool::BoolMaskedValidityRule -pub fn vortex_array::arrays::Bool::validity(array: &vortex_array::arrays::BoolArray) -> vortex_error::VortexResult +pub type vortex_array::arrays::bool::BoolMaskedValidityRule::Parent = vortex_array::arrays::Masked -pub struct vortex_array::arrays::BoolArray +pub fn vortex_array::arrays::bool::BoolMaskedValidityRule::reduce_parent(&self, array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>, parent: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>, child_idx: usize) -> vortex_error::VortexResult> -impl vortex_array::arrays::BoolArray +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::Bool -pub fn vortex_array::arrays::BoolArray::from_indices>(length: usize, indices: I, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::arrays::Bool::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::BoolArray::into_bit_buffer(self) -> vortex_buffer::bit::buf::BitBuffer +impl vortex_array::scalar_fn::fns::fill_null::FillNullKernel for vortex_array::arrays::Bool -pub fn vortex_array::arrays::BoolArray::into_parts(self) -> vortex_array::arrays::bool::BoolArrayParts +pub fn vortex_array::arrays::Bool::fill_null(array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::BoolArray::maybe_to_mask(&self) -> vortex_error::VortexResult> +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Bool -pub fn vortex_array::arrays::BoolArray::new(bits: vortex_buffer::bit::buf::BitBuffer, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::arrays::Bool::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::BoolArray::new_handle(handle: vortex_array::buffer::BufferHandle, offset: usize, len: usize, validity: vortex_array::validity::Validity) -> Self +pub struct vortex_array::arrays::Chunked -pub unsafe fn vortex_array::arrays::BoolArray::new_unchecked(bits: vortex_buffer::bit::buf::BitBuffer, validity: vortex_array::validity::Validity) -> Self +impl vortex_array::arrays::Chunked -pub fn vortex_array::arrays::BoolArray::to_bit_buffer(&self) -> vortex_buffer::bit::buf::BitBuffer +pub const vortex_array::arrays::Chunked::ID: vortex_array::ArrayId -pub fn vortex_array::arrays::BoolArray::to_mask(&self) -> vortex_mask::Mask +impl core::clone::Clone for vortex_array::arrays::Chunked -pub fn vortex_array::arrays::BoolArray::to_mask_fill_null_false(&self) -> vortex_mask::Mask +pub fn vortex_array::arrays::Chunked::clone(&self) -> vortex_array::arrays::Chunked -pub fn vortex_array::arrays::BoolArray::try_new(bits: vortex_buffer::bit::buf::BitBuffer, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +impl core::fmt::Debug for vortex_array::arrays::Chunked -pub fn vortex_array::arrays::BoolArray::try_new_from_handle(bits: vortex_array::buffer::BufferHandle, offset: usize, len: usize, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Chunked::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::BoolArray::validate(bits: &vortex_buffer::bit::buf::BitBuffer, validity: &vortex_array::validity::Validity) -> vortex_error::VortexResult<()> +impl vortex_array::OperationsVTable for vortex_array::arrays::Chunked -pub fn vortex_array::arrays::BoolArray::validity(&self) -> vortex_array::validity::Validity +pub fn vortex_array::arrays::Chunked::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Chunked>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::arrays::BoolArray +impl vortex_array::VTable for vortex_array::arrays::Chunked -pub fn vortex_array::arrays::BoolArray::patch(self, patches: &vortex_array::patches::Patches, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub type vortex_array::arrays::Chunked::ArrayData = vortex_array::arrays::chunked::ChunkedData -impl vortex_array::arrays::BoolArray +pub type vortex_array::arrays::Chunked::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::arrays::BoolArray::to_array(&self) -> vortex_array::ArrayRef +pub type vortex_array::arrays::Chunked::OperationsVTable = vortex_array::arrays::Chunked -impl core::clone::Clone for vortex_array::arrays::BoolArray +pub type vortex_array::arrays::Chunked::ValidityVTable = vortex_array::arrays::Chunked -pub fn vortex_array::arrays::BoolArray::clone(&self) -> vortex_array::arrays::BoolArray +pub fn vortex_array::arrays::Chunked::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl core::convert::AsRef for vortex_array::arrays::BoolArray +pub fn vortex_array::arrays::Chunked::array_eq(array: &vortex_array::arrays::chunked::ChunkedData, other: &vortex_array::arrays::chunked::ChunkedData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::BoolArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::Chunked::array_hash(array: &vortex_array::arrays::chunked::ChunkedData, state: &mut H, precision: vortex_array::Precision) -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::arrays::Chunked::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::BoolArray) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Chunked::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -impl core::convert::From for vortex_array::arrays::BoolArray +pub fn vortex_array::arrays::Chunked::build(dtype: &vortex_array::dtype::DType, _len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::BoolArray::from(value: vortex_buffer::bit::buf::BitBuffer) -> Self +pub fn vortex_array::arrays::Chunked::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -impl core::fmt::Debug for vortex_array::arrays::BoolArray +pub fn vortex_array::arrays::Chunked::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::BoolArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Chunked::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl core::iter::traits::collect::FromIterator for vortex_array::arrays::BoolArray +pub fn vortex_array::arrays::Chunked::dtype(array: &vortex_array::arrays::chunked::ChunkedData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::BoolArray::from_iter>(iter: T) -> Self +pub fn vortex_array::arrays::Chunked::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::iter::traits::collect::FromIterator> for vortex_array::arrays::BoolArray +pub fn vortex_array::arrays::Chunked::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::BoolArray::from_iter>>(iter: I) -> Self +pub fn vortex_array::arrays::Chunked::id(&self) -> vortex_array::ArrayId -impl core::ops::deref::Deref for vortex_array::arrays::BoolArray +pub fn vortex_array::arrays::Chunked::len(array: &vortex_array::arrays::chunked::ChunkedData) -> usize -pub type vortex_array::arrays::BoolArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::arrays::Chunked::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::BoolArray::deref(&self) -> &Self::Target +pub fn vortex_array::arrays::Chunked::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -impl vortex_array::Executable for vortex_array::arrays::BoolArray +pub fn vortex_array::arrays::Chunked::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::BoolArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Chunked::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -impl vortex_array::IntoArray for vortex_array::arrays::BoolArray +pub fn vortex_array::arrays::Chunked::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::BoolArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Chunked::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub struct vortex_array::arrays::Chunked +pub fn vortex_array::arrays::Chunked::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::arrays::Chunked +pub fn vortex_array::arrays::Chunked::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub const vortex_array::arrays::Chunked::ID: vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::Chunked::stats(array: &vortex_array::arrays::chunked::ChunkedData) -> &vortex_array::stats::ArrayStats -impl core::clone::Clone for vortex_array::arrays::Chunked +pub fn vortex_array::arrays::Chunked::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::Chunked::clone(&self) -> vortex_array::arrays::Chunked +pub fn vortex_array::arrays::Chunked::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl core::fmt::Debug for vortex_array::arrays::Chunked +impl vortex_array::ValidityVTable for vortex_array::arrays::Chunked -pub fn vortex_array::arrays::Chunked::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Chunked::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Chunked>) -> vortex_error::VortexResult impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::Chunked -pub fn vortex_array::arrays::Chunked::take(array: &vortex_array::arrays::ChunkedArray, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Chunked::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::Chunked>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> impl vortex_array::arrays::filter::FilterKernel for vortex_array::arrays::Chunked -pub fn vortex_array::arrays::Chunked::filter(array: &vortex_array::arrays::ChunkedArray, mask: &vortex_mask::Mask, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Chunked::filter(array: vortex_array::ArrayView<'_, vortex_array::arrays::Chunked>, mask: &vortex_mask::Mask, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> impl vortex_array::arrays::slice::SliceKernel for vortex_array::arrays::Chunked -pub fn vortex_array::arrays::Chunked::slice(array: &Self::Array, range: core::ops::range::Range, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Chunked::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::Chunked -pub fn vortex_array::arrays::Chunked::cast(array: &vortex_array::arrays::ChunkedArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Chunked::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::Chunked>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> impl vortex_array::scalar_fn::fns::fill_null::FillNullReduce for vortex_array::arrays::Chunked -pub fn vortex_array::arrays::Chunked::fill_null(array: &vortex_array::arrays::ChunkedArray, fill_value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Chunked::fill_null(array: vortex_array::ArrayView<'_, vortex_array::arrays::Chunked>, fill_value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult> impl vortex_array::scalar_fn::fns::mask::MaskKernel for vortex_array::arrays::Chunked -pub fn vortex_array::arrays::Chunked::mask(array: &vortex_array::arrays::ChunkedArray, mask: &vortex_array::ArrayRef, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Chunked::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::Chunked>, mask: &vortex_array::ArrayRef, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> impl vortex_array::scalar_fn::fns::zip::ZipKernel for vortex_array::arrays::Chunked -pub fn vortex_array::arrays::Chunked::zip(if_true: &vortex_array::arrays::ChunkedArray, if_false: &vortex_array::ArrayRef, mask: &vortex_array::ArrayRef, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Chunked::zip(if_true: vortex_array::ArrayView<'_, vortex_array::arrays::Chunked>, if_false: &vortex_array::ArrayRef, mask: &vortex_array::ArrayRef, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Chunked +pub struct vortex_array::arrays::Constant -pub fn vortex_array::arrays::Chunked::scalar_at(array: &vortex_array::arrays::ChunkedArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::arrays::Constant -impl vortex_array::vtable::VTable for vortex_array::arrays::Chunked +pub const vortex_array::arrays::Constant::ID: vortex_array::ArrayId -pub type vortex_array::arrays::Chunked::Array = vortex_array::arrays::ChunkedArray +impl vortex_array::arrays::Constant -pub type vortex_array::arrays::Chunked::Metadata = vortex_array::EmptyMetadata +pub const vortex_array::arrays::Constant::TAKE_RULES: vortex_array::optimizer::rules::ParentRuleSet -pub type vortex_array::arrays::Chunked::OperationsVTable = vortex_array::arrays::Chunked +impl core::clone::Clone for vortex_array::arrays::Constant -pub type vortex_array::arrays::Chunked::ValidityVTable = vortex_array::arrays::Chunked +pub fn vortex_array::arrays::Constant::clone(&self) -> vortex_array::arrays::Constant -pub fn vortex_array::arrays::Chunked::append_to_builder(array: &vortex_array::arrays::ChunkedArray, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +impl core::fmt::Debug for vortex_array::arrays::Constant -pub fn vortex_array::arrays::Chunked::array_eq(array: &vortex_array::arrays::ChunkedArray, other: &vortex_array::arrays::ChunkedArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Constant::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::Chunked::array_hash(array: &vortex_array::arrays::ChunkedArray, state: &mut H, precision: vortex_array::Precision) +impl vortex_array::OperationsVTable for vortex_array::arrays::Constant -pub fn vortex_array::arrays::Chunked::buffer(_array: &vortex_array::arrays::ChunkedArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Constant::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Constant>, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Chunked::buffer_name(_array: &vortex_array::arrays::ChunkedArray, _idx: usize) -> core::option::Option +impl vortex_array::VTable for vortex_array::arrays::Constant -pub fn vortex_array::arrays::Chunked::build(dtype: &vortex_array::dtype::DType, _len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub type vortex_array::arrays::Constant::ArrayData = vortex_array::arrays::constant::ConstantData -pub fn vortex_array::arrays::Chunked::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub type vortex_array::arrays::Constant::Metadata = vortex_array::scalar::Scalar -pub fn vortex_array::arrays::Chunked::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub type vortex_array::arrays::Constant::OperationsVTable = vortex_array::arrays::Constant -pub fn vortex_array::arrays::Chunked::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub type vortex_array::arrays::Constant::ValidityVTable = vortex_array::arrays::Constant -pub fn vortex_array::arrays::Chunked::dtype(array: &vortex_array::arrays::ChunkedArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::Constant::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Chunked::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Constant::array_eq(array: &vortex_array::arrays::constant::ConstantData, other: &vortex_array::arrays::constant::ConstantData, _precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::Chunked::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Constant::array_hash(array: &vortex_array::arrays::constant::ConstantData, state: &mut H, _precision: vortex_array::Precision) -pub fn vortex_array::arrays::Chunked::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::Constant::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Chunked::len(array: &vortex_array::arrays::ChunkedArray) -> usize +pub fn vortex_array::arrays::Constant::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Chunked::metadata(_array: &vortex_array::arrays::ChunkedArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Constant::build(_dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], _children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Chunked::nbuffers(_array: &vortex_array::arrays::ChunkedArray) -> usize +pub fn vortex_array::arrays::Constant::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Chunked::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::Constant::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Chunked::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Constant::deserialize(_bytes: &[u8], dtype: &vortex_array::dtype::DType, _len: usize, buffers: &[vortex_array::buffer::BufferHandle], session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Chunked::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Constant::dtype(array: &vortex_array::arrays::constant::ConstantData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::Chunked::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Constant::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Chunked::slot_name(_array: &vortex_array::arrays::ChunkedArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Constant::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Chunked::slots(array: &vortex_array::arrays::ChunkedArray) -> &[core::option::Option] +pub fn vortex_array::arrays::Constant::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Chunked::stats(array: &vortex_array::arrays::ChunkedArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::Constant::len(array: &vortex_array::arrays::constant::ConstantData) -> usize -pub fn vortex_array::arrays::Chunked::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::Constant::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Chunked::with_slots(array: &mut vortex_array::arrays::ChunkedArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Constant::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Chunked +pub fn vortex_array::arrays::Constant::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Chunked::validity(array: &vortex_array::arrays::ChunkedArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Constant::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub struct vortex_array::arrays::ChunkedArray +pub fn vortex_array::arrays::Constant::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -impl vortex_array::arrays::ChunkedArray +pub fn vortex_array::arrays::Constant::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::ChunkedArray::array_iterator(&self) -> impl vortex_array::iter::ArrayIterator + '_ +pub fn vortex_array::arrays::Constant::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::ChunkedArray::array_stream(&self) -> impl vortex_array::stream::ArrayStream + '_ +pub fn vortex_array::arrays::Constant::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::ChunkedArray::chunk(&self, idx: usize) -> &vortex_array::ArrayRef +pub fn vortex_array::arrays::Constant::stats(array: &vortex_array::arrays::constant::ConstantData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::ChunkedArray::chunk_offsets(&self) -> vortex_buffer::buffer::Buffer +pub fn vortex_array::arrays::Constant::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::ChunkedArray::chunks(&self) -> alloc::vec::Vec +pub fn vortex_array::arrays::Constant::with_slots(_array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::ChunkedArray::iter_chunks(&self) -> impl core::iter::traits::iterator::Iterator + '_ +impl vortex_array::ValidityVTable for vortex_array::arrays::Constant -pub fn vortex_array::arrays::ChunkedArray::nchunks(&self) -> usize +pub fn vortex_array::arrays::Constant::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Constant>) -> vortex_error::VortexResult -pub unsafe fn vortex_array::arrays::ChunkedArray::new_unchecked(chunks: alloc::vec::Vec, dtype: vortex_array::dtype::DType) -> Self +impl vortex_array::arrays::dict::TakeReduce for vortex_array::arrays::Constant -pub fn vortex_array::arrays::ChunkedArray::non_empty_chunks(&self) -> impl core::iter::traits::iterator::Iterator + '_ +pub fn vortex_array::arrays::Constant::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::Constant>, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ChunkedArray::rechunk(&self, target_bytesize: u64, target_rowsize: usize) -> vortex_error::VortexResult +impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::Constant -pub fn vortex_array::arrays::ChunkedArray::try_new(chunks: alloc::vec::Vec, dtype: vortex_array::dtype::DType) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Constant::filter(array: vortex_array::ArrayView<'_, vortex_array::arrays::Constant>, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ChunkedArray::validate(chunks: &[vortex_array::ArrayRef], dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult<()> +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Constant -impl vortex_array::arrays::ChunkedArray +pub fn vortex_array::arrays::Constant::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ChunkedArray::to_array(&self) -> vortex_array::ArrayRef +impl vortex_array::scalar_fn::fns::between::BetweenReduce for vortex_array::arrays::Constant -impl core::clone::Clone for vortex_array::arrays::ChunkedArray +pub fn vortex_array::arrays::Constant::between(array: vortex_array::ArrayView<'_, vortex_array::arrays::Constant>, lower: &vortex_array::ArrayRef, upper: &vortex_array::ArrayRef, options: &vortex_array::scalar_fn::fns::between::BetweenOptions) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ChunkedArray::clone(&self) -> vortex_array::arrays::ChunkedArray +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::Constant -impl core::convert::AsRef for vortex_array::arrays::ChunkedArray +pub fn vortex_array::arrays::Constant::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::Constant>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ChunkedArray::as_ref(&self) -> &dyn vortex_array::DynArray +impl vortex_array::scalar_fn::fns::fill_null::FillNullReduce for vortex_array::arrays::Constant -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::arrays::Constant::fill_null(array: vortex_array::ArrayView<'_, vortex_array::arrays::Constant>, fill_value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult> -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::ChunkedArray) -> vortex_array::ArrayRef +impl vortex_array::scalar_fn::fns::not::NotReduce for vortex_array::arrays::Constant -impl core::fmt::Debug for vortex_array::arrays::ChunkedArray +pub fn vortex_array::arrays::Constant::invert(array: vortex_array::ArrayView<'_, vortex_array::arrays::Constant>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ChunkedArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub struct vortex_array::arrays::Decimal -impl core::iter::traits::collect::FromIterator> for vortex_array::arrays::ChunkedArray +impl vortex_array::arrays::Decimal -pub fn vortex_array::arrays::ChunkedArray::from_iter>(iter: T) -> Self +pub const vortex_array::arrays::Decimal::ID: vortex_array::ArrayId -impl core::ops::deref::Deref for vortex_array::arrays::ChunkedArray +impl core::clone::Clone for vortex_array::arrays::Decimal -pub type vortex_array::arrays::ChunkedArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::arrays::Decimal::clone(&self) -> vortex_array::arrays::Decimal -pub fn vortex_array::arrays::ChunkedArray::deref(&self) -> &Self::Target +impl core::fmt::Debug for vortex_array::arrays::Decimal -impl vortex_array::IntoArray for vortex_array::arrays::ChunkedArray +pub fn vortex_array::arrays::Decimal::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::ChunkedArray::into_array(self) -> vortex_array::ArrayRef +impl vortex_array::OperationsVTable for vortex_array::arrays::Decimal -pub struct vortex_array::arrays::Constant +pub fn vortex_array::arrays::Decimal::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Decimal>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::arrays::Constant +impl vortex_array::VTable for vortex_array::arrays::Decimal -pub const vortex_array::arrays::Constant::ID: vortex_array::vtable::ArrayId +pub type vortex_array::arrays::Decimal::ArrayData = vortex_array::arrays::decimal::DecimalData -impl vortex_array::arrays::Constant +pub type vortex_array::arrays::Decimal::Metadata = vortex_array::ProstMetadata -pub const vortex_array::arrays::Constant::TAKE_RULES: vortex_array::optimizer::rules::ParentRuleSet +pub type vortex_array::arrays::Decimal::OperationsVTable = vortex_array::arrays::Decimal -impl core::clone::Clone for vortex_array::arrays::Constant +pub type vortex_array::arrays::Decimal::ValidityVTable = vortex_array::arrays::Decimal -pub fn vortex_array::arrays::Constant::clone(&self) -> vortex_array::arrays::Constant +pub fn vortex_array::arrays::Decimal::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl core::fmt::Debug for vortex_array::arrays::Constant +pub fn vortex_array::arrays::Decimal::array_eq(array: &vortex_array::arrays::decimal::DecimalData, other: &vortex_array::arrays::decimal::DecimalData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::Constant::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Decimal::array_hash(array: &vortex_array::arrays::decimal::DecimalData, state: &mut H, precision: vortex_array::Precision) -impl vortex_array::arrays::dict::TakeReduce for vortex_array::arrays::Constant +pub fn vortex_array::arrays::Decimal::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Constant::take(array: &vortex_array::arrays::ConstantArray, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Decimal::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::Constant +pub fn vortex_array::arrays::Decimal::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Constant::filter(array: &vortex_array::arrays::ConstantArray, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Decimal::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Constant +pub fn vortex_array::arrays::Decimal::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Constant::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Decimal::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::fns::between::BetweenReduce for vortex_array::arrays::Constant +pub fn vortex_array::arrays::Decimal::dtype(array: &vortex_array::arrays::decimal::DecimalData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::Constant::between(array: &vortex_array::arrays::ConstantArray, lower: &vortex_array::ArrayRef, upper: &vortex_array::ArrayRef, options: &vortex_array::scalar_fn::fns::between::BetweenOptions) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Decimal::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::Constant +pub fn vortex_array::arrays::Decimal::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Constant::cast(array: &vortex_array::arrays::ConstantArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Decimal::id(&self) -> vortex_array::ArrayId -impl vortex_array::scalar_fn::fns::fill_null::FillNullReduce for vortex_array::arrays::Constant +pub fn vortex_array::arrays::Decimal::len(array: &vortex_array::arrays::decimal::DecimalData) -> usize -pub fn vortex_array::arrays::Constant::fill_null(array: &vortex_array::arrays::ConstantArray, fill_value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Decimal::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::fns::not::NotReduce for vortex_array::arrays::Constant +pub fn vortex_array::arrays::Decimal::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Constant::invert(array: &vortex_array::arrays::ConstantArray) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Decimal::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Constant +pub fn vortex_array::arrays::Decimal::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Constant::scalar_at(array: &vortex_array::arrays::ConstantArray, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Decimal::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -impl vortex_array::vtable::VTable for vortex_array::arrays::Constant +pub fn vortex_array::arrays::Decimal::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub type vortex_array::arrays::Constant::Array = vortex_array::arrays::ConstantArray +pub fn vortex_array::arrays::Decimal::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub type vortex_array::arrays::Constant::Metadata = vortex_array::scalar::Scalar +pub fn vortex_array::arrays::Decimal::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub type vortex_array::arrays::Constant::OperationsVTable = vortex_array::arrays::Constant +pub fn vortex_array::arrays::Decimal::stats(array: &vortex_array::arrays::decimal::DecimalData) -> &vortex_array::stats::ArrayStats -pub type vortex_array::arrays::Constant::ValidityVTable = vortex_array::arrays::Constant +pub fn vortex_array::arrays::Decimal::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::Constant::append_to_builder(array: &vortex_array::arrays::ConstantArray, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Decimal::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Constant::array_eq(array: &vortex_array::arrays::ConstantArray, other: &vortex_array::arrays::ConstantArray, _precision: vortex_array::Precision) -> bool +impl vortex_array::ValidityVTable for vortex_array::arrays::Decimal -pub fn vortex_array::arrays::Constant::array_hash(array: &vortex_array::arrays::ConstantArray, state: &mut H, _precision: vortex_array::Precision) +pub fn vortex_array::arrays::Decimal::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Decimal>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Constant::buffer(array: &vortex_array::arrays::ConstantArray, idx: usize) -> vortex_array::buffer::BufferHandle +impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::Decimal -pub fn vortex_array::arrays::Constant::buffer_name(_array: &vortex_array::arrays::ConstantArray, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::Decimal::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::Decimal>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Constant::build(_dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], _children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Decimal -pub fn vortex_array::arrays::Constant::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Decimal::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Constant::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::arrays::decimal::DecimalMaskedValidityRule -pub fn vortex_array::arrays::Constant::deserialize(_bytes: &[u8], dtype: &vortex_array::dtype::DType, _len: usize, buffers: &[vortex_array::buffer::BufferHandle], session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub type vortex_array::arrays::decimal::DecimalMaskedValidityRule::Parent = vortex_array::arrays::Masked -pub fn vortex_array::arrays::Constant::dtype(array: &vortex_array::arrays::ConstantArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::decimal::DecimalMaskedValidityRule::reduce_parent(&self, array: vortex_array::ArrayView<'_, vortex_array::arrays::Decimal>, parent: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>, _child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Constant::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::scalar_fn::fns::between::BetweenKernel for vortex_array::arrays::Decimal -pub fn vortex_array::arrays::Constant::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Decimal::between(arr: vortex_array::ArrayView<'_, vortex_array::arrays::Decimal>, lower: &vortex_array::ArrayRef, upper: &vortex_array::ArrayRef, options: &vortex_array::scalar_fn::fns::between::BetweenOptions, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Constant::id(&self) -> vortex_array::vtable::ArrayId +impl vortex_array::scalar_fn::fns::cast::CastKernel for vortex_array::arrays::Decimal -pub fn vortex_array::arrays::Constant::len(array: &vortex_array::arrays::ConstantArray) -> usize +pub fn vortex_array::arrays::Decimal::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::Decimal>, dtype: &vortex_array::dtype::DType, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Constant::metadata(array: &vortex_array::arrays::ConstantArray) -> vortex_error::VortexResult +impl vortex_array::scalar_fn::fns::fill_null::FillNullKernel for vortex_array::arrays::Decimal -pub fn vortex_array::arrays::Constant::nbuffers(_array: &vortex_array::arrays::ConstantArray) -> usize +pub fn vortex_array::arrays::Decimal::fill_null(array: vortex_array::ArrayView<'_, vortex_array::arrays::Decimal>, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Constant::nchildren(array: &Self::Array) -> usize +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Decimal -pub fn vortex_array::arrays::Constant::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Decimal::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::Decimal>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Constant::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub struct vortex_array::arrays::Dict -pub fn vortex_array::arrays::Constant::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +impl vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::Constant::slot_name(_array: &vortex_array::arrays::ConstantArray, idx: usize) -> alloc::string::String +pub const vortex_array::arrays::dict::Dict::ID: vortex_array::ArrayId -pub fn vortex_array::arrays::Constant::slots(array: &vortex_array::arrays::ConstantArray) -> &[core::option::Option] +impl core::clone::Clone for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::Constant::stats(array: &vortex_array::arrays::ConstantArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::dict::Dict::clone(&self) -> vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::Constant::vtable(_array: &Self::Array) -> &Self +impl core::fmt::Debug for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::Constant::with_slots(array: &mut vortex_array::arrays::ConstantArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::dict::Dict::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Constant +impl vortex_array::OperationsVTable for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::Constant::validity(array: &vortex_array::arrays::ConstantArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub struct vortex_array::arrays::ConstantArray +impl vortex_array::VTable for vortex_array::arrays::dict::Dict -impl vortex_array::arrays::ConstantArray +pub type vortex_array::arrays::dict::Dict::ArrayData = vortex_array::arrays::dict::DictData -pub fn vortex_array::arrays::ConstantArray::into_parts(self) -> vortex_array::scalar::Scalar +pub type vortex_array::arrays::dict::Dict::Metadata = vortex_array::ProstMetadata -pub fn vortex_array::arrays::ConstantArray::new(scalar: S, len: usize) -> Self where S: core::convert::Into +pub type vortex_array::arrays::dict::Dict::OperationsVTable = vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::ConstantArray::scalar(&self) -> &vortex_array::scalar::Scalar +pub type vortex_array::arrays::dict::Dict::ValidityVTable = vortex_array::arrays::dict::Dict -impl vortex_array::arrays::ConstantArray +pub fn vortex_array::arrays::dict::Dict::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::ConstantArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::dict::Dict::array_eq(array: &vortex_array::arrays::dict::DictData, other: &vortex_array::arrays::dict::DictData, precision: vortex_array::Precision) -> bool -impl core::clone::Clone for vortex_array::arrays::ConstantArray +pub fn vortex_array::arrays::dict::Dict::array_hash(array: &vortex_array::arrays::dict::DictData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::ConstantArray::clone(&self) -> vortex_array::arrays::ConstantArray +pub fn vortex_array::arrays::dict::Dict::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -impl core::convert::AsRef for vortex_array::arrays::ConstantArray +pub fn vortex_array::arrays::dict::Dict::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::arrays::ConstantArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::dict::Dict::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::arrays::dict::Dict::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::ConstantArray) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::dict::Dict::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl core::fmt::Debug for vortex_array::arrays::ConstantArray +pub fn vortex_array::arrays::dict::Dict::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ConstantArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::dict::Dict::dtype(array: &vortex_array::arrays::dict::DictData) -> &vortex_array::dtype::DType -impl core::ops::deref::Deref for vortex_array::arrays::ConstantArray +pub fn vortex_array::arrays::dict::Dict::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::arrays::ConstantArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::arrays::dict::Dict::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ConstantArray::deref(&self) -> &Self::Target +pub fn vortex_array::arrays::dict::Dict::id(&self) -> vortex_array::ArrayId -impl vortex_array::IntoArray for vortex_array::arrays::ConstantArray +pub fn vortex_array::arrays::dict::Dict::len(array: &vortex_array::arrays::dict::DictData) -> usize -pub fn vortex_array::arrays::ConstantArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::dict::Dict::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub struct vortex_array::arrays::Decimal +pub fn vortex_array::arrays::dict::Dict::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -impl vortex_array::arrays::Decimal +pub fn vortex_array::arrays::dict::Dict::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub const vortex_array::arrays::Decimal::ID: vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::dict::Dict::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -impl core::clone::Clone for vortex_array::arrays::Decimal +pub fn vortex_array::arrays::dict::Dict::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Decimal::clone(&self) -> vortex_array::arrays::Decimal +pub fn vortex_array::arrays::dict::Dict::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -impl core::fmt::Debug for vortex_array::arrays::Decimal +pub fn vortex_array::arrays::dict::Dict::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Decimal::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::dict::Dict::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::Decimal +pub fn vortex_array::arrays::dict::Dict::stats(array: &vortex_array::arrays::dict::DictData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Decimal::take(array: &vortex_array::arrays::DecimalArray, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::vtable(_array: &Self::ArrayData) -> &Self -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Decimal +pub fn vortex_array::arrays::dict::Dict::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Decimal::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +impl vortex_array::ValidityVTable for vortex_array::arrays::dict::Dict -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::arrays::decimal::DecimalMaskedValidityRule +pub fn vortex_array::arrays::dict::Dict::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>) -> vortex_error::VortexResult -pub type vortex_array::arrays::decimal::DecimalMaskedValidityRule::Parent = vortex_array::arrays::Masked +impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::decimal::DecimalMaskedValidityRule::reduce_parent(&self, array: &vortex_array::arrays::DecimalArray, parent: &vortex_array::arrays::MaskedArray, _child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, indices: &vortex_array::ArrayRef, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::scalar_fn::fns::between::BetweenKernel for vortex_array::arrays::Decimal +impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::Decimal::between(arr: &vortex_array::arrays::DecimalArray, lower: &vortex_array::ArrayRef, upper: &vortex_array::ArrayRef, options: &vortex_array::scalar_fn::fns::between::BetweenOptions, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::filter(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> -impl vortex_array::scalar_fn::fns::cast::CastKernel for vortex_array::arrays::Decimal +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::Decimal::cast(array: &vortex_array::arrays::DecimalArray, dtype: &vortex_array::dtype::DType, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -impl vortex_array::scalar_fn::fns::fill_null::FillNullKernel for vortex_array::arrays::Decimal +impl vortex_array::scalar_fn::fns::binary::CompareKernel for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::Decimal::fill_null(array: &vortex_array::arrays::DecimalArray, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::compare(lhs: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Decimal +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::Decimal::mask(array: &vortex_array::arrays::DecimalArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Decimal +impl vortex_array::scalar_fn::fns::fill_null::FillNullKernel for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::Decimal::scalar_at(array: &vortex_array::arrays::DecimalArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::fill_null(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::vtable::VTable for vortex_array::arrays::Decimal +impl vortex_array::scalar_fn::fns::like::LikeReduce for vortex_array::arrays::dict::Dict -pub type vortex_array::arrays::Decimal::Array = vortex_array::arrays::DecimalArray +pub fn vortex_array::arrays::dict::Dict::like(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, pattern: &vortex_array::ArrayRef, options: vortex_array::scalar_fn::fns::like::LikeOptions) -> vortex_error::VortexResult> -pub type vortex_array::arrays::Decimal::Metadata = vortex_array::ProstMetadata +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::dict::Dict -pub type vortex_array::arrays::Decimal::OperationsVTable = vortex_array::arrays::Decimal +pub fn vortex_array::arrays::dict::Dict::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub type vortex_array::arrays::Decimal::ValidityVTable = vortex_array::arrays::Decimal +pub struct vortex_array::arrays::Extension -pub fn vortex_array::arrays::Decimal::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +impl vortex_array::arrays::Extension -pub fn vortex_array::arrays::Decimal::array_eq(array: &vortex_array::arrays::DecimalArray, other: &vortex_array::arrays::DecimalArray, precision: vortex_array::Precision) -> bool +pub const vortex_array::arrays::Extension::ID: vortex_array::ArrayId -pub fn vortex_array::arrays::Decimal::array_hash(array: &vortex_array::arrays::DecimalArray, state: &mut H, precision: vortex_array::Precision) +impl core::clone::Clone for vortex_array::arrays::Extension -pub fn vortex_array::arrays::Decimal::buffer(array: &vortex_array::arrays::DecimalArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Extension::clone(&self) -> vortex_array::arrays::Extension -pub fn vortex_array::arrays::Decimal::buffer_name(_array: &vortex_array::arrays::DecimalArray, idx: usize) -> core::option::Option +impl core::fmt::Debug for vortex_array::arrays::Extension -pub fn vortex_array::arrays::Decimal::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Extension::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::Decimal::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +impl vortex_array::OperationsVTable for vortex_array::arrays::Extension -pub fn vortex_array::arrays::Decimal::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Extension::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Extension>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Decimal::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +impl vortex_array::VTable for vortex_array::arrays::Extension -pub fn vortex_array::arrays::Decimal::dtype(array: &vortex_array::arrays::DecimalArray) -> &vortex_array::dtype::DType +pub type vortex_array::arrays::Extension::ArrayData = vortex_array::arrays::extension::ExtensionData -pub fn vortex_array::arrays::Decimal::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub type vortex_array::arrays::Extension::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::arrays::Decimal::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Extension::OperationsVTable = vortex_array::arrays::Extension -pub fn vortex_array::arrays::Decimal::id(&self) -> vortex_array::vtable::ArrayId +pub type vortex_array::arrays::Extension::ValidityVTable = vortex_array::ValidityVTableFromChild -pub fn vortex_array::arrays::Decimal::len(array: &vortex_array::arrays::DecimalArray) -> usize +pub fn vortex_array::arrays::Extension::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Decimal::metadata(array: &vortex_array::arrays::DecimalArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Extension::array_eq(array: &vortex_array::arrays::extension::ExtensionData, other: &vortex_array::arrays::extension::ExtensionData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::Decimal::nbuffers(_array: &vortex_array::arrays::DecimalArray) -> usize +pub fn vortex_array::arrays::Extension::array_hash(array: &vortex_array::arrays::extension::ExtensionData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::Decimal::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::Extension::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Decimal::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Extension::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Decimal::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Extension::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Decimal::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Extension::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Decimal::slot_name(_array: &vortex_array::arrays::DecimalArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Extension::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Decimal::slots(array: &vortex_array::arrays::DecimalArray) -> &[core::option::Option] +pub fn vortex_array::arrays::Extension::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Decimal::stats(array: &vortex_array::arrays::DecimalArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::Extension::dtype(array: &vortex_array::arrays::extension::ExtensionData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::Decimal::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::Extension::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Decimal::with_slots(array: &mut vortex_array::arrays::DecimalArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Extension::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Decimal +pub fn vortex_array::arrays::Extension::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Decimal::validity(array: &vortex_array::arrays::DecimalArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Extension::len(array: &vortex_array::arrays::extension::ExtensionData) -> usize -pub struct vortex_array::arrays::DecimalArray +pub fn vortex_array::arrays::Extension::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -impl vortex_array::arrays::DecimalArray +pub fn vortex_array::arrays::Extension::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::DecimalArray::buffer(&self) -> vortex_buffer::buffer::Buffer +pub fn vortex_array::arrays::Extension::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::DecimalArray::buffer_handle(&self) -> &vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Extension::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::DecimalArray::decimal_dtype(&self) -> vortex_array::dtype::DecimalDType +pub fn vortex_array::arrays::Extension::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::DecimalArray::from_iter>(iter: I, decimal_dtype: vortex_array::dtype::DecimalDType) -> Self +pub fn vortex_array::arrays::Extension::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::DecimalArray::from_option_iter>>(iter: I, decimal_dtype: vortex_array::dtype::DecimalDType) -> Self +pub fn vortex_array::arrays::Extension::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::DecimalArray::into_parts(self) -> vortex_array::arrays::decimal::DecimalArrayParts +pub fn vortex_array::arrays::Extension::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::DecimalArray::new(buffer: vortex_buffer::buffer::Buffer, decimal_dtype: vortex_array::dtype::DecimalDType, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::arrays::Extension::stats(array: &vortex_array::arrays::extension::ExtensionData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::DecimalArray::new_handle(values: vortex_array::buffer::BufferHandle, values_type: vortex_array::dtype::DecimalType, decimal_dtype: vortex_array::dtype::DecimalDType, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::arrays::Extension::vtable(_array: &Self::ArrayData) -> &Self -pub unsafe fn vortex_array::arrays::DecimalArray::new_unchecked(buffer: vortex_buffer::buffer::Buffer, decimal_dtype: vortex_array::dtype::DecimalDType, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::arrays::Extension::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub unsafe fn vortex_array::arrays::DecimalArray::new_unchecked_from_byte_buffer(byte_buffer: vortex_buffer::ByteBuffer, values_type: vortex_array::dtype::DecimalType, decimal_dtype: vortex_array::dtype::DecimalDType, validity: vortex_array::validity::Validity) -> Self +impl vortex_array::ValidityChild for vortex_array::arrays::Extension -pub unsafe fn vortex_array::arrays::DecimalArray::new_unchecked_handle(values: vortex_array::buffer::BufferHandle, values_type: vortex_array::dtype::DecimalType, decimal_dtype: vortex_array::dtype::DecimalDType, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::arrays::Extension::validity_child(array: &vortex_array::arrays::extension::ExtensionData) -> &vortex_array::ArrayRef -pub fn vortex_array::arrays::DecimalArray::patch(self, patches: &vortex_array::patches::Patches, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::Extension -pub fn vortex_array::arrays::DecimalArray::precision(&self) -> u8 +pub fn vortex_array::arrays::Extension::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::Extension>, indices: &vortex_array::ArrayRef, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::DecimalArray::scale(&self) -> i8 +impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::Extension -pub fn vortex_array::arrays::DecimalArray::try_new(buffer: vortex_buffer::buffer::Buffer, decimal_dtype: vortex_array::dtype::DecimalDType, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Extension::filter(array: vortex_array::ArrayView<'_, vortex_array::arrays::Extension>, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::DecimalArray::try_new_handle(values: vortex_array::buffer::BufferHandle, values_type: vortex_array::dtype::DecimalType, decimal_dtype: vortex_array::dtype::DecimalDType, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Extension -pub fn vortex_array::arrays::DecimalArray::validity(&self) -> vortex_array::validity::Validity +pub fn vortex_array::arrays::Extension::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::DecimalArray::values_type(&self) -> vortex_array::dtype::DecimalType +impl vortex_array::scalar_fn::fns::binary::CompareKernel for vortex_array::arrays::Extension -impl vortex_array::arrays::DecimalArray +pub fn vortex_array::arrays::Extension::compare(lhs: vortex_array::ArrayView<'_, vortex_array::arrays::Extension>, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::DecimalArray::to_array(&self) -> vortex_array::ArrayRef +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::Extension -impl core::clone::Clone for vortex_array::arrays::DecimalArray +pub fn vortex_array::arrays::Extension::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::Extension>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::DecimalArray::clone(&self) -> vortex_array::arrays::DecimalArray +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Extension -impl core::convert::AsRef for vortex_array::arrays::DecimalArray +pub fn vortex_array::arrays::Extension::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::Extension>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::DecimalArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub struct vortex_array::arrays::Filter -impl core::convert::From for vortex_array::ArrayRef +impl vortex_array::arrays::Filter -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::DecimalArray) -> vortex_array::ArrayRef +pub const vortex_array::arrays::Filter::ID: vortex_array::ArrayId -impl core::fmt::Debug for vortex_array::arrays::DecimalArray +impl core::clone::Clone for vortex_array::arrays::Filter -pub fn vortex_array::arrays::DecimalArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Filter::clone(&self) -> vortex_array::arrays::Filter -impl core::ops::deref::Deref for vortex_array::arrays::DecimalArray +impl core::fmt::Debug for vortex_array::arrays::Filter -pub type vortex_array::arrays::DecimalArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::arrays::Filter::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::DecimalArray::deref(&self) -> &Self::Target +impl vortex_array::OperationsVTable for vortex_array::arrays::Filter -impl vortex_array::Executable for vortex_array::arrays::DecimalArray +pub fn vortex_array::arrays::Filter::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Filter>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::DecimalArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::VTable for vortex_array::arrays::Filter -impl vortex_array::IntoArray for vortex_array::arrays::DecimalArray +pub type vortex_array::arrays::Filter::ArrayData = vortex_array::arrays::filter::FilterData -pub fn vortex_array::arrays::DecimalArray::into_array(self) -> vortex_array::ArrayRef +pub type vortex_array::arrays::Filter::Metadata = vortex_array::arrays::filter::vtable::FilterMetadata -pub struct vortex_array::arrays::Dict +pub type vortex_array::arrays::Filter::OperationsVTable = vortex_array::arrays::Filter -impl vortex_array::arrays::dict::Dict +pub type vortex_array::arrays::Filter::ValidityVTable = vortex_array::arrays::Filter -pub const vortex_array::arrays::dict::Dict::ID: vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::Filter::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl core::clone::Clone for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::Filter::array_eq(array: &vortex_array::arrays::filter::FilterData, other: &vortex_array::arrays::filter::FilterData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::dict::Dict::clone(&self) -> vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::Filter::array_hash(array: &vortex_array::arrays::filter::FilterData, state: &mut H, precision: vortex_array::Precision) -impl core::fmt::Debug for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::Filter::buffer(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::dict::Dict::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Filter::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::Filter::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::filter::vtable::FilterMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::dict::Dict::take(array: &vortex_array::arrays::dict::DictArray, indices: &vortex_array::ArrayRef, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::Filter::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::dict::Dict::filter(array: &vortex_array::arrays::dict::DictArray, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::Filter::dtype(array: &vortex_array::arrays::filter::FilterData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::dict::Dict::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::fns::binary::CompareKernel for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::Filter::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::Dict::compare(lhs: &vortex_array::arrays::dict::DictArray, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::id(&self) -> vortex_array::ArrayId -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::Filter::len(array: &vortex_array::arrays::filter::FilterData) -> usize -pub fn vortex_array::arrays::dict::Dict::cast(array: &vortex_array::arrays::dict::DictArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::fns::fill_null::FillNullKernel for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::Filter::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::dict::Dict::fill_null(array: &vortex_array::arrays::dict::DictArray, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -impl vortex_array::scalar_fn::fns::like::LikeReduce for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::Filter::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::Dict::like(array: &vortex_array::arrays::dict::DictArray, pattern: &vortex_array::ArrayRef, options: vortex_array::scalar_fn::fns::like::LikeOptions) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::Filter::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::dict::Dict::mask(array: &vortex_array::arrays::dict::DictArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::Filter::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::dict::Dict::scalar_at(array: &vortex_array::arrays::dict::DictArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Filter::stats(array: &vortex_array::arrays::filter::FilterData) -> &vortex_array::stats::ArrayStats -impl vortex_array::vtable::VTable for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::Filter::vtable(_array: &vortex_array::arrays::filter::FilterData) -> &Self -pub type vortex_array::arrays::dict::Dict::Array = vortex_array::arrays::dict::DictArray +pub fn vortex_array::arrays::Filter::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub type vortex_array::arrays::dict::Dict::Metadata = vortex_array::ProstMetadata +impl vortex_array::ValidityVTable for vortex_array::arrays::Filter -pub type vortex_array::arrays::dict::Dict::OperationsVTable = vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::Filter::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Filter>) -> vortex_error::VortexResult -pub type vortex_array::arrays::dict::Dict::ValidityVTable = vortex_array::arrays::dict::Dict +pub struct vortex_array::arrays::FixedSizeList -pub fn vortex_array::arrays::dict::Dict::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +impl vortex_array::arrays::FixedSizeList -pub fn vortex_array::arrays::dict::Dict::array_eq(array: &vortex_array::arrays::dict::DictArray, other: &vortex_array::arrays::dict::DictArray, precision: vortex_array::Precision) -> bool +pub const vortex_array::arrays::FixedSizeList::ID: vortex_array::ArrayId -pub fn vortex_array::arrays::dict::Dict::array_hash(array: &vortex_array::arrays::dict::DictArray, state: &mut H, precision: vortex_array::Precision) +impl core::clone::Clone for vortex_array::arrays::FixedSizeList -pub fn vortex_array::arrays::dict::Dict::buffer(_array: &vortex_array::arrays::dict::DictArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::FixedSizeList::clone(&self) -> vortex_array::arrays::FixedSizeList -pub fn vortex_array::arrays::dict::Dict::buffer_name(_array: &vortex_array::arrays::dict::DictArray, _idx: usize) -> core::option::Option +impl core::fmt::Debug for vortex_array::arrays::FixedSizeList -pub fn vortex_array::arrays::dict::Dict::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::dict::Dict::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +impl vortex_array::OperationsVTable for vortex_array::arrays::FixedSizeList -pub fn vortex_array::arrays::dict::Dict::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::FixedSizeList::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::FixedSizeList>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::dict::Dict::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +impl vortex_array::VTable for vortex_array::arrays::FixedSizeList -pub fn vortex_array::arrays::dict::Dict::dtype(array: &vortex_array::arrays::dict::DictArray) -> &vortex_array::dtype::DType +pub type vortex_array::arrays::FixedSizeList::ArrayData = vortex_array::arrays::fixed_size_list::FixedSizeListData -pub fn vortex_array::arrays::dict::Dict::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub type vortex_array::arrays::FixedSizeList::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::arrays::dict::Dict::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub type vortex_array::arrays::FixedSizeList::OperationsVTable = vortex_array::arrays::FixedSizeList -pub fn vortex_array::arrays::dict::Dict::id(&self) -> vortex_array::vtable::ArrayId +pub type vortex_array::arrays::FixedSizeList::ValidityVTable = vortex_array::arrays::FixedSizeList -pub fn vortex_array::arrays::dict::Dict::len(array: &vortex_array::arrays::dict::DictArray) -> usize +pub fn vortex_array::arrays::FixedSizeList::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::dict::Dict::metadata(array: &vortex_array::arrays::dict::DictArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::array_eq(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData, other: &vortex_array::arrays::fixed_size_list::FixedSizeListData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::dict::Dict::nbuffers(_array: &vortex_array::arrays::dict::DictArray) -> usize +pub fn vortex_array::arrays::FixedSizeList::array_hash(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::dict::Dict::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::FixedSizeList::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::dict::Dict::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::FixedSizeList::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::dict::Dict::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::FixedSizeList::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::dict::Dict::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::FixedSizeList::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::dict::Dict::slot_name(_array: &vortex_array::arrays::dict::DictArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::FixedSizeList::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::dict::Dict::slots(array: &vortex_array::arrays::dict::DictArray) -> &[core::option::Option] +pub fn vortex_array::arrays::FixedSizeList::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::dict::Dict::stats(array: &vortex_array::arrays::dict::DictArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::FixedSizeList::dtype(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::dict::Dict::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::FixedSizeList::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::dict::Dict::with_slots(array: &mut vortex_array::arrays::dict::DictArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::FixedSizeList::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::FixedSizeList::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::dict::Dict::validity(array: &vortex_array::arrays::dict::DictArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::len(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData) -> usize -pub struct vortex_array::arrays::DictArray +pub fn vortex_array::arrays::FixedSizeList::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -impl vortex_array::arrays::dict::DictArray +pub fn vortex_array::arrays::FixedSizeList::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::dict::DictArray::codes(&self) -> &vortex_array::ArrayRef +pub fn vortex_array::arrays::FixedSizeList::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::dict::DictArray::compute_referenced_values_mask(&self, referenced: bool) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::DictArray::has_all_values_referenced(&self) -> bool +pub fn vortex_array::arrays::FixedSizeList::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::DictArray::into_parts(self) -> vortex_array::arrays::dict::DictArrayParts +pub fn vortex_array::arrays::FixedSizeList::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::dict::DictArray::new(codes: vortex_array::ArrayRef, values: vortex_array::ArrayRef) -> Self +pub fn vortex_array::arrays::FixedSizeList::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub unsafe fn vortex_array::arrays::dict::DictArray::new_unchecked(codes: vortex_array::ArrayRef, values: vortex_array::ArrayRef) -> Self +pub fn vortex_array::arrays::FixedSizeList::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub unsafe fn vortex_array::arrays::dict::DictArray::set_all_values_referenced(self, all_values_referenced: bool) -> Self +pub fn vortex_array::arrays::FixedSizeList::stats(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::dict::DictArray::try_new(codes: vortex_array::ArrayRef, values: vortex_array::ArrayRef) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::vtable(_array: &vortex_array::arrays::fixed_size_list::FixedSizeListData) -> &Self -pub fn vortex_array::arrays::dict::DictArray::validate_all_values_referenced(&self) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::FixedSizeList::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::dict::DictArray::values(&self) -> &vortex_array::ArrayRef +impl vortex_array::ValidityVTable for vortex_array::arrays::FixedSizeList -impl vortex_array::arrays::dict::DictArray +pub fn vortex_array::arrays::FixedSizeList::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::FixedSizeList>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::dict::DictArray::to_array(&self) -> vortex_array::ArrayRef +impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::FixedSizeList -impl core::clone::Clone for vortex_array::arrays::dict::DictArray +pub fn vortex_array::arrays::FixedSizeList::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::FixedSizeList>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::DictArray::clone(&self) -> vortex_array::arrays::dict::DictArray +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::FixedSizeList -impl core::convert::AsRef for vortex_array::arrays::dict::DictArray +pub fn vortex_array::arrays::FixedSizeList::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::DictArray::as_ref(&self) -> &dyn vortex_array::DynArray +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::FixedSizeList -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::arrays::FixedSizeList::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::FixedSizeList>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::dict::DictArray) -> vortex_array::ArrayRef +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::FixedSizeList -impl core::fmt::Debug for vortex_array::arrays::dict::DictArray +pub fn vortex_array::arrays::FixedSizeList::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::FixedSizeList>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::DictArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub struct vortex_array::arrays::List -impl core::ops::deref::Deref for vortex_array::arrays::dict::DictArray +impl vortex_array::arrays::List -pub type vortex_array::arrays::dict::DictArray::Target = dyn vortex_array::DynArray +pub const vortex_array::arrays::List::ID: vortex_array::ArrayId -pub fn vortex_array::arrays::dict::DictArray::deref(&self) -> &Self::Target +impl core::clone::Clone for vortex_array::arrays::List -impl vortex_array::IntoArray for vortex_array::arrays::dict::DictArray +pub fn vortex_array::arrays::List::clone(&self) -> vortex_array::arrays::List -pub fn vortex_array::arrays::dict::DictArray::into_array(self) -> vortex_array::ArrayRef +impl core::fmt::Debug for vortex_array::arrays::List -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::dictionary_array::DictionaryArray> for vortex_array::arrays::dict::DictArray +pub fn vortex_array::arrays::List::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::dict::DictArray::from_arrow(array: &arrow_array::array::dictionary_array::DictionaryArray, nullable: bool) -> vortex_error::VortexResult +impl vortex_array::OperationsVTable for vortex_array::arrays::List -pub struct vortex_array::arrays::Extension +pub fn vortex_array::arrays::List::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::List>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::arrays::Extension +impl vortex_array::VTable for vortex_array::arrays::List -pub const vortex_array::arrays::Extension::ID: vortex_array::vtable::ArrayId +pub type vortex_array::arrays::List::ArrayData = vortex_array::arrays::list::ListData -impl core::clone::Clone for vortex_array::arrays::Extension +pub type vortex_array::arrays::List::Metadata = vortex_array::ProstMetadata -pub fn vortex_array::arrays::Extension::clone(&self) -> vortex_array::arrays::Extension +pub type vortex_array::arrays::List::OperationsVTable = vortex_array::arrays::List -impl core::fmt::Debug for vortex_array::arrays::Extension +pub type vortex_array::arrays::List::ValidityVTable = vortex_array::arrays::List -pub fn vortex_array::arrays::Extension::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::List::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::Extension +pub fn vortex_array::arrays::List::array_eq(array: &vortex_array::arrays::list::ListData, other: &vortex_array::arrays::list::ListData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::Extension::take(array: &vortex_array::arrays::ExtensionArray, indices: &vortex_array::ArrayRef, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::List::array_hash(array: &vortex_array::arrays::list::ListData, state: &mut H, precision: vortex_array::Precision) -impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::Extension +pub fn vortex_array::arrays::List::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Extension::filter(array: &vortex_array::arrays::ExtensionArray, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::List::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Extension +pub fn vortex_array::arrays::List::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Extension::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::List::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -impl vortex_array::scalar_fn::fns::binary::CompareKernel for vortex_array::arrays::Extension +pub fn vortex_array::arrays::List::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Extension::compare(lhs: &vortex_array::arrays::ExtensionArray, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::List::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::Extension +pub fn vortex_array::arrays::List::dtype(array: &vortex_array::arrays::list::ListData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::Extension::cast(array: &vortex_array::arrays::ExtensionArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::List::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Extension +pub fn vortex_array::arrays::List::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Extension::mask(array: &vortex_array::arrays::ExtensionArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::List::id(&self) -> vortex_array::ArrayId -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Extension +pub fn vortex_array::arrays::List::len(array: &vortex_array::arrays::list::ListData) -> usize -pub fn vortex_array::arrays::Extension::scalar_at(array: &vortex_array::arrays::ExtensionArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -impl vortex_array::vtable::VTable for vortex_array::arrays::Extension +pub fn vortex_array::arrays::List::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub type vortex_array::arrays::Extension::Array = vortex_array::arrays::ExtensionArray +pub fn vortex_array::arrays::List::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub type vortex_array::arrays::Extension::Metadata = vortex_array::EmptyMetadata +pub fn vortex_array::arrays::List::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub type vortex_array::arrays::Extension::OperationsVTable = vortex_array::arrays::Extension +pub fn vortex_array::arrays::List::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub type vortex_array::arrays::Extension::ValidityVTable = vortex_array::vtable::ValidityVTableFromChild +pub fn vortex_array::arrays::List::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Extension::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::List::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Extension::array_eq(array: &vortex_array::arrays::ExtensionArray, other: &vortex_array::arrays::ExtensionArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::List::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::Extension::array_hash(array: &vortex_array::arrays::ExtensionArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::List::stats(array: &vortex_array::arrays::list::ListData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Extension::buffer(_array: &vortex_array::arrays::ExtensionArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::List::vtable(_array: &vortex_array::arrays::list::ListData) -> &Self -pub fn vortex_array::arrays::Extension::buffer_name(_array: &vortex_array::arrays::ExtensionArray, _idx: usize) -> core::option::Option +pub fn vortex_array::arrays::List::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Extension::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +impl vortex_array::ValidityVTable for vortex_array::arrays::List -pub fn vortex_array::arrays::Extension::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::List::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::List>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Extension::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::List -pub fn vortex_array::arrays::Extension::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::List>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Extension::dtype(array: &vortex_array::arrays::ExtensionArray) -> &vortex_array::dtype::DType +impl vortex_array::arrays::filter::FilterKernel for vortex_array::arrays::List -pub fn vortex_array::arrays::Extension::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::filter(array: vortex_array::ArrayView<'_, vortex_array::arrays::List>, mask: &vortex_mask::Mask, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Extension::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::List -pub fn vortex_array::arrays::Extension::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::List::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Extension::len(array: &vortex_array::arrays::ExtensionArray) -> usize +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::List -pub fn vortex_array::arrays::Extension::metadata(_array: &vortex_array::arrays::ExtensionArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::List>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Extension::nbuffers(_array: &vortex_array::arrays::ExtensionArray) -> usize +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::List -pub fn vortex_array::arrays::Extension::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::List::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::List>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Extension::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub struct vortex_array::arrays::ListView -pub fn vortex_array::arrays::Extension::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +impl vortex_array::arrays::ListView -pub fn vortex_array::arrays::Extension::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub const vortex_array::arrays::ListView::ID: vortex_array::ArrayId -pub fn vortex_array::arrays::Extension::slot_name(_array: &vortex_array::arrays::ExtensionArray, idx: usize) -> alloc::string::String +impl core::clone::Clone for vortex_array::arrays::ListView -pub fn vortex_array::arrays::Extension::slots(array: &vortex_array::arrays::ExtensionArray) -> &[core::option::Option] +pub fn vortex_array::arrays::ListView::clone(&self) -> vortex_array::arrays::ListView -pub fn vortex_array::arrays::Extension::stats(array: &vortex_array::arrays::ExtensionArray) -> vortex_array::stats::StatsSetRef<'_> +impl core::fmt::Debug for vortex_array::arrays::ListView -pub fn vortex_array::arrays::Extension::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::ListView::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::Extension::with_slots(array: &mut Self::Array, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +impl vortex_array::OperationsVTable for vortex_array::arrays::ListView -impl vortex_array::vtable::ValidityChild for vortex_array::arrays::Extension +pub fn vortex_array::arrays::ListView::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::ListView>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Extension::validity_child(array: &vortex_array::arrays::ExtensionArray) -> &vortex_array::ArrayRef +impl vortex_array::VTable for vortex_array::arrays::ListView -pub struct vortex_array::arrays::ExtensionArray +pub type vortex_array::arrays::ListView::ArrayData = vortex_array::arrays::listview::ListViewData -impl vortex_array::arrays::ExtensionArray +pub type vortex_array::arrays::ListView::Metadata = vortex_array::ProstMetadata -pub fn vortex_array::arrays::ExtensionArray::ext_dtype(&self) -> &vortex_array::dtype::extension::ExtDTypeRef +pub type vortex_array::arrays::ListView::OperationsVTable = vortex_array::arrays::ListView -pub fn vortex_array::arrays::ExtensionArray::new(ext_dtype: vortex_array::dtype::extension::ExtDTypeRef, storage_array: vortex_array::ArrayRef) -> Self +pub type vortex_array::arrays::ListView::ValidityVTable = vortex_array::arrays::ListView -pub unsafe fn vortex_array::arrays::ExtensionArray::new_unchecked(ext_dtype: vortex_array::dtype::extension::ExtDTypeRef, storage_array: vortex_array::ArrayRef) -> Self +pub fn vortex_array::arrays::ListView::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::ExtensionArray::storage_array(&self) -> &vortex_array::ArrayRef +pub fn vortex_array::arrays::ListView::array_eq(array: &vortex_array::arrays::listview::ListViewData, other: &vortex_array::arrays::listview::ListViewData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::ExtensionArray::try_new(ext_dtype: vortex_array::dtype::extension::ExtDTypeRef, storage_array: vortex_array::ArrayRef) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ListView::array_hash(array: &vortex_array::arrays::listview::ListViewData, state: &mut H, precision: vortex_array::Precision) -impl vortex_array::arrays::ExtensionArray +pub fn vortex_array::arrays::ListView::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::ExtensionArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::ListView::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -impl core::clone::Clone for vortex_array::arrays::ExtensionArray +pub fn vortex_array::arrays::ListView::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ExtensionArray::clone(&self) -> vortex_array::arrays::ExtensionArray +pub fn vortex_array::arrays::ListView::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -impl core::convert::AsRef for vortex_array::arrays::ExtensionArray +pub fn vortex_array::arrays::ListView::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::ExtensionArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::ListView::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl core::convert::From<&vortex_array::arrays::datetime::TemporalArray> for vortex_array::arrays::ExtensionArray +pub fn vortex_array::arrays::ListView::dtype(array: &vortex_array::arrays::listview::ListViewData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::ExtensionArray::from(value: &vortex_array::arrays::datetime::TemporalArray) -> Self +pub fn vortex_array::arrays::ListView::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::arrays::ListView::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::ExtensionArray) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::ListView::id(&self) -> vortex_array::ArrayId -impl core::convert::From for vortex_array::arrays::ExtensionArray +pub fn vortex_array::arrays::ListView::len(array: &vortex_array::arrays::listview::ListViewData) -> usize -pub fn vortex_array::arrays::ExtensionArray::from(value: vortex_array::arrays::datetime::TemporalArray) -> Self +pub fn vortex_array::arrays::ListView::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -impl core::convert::TryFrom for vortex_array::arrays::datetime::TemporalArray +pub fn vortex_array::arrays::ListView::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub type vortex_array::arrays::datetime::TemporalArray::Error = vortex_error::VortexError +pub fn vortex_array::arrays::ListView::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::datetime::TemporalArray::try_from(ext: vortex_array::arrays::ExtensionArray) -> core::result::Result +pub fn vortex_array::arrays::ListView::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -impl core::fmt::Debug for vortex_array::arrays::ExtensionArray +pub fn vortex_array::arrays::ListView::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ExtensionArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::ListView::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -impl core::ops::deref::Deref for vortex_array::arrays::ExtensionArray +pub fn vortex_array::arrays::ListView::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub type vortex_array::arrays::ExtensionArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::arrays::ListView::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::ExtensionArray::deref(&self) -> &Self::Target +pub fn vortex_array::arrays::ListView::stats(array: &vortex_array::arrays::listview::ListViewData) -> &vortex_array::stats::ArrayStats -impl vortex_array::Executable for vortex_array::arrays::ExtensionArray +pub fn vortex_array::arrays::ListView::vtable(_array: &vortex_array::arrays::listview::ListViewData) -> &Self -pub fn vortex_array::arrays::ExtensionArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ListView::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl vortex_array::IntoArray for vortex_array::arrays::ExtensionArray +impl vortex_array::ValidityVTable for vortex_array::arrays::ListView -pub fn vortex_array::arrays::ExtensionArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::ListView::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::ListView>) -> vortex_error::VortexResult -pub struct vortex_array::arrays::Filter +impl vortex_array::arrays::dict::TakeReduce for vortex_array::arrays::ListView -impl vortex_array::arrays::Filter +pub fn vortex_array::arrays::ListView::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::ListView>, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub const vortex_array::arrays::Filter::ID: vortex_array::vtable::ArrayId +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::ListView -impl core::clone::Clone for vortex_array::arrays::Filter +pub fn vortex_array::arrays::ListView::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Filter::clone(&self) -> vortex_array::arrays::Filter +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::ListView -impl core::fmt::Debug for vortex_array::arrays::Filter +pub fn vortex_array::arrays::ListView::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::ListView>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Filter::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::ListView -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Filter +pub fn vortex_array::arrays::ListView::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::ListView>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Filter::scalar_at(array: &vortex_array::arrays::FilterArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub struct vortex_array::arrays::Masked -impl vortex_array::vtable::VTable for vortex_array::arrays::Filter +impl vortex_array::arrays::Masked -pub type vortex_array::arrays::Filter::Array = vortex_array::arrays::FilterArray +pub const vortex_array::arrays::Masked::ID: vortex_array::ArrayId -pub type vortex_array::arrays::Filter::Metadata = vortex_array::arrays::filter::vtable::FilterMetadata +impl core::clone::Clone for vortex_array::arrays::Masked -pub type vortex_array::arrays::Filter::OperationsVTable = vortex_array::arrays::Filter +pub fn vortex_array::arrays::Masked::clone(&self) -> vortex_array::arrays::Masked -pub type vortex_array::arrays::Filter::ValidityVTable = vortex_array::arrays::Filter +impl core::fmt::Debug for vortex_array::arrays::Masked -pub fn vortex_array::arrays::Filter::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Masked::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::Filter::array_eq(array: &vortex_array::arrays::FilterArray, other: &vortex_array::arrays::FilterArray, precision: vortex_array::Precision) -> bool +impl vortex_array::OperationsVTable for vortex_array::arrays::Masked -pub fn vortex_array::arrays::Filter::array_hash(array: &vortex_array::arrays::FilterArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Masked::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Filter::buffer(_array: &Self::Array, _idx: usize) -> vortex_array::buffer::BufferHandle +impl vortex_array::VTable for vortex_array::arrays::Masked -pub fn vortex_array::arrays::Filter::buffer_name(_array: &Self::Array, _idx: usize) -> core::option::Option +pub type vortex_array::arrays::Masked::ArrayData = vortex_array::arrays::masked::MaskedData -pub fn vortex_array::arrays::Filter::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::filter::vtable::FilterMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub type vortex_array::arrays::Masked::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::arrays::Filter::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub type vortex_array::arrays::Masked::OperationsVTable = vortex_array::arrays::Masked -pub fn vortex_array::arrays::Filter::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub type vortex_array::arrays::Masked::ValidityVTable = vortex_array::arrays::Masked -pub fn vortex_array::arrays::Filter::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Masked::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Filter::dtype(array: &vortex_array::arrays::FilterArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::Masked::array_eq(array: &vortex_array::arrays::masked::MaskedData, other: &vortex_array::arrays::masked::MaskedData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::Filter::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Masked::array_hash(array: &vortex_array::arrays::masked::MaskedData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::Filter::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Masked::buffer(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Filter::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::Masked::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Filter::len(array: &vortex_array::arrays::FilterArray) -> usize +pub fn vortex_array::arrays::Masked::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Filter::metadata(array: &Self::Array) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Masked::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Filter::nbuffers(_array: &Self::Array) -> usize +pub fn vortex_array::arrays::Masked::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Filter::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::Masked::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Filter::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Masked::dtype(array: &vortex_array::arrays::masked::MaskedData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::Filter::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Masked::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Filter::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Masked::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Filter::slot_name(_array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Masked::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Filter::slots(array: &Self::Array) -> &[core::option::Option] +pub fn vortex_array::arrays::Masked::len(array: &vortex_array::arrays::masked::MaskedData) -> usize -pub fn vortex_array::arrays::Filter::stats(array: &vortex_array::arrays::FilterArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::Masked::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Filter::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::Masked::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Filter::with_slots(array: &mut Self::Array, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Masked::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Filter +pub fn vortex_array::arrays::Masked::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Filter::validity(array: &vortex_array::arrays::FilterArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Masked::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub struct vortex_array::arrays::FilterArray +pub fn vortex_array::arrays::Masked::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -impl vortex_array::arrays::FilterArray +pub fn vortex_array::arrays::Masked::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::FilterArray::child(&self) -> &vortex_array::ArrayRef +pub fn vortex_array::arrays::Masked::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::FilterArray::filter_mask(&self) -> &vortex_mask::Mask +pub fn vortex_array::arrays::Masked::stats(array: &vortex_array::arrays::masked::MaskedData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::FilterArray::into_parts(self) -> vortex_array::arrays::filter::FilterArrayParts +pub fn vortex_array::arrays::Masked::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::FilterArray::new(array: vortex_array::ArrayRef, mask: vortex_mask::Mask) -> Self +pub fn vortex_array::arrays::Masked::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::FilterArray::try_new(array: vortex_array::ArrayRef, mask: vortex_mask::Mask) -> vortex_error::VortexResult +impl vortex_array::ValidityVTable for vortex_array::arrays::Masked -impl vortex_array::arrays::FilterArray +pub fn vortex_array::arrays::Masked::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::FilterArray::to_array(&self) -> vortex_array::ArrayRef +impl vortex_array::arrays::dict::TakeReduce for vortex_array::arrays::Masked -impl core::clone::Clone for vortex_array::arrays::FilterArray +pub fn vortex_array::arrays::Masked::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::FilterArray::clone(&self) -> vortex_array::arrays::FilterArray +impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::Masked -impl core::convert::AsRef for vortex_array::arrays::FilterArray +pub fn vortex_array::arrays::Masked::filter(array: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::FilterArray::as_ref(&self) -> &dyn vortex_array::DynArray +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Masked -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::arrays::Masked::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::FilterArray) -> vortex_array::ArrayRef +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Masked -impl core::fmt::Debug for vortex_array::arrays::FilterArray +pub fn vortex_array::arrays::Masked::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::FilterArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub struct vortex_array::arrays::Null -impl core::ops::deref::Deref for vortex_array::arrays::FilterArray +impl vortex_array::arrays::null::Null -pub type vortex_array::arrays::FilterArray::Target = dyn vortex_array::DynArray +pub const vortex_array::arrays::null::Null::ID: vortex_array::ArrayId -pub fn vortex_array::arrays::FilterArray::deref(&self) -> &Self::Target +impl vortex_array::arrays::null::Null -impl vortex_array::IntoArray for vortex_array::arrays::FilterArray +pub const vortex_array::arrays::null::Null::TAKE_RULES: vortex_array::optimizer::rules::ParentRuleSet -pub fn vortex_array::arrays::FilterArray::into_array(self) -> vortex_array::ArrayRef +impl core::clone::Clone for vortex_array::arrays::null::Null -pub struct vortex_array::arrays::FixedSizeList +pub fn vortex_array::arrays::null::Null::clone(&self) -> vortex_array::arrays::null::Null -impl vortex_array::arrays::FixedSizeList +impl core::fmt::Debug for vortex_array::arrays::null::Null -pub const vortex_array::arrays::FixedSizeList::ID: vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::null::Null::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::clone::Clone for vortex_array::arrays::FixedSizeList +impl vortex_array::OperationsVTable for vortex_array::arrays::null::Null -pub fn vortex_array::arrays::FixedSizeList::clone(&self) -> vortex_array::arrays::FixedSizeList +pub fn vortex_array::arrays::null::Null::scalar_at(_array: vortex_array::ArrayView<'_, vortex_array::arrays::null::Null>, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::arrays::FixedSizeList +impl vortex_array::VTable for vortex_array::arrays::null::Null -pub fn vortex_array::arrays::FixedSizeList::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::arrays::null::Null::ArrayData = vortex_array::arrays::null::NullData -impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::FixedSizeList +pub type vortex_array::arrays::null::Null::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::arrays::FixedSizeList::take(array: &vortex_array::arrays::FixedSizeListArray, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub type vortex_array::arrays::null::Null::OperationsVTable = vortex_array::arrays::null::Null -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::FixedSizeList +pub type vortex_array::arrays::null::Null::ValidityVTable = vortex_array::arrays::null::Null -pub fn vortex_array::arrays::FixedSizeList::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::null::Null::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::FixedSizeList +pub fn vortex_array::arrays::null::Null::array_eq(_array: &vortex_array::arrays::null::NullData, _other: &vortex_array::arrays::null::NullData, _precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::FixedSizeList::cast(array: &vortex_array::arrays::FixedSizeListArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::null::Null::array_hash(_array: &vortex_array::arrays::null::NullData, _state: &mut H, _precision: vortex_array::Precision) -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::FixedSizeList +pub fn vortex_array::arrays::null::Null::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::FixedSizeList::mask(array: &vortex_array::arrays::FixedSizeListArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::null::Null::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::FixedSizeList +pub fn vortex_array::arrays::null::Null::build(_dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], _children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::FixedSizeList::scalar_at(array: &vortex_array::arrays::FixedSizeListArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -impl vortex_array::vtable::VTable for vortex_array::arrays::FixedSizeList +pub fn vortex_array::arrays::null::Null::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub type vortex_array::arrays::FixedSizeList::Array = vortex_array::arrays::FixedSizeListArray +pub fn vortex_array::arrays::null::Null::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::arrays::FixedSizeList::Metadata = vortex_array::EmptyMetadata +pub fn vortex_array::arrays::null::Null::dtype(_array: &vortex_array::arrays::null::NullData) -> &vortex_array::dtype::DType -pub type vortex_array::arrays::FixedSizeList::OperationsVTable = vortex_array::arrays::FixedSizeList +pub fn vortex_array::arrays::null::Null::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::arrays::FixedSizeList::ValidityVTable = vortex_array::vtable::ValidityVTableFromValidityHelper +pub fn vortex_array::arrays::null::Null::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::FixedSizeList::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::null::Null::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::FixedSizeList::array_eq(array: &vortex_array::arrays::FixedSizeListArray, other: &vortex_array::arrays::FixedSizeListArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::null::Null::len(array: &vortex_array::arrays::null::NullData) -> usize -pub fn vortex_array::arrays::FixedSizeList::array_hash(array: &vortex_array::arrays::FixedSizeListArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::null::Null::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::FixedSizeList::buffer(_array: &vortex_array::arrays::FixedSizeListArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::null::Null::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::FixedSizeList::buffer_name(_array: &vortex_array::arrays::FixedSizeListArray, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::null::Null::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::FixedSizeList::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::FixedSizeList::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::null::Null::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::FixedSizeList::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::null::Null::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::FixedSizeList::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::FixedSizeList::dtype(array: &vortex_array::arrays::FixedSizeListArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::null::Null::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::FixedSizeList::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::stats(array: &vortex_array::arrays::null::NullData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::FixedSizeList::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::null::Null::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::FixedSizeList::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::null::Null::with_slots(_array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::FixedSizeList::len(array: &vortex_array::arrays::FixedSizeListArray) -> usize +impl vortex_array::ValidityVTable for vortex_array::arrays::null::Null -pub fn vortex_array::arrays::FixedSizeList::metadata(_array: &vortex_array::arrays::FixedSizeListArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::validity(_array: vortex_array::ArrayView<'_, vortex_array::arrays::null::Null>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::FixedSizeList::nbuffers(_array: &vortex_array::arrays::FixedSizeListArray) -> usize +impl vortex_array::arrays::dict::TakeReduce for vortex_array::arrays::null::Null -pub fn vortex_array::arrays::FixedSizeList::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::null::Null::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::null::Null>, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::FixedSizeList::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::null::Null -pub fn vortex_array::arrays::FixedSizeList::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::null::Null::filter(_array: vortex_array::ArrayView<'_, vortex_array::arrays::null::Null>, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::FixedSizeList::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::null::Null -pub fn vortex_array::arrays::FixedSizeList::slot_name(_array: &vortex_array::arrays::FixedSizeListArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::null::Null::slice(_array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::FixedSizeList::slots(array: &vortex_array::arrays::FixedSizeListArray) -> &[core::option::Option] +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::null::Null -pub fn vortex_array::arrays::FixedSizeList::stats(array: &vortex_array::arrays::FixedSizeListArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::null::Null::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::null::Null>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::FixedSizeList::vtable(_array: &Self::Array) -> &Self +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::null::Null -pub fn vortex_array::arrays::FixedSizeList::with_slots(array: &mut vortex_array::arrays::FixedSizeListArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::null::Null::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::null::Null>, _mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub struct vortex_array::arrays::FixedSizeListArray +pub struct vortex_array::arrays::Patched -impl vortex_array::arrays::FixedSizeListArray +impl core::clone::Clone for vortex_array::arrays::patched::Patched -pub fn vortex_array::arrays::FixedSizeListArray::elements(&self) -> &vortex_array::ArrayRef +pub fn vortex_array::arrays::patched::Patched::clone(&self) -> vortex_array::arrays::patched::Patched -pub fn vortex_array::arrays::FixedSizeListArray::fixed_size_list_elements_at(&self, index: usize) -> vortex_error::VortexResult +impl core::fmt::Debug for vortex_array::arrays::patched::Patched -pub fn vortex_array::arrays::FixedSizeListArray::into_parts(self) -> (vortex_array::ArrayRef, vortex_array::validity::Validity, vortex_array::dtype::DType) +pub fn vortex_array::arrays::patched::Patched::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub const fn vortex_array::arrays::FixedSizeListArray::list_size(&self) -> u32 +impl vortex_array::OperationsVTable for vortex_array::arrays::patched::Patched -pub fn vortex_array::arrays::FixedSizeListArray::new(elements: vortex_array::ArrayRef, list_size: u32, validity: vortex_array::validity::Validity, len: usize) -> Self +pub fn vortex_array::arrays::patched::Patched::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::patched::Patched>, index: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub unsafe fn vortex_array::arrays::FixedSizeListArray::new_unchecked(elements: vortex_array::ArrayRef, list_size: u32, validity: vortex_array::validity::Validity, len: usize) -> Self +impl vortex_array::VTable for vortex_array::arrays::patched::Patched -pub fn vortex_array::arrays::FixedSizeListArray::try_new(elements: vortex_array::ArrayRef, list_size: u32, validity: vortex_array::validity::Validity, len: usize) -> vortex_error::VortexResult +pub type vortex_array::arrays::patched::Patched::ArrayData = vortex_array::arrays::patched::PatchedArray -pub fn vortex_array::arrays::FixedSizeListArray::validate(elements: &vortex_array::ArrayRef, len: usize, list_size: u32, validity: &vortex_array::validity::Validity) -> vortex_error::VortexResult<()> +pub type vortex_array::arrays::patched::Patched::Metadata = vortex_array::ProstMetadata -impl vortex_array::arrays::FixedSizeListArray +pub type vortex_array::arrays::patched::Patched::OperationsVTable = vortex_array::arrays::patched::Patched -pub fn vortex_array::arrays::FixedSizeListArray::to_array(&self) -> vortex_array::ArrayRef +pub type vortex_array::arrays::patched::Patched::ValidityVTable = vortex_array::ValidityVTableFromChild -impl core::clone::Clone for vortex_array::arrays::FixedSizeListArray +pub fn vortex_array::arrays::patched::Patched::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::FixedSizeListArray::clone(&self) -> vortex_array::arrays::FixedSizeListArray +pub fn vortex_array::arrays::patched::Patched::array_eq(array: &vortex_array::arrays::patched::PatchedArray, other: &vortex_array::arrays::patched::PatchedArray, precision: vortex_array::Precision) -> bool -impl core::convert::AsRef for vortex_array::arrays::FixedSizeListArray +pub fn vortex_array::arrays::patched::Patched::array_hash(array: &vortex_array::arrays::patched::PatchedArray, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::FixedSizeListArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::patched::Patched::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::arrays::patched::Patched::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::FixedSizeListArray) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::patched::Patched::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::arrays::FixedSizeListArray +pub fn vortex_array::arrays::patched::Patched::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::FixedSizeListArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::patched::Patched::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl core::ops::deref::Deref for vortex_array::arrays::FixedSizeListArray +pub fn vortex_array::arrays::patched::Patched::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::arrays::FixedSizeListArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::arrays::patched::Patched::dtype(array: &Self::ArrayData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::FixedSizeListArray::deref(&self) -> &Self::Target +pub fn vortex_array::arrays::patched::Patched::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::Executable for vortex_array::arrays::FixedSizeListArray +pub fn vortex_array::arrays::patched::Patched::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::FixedSizeListArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::patched::Patched::id(&self) -> vortex_array::ArrayId -impl vortex_array::IntoArray for vortex_array::arrays::FixedSizeListArray +pub fn vortex_array::arrays::patched::Patched::len(array: &Self::ArrayData) -> usize -pub fn vortex_array::arrays::FixedSizeListArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::patched::Patched::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -impl vortex_array::vtable::ValidityHelper for vortex_array::arrays::FixedSizeListArray +pub fn vortex_array::arrays::patched::Patched::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::FixedSizeListArray::validity(&self) -> vortex_array::validity::Validity +pub fn vortex_array::arrays::patched::Patched::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub struct vortex_array::arrays::List +pub fn vortex_array::arrays::patched::Patched::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -impl vortex_array::arrays::List +pub fn vortex_array::arrays::patched::Patched::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub const vortex_array::arrays::List::ID: vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::patched::Patched::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -impl core::clone::Clone for vortex_array::arrays::List +pub fn vortex_array::arrays::patched::Patched::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::List::clone(&self) -> vortex_array::arrays::List +pub fn vortex_array::arrays::patched::Patched::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -impl core::fmt::Debug for vortex_array::arrays::List +pub fn vortex_array::arrays::patched::Patched::stats(array: &Self::ArrayData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::List::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::patched::Patched::vtable(_array: &Self::ArrayData) -> &Self -impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::List +pub fn vortex_array::arrays::patched::Patched::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::List::take(array: &vortex_array::arrays::ListArray, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::ValidityChild for vortex_array::arrays::patched::Patched -impl vortex_array::arrays::filter::FilterKernel for vortex_array::arrays::List +pub fn vortex_array::arrays::patched::Patched::validity_child(array: &vortex_array::arrays::patched::PatchedArray) -> &vortex_array::ArrayRef -pub fn vortex_array::arrays::List::filter(array: &vortex_array::arrays::ListArray, mask: &vortex_mask::Mask, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::patched::Patched -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::List +pub fn vortex_array::arrays::patched::Patched::take(array: vortex_array::ArrayView<'_, Self>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::List::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::patched::Patched -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::List +pub fn vortex_array::arrays::patched::Patched::filter(array: vortex_array::ArrayView<'_, Self>, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::List::cast(array: &vortex_array::arrays::ListArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::patched::Patched -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::List +pub fn vortex_array::arrays::patched::Patched::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::List::mask(array: &vortex_array::arrays::ListArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +impl vortex_array::scalar_fn::fns::binary::CompareKernel for vortex_array::arrays::patched::Patched -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::List +pub fn vortex_array::arrays::patched::Patched::compare(lhs: vortex_array::ArrayView<'_, Self>, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::List::scalar_at(array: &vortex_array::arrays::ListArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub struct vortex_array::arrays::PatchedArray -impl vortex_array::vtable::VTable for vortex_array::arrays::List +impl vortex_array::arrays::patched::PatchedArray -pub type vortex_array::arrays::List::Array = vortex_array::arrays::ListArray +pub fn vortex_array::arrays::patched::PatchedArray::base_array(&self) -> &vortex_array::ArrayRef -pub type vortex_array::arrays::List::Metadata = vortex_array::ProstMetadata +pub fn vortex_array::arrays::patched::PatchedArray::lane_offsets(&self) -> &vortex_array::ArrayRef -pub type vortex_array::arrays::List::OperationsVTable = vortex_array::arrays::List +pub fn vortex_array::arrays::patched::PatchedArray::patch_indices(&self) -> &vortex_array::ArrayRef -pub type vortex_array::arrays::List::ValidityVTable = vortex_array::vtable::ValidityVTableFromValidityHelper +pub fn vortex_array::arrays::patched::PatchedArray::patch_values(&self) -> &vortex_array::ArrayRef -pub fn vortex_array::arrays::List::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +impl vortex_array::arrays::patched::PatchedArray -pub fn vortex_array::arrays::List::array_eq(array: &vortex_array::arrays::ListArray, other: &vortex_array::arrays::ListArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::patched::PatchedArray::from_array_and_patches(inner: vortex_array::ArrayRef, patches: &vortex_array::patches::Patches, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::List::array_hash(array: &vortex_array::arrays::ListArray, state: &mut H, precision: vortex_array::Precision) +impl vortex_array::arrays::patched::PatchedArray -pub fn vortex_array::arrays::List::buffer(_array: &vortex_array::arrays::ListArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::patched::PatchedArray::to_array(&self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::List::buffer_name(_array: &vortex_array::arrays::ListArray, idx: usize) -> core::option::Option +impl core::clone::Clone for vortex_array::arrays::patched::PatchedArray -pub fn vortex_array::arrays::List::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::patched::PatchedArray::clone(&self) -> vortex_array::arrays::patched::PatchedArray -pub fn vortex_array::arrays::List::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::List::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::patched::PatchedArray) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::List::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +impl core::fmt::Debug for vortex_array::arrays::patched::PatchedArray -pub fn vortex_array::arrays::List::dtype(array: &vortex_array::arrays::ListArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::patched::PatchedArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::List::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::IntoArray for vortex_array::arrays::patched::PatchedArray -pub fn vortex_array::arrays::List::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::patched::PatchedArray::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::List::id(&self) -> vortex_array::vtable::ArrayId +pub struct vortex_array::arrays::Primitive -pub fn vortex_array::arrays::List::len(array: &vortex_array::arrays::ListArray) -> usize +impl vortex_array::arrays::Primitive -pub fn vortex_array::arrays::List::metadata(array: &vortex_array::arrays::ListArray) -> vortex_error::VortexResult +pub const vortex_array::arrays::Primitive::ID: vortex_array::ArrayId -pub fn vortex_array::arrays::List::nbuffers(_array: &vortex_array::arrays::ListArray) -> usize +impl core::clone::Clone for vortex_array::arrays::Primitive -pub fn vortex_array::arrays::List::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::Primitive::clone(&self) -> vortex_array::arrays::Primitive -pub fn vortex_array::arrays::List::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +impl core::fmt::Debug for vortex_array::arrays::Primitive -pub fn vortex_array::arrays::List::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Primitive::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::List::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +impl vortex_array::OperationsVTable for vortex_array::arrays::Primitive -pub fn vortex_array::arrays::List::slot_name(_array: &vortex_array::arrays::ListArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Primitive::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Primitive>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::List::slots(array: &vortex_array::arrays::ListArray) -> &[core::option::Option] +impl vortex_array::VTable for vortex_array::arrays::Primitive -pub fn vortex_array::arrays::List::stats(array: &vortex_array::arrays::ListArray) -> vortex_array::stats::StatsSetRef<'_> +pub type vortex_array::arrays::Primitive::ArrayData = vortex_array::arrays::primitive::PrimitiveData -pub fn vortex_array::arrays::List::vtable(_array: &Self::Array) -> &Self +pub type vortex_array::arrays::Primitive::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::arrays::List::with_slots(array: &mut vortex_array::arrays::ListArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub type vortex_array::arrays::Primitive::OperationsVTable = vortex_array::arrays::Primitive -pub struct vortex_array::arrays::ListArray +pub type vortex_array::arrays::Primitive::ValidityVTable = vortex_array::arrays::Primitive -impl vortex_array::arrays::ListArray +pub fn vortex_array::arrays::Primitive::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::ListArray::element_dtype(&self) -> &alloc::sync::Arc +pub fn vortex_array::arrays::Primitive::array_eq(array: &vortex_array::arrays::primitive::PrimitiveData, other: &vortex_array::arrays::primitive::PrimitiveData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::ListArray::elements(&self) -> &vortex_array::ArrayRef +pub fn vortex_array::arrays::Primitive::array_hash(array: &vortex_array::arrays::primitive::PrimitiveData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::ListArray::into_parts(self) -> vortex_array::arrays::list::ListArrayParts +pub fn vortex_array::arrays::Primitive::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::ListArray::list_elements_at(&self, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Primitive::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::ListArray::new(elements: vortex_array::ArrayRef, offsets: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::arrays::Primitive::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub unsafe fn vortex_array::arrays::ListArray::new_unchecked(elements: vortex_array::ArrayRef, offsets: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::arrays::Primitive::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::ListArray::offset_at(&self, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Primitive::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::ListArray::offsets(&self) -> &vortex_array::ArrayRef +pub fn vortex_array::arrays::Primitive::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListArray::reset_offsets(&self, recurse: bool) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Primitive::dtype(array: &vortex_array::arrays::primitive::PrimitiveData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::ListArray::sliced_elements(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Primitive::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListArray::try_new(elements: vortex_array::ArrayRef, offsets: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Primitive::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ListArray::validate(elements: &vortex_array::ArrayRef, offsets: &vortex_array::ArrayRef, validity: &vortex_array::validity::Validity) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Primitive::id(&self) -> vortex_array::ArrayId -impl vortex_array::arrays::ListArray +pub fn vortex_array::arrays::Primitive::len(array: &vortex_array::arrays::primitive::PrimitiveData) -> usize -pub fn vortex_array::arrays::ListArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Primitive::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -impl core::clone::Clone for vortex_array::arrays::ListArray +pub fn vortex_array::arrays::Primitive::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::ListArray::clone(&self) -> vortex_array::arrays::ListArray +pub fn vortex_array::arrays::Primitive::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -impl core::convert::AsRef for vortex_array::arrays::ListArray +pub fn vortex_array::arrays::Primitive::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ListArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::Primitive::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::arrays::Primitive::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::ListArray) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Primitive::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl core::fmt::Debug for vortex_array::arrays::ListArray +pub fn vortex_array::arrays::Primitive::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::ListArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Primitive::stats(array: &vortex_array::arrays::primitive::PrimitiveData) -> &vortex_array::stats::ArrayStats -impl core::ops::deref::Deref for vortex_array::arrays::ListArray +pub fn vortex_array::arrays::Primitive::vtable(_array: &Self::ArrayData) -> &Self -pub type vortex_array::arrays::ListArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::arrays::Primitive::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::ListArray::deref(&self) -> &Self::Target +impl vortex_array::ValidityVTable for vortex_array::arrays::Primitive -impl vortex_array::IntoArray for vortex_array::arrays::ListArray +pub fn vortex_array::arrays::Primitive::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Primitive>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListArray::into_array(self) -> vortex_array::ArrayRef +impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::Primitive -impl vortex_array::vtable::ValidityHelper for vortex_array::arrays::ListArray +pub fn vortex_array::arrays::Primitive::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::Primitive>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ListArray::validity(&self) -> vortex_array::validity::Validity +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Primitive -pub struct vortex_array::arrays::ListView +pub fn vortex_array::arrays::Primitive::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -impl vortex_array::arrays::ListView +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::arrays::primitive::PrimitiveMaskedValidityRule -pub const vortex_array::arrays::ListView::ID: vortex_array::vtable::ArrayId +pub type vortex_array::arrays::primitive::PrimitiveMaskedValidityRule::Parent = vortex_array::arrays::Masked -impl core::clone::Clone for vortex_array::arrays::ListView +pub fn vortex_array::arrays::primitive::PrimitiveMaskedValidityRule::reduce_parent(&self, array: vortex_array::ArrayView<'_, vortex_array::arrays::Primitive>, parent: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>, _child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ListView::clone(&self) -> vortex_array::arrays::ListView +impl vortex_array::scalar_fn::fns::between::BetweenKernel for vortex_array::arrays::Primitive -impl core::fmt::Debug for vortex_array::arrays::ListView +pub fn vortex_array::arrays::Primitive::between(arr: vortex_array::ArrayView<'_, vortex_array::arrays::Primitive>, lower: &vortex_array::ArrayRef, upper: &vortex_array::ArrayRef, options: &vortex_array::scalar_fn::fns::between::BetweenOptions, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ListView::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl vortex_array::scalar_fn::fns::cast::CastKernel for vortex_array::arrays::Primitive -impl vortex_array::arrays::dict::TakeReduce for vortex_array::arrays::ListView +pub fn vortex_array::arrays::Primitive::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::Primitive>, dtype: &vortex_array::dtype::DType, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ListView::take(array: &vortex_array::arrays::ListViewArray, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +impl vortex_array::scalar_fn::fns::fill_null::FillNullKernel for vortex_array::arrays::Primitive -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::ListView +pub fn vortex_array::arrays::Primitive::fill_null(array: vortex_array::ArrayView<'_, vortex_array::arrays::Primitive>, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ListView::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Primitive -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::ListView +pub fn vortex_array::arrays::Primitive::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::Primitive>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ListView::cast(array: &vortex_array::arrays::ListViewArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub struct vortex_array::arrays::ScalarFnVTable -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::ListView +impl core::clone::Clone for vortex_array::arrays::scalar_fn::ScalarFnVTable -pub fn vortex_array::arrays::ListView::mask(array: &vortex_array::arrays::ListViewArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::clone(&self) -> vortex_array::arrays::scalar_fn::ScalarFnVTable -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::ListView +impl core::fmt::Debug for vortex_array::arrays::scalar_fn::ScalarFnVTable -pub fn vortex_array::arrays::ListView::scalar_at(array: &vortex_array::arrays::ListViewArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::vtable::VTable for vortex_array::arrays::ListView +impl vortex_array::OperationsVTable for vortex_array::arrays::scalar_fn::ScalarFnVTable -pub type vortex_array::arrays::ListView::Array = vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::scalar_fn::ScalarFnVTable>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::arrays::ListView::Metadata = vortex_array::ProstMetadata +impl vortex_array::VTable for vortex_array::arrays::scalar_fn::ScalarFnVTable -pub type vortex_array::arrays::ListView::OperationsVTable = vortex_array::arrays::ListView +pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::ArrayData = vortex_array::arrays::scalar_fn::ScalarFnData -pub type vortex_array::arrays::ListView::ValidityVTable = vortex_array::vtable::ValidityVTableFromValidityHelper +pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::Metadata = vortex_array::arrays::scalar_fn::metadata::ScalarFnMetadata -pub fn vortex_array::arrays::ListView::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::OperationsVTable = vortex_array::arrays::scalar_fn::ScalarFnVTable -pub fn vortex_array::arrays::ListView::array_eq(array: &vortex_array::arrays::ListViewArray, other: &vortex_array::arrays::ListViewArray, precision: vortex_array::Precision) -> bool +pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::ValidityVTable = vortex_array::arrays::scalar_fn::ScalarFnVTable -pub fn vortex_array::arrays::ListView::array_hash(array: &vortex_array::arrays::ListViewArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::ListView::buffer(_array: &vortex_array::arrays::ListViewArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::array_eq(array: &vortex_array::arrays::scalar_fn::ScalarFnData, other: &vortex_array::arrays::scalar_fn::ScalarFnData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::ListView::buffer_name(_array: &vortex_array::arrays::ListViewArray, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::array_hash(array: &vortex_array::arrays::scalar_fn::ScalarFnData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::ListView::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::ListView::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::arrays::ListView::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::scalar_fn::metadata::ScalarFnMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListView::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::ListView::dtype(array: &vortex_array::arrays::ListViewArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::ListView::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListView::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::dtype(array: &vortex_array::arrays::scalar_fn::ScalarFnData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::ListView::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListView::len(array: &vortex_array::arrays::ListViewArray) -> usize +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ListView::metadata(array: &vortex_array::arrays::ListViewArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::ListView::nbuffers(_array: &vortex_array::arrays::ListViewArray) -> usize +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::len(array: &vortex_array::arrays::scalar_fn::ScalarFnData) -> usize -pub fn vortex_array::arrays::ListView::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListView::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::ListView::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::ListView::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ListView::slot_name(_array: &vortex_array::arrays::ListViewArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ListView::slots(array: &vortex_array::arrays::ListViewArray) -> &[core::option::Option] +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::ListView::stats(array: &vortex_array::arrays::ListViewArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::slot_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::ListView::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::ListView::with_slots(array: &mut vortex_array::arrays::ListViewArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::stats(array: &vortex_array::arrays::scalar_fn::ScalarFnData) -> &vortex_array::stats::ArrayStats -pub struct vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::vtable(array: &vortex_array::arrays::scalar_fn::ScalarFnData) -> &Self -impl vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::ListViewArray::elements(&self) -> &vortex_array::ArrayRef +impl vortex_array::ValidityVTable for vortex_array::arrays::scalar_fn::ScalarFnVTable -pub fn vortex_array::arrays::ListViewArray::into_parts(self) -> vortex_array::arrays::listview::ListViewArrayParts +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::scalar_fn::ScalarFnVTable>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListViewArray::is_zero_copy_to_list(&self) -> bool +pub struct vortex_array::arrays::Shared -pub fn vortex_array::arrays::ListViewArray::list_elements_at(&self, index: usize) -> vortex_error::VortexResult +impl vortex_array::arrays::Shared -pub fn vortex_array::arrays::ListViewArray::new(elements: vortex_array::ArrayRef, offsets: vortex_array::ArrayRef, sizes: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> Self +pub const vortex_array::arrays::Shared::ID: vortex_array::ArrayId -pub unsafe fn vortex_array::arrays::ListViewArray::new_unchecked(elements: vortex_array::ArrayRef, offsets: vortex_array::ArrayRef, sizes: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> Self +impl core::clone::Clone for vortex_array::arrays::Shared -pub fn vortex_array::arrays::ListViewArray::offset_at(&self, index: usize) -> usize +pub fn vortex_array::arrays::Shared::clone(&self) -> vortex_array::arrays::Shared -pub fn vortex_array::arrays::ListViewArray::offsets(&self) -> &vortex_array::ArrayRef +impl core::fmt::Debug for vortex_array::arrays::Shared -pub fn vortex_array::arrays::ListViewArray::size_at(&self, index: usize) -> usize +pub fn vortex_array::arrays::Shared::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::ListViewArray::sizes(&self) -> &vortex_array::ArrayRef +impl vortex_array::OperationsVTable for vortex_array::arrays::Shared -pub fn vortex_array::arrays::ListViewArray::try_new(elements: vortex_array::ArrayRef, offsets: vortex_array::ArrayRef, sizes: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Shared::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Shared>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListViewArray::validate(elements: &vortex_array::ArrayRef, offsets: &vortex_array::ArrayRef, sizes: &vortex_array::ArrayRef, validity: &vortex_array::validity::Validity) -> vortex_error::VortexResult<()> +impl vortex_array::VTable for vortex_array::arrays::Shared -pub fn vortex_array::arrays::ListViewArray::verify_is_zero_copy_to_list(&self) -> bool +pub type vortex_array::arrays::Shared::ArrayData = vortex_array::arrays::shared::SharedData -pub unsafe fn vortex_array::arrays::ListViewArray::with_zero_copy_to_list(self, is_zctl: bool) -> Self +pub type vortex_array::arrays::Shared::Metadata = vortex_array::EmptyMetadata -impl vortex_array::arrays::ListViewArray +pub type vortex_array::arrays::Shared::OperationsVTable = vortex_array::arrays::Shared -pub fn vortex_array::arrays::ListViewArray::rebuild(&self, mode: vortex_array::arrays::listview::ListViewRebuildMode) -> vortex_error::VortexResult +pub type vortex_array::arrays::Shared::ValidityVTable = vortex_array::arrays::Shared -impl vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::Shared::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::ListViewArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Shared::array_eq(array: &vortex_array::arrays::shared::SharedData, other: &vortex_array::arrays::shared::SharedData, precision: vortex_array::Precision) -> bool -impl core::clone::Clone for vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::Shared::array_hash(array: &vortex_array::arrays::shared::SharedData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::ListViewArray::clone(&self) -> vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::Shared::buffer(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> vortex_array::buffer::BufferHandle -impl core::convert::AsRef for vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::Shared::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::arrays::ListViewArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::Shared::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::arrays::Shared::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::ListViewArray) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Shared::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl core::fmt::Debug for vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::Shared::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListViewArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Shared::dtype(array: &vortex_array::arrays::shared::SharedData) -> &vortex_array::dtype::DType -impl core::ops::deref::Deref for vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::Shared::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::arrays::ListViewArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::arrays::Shared::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ListViewArray::deref(&self) -> &Self::Target +pub fn vortex_array::arrays::Shared::id(&self) -> vortex_array::ArrayId -impl vortex_array::Executable for vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::Shared::len(array: &vortex_array::arrays::shared::SharedData) -> usize -pub fn vortex_array::arrays::ListViewArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Shared::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -impl vortex_array::IntoArray for vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::Shared::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::ListViewArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Shared::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -impl vortex_array::vtable::ValidityHelper for vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::Shared::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ListViewArray::validity(&self) -> vortex_array::validity::Validity +pub fn vortex_array::arrays::Shared::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub struct vortex_array::arrays::Masked +pub fn vortex_array::arrays::Shared::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -impl vortex_array::arrays::Masked +pub fn vortex_array::arrays::Shared::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub const vortex_array::arrays::Masked::ID: vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::Shared::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -impl core::clone::Clone for vortex_array::arrays::Masked +pub fn vortex_array::arrays::Shared::stats(array: &vortex_array::arrays::shared::SharedData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Masked::clone(&self) -> vortex_array::arrays::Masked +pub fn vortex_array::arrays::Shared::vtable(_array: &vortex_array::arrays::shared::SharedData) -> &Self -impl core::fmt::Debug for vortex_array::arrays::Masked +pub fn vortex_array::arrays::Shared::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Masked::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl vortex_array::ValidityVTable for vortex_array::arrays::Shared -impl vortex_array::arrays::dict::TakeReduce for vortex_array::arrays::Masked +pub fn vortex_array::arrays::Shared::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Shared>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Masked::take(array: &vortex_array::arrays::MaskedArray, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub struct vortex_array::arrays::Slice -impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::Masked +impl vortex_array::arrays::slice::Slice -pub fn vortex_array::arrays::Masked::filter(array: &vortex_array::arrays::MaskedArray, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> +pub const vortex_array::arrays::slice::Slice::ID: vortex_array::ArrayId -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Masked +impl core::clone::Clone for vortex_array::arrays::slice::Slice -pub fn vortex_array::arrays::Masked::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::slice::Slice::clone(&self) -> vortex_array::arrays::slice::Slice -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Masked +impl core::fmt::Debug for vortex_array::arrays::slice::Slice -pub fn vortex_array::arrays::Masked::mask(array: &vortex_array::arrays::MaskedArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::slice::Slice::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Masked +impl vortex_array::OperationsVTable for vortex_array::arrays::slice::Slice -pub fn vortex_array::arrays::Masked::scalar_at(array: &vortex_array::arrays::MaskedArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::slice::Slice::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::slice::Slice>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::vtable::VTable for vortex_array::arrays::Masked +impl vortex_array::VTable for vortex_array::arrays::slice::Slice -pub type vortex_array::arrays::Masked::Array = vortex_array::arrays::MaskedArray +pub type vortex_array::arrays::slice::Slice::ArrayData = vortex_array::arrays::slice::SliceData -pub type vortex_array::arrays::Masked::Metadata = vortex_array::EmptyMetadata +pub type vortex_array::arrays::slice::Slice::Metadata = vortex_array::arrays::slice::SliceMetadata -pub type vortex_array::arrays::Masked::OperationsVTable = vortex_array::arrays::Masked +pub type vortex_array::arrays::slice::Slice::OperationsVTable = vortex_array::arrays::slice::Slice -pub type vortex_array::arrays::Masked::ValidityVTable = vortex_array::arrays::Masked +pub type vortex_array::arrays::slice::Slice::ValidityVTable = vortex_array::arrays::slice::Slice -pub fn vortex_array::arrays::Masked::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::slice::Slice::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Masked::array_eq(array: &vortex_array::arrays::MaskedArray, other: &vortex_array::arrays::MaskedArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::slice::Slice::array_eq(array: &vortex_array::arrays::slice::SliceData, other: &vortex_array::arrays::slice::SliceData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::Masked::array_hash(array: &vortex_array::arrays::MaskedArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::slice::Slice::array_hash(array: &vortex_array::arrays::slice::SliceData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::Masked::buffer(_array: &Self::Array, _idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::slice::Slice::buffer(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Masked::buffer_name(_array: &Self::Array, _idx: usize) -> core::option::Option +pub fn vortex_array::arrays::slice::Slice::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Masked::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::slice::Slice::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::slice::SliceMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Masked::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::slice::Slice::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Masked::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::slice::Slice::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Masked::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::slice::Slice::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Masked::dtype(array: &vortex_array::arrays::MaskedArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::slice::Slice::dtype(array: &vortex_array::arrays::slice::SliceData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::Masked::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::slice::Slice::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Masked::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::slice::Slice::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Masked::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::slice::Slice::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Masked::len(array: &vortex_array::arrays::MaskedArray) -> usize +pub fn vortex_array::arrays::slice::Slice::len(array: &vortex_array::arrays::slice::SliceData) -> usize -pub fn vortex_array::arrays::Masked::metadata(_array: &vortex_array::arrays::MaskedArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::slice::Slice::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Masked::nbuffers(_array: &Self::Array) -> usize +pub fn vortex_array::arrays::slice::Slice::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Masked::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::slice::Slice::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Masked::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::slice::Slice::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Masked::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::slice::Slice::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Masked::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::slice::Slice::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Masked::slot_name(_array: &vortex_array::arrays::MaskedArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::slice::Slice::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Masked::slots(array: &vortex_array::arrays::MaskedArray) -> &[core::option::Option] +pub fn vortex_array::arrays::slice::Slice::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::Masked::stats(array: &vortex_array::arrays::MaskedArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::slice::Slice::stats(array: &vortex_array::arrays::slice::SliceData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Masked::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::slice::Slice::vtable(_array: &vortex_array::arrays::slice::SliceData) -> &Self -pub fn vortex_array::arrays::Masked::with_slots(array: &mut vortex_array::arrays::MaskedArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::slice::Slice::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Masked +impl vortex_array::ValidityVTable for vortex_array::arrays::slice::Slice -pub fn vortex_array::arrays::Masked::validity(array: &vortex_array::arrays::MaskedArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::slice::Slice::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::slice::Slice>) -> vortex_error::VortexResult -pub struct vortex_array::arrays::MaskedArray +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::slice::Slice -impl vortex_array::arrays::MaskedArray +pub fn vortex_array::arrays::slice::Slice::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::MaskedArray::child(&self) -> &vortex_array::ArrayRef +pub struct vortex_array::arrays::Struct -pub fn vortex_array::arrays::MaskedArray::try_new(child: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +impl vortex_array::arrays::Struct -pub fn vortex_array::arrays::MaskedArray::validity(&self) -> vortex_array::validity::Validity +pub const vortex_array::arrays::Struct::ID: vortex_array::ArrayId -impl vortex_array::arrays::MaskedArray +impl core::clone::Clone for vortex_array::arrays::Struct -pub fn vortex_array::arrays::MaskedArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Struct::clone(&self) -> vortex_array::arrays::Struct -impl core::clone::Clone for vortex_array::arrays::MaskedArray +impl core::fmt::Debug for vortex_array::arrays::Struct -pub fn vortex_array::arrays::MaskedArray::clone(&self) -> vortex_array::arrays::MaskedArray +pub fn vortex_array::arrays::Struct::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::convert::AsRef for vortex_array::arrays::MaskedArray +impl vortex_array::OperationsVTable for vortex_array::arrays::Struct -pub fn vortex_array::arrays::MaskedArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::Struct::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Struct>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::convert::From for vortex_array::ArrayRef +impl vortex_array::VTable for vortex_array::arrays::Struct -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::MaskedArray) -> vortex_array::ArrayRef +pub type vortex_array::arrays::Struct::ArrayData = vortex_array::arrays::struct_::StructData -impl core::fmt::Debug for vortex_array::arrays::MaskedArray +pub type vortex_array::arrays::Struct::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::arrays::MaskedArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::arrays::Struct::OperationsVTable = vortex_array::arrays::Struct -impl core::ops::deref::Deref for vortex_array::arrays::MaskedArray +pub type vortex_array::arrays::Struct::ValidityVTable = vortex_array::arrays::Struct -pub type vortex_array::arrays::MaskedArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::arrays::Struct::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::MaskedArray::deref(&self) -> &Self::Target +pub fn vortex_array::arrays::Struct::array_eq(array: &vortex_array::arrays::struct_::StructData, other: &vortex_array::arrays::struct_::StructData, precision: vortex_array::Precision) -> bool -impl vortex_array::IntoArray for vortex_array::arrays::MaskedArray +pub fn vortex_array::arrays::Struct::array_hash(array: &vortex_array::arrays::struct_::StructData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::MaskedArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Struct::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub struct vortex_array::arrays::Null +pub fn vortex_array::arrays::Struct::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -impl vortex_array::arrays::null::Null +pub fn vortex_array::arrays::Struct::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub const vortex_array::arrays::null::Null::ID: vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::Struct::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -impl vortex_array::arrays::null::Null +pub fn vortex_array::arrays::Struct::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub const vortex_array::arrays::null::Null::TAKE_RULES: vortex_array::optimizer::rules::ParentRuleSet +pub fn vortex_array::arrays::Struct::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl core::clone::Clone for vortex_array::arrays::null::Null +pub fn vortex_array::arrays::Struct::dtype(array: &vortex_array::arrays::struct_::StructData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::null::Null::clone(&self) -> vortex_array::arrays::null::Null +pub fn vortex_array::arrays::Struct::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::arrays::null::Null +pub fn vortex_array::arrays::Struct::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::null::Null::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Struct::id(&self) -> vortex_array::ArrayId -impl vortex_array::arrays::dict::TakeReduce for vortex_array::arrays::null::Null +pub fn vortex_array::arrays::Struct::len(array: &vortex_array::arrays::struct_::StructData) -> usize -pub fn vortex_array::arrays::null::Null::take(array: &vortex_array::arrays::null::NullArray, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::null::Null +pub fn vortex_array::arrays::Struct::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::null::Null::filter(_array: &vortex_array::arrays::null::NullArray, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::null::Null +pub fn vortex_array::arrays::Struct::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::null::Null::slice(_array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::null::Null +pub fn vortex_array::arrays::Struct::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::null::Null::cast(array: &vortex_array::arrays::null::NullArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::slot_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::null::Null +pub fn vortex_array::arrays::Struct::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::null::Null::mask(array: &vortex_array::arrays::null::NullArray, _mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::stats(array: &vortex_array::arrays::struct_::StructData) -> &vortex_array::stats::ArrayStats -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::null::Null +pub fn vortex_array::arrays::Struct::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::null::Null::scalar_at(_array: &vortex_array::arrays::null::NullArray, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Struct::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl vortex_array::vtable::VTable for vortex_array::arrays::null::Null +impl vortex_array::ValidityVTable for vortex_array::arrays::Struct -pub type vortex_array::arrays::null::Null::Array = vortex_array::arrays::null::NullArray +pub fn vortex_array::arrays::Struct::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Struct>) -> vortex_error::VortexResult -pub type vortex_array::arrays::null::Null::Metadata = vortex_array::EmptyMetadata +impl vortex_array::arrays::dict::TakeReduce for vortex_array::arrays::Struct -pub type vortex_array::arrays::null::Null::OperationsVTable = vortex_array::arrays::null::Null +pub fn vortex_array::arrays::Struct::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::Struct>, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub type vortex_array::arrays::null::Null::ValidityVTable = vortex_array::arrays::null::Null +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Struct -pub fn vortex_array::arrays::null::Null::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Struct::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::null::Null::array_eq(array: &vortex_array::arrays::null::NullArray, other: &vortex_array::arrays::null::NullArray, _precision: vortex_array::Precision) -> bool +impl vortex_array::scalar_fn::fns::cast::CastKernel for vortex_array::arrays::Struct -pub fn vortex_array::arrays::null::Null::array_hash(array: &vortex_array::arrays::null::NullArray, state: &mut H, _precision: vortex_array::Precision) +pub fn vortex_array::arrays::Struct::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::Struct>, dtype: &vortex_array::dtype::DType, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::null::Null::buffer(_array: &vortex_array::arrays::null::NullArray, idx: usize) -> vortex_array::buffer::BufferHandle +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Struct -pub fn vortex_array::arrays::null::Null::buffer_name(_array: &vortex_array::arrays::null::NullArray, _idx: usize) -> core::option::Option +pub fn vortex_array::arrays::Struct::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::Struct>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::null::Null::build(_dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], _children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +impl vortex_array::scalar_fn::fns::zip::ZipKernel for vortex_array::arrays::Struct -pub fn vortex_array::arrays::null::Null::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Struct::zip(if_true: vortex_array::ArrayView<'_, vortex_array::arrays::Struct>, if_false: &vortex_array::ArrayRef, mask: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::null::Null::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub struct vortex_array::arrays::VarBin -pub fn vortex_array::arrays::null::Null::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +impl vortex_array::arrays::VarBin -pub fn vortex_array::arrays::null::Null::dtype(_array: &vortex_array::arrays::null::NullArray) -> &vortex_array::dtype::DType +pub const vortex_array::arrays::VarBin::ID: vortex_array::ArrayId -pub fn vortex_array::arrays::null::Null::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::arrays::VarBin -pub fn vortex_array::arrays::null::Null::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::_slice(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBin>, range: core::ops::range::Range) -> vortex_error::VortexResult -pub fn vortex_array::arrays::null::Null::id(&self) -> vortex_array::vtable::ArrayId +impl core::clone::Clone for vortex_array::arrays::VarBin -pub fn vortex_array::arrays::null::Null::len(array: &vortex_array::arrays::null::NullArray) -> usize +pub fn vortex_array::arrays::VarBin::clone(&self) -> vortex_array::arrays::VarBin -pub fn vortex_array::arrays::null::Null::metadata(_array: &vortex_array::arrays::null::NullArray) -> vortex_error::VortexResult +impl core::fmt::Debug for vortex_array::arrays::VarBin -pub fn vortex_array::arrays::null::Null::nbuffers(_array: &vortex_array::arrays::null::NullArray) -> usize +pub fn vortex_array::arrays::VarBin::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::null::Null::nchildren(array: &Self::Array) -> usize +impl vortex_array::OperationsVTable for vortex_array::arrays::VarBin -pub fn vortex_array::arrays::null::Null::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBin>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::null::Null::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +impl vortex_array::VTable for vortex_array::arrays::VarBin -pub fn vortex_array::arrays::null::Null::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub type vortex_array::arrays::VarBin::ArrayData = vortex_array::arrays::varbin::VarBinData -pub fn vortex_array::arrays::null::Null::slot_name(_array: &vortex_array::arrays::null::NullArray, idx: usize) -> alloc::string::String +pub type vortex_array::arrays::VarBin::Metadata = vortex_array::ProstMetadata -pub fn vortex_array::arrays::null::Null::slots(array: &vortex_array::arrays::null::NullArray) -> &[core::option::Option] +pub type vortex_array::arrays::VarBin::OperationsVTable = vortex_array::arrays::VarBin -pub fn vortex_array::arrays::null::Null::stats(array: &vortex_array::arrays::null::NullArray) -> vortex_array::stats::StatsSetRef<'_> +pub type vortex_array::arrays::VarBin::ValidityVTable = vortex_array::arrays::VarBin -pub fn vortex_array::arrays::null::Null::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::VarBin::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::null::Null::with_slots(array: &mut vortex_array::arrays::null::NullArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::VarBin::array_eq(array: &vortex_array::arrays::varbin::VarBinData, other: &vortex_array::arrays::varbin::VarBinData, precision: vortex_array::Precision) -> bool -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::null::Null +pub fn vortex_array::arrays::VarBin::array_hash(array: &vortex_array::arrays::varbin::VarBinData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::null::Null::validity(_array: &vortex_array::arrays::null::NullArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBin::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub struct vortex_array::arrays::NullArray +pub fn vortex_array::arrays::VarBin::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -impl vortex_array::arrays::null::NullArray +pub fn vortex_array::arrays::VarBin::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::null::NullArray::new(len: usize) -> Self +pub fn vortex_array::arrays::VarBin::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -impl vortex_array::arrays::null::NullArray +pub fn vortex_array::arrays::VarBin::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::null::NullArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::VarBin::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl core::clone::Clone for vortex_array::arrays::null::NullArray +pub fn vortex_array::arrays::VarBin::dtype(array: &vortex_array::arrays::varbin::VarBinData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::null::NullArray::clone(&self) -> vortex_array::arrays::null::NullArray +pub fn vortex_array::arrays::VarBin::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::convert::AsRef for vortex_array::arrays::null::NullArray +pub fn vortex_array::arrays::VarBin::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::null::NullArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::VarBin::id(&self) -> vortex_array::ArrayId -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::arrays::VarBin::len(array: &vortex_array::arrays::varbin::VarBinData) -> usize -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::null::NullArray) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::VarBin::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::arrays::null::NullArray +pub fn vortex_array::arrays::VarBin::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::null::NullArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::VarBin::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -impl core::ops::deref::Deref for vortex_array::arrays::null::NullArray +pub fn vortex_array::arrays::VarBin::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub type vortex_array::arrays::null::NullArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::arrays::VarBin::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::null::NullArray::deref(&self) -> &Self::Target +pub fn vortex_array::arrays::VarBin::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -impl vortex_array::Executable for vortex_array::arrays::null::NullArray +pub fn vortex_array::arrays::VarBin::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::null::NullArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBin::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -impl vortex_array::IntoArray for vortex_array::arrays::null::NullArray +pub fn vortex_array::arrays::VarBin::stats(array: &vortex_array::arrays::varbin::VarBinData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::null::NullArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::VarBin::vtable(_array: &vortex_array::arrays::varbin::VarBinData) -> &Self -pub struct vortex_array::arrays::Patched +pub fn vortex_array::arrays::VarBin::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl core::clone::Clone for vortex_array::arrays::patched::Patched +impl vortex_array::ValidityVTable for vortex_array::arrays::VarBin -pub fn vortex_array::arrays::patched::Patched::clone(&self) -> vortex_array::arrays::patched::Patched +pub fn vortex_array::arrays::VarBin::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBin>) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::arrays::patched::Patched +impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::VarBin -pub fn vortex_array::arrays::patched::Patched::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::VarBin::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBin>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::patched::Patched +impl vortex_array::arrays::filter::FilterKernel for vortex_array::arrays::VarBin -pub fn vortex_array::arrays::patched::Patched::take(array: &Self::Array, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::filter(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBin>, mask: &vortex_mask::Mask, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::arrays::filter::FilterReduce for vortex_array::arrays::patched::Patched +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::VarBin -pub fn vortex_array::arrays::patched::Patched::filter(array: &Self::Array, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::patched::Patched +impl vortex_array::scalar_fn::fns::binary::CompareKernel for vortex_array::arrays::VarBin -pub fn vortex_array::arrays::patched::Patched::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::compare(lhs: vortex_array::ArrayView<'_, vortex_array::arrays::VarBin>, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::scalar_fn::fns::binary::CompareKernel for vortex_array::arrays::patched::Patched +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::VarBin -pub fn vortex_array::arrays::patched::Patched::compare(lhs: &Self::Array, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBin>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::patched::Patched +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::VarBin -pub fn vortex_array::arrays::patched::Patched::scalar_at(array: &vortex_array::arrays::patched::PatchedArray, index: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBin::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBin>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -impl vortex_array::vtable::VTable for vortex_array::arrays::patched::Patched +pub struct vortex_array::arrays::VarBinView -pub type vortex_array::arrays::patched::Patched::Array = vortex_array::arrays::patched::PatchedArray +impl vortex_array::arrays::VarBinView -pub type vortex_array::arrays::patched::Patched::Metadata = vortex_array::ProstMetadata +pub const vortex_array::arrays::VarBinView::ID: vortex_array::ArrayId -pub type vortex_array::arrays::patched::Patched::OperationsVTable = vortex_array::arrays::patched::Patched +impl core::clone::Clone for vortex_array::arrays::VarBinView -pub type vortex_array::arrays::patched::Patched::ValidityVTable = vortex_array::vtable::ValidityVTableFromChild +pub fn vortex_array::arrays::VarBinView::clone(&self) -> vortex_array::arrays::VarBinView -pub fn vortex_array::arrays::patched::Patched::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +impl core::fmt::Debug for vortex_array::arrays::VarBinView -pub fn vortex_array::arrays::patched::Patched::array_eq(array: &Self::Array, other: &Self::Array, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::VarBinView::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::patched::Patched::array_hash(array: &Self::Array, state: &mut H, precision: vortex_array::Precision) +impl vortex_array::OperationsVTable for vortex_array::arrays::VarBinView -pub fn vortex_array::arrays::patched::Patched::buffer(_array: &Self::Array, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::VarBinView::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBinView>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::patched::Patched::buffer_name(_array: &Self::Array, idx: usize) -> core::option::Option +impl vortex_array::VTable for vortex_array::arrays::VarBinView -pub fn vortex_array::arrays::patched::Patched::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub type vortex_array::arrays::VarBinView::ArrayData = vortex_array::arrays::varbinview::VarBinViewData -pub fn vortex_array::arrays::patched::Patched::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub type vortex_array::arrays::VarBinView::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::arrays::patched::Patched::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub type vortex_array::arrays::VarBinView::OperationsVTable = vortex_array::arrays::VarBinView -pub fn vortex_array::arrays::patched::Patched::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub type vortex_array::arrays::VarBinView::ValidityVTable = vortex_array::arrays::VarBinView -pub fn vortex_array::arrays::patched::Patched::dtype(array: &Self::Array) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::VarBinView::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::patched::Patched::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinView::array_eq(array: &vortex_array::arrays::varbinview::VarBinViewData, other: &vortex_array::arrays::varbinview::VarBinViewData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::patched::Patched::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBinView::array_hash(array: &vortex_array::arrays::varbinview::VarBinViewData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::patched::Patched::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::VarBinView::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::patched::Patched::len(array: &Self::Array) -> usize +pub fn vortex_array::arrays::VarBinView::buffer_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::patched::Patched::metadata(array: &Self::Array) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinView::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::patched::Patched::nbuffers(_array: &Self::Array) -> usize +pub fn vortex_array::arrays::VarBinView::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::patched::Patched::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::arrays::VarBinView::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::patched::Patched::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBinView::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::patched::Patched::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBinView::dtype(array: &vortex_array::arrays::varbinview::VarBinViewData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::patched::Patched::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::VarBinView::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::patched::Patched::slot_name(_array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::VarBinView::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::patched::Patched::slots(array: &Self::Array) -> &[core::option::Option] +pub fn vortex_array::arrays::VarBinView::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::patched::Patched::stats(array: &Self::Array) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::VarBinView::len(array: &vortex_array::arrays::varbinview::VarBinViewData) -> usize -pub fn vortex_array::arrays::patched::Patched::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::VarBinView::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::patched::Patched::with_slots(array: &mut Self::Array, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::VarBinView::nbuffers(array: vortex_array::ArrayView<'_, Self>) -> usize -impl vortex_array::vtable::ValidityChild for vortex_array::arrays::patched::Patched +pub fn vortex_array::arrays::VarBinView::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::patched::Patched::validity_child(array: &vortex_array::arrays::patched::PatchedArray) -> &vortex_array::ArrayRef +pub fn vortex_array::arrays::VarBinView::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub struct vortex_array::arrays::PatchedArray +pub fn vortex_array::arrays::VarBinView::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -impl vortex_array::arrays::patched::PatchedArray +pub fn vortex_array::arrays::VarBinView::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::patched::PatchedArray::base_array(&self) -> &vortex_array::ArrayRef +pub fn vortex_array::arrays::VarBinView::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::patched::PatchedArray::lane_offsets(&self) -> &vortex_array::ArrayRef +pub fn vortex_array::arrays::VarBinView::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::patched::PatchedArray::patch_indices(&self) -> &vortex_array::ArrayRef +pub fn vortex_array::arrays::VarBinView::stats(array: &vortex_array::arrays::varbinview::VarBinViewData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::patched::PatchedArray::patch_values(&self) -> &vortex_array::ArrayRef +pub fn vortex_array::arrays::VarBinView::vtable(_array: &vortex_array::arrays::varbinview::VarBinViewData) -> &Self -impl vortex_array::arrays::patched::PatchedArray +pub fn vortex_array::arrays::VarBinView::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::patched::PatchedArray::from_array_and_patches(inner: vortex_array::ArrayRef, patches: &vortex_array::patches::Patches, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::ValidityVTable for vortex_array::arrays::VarBinView -impl vortex_array::arrays::patched::PatchedArray +pub fn vortex_array::arrays::VarBinView::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBinView>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::patched::PatchedArray::to_array(&self) -> vortex_array::ArrayRef +impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::VarBinView -impl core::clone::Clone for vortex_array::arrays::patched::PatchedArray +pub fn vortex_array::arrays::VarBinView::take(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBinView>, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::patched::PatchedArray::clone(&self) -> vortex_array::arrays::patched::PatchedArray +impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::VarBinView -impl core::convert::AsRef for vortex_array::arrays::patched::PatchedArray +pub fn vortex_array::arrays::VarBinView::slice(array: vortex_array::ArrayView<'_, Self>, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::patched::PatchedArray::as_ref(&self) -> &dyn vortex_array::DynArray +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::VarBinView -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::arrays::VarBinView::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBinView>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::patched::PatchedArray) -> vortex_array::ArrayRef +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::VarBinView -impl core::fmt::Debug for vortex_array::arrays::patched::PatchedArray +pub fn vortex_array::arrays::VarBinView::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBinView>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::patched::PatchedArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl vortex_array::scalar_fn::fns::zip::ZipKernel for vortex_array::arrays::VarBinView -impl core::ops::deref::Deref for vortex_array::arrays::patched::PatchedArray +pub fn vortex_array::arrays::VarBinView::zip(if_true: vortex_array::ArrayView<'_, vortex_array::arrays::VarBinView>, if_false: &vortex_array::ArrayRef, mask: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub type vortex_array::arrays::patched::PatchedArray::Target = dyn vortex_array::DynArray +pub struct vortex_array::arrays::Variant -pub fn vortex_array::arrays::patched::PatchedArray::deref(&self) -> &Self::Target +impl vortex_array::arrays::Variant -impl vortex_array::IntoArray for vortex_array::arrays::patched::PatchedArray +pub const vortex_array::arrays::Variant::ID: vortex_array::ArrayId -pub fn vortex_array::arrays::patched::PatchedArray::into_array(self) -> vortex_array::ArrayRef +impl core::clone::Clone for vortex_array::arrays::Variant -pub struct vortex_array::arrays::Primitive +pub fn vortex_array::arrays::Variant::clone(&self) -> vortex_array::arrays::Variant -impl vortex_array::arrays::Primitive +impl core::fmt::Debug for vortex_array::arrays::Variant -pub const vortex_array::arrays::Primitive::ID: vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::Variant::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::clone::Clone for vortex_array::arrays::Primitive +impl vortex_array::OperationsVTable for vortex_array::arrays::Variant -pub fn vortex_array::arrays::Primitive::clone(&self) -> vortex_array::arrays::Primitive +pub fn vortex_array::arrays::Variant::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Variant>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::arrays::Primitive +impl vortex_array::VTable for vortex_array::arrays::Variant -pub fn vortex_array::arrays::Primitive::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::arrays::Variant::ArrayData = vortex_array::arrays::variant::VariantData -impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::Primitive +pub type vortex_array::arrays::Variant::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::arrays::Primitive::take(array: &vortex_array::arrays::PrimitiveArray, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Variant::OperationsVTable = vortex_array::arrays::Variant -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Primitive +pub type vortex_array::arrays::Variant::ValidityVTable = vortex_array::arrays::Variant -pub fn vortex_array::arrays::Primitive::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Variant::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::arrays::primitive::PrimitiveMaskedValidityRule +pub fn vortex_array::arrays::Variant::array_eq(array: &vortex_array::arrays::variant::VariantData, other: &vortex_array::arrays::variant::VariantData, precision: vortex_array::Precision) -> bool -pub type vortex_array::arrays::primitive::PrimitiveMaskedValidityRule::Parent = vortex_array::arrays::Masked +pub fn vortex_array::arrays::Variant::array_hash(array: &vortex_array::arrays::variant::VariantData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::primitive::PrimitiveMaskedValidityRule::reduce_parent(&self, array: &vortex_array::arrays::PrimitiveArray, parent: &vortex_array::arrays::MaskedArray, _child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Variant::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -impl vortex_array::scalar_fn::fns::between::BetweenKernel for vortex_array::arrays::Primitive +pub fn vortex_array::arrays::Variant::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Primitive::between(arr: &vortex_array::arrays::PrimitiveArray, lower: &vortex_array::ArrayRef, upper: &vortex_array::ArrayRef, options: &vortex_array::scalar_fn::fns::between::BetweenOptions, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Variant::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::fns::cast::CastKernel for vortex_array::arrays::Primitive +pub fn vortex_array::arrays::Variant::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Primitive::cast(array: &vortex_array::arrays::PrimitiveArray, dtype: &vortex_array::dtype::DType, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Variant::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::scalar_fn::fns::fill_null::FillNullKernel for vortex_array::arrays::Primitive +pub fn vortex_array::arrays::Variant::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Primitive::fill_null(array: &vortex_array::arrays::PrimitiveArray, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Variant::dtype(array: &Self::ArrayData) -> &vortex_array::dtype::DType -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Primitive +pub fn vortex_array::arrays::Variant::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Primitive::mask(array: &vortex_array::arrays::PrimitiveArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Variant::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Primitive +pub fn vortex_array::arrays::Variant::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Primitive::scalar_at(array: &vortex_array::arrays::PrimitiveArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::len(array: &Self::ArrayData) -> usize -impl vortex_array::vtable::VTable for vortex_array::arrays::Primitive +pub fn vortex_array::arrays::Variant::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub type vortex_array::arrays::Primitive::Array = vortex_array::arrays::PrimitiveArray +pub fn vortex_array::arrays::Variant::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub type vortex_array::arrays::Primitive::Metadata = vortex_array::EmptyMetadata +pub fn vortex_array::arrays::Variant::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub type vortex_array::arrays::Primitive::OperationsVTable = vortex_array::arrays::Primitive +pub fn vortex_array::arrays::Variant::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub type vortex_array::arrays::Primitive::ValidityVTable = vortex_array::arrays::Primitive +pub fn vortex_array::arrays::Variant::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Primitive::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Variant::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Primitive::array_eq(array: &vortex_array::arrays::PrimitiveArray, other: &vortex_array::arrays::PrimitiveArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Variant::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Primitive::array_hash(array: &vortex_array::arrays::PrimitiveArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Variant::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::Primitive::buffer(array: &vortex_array::arrays::PrimitiveArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Variant::stats(array: &Self::ArrayData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Primitive::buffer_name(_array: &vortex_array::arrays::PrimitiveArray, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::Variant::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::Primitive::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Primitive::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +impl vortex_array::ValidityVTable for vortex_array::arrays::Variant -pub fn vortex_array::arrays::Primitive::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Variant::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Variant>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Primitive::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub type vortex_array::arrays::BoolArray = vortex_array::Array -pub fn vortex_array::arrays::Primitive::dtype(array: &vortex_array::arrays::PrimitiveArray) -> &vortex_array::dtype::DType +pub type vortex_array::arrays::ChunkedArray = vortex_array::Array -pub fn vortex_array::arrays::Primitive::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub type vortex_array::arrays::ConstantArray = vortex_array::Array -pub fn vortex_array::arrays::Primitive::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub type vortex_array::arrays::DecimalArray = vortex_array::Array -pub fn vortex_array::arrays::Primitive::id(&self) -> vortex_array::vtable::ArrayId +pub type vortex_array::arrays::DictArray = vortex_array::Array -pub fn vortex_array::arrays::Primitive::len(array: &vortex_array::arrays::PrimitiveArray) -> usize +pub type vortex_array::arrays::ExtensionArray = vortex_array::Array -pub fn vortex_array::arrays::Primitive::metadata(_array: &vortex_array::arrays::PrimitiveArray) -> vortex_error::VortexResult +pub type vortex_array::arrays::FilterArray = vortex_array::Array -pub fn vortex_array::arrays::Primitive::nbuffers(_array: &vortex_array::arrays::PrimitiveArray) -> usize +pub type vortex_array::arrays::FixedSizeListArray = vortex_array::Array -pub fn vortex_array::arrays::Primitive::nchildren(array: &Self::Array) -> usize +pub type vortex_array::arrays::ListArray = vortex_array::Array -pub fn vortex_array::arrays::Primitive::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub type vortex_array::arrays::ListViewArray = vortex_array::Array -pub fn vortex_array::arrays::Primitive::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub type vortex_array::arrays::MaskedArray = vortex_array::Array -pub fn vortex_array::arrays::Primitive::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub type vortex_array::arrays::NullArray = vortex_array::Array -pub fn vortex_array::arrays::Primitive::slot_name(_array: &vortex_array::arrays::PrimitiveArray, idx: usize) -> alloc::string::String +pub type vortex_array::arrays::PrimitiveArray = vortex_array::Array -pub fn vortex_array::arrays::Primitive::slots(array: &vortex_array::arrays::PrimitiveArray) -> &[core::option::Option] +pub type vortex_array::arrays::ScalarFnArray = vortex_array::Array -pub fn vortex_array::arrays::Primitive::stats(array: &vortex_array::arrays::PrimitiveArray) -> vortex_array::stats::StatsSetRef<'_> +pub type vortex_array::arrays::SharedArray = vortex_array::Array -pub fn vortex_array::arrays::Primitive::vtable(_array: &Self::Array) -> &Self +pub type vortex_array::arrays::SliceArray = vortex_array::Array -pub fn vortex_array::arrays::Primitive::with_slots(array: &mut vortex_array::arrays::PrimitiveArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub type vortex_array::arrays::StructArray = vortex_array::Array -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Primitive +pub type vortex_array::arrays::TemporalArray = vortex_array::arrays::datetime::TemporalData -pub fn vortex_array::arrays::Primitive::validity(array: &vortex_array::arrays::PrimitiveArray) -> vortex_error::VortexResult +pub type vortex_array::arrays::VarBinArray = vortex_array::Array -pub struct vortex_array::arrays::PrimitiveArray +pub type vortex_array::arrays::VarBinViewArray = vortex_array::Array -impl vortex_array::arrays::PrimitiveArray +pub type vortex_array::arrays::VariantArray = vortex_array::Array -pub fn vortex_array::arrays::PrimitiveArray::as_slice(&self) -> &[T] +pub mod vortex_array::arrow -pub fn vortex_array::arrays::PrimitiveArray::narrow(&self) -> vortex_error::VortexResult +pub mod vortex_array::arrow::bool -pub fn vortex_array::arrays::PrimitiveArray::reinterpret_cast(&self, ptype: vortex_array::dtype::PType) -> Self +pub fn vortex_array::arrow::bool::canonical_bool_to_arrow(array: &vortex_array::arrays::BoolArray) -> vortex_error::VortexResult -impl vortex_array::arrays::PrimitiveArray +pub mod vortex_array::arrow::byte_view -pub fn vortex_array::arrays::PrimitiveArray::buffer_handle(&self) -> &vortex_array::buffer::BufferHandle +pub fn vortex_array::arrow::byte_view::canonical_varbinview_to_arrow(array: &vortex_array::arrays::VarBinViewArray) -> vortex_error::VortexResult -pub fn vortex_array::arrays::PrimitiveArray::from_buffer_handle(handle: vortex_array::buffer::BufferHandle, ptype: vortex_array::dtype::PType, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::arrow::byte_view::execute_varbinview_to_arrow(array: &vortex_array::arrays::VarBinViewArray, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::PrimitiveArray::from_byte_buffer(buffer: vortex_buffer::ByteBuffer, ptype: vortex_array::dtype::PType, validity: vortex_array::validity::Validity) -> Self +pub mod vortex_array::arrow::null -pub fn vortex_array::arrays::PrimitiveArray::from_values_byte_buffer(valid_elems_buffer: vortex_buffer::ByteBuffer, ptype: vortex_array::dtype::PType, validity: vortex_array::validity::Validity, n_rows: usize) -> Self +pub fn vortex_array::arrow::null::canonical_null_to_arrow(array: &vortex_array::arrays::null::NullArray) -> arrow_array::array::ArrayRef -pub fn vortex_array::arrays::PrimitiveArray::map_each(self, f: F) -> vortex_array::arrays::PrimitiveArray where T: vortex_array::dtype::NativePType, R: vortex_array::dtype::NativePType, F: core::ops::function::FnMut(T) -> R +pub mod vortex_array::arrow::primitive -pub fn vortex_array::arrays::PrimitiveArray::map_each_with_validity(self, f: F) -> vortex_error::VortexResult where T: vortex_array::dtype::NativePType, R: vortex_array::dtype::NativePType, F: core::ops::function::FnMut((T, bool)) -> R +pub fn vortex_array::arrow::primitive::canonical_primitive_to_arrow(array: vortex_array::arrays::PrimitiveArray) -> vortex_error::VortexResult where ::Native: vortex_array::dtype::NativePType -pub fn vortex_array::arrays::PrimitiveArray::ptype(&self) -> vortex_array::dtype::PType +pub struct vortex_array::arrow::ArrowArrayStreamAdapter -impl vortex_array::arrays::PrimitiveArray +impl vortex_array::arrow::ArrowArrayStreamAdapter -pub fn vortex_array::arrays::PrimitiveArray::empty(nullability: vortex_array::dtype::Nullability) -> Self +pub fn vortex_array::arrow::ArrowArrayStreamAdapter::new(stream: arrow_array::ffi_stream::ArrowArrayStreamReader, dtype: vortex_array::dtype::DType) -> Self -pub fn vortex_array::arrays::PrimitiveArray::new(buffer: impl core::convert::Into>, validity: vortex_array::validity::Validity) -> Self +impl core::iter::traits::iterator::Iterator for vortex_array::arrow::ArrowArrayStreamAdapter -pub unsafe fn vortex_array::arrays::PrimitiveArray::new_unchecked(buffer: vortex_buffer::buffer::Buffer, validity: vortex_array::validity::Validity) -> Self +pub type vortex_array::arrow::ArrowArrayStreamAdapter::Item = core::result::Result -pub unsafe fn vortex_array::arrays::PrimitiveArray::new_unchecked_from_handle(handle: vortex_array::buffer::BufferHandle, ptype: vortex_array::dtype::PType, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::arrow::ArrowArrayStreamAdapter::next(&mut self) -> core::option::Option -pub fn vortex_array::arrays::PrimitiveArray::try_new(buffer: vortex_buffer::buffer::Buffer, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +impl vortex_array::iter::ArrayIterator for vortex_array::arrow::ArrowArrayStreamAdapter -pub fn vortex_array::arrays::PrimitiveArray::validate(buffer: &vortex_buffer::buffer::Buffer, validity: &vortex_array::validity::Validity) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrow::ArrowArrayStreamAdapter::dtype(&self) -> &vortex_array::dtype::DType -impl vortex_array::arrays::PrimitiveArray +pub struct vortex_array::arrow::Datum -pub fn vortex_array::arrays::PrimitiveArray::from_option_iter>>(iter: I) -> Self +impl vortex_array::arrow::Datum -pub fn vortex_array::arrays::PrimitiveArray::into_buffer(self) -> vortex_buffer::buffer::Buffer +pub fn vortex_array::arrow::Datum::data_type(&self) -> &arrow_schema::datatype::DataType -pub fn vortex_array::arrays::PrimitiveArray::into_buffer_mut(self) -> vortex_buffer::buffer_mut::BufferMut +pub fn vortex_array::arrow::Datum::try_new(array: &vortex_array::ArrayRef) -> vortex_error::VortexResult -pub fn vortex_array::arrays::PrimitiveArray::to_buffer(&self) -> vortex_buffer::buffer::Buffer +pub fn vortex_array::arrow::Datum::try_new_array(array: &vortex_array::ArrayRef) -> vortex_error::VortexResult -pub fn vortex_array::arrays::PrimitiveArray::try_into_buffer_mut(self) -> core::result::Result, vortex_buffer::buffer::Buffer> +pub fn vortex_array::arrow::Datum::try_new_with_target_datatype(array: &vortex_array::ArrayRef, target_datatype: &arrow_schema::datatype::DataType) -> vortex_error::VortexResult -impl vortex_array::arrays::PrimitiveArray +impl arrow_array::scalar::Datum for vortex_array::arrow::Datum -pub fn vortex_array::arrays::PrimitiveArray::into_parts(self) -> vortex_array::arrays::primitive::PrimitiveArrayParts +pub fn vortex_array::arrow::Datum::get(&self) -> (&dyn arrow_array::array::Array, bool) -pub fn vortex_array::arrays::PrimitiveArray::validity(&self) -> vortex_array::validity::Validity +impl core::fmt::Debug for vortex_array::arrow::Datum -impl vortex_array::arrays::PrimitiveArray +pub fn vortex_array::arrow::Datum::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::PrimitiveArray::patch(self, patches: &vortex_array::patches::Patches, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub trait vortex_array::arrow::ArrowArrayExecutor: core::marker::Sized -impl vortex_array::arrays::PrimitiveArray +pub fn vortex_array::arrow::ArrowArrayExecutor::execute_arrow(self, data_type: core::option::Option<&arrow_schema::datatype::DataType>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::PrimitiveArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::arrow::ArrowArrayExecutor::execute_record_batch(self, schema: &arrow_schema::schema::Schema, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::arrays::PrimitiveArray +pub fn vortex_array::arrow::ArrowArrayExecutor::execute_record_batches(self, schema: &arrow_schema::schema::Schema, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::PrimitiveArray::top_value(&self) -> vortex_error::VortexResult> +impl vortex_array::arrow::ArrowArrayExecutor for vortex_array::ArrayRef -impl core::clone::Clone for vortex_array::arrays::PrimitiveArray +pub fn vortex_array::ArrayRef::execute_arrow(self, data_type: core::option::Option<&arrow_schema::datatype::DataType>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::PrimitiveArray::clone(&self) -> vortex_array::arrays::PrimitiveArray +pub fn vortex_array::ArrayRef::execute_record_batch(self, schema: &arrow_schema::schema::Schema, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::convert::AsRef for vortex_array::arrays::PrimitiveArray +pub fn vortex_array::ArrayRef::execute_record_batches(self, schema: &arrow_schema::schema::Schema, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::PrimitiveArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub trait vortex_array::arrow::FromArrowArray -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::arrow::FromArrowArray::from_arrow(array: A, nullable: bool) -> vortex_error::VortexResult where Self: core::marker::Sized -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::PrimitiveArray) -> vortex_array::ArrayRef +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::boolean_array::BooleanArray> for vortex_array::ArrayRef -impl core::fmt::Debug for vortex_array::arrays::PrimitiveArray +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::boolean_array::BooleanArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::PrimitiveArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::fixed_size_list_array::FixedSizeListArray> for vortex_array::ArrayRef -impl core::ops::deref::Deref for vortex_array::arrays::PrimitiveArray +pub fn vortex_array::ArrayRef::from_arrow(array: &arrow_array::array::fixed_size_list_array::FixedSizeListArray, nullable: bool) -> vortex_error::VortexResult -pub type vortex_array::arrays::PrimitiveArray::Target = dyn vortex_array::DynArray +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::null_array::NullArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::PrimitiveArray::deref(&self) -> &Self::Target +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::null_array::NullArray, nullable: bool) -> vortex_error::VortexResult -impl vortex_array::Executable for vortex_array::arrays::PrimitiveArray +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::PrimitiveArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -impl vortex_array::IntoArray for vortex_array::arrays::PrimitiveArray +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::PrimitiveArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -impl core::iter::traits::collect::FromIterator for vortex_array::arrays::PrimitiveArray +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::PrimitiveArray::from_iter>(iter: I) -> Self +pub fn vortex_array::ArrayRef::from_arrow(array: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -impl vortex_array::accessor::ArrayAccessor for vortex_array::arrays::PrimitiveArray +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::PrimitiveArray::with_iterator(&self, f: F) -> R where F: for<'a> core::ops::function::FnOnce(&mut dyn core::iter::traits::iterator::Iterator>) -> R +pub fn vortex_array::ArrayRef::from_arrow(array: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub struct vortex_array::arrays::ScalarFnArray +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -impl vortex_array::arrays::scalar_fn::ScalarFnArray +pub fn vortex_array::ArrayRef::from_arrow(array: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::children(&self) -> alloc::vec::Vec +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::get_child(&self, idx: usize) -> &vortex_array::ArrayRef +pub fn vortex_array::ArrayRef::from_arrow(array: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::iter_children(&self) -> impl core::iter::traits::iterator::Iterator + '_ +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::nchildren(&self) -> usize +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::scalar_fn(&self) -> &vortex_array::scalar_fn::ScalarFnRef +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::try_new(scalar_fn: vortex_array::scalar_fn::ScalarFnRef, children: alloc::vec::Vec, len: usize) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -impl vortex_array::arrays::scalar_fn::ScalarFnArray +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -impl core::clone::Clone for vortex_array::arrays::scalar_fn::ScalarFnArray +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::clone(&self) -> vortex_array::arrays::scalar_fn::ScalarFnArray +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -impl core::convert::AsRef for vortex_array::arrays::scalar_fn::ScalarFnArray +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -impl core::convert::From for vortex_array::ArrayRef +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::scalar_fn::ScalarFnArray) -> vortex_array::ArrayRef +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::arrays::scalar_fn::ScalarFnArray +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -impl core::ops::deref::Deref for vortex_array::arrays::scalar_fn::ScalarFnArray +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub type vortex_array::arrays::scalar_fn::ScalarFnArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::deref(&self) -> &Self::Target +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -impl vortex_array::IntoArray for vortex_array::arrays::scalar_fn::ScalarFnArray +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::into_array(self) -> vortex_array::ArrayRef +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -impl vortex_array::scalar_fn::ReduceNode for vortex_array::arrays::scalar_fn::ScalarFnArray +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::as_any(&self) -> &dyn core::any::Any +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::child(&self, idx: usize) -> vortex_array::scalar_fn::ReduceNodeRef +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::child_count(&self) -> usize +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::node_dtype(&self) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::scalar_fn(&self) -> core::option::Option<&vortex_array::scalar_fn::ScalarFnRef> +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub struct vortex_array::arrays::ScalarFnVTable +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -impl core::clone::Clone for vortex_array::arrays::scalar_fn::ScalarFnVTable +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::clone(&self) -> vortex_array::arrays::scalar_fn::ScalarFnVTable +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::arrays::scalar_fn::ScalarFnVTable +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::scalar_fn::ScalarFnVTable +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::scalar_at(array: &vortex_array::arrays::scalar_fn::ScalarFnArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -impl vortex_array::vtable::VTable for vortex_array::arrays::scalar_fn::ScalarFnVTable +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::Array = vortex_array::arrays::scalar_fn::ScalarFnArray +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::Metadata = vortex_array::arrays::scalar_fn::metadata::ScalarFnMetadata +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::OperationsVTable = vortex_array::arrays::scalar_fn::ScalarFnVTable +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::ValidityVTable = vortex_array::arrays::scalar_fn::ScalarFnVTable +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::array_eq(array: &vortex_array::arrays::scalar_fn::ScalarFnArray, other: &vortex_array::arrays::scalar_fn::ScalarFnArray, precision: vortex_array::Precision) -> bool +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::struct_array::StructArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::array_hash(array: &vortex_array::arrays::scalar_fn::ScalarFnArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::struct_array::StructArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::buffer(_array: &vortex_array::arrays::scalar_fn::ScalarFnArray, idx: usize) -> vortex_array::buffer::BufferHandle +impl vortex_array::arrow::FromArrowArray<&arrow_array::record_batch::RecordBatch> for vortex_array::ArrayRef -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::buffer_name(_array: &vortex_array::arrays::scalar_fn::ScalarFnArray, _idx: usize) -> core::option::Option +pub fn vortex_array::ArrayRef::from_arrow(array: &arrow_array::record_batch::RecordBatch, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::scalar_fn::metadata::ScalarFnMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +impl vortex_array::arrow::FromArrowArray<&dyn arrow_array::array::Array> for vortex_array::ArrayRef -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::ArrayRef::from_arrow(array: &dyn arrow_array::array::Array, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +impl vortex_array::arrow::FromArrowArray for vortex_array::ArrayRef -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::from_arrow(array: arrow_array::record_batch::RecordBatch, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::dtype(array: &vortex_array::arrays::scalar_fn::ScalarFnArray) -> &vortex_array::dtype::DType +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::dictionary_array::DictionaryArray> for vortex_array::arrays::dict::DictArray -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::DictArray::from_arrow(array: &arrow_array::array::dictionary_array::DictionaryArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::list_view_array::GenericListViewArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::ArrayRef::from_arrow(array: &arrow_array::array::list_view_array::GenericListViewArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::len(array: &vortex_array::arrays::scalar_fn::ScalarFnArray) -> usize +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::list_array::GenericListArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::metadata(array: &Self::Array) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::list_array::GenericListArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::nbuffers(_array: &vortex_array::arrays::scalar_fn::ScalarFnArray) -> usize +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::byte_array::GenericByteArray> for vortex_array::ArrayRef where ::Offset: vortex_array::dtype::IntegerPType -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::byte_array::GenericByteArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::byte_view_array::GenericByteViewArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::byte_view_array::GenericByteViewArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub trait vortex_array::arrow::IntoArrowArray -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::slot_name(array: &vortex_array::arrays::scalar_fn::ScalarFnArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrow::IntoArrowArray::into_arrow(self, data_type: &arrow_schema::datatype::DataType) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::slots(array: &vortex_array::arrays::scalar_fn::ScalarFnArray) -> &[core::option::Option] +pub fn vortex_array::arrow::IntoArrowArray::into_arrow_preferred(self) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::stats(array: &vortex_array::arrays::scalar_fn::ScalarFnArray) -> vortex_array::stats::StatsSetRef<'_> +impl vortex_array::arrow::IntoArrowArray for vortex_array::ArrayRef -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::vtable(array: &Self::Array) -> &Self +pub fn vortex_array::ArrayRef::into_arrow(self, data_type: &arrow_schema::datatype::DataType) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::with_slots(array: &mut vortex_array::arrays::scalar_fn::ScalarFnArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::ArrayRef::into_arrow_preferred(self) -> vortex_error::VortexResult -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::scalar_fn::ScalarFnVTable +pub fn vortex_array::arrow::from_arrow_array_with_len(array: A, len: usize, nullable: bool) -> vortex_error::VortexResult where vortex_array::ArrayRef: vortex_array::arrow::FromArrowArray -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::validity(array: &vortex_array::arrays::scalar_fn::ScalarFnArray) -> vortex_error::VortexResult +pub fn vortex_array::arrow::to_arrow_null_buffer(validity: vortex_array::validity::Validity, len: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub struct vortex_array::arrays::Shared +pub fn vortex_array::arrow::to_null_buffer(mask: vortex_mask::Mask) -> core::option::Option -impl vortex_array::arrays::Shared +pub mod vortex_array::buffer -pub const vortex_array::arrays::Shared::ID: vortex_array::vtable::ArrayId +pub struct vortex_array::buffer::BufferHandle(_) -impl core::clone::Clone for vortex_array::arrays::Shared +impl vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Shared::clone(&self) -> vortex_array::arrays::Shared +pub fn vortex_array::buffer::BufferHandle::alignment(&self) -> vortex_buffer::alignment::Alignment -impl core::fmt::Debug for vortex_array::arrays::Shared +pub fn vortex_array::buffer::BufferHandle::as_device(&self) -> &alloc::sync::Arc -pub fn vortex_array::arrays::Shared::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::buffer::BufferHandle::as_device_opt(&self) -> core::option::Option<&alloc::sync::Arc> -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Shared +pub fn vortex_array::buffer::BufferHandle::as_host(&self) -> &vortex_buffer::ByteBuffer -pub fn vortex_array::arrays::Shared::scalar_at(array: &vortex_array::arrays::SharedArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::buffer::BufferHandle::as_host_opt(&self) -> core::option::Option<&vortex_buffer::ByteBuffer> -impl vortex_array::vtable::VTable for vortex_array::arrays::Shared +pub fn vortex_array::buffer::BufferHandle::ensure_aligned(self, alignment: vortex_buffer::alignment::Alignment) -> vortex_error::VortexResult -pub type vortex_array::arrays::Shared::Array = vortex_array::arrays::SharedArray +pub fn vortex_array::buffer::BufferHandle::into_host(self) -> futures_core::future::BoxFuture<'static, vortex_buffer::ByteBuffer> -pub type vortex_array::arrays::Shared::Metadata = vortex_array::EmptyMetadata +pub fn vortex_array::buffer::BufferHandle::into_host_sync(self) -> vortex_buffer::ByteBuffer -pub type vortex_array::arrays::Shared::OperationsVTable = vortex_array::arrays::Shared +pub fn vortex_array::buffer::BufferHandle::is_aligned_to(&self, alignment: vortex_buffer::alignment::Alignment) -> bool -pub type vortex_array::arrays::Shared::ValidityVTable = vortex_array::arrays::Shared +pub fn vortex_array::buffer::BufferHandle::is_empty(&self) -> bool -pub fn vortex_array::arrays::Shared::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::buffer::BufferHandle::is_on_device(&self) -> bool -pub fn vortex_array::arrays::Shared::array_eq(array: &vortex_array::arrays::SharedArray, other: &vortex_array::arrays::SharedArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::buffer::BufferHandle::is_on_host(&self) -> bool -pub fn vortex_array::arrays::Shared::array_hash(array: &vortex_array::arrays::SharedArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::buffer::BufferHandle::len(&self) -> usize -pub fn vortex_array::arrays::Shared::buffer(_array: &Self::Array, _idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::buffer::BufferHandle::slice(&self, range: core::ops::range::Range) -> Self -pub fn vortex_array::arrays::Shared::buffer_name(_array: &Self::Array, _idx: usize) -> core::option::Option +pub fn vortex_array::buffer::BufferHandle::slice_typed(&self, range: core::ops::range::Range) -> Self -pub fn vortex_array::arrays::Shared::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::buffer::BufferHandle::to_host(&self) -> futures_core::future::BoxFuture<'static, vortex_buffer::ByteBuffer> -pub fn vortex_array::arrays::Shared::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::buffer::BufferHandle::to_host_sync(&self) -> vortex_buffer::ByteBuffer -pub fn vortex_array::arrays::Shared::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::buffer::BufferHandle::try_into_host(self) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Shared::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::buffer::BufferHandle::try_into_host_sync(self) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Shared::dtype(array: &vortex_array::arrays::SharedArray) -> &vortex_array::dtype::DType +pub fn vortex_array::buffer::BufferHandle::try_to_host(&self) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Shared::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::buffer::BufferHandle::try_to_host_sync(&self) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Shared::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::buffer::BufferHandle::unwrap_device(self) -> alloc::sync::Arc -pub fn vortex_array::arrays::Shared::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::buffer::BufferHandle::unwrap_host(self) -> vortex_buffer::ByteBuffer -pub fn vortex_array::arrays::Shared::len(array: &vortex_array::arrays::SharedArray) -> usize +impl vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Shared::metadata(_array: &Self::Array) -> vortex_error::VortexResult +pub fn vortex_array::buffer::BufferHandle::new_device(device: alloc::sync::Arc) -> Self -pub fn vortex_array::arrays::Shared::nbuffers(_array: &Self::Array) -> usize +pub fn vortex_array::buffer::BufferHandle::new_host(byte_buffer: vortex_buffer::ByteBuffer) -> Self -pub fn vortex_array::arrays::Shared::nchildren(array: &Self::Array) -> usize +impl core::clone::Clone for vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Shared::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::buffer::BufferHandle::clone(&self) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Shared::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +impl core::convert::TryFrom for vortex_array::serde::ArrayParts -pub fn vortex_array::arrays::Shared::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub type vortex_array::serde::ArrayParts::Error = vortex_error::VortexError -pub fn vortex_array::arrays::Shared::slot_name(_array: &vortex_array::arrays::SharedArray, idx: usize) -> alloc::string::String +pub fn vortex_array::serde::ArrayParts::try_from(value: vortex_array::buffer::BufferHandle) -> core::result::Result -pub fn vortex_array::arrays::Shared::slots(array: &vortex_array::arrays::SharedArray) -> &[core::option::Option] +impl core::fmt::Debug for vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Shared::stats(array: &vortex_array::arrays::SharedArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::buffer::BufferHandle::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::Shared::vtable(_array: &Self::Array) -> &Self +impl vortex_array::ArrayEq for vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Shared::with_slots(array: &mut Self::Array, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::buffer::BufferHandle::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Shared +impl vortex_array::ArrayHash for vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Shared::validity(array: &vortex_array::arrays::SharedArray) -> vortex_error::VortexResult +pub fn vortex_array::buffer::BufferHandle::array_hash(&self, state: &mut H, precision: vortex_array::Precision) -pub struct vortex_array::arrays::SharedArray +pub trait vortex_array::buffer::DeviceBuffer: 'static + core::marker::Send + core::marker::Sync + core::fmt::Debug + vortex_utils::dyn_traits::DynEq + vortex_utils::dyn_traits::DynHash -impl vortex_array::arrays::SharedArray +pub fn vortex_array::buffer::DeviceBuffer::aligned(self: alloc::sync::Arc, alignment: vortex_buffer::alignment::Alignment) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::SharedArray::get_or_compute(&self, f: impl core::ops::function::FnOnce(&vortex_array::ArrayRef) -> vortex_error::VortexResult) -> vortex_error::VortexResult +pub fn vortex_array::buffer::DeviceBuffer::alignment(&self) -> vortex_buffer::alignment::Alignment -pub async fn vortex_array::arrays::SharedArray::get_or_compute_async(&self, f: F) -> vortex_error::VortexResult where F: core::ops::function::FnOnce(vortex_array::ArrayRef) -> Fut, Fut: core::future::future::Future> +pub fn vortex_array::buffer::DeviceBuffer::as_any(&self) -> &dyn core::any::Any -pub fn vortex_array::arrays::SharedArray::new(source: vortex_array::ArrayRef) -> Self +pub fn vortex_array::buffer::DeviceBuffer::copy_to_host(&self, alignment: vortex_buffer::alignment::Alignment) -> vortex_error::VortexResult>> -impl vortex_array::arrays::SharedArray +pub fn vortex_array::buffer::DeviceBuffer::copy_to_host_sync(&self, alignment: vortex_buffer::alignment::Alignment) -> vortex_error::VortexResult -pub fn vortex_array::arrays::SharedArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::buffer::DeviceBuffer::is_empty(&self) -> bool -impl core::clone::Clone for vortex_array::arrays::SharedArray +pub fn vortex_array::buffer::DeviceBuffer::len(&self) -> usize -pub fn vortex_array::arrays::SharedArray::clone(&self) -> vortex_array::arrays::SharedArray +pub fn vortex_array::buffer::DeviceBuffer::slice(&self, range: core::ops::range::Range) -> alloc::sync::Arc -impl core::convert::AsRef for vortex_array::arrays::SharedArray +pub trait vortex_array::buffer::DeviceBufferExt: vortex_array::buffer::DeviceBuffer -pub fn vortex_array::arrays::SharedArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::buffer::DeviceBufferExt::slice_typed(&self, range: core::ops::range::Range) -> alloc::sync::Arc -impl core::convert::From for vortex_array::ArrayRef +impl vortex_array::buffer::DeviceBufferExt for B -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::SharedArray) -> vortex_array::ArrayRef +pub fn B::slice_typed(&self, range: core::ops::range::Range) -> alloc::sync::Arc -impl core::fmt::Debug for vortex_array::arrays::SharedArray +pub mod vortex_array::builders -pub fn vortex_array::arrays::SharedArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub mod vortex_array::builders::dict -impl core::ops::deref::Deref for vortex_array::arrays::SharedArray +pub struct vortex_array::builders::dict::DictConstraints -pub type vortex_array::arrays::SharedArray::Target = dyn vortex_array::DynArray +pub vortex_array::builders::dict::DictConstraints::max_bytes: usize -pub fn vortex_array::arrays::SharedArray::deref(&self) -> &Self::Target +pub vortex_array::builders::dict::DictConstraints::max_len: usize -impl vortex_array::IntoArray for vortex_array::arrays::SharedArray +impl core::clone::Clone for vortex_array::builders::dict::DictConstraints -pub fn vortex_array::arrays::SharedArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::builders::dict::DictConstraints::clone(&self) -> vortex_array::builders::dict::DictConstraints -pub struct vortex_array::arrays::Slice +pub const vortex_array::builders::dict::UNCONSTRAINED: vortex_array::builders::dict::DictConstraints -impl vortex_array::arrays::slice::Slice +pub trait vortex_array::builders::dict::DictEncoder: core::marker::Send -pub const vortex_array::arrays::slice::Slice::ID: vortex_array::vtable::ArrayId +pub fn vortex_array::builders::dict::DictEncoder::codes_ptype(&self) -> vortex_array::dtype::PType -impl core::clone::Clone for vortex_array::arrays::slice::Slice +pub fn vortex_array::builders::dict::DictEncoder::encode(&mut self, array: &vortex_array::ArrayRef) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::slice::Slice::clone(&self) -> vortex_array::arrays::slice::Slice +pub fn vortex_array::builders::dict::DictEncoder::reset(&mut self) -> vortex_array::ArrayRef -impl core::fmt::Debug for vortex_array::arrays::slice::Slice +pub fn vortex_array::builders::dict::dict_encode(array: &vortex_array::ArrayRef) -> vortex_error::VortexResult -pub fn vortex_array::arrays::slice::Slice::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::builders::dict::dict_encode_with_constraints(array: &vortex_array::ArrayRef, constraints: &vortex_array::builders::dict::DictConstraints) -> vortex_error::VortexResult -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::slice::Slice +pub fn vortex_array::builders::dict::dict_encoder(array: &vortex_array::ArrayRef, constraints: &vortex_array::builders::dict::DictConstraints) -> alloc::boxed::Box -pub fn vortex_array::arrays::slice::Slice::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub enum vortex_array::builders::BufferGrowthStrategy -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::slice::Slice +pub vortex_array::builders::BufferGrowthStrategy::Exponential -pub fn vortex_array::arrays::slice::Slice::scalar_at(array: &vortex_array::arrays::slice::SliceArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub vortex_array::builders::BufferGrowthStrategy::Exponential::current_size: u32 -impl vortex_array::vtable::VTable for vortex_array::arrays::slice::Slice +pub vortex_array::builders::BufferGrowthStrategy::Exponential::max_size: u32 -pub type vortex_array::arrays::slice::Slice::Array = vortex_array::arrays::slice::SliceArray +pub vortex_array::builders::BufferGrowthStrategy::Fixed -pub type vortex_array::arrays::slice::Slice::Metadata = vortex_array::arrays::slice::SliceMetadata +pub vortex_array::builders::BufferGrowthStrategy::Fixed::size: u32 -pub type vortex_array::arrays::slice::Slice::OperationsVTable = vortex_array::arrays::slice::Slice +impl vortex_array::builders::BufferGrowthStrategy -pub type vortex_array::arrays::slice::Slice::ValidityVTable = vortex_array::arrays::slice::Slice +pub fn vortex_array::builders::BufferGrowthStrategy::exponential(initial_size: u32, max_size: u32) -> Self -pub fn vortex_array::arrays::slice::Slice::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::builders::BufferGrowthStrategy::fixed(size: u32) -> Self -pub fn vortex_array::arrays::slice::Slice::array_eq(array: &vortex_array::arrays::slice::SliceArray, other: &vortex_array::arrays::slice::SliceArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::builders::BufferGrowthStrategy::next_size(&mut self) -> u32 -pub fn vortex_array::arrays::slice::Slice::array_hash(array: &vortex_array::arrays::slice::SliceArray, state: &mut H, precision: vortex_array::Precision) +impl core::clone::Clone for vortex_array::builders::BufferGrowthStrategy -pub fn vortex_array::arrays::slice::Slice::buffer(_array: &Self::Array, _idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::builders::BufferGrowthStrategy::clone(&self) -> vortex_array::builders::BufferGrowthStrategy -pub fn vortex_array::arrays::slice::Slice::buffer_name(_array: &Self::Array, _idx: usize) -> core::option::Option +impl core::default::Default for vortex_array::builders::BufferGrowthStrategy -pub fn vortex_array::arrays::slice::Slice::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::slice::SliceMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::builders::BufferGrowthStrategy::default() -> Self -pub fn vortex_array::arrays::slice::Slice::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +impl core::fmt::Debug for vortex_array::builders::BufferGrowthStrategy -pub fn vortex_array::arrays::slice::Slice::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::builders::BufferGrowthStrategy::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::slice::Slice::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub enum vortex_array::builders::CompletedBuffers -pub fn vortex_array::arrays::slice::Slice::dtype(array: &vortex_array::arrays::slice::SliceArray) -> &vortex_array::dtype::DType +pub vortex_array::builders::CompletedBuffers::Deduplicated(vortex_array::builders::DeduplicatedBuffers) -pub fn vortex_array::arrays::slice::Slice::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub vortex_array::builders::CompletedBuffers::Default(alloc::vec::Vec) -pub fn vortex_array::arrays::slice::Slice::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl core::default::Default for vortex_array::builders::CompletedBuffers -pub fn vortex_array::arrays::slice::Slice::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::builders::CompletedBuffers::default() -> Self -pub fn vortex_array::arrays::slice::Slice::len(array: &vortex_array::arrays::slice::SliceArray) -> usize +pub struct vortex_array::builders::BoolBuilder -pub fn vortex_array::arrays::slice::Slice::metadata(array: &Self::Array) -> vortex_error::VortexResult +impl vortex_array::builders::BoolBuilder -pub fn vortex_array::arrays::slice::Slice::nbuffers(_array: &Self::Array) -> usize +pub fn vortex_array::builders::BoolBuilder::append_value(&mut self, value: bool) -pub fn vortex_array::arrays::slice::Slice::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::builders::BoolBuilder::append_values(&mut self, value: bool, n: usize) -pub fn vortex_array::arrays::slice::Slice::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::builders::BoolBuilder::finish_into_bool(&mut self) -> vortex_array::arrays::BoolArray -pub fn vortex_array::arrays::slice::Slice::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::builders::BoolBuilder::new(nullability: vortex_array::dtype::Nullability) -> Self -pub fn vortex_array::arrays::slice::Slice::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::builders::BoolBuilder::with_capacity(nullability: vortex_array::dtype::Nullability, capacity: usize) -> Self -pub fn vortex_array::arrays::slice::Slice::slot_name(_array: &Self::Array, idx: usize) -> alloc::string::String +impl vortex_array::builders::ArrayBuilder for vortex_array::builders::BoolBuilder -pub fn vortex_array::arrays::slice::Slice::slots(array: &Self::Array) -> &[core::option::Option] +pub fn vortex_array::builders::BoolBuilder::append_default(&mut self) -pub fn vortex_array::arrays::slice::Slice::stats(array: &vortex_array::arrays::slice::SliceArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::builders::BoolBuilder::append_defaults(&mut self, n: usize) -pub fn vortex_array::arrays::slice::Slice::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::builders::BoolBuilder::append_null(&mut self) -pub fn vortex_array::arrays::slice::Slice::with_slots(array: &mut Self::Array, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::builders::BoolBuilder::append_nulls(&mut self, n: usize) -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::slice::Slice +pub unsafe fn vortex_array::builders::BoolBuilder::append_nulls_unchecked(&mut self, n: usize) -pub fn vortex_array::arrays::slice::Slice::validity(array: &vortex_array::arrays::slice::SliceArray) -> vortex_error::VortexResult +pub fn vortex_array::builders::BoolBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> -pub struct vortex_array::arrays::SliceArray +pub fn vortex_array::builders::BoolBuilder::append_zero(&mut self) -impl vortex_array::arrays::slice::SliceArray +pub fn vortex_array::builders::BoolBuilder::append_zeros(&mut self, n: usize) -pub fn vortex_array::arrays::slice::SliceArray::child(&self) -> &vortex_array::ArrayRef +pub fn vortex_array::builders::BoolBuilder::as_any(&self) -> &dyn core::any::Any -pub fn vortex_array::arrays::slice::SliceArray::into_parts(self) -> vortex_array::arrays::slice::SliceArrayParts +pub fn vortex_array::builders::BoolBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any -pub fn vortex_array::arrays::slice::SliceArray::new(child: vortex_array::ArrayRef, range: core::ops::range::Range) -> Self +pub fn vortex_array::builders::BoolBuilder::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::slice::SliceArray::slice_range(&self) -> &core::ops::range::Range +pub fn vortex_array::builders::BoolBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::arrays::slice::SliceArray::try_new(child: vortex_array::ArrayRef, range: core::ops::range::Range) -> vortex_error::VortexResult +pub unsafe fn vortex_array::builders::BoolBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) -impl vortex_array::arrays::slice::SliceArray +pub fn vortex_array::builders::BoolBuilder::finish(&mut self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::slice::SliceArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::builders::BoolBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical -impl core::clone::Clone for vortex_array::arrays::slice::SliceArray +pub fn vortex_array::builders::BoolBuilder::is_empty(&self) -> bool -pub fn vortex_array::arrays::slice::SliceArray::clone(&self) -> vortex_array::arrays::slice::SliceArray +pub fn vortex_array::builders::BoolBuilder::len(&self) -> usize -impl core::convert::AsRef for vortex_array::arrays::slice::SliceArray +pub fn vortex_array::builders::BoolBuilder::reserve_exact(&mut self, additional: usize) -pub fn vortex_array::arrays::slice::SliceArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::builders::BoolBuilder::set_validity(&mut self, validity: vortex_mask::Mask) -impl core::convert::From for vortex_array::ArrayRef +pub unsafe fn vortex_array::builders::BoolBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::slice::SliceArray) -> vortex_array::ArrayRef +pub struct vortex_array::builders::DecimalBuilder -impl core::fmt::Debug for vortex_array::arrays::slice::SliceArray +impl vortex_array::builders::DecimalBuilder -pub fn vortex_array::arrays::slice::SliceArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::builders::DecimalBuilder::append_n_values(&mut self, value: V, n: usize) -impl core::ops::deref::Deref for vortex_array::arrays::slice::SliceArray +pub fn vortex_array::builders::DecimalBuilder::append_value(&mut self, value: V) -pub type vortex_array::arrays::slice::SliceArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::builders::DecimalBuilder::decimal_dtype(&self) -> &vortex_array::dtype::DecimalDType -pub fn vortex_array::arrays::slice::SliceArray::deref(&self) -> &Self::Target +pub fn vortex_array::builders::DecimalBuilder::finish_into_decimal(&mut self) -> vortex_array::arrays::DecimalArray -impl vortex_array::IntoArray for vortex_array::arrays::slice::SliceArray +pub fn vortex_array::builders::DecimalBuilder::new(decimal: vortex_array::dtype::DecimalDType, nullability: vortex_array::dtype::Nullability) -> Self -pub fn vortex_array::arrays::slice::SliceArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::builders::DecimalBuilder::with_capacity(capacity: usize, decimal: vortex_array::dtype::DecimalDType, nullability: vortex_array::dtype::Nullability) -> Self -pub struct vortex_array::arrays::Struct +impl vortex_array::builders::ArrayBuilder for vortex_array::builders::DecimalBuilder -impl vortex_array::arrays::Struct +pub fn vortex_array::builders::DecimalBuilder::append_default(&mut self) -pub const vortex_array::arrays::Struct::ID: vortex_array::vtable::ArrayId +pub fn vortex_array::builders::DecimalBuilder::append_defaults(&mut self, n: usize) -impl core::clone::Clone for vortex_array::arrays::Struct +pub fn vortex_array::builders::DecimalBuilder::append_null(&mut self) -pub fn vortex_array::arrays::Struct::clone(&self) -> vortex_array::arrays::Struct +pub fn vortex_array::builders::DecimalBuilder::append_nulls(&mut self, n: usize) -impl core::fmt::Debug for vortex_array::arrays::Struct +pub unsafe fn vortex_array::builders::DecimalBuilder::append_nulls_unchecked(&mut self, n: usize) -pub fn vortex_array::arrays::Struct::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::builders::DecimalBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> -impl vortex_array::arrays::dict::TakeReduce for vortex_array::arrays::Struct +pub fn vortex_array::builders::DecimalBuilder::append_zero(&mut self) -pub fn vortex_array::arrays::Struct::take(array: &vortex_array::arrays::StructArray, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::builders::DecimalBuilder::append_zeros(&mut self, n: usize) -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::Struct +pub fn vortex_array::builders::DecimalBuilder::as_any(&self) -> &dyn core::any::Any -pub fn vortex_array::arrays::Struct::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::builders::DecimalBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any -impl vortex_array::scalar_fn::fns::cast::CastKernel for vortex_array::arrays::Struct +pub fn vortex_array::builders::DecimalBuilder::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::Struct::cast(array: &vortex_array::arrays::StructArray, dtype: &vortex_array::dtype::DType, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::builders::DecimalBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Struct +pub unsafe fn vortex_array::builders::DecimalBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::arrays::Struct::mask(array: &vortex_array::arrays::StructArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::builders::DecimalBuilder::finish(&mut self) -> vortex_array::ArrayRef -impl vortex_array::scalar_fn::fns::zip::ZipKernel for vortex_array::arrays::Struct +pub fn vortex_array::builders::DecimalBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical -pub fn vortex_array::arrays::Struct::zip(if_true: &vortex_array::arrays::StructArray, if_false: &vortex_array::ArrayRef, mask: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::builders::DecimalBuilder::is_empty(&self) -> bool -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Struct +pub fn vortex_array::builders::DecimalBuilder::len(&self) -> usize -pub fn vortex_array::arrays::Struct::scalar_at(array: &vortex_array::arrays::StructArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::builders::DecimalBuilder::reserve_exact(&mut self, additional: usize) -impl vortex_array::vtable::VTable for vortex_array::arrays::Struct +pub fn vortex_array::builders::DecimalBuilder::set_validity(&mut self, validity: vortex_mask::Mask) -pub type vortex_array::arrays::Struct::Array = vortex_array::arrays::StructArray +pub unsafe fn vortex_array::builders::DecimalBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) -pub type vortex_array::arrays::Struct::Metadata = vortex_array::EmptyMetadata +pub struct vortex_array::builders::DeduplicatedBuffers -pub type vortex_array::arrays::Struct::OperationsVTable = vortex_array::arrays::Struct +impl core::default::Default for vortex_array::builders::DeduplicatedBuffers -pub type vortex_array::arrays::Struct::ValidityVTable = vortex_array::arrays::Struct +pub fn vortex_array::builders::DeduplicatedBuffers::default() -> vortex_array::builders::DeduplicatedBuffers -pub fn vortex_array::arrays::Struct::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub struct vortex_array::builders::ExtensionBuilder -pub fn vortex_array::arrays::Struct::array_eq(array: &vortex_array::arrays::StructArray, other: &vortex_array::arrays::StructArray, precision: vortex_array::Precision) -> bool +impl vortex_array::builders::ExtensionBuilder -pub fn vortex_array::arrays::Struct::array_hash(array: &vortex_array::arrays::StructArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::builders::ExtensionBuilder::append_value(&mut self, value: vortex_array::scalar::ExtScalar<'_>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Struct::buffer(_array: &vortex_array::arrays::StructArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::builders::ExtensionBuilder::finish_into_extension(&mut self) -> vortex_array::arrays::ExtensionArray -pub fn vortex_array::arrays::Struct::buffer_name(_array: &vortex_array::arrays::StructArray, idx: usize) -> core::option::Option +pub fn vortex_array::builders::ExtensionBuilder::new(ext_dtype: vortex_array::dtype::extension::ExtDTypeRef) -> Self -pub fn vortex_array::arrays::Struct::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::builders::ExtensionBuilder::with_capacity(ext_dtype: vortex_array::dtype::extension::ExtDTypeRef, capacity: usize) -> Self -pub fn vortex_array::arrays::Struct::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +impl vortex_array::builders::ArrayBuilder for vortex_array::builders::ExtensionBuilder -pub fn vortex_array::arrays::Struct::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::builders::ExtensionBuilder::append_default(&mut self) -pub fn vortex_array::arrays::Struct::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::builders::ExtensionBuilder::append_defaults(&mut self, n: usize) -pub fn vortex_array::arrays::Struct::dtype(array: &vortex_array::arrays::StructArray) -> &vortex_array::dtype::DType +pub fn vortex_array::builders::ExtensionBuilder::append_null(&mut self) -pub fn vortex_array::arrays::Struct::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::builders::ExtensionBuilder::append_nulls(&mut self, n: usize) -pub fn vortex_array::arrays::Struct::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub unsafe fn vortex_array::builders::ExtensionBuilder::append_nulls_unchecked(&mut self, n: usize) -pub fn vortex_array::arrays::Struct::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::builders::ExtensionBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Struct::len(array: &vortex_array::arrays::StructArray) -> usize +pub fn vortex_array::builders::ExtensionBuilder::append_zero(&mut self) -pub fn vortex_array::arrays::Struct::metadata(_array: &vortex_array::arrays::StructArray) -> vortex_error::VortexResult +pub fn vortex_array::builders::ExtensionBuilder::append_zeros(&mut self, n: usize) -pub fn vortex_array::arrays::Struct::nbuffers(_array: &vortex_array::arrays::StructArray) -> usize +pub fn vortex_array::builders::ExtensionBuilder::as_any(&self) -> &dyn core::any::Any -pub fn vortex_array::arrays::Struct::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::builders::ExtensionBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any -pub fn vortex_array::arrays::Struct::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::builders::ExtensionBuilder::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::Struct::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::builders::ExtensionBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::arrays::Struct::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub unsafe fn vortex_array::builders::ExtensionBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::arrays::Struct::slot_name(array: &vortex_array::arrays::StructArray, idx: usize) -> alloc::string::String +pub fn vortex_array::builders::ExtensionBuilder::finish(&mut self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Struct::slots(array: &vortex_array::arrays::StructArray) -> &[core::option::Option] +pub fn vortex_array::builders::ExtensionBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical -pub fn vortex_array::arrays::Struct::stats(array: &vortex_array::arrays::StructArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::builders::ExtensionBuilder::is_empty(&self) -> bool -pub fn vortex_array::arrays::Struct::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::builders::ExtensionBuilder::len(&self) -> usize -pub fn vortex_array::arrays::Struct::with_slots(array: &mut vortex_array::arrays::StructArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::builders::ExtensionBuilder::reserve_exact(&mut self, capacity: usize) -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Struct +pub fn vortex_array::builders::ExtensionBuilder::set_validity(&mut self, validity: vortex_mask::Mask) -pub fn vortex_array::arrays::Struct::validity(array: &vortex_array::arrays::StructArray) -> vortex_error::VortexResult +pub unsafe fn vortex_array::builders::ExtensionBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) -pub struct vortex_array::arrays::StructArray +pub struct vortex_array::builders::FixedSizeListBuilder -impl vortex_array::arrays::StructArray +impl vortex_array::builders::FixedSizeListBuilder -pub fn vortex_array::arrays::StructArray::from_fields>(items: &[(N, vortex_array::ArrayRef)]) -> vortex_error::VortexResult +pub fn vortex_array::builders::FixedSizeListBuilder::append_array_as_list(&mut self, array: &vortex_array::ArrayRef) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::StructArray::into_fields(self) -> alloc::vec::Vec +pub fn vortex_array::builders::FixedSizeListBuilder::append_value(&mut self, value: vortex_array::scalar::ListScalar<'_>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::StructArray::into_parts(self) -> vortex_array::arrays::struct_::StructArrayParts +pub fn vortex_array::builders::FixedSizeListBuilder::element_dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::StructArray::iter_unmasked_fields(&self) -> impl core::iter::traits::iterator::Iterator + '_ +pub fn vortex_array::builders::FixedSizeListBuilder::finish_into_fixed_size_list(&mut self) -> vortex_array::arrays::FixedSizeListArray -pub fn vortex_array::arrays::StructArray::names(&self) -> &vortex_array::dtype::FieldNames +pub fn vortex_array::builders::FixedSizeListBuilder::list_size(&self) -> u32 -pub fn vortex_array::arrays::StructArray::new(names: vortex_array::dtype::FieldNames, fields: impl core::convert::Into>, length: usize, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::builders::FixedSizeListBuilder::new(element_dtype: alloc::sync::Arc, list_size: u32, nullability: vortex_array::dtype::Nullability) -> Self -pub fn vortex_array::arrays::StructArray::new_fieldless_with_len(len: usize) -> Self +pub fn vortex_array::builders::FixedSizeListBuilder::with_capacity(element_dtype: alloc::sync::Arc, list_size: u32, nullability: vortex_array::dtype::Nullability, capacity: usize) -> Self -pub unsafe fn vortex_array::arrays::StructArray::new_unchecked(fields: impl core::convert::Into>, dtype: vortex_array::dtype::StructFields, length: usize, validity: vortex_array::validity::Validity) -> Self +impl vortex_array::builders::ArrayBuilder for vortex_array::builders::FixedSizeListBuilder -pub fn vortex_array::arrays::StructArray::project(&self, projection: &[vortex_array::dtype::FieldName]) -> vortex_error::VortexResult +pub fn vortex_array::builders::FixedSizeListBuilder::append_default(&mut self) -pub fn vortex_array::arrays::StructArray::remove_column(&mut self, name: impl core::convert::Into) -> core::option::Option +pub fn vortex_array::builders::FixedSizeListBuilder::append_defaults(&mut self, n: usize) -pub fn vortex_array::arrays::StructArray::struct_fields(&self) -> &vortex_array::dtype::StructFields +pub fn vortex_array::builders::FixedSizeListBuilder::append_null(&mut self) -pub fn vortex_array::arrays::StructArray::try_from_iter, A: vortex_array::IntoArray, T: core::iter::traits::collect::IntoIterator>(iter: T) -> vortex_error::VortexResult +pub fn vortex_array::builders::FixedSizeListBuilder::append_nulls(&mut self, n: usize) -pub fn vortex_array::arrays::StructArray::try_from_iter_with_validity, A: vortex_array::IntoArray, T: core::iter::traits::collect::IntoIterator>(iter: T, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +pub unsafe fn vortex_array::builders::FixedSizeListBuilder::append_nulls_unchecked(&mut self, n: usize) -pub fn vortex_array::arrays::StructArray::try_new(names: vortex_array::dtype::FieldNames, fields: impl core::convert::Into>, length: usize, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +pub fn vortex_array::builders::FixedSizeListBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::StructArray::try_new_with_dtype(fields: impl core::convert::Into>, dtype: vortex_array::dtype::StructFields, length: usize, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +pub fn vortex_array::builders::FixedSizeListBuilder::append_zero(&mut self) -pub fn vortex_array::arrays::StructArray::unmasked_field(&self, idx: usize) -> &vortex_array::ArrayRef +pub fn vortex_array::builders::FixedSizeListBuilder::append_zeros(&mut self, n: usize) -pub fn vortex_array::arrays::StructArray::unmasked_field_by_name(&self, name: impl core::convert::AsRef) -> vortex_error::VortexResult<&vortex_array::ArrayRef> +pub fn vortex_array::builders::FixedSizeListBuilder::as_any(&self) -> &dyn core::any::Any -pub fn vortex_array::arrays::StructArray::unmasked_field_by_name_opt(&self, name: impl core::convert::AsRef) -> core::option::Option<&vortex_array::ArrayRef> +pub fn vortex_array::builders::FixedSizeListBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any -pub fn vortex_array::arrays::StructArray::unmasked_fields(&self) -> alloc::sync::Arc<[vortex_array::ArrayRef]> +pub fn vortex_array::builders::FixedSizeListBuilder::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::StructArray::validate(fields: &[vortex_array::ArrayRef], dtype: &vortex_array::dtype::StructFields, length: usize, validity: &vortex_array::validity::Validity) -> vortex_error::VortexResult<()> +pub fn vortex_array::builders::FixedSizeListBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::arrays::StructArray::validity(&self) -> vortex_array::validity::Validity +pub unsafe fn vortex_array::builders::FixedSizeListBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::arrays::StructArray::with_column(&self, name: impl core::convert::Into, array: vortex_array::ArrayRef) -> vortex_error::VortexResult +pub fn vortex_array::builders::FixedSizeListBuilder::finish(&mut self) -> vortex_array::ArrayRef -impl vortex_array::arrays::StructArray +pub fn vortex_array::builders::FixedSizeListBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical -pub fn vortex_array::arrays::StructArray::into_record_batch_with_schema(self, schema: impl core::convert::AsRef) -> vortex_error::VortexResult +pub fn vortex_array::builders::FixedSizeListBuilder::is_empty(&self) -> bool -impl vortex_array::arrays::StructArray +pub fn vortex_array::builders::FixedSizeListBuilder::len(&self) -> usize -pub fn vortex_array::arrays::StructArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::builders::FixedSizeListBuilder::reserve_exact(&mut self, additional: usize) -impl core::clone::Clone for vortex_array::arrays::StructArray +pub fn vortex_array::builders::FixedSizeListBuilder::set_validity(&mut self, validity: vortex_mask::Mask) -pub fn vortex_array::arrays::StructArray::clone(&self) -> vortex_array::arrays::StructArray +pub unsafe fn vortex_array::builders::FixedSizeListBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) -impl core::convert::AsRef for vortex_array::arrays::StructArray +pub struct vortex_array::builders::ListBuilder -pub fn vortex_array::arrays::StructArray::as_ref(&self) -> &dyn vortex_array::DynArray +impl vortex_array::builders::ListBuilder -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::builders::ListBuilder::append_array_as_list(&mut self, array: &vortex_array::ArrayRef) -> vortex_error::VortexResult<()> -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::StructArray) -> vortex_array::ArrayRef +pub fn vortex_array::builders::ListBuilder::append_value(&mut self, value: vortex_array::scalar::ListScalar<'_>) -> vortex_error::VortexResult<()> -impl core::fmt::Debug for vortex_array::arrays::StructArray +pub fn vortex_array::builders::ListBuilder::element_dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::StructArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::builders::ListBuilder::finish_into_list(&mut self) -> vortex_array::arrays::ListArray -impl core::ops::deref::Deref for vortex_array::arrays::StructArray +pub fn vortex_array::builders::ListBuilder::new(value_dtype: alloc::sync::Arc, nullability: vortex_array::dtype::Nullability) -> Self -pub type vortex_array::arrays::StructArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::builders::ListBuilder::with_capacity(value_dtype: alloc::sync::Arc, nullability: vortex_array::dtype::Nullability, elements_capacity: usize, capacity: usize) -> Self -pub fn vortex_array::arrays::StructArray::deref(&self) -> &Self::Target +impl vortex_array::builders::ArrayBuilder for vortex_array::builders::ListBuilder -impl vortex_array::Executable for vortex_array::arrays::StructArray +pub fn vortex_array::builders::ListBuilder::append_default(&mut self) -pub fn vortex_array::arrays::StructArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::builders::ListBuilder::append_defaults(&mut self, n: usize) -impl vortex_array::IntoArray for vortex_array::arrays::StructArray +pub fn vortex_array::builders::ListBuilder::append_null(&mut self) -pub fn vortex_array::arrays::StructArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::builders::ListBuilder::append_nulls(&mut self, n: usize) -pub struct vortex_array::arrays::TemporalArray +pub unsafe fn vortex_array::builders::ListBuilder::append_nulls_unchecked(&mut self, n: usize) -impl vortex_array::arrays::datetime::TemporalArray +pub fn vortex_array::builders::ListBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::datetime::TemporalArray::dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_array::builders::ListBuilder::append_zero(&mut self) -pub fn vortex_array::arrays::datetime::TemporalArray::ext_dtype(&self) -> vortex_array::dtype::extension::ExtDTypeRef +pub fn vortex_array::builders::ListBuilder::append_zeros(&mut self, n: usize) -pub fn vortex_array::arrays::datetime::TemporalArray::temporal_metadata(&self) -> vortex_array::extension::datetime::TemporalMetadata<'_> +pub fn vortex_array::builders::ListBuilder::as_any(&self) -> &dyn core::any::Any -pub fn vortex_array::arrays::datetime::TemporalArray::temporal_values(&self) -> &vortex_array::ArrayRef +pub fn vortex_array::builders::ListBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any -impl vortex_array::arrays::datetime::TemporalArray +pub fn vortex_array::builders::ListBuilder::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::datetime::TemporalArray::new_date(array: vortex_array::ArrayRef, time_unit: vortex_array::extension::datetime::TimeUnit) -> Self +pub fn vortex_array::builders::ListBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::arrays::datetime::TemporalArray::new_time(array: vortex_array::ArrayRef, time_unit: vortex_array::extension::datetime::TimeUnit) -> Self +pub unsafe fn vortex_array::builders::ListBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::arrays::datetime::TemporalArray::new_timestamp(array: vortex_array::ArrayRef, time_unit: vortex_array::extension::datetime::TimeUnit, time_zone: core::option::Option>) -> Self +pub fn vortex_array::builders::ListBuilder::finish(&mut self) -> vortex_array::ArrayRef -impl core::clone::Clone for vortex_array::arrays::datetime::TemporalArray +pub fn vortex_array::builders::ListBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical -pub fn vortex_array::arrays::datetime::TemporalArray::clone(&self) -> vortex_array::arrays::datetime::TemporalArray +pub fn vortex_array::builders::ListBuilder::is_empty(&self) -> bool -impl core::convert::AsRef for vortex_array::arrays::datetime::TemporalArray +pub fn vortex_array::builders::ListBuilder::len(&self) -> usize -pub fn vortex_array::arrays::datetime::TemporalArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::builders::ListBuilder::reserve_exact(&mut self, additional: usize) -impl core::convert::From<&vortex_array::arrays::datetime::TemporalArray> for vortex_array::arrays::ExtensionArray +pub fn vortex_array::builders::ListBuilder::set_validity(&mut self, validity: vortex_mask::Mask) -pub fn vortex_array::arrays::ExtensionArray::from(value: &vortex_array::arrays::datetime::TemporalArray) -> Self +pub unsafe fn vortex_array::builders::ListBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) -impl core::convert::From for vortex_array::ArrayRef +pub struct vortex_array::builders::ListViewBuilder -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::datetime::TemporalArray) -> Self +impl vortex_array::builders::ListViewBuilder -impl core::convert::From for vortex_array::arrays::ExtensionArray +pub fn vortex_array::builders::ListViewBuilder::append_array_as_list(&mut self, array: &vortex_array::ArrayRef) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::ExtensionArray::from(value: vortex_array::arrays::datetime::TemporalArray) -> Self +pub fn vortex_array::builders::ListViewBuilder::append_value(&mut self, value: vortex_array::scalar::ListScalar<'_>) -> vortex_error::VortexResult<()> -impl core::convert::TryFrom> for vortex_array::arrays::datetime::TemporalArray +pub fn vortex_array::builders::ListViewBuilder::element_dtype(&self) -> &vortex_array::dtype::DType -pub type vortex_array::arrays::datetime::TemporalArray::Error = vortex_error::VortexError +pub fn vortex_array::builders::ListViewBuilder::finish_into_listview(&mut self) -> vortex_array::arrays::ListViewArray -pub fn vortex_array::arrays::datetime::TemporalArray::try_from(value: vortex_array::ArrayRef) -> core::result::Result +pub fn vortex_array::builders::ListViewBuilder::new(element_dtype: alloc::sync::Arc, nullability: vortex_array::dtype::Nullability) -> Self -impl core::convert::TryFrom for vortex_array::arrays::datetime::TemporalArray +pub fn vortex_array::builders::ListViewBuilder::with_capacity(element_dtype: alloc::sync::Arc, nullability: vortex_array::dtype::Nullability, elements_capacity: usize, capacity: usize) -> Self -pub type vortex_array::arrays::datetime::TemporalArray::Error = vortex_error::VortexError +impl vortex_array::builders::ArrayBuilder for vortex_array::builders::ListViewBuilder -pub fn vortex_array::arrays::datetime::TemporalArray::try_from(ext: vortex_array::arrays::ExtensionArray) -> core::result::Result +pub fn vortex_array::builders::ListViewBuilder::append_default(&mut self) -impl core::fmt::Debug for vortex_array::arrays::datetime::TemporalArray +pub fn vortex_array::builders::ListViewBuilder::append_defaults(&mut self, n: usize) -pub fn vortex_array::arrays::datetime::TemporalArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::builders::ListViewBuilder::append_null(&mut self) -impl vortex_array::IntoArray for vortex_array::arrays::datetime::TemporalArray +pub fn vortex_array::builders::ListViewBuilder::append_nulls(&mut self, n: usize) -pub fn vortex_array::arrays::datetime::TemporalArray::into_array(self) -> vortex_array::ArrayRef +pub unsafe fn vortex_array::builders::ListViewBuilder::append_nulls_unchecked(&mut self, n: usize) -pub struct vortex_array::arrays::VarBin +pub fn vortex_array::builders::ListViewBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> -impl vortex_array::arrays::VarBin +pub fn vortex_array::builders::ListViewBuilder::append_zero(&mut self) -pub const vortex_array::arrays::VarBin::ID: vortex_array::vtable::ArrayId +pub fn vortex_array::builders::ListViewBuilder::append_zeros(&mut self, n: usize) -impl vortex_array::arrays::VarBin +pub fn vortex_array::builders::ListViewBuilder::as_any(&self) -> &dyn core::any::Any -pub fn vortex_array::arrays::VarBin::_slice(array: &vortex_array::arrays::VarBinArray, range: core::ops::range::Range) -> vortex_error::VortexResult +pub fn vortex_array::builders::ListViewBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any -impl core::clone::Clone for vortex_array::arrays::VarBin +pub fn vortex_array::builders::ListViewBuilder::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::VarBin::clone(&self) -> vortex_array::arrays::VarBin +pub fn vortex_array::builders::ListViewBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) -impl core::fmt::Debug for vortex_array::arrays::VarBin +pub unsafe fn vortex_array::builders::ListViewBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::arrays::VarBin::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::builders::ListViewBuilder::finish(&mut self) -> vortex_array::ArrayRef -impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::VarBin +pub fn vortex_array::builders::ListViewBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical -pub fn vortex_array::arrays::VarBin::take(array: &vortex_array::arrays::VarBinArray, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::builders::ListViewBuilder::is_empty(&self) -> bool -impl vortex_array::arrays::filter::FilterKernel for vortex_array::arrays::VarBin +pub fn vortex_array::builders::ListViewBuilder::len(&self) -> usize -pub fn vortex_array::arrays::VarBin::filter(array: &vortex_array::arrays::VarBinArray, mask: &vortex_mask::Mask, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::builders::ListViewBuilder::reserve_exact(&mut self, capacity: usize) -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::VarBin +pub fn vortex_array::builders::ListViewBuilder::set_validity(&mut self, validity: vortex_mask::Mask) -pub fn vortex_array::arrays::VarBin::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub unsafe fn vortex_array::builders::ListViewBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) -impl vortex_array::scalar_fn::fns::binary::CompareKernel for vortex_array::arrays::VarBin +pub struct vortex_array::builders::NullBuilder -pub fn vortex_array::arrays::VarBin::compare(lhs: &vortex_array::arrays::VarBinArray, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::builders::NullBuilder -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::VarBin +pub fn vortex_array::builders::NullBuilder::new() -> Self -pub fn vortex_array::arrays::VarBin::cast(array: &vortex_array::arrays::VarBinArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +impl core::default::Default for vortex_array::builders::NullBuilder -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::VarBin +pub fn vortex_array::builders::NullBuilder::default() -> Self -pub fn vortex_array::arrays::VarBin::mask(array: &vortex_array::arrays::VarBinArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +impl vortex_array::builders::ArrayBuilder for vortex_array::builders::NullBuilder -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::VarBin +pub fn vortex_array::builders::NullBuilder::append_default(&mut self) -pub fn vortex_array::arrays::VarBin::scalar_at(array: &vortex_array::arrays::VarBinArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::builders::NullBuilder::append_defaults(&mut self, n: usize) -impl vortex_array::vtable::VTable for vortex_array::arrays::VarBin +pub fn vortex_array::builders::NullBuilder::append_null(&mut self) -pub type vortex_array::arrays::VarBin::Array = vortex_array::arrays::VarBinArray +pub fn vortex_array::builders::NullBuilder::append_nulls(&mut self, n: usize) -pub type vortex_array::arrays::VarBin::Metadata = vortex_array::ProstMetadata +pub unsafe fn vortex_array::builders::NullBuilder::append_nulls_unchecked(&mut self, n: usize) -pub type vortex_array::arrays::VarBin::OperationsVTable = vortex_array::arrays::VarBin +pub fn vortex_array::builders::NullBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> -pub type vortex_array::arrays::VarBin::ValidityVTable = vortex_array::arrays::VarBin +pub fn vortex_array::builders::NullBuilder::append_zero(&mut self) -pub fn vortex_array::arrays::VarBin::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::builders::NullBuilder::append_zeros(&mut self, n: usize) -pub fn vortex_array::arrays::VarBin::array_eq(array: &vortex_array::arrays::VarBinArray, other: &vortex_array::arrays::VarBinArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::builders::NullBuilder::as_any(&self) -> &dyn core::any::Any -pub fn vortex_array::arrays::VarBin::array_hash(array: &vortex_array::arrays::VarBinArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::builders::NullBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any -pub fn vortex_array::arrays::VarBin::buffer(array: &vortex_array::arrays::VarBinArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::builders::NullBuilder::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::VarBin::buffer_name(_array: &vortex_array::arrays::VarBinArray, idx: usize) -> core::option::Option +pub fn vortex_array::builders::NullBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::arrays::VarBin::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub unsafe fn vortex_array::builders::NullBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::arrays::VarBin::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::builders::NullBuilder::finish(&mut self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::VarBin::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::builders::NullBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical -pub fn vortex_array::arrays::VarBin::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::builders::NullBuilder::is_empty(&self) -> bool -pub fn vortex_array::arrays::VarBin::dtype(array: &vortex_array::arrays::VarBinArray) -> &vortex_array::dtype::DType +pub fn vortex_array::builders::NullBuilder::len(&self) -> usize -pub fn vortex_array::arrays::VarBin::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::builders::NullBuilder::reserve_exact(&mut self, _additional: usize) -pub fn vortex_array::arrays::VarBin::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::builders::NullBuilder::set_validity(&mut self, validity: vortex_mask::Mask) -pub fn vortex_array::arrays::VarBin::id(&self) -> vortex_array::vtable::ArrayId +pub unsafe fn vortex_array::builders::NullBuilder::set_validity_unchecked(&mut self, _validity: vortex_mask::Mask) -pub fn vortex_array::arrays::VarBin::len(array: &vortex_array::arrays::VarBinArray) -> usize +pub struct vortex_array::builders::PrimitiveBuilder -pub fn vortex_array::arrays::VarBin::metadata(array: &vortex_array::arrays::VarBinArray) -> vortex_error::VortexResult +impl vortex_array::builders::PrimitiveBuilder -pub fn vortex_array::arrays::VarBin::nbuffers(_array: &vortex_array::arrays::VarBinArray) -> usize +pub fn vortex_array::builders::PrimitiveBuilder::append_n_values(&mut self, value: T, n: usize) -pub fn vortex_array::arrays::VarBin::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::builders::PrimitiveBuilder::append_value(&mut self, value: T) -pub fn vortex_array::arrays::VarBin::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::builders::PrimitiveBuilder::extend_with_iterator(&mut self, iter: impl core::iter::traits::collect::IntoIterator, mask: vortex_mask::Mask) -pub fn vortex_array::arrays::VarBin::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::builders::PrimitiveBuilder::finish_into_primitive(&mut self) -> vortex_array::arrays::PrimitiveArray -pub fn vortex_array::arrays::VarBin::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::builders::PrimitiveBuilder::new(nullability: vortex_array::dtype::Nullability) -> Self -pub fn vortex_array::arrays::VarBin::slot_name(_array: &vortex_array::arrays::VarBinArray, idx: usize) -> alloc::string::String +pub fn vortex_array::builders::PrimitiveBuilder::uninit_range(&mut self, len: usize) -> vortex_array::builders::UninitRange<'_, T> -pub fn vortex_array::arrays::VarBin::slots(array: &vortex_array::arrays::VarBinArray) -> &[core::option::Option] +pub fn vortex_array::builders::PrimitiveBuilder::values(&self) -> &[T] -pub fn vortex_array::arrays::VarBin::stats(array: &vortex_array::arrays::VarBinArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::builders::PrimitiveBuilder::values_mut(&mut self) -> &mut [T] -pub fn vortex_array::arrays::VarBin::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::builders::PrimitiveBuilder::with_capacity(nullability: vortex_array::dtype::Nullability, capacity: usize) -> Self -pub fn vortex_array::arrays::VarBin::with_slots(array: &mut vortex_array::arrays::VarBinArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +impl vortex_array::builders::ArrayBuilder for vortex_array::builders::PrimitiveBuilder -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::VarBin +pub fn vortex_array::builders::PrimitiveBuilder::append_default(&mut self) -pub fn vortex_array::arrays::VarBin::validity(array: &vortex_array::arrays::VarBinArray) -> vortex_error::VortexResult +pub fn vortex_array::builders::PrimitiveBuilder::append_defaults(&mut self, n: usize) -pub struct vortex_array::arrays::VarBinArray +pub fn vortex_array::builders::PrimitiveBuilder::append_null(&mut self) -impl vortex_array::arrays::VarBinArray +pub fn vortex_array::builders::PrimitiveBuilder::append_nulls(&mut self, n: usize) -pub fn vortex_array::arrays::VarBinArray::bytes(&self) -> &vortex_buffer::ByteBuffer +pub unsafe fn vortex_array::builders::PrimitiveBuilder::append_nulls_unchecked(&mut self, n: usize) -pub fn vortex_array::arrays::VarBinArray::bytes_at(&self, index: usize) -> vortex_buffer::ByteBuffer +pub fn vortex_array::builders::PrimitiveBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::VarBinArray::bytes_handle(&self) -> &vortex_array::buffer::BufferHandle +pub fn vortex_array::builders::PrimitiveBuilder::append_zero(&mut self) -pub fn vortex_array::arrays::VarBinArray::from_iter, I: core::iter::traits::collect::IntoIterator>>(iter: I, dtype: vortex_array::dtype::DType) -> Self +pub fn vortex_array::builders::PrimitiveBuilder::append_zeros(&mut self, n: usize) -pub fn vortex_array::arrays::VarBinArray::from_iter_nonnull, I: core::iter::traits::collect::IntoIterator>(iter: I, dtype: vortex_array::dtype::DType) -> Self +pub fn vortex_array::builders::PrimitiveBuilder::as_any(&self) -> &dyn core::any::Any -pub fn vortex_array::arrays::VarBinArray::from_vec>(vec: alloc::vec::Vec, dtype: vortex_array::dtype::DType) -> Self +pub fn vortex_array::builders::PrimitiveBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any -pub fn vortex_array::arrays::VarBinArray::into_parts(self) -> (vortex_array::dtype::DType, vortex_array::buffer::BufferHandle, vortex_array::ArrayRef, vortex_array::validity::Validity) +pub fn vortex_array::builders::PrimitiveBuilder::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::VarBinArray::new(offsets: vortex_array::ArrayRef, bytes: vortex_buffer::ByteBuffer, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::builders::PrimitiveBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::arrays::VarBinArray::new_from_handle(offset: vortex_array::ArrayRef, bytes: vortex_array::buffer::BufferHandle, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self +pub unsafe fn vortex_array::builders::PrimitiveBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) -pub unsafe fn vortex_array::arrays::VarBinArray::new_unchecked(offsets: vortex_array::ArrayRef, bytes: vortex_buffer::ByteBuffer, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::builders::PrimitiveBuilder::finish(&mut self) -> vortex_array::ArrayRef -pub unsafe fn vortex_array::arrays::VarBinArray::new_unchecked_from_handle(offsets: vortex_array::ArrayRef, bytes: vortex_array::buffer::BufferHandle, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::builders::PrimitiveBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical -pub fn vortex_array::arrays::VarBinArray::offset_at(&self, index: usize) -> usize +pub fn vortex_array::builders::PrimitiveBuilder::is_empty(&self) -> bool -pub fn vortex_array::arrays::VarBinArray::offsets(&self) -> &vortex_array::ArrayRef +pub fn vortex_array::builders::PrimitiveBuilder::len(&self) -> usize -pub fn vortex_array::arrays::VarBinArray::sliced_bytes(&self) -> vortex_buffer::ByteBuffer +pub fn vortex_array::builders::PrimitiveBuilder::reserve_exact(&mut self, additional: usize) -pub fn vortex_array::arrays::VarBinArray::try_new(offsets: vortex_array::ArrayRef, bytes: vortex_buffer::ByteBuffer, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +pub fn vortex_array::builders::PrimitiveBuilder::set_validity(&mut self, validity: vortex_mask::Mask) -pub fn vortex_array::arrays::VarBinArray::try_new_from_handle(offsets: vortex_array::ArrayRef, bytes: vortex_array::buffer::BufferHandle, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +pub unsafe fn vortex_array::builders::PrimitiveBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) -pub fn vortex_array::arrays::VarBinArray::validate(offsets: &vortex_array::ArrayRef, bytes: &vortex_array::buffer::BufferHandle, dtype: &vortex_array::dtype::DType, validity: &vortex_array::validity::Validity) -> vortex_error::VortexResult<()> +pub struct vortex_array::builders::StructBuilder -pub fn vortex_array::arrays::VarBinArray::validity(&self) -> vortex_array::validity::Validity +impl vortex_array::builders::StructBuilder -impl vortex_array::arrays::VarBinArray +pub fn vortex_array::builders::StructBuilder::append_value(&mut self, struct_scalar: vortex_array::scalar::StructScalar<'_>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::VarBinArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::builders::StructBuilder::finish_into_struct(&mut self) -> vortex_array::arrays::StructArray -impl core::clone::Clone for vortex_array::arrays::VarBinArray +pub fn vortex_array::builders::StructBuilder::new(struct_dtype: vortex_array::dtype::StructFields, nullability: vortex_array::dtype::Nullability) -> Self -pub fn vortex_array::arrays::VarBinArray::clone(&self) -> vortex_array::arrays::VarBinArray +pub fn vortex_array::builders::StructBuilder::struct_fields(&self) -> &vortex_array::dtype::StructFields -impl core::convert::AsRef for vortex_array::arrays::VarBinArray +pub fn vortex_array::builders::StructBuilder::with_capacity(struct_dtype: vortex_array::dtype::StructFields, nullability: vortex_array::dtype::Nullability, capacity: usize) -> Self -pub fn vortex_array::arrays::VarBinArray::as_ref(&self) -> &dyn vortex_array::DynArray +impl vortex_array::builders::ArrayBuilder for vortex_array::builders::StructBuilder -impl core::convert::From> for vortex_array::arrays::VarBinArray +pub fn vortex_array::builders::StructBuilder::append_default(&mut self) -pub fn vortex_array::arrays::VarBinArray::from(value: alloc::vec::Vec<&[u8]>) -> Self +pub fn vortex_array::builders::StructBuilder::append_defaults(&mut self, n: usize) -impl core::convert::From> for vortex_array::arrays::VarBinArray +pub fn vortex_array::builders::StructBuilder::append_null(&mut self) -pub fn vortex_array::arrays::VarBinArray::from(value: alloc::vec::Vec<&str>) -> Self +pub fn vortex_array::builders::StructBuilder::append_nulls(&mut self, n: usize) -impl core::convert::From> for vortex_array::arrays::VarBinArray +pub unsafe fn vortex_array::builders::StructBuilder::append_nulls_unchecked(&mut self, n: usize) -pub fn vortex_array::arrays::VarBinArray::from(value: alloc::vec::Vec) -> Self +pub fn vortex_array::builders::StructBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> -impl core::convert::From>> for vortex_array::arrays::VarBinArray +pub fn vortex_array::builders::StructBuilder::append_zero(&mut self) -pub fn vortex_array::arrays::VarBinArray::from(value: alloc::vec::Vec>) -> Self +pub fn vortex_array::builders::StructBuilder::append_zeros(&mut self, n: usize) -impl core::convert::From>> for vortex_array::arrays::VarBinArray +pub fn vortex_array::builders::StructBuilder::as_any(&self) -> &dyn core::any::Any -pub fn vortex_array::arrays::VarBinArray::from(value: alloc::vec::Vec>) -> Self +pub fn vortex_array::builders::StructBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any -impl core::convert::From>> for vortex_array::arrays::VarBinArray +pub fn vortex_array::builders::StructBuilder::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::VarBinArray::from(value: alloc::vec::Vec>) -> Self +pub fn vortex_array::builders::StructBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) -impl core::convert::From>> for vortex_array::arrays::VarBinArray +pub unsafe fn vortex_array::builders::StructBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::arrays::VarBinArray::from(value: alloc::vec::Vec>) -> Self +pub fn vortex_array::builders::StructBuilder::finish(&mut self) -> vortex_array::ArrayRef -impl core::convert::From>>> for vortex_array::arrays::VarBinArray +pub fn vortex_array::builders::StructBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical -pub fn vortex_array::arrays::VarBinArray::from(value: alloc::vec::Vec>>) -> Self +pub fn vortex_array::builders::StructBuilder::is_empty(&self) -> bool -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::builders::StructBuilder::len(&self) -> usize -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::VarBinArray) -> vortex_array::ArrayRef +pub fn vortex_array::builders::StructBuilder::reserve_exact(&mut self, capacity: usize) -impl core::fmt::Debug for vortex_array::arrays::VarBinArray +pub fn vortex_array::builders::StructBuilder::set_validity(&mut self, validity: vortex_mask::Mask) -pub fn vortex_array::arrays::VarBinArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub unsafe fn vortex_array::builders::StructBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) -impl core::iter::traits::collect::FromIterator> for vortex_array::arrays::VarBinArray +pub struct vortex_array::builders::UninitRange<'a, T> -pub fn vortex_array::arrays::VarBinArray::from_iter>>(iter: T) -> Self +impl vortex_array::builders::UninitRange<'_, T> -impl core::iter::traits::collect::FromIterator>> for vortex_array::arrays::VarBinArray +pub unsafe fn vortex_array::builders::UninitRange<'_, T>::append_mask(&mut self, mask: vortex_mask::Mask) -pub fn vortex_array::arrays::VarBinArray::from_iter>>>(iter: T) -> Self +pub fn vortex_array::builders::UninitRange<'_, T>::copy_from_slice(&mut self, local_offset: usize, src: &[T]) where T: core::marker::Copy -impl core::ops::deref::Deref for vortex_array::arrays::VarBinArray +pub unsafe fn vortex_array::builders::UninitRange<'_, T>::finish(self) -pub type vortex_array::arrays::VarBinArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::builders::UninitRange<'_, T>::is_empty(&self) -> bool -pub fn vortex_array::arrays::VarBinArray::deref(&self) -> &Self::Target +pub fn vortex_array::builders::UninitRange<'_, T>::len(&self) -> usize -impl vortex_array::IntoArray for vortex_array::arrays::VarBinArray +pub fn vortex_array::builders::UninitRange<'_, T>::set_validity_bit(&mut self, index: usize, v: bool) -pub fn vortex_array::arrays::VarBinArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::builders::UninitRange<'_, T>::set_value(&mut self, index: usize, value: T) -impl vortex_array::accessor::ArrayAccessor<[u8]> for &vortex_array::arrays::VarBinArray +pub unsafe fn vortex_array::builders::UninitRange<'_, T>::slice_uninit_mut(&mut self, offset: usize, len: usize) -> &mut [core::mem::maybe_uninit::MaybeUninit] -pub fn &vortex_array::arrays::VarBinArray::with_iterator(&self, f: F) -> R where F: for<'a> core::ops::function::FnOnce(&mut dyn core::iter::traits::iterator::Iterator>) -> R +pub struct vortex_array::builders::VarBinViewBuilder -impl vortex_array::accessor::ArrayAccessor<[u8]> for vortex_array::arrays::VarBinArray +impl vortex_array::builders::VarBinViewBuilder -pub fn vortex_array::arrays::VarBinArray::with_iterator(&self, f: F) -> R where F: for<'a> core::ops::function::FnOnce(&mut dyn core::iter::traits::iterator::Iterator>) -> R +pub fn vortex_array::builders::VarBinViewBuilder::append_n_values>(&mut self, value: S, n: usize) -impl<'a> core::iter::traits::collect::FromIterator> for vortex_array::arrays::VarBinArray +pub fn vortex_array::builders::VarBinViewBuilder::append_value>(&mut self, value: S) -pub fn vortex_array::arrays::VarBinArray::from_iter>>(iter: T) -> Self +pub fn vortex_array::builders::VarBinViewBuilder::completed_block_count(&self) -> u32 -impl<'a> core::iter::traits::collect::FromIterator> for vortex_array::arrays::VarBinArray +pub fn vortex_array::builders::VarBinViewBuilder::finish_into_varbinview(&mut self) -> vortex_array::arrays::VarBinViewArray -pub fn vortex_array::arrays::VarBinArray::from_iter>>(iter: T) -> Self +pub fn vortex_array::builders::VarBinViewBuilder::new(dtype: vortex_array::dtype::DType, capacity: usize, completed: vortex_array::builders::CompletedBuffers, growth_strategy: vortex_array::builders::BufferGrowthStrategy, compaction_threshold: f64) -> Self -pub struct vortex_array::arrays::VarBinView +pub fn vortex_array::builders::VarBinViewBuilder::push_buffer_and_adjusted_views(&mut self, buffers: &[vortex_buffer::ByteBuffer], views: &vortex_buffer::buffer::Buffer, validity_mask: vortex_mask::Mask) -impl vortex_array::arrays::VarBinView +pub fn vortex_array::builders::VarBinViewBuilder::with_buffer_deduplication(dtype: vortex_array::dtype::DType, capacity: usize) -> Self -pub const vortex_array::arrays::VarBinView::ID: vortex_array::vtable::ArrayId +pub fn vortex_array::builders::VarBinViewBuilder::with_capacity(dtype: vortex_array::dtype::DType, capacity: usize) -> Self -impl core::clone::Clone for vortex_array::arrays::VarBinView +pub fn vortex_array::builders::VarBinViewBuilder::with_compaction(dtype: vortex_array::dtype::DType, capacity: usize, compaction_threshold: f64) -> Self -pub fn vortex_array::arrays::VarBinView::clone(&self) -> vortex_array::arrays::VarBinView +impl vortex_array::builders::ArrayBuilder for vortex_array::builders::VarBinViewBuilder -impl core::fmt::Debug for vortex_array::arrays::VarBinView +pub fn vortex_array::builders::VarBinViewBuilder::append_default(&mut self) -pub fn vortex_array::arrays::VarBinView::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::builders::VarBinViewBuilder::append_defaults(&mut self, n: usize) -impl vortex_array::arrays::dict::TakeExecute for vortex_array::arrays::VarBinView +pub fn vortex_array::builders::VarBinViewBuilder::append_null(&mut self) -pub fn vortex_array::arrays::VarBinView::take(array: &vortex_array::arrays::VarBinViewArray, indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::builders::VarBinViewBuilder::append_nulls(&mut self, n: usize) -impl vortex_array::arrays::slice::SliceReduce for vortex_array::arrays::VarBinView +pub unsafe fn vortex_array::builders::VarBinViewBuilder::append_nulls_unchecked(&mut self, n: usize) -pub fn vortex_array::arrays::VarBinView::slice(array: &Self::Array, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::builders::VarBinViewBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::VarBinView +pub fn vortex_array::builders::VarBinViewBuilder::append_zero(&mut self) -pub fn vortex_array::arrays::VarBinView::cast(array: &vortex_array::arrays::VarBinViewArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_array::builders::VarBinViewBuilder::append_zeros(&mut self, n: usize) -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::VarBinView +pub fn vortex_array::builders::VarBinViewBuilder::as_any(&self) -> &dyn core::any::Any -pub fn vortex_array::arrays::VarBinView::mask(array: &vortex_array::arrays::VarBinViewArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::builders::VarBinViewBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any -impl vortex_array::scalar_fn::fns::zip::ZipKernel for vortex_array::arrays::VarBinView +pub fn vortex_array::builders::VarBinViewBuilder::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::VarBinView::zip(if_true: &vortex_array::arrays::VarBinViewArray, if_false: &vortex_array::ArrayRef, mask: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::builders::VarBinViewBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::VarBinView +pub unsafe fn vortex_array::builders::VarBinViewBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::arrays::VarBinView::scalar_at(array: &vortex_array::arrays::VarBinViewArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::builders::VarBinViewBuilder::finish(&mut self) -> vortex_array::ArrayRef -impl vortex_array::vtable::VTable for vortex_array::arrays::VarBinView +pub fn vortex_array::builders::VarBinViewBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical -pub type vortex_array::arrays::VarBinView::Array = vortex_array::arrays::VarBinViewArray +pub fn vortex_array::builders::VarBinViewBuilder::is_empty(&self) -> bool -pub type vortex_array::arrays::VarBinView::Metadata = vortex_array::EmptyMetadata +pub fn vortex_array::builders::VarBinViewBuilder::len(&self) -> usize -pub type vortex_array::arrays::VarBinView::OperationsVTable = vortex_array::arrays::VarBinView +pub fn vortex_array::builders::VarBinViewBuilder::reserve_exact(&mut self, additional: usize) -pub type vortex_array::arrays::VarBinView::ValidityVTable = vortex_array::arrays::VarBinView +pub fn vortex_array::builders::VarBinViewBuilder::set_validity(&mut self, validity: vortex_mask::Mask) -pub fn vortex_array::arrays::VarBinView::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub unsafe fn vortex_array::builders::VarBinViewBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) -pub fn vortex_array::arrays::VarBinView::array_eq(array: &vortex_array::arrays::VarBinViewArray, other: &vortex_array::arrays::VarBinViewArray, precision: vortex_array::Precision) -> bool +pub const vortex_array::builders::DEFAULT_BUILDER_CAPACITY: usize -pub fn vortex_array::arrays::VarBinView::array_hash(array: &vortex_array::arrays::VarBinViewArray, state: &mut H, precision: vortex_array::Precision) +pub trait vortex_array::builders::ArrayBuilder: core::marker::Send -pub fn vortex_array::arrays::VarBinView::buffer(array: &vortex_array::arrays::VarBinViewArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::builders::ArrayBuilder::append_default(&mut self) -pub fn vortex_array::arrays::VarBinView::buffer_name(array: &vortex_array::arrays::VarBinViewArray, idx: usize) -> core::option::Option +pub fn vortex_array::builders::ArrayBuilder::append_defaults(&mut self, n: usize) -pub fn vortex_array::arrays::VarBinView::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::builders::ArrayBuilder::append_null(&mut self) -pub fn vortex_array::arrays::VarBinView::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::builders::ArrayBuilder::append_nulls(&mut self, n: usize) -pub fn vortex_array::arrays::VarBinView::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub unsafe fn vortex_array::builders::ArrayBuilder::append_nulls_unchecked(&mut self, n: usize) -pub fn vortex_array::arrays::VarBinView::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::builders::ArrayBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::VarBinView::dtype(array: &vortex_array::arrays::VarBinViewArray) -> &vortex_array::dtype::DType +pub fn vortex_array::builders::ArrayBuilder::append_zero(&mut self) -pub fn vortex_array::arrays::VarBinView::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::builders::ArrayBuilder::append_zeros(&mut self, n: usize) -pub fn vortex_array::arrays::VarBinView::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::builders::ArrayBuilder::as_any(&self) -> &dyn core::any::Any -pub fn vortex_array::arrays::VarBinView::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::builders::ArrayBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any -pub fn vortex_array::arrays::VarBinView::len(array: &vortex_array::arrays::VarBinViewArray) -> usize +pub fn vortex_array::builders::ArrayBuilder::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::VarBinView::metadata(_array: &vortex_array::arrays::VarBinViewArray) -> vortex_error::VortexResult +pub fn vortex_array::builders::ArrayBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::arrays::VarBinView::nbuffers(array: &vortex_array::arrays::VarBinViewArray) -> usize +pub unsafe fn vortex_array::builders::ArrayBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::arrays::VarBinView::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::builders::ArrayBuilder::finish(&mut self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::VarBinView::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::builders::ArrayBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical -pub fn vortex_array::arrays::VarBinView::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::builders::ArrayBuilder::is_empty(&self) -> bool -pub fn vortex_array::arrays::VarBinView::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::builders::ArrayBuilder::len(&self) -> usize -pub fn vortex_array::arrays::VarBinView::slot_name(_array: &vortex_array::arrays::VarBinViewArray, idx: usize) -> alloc::string::String +pub fn vortex_array::builders::ArrayBuilder::reserve_exact(&mut self, additional: usize) -pub fn vortex_array::arrays::VarBinView::slots(array: &vortex_array::arrays::VarBinViewArray) -> &[core::option::Option] +pub fn vortex_array::builders::ArrayBuilder::set_validity(&mut self, validity: vortex_mask::Mask) -pub fn vortex_array::arrays::VarBinView::stats(array: &vortex_array::arrays::VarBinViewArray) -> vortex_array::stats::StatsSetRef<'_> +pub unsafe fn vortex_array::builders::ArrayBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) -pub fn vortex_array::arrays::VarBinView::vtable(_array: &Self::Array) -> &Self +impl vortex_array::builders::ArrayBuilder for vortex_array::builders::BoolBuilder -pub fn vortex_array::arrays::VarBinView::with_slots(array: &mut vortex_array::arrays::VarBinViewArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::builders::BoolBuilder::append_default(&mut self) -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::VarBinView +pub fn vortex_array::builders::BoolBuilder::append_defaults(&mut self, n: usize) -pub fn vortex_array::arrays::VarBinView::validity(array: &vortex_array::arrays::VarBinViewArray) -> vortex_error::VortexResult +pub fn vortex_array::builders::BoolBuilder::append_null(&mut self) -pub struct vortex_array::arrays::VarBinViewArray +pub fn vortex_array::builders::BoolBuilder::append_nulls(&mut self, n: usize) -impl vortex_array::arrays::VarBinViewArray +pub unsafe fn vortex_array::builders::BoolBuilder::append_nulls_unchecked(&mut self, n: usize) -pub fn vortex_array::arrays::VarBinViewArray::buffer(&self, idx: usize) -> &vortex_buffer::ByteBuffer +pub fn vortex_array::builders::BoolBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::VarBinViewArray::buffers(&self) -> &alloc::sync::Arc<[vortex_array::buffer::BufferHandle]> +pub fn vortex_array::builders::BoolBuilder::append_zero(&mut self) -pub fn vortex_array::arrays::VarBinViewArray::bytes_at(&self, index: usize) -> vortex_buffer::ByteBuffer +pub fn vortex_array::builders::BoolBuilder::append_zeros(&mut self, n: usize) -pub fn vortex_array::arrays::VarBinViewArray::from_iter, I: core::iter::traits::collect::IntoIterator>>(iter: I, dtype: vortex_array::dtype::DType) -> Self +pub fn vortex_array::builders::BoolBuilder::as_any(&self) -> &dyn core::any::Any -pub fn vortex_array::arrays::VarBinViewArray::from_iter_bin, I: core::iter::traits::collect::IntoIterator>(iter: I) -> Self +pub fn vortex_array::builders::BoolBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any -pub fn vortex_array::arrays::VarBinViewArray::from_iter_nullable_bin, I: core::iter::traits::collect::IntoIterator>>(iter: I) -> Self +pub fn vortex_array::builders::BoolBuilder::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::VarBinViewArray::from_iter_nullable_str, I: core::iter::traits::collect::IntoIterator>>(iter: I) -> Self +pub fn vortex_array::builders::BoolBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::arrays::VarBinViewArray::from_iter_str, I: core::iter::traits::collect::IntoIterator>(iter: I) -> Self +pub unsafe fn vortex_array::builders::BoolBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::arrays::VarBinViewArray::into_parts(self) -> vortex_array::arrays::varbinview::VarBinViewArrayParts +pub fn vortex_array::builders::BoolBuilder::finish(&mut self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::VarBinViewArray::nbuffers(&self) -> usize +pub fn vortex_array::builders::BoolBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical -pub fn vortex_array::arrays::VarBinViewArray::new(views: vortex_buffer::buffer::Buffer, buffers: alloc::sync::Arc<[vortex_buffer::ByteBuffer]>, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::builders::BoolBuilder::is_empty(&self) -> bool -pub fn vortex_array::arrays::VarBinViewArray::new_handle(views: vortex_array::buffer::BufferHandle, buffers: alloc::sync::Arc<[vortex_array::buffer::BufferHandle]>, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::builders::BoolBuilder::len(&self) -> usize -pub unsafe fn vortex_array::arrays::VarBinViewArray::new_handle_unchecked(views: vortex_array::buffer::BufferHandle, buffers: alloc::sync::Arc<[vortex_array::buffer::BufferHandle]>, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::builders::BoolBuilder::reserve_exact(&mut self, additional: usize) -pub unsafe fn vortex_array::arrays::VarBinViewArray::new_unchecked(views: vortex_buffer::buffer::Buffer, buffers: alloc::sync::Arc<[vortex_buffer::ByteBuffer]>, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self +pub fn vortex_array::builders::BoolBuilder::set_validity(&mut self, validity: vortex_mask::Mask) -pub fn vortex_array::arrays::VarBinViewArray::try_new(views: vortex_buffer::buffer::Buffer, buffers: alloc::sync::Arc<[vortex_buffer::ByteBuffer]>, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +pub unsafe fn vortex_array::builders::BoolBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) -pub fn vortex_array::arrays::VarBinViewArray::try_new_handle(views: vortex_array::buffer::BufferHandle, buffers: alloc::sync::Arc<[vortex_array::buffer::BufferHandle]>, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult +impl vortex_array::builders::ArrayBuilder for vortex_array::builders::DecimalBuilder -pub fn vortex_array::arrays::VarBinViewArray::validate(views: &vortex_buffer::buffer::Buffer, buffers: &alloc::sync::Arc<[vortex_buffer::ByteBuffer]>, dtype: &vortex_array::dtype::DType, validity: &vortex_array::validity::Validity) -> vortex_error::VortexResult<()> +pub fn vortex_array::builders::DecimalBuilder::append_default(&mut self) -pub fn vortex_array::arrays::VarBinViewArray::validity(&self) -> vortex_array::validity::Validity +pub fn vortex_array::builders::DecimalBuilder::append_defaults(&mut self, n: usize) -pub fn vortex_array::arrays::VarBinViewArray::views(&self) -> &[vortex_array::arrays::varbinview::BinaryView] +pub fn vortex_array::builders::DecimalBuilder::append_null(&mut self) -pub fn vortex_array::arrays::VarBinViewArray::views_handle(&self) -> &vortex_array::buffer::BufferHandle +pub fn vortex_array::builders::DecimalBuilder::append_nulls(&mut self, n: usize) -impl vortex_array::arrays::VarBinViewArray +pub unsafe fn vortex_array::builders::DecimalBuilder::append_nulls_unchecked(&mut self, n: usize) -pub fn vortex_array::arrays::VarBinViewArray::compact_buffers(&self) -> vortex_error::VortexResult +pub fn vortex_array::builders::DecimalBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::VarBinViewArray::compact_with_threshold(&self, buffer_utilization_threshold: f64) -> vortex_error::VortexResult +pub fn vortex_array::builders::DecimalBuilder::append_zero(&mut self) -impl vortex_array::arrays::VarBinViewArray +pub fn vortex_array::builders::DecimalBuilder::append_zeros(&mut self, n: usize) -pub fn vortex_array::arrays::VarBinViewArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::builders::DecimalBuilder::as_any(&self) -> &dyn core::any::Any -impl core::clone::Clone for vortex_array::arrays::VarBinViewArray +pub fn vortex_array::builders::DecimalBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any -pub fn vortex_array::arrays::VarBinViewArray::clone(&self) -> vortex_array::arrays::VarBinViewArray +pub fn vortex_array::builders::DecimalBuilder::dtype(&self) -> &vortex_array::dtype::DType -impl core::convert::AsRef for vortex_array::arrays::VarBinViewArray +pub fn vortex_array::builders::DecimalBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::arrays::VarBinViewArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub unsafe fn vortex_array::builders::DecimalBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::builders::DecimalBuilder::finish(&mut self) -> vortex_array::ArrayRef -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::VarBinViewArray) -> vortex_array::ArrayRef +pub fn vortex_array::builders::DecimalBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical -impl core::fmt::Debug for vortex_array::arrays::VarBinViewArray +pub fn vortex_array::builders::DecimalBuilder::is_empty(&self) -> bool -pub fn vortex_array::arrays::VarBinViewArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::builders::DecimalBuilder::len(&self) -> usize -impl core::iter::traits::collect::FromIterator> for vortex_array::arrays::VarBinViewArray +pub fn vortex_array::builders::DecimalBuilder::reserve_exact(&mut self, additional: usize) -pub fn vortex_array::arrays::VarBinViewArray::from_iter>>(iter: T) -> Self +pub fn vortex_array::builders::DecimalBuilder::set_validity(&mut self, validity: vortex_mask::Mask) -impl core::iter::traits::collect::FromIterator>> for vortex_array::arrays::VarBinViewArray +pub unsafe fn vortex_array::builders::DecimalBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) -pub fn vortex_array::arrays::VarBinViewArray::from_iter>>>(iter: T) -> Self +impl vortex_array::builders::ArrayBuilder for vortex_array::builders::ExtensionBuilder -impl core::ops::deref::Deref for vortex_array::arrays::VarBinViewArray +pub fn vortex_array::builders::ExtensionBuilder::append_default(&mut self) -pub type vortex_array::arrays::VarBinViewArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::builders::ExtensionBuilder::append_defaults(&mut self, n: usize) -pub fn vortex_array::arrays::VarBinViewArray::deref(&self) -> &Self::Target +pub fn vortex_array::builders::ExtensionBuilder::append_null(&mut self) -impl vortex_array::Executable for vortex_array::arrays::VarBinViewArray +pub fn vortex_array::builders::ExtensionBuilder::append_nulls(&mut self, n: usize) -pub fn vortex_array::arrays::VarBinViewArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub unsafe fn vortex_array::builders::ExtensionBuilder::append_nulls_unchecked(&mut self, n: usize) -impl vortex_array::IntoArray for vortex_array::arrays::VarBinViewArray +pub fn vortex_array::builders::ExtensionBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::VarBinViewArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::builders::ExtensionBuilder::append_zero(&mut self) -impl vortex_array::accessor::ArrayAccessor<[u8]> for &vortex_array::arrays::VarBinViewArray +pub fn vortex_array::builders::ExtensionBuilder::append_zeros(&mut self, n: usize) -pub fn &vortex_array::arrays::VarBinViewArray::with_iterator(&self, f: F) -> R where F: for<'a> core::ops::function::FnOnce(&mut dyn core::iter::traits::iterator::Iterator>) -> R +pub fn vortex_array::builders::ExtensionBuilder::as_any(&self) -> &dyn core::any::Any -impl vortex_array::accessor::ArrayAccessor<[u8]> for vortex_array::arrays::VarBinViewArray +pub fn vortex_array::builders::ExtensionBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any -pub fn vortex_array::arrays::VarBinViewArray::with_iterator core::ops::function::FnOnce(&mut dyn core::iter::traits::iterator::Iterator>) -> R, R>(&self, f: F) -> R +pub fn vortex_array::builders::ExtensionBuilder::dtype(&self) -> &vortex_array::dtype::DType -impl<'a> core::iter::traits::collect::FromIterator> for vortex_array::arrays::VarBinViewArray +pub fn vortex_array::builders::ExtensionBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::arrays::VarBinViewArray::from_iter>>(iter: T) -> Self +pub unsafe fn vortex_array::builders::ExtensionBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) -impl<'a> core::iter::traits::collect::FromIterator> for vortex_array::arrays::VarBinViewArray +pub fn vortex_array::builders::ExtensionBuilder::finish(&mut self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::VarBinViewArray::from_iter>>(iter: T) -> Self +pub fn vortex_array::builders::ExtensionBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical -pub struct vortex_array::arrays::Variant +pub fn vortex_array::builders::ExtensionBuilder::is_empty(&self) -> bool -impl vortex_array::arrays::Variant +pub fn vortex_array::builders::ExtensionBuilder::len(&self) -> usize -pub const vortex_array::arrays::Variant::ID: vortex_array::vtable::ArrayId +pub fn vortex_array::builders::ExtensionBuilder::reserve_exact(&mut self, capacity: usize) -impl core::clone::Clone for vortex_array::arrays::Variant +pub fn vortex_array::builders::ExtensionBuilder::set_validity(&mut self, validity: vortex_mask::Mask) -pub fn vortex_array::arrays::Variant::clone(&self) -> vortex_array::arrays::Variant +pub unsafe fn vortex_array::builders::ExtensionBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) -impl core::fmt::Debug for vortex_array::arrays::Variant +impl vortex_array::builders::ArrayBuilder for vortex_array::builders::FixedSizeListBuilder -pub fn vortex_array::arrays::Variant::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::builders::FixedSizeListBuilder::append_default(&mut self) -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Variant +pub fn vortex_array::builders::FixedSizeListBuilder::append_defaults(&mut self, n: usize) -pub fn vortex_array::arrays::Variant::scalar_at(array: &::Array, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::builders::FixedSizeListBuilder::append_null(&mut self) -impl vortex_array::vtable::VTable for vortex_array::arrays::Variant +pub fn vortex_array::builders::FixedSizeListBuilder::append_nulls(&mut self, n: usize) -pub type vortex_array::arrays::Variant::Array = vortex_array::arrays::variant::VariantArray +pub unsafe fn vortex_array::builders::FixedSizeListBuilder::append_nulls_unchecked(&mut self, n: usize) -pub type vortex_array::arrays::Variant::Metadata = vortex_array::EmptyMetadata +pub fn vortex_array::builders::FixedSizeListBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> -pub type vortex_array::arrays::Variant::OperationsVTable = vortex_array::arrays::Variant +pub fn vortex_array::builders::FixedSizeListBuilder::append_zero(&mut self) -pub type vortex_array::arrays::Variant::ValidityVTable = vortex_array::arrays::Variant +pub fn vortex_array::builders::FixedSizeListBuilder::append_zeros(&mut self, n: usize) -pub fn vortex_array::arrays::Variant::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::builders::FixedSizeListBuilder::as_any(&self) -> &dyn core::any::Any -pub fn vortex_array::arrays::Variant::array_eq(array: &Self::Array, other: &Self::Array, precision: vortex_array::Precision) -> bool +pub fn vortex_array::builders::FixedSizeListBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any -pub fn vortex_array::arrays::Variant::array_hash(array: &Self::Array, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::builders::FixedSizeListBuilder::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::Variant::buffer(_array: &Self::Array, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::builders::FixedSizeListBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::arrays::Variant::buffer_name(_array: &Self::Array, _idx: usize) -> core::option::Option +pub unsafe fn vortex_array::builders::FixedSizeListBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::arrays::Variant::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::builders::FixedSizeListBuilder::finish(&mut self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Variant::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::builders::FixedSizeListBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical -pub fn vortex_array::arrays::Variant::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::builders::FixedSizeListBuilder::is_empty(&self) -> bool -pub fn vortex_array::arrays::Variant::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::builders::FixedSizeListBuilder::len(&self) -> usize -pub fn vortex_array::arrays::Variant::dtype(array: &Self::Array) -> &vortex_array::dtype::DType +pub fn vortex_array::builders::FixedSizeListBuilder::reserve_exact(&mut self, additional: usize) -pub fn vortex_array::arrays::Variant::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::builders::FixedSizeListBuilder::set_validity(&mut self, validity: vortex_mask::Mask) -pub fn vortex_array::arrays::Variant::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub unsafe fn vortex_array::builders::FixedSizeListBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) -pub fn vortex_array::arrays::Variant::id(&self) -> vortex_array::vtable::ArrayId +impl vortex_array::builders::ArrayBuilder for vortex_array::builders::NullBuilder -pub fn vortex_array::arrays::Variant::len(array: &Self::Array) -> usize +pub fn vortex_array::builders::NullBuilder::append_default(&mut self) -pub fn vortex_array::arrays::Variant::metadata(_array: &Self::Array) -> vortex_error::VortexResult +pub fn vortex_array::builders::NullBuilder::append_defaults(&mut self, n: usize) -pub fn vortex_array::arrays::Variant::nbuffers(_array: &Self::Array) -> usize +pub fn vortex_array::builders::NullBuilder::append_null(&mut self) -pub fn vortex_array::arrays::Variant::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::builders::NullBuilder::append_nulls(&mut self, n: usize) -pub fn vortex_array::arrays::Variant::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub unsafe fn vortex_array::builders::NullBuilder::append_nulls_unchecked(&mut self, n: usize) -pub fn vortex_array::arrays::Variant::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::builders::NullBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Variant::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::builders::NullBuilder::append_zero(&mut self) -pub fn vortex_array::arrays::Variant::slot_name(_array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::builders::NullBuilder::append_zeros(&mut self, n: usize) -pub fn vortex_array::arrays::Variant::slots(array: &Self::Array) -> &[core::option::Option] +pub fn vortex_array::builders::NullBuilder::as_any(&self) -> &dyn core::any::Any -pub fn vortex_array::arrays::Variant::stats(array: &Self::Array) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::builders::NullBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any -pub fn vortex_array::arrays::Variant::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::builders::NullBuilder::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::Variant::with_slots(array: &mut Self::Array, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::builders::NullBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Variant +pub unsafe fn vortex_array::builders::NullBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::arrays::Variant::validity(array: &::Array) -> vortex_error::VortexResult +pub fn vortex_array::builders::NullBuilder::finish(&mut self) -> vortex_array::ArrayRef -pub struct vortex_array::arrays::VariantArray +pub fn vortex_array::builders::NullBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical -impl vortex_array::arrays::variant::VariantArray +pub fn vortex_array::builders::NullBuilder::is_empty(&self) -> bool -pub fn vortex_array::arrays::variant::VariantArray::child(&self) -> &vortex_array::ArrayRef +pub fn vortex_array::builders::NullBuilder::len(&self) -> usize -pub fn vortex_array::arrays::variant::VariantArray::new(child: vortex_array::ArrayRef) -> Self +pub fn vortex_array::builders::NullBuilder::reserve_exact(&mut self, _additional: usize) -impl vortex_array::arrays::variant::VariantArray +pub fn vortex_array::builders::NullBuilder::set_validity(&mut self, validity: vortex_mask::Mask) -pub fn vortex_array::arrays::variant::VariantArray::to_array(&self) -> vortex_array::ArrayRef +pub unsafe fn vortex_array::builders::NullBuilder::set_validity_unchecked(&mut self, _validity: vortex_mask::Mask) -impl core::clone::Clone for vortex_array::arrays::variant::VariantArray +impl vortex_array::builders::ArrayBuilder for vortex_array::builders::StructBuilder -pub fn vortex_array::arrays::variant::VariantArray::clone(&self) -> vortex_array::arrays::variant::VariantArray +pub fn vortex_array::builders::StructBuilder::append_default(&mut self) -impl core::convert::AsRef for vortex_array::arrays::variant::VariantArray +pub fn vortex_array::builders::StructBuilder::append_defaults(&mut self, n: usize) -pub fn vortex_array::arrays::variant::VariantArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::builders::StructBuilder::append_null(&mut self) -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::builders::StructBuilder::append_nulls(&mut self, n: usize) -pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::variant::VariantArray) -> vortex_array::ArrayRef +pub unsafe fn vortex_array::builders::StructBuilder::append_nulls_unchecked(&mut self, n: usize) -impl core::fmt::Debug for vortex_array::arrays::variant::VariantArray +pub fn vortex_array::builders::StructBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::variant::VariantArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::builders::StructBuilder::append_zero(&mut self) -impl core::ops::deref::Deref for vortex_array::arrays::variant::VariantArray +pub fn vortex_array::builders::StructBuilder::append_zeros(&mut self, n: usize) -pub type vortex_array::arrays::variant::VariantArray::Target = dyn vortex_array::DynArray +pub fn vortex_array::builders::StructBuilder::as_any(&self) -> &dyn core::any::Any -pub fn vortex_array::arrays::variant::VariantArray::deref(&self) -> &Self::Target +pub fn vortex_array::builders::StructBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any -impl vortex_array::IntoArray for vortex_array::arrays::variant::VariantArray +pub fn vortex_array::builders::StructBuilder::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::variant::VariantArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::builders::StructBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) -pub mod vortex_array::arrow +pub unsafe fn vortex_array::builders::StructBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) -pub mod vortex_array::arrow::bool +pub fn vortex_array::builders::StructBuilder::finish(&mut self) -> vortex_array::ArrayRef -pub fn vortex_array::arrow::bool::canonical_bool_to_arrow(array: &vortex_array::arrays::BoolArray) -> vortex_error::VortexResult +pub fn vortex_array::builders::StructBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical -pub mod vortex_array::arrow::byte_view +pub fn vortex_array::builders::StructBuilder::is_empty(&self) -> bool -pub fn vortex_array::arrow::byte_view::canonical_varbinview_to_arrow(array: &vortex_array::arrays::VarBinViewArray) -> vortex_error::VortexResult +pub fn vortex_array::builders::StructBuilder::len(&self) -> usize -pub fn vortex_array::arrow::byte_view::execute_varbinview_to_arrow(array: &vortex_array::arrays::VarBinViewArray, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::builders::StructBuilder::reserve_exact(&mut self, capacity: usize) -pub mod vortex_array::arrow::null +pub fn vortex_array::builders::StructBuilder::set_validity(&mut self, validity: vortex_mask::Mask) -pub fn vortex_array::arrow::null::canonical_null_to_arrow(array: &vortex_array::arrays::null::NullArray) -> arrow_array::array::ArrayRef +pub unsafe fn vortex_array::builders::StructBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) -pub mod vortex_array::arrow::primitive +impl vortex_array::builders::ArrayBuilder for vortex_array::builders::VarBinViewBuilder -pub fn vortex_array::arrow::primitive::canonical_primitive_to_arrow(array: vortex_array::arrays::PrimitiveArray) -> vortex_error::VortexResult where ::Native: vortex_array::dtype::NativePType +pub fn vortex_array::builders::VarBinViewBuilder::append_default(&mut self) -pub struct vortex_array::arrow::ArrowArrayStreamAdapter +pub fn vortex_array::builders::VarBinViewBuilder::append_defaults(&mut self, n: usize) -impl vortex_array::arrow::ArrowArrayStreamAdapter +pub fn vortex_array::builders::VarBinViewBuilder::append_null(&mut self) -pub fn vortex_array::arrow::ArrowArrayStreamAdapter::new(stream: arrow_array::ffi_stream::ArrowArrayStreamReader, dtype: vortex_array::dtype::DType) -> Self +pub fn vortex_array::builders::VarBinViewBuilder::append_nulls(&mut self, n: usize) -impl core::iter::traits::iterator::Iterator for vortex_array::arrow::ArrowArrayStreamAdapter +pub unsafe fn vortex_array::builders::VarBinViewBuilder::append_nulls_unchecked(&mut self, n: usize) -pub type vortex_array::arrow::ArrowArrayStreamAdapter::Item = core::result::Result, vortex_error::VortexError> +pub fn vortex_array::builders::VarBinViewBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrow::ArrowArrayStreamAdapter::next(&mut self) -> core::option::Option +pub fn vortex_array::builders::VarBinViewBuilder::append_zero(&mut self) -impl vortex_array::iter::ArrayIterator for vortex_array::arrow::ArrowArrayStreamAdapter +pub fn vortex_array::builders::VarBinViewBuilder::append_zeros(&mut self, n: usize) -pub fn vortex_array::arrow::ArrowArrayStreamAdapter::dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_array::builders::VarBinViewBuilder::as_any(&self) -> &dyn core::any::Any -pub struct vortex_array::arrow::Datum +pub fn vortex_array::builders::VarBinViewBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any -impl vortex_array::arrow::Datum +pub fn vortex_array::builders::VarBinViewBuilder::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrow::Datum::data_type(&self) -> &arrow_schema::datatype::DataType +pub fn vortex_array::builders::VarBinViewBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::arrow::Datum::try_new(array: &vortex_array::ArrayRef) -> vortex_error::VortexResult +pub unsafe fn vortex_array::builders::VarBinViewBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::arrow::Datum::try_new_array(array: &vortex_array::ArrayRef) -> vortex_error::VortexResult +pub fn vortex_array::builders::VarBinViewBuilder::finish(&mut self) -> vortex_array::ArrayRef -pub fn vortex_array::arrow::Datum::try_new_with_target_datatype(array: &vortex_array::ArrayRef, target_datatype: &arrow_schema::datatype::DataType) -> vortex_error::VortexResult +pub fn vortex_array::builders::VarBinViewBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical -impl arrow_array::scalar::Datum for vortex_array::arrow::Datum +pub fn vortex_array::builders::VarBinViewBuilder::is_empty(&self) -> bool -pub fn vortex_array::arrow::Datum::get(&self) -> (&dyn arrow_array::array::Array, bool) +pub fn vortex_array::builders::VarBinViewBuilder::len(&self) -> usize -impl core::fmt::Debug for vortex_array::arrow::Datum +pub fn vortex_array::builders::VarBinViewBuilder::reserve_exact(&mut self, additional: usize) -pub fn vortex_array::arrow::Datum::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::builders::VarBinViewBuilder::set_validity(&mut self, validity: vortex_mask::Mask) -pub trait vortex_array::arrow::ArrowArrayExecutor: core::marker::Sized +pub unsafe fn vortex_array::builders::VarBinViewBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) -pub fn vortex_array::arrow::ArrowArrayExecutor::execute_arrow(self, data_type: core::option::Option<&arrow_schema::datatype::DataType>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::builders::ArrayBuilder for vortex_array::builders::ListViewBuilder -pub fn vortex_array::arrow::ArrowArrayExecutor::execute_record_batch(self, schema: &arrow_schema::schema::Schema, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::builders::ListViewBuilder::append_default(&mut self) -pub fn vortex_array::arrow::ArrowArrayExecutor::execute_record_batches(self, schema: &arrow_schema::schema::Schema, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::builders::ListViewBuilder::append_defaults(&mut self, n: usize) -impl vortex_array::arrow::ArrowArrayExecutor for vortex_array::ArrayRef +pub fn vortex_array::builders::ListViewBuilder::append_null(&mut self) -pub fn vortex_array::ArrayRef::execute_arrow(self, data_type: core::option::Option<&arrow_schema::datatype::DataType>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::builders::ListViewBuilder::append_nulls(&mut self, n: usize) -pub fn vortex_array::ArrayRef::execute_record_batch(self, schema: &arrow_schema::schema::Schema, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub unsafe fn vortex_array::builders::ListViewBuilder::append_nulls_unchecked(&mut self, n: usize) -pub fn vortex_array::ArrayRef::execute_record_batches(self, schema: &arrow_schema::schema::Schema, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::builders::ListViewBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> -pub trait vortex_array::arrow::FromArrowArray +pub fn vortex_array::builders::ListViewBuilder::append_zero(&mut self) -pub fn vortex_array::arrow::FromArrowArray::from_arrow(array: A, nullable: bool) -> vortex_error::VortexResult where Self: core::marker::Sized +pub fn vortex_array::builders::ListViewBuilder::append_zeros(&mut self, n: usize) -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::boolean_array::BooleanArray> for vortex_array::ArrayRef +pub fn vortex_array::builders::ListViewBuilder::as_any(&self) -> &dyn core::any::Any -pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::boolean_array::BooleanArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::builders::ListViewBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::fixed_size_list_array::FixedSizeListArray> for vortex_array::ArrayRef +pub fn vortex_array::builders::ListViewBuilder::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::ArrayRef::from_arrow(array: &arrow_array::array::fixed_size_list_array::FixedSizeListArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::builders::ListViewBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::null_array::NullArray> for vortex_array::ArrayRef +pub unsafe fn vortex_array::builders::ListViewBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::null_array::NullArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::builders::ListViewBuilder::finish(&mut self) -> vortex_array::ArrayRef -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef +pub fn vortex_array::builders::ListViewBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical -pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::builders::ListViewBuilder::is_empty(&self) -> bool -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef +pub fn vortex_array::builders::ListViewBuilder::len(&self) -> usize -pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::builders::ListViewBuilder::reserve_exact(&mut self, capacity: usize) -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef +pub fn vortex_array::builders::ListViewBuilder::set_validity(&mut self, validity: vortex_mask::Mask) -pub fn vortex_array::ArrayRef::from_arrow(array: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult +pub unsafe fn vortex_array::builders::ListViewBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef +impl vortex_array::builders::ArrayBuilder for vortex_array::builders::ListBuilder -pub fn vortex_array::ArrayRef::from_arrow(array: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::builders::ListBuilder::append_default(&mut self) -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef +pub fn vortex_array::builders::ListBuilder::append_defaults(&mut self, n: usize) -pub fn vortex_array::ArrayRef::from_arrow(array: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::builders::ListBuilder::append_null(&mut self) -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef +pub fn vortex_array::builders::ListBuilder::append_nulls(&mut self, n: usize) -pub fn vortex_array::ArrayRef::from_arrow(array: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult +pub unsafe fn vortex_array::builders::ListBuilder::append_nulls_unchecked(&mut self, n: usize) -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef +pub fn vortex_array::builders::ListBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> -pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::builders::ListBuilder::append_zero(&mut self) -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef +pub fn vortex_array::builders::ListBuilder::append_zeros(&mut self, n: usize) -pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::builders::ListBuilder::as_any(&self) -> &dyn core::any::Any -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef +pub fn vortex_array::builders::ListBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any -pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::builders::ListBuilder::dtype(&self) -> &vortex_array::dtype::DType -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef +pub fn vortex_array::builders::ListBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult +pub unsafe fn vortex_array::builders::ListBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef +pub fn vortex_array::builders::ListBuilder::finish(&mut self) -> vortex_array::ArrayRef -pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::builders::ListBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef +pub fn vortex_array::builders::ListBuilder::is_empty(&self) -> bool -pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::builders::ListBuilder::len(&self) -> usize -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef +pub fn vortex_array::builders::ListBuilder::reserve_exact(&mut self, additional: usize) -pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::builders::ListBuilder::set_validity(&mut self, validity: vortex_mask::Mask) -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef +pub unsafe fn vortex_array::builders::ListBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) -pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult +impl vortex_array::builders::ArrayBuilder for vortex_array::builders::PrimitiveBuilder -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef +pub fn vortex_array::builders::PrimitiveBuilder::append_default(&mut self) -pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::builders::PrimitiveBuilder::append_defaults(&mut self, n: usize) -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef +pub fn vortex_array::builders::PrimitiveBuilder::append_null(&mut self) -pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::builders::PrimitiveBuilder::append_nulls(&mut self, n: usize) -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef +pub unsafe fn vortex_array::builders::PrimitiveBuilder::append_nulls_unchecked(&mut self, n: usize) -pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::builders::PrimitiveBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef +pub fn vortex_array::builders::PrimitiveBuilder::append_zero(&mut self) -pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::builders::PrimitiveBuilder::append_zeros(&mut self, n: usize) -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef +pub fn vortex_array::builders::PrimitiveBuilder::as_any(&self) -> &dyn core::any::Any -pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::builders::PrimitiveBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef +pub fn vortex_array::builders::PrimitiveBuilder::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::builders::PrimitiveBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef +pub unsafe fn vortex_array::builders::PrimitiveBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) -pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::builders::PrimitiveBuilder::finish(&mut self) -> vortex_array::ArrayRef -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef +pub fn vortex_array::builders::PrimitiveBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical -pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::builders::PrimitiveBuilder::is_empty(&self) -> bool -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef +pub fn vortex_array::builders::PrimitiveBuilder::len(&self) -> usize -pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::builders::PrimitiveBuilder::reserve_exact(&mut self, additional: usize) -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef +pub fn vortex_array::builders::PrimitiveBuilder::set_validity(&mut self, validity: vortex_mask::Mask) -pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult +pub unsafe fn vortex_array::builders::PrimitiveBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef +pub fn vortex_array::builders::builder_with_capacity(dtype: &vortex_array::dtype::DType, capacity: usize) -> alloc::boxed::Box -pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult +pub mod vortex_array::builtins -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::struct_array::StructArray> for vortex_array::ArrayRef +pub trait vortex_array::builtins::ArrayBuiltins: core::marker::Sized -pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::struct_array::StructArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::builtins::ArrayBuiltins::between(self, lower: vortex_array::ArrayRef, upper: vortex_array::ArrayRef, options: vortex_array::scalar_fn::fns::between::BetweenOptions) -> vortex_error::VortexResult -impl vortex_array::arrow::FromArrowArray<&arrow_array::record_batch::RecordBatch> for vortex_array::ArrayRef +pub fn vortex_array::builtins::ArrayBuiltins::binary(&self, rhs: vortex_array::ArrayRef, op: vortex_array::scalar_fn::fns::operators::Operator) -> vortex_error::VortexResult -pub fn vortex_array::ArrayRef::from_arrow(array: &arrow_array::record_batch::RecordBatch, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::builtins::ArrayBuiltins::cast(&self, dtype: vortex_array::dtype::DType) -> vortex_error::VortexResult -impl vortex_array::arrow::FromArrowArray<&dyn arrow_array::array::Array> for vortex_array::ArrayRef +pub fn vortex_array::builtins::ArrayBuiltins::fill_null(&self, fill_value: impl core::convert::Into) -> vortex_error::VortexResult -pub fn vortex_array::ArrayRef::from_arrow(array: &dyn arrow_array::array::Array, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::builtins::ArrayBuiltins::get_item(&self, field_name: impl core::convert::Into) -> vortex_error::VortexResult -impl vortex_array::arrow::FromArrowArray for vortex_array::ArrayRef +pub fn vortex_array::builtins::ArrayBuiltins::is_null(&self) -> vortex_error::VortexResult -pub fn vortex_array::ArrayRef::from_arrow(array: arrow_array::record_batch::RecordBatch, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::builtins::ArrayBuiltins::list_contains(&self, value: vortex_array::ArrayRef) -> vortex_error::VortexResult -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::dictionary_array::DictionaryArray> for vortex_array::arrays::dict::DictArray +pub fn vortex_array::builtins::ArrayBuiltins::mask(self, mask: vortex_array::ArrayRef) -> vortex_error::VortexResult -pub fn vortex_array::arrays::dict::DictArray::from_arrow(array: &arrow_array::array::dictionary_array::DictionaryArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::builtins::ArrayBuiltins::not(&self) -> vortex_error::VortexResult -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::list_view_array::GenericListViewArray> for vortex_array::ArrayRef +pub fn vortex_array::builtins::ArrayBuiltins::zip(&self, if_true: vortex_array::ArrayRef, if_false: vortex_array::ArrayRef) -> vortex_error::VortexResult -pub fn vortex_array::ArrayRef::from_arrow(array: &arrow_array::array::list_view_array::GenericListViewArray, nullable: bool) -> vortex_error::VortexResult +impl vortex_array::builtins::ArrayBuiltins for vortex_array::ArrayRef -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::list_array::GenericListArray> for vortex_array::ArrayRef +pub fn vortex_array::ArrayRef::between(self, lower: vortex_array::ArrayRef, upper: vortex_array::ArrayRef, options: vortex_array::scalar_fn::fns::between::BetweenOptions) -> vortex_error::VortexResult -pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::list_array::GenericListArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::binary(&self, rhs: vortex_array::ArrayRef, op: vortex_array::scalar_fn::fns::operators::Operator) -> vortex_error::VortexResult -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::byte_array::GenericByteArray> for vortex_array::ArrayRef where ::Offset: vortex_array::dtype::IntegerPType +pub fn vortex_array::ArrayRef::cast(&self, dtype: vortex_array::dtype::DType) -> vortex_error::VortexResult -pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::byte_array::GenericByteArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::fill_null(&self, fill_value: impl core::convert::Into) -> vortex_error::VortexResult -impl vortex_array::arrow::FromArrowArray<&arrow_array::array::byte_view_array::GenericByteViewArray> for vortex_array::ArrayRef +pub fn vortex_array::ArrayRef::get_item(&self, field_name: impl core::convert::Into) -> vortex_error::VortexResult -pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::byte_view_array::GenericByteViewArray, nullable: bool) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::is_null(&self) -> vortex_error::VortexResult -pub trait vortex_array::arrow::IntoArrowArray +pub fn vortex_array::ArrayRef::list_contains(&self, value: vortex_array::ArrayRef) -> vortex_error::VortexResult -pub fn vortex_array::arrow::IntoArrowArray::into_arrow(self, data_type: &arrow_schema::datatype::DataType) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::mask(self, mask: vortex_array::ArrayRef) -> vortex_error::VortexResult -pub fn vortex_array::arrow::IntoArrowArray::into_arrow_preferred(self) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::not(&self) -> vortex_error::VortexResult -impl vortex_array::arrow::IntoArrowArray for vortex_array::ArrayRef +pub fn vortex_array::ArrayRef::zip(&self, if_true: vortex_array::ArrayRef, if_false: vortex_array::ArrayRef) -> vortex_error::VortexResult -pub fn vortex_array::ArrayRef::into_arrow(self, data_type: &arrow_schema::datatype::DataType) -> vortex_error::VortexResult +pub trait vortex_array::builtins::ExprBuiltins: core::marker::Sized -pub fn vortex_array::ArrayRef::into_arrow_preferred(self) -> vortex_error::VortexResult +pub fn vortex_array::builtins::ExprBuiltins::binary(&self, rhs: vortex_array::expr::Expression, op: vortex_array::scalar_fn::fns::operators::Operator) -> vortex_error::VortexResult -pub fn vortex_array::arrow::from_arrow_array_with_len(array: A, len: usize, nullable: bool) -> vortex_error::VortexResult where vortex_array::ArrayRef: vortex_array::arrow::FromArrowArray +pub fn vortex_array::builtins::ExprBuiltins::cast(&self, dtype: vortex_array::dtype::DType) -> vortex_error::VortexResult -pub fn vortex_array::arrow::to_arrow_null_buffer(validity: vortex_array::validity::Validity, len: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::builtins::ExprBuiltins::fill_null(&self, fill_value: vortex_array::expr::Expression) -> vortex_error::VortexResult -pub fn vortex_array::arrow::to_null_buffer(mask: vortex_mask::Mask) -> core::option::Option +pub fn vortex_array::builtins::ExprBuiltins::get_item(&self, field_name: impl core::convert::Into) -> vortex_error::VortexResult -pub mod vortex_array::buffer +pub fn vortex_array::builtins::ExprBuiltins::is_null(&self) -> vortex_error::VortexResult -pub struct vortex_array::buffer::BufferHandle(_) +pub fn vortex_array::builtins::ExprBuiltins::list_contains(&self, value: vortex_array::expr::Expression) -> vortex_error::VortexResult -impl vortex_array::buffer::BufferHandle +pub fn vortex_array::builtins::ExprBuiltins::mask(&self, mask: vortex_array::expr::Expression) -> vortex_error::VortexResult -pub fn vortex_array::buffer::BufferHandle::alignment(&self) -> vortex_buffer::alignment::Alignment +pub fn vortex_array::builtins::ExprBuiltins::not(&self) -> vortex_error::VortexResult -pub fn vortex_array::buffer::BufferHandle::as_device(&self) -> &alloc::sync::Arc +pub fn vortex_array::builtins::ExprBuiltins::zip(&self, if_true: vortex_array::expr::Expression, if_false: vortex_array::expr::Expression) -> vortex_error::VortexResult -pub fn vortex_array::buffer::BufferHandle::as_device_opt(&self) -> core::option::Option<&alloc::sync::Arc> +impl vortex_array::builtins::ExprBuiltins for vortex_array::expr::Expression -pub fn vortex_array::buffer::BufferHandle::as_host(&self) -> &vortex_buffer::ByteBuffer +pub fn vortex_array::expr::Expression::binary(&self, rhs: vortex_array::expr::Expression, op: vortex_array::scalar_fn::fns::operators::Operator) -> vortex_error::VortexResult -pub fn vortex_array::buffer::BufferHandle::as_host_opt(&self) -> core::option::Option<&vortex_buffer::ByteBuffer> +pub fn vortex_array::expr::Expression::cast(&self, dtype: vortex_array::dtype::DType) -> vortex_error::VortexResult -pub fn vortex_array::buffer::BufferHandle::ensure_aligned(self, alignment: vortex_buffer::alignment::Alignment) -> vortex_error::VortexResult +pub fn vortex_array::expr::Expression::fill_null(&self, fill_value: vortex_array::expr::Expression) -> vortex_error::VortexResult -pub fn vortex_array::buffer::BufferHandle::into_host(self) -> futures_core::future::BoxFuture<'static, vortex_buffer::ByteBuffer> +pub fn vortex_array::expr::Expression::get_item(&self, field_name: impl core::convert::Into) -> vortex_error::VortexResult -pub fn vortex_array::buffer::BufferHandle::into_host_sync(self) -> vortex_buffer::ByteBuffer +pub fn vortex_array::expr::Expression::is_null(&self) -> vortex_error::VortexResult -pub fn vortex_array::buffer::BufferHandle::is_aligned_to(&self, alignment: vortex_buffer::alignment::Alignment) -> bool +pub fn vortex_array::expr::Expression::list_contains(&self, value: vortex_array::expr::Expression) -> vortex_error::VortexResult -pub fn vortex_array::buffer::BufferHandle::is_empty(&self) -> bool +pub fn vortex_array::expr::Expression::mask(&self, mask: vortex_array::expr::Expression) -> vortex_error::VortexResult -pub fn vortex_array::buffer::BufferHandle::is_on_device(&self) -> bool +pub fn vortex_array::expr::Expression::not(&self) -> vortex_error::VortexResult -pub fn vortex_array::buffer::BufferHandle::is_on_host(&self) -> bool +pub fn vortex_array::expr::Expression::zip(&self, if_true: vortex_array::expr::Expression, if_false: vortex_array::expr::Expression) -> vortex_error::VortexResult -pub fn vortex_array::buffer::BufferHandle::len(&self) -> usize +pub mod vortex_array::compute -pub fn vortex_array::buffer::BufferHandle::slice(&self, range: core::ops::range::Range) -> Self +pub mod vortex_array::display -pub fn vortex_array::buffer::BufferHandle::slice_typed(&self, range: core::ops::range::Range) -> Self +pub enum vortex_array::display::DisplayOptions -pub fn vortex_array::buffer::BufferHandle::to_host(&self) -> futures_core::future::BoxFuture<'static, vortex_buffer::ByteBuffer> +pub vortex_array::display::DisplayOptions::CommaSeparatedScalars -pub fn vortex_array::buffer::BufferHandle::to_host_sync(&self) -> vortex_buffer::ByteBuffer +pub vortex_array::display::DisplayOptions::CommaSeparatedScalars::omit_comma_after_space: bool -pub fn vortex_array::buffer::BufferHandle::try_into_host(self) -> vortex_error::VortexResult>> +pub vortex_array::display::DisplayOptions::MetadataOnly -pub fn vortex_array::buffer::BufferHandle::try_into_host_sync(self) -> vortex_error::VortexResult +pub vortex_array::display::DisplayOptions::TreeDisplay -pub fn vortex_array::buffer::BufferHandle::try_to_host(&self) -> vortex_error::VortexResult>> +pub vortex_array::display::DisplayOptions::TreeDisplay::buffers: bool -pub fn vortex_array::buffer::BufferHandle::try_to_host_sync(&self) -> vortex_error::VortexResult +pub vortex_array::display::DisplayOptions::TreeDisplay::metadata: bool -pub fn vortex_array::buffer::BufferHandle::unwrap_device(self) -> alloc::sync::Arc +pub vortex_array::display::DisplayOptions::TreeDisplay::stats: bool -pub fn vortex_array::buffer::BufferHandle::unwrap_host(self) -> vortex_buffer::ByteBuffer +impl core::default::Default for vortex_array::display::DisplayOptions -impl vortex_array::buffer::BufferHandle +pub fn vortex_array::display::DisplayOptions::default() -> Self -pub fn vortex_array::buffer::BufferHandle::new_device(device: alloc::sync::Arc) -> Self +pub struct vortex_array::display::BufferExtractor -pub fn vortex_array::buffer::BufferHandle::new_host(byte_buffer: vortex_buffer::ByteBuffer) -> Self +pub vortex_array::display::BufferExtractor::show_percent: bool -impl core::clone::Clone for vortex_array::buffer::BufferHandle +impl vortex_array::display::TreeExtractor for vortex_array::display::BufferExtractor -pub fn vortex_array::buffer::BufferHandle::clone(&self) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::display::BufferExtractor::write_details(&self, array: &vortex_array::ArrayRef, _ctx: &vortex_array::display::TreeContext, f: &mut vortex_array::display::IndentedFormatter<'_, '_>) -> core::fmt::Result -impl core::convert::TryFrom for vortex_array::serde::ArrayParts +pub fn vortex_array::display::BufferExtractor::write_header(&self, array: &vortex_array::ArrayRef, ctx: &vortex_array::display::TreeContext, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub type vortex_array::serde::ArrayParts::Error = vortex_error::VortexError +pub struct vortex_array::display::DisplayArrayAs<'a>(pub &'a vortex_array::ArrayRef, pub vortex_array::display::DisplayOptions) -pub fn vortex_array::serde::ArrayParts::try_from(value: vortex_array::buffer::BufferHandle) -> core::result::Result +impl core::fmt::Display for vortex_array::display::DisplayArrayAs<'_> -impl core::fmt::Debug for vortex_array::buffer::BufferHandle +pub fn vortex_array::display::DisplayArrayAs<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::buffer::BufferHandle::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub struct vortex_array::display::EncodingSummaryExtractor -impl vortex_array::ArrayEq for vortex_array::buffer::BufferHandle +impl vortex_array::display::EncodingSummaryExtractor -pub fn vortex_array::buffer::BufferHandle::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool +pub fn vortex_array::display::EncodingSummaryExtractor::write(array: &vortex_array::ArrayRef, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::ArrayHash for vortex_array::buffer::BufferHandle +impl vortex_array::display::TreeExtractor for vortex_array::display::EncodingSummaryExtractor -pub fn vortex_array::buffer::BufferHandle::array_hash(&self, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::display::EncodingSummaryExtractor::write_details(&self, array: &vortex_array::ArrayRef, ctx: &vortex_array::display::TreeContext, f: &mut vortex_array::display::IndentedFormatter<'_, '_>) -> core::fmt::Result -pub trait vortex_array::buffer::DeviceBuffer: 'static + core::marker::Send + core::marker::Sync + core::fmt::Debug + vortex_utils::dyn_traits::DynEq + vortex_utils::dyn_traits::DynHash +pub fn vortex_array::display::EncodingSummaryExtractor::write_header(&self, array: &vortex_array::ArrayRef, _ctx: &vortex_array::display::TreeContext, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::buffer::DeviceBuffer::aligned(self: alloc::sync::Arc, alignment: vortex_buffer::alignment::Alignment) -> vortex_error::VortexResult> +pub struct vortex_array::display::IndentedFormatter<'a, 'b> -pub fn vortex_array::buffer::DeviceBuffer::alignment(&self) -> vortex_buffer::alignment::Alignment +impl<'a, 'b> vortex_array::display::IndentedFormatter<'a, 'b> -pub fn vortex_array::buffer::DeviceBuffer::as_any(&self) -> &dyn core::any::Any +pub fn vortex_array::display::IndentedFormatter<'a, 'b>::formatter(&mut self) -> &mut core::fmt::Formatter<'b> -pub fn vortex_array::buffer::DeviceBuffer::copy_to_host(&self, alignment: vortex_buffer::alignment::Alignment) -> vortex_error::VortexResult>> +pub fn vortex_array::display::IndentedFormatter<'a, 'b>::indent(&self) -> &str -pub fn vortex_array::buffer::DeviceBuffer::copy_to_host_sync(&self, alignment: vortex_buffer::alignment::Alignment) -> vortex_error::VortexResult +pub fn vortex_array::display::IndentedFormatter<'a, 'b>::parts(&mut self) -> (&str, &mut core::fmt::Formatter<'b>) -pub fn vortex_array::buffer::DeviceBuffer::is_empty(&self) -> bool +pub struct vortex_array::display::MetadataExtractor -pub fn vortex_array::buffer::DeviceBuffer::len(&self) -> usize +impl vortex_array::display::TreeExtractor for vortex_array::display::MetadataExtractor -pub fn vortex_array::buffer::DeviceBuffer::slice(&self, range: core::ops::range::Range) -> alloc::sync::Arc +pub fn vortex_array::display::MetadataExtractor::write_details(&self, array: &vortex_array::ArrayRef, _ctx: &vortex_array::display::TreeContext, f: &mut vortex_array::display::IndentedFormatter<'_, '_>) -> core::fmt::Result -pub trait vortex_array::buffer::DeviceBufferExt: vortex_array::buffer::DeviceBuffer +pub fn vortex_array::display::MetadataExtractor::write_header(&self, array: &vortex_array::ArrayRef, ctx: &vortex_array::display::TreeContext, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::buffer::DeviceBufferExt::slice_typed(&self, range: core::ops::range::Range) -> alloc::sync::Arc +pub struct vortex_array::display::NbytesExtractor -impl vortex_array::buffer::DeviceBufferExt for B +impl vortex_array::display::TreeExtractor for vortex_array::display::NbytesExtractor -pub fn B::slice_typed(&self, range: core::ops::range::Range) -> alloc::sync::Arc +pub fn vortex_array::display::NbytesExtractor::write_details(&self, array: &vortex_array::ArrayRef, ctx: &vortex_array::display::TreeContext, f: &mut vortex_array::display::IndentedFormatter<'_, '_>) -> core::fmt::Result -pub mod vortex_array::builders +pub fn vortex_array::display::NbytesExtractor::write_header(&self, array: &vortex_array::ArrayRef, ctx: &vortex_array::display::TreeContext, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub mod vortex_array::builders::dict +pub struct vortex_array::display::StatsExtractor -pub struct vortex_array::builders::dict::DictConstraints +impl vortex_array::display::TreeExtractor for vortex_array::display::StatsExtractor -pub vortex_array::builders::dict::DictConstraints::max_bytes: usize +pub fn vortex_array::display::StatsExtractor::write_details(&self, array: &vortex_array::ArrayRef, ctx: &vortex_array::display::TreeContext, f: &mut vortex_array::display::IndentedFormatter<'_, '_>) -> core::fmt::Result -pub vortex_array::builders::dict::DictConstraints::max_len: usize +pub fn vortex_array::display::StatsExtractor::write_header(&self, array: &vortex_array::ArrayRef, _ctx: &vortex_array::display::TreeContext, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::clone::Clone for vortex_array::builders::dict::DictConstraints +pub struct vortex_array::display::TreeContext -pub fn vortex_array::builders::dict::DictConstraints::clone(&self) -> vortex_array::builders::dict::DictConstraints +impl vortex_array::display::TreeContext -pub const vortex_array::builders::dict::UNCONSTRAINED: vortex_array::builders::dict::DictConstraints +pub fn vortex_array::display::TreeContext::parent_total_size(&self) -> core::option::Option -pub trait vortex_array::builders::dict::DictEncoder: core::marker::Send +pub struct vortex_array::display::TreeDisplay -pub fn vortex_array::builders::dict::DictEncoder::codes_ptype(&self) -> vortex_array::dtype::PType +impl vortex_array::display::TreeDisplay -pub fn vortex_array::builders::dict::DictEncoder::encode(&mut self, array: &vortex_array::ArrayRef) -> vortex_array::ArrayRef +pub fn vortex_array::display::TreeDisplay::default_display(array: vortex_array::ArrayRef) -> Self -pub fn vortex_array::builders::dict::DictEncoder::reset(&mut self) -> vortex_array::ArrayRef +pub fn vortex_array::display::TreeDisplay::new(array: vortex_array::ArrayRef) -> Self -pub fn vortex_array::builders::dict::dict_encode(array: &vortex_array::ArrayRef) -> vortex_error::VortexResult +pub fn vortex_array::display::TreeDisplay::with(self, extractor: E) -> Self -pub fn vortex_array::builders::dict::dict_encode_with_constraints(array: &vortex_array::ArrayRef, constraints: &vortex_array::builders::dict::DictConstraints) -> vortex_error::VortexResult +pub fn vortex_array::display::TreeDisplay::with_boxed(self, extractor: alloc::boxed::Box) -> Self -pub fn vortex_array::builders::dict::dict_encoder(array: &vortex_array::ArrayRef, constraints: &vortex_array::builders::dict::DictConstraints) -> alloc::boxed::Box +impl core::fmt::Display for vortex_array::display::TreeDisplay -pub enum vortex_array::builders::BufferGrowthStrategy +pub fn vortex_array::display::TreeDisplay::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub vortex_array::builders::BufferGrowthStrategy::Exponential +pub trait vortex_array::display::TreeExtractor: core::marker::Send + core::marker::Sync -pub vortex_array::builders::BufferGrowthStrategy::Exponential::current_size: u32 +pub fn vortex_array::display::TreeExtractor::write_details(&self, array: &vortex_array::ArrayRef, ctx: &vortex_array::display::TreeContext, f: &mut vortex_array::display::IndentedFormatter<'_, '_>) -> core::fmt::Result -pub vortex_array::builders::BufferGrowthStrategy::Exponential::max_size: u32 +pub fn vortex_array::display::TreeExtractor::write_header(&self, array: &vortex_array::ArrayRef, ctx: &vortex_array::display::TreeContext, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub vortex_array::builders::BufferGrowthStrategy::Fixed +impl vortex_array::display::TreeExtractor for vortex_array::display::BufferExtractor -pub vortex_array::builders::BufferGrowthStrategy::Fixed::size: u32 +pub fn vortex_array::display::BufferExtractor::write_details(&self, array: &vortex_array::ArrayRef, _ctx: &vortex_array::display::TreeContext, f: &mut vortex_array::display::IndentedFormatter<'_, '_>) -> core::fmt::Result -impl vortex_array::builders::BufferGrowthStrategy +pub fn vortex_array::display::BufferExtractor::write_header(&self, array: &vortex_array::ArrayRef, ctx: &vortex_array::display::TreeContext, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::builders::BufferGrowthStrategy::exponential(initial_size: u32, max_size: u32) -> Self +impl vortex_array::display::TreeExtractor for vortex_array::display::EncodingSummaryExtractor -pub fn vortex_array::builders::BufferGrowthStrategy::fixed(size: u32) -> Self +pub fn vortex_array::display::EncodingSummaryExtractor::write_details(&self, array: &vortex_array::ArrayRef, ctx: &vortex_array::display::TreeContext, f: &mut vortex_array::display::IndentedFormatter<'_, '_>) -> core::fmt::Result -pub fn vortex_array::builders::BufferGrowthStrategy::next_size(&mut self) -> u32 +pub fn vortex_array::display::EncodingSummaryExtractor::write_header(&self, array: &vortex_array::ArrayRef, _ctx: &vortex_array::display::TreeContext, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::clone::Clone for vortex_array::builders::BufferGrowthStrategy +impl vortex_array::display::TreeExtractor for vortex_array::display::MetadataExtractor -pub fn vortex_array::builders::BufferGrowthStrategy::clone(&self) -> vortex_array::builders::BufferGrowthStrategy +pub fn vortex_array::display::MetadataExtractor::write_details(&self, array: &vortex_array::ArrayRef, _ctx: &vortex_array::display::TreeContext, f: &mut vortex_array::display::IndentedFormatter<'_, '_>) -> core::fmt::Result -impl core::default::Default for vortex_array::builders::BufferGrowthStrategy +pub fn vortex_array::display::MetadataExtractor::write_header(&self, array: &vortex_array::ArrayRef, ctx: &vortex_array::display::TreeContext, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::builders::BufferGrowthStrategy::default() -> Self +impl vortex_array::display::TreeExtractor for vortex_array::display::NbytesExtractor -impl core::fmt::Debug for vortex_array::builders::BufferGrowthStrategy +pub fn vortex_array::display::NbytesExtractor::write_details(&self, array: &vortex_array::ArrayRef, ctx: &vortex_array::display::TreeContext, f: &mut vortex_array::display::IndentedFormatter<'_, '_>) -> core::fmt::Result -pub fn vortex_array::builders::BufferGrowthStrategy::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::display::NbytesExtractor::write_header(&self, array: &vortex_array::ArrayRef, ctx: &vortex_array::display::TreeContext, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub enum vortex_array::builders::CompletedBuffers +impl vortex_array::display::TreeExtractor for vortex_array::display::StatsExtractor -pub vortex_array::builders::CompletedBuffers::Deduplicated(vortex_array::builders::DeduplicatedBuffers) +pub fn vortex_array::display::StatsExtractor::write_details(&self, array: &vortex_array::ArrayRef, ctx: &vortex_array::display::TreeContext, f: &mut vortex_array::display::IndentedFormatter<'_, '_>) -> core::fmt::Result -pub vortex_array::builders::CompletedBuffers::Default(alloc::vec::Vec) +pub fn vortex_array::display::StatsExtractor::write_header(&self, array: &vortex_array::ArrayRef, _ctx: &vortex_array::display::TreeContext, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::default::Default for vortex_array::builders::CompletedBuffers +pub mod vortex_array::dtype -pub fn vortex_array::builders::CompletedBuffers::default() -> Self +pub use vortex_array::dtype::half -pub struct vortex_array::builders::BoolBuilder +pub mod vortex_array::dtype::arrow -impl vortex_array::builders::BoolBuilder +pub trait vortex_array::dtype::arrow::FromArrowType: core::marker::Sized -pub fn vortex_array::builders::BoolBuilder::append_value(&mut self, value: bool) +pub fn vortex_array::dtype::arrow::FromArrowType::from_arrow(value: T) -> Self -pub fn vortex_array::builders::BoolBuilder::append_values(&mut self, value: bool, n: usize) +impl vortex_array::dtype::arrow::FromArrowType<&arrow_schema::field::Field> for vortex_array::dtype::DType -pub fn vortex_array::builders::BoolBuilder::finish_into_bool(&mut self) -> vortex_array::arrays::BoolArray +pub fn vortex_array::dtype::DType::from_arrow(field: &arrow_schema::field::Field) -> Self -pub fn vortex_array::builders::BoolBuilder::new(nullability: vortex_array::dtype::Nullability) -> Self +impl vortex_array::dtype::arrow::FromArrowType<&arrow_schema::fields::Fields> for vortex_array::dtype::StructFields -pub fn vortex_array::builders::BoolBuilder::with_capacity(nullability: vortex_array::dtype::Nullability, capacity: usize) -> Self +pub fn vortex_array::dtype::StructFields::from_arrow(value: &arrow_schema::fields::Fields) -> Self -impl vortex_array::builders::ArrayBuilder for vortex_array::builders::BoolBuilder +impl vortex_array::dtype::arrow::FromArrowType<&arrow_schema::schema::Schema> for vortex_array::dtype::DType -pub fn vortex_array::builders::BoolBuilder::append_default(&mut self) +pub fn vortex_array::dtype::DType::from_arrow(value: &arrow_schema::schema::Schema) -> Self -pub fn vortex_array::builders::BoolBuilder::append_defaults(&mut self, n: usize) +impl vortex_array::dtype::arrow::FromArrowType<(&arrow_schema::datatype::DataType, vortex_array::dtype::Nullability)> for vortex_array::dtype::DType -pub fn vortex_array::builders::BoolBuilder::append_null(&mut self) +pub fn vortex_array::dtype::DType::from_arrow((data_type, nullability): (&arrow_schema::datatype::DataType, vortex_array::dtype::Nullability)) -> Self -pub fn vortex_array::builders::BoolBuilder::append_nulls(&mut self, n: usize) +impl vortex_array::dtype::arrow::FromArrowType> for vortex_array::dtype::DType -pub unsafe fn vortex_array::builders::BoolBuilder::append_nulls_unchecked(&mut self, n: usize) +pub fn vortex_array::dtype::DType::from_arrow(value: arrow_schema::schema::SchemaRef) -> Self -pub fn vortex_array::builders::BoolBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> +pub trait vortex_array::dtype::arrow::TryFromArrowType: core::marker::Sized -pub fn vortex_array::builders::BoolBuilder::append_zero(&mut self) +pub fn vortex_array::dtype::arrow::TryFromArrowType::try_from_arrow(value: T) -> vortex_error::VortexResult -pub fn vortex_array::builders::BoolBuilder::append_zeros(&mut self, n: usize) +impl vortex_array::dtype::arrow::TryFromArrowType<&arrow_schema::datatype::DataType> for vortex_array::dtype::DecimalDType -pub fn vortex_array::builders::BoolBuilder::as_any(&self) -> &dyn core::any::Any +pub fn vortex_array::dtype::DecimalDType::try_from_arrow(value: &arrow_schema::datatype::DataType) -> vortex_error::VortexResult -pub fn vortex_array::builders::BoolBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any +impl vortex_array::dtype::arrow::TryFromArrowType<&arrow_schema::datatype::DataType> for vortex_array::dtype::PType -pub fn vortex_array::builders::BoolBuilder::dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_array::dtype::PType::try_from_arrow(value: &arrow_schema::datatype::DataType) -> vortex_error::VortexResult -pub fn vortex_array::builders::BoolBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) +pub mod vortex_array::dtype::extension -pub unsafe fn vortex_array::builders::BoolBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) +pub struct vortex_array::dtype::extension::ExtDType -pub fn vortex_array::builders::BoolBuilder::finish(&mut self) -> vortex_array::ArrayRef +impl vortex_array::dtype::extension::ExtDType -pub fn vortex_array::builders::BoolBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical +pub fn vortex_array::dtype::extension::ExtDType::try_new(metadata: ::Metadata, storage_dtype: vortex_array::dtype::DType) -> vortex_error::VortexResult -pub fn vortex_array::builders::BoolBuilder::is_empty(&self) -> bool +impl vortex_array::dtype::extension::ExtDType -pub fn vortex_array::builders::BoolBuilder::len(&self) -> usize +pub fn vortex_array::dtype::extension::ExtDType::can_coerce_from(&self, other: &vortex_array::dtype::DType) -> bool -pub fn vortex_array::builders::BoolBuilder::reserve_exact(&mut self, additional: usize) +pub fn vortex_array::dtype::extension::ExtDType::can_coerce_to(&self, other: &vortex_array::dtype::DType) -> bool -pub fn vortex_array::builders::BoolBuilder::set_validity(&mut self, validity: vortex_mask::Mask) +pub fn vortex_array::dtype::extension::ExtDType::erased(self) -> vortex_array::dtype::extension::ExtDTypeRef -pub unsafe fn vortex_array::builders::BoolBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) +pub fn vortex_array::dtype::extension::ExtDType::id(&self) -> vortex_array::dtype::extension::ExtId -pub struct vortex_array::builders::DecimalBuilder +pub fn vortex_array::dtype::extension::ExtDType::least_supertype(&self, other: &vortex_array::dtype::DType) -> core::option::Option -impl vortex_array::builders::DecimalBuilder +pub fn vortex_array::dtype::extension::ExtDType::metadata(&self) -> &::Metadata -pub fn vortex_array::builders::DecimalBuilder::append_n_values(&mut self, value: V, n: usize) +pub fn vortex_array::dtype::extension::ExtDType::serialize_metadata(&self) -> vortex_error::VortexResult> -pub fn vortex_array::builders::DecimalBuilder::append_value(&mut self, value: V) +pub fn vortex_array::dtype::extension::ExtDType::storage_dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::builders::DecimalBuilder::decimal_dtype(&self) -> &vortex_array::dtype::DecimalDType +pub fn vortex_array::dtype::extension::ExtDType::try_with_vtable(vtable: V, metadata: ::Metadata, storage_dtype: vortex_array::dtype::DType) -> vortex_error::VortexResult -pub fn vortex_array::builders::DecimalBuilder::finish_into_decimal(&mut self) -> vortex_array::arrays::DecimalArray +pub fn vortex_array::dtype::extension::ExtDType::validate_scalar_value(&self, storage_value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult<()> -pub fn vortex_array::builders::DecimalBuilder::new(decimal: vortex_array::dtype::DecimalDType, nullability: vortex_array::dtype::Nullability) -> Self +pub fn vortex_array::dtype::extension::ExtDType::vtable(&self) -> &V -pub fn vortex_array::builders::DecimalBuilder::with_capacity(capacity: usize, decimal: vortex_array::dtype::DecimalDType, nullability: vortex_array::dtype::Nullability) -> Self +pub fn vortex_array::dtype::extension::ExtDType::with_nullability(&self, nullability: vortex_array::dtype::Nullability) -> vortex_array::dtype::extension::ExtDTypeRef -impl vortex_array::builders::ArrayBuilder for vortex_array::builders::DecimalBuilder +impl core::clone::Clone for vortex_array::dtype::extension::ExtDType where ::Metadata: core::clone::Clone -pub fn vortex_array::builders::DecimalBuilder::append_default(&mut self) +pub fn vortex_array::dtype::extension::ExtDType::clone(&self) -> vortex_array::dtype::extension::ExtDType -pub fn vortex_array::builders::DecimalBuilder::append_defaults(&mut self, n: usize) +impl core::cmp::Eq for vortex_array::dtype::extension::ExtDType where ::Metadata: core::cmp::Eq -pub fn vortex_array::builders::DecimalBuilder::append_null(&mut self) +impl core::cmp::PartialEq for vortex_array::dtype::extension::ExtDType where ::Metadata: core::cmp::PartialEq -pub fn vortex_array::builders::DecimalBuilder::append_nulls(&mut self, n: usize) +pub fn vortex_array::dtype::extension::ExtDType::eq(&self, other: &vortex_array::dtype::extension::ExtDType) -> bool -pub unsafe fn vortex_array::builders::DecimalBuilder::append_nulls_unchecked(&mut self, n: usize) +impl core::fmt::Debug for vortex_array::dtype::extension::ExtDType where ::Metadata: core::fmt::Debug -pub fn vortex_array::builders::DecimalBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> +pub fn vortex_array::dtype::extension::ExtDType::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::builders::DecimalBuilder::append_zero(&mut self) +impl core::hash::Hash for vortex_array::dtype::extension::ExtDType where ::Metadata: core::hash::Hash -pub fn vortex_array::builders::DecimalBuilder::append_zeros(&mut self, n: usize) +pub fn vortex_array::dtype::extension::ExtDType::hash<__H: core::hash::Hasher>(&self, state: &mut __H) -pub fn vortex_array::builders::DecimalBuilder::as_any(&self) -> &dyn core::any::Any +impl core::marker::StructuralPartialEq for vortex_array::dtype::extension::ExtDType -pub fn vortex_array::builders::DecimalBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any +pub struct vortex_array::dtype::extension::ExtDTypeRef(_) -pub fn vortex_array::builders::DecimalBuilder::dtype(&self) -> &vortex_array::dtype::DType +impl vortex_array::dtype::extension::ExtDTypeRef -pub fn vortex_array::builders::DecimalBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) +pub fn vortex_array::dtype::extension::ExtDTypeRef::can_coerce_from(&self, other: &vortex_array::dtype::DType) -> bool -pub unsafe fn vortex_array::builders::DecimalBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) +pub fn vortex_array::dtype::extension::ExtDTypeRef::can_coerce_to(&self, other: &vortex_array::dtype::DType) -> bool -pub fn vortex_array::builders::DecimalBuilder::finish(&mut self) -> vortex_array::ArrayRef +pub fn vortex_array::dtype::extension::ExtDTypeRef::display_metadata(&self) -> impl core::fmt::Display + '_ -pub fn vortex_array::builders::DecimalBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical +pub fn vortex_array::dtype::extension::ExtDTypeRef::eq_ignore_nullability(&self, other: &Self) -> bool -pub fn vortex_array::builders::DecimalBuilder::is_empty(&self) -> bool +pub fn vortex_array::dtype::extension::ExtDTypeRef::id(&self) -> vortex_array::dtype::extension::ExtId -pub fn vortex_array::builders::DecimalBuilder::len(&self) -> usize +pub fn vortex_array::dtype::extension::ExtDTypeRef::is_nullable(&self) -> bool -pub fn vortex_array::builders::DecimalBuilder::reserve_exact(&mut self, additional: usize) +pub fn vortex_array::dtype::extension::ExtDTypeRef::least_supertype(&self, other: &vortex_array::dtype::DType) -> core::option::Option -pub fn vortex_array::builders::DecimalBuilder::set_validity(&mut self, validity: vortex_mask::Mask) +pub fn vortex_array::dtype::extension::ExtDTypeRef::nullability(&self) -> vortex_array::dtype::Nullability -pub unsafe fn vortex_array::builders::DecimalBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) +pub fn vortex_array::dtype::extension::ExtDTypeRef::serialize_metadata(&self) -> vortex_error::VortexResult> -pub struct vortex_array::builders::DeduplicatedBuffers +pub fn vortex_array::dtype::extension::ExtDTypeRef::storage_dtype(&self) -> &vortex_array::dtype::DType -impl core::default::Default for vortex_array::builders::DeduplicatedBuffers +pub fn vortex_array::dtype::extension::ExtDTypeRef::with_nullability(&self, nullability: vortex_array::dtype::Nullability) -> Self -pub fn vortex_array::builders::DeduplicatedBuffers::default() -> vortex_array::builders::DeduplicatedBuffers +impl vortex_array::dtype::extension::ExtDTypeRef -pub struct vortex_array::builders::ExtensionBuilder +pub fn vortex_array::dtype::extension::ExtDTypeRef::downcast(self) -> alloc::sync::Arc> -impl vortex_array::builders::ExtensionBuilder +pub fn vortex_array::dtype::extension::ExtDTypeRef::is(&self) -> bool -pub fn vortex_array::builders::ExtensionBuilder::append_value(&mut self, value: vortex_array::scalar::ExtScalar<'_>) -> vortex_error::VortexResult<()> +pub fn vortex_array::dtype::extension::ExtDTypeRef::metadata(&self) -> ::Match -pub fn vortex_array::builders::ExtensionBuilder::finish_into_extension(&mut self) -> vortex_array::arrays::ExtensionArray +pub fn vortex_array::dtype::extension::ExtDTypeRef::metadata_opt(&self) -> core::option::Option<::Match> -pub fn vortex_array::builders::ExtensionBuilder::new(ext_dtype: vortex_array::dtype::extension::ExtDTypeRef) -> Self +pub fn vortex_array::dtype::extension::ExtDTypeRef::try_downcast(self) -> core::result::Result>, vortex_array::dtype::extension::ExtDTypeRef> -pub fn vortex_array::builders::ExtensionBuilder::with_capacity(ext_dtype: vortex_array::dtype::extension::ExtDTypeRef, capacity: usize) -> Self +impl core::clone::Clone for vortex_array::dtype::extension::ExtDTypeRef -impl vortex_array::builders::ArrayBuilder for vortex_array::builders::ExtensionBuilder +pub fn vortex_array::dtype::extension::ExtDTypeRef::clone(&self) -> vortex_array::dtype::extension::ExtDTypeRef -pub fn vortex_array::builders::ExtensionBuilder::append_default(&mut self) +impl core::cmp::Eq for vortex_array::dtype::extension::ExtDTypeRef -pub fn vortex_array::builders::ExtensionBuilder::append_defaults(&mut self, n: usize) +impl core::cmp::PartialEq for vortex_array::dtype::extension::ExtDTypeRef -pub fn vortex_array::builders::ExtensionBuilder::append_null(&mut self) +pub fn vortex_array::dtype::extension::ExtDTypeRef::eq(&self, other: &Self) -> bool -pub fn vortex_array::builders::ExtensionBuilder::append_nulls(&mut self, n: usize) +impl core::fmt::Debug for vortex_array::dtype::extension::ExtDTypeRef -pub unsafe fn vortex_array::builders::ExtensionBuilder::append_nulls_unchecked(&mut self, n: usize) +pub fn vortex_array::dtype::extension::ExtDTypeRef::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::builders::ExtensionBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> +impl core::fmt::Display for vortex_array::dtype::extension::ExtDTypeRef -pub fn vortex_array::builders::ExtensionBuilder::append_zero(&mut self) +pub fn vortex_array::dtype::extension::ExtDTypeRef::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::builders::ExtensionBuilder::append_zeros(&mut self, n: usize) +impl core::hash::Hash for vortex_array::dtype::extension::ExtDTypeRef -pub fn vortex_array::builders::ExtensionBuilder::as_any(&self) -> &dyn core::any::Any +pub fn vortex_array::dtype::extension::ExtDTypeRef::hash(&self, state: &mut H) -pub fn vortex_array::builders::ExtensionBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any +pub trait vortex_array::dtype::extension::ExtDTypePlugin: 'static + core::marker::Send + core::marker::Sync + core::fmt::Debug -pub fn vortex_array::builders::ExtensionBuilder::dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_array::dtype::extension::ExtDTypePlugin::deserialize(&self, data: &[u8], storage_dtype: vortex_array::dtype::DType) -> vortex_error::VortexResult -pub fn vortex_array::builders::ExtensionBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) +pub fn vortex_array::dtype::extension::ExtDTypePlugin::id(&self) -> vortex_array::dtype::extension::ExtId -pub unsafe fn vortex_array::builders::ExtensionBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) +impl vortex_array::dtype::extension::ExtDTypePlugin for V -pub fn vortex_array::builders::ExtensionBuilder::finish(&mut self) -> vortex_array::ArrayRef +pub fn V::deserialize(&self, data: &[u8], storage_dtype: vortex_array::dtype::DType) -> core::result::Result -pub fn vortex_array::builders::ExtensionBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical +pub fn V::id(&self) -> arcref::ArcRef -pub fn vortex_array::builders::ExtensionBuilder::is_empty(&self) -> bool +pub trait vortex_array::dtype::extension::ExtVTable: 'static + core::marker::Sized + core::marker::Send + core::marker::Sync + core::clone::Clone + core::fmt::Debug + core::cmp::Eq + core::hash::Hash -pub fn vortex_array::builders::ExtensionBuilder::len(&self) -> usize +pub type vortex_array::dtype::extension::ExtVTable::Metadata: 'static + core::marker::Send + core::marker::Sync + core::clone::Clone + core::fmt::Debug + core::fmt::Display + core::cmp::Eq + core::hash::Hash -pub fn vortex_array::builders::ExtensionBuilder::reserve_exact(&mut self, capacity: usize) +pub type vortex_array::dtype::extension::ExtVTable::NativeValue<'a>: core::fmt::Display -pub fn vortex_array::builders::ExtensionBuilder::set_validity(&mut self, validity: vortex_mask::Mask) +pub fn vortex_array::dtype::extension::ExtVTable::can_coerce_from(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool -pub unsafe fn vortex_array::builders::ExtensionBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) +pub fn vortex_array::dtype::extension::ExtVTable::can_coerce_to(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool -pub struct vortex_array::builders::FixedSizeListBuilder +pub fn vortex_array::dtype::extension::ExtVTable::deserialize_metadata(&self, metadata: &[u8]) -> vortex_error::VortexResult -impl vortex_array::builders::FixedSizeListBuilder +pub fn vortex_array::dtype::extension::ExtVTable::id(&self) -> vortex_array::dtype::extension::ExtId -pub fn vortex_array::builders::FixedSizeListBuilder::append_array_as_list(&mut self, array: &vortex_array::ArrayRef) -> vortex_error::VortexResult<()> +pub fn vortex_array::dtype::extension::ExtVTable::least_supertype(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> core::option::Option -pub fn vortex_array::builders::FixedSizeListBuilder::append_value(&mut self, value: vortex_array::scalar::ListScalar<'_>) -> vortex_error::VortexResult<()> +pub fn vortex_array::dtype::extension::ExtVTable::serialize_metadata(&self, metadata: &Self::Metadata) -> vortex_error::VortexResult> -pub fn vortex_array::builders::FixedSizeListBuilder::element_dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_array::dtype::extension::ExtVTable::unpack_native<'a>(ext_dtype: &'a vortex_array::dtype::extension::ExtDType, storage_value: &'a vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult -pub fn vortex_array::builders::FixedSizeListBuilder::finish_into_fixed_size_list(&mut self) -> vortex_array::arrays::FixedSizeListArray +pub fn vortex_array::dtype::extension::ExtVTable::validate_dtype(ext_dtype: &vortex_array::dtype::extension::ExtDType) -> vortex_error::VortexResult<()> -pub fn vortex_array::builders::FixedSizeListBuilder::list_size(&self) -> u32 +pub fn vortex_array::dtype::extension::ExtVTable::validate_scalar_value(ext_dtype: &vortex_array::dtype::extension::ExtDType, storage_value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult<()> -pub fn vortex_array::builders::FixedSizeListBuilder::new(element_dtype: alloc::sync::Arc, list_size: u32, nullability: vortex_array::dtype::Nullability) -> Self +impl vortex_array::dtype::extension::ExtVTable for vortex_array::extension::datetime::Date -pub fn vortex_array::builders::FixedSizeListBuilder::with_capacity(element_dtype: alloc::sync::Arc, list_size: u32, nullability: vortex_array::dtype::Nullability, capacity: usize) -> Self +pub type vortex_array::extension::datetime::Date::Metadata = vortex_array::extension::datetime::TimeUnit -impl vortex_array::builders::ArrayBuilder for vortex_array::builders::FixedSizeListBuilder +pub type vortex_array::extension::datetime::Date::NativeValue<'a> = vortex_array::extension::datetime::DateValue -pub fn vortex_array::builders::FixedSizeListBuilder::append_default(&mut self) +pub fn vortex_array::extension::datetime::Date::can_coerce_from(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool -pub fn vortex_array::builders::FixedSizeListBuilder::append_defaults(&mut self, n: usize) +pub fn vortex_array::extension::datetime::Date::can_coerce_to(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool -pub fn vortex_array::builders::FixedSizeListBuilder::append_null(&mut self) +pub fn vortex_array::extension::datetime::Date::deserialize_metadata(&self, metadata: &[u8]) -> vortex_error::VortexResult -pub fn vortex_array::builders::FixedSizeListBuilder::append_nulls(&mut self, n: usize) +pub fn vortex_array::extension::datetime::Date::id(&self) -> vortex_array::dtype::extension::ExtId -pub unsafe fn vortex_array::builders::FixedSizeListBuilder::append_nulls_unchecked(&mut self, n: usize) +pub fn vortex_array::extension::datetime::Date::least_supertype(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> core::option::Option -pub fn vortex_array::builders::FixedSizeListBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> +pub fn vortex_array::extension::datetime::Date::serialize_metadata(&self, metadata: &Self::Metadata) -> vortex_error::VortexResult> -pub fn vortex_array::builders::FixedSizeListBuilder::append_zero(&mut self) +pub fn vortex_array::extension::datetime::Date::unpack_native<'a>(ext_dtype: &'a vortex_array::dtype::extension::ExtDType, storage_value: &'a vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult -pub fn vortex_array::builders::FixedSizeListBuilder::append_zeros(&mut self, n: usize) +pub fn vortex_array::extension::datetime::Date::validate_dtype(ext_dtype: &vortex_array::dtype::extension::ExtDType) -> vortex_error::VortexResult<()> -pub fn vortex_array::builders::FixedSizeListBuilder::as_any(&self) -> &dyn core::any::Any +pub fn vortex_array::extension::datetime::Date::validate_scalar_value(ext_dtype: &vortex_array::dtype::extension::ExtDType, storage_value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult<()> -pub fn vortex_array::builders::FixedSizeListBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any +impl vortex_array::dtype::extension::ExtVTable for vortex_array::extension::datetime::Time -pub fn vortex_array::builders::FixedSizeListBuilder::dtype(&self) -> &vortex_array::dtype::DType +pub type vortex_array::extension::datetime::Time::Metadata = vortex_array::extension::datetime::TimeUnit + +pub type vortex_array::extension::datetime::Time::NativeValue<'a> = vortex_array::extension::datetime::TimeValue + +pub fn vortex_array::extension::datetime::Time::can_coerce_from(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool + +pub fn vortex_array::extension::datetime::Time::can_coerce_to(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool + +pub fn vortex_array::extension::datetime::Time::deserialize_metadata(&self, data: &[u8]) -> vortex_error::VortexResult + +pub fn vortex_array::extension::datetime::Time::id(&self) -> vortex_array::dtype::extension::ExtId + +pub fn vortex_array::extension::datetime::Time::least_supertype(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> core::option::Option + +pub fn vortex_array::extension::datetime::Time::serialize_metadata(&self, metadata: &Self::Metadata) -> vortex_error::VortexResult> + +pub fn vortex_array::extension::datetime::Time::unpack_native<'a>(ext_dtype: &'a vortex_array::dtype::extension::ExtDType, storage_value: &'a vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult + +pub fn vortex_array::extension::datetime::Time::validate_dtype(ext_dtype: &vortex_array::dtype::extension::ExtDType) -> vortex_error::VortexResult<()> + +pub fn vortex_array::extension::datetime::Time::validate_scalar_value(ext_dtype: &vortex_array::dtype::extension::ExtDType, storage_value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult<()> + +impl vortex_array::dtype::extension::ExtVTable for vortex_array::extension::datetime::Timestamp + +pub type vortex_array::extension::datetime::Timestamp::Metadata = vortex_array::extension::datetime::TimestampOptions + +pub type vortex_array::extension::datetime::Timestamp::NativeValue<'a> = vortex_array::extension::datetime::TimestampValue<'a> + +pub fn vortex_array::extension::datetime::Timestamp::can_coerce_from(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool + +pub fn vortex_array::extension::datetime::Timestamp::can_coerce_to(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool + +pub fn vortex_array::extension::datetime::Timestamp::deserialize_metadata(&self, data: &[u8]) -> vortex_error::VortexResult + +pub fn vortex_array::extension::datetime::Timestamp::id(&self) -> vortex_array::dtype::extension::ExtId + +pub fn vortex_array::extension::datetime::Timestamp::least_supertype(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> core::option::Option + +pub fn vortex_array::extension::datetime::Timestamp::serialize_metadata(&self, metadata: &Self::Metadata) -> vortex_error::VortexResult> + +pub fn vortex_array::extension::datetime::Timestamp::unpack_native<'a>(ext_dtype: &'a vortex_array::dtype::extension::ExtDType, storage_value: &'a vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult + +pub fn vortex_array::extension::datetime::Timestamp::validate_dtype(ext_dtype: &vortex_array::dtype::extension::ExtDType) -> vortex_error::VortexResult<()> + +pub fn vortex_array::extension::datetime::Timestamp::validate_scalar_value(ext_dtype: &vortex_array::dtype::extension::ExtDType, storage_value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult<()> + +impl vortex_array::dtype::extension::ExtVTable for vortex_array::extension::uuid::Uuid + +pub type vortex_array::extension::uuid::Uuid::Metadata = vortex_array::extension::uuid::UuidMetadata + +pub type vortex_array::extension::uuid::Uuid::NativeValue<'a> = uuid::Uuid + +pub fn vortex_array::extension::uuid::Uuid::can_coerce_from(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool + +pub fn vortex_array::extension::uuid::Uuid::can_coerce_to(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool + +pub fn vortex_array::extension::uuid::Uuid::deserialize_metadata(&self, metadata: &[u8]) -> vortex_error::VortexResult + +pub fn vortex_array::extension::uuid::Uuid::id(&self) -> vortex_array::dtype::extension::ExtId + +pub fn vortex_array::extension::uuid::Uuid::least_supertype(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> core::option::Option + +pub fn vortex_array::extension::uuid::Uuid::serialize_metadata(&self, metadata: &Self::Metadata) -> vortex_error::VortexResult> + +pub fn vortex_array::extension::uuid::Uuid::unpack_native<'a>(ext_dtype: &vortex_array::dtype::extension::ExtDType, storage_value: &'a vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult + +pub fn vortex_array::extension::uuid::Uuid::validate_dtype(ext_dtype: &vortex_array::dtype::extension::ExtDType) -> vortex_error::VortexResult<()> + +pub fn vortex_array::extension::uuid::Uuid::validate_scalar_value(ext_dtype: &vortex_array::dtype::extension::ExtDType, storage_value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult<()> + +pub trait vortex_array::dtype::extension::Matcher + +pub type vortex_array::dtype::extension::Matcher::Match<'a> + +pub fn vortex_array::dtype::extension::Matcher::matches(item: &vortex_array::dtype::extension::ExtDTypeRef) -> bool + +pub fn vortex_array::dtype::extension::Matcher::try_match<'a>(item: &'a vortex_array::dtype::extension::ExtDTypeRef) -> core::option::Option + +impl vortex_array::dtype::extension::Matcher for vortex_array::extension::datetime::AnyTemporal + +pub type vortex_array::extension::datetime::AnyTemporal::Match<'a> = vortex_array::extension::datetime::TemporalMetadata<'a> + +pub fn vortex_array::extension::datetime::AnyTemporal::matches(item: &vortex_array::dtype::extension::ExtDTypeRef) -> bool + +pub fn vortex_array::extension::datetime::AnyTemporal::try_match<'a>(item: &'a vortex_array::dtype::extension::ExtDTypeRef) -> core::option::Option + +impl vortex_array::dtype::extension::Matcher for V + +pub type V::Match<'a> = &'a ::Metadata + +pub fn V::matches(item: &vortex_array::dtype::extension::ExtDTypeRef) -> bool + +pub fn V::try_match<'a>(item: &'a vortex_array::dtype::extension::ExtDTypeRef) -> core::option::Option<::Match> + +pub type vortex_array::dtype::extension::ExtDTypePluginRef = alloc::sync::Arc + +pub type vortex_array::dtype::extension::ExtId = arcref::ArcRef + +pub mod vortex_array::dtype::flatbuffers + +pub use vortex_array::dtype::flatbuffers::<> + +pub mod vortex_array::dtype::proto + +pub use vortex_array::dtype::proto::dtype + +pub mod vortex_array::dtype::serde + +pub mod vortex_array::dtype::session + +pub struct vortex_array::dtype::session::DTypeSession + +impl vortex_array::dtype::session::DTypeSession + +pub fn vortex_array::dtype::session::DTypeSession::register(&self, vtable: V) + +pub fn vortex_array::dtype::session::DTypeSession::registry(&self) -> &vortex_array::dtype::session::ExtDTypeRegistry + +impl core::default::Default for vortex_array::dtype::session::DTypeSession + +pub fn vortex_array::dtype::session::DTypeSession::default() -> Self + +impl core::fmt::Debug for vortex_array::dtype::session::DTypeSession + +pub fn vortex_array::dtype::session::DTypeSession::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +pub trait vortex_array::dtype::session::DTypeSessionExt: vortex_session::SessionExt + +pub fn vortex_array::dtype::session::DTypeSessionExt::dtypes(&self) -> vortex_session::Ref<'_, vortex_array::dtype::session::DTypeSession> + +impl vortex_array::dtype::session::DTypeSessionExt for S + +pub fn S::dtypes(&self) -> vortex_session::Ref<'_, vortex_array::dtype::session::DTypeSession> + +pub type vortex_array::dtype::session::ExtDTypeRegistry = vortex_session::registry::Registry + +pub enum vortex_array::dtype::DType + +pub vortex_array::dtype::DType::Binary(vortex_array::dtype::Nullability) + +pub vortex_array::dtype::DType::Bool(vortex_array::dtype::Nullability) + +pub vortex_array::dtype::DType::Decimal(vortex_array::dtype::DecimalDType, vortex_array::dtype::Nullability) + +pub vortex_array::dtype::DType::Extension(vortex_array::dtype::extension::ExtDTypeRef) + +pub vortex_array::dtype::DType::FixedSizeList(alloc::sync::Arc, u32, vortex_array::dtype::Nullability) + +pub vortex_array::dtype::DType::List(alloc::sync::Arc, vortex_array::dtype::Nullability) + +pub vortex_array::dtype::DType::Null + +pub vortex_array::dtype::DType::Primitive(vortex_array::dtype::PType, vortex_array::dtype::Nullability) + +pub vortex_array::dtype::DType::Struct(vortex_array::dtype::StructFields, vortex_array::dtype::Nullability) + +pub vortex_array::dtype::DType::Utf8(vortex_array::dtype::Nullability) + +pub vortex_array::dtype::DType::Variant(vortex_array::dtype::Nullability) + +impl vortex_array::dtype::DType + +pub const vortex_array::dtype::DType::BYTES: Self + +pub fn vortex_array::dtype::DType::as_any_size_list_element_opt(&self) -> core::option::Option<&alloc::sync::Arc> + +pub fn vortex_array::dtype::DType::as_decimal_opt(&self) -> core::option::Option<&vortex_array::dtype::DecimalDType> + +pub fn vortex_array::dtype::DType::as_extension(&self) -> &vortex_array::dtype::extension::ExtDTypeRef + +pub fn vortex_array::dtype::DType::as_extension_opt(&self) -> core::option::Option<&vortex_array::dtype::extension::ExtDTypeRef> + +pub fn vortex_array::dtype::DType::as_fixed_size_list_element_opt(&self) -> core::option::Option<&alloc::sync::Arc> + +pub fn vortex_array::dtype::DType::as_list_element_opt(&self) -> core::option::Option<&alloc::sync::Arc> + +pub fn vortex_array::dtype::DType::as_nonnullable(&self) -> Self + +pub fn vortex_array::dtype::DType::as_nullable(&self) -> Self + +pub fn vortex_array::dtype::DType::as_ptype(&self) -> vortex_array::dtype::PType + +pub fn vortex_array::dtype::DType::as_struct_fields(&self) -> &vortex_array::dtype::StructFields + +pub fn vortex_array::dtype::DType::as_struct_fields_opt(&self) -> core::option::Option<&vortex_array::dtype::StructFields> + +pub fn vortex_array::dtype::DType::element_size(&self) -> core::option::Option + +pub fn vortex_array::dtype::DType::eq_ignore_nullability(&self, other: &Self) -> bool + +pub fn vortex_array::dtype::DType::eq_with_nullability_subset(&self, other: &Self) -> bool + +pub fn vortex_array::dtype::DType::eq_with_nullability_superset(&self, other: &Self) -> bool + +pub fn vortex_array::dtype::DType::into_any_size_list_element_opt(self) -> core::option::Option> + +pub fn vortex_array::dtype::DType::into_decimal_opt(self) -> core::option::Option + +pub fn vortex_array::dtype::DType::into_fixed_size_list_element_opt(self) -> core::option::Option> + +pub fn vortex_array::dtype::DType::into_list_element_opt(self) -> core::option::Option> + +pub fn vortex_array::dtype::DType::into_struct_fields(self) -> vortex_array::dtype::StructFields + +pub fn vortex_array::dtype::DType::into_struct_fields_opt(self) -> core::option::Option + +pub fn vortex_array::dtype::DType::is_binary(&self) -> bool + +pub fn vortex_array::dtype::DType::is_boolean(&self) -> bool + +pub fn vortex_array::dtype::DType::is_decimal(&self) -> bool + +pub fn vortex_array::dtype::DType::is_extension(&self) -> bool + +pub fn vortex_array::dtype::DType::is_fixed_size_list(&self) -> bool + +pub fn vortex_array::dtype::DType::is_float(&self) -> bool + +pub fn vortex_array::dtype::DType::is_int(&self) -> bool + +pub fn vortex_array::dtype::DType::is_list(&self) -> bool + +pub fn vortex_array::dtype::DType::is_nested(&self) -> bool + +pub fn vortex_array::dtype::DType::is_nullable(&self) -> bool + +pub fn vortex_array::dtype::DType::is_primitive(&self) -> bool + +pub fn vortex_array::dtype::DType::is_signed_int(&self) -> bool + +pub fn vortex_array::dtype::DType::is_struct(&self) -> bool + +pub fn vortex_array::dtype::DType::is_unsigned_int(&self) -> bool + +pub fn vortex_array::dtype::DType::is_utf8(&self) -> bool + +pub fn vortex_array::dtype::DType::is_variant(&self) -> bool + +pub fn vortex_array::dtype::DType::list(dtype: impl core::convert::Into, nullability: vortex_array::dtype::Nullability) -> Self + +pub fn vortex_array::dtype::DType::nullability(&self) -> vortex_array::dtype::Nullability + +pub fn vortex_array::dtype::DType::struct_, impl core::convert::Into)>>(iter: I, nullability: vortex_array::dtype::Nullability) -> Self + +pub fn vortex_array::dtype::DType::union_nullability(&self, other: vortex_array::dtype::Nullability) -> Self + +pub fn vortex_array::dtype::DType::with_nullability(&self, nullability: vortex_array::dtype::Nullability) -> Self + +impl vortex_array::dtype::DType + +pub fn vortex_array::dtype::DType::all_coercible_to(types: &[vortex_array::dtype::DType], target: &vortex_array::dtype::DType) -> bool + +pub fn vortex_array::dtype::DType::are_coercible(types: &[vortex_array::dtype::DType]) -> bool + +pub fn vortex_array::dtype::DType::can_coerce_from(&self, other: &vortex_array::dtype::DType) -> bool + +pub fn vortex_array::dtype::DType::can_coerce_to(&self, other: &vortex_array::dtype::DType) -> bool + +pub fn vortex_array::dtype::DType::coerce_all_to(types: &[vortex_array::dtype::DType], target: &vortex_array::dtype::DType) -> core::option::Option> + +pub fn vortex_array::dtype::DType::coerce_to_supertype(types: &[vortex_array::dtype::DType]) -> core::option::Option> + +pub fn vortex_array::dtype::DType::is_numeric(&self) -> bool + +pub fn vortex_array::dtype::DType::is_temporal(&self) -> bool + +pub fn vortex_array::dtype::DType::least_supertype(&self, other: &vortex_array::dtype::DType) -> core::option::Option + +pub fn vortex_array::dtype::DType::least_supertype_of(types: &[vortex_array::dtype::DType]) -> core::option::Option + +impl vortex_array::dtype::DType + +pub fn vortex_array::dtype::DType::from_flatbuffer(buffer: vortex_flatbuffers::FlatBuffer, session: &vortex_session::VortexSession) -> vortex_error::VortexResult + +impl vortex_array::dtype::DType + +pub fn vortex_array::dtype::DType::from_proto(value: &vortex_proto::dtype::DType, session: &vortex_session::VortexSession) -> vortex_error::VortexResult + +impl vortex_array::dtype::DType + +pub fn vortex_array::dtype::DType::to_arrow_dtype(&self) -> vortex_error::VortexResult + +pub fn vortex_array::dtype::DType::to_arrow_schema(&self) -> vortex_error::VortexResult + +impl core::clone::Clone for vortex_array::dtype::DType + +pub fn vortex_array::dtype::DType::clone(&self) -> vortex_array::dtype::DType + +impl core::cmp::Eq for vortex_array::dtype::DType + +impl core::cmp::PartialEq for vortex_array::dtype::DType + +pub fn vortex_array::dtype::DType::eq(&self, other: &vortex_array::dtype::DType) -> bool + +impl core::convert::From for vortex_array::dtype::FieldDType + +pub fn vortex_array::dtype::FieldDType::from(value: vortex_array::dtype::DType) -> Self + +impl core::convert::From for &vortex_array::dtype::DType + +pub fn &vortex_array::dtype::DType::from(item: vortex_array::dtype::PType) -> Self + +impl core::convert::From for vortex_array::dtype::DType + +pub fn vortex_array::dtype::DType::from(item: vortex_array::dtype::PType) -> Self + +impl core::convert::TryFrom<&vortex_array::dtype::DType> for vortex_array::dtype::DecimalDType + +pub type vortex_array::dtype::DecimalDType::Error = vortex_error::VortexError + +pub fn vortex_array::dtype::DecimalDType::try_from(value: &vortex_array::dtype::DType) -> core::result::Result + +impl core::convert::TryFrom<&vortex_array::dtype::DType> for vortex_array::dtype::PType + +pub type vortex_array::dtype::PType::Error = vortex_error::VortexError + +pub fn vortex_array::dtype::PType::try_from(value: &vortex_array::dtype::DType) -> vortex_error::VortexResult + +impl core::convert::TryFrom<&vortex_array::dtype::DType> for vortex_proto::dtype::DType + +pub type vortex_proto::dtype::DType::Error = vortex_error::VortexError + +pub fn vortex_proto::dtype::DType::try_from(value: &vortex_array::dtype::DType) -> vortex_error::VortexResult + +impl core::convert::TryFrom for vortex_array::dtype::DecimalDType + +pub type vortex_array::dtype::DecimalDType::Error = vortex_error::VortexError + +pub fn vortex_array::dtype::DecimalDType::try_from(value: vortex_array::dtype::DType) -> core::result::Result + +impl core::fmt::Debug for vortex_array::dtype::DType + +pub fn vortex_array::dtype::DType::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::fmt::Display for vortex_array::dtype::DType + +pub fn vortex_array::dtype::DType::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::hash::Hash for vortex_array::dtype::DType + +pub fn vortex_array::dtype::DType::hash<__H: core::hash::Hasher>(&self, state: &mut __H) + +impl core::marker::StructuralPartialEq for vortex_array::dtype::DType + +impl vortex_array::dtype::arrow::FromArrowType<&arrow_schema::field::Field> for vortex_array::dtype::DType + +pub fn vortex_array::dtype::DType::from_arrow(field: &arrow_schema::field::Field) -> Self + +impl vortex_array::dtype::arrow::FromArrowType<&arrow_schema::schema::Schema> for vortex_array::dtype::DType + +pub fn vortex_array::dtype::DType::from_arrow(value: &arrow_schema::schema::Schema) -> Self + +impl vortex_array::dtype::arrow::FromArrowType<(&arrow_schema::datatype::DataType, vortex_array::dtype::Nullability)> for vortex_array::dtype::DType + +pub fn vortex_array::dtype::DType::from_arrow((data_type, nullability): (&arrow_schema::datatype::DataType, vortex_array::dtype::Nullability)) -> Self + +impl vortex_array::dtype::arrow::FromArrowType> for vortex_array::dtype::DType + +pub fn vortex_array::dtype::DType::from_arrow(value: arrow_schema::schema::SchemaRef) -> Self + +impl vortex_flatbuffers::FlatBufferRoot for vortex_array::dtype::DType + +impl vortex_flatbuffers::WriteFlatBuffer for vortex_array::dtype::DType + +pub type vortex_array::dtype::DType::Target<'a> = vortex_flatbuffers::dtype::DType<'a> + +pub fn vortex_array::dtype::DType::write_flatbuffer<'fb>(&self, fbb: &mut flatbuffers::builder::FlatBufferBuilder<'fb>) -> vortex_error::VortexResult> + +#[repr(u8)] pub enum vortex_array::dtype::DecimalType + +pub vortex_array::dtype::DecimalType::I128 = 4 + +pub vortex_array::dtype::DecimalType::I16 = 1 + +pub vortex_array::dtype::DecimalType::I256 = 5 + +pub vortex_array::dtype::DecimalType::I32 = 2 + +pub vortex_array::dtype::DecimalType::I64 = 3 + +pub vortex_array::dtype::DecimalType::I8 = 0 + +impl vortex_array::dtype::DecimalType + +pub fn vortex_array::dtype::DecimalType::byte_width(&self) -> usize + +pub fn vortex_array::dtype::DecimalType::is_compatible_decimal_value_type(self, dtype: vortex_array::dtype::DecimalDType) -> bool + +pub fn vortex_array::dtype::DecimalType::smallest_decimal_value_type(decimal_dtype: &vortex_array::dtype::DecimalDType) -> vortex_array::dtype::DecimalType + +impl vortex_array::dtype::DecimalType + +pub fn vortex_array::dtype::DecimalType::from_i32(value: i32) -> core::option::Option + +pub fn vortex_array::dtype::DecimalType::is_valid(value: i32) -> bool + +impl core::clone::Clone for vortex_array::dtype::DecimalType + +pub fn vortex_array::dtype::DecimalType::clone(&self) -> vortex_array::dtype::DecimalType + +impl core::cmp::Eq for vortex_array::dtype::DecimalType + +impl core::cmp::Ord for vortex_array::dtype::DecimalType + +pub fn vortex_array::dtype::DecimalType::cmp(&self, other: &vortex_array::dtype::DecimalType) -> core::cmp::Ordering + +impl core::cmp::PartialEq for vortex_array::dtype::DecimalType + +pub fn vortex_array::dtype::DecimalType::eq(&self, other: &vortex_array::dtype::DecimalType) -> bool + +impl core::cmp::PartialOrd for vortex_array::dtype::DecimalType + +pub fn vortex_array::dtype::DecimalType::partial_cmp(&self, other: &vortex_array::dtype::DecimalType) -> core::option::Option + +impl core::convert::From for i32 + +pub fn i32::from(value: vortex_array::dtype::DecimalType) -> i32 + +impl core::convert::TryFrom for vortex_array::dtype::DecimalType + +pub type vortex_array::dtype::DecimalType::Error = prost::error::UnknownEnumValue + +pub fn vortex_array::dtype::DecimalType::try_from(value: i32) -> core::result::Result + +impl core::convert::TryFrom for vortex_array::dtype::DecimalType + +pub type vortex_array::dtype::DecimalType::Error = vortex_error::VortexError + +pub fn vortex_array::dtype::DecimalType::try_from(value: vortex_array::dtype::PType) -> core::result::Result + +impl core::default::Default for vortex_array::dtype::DecimalType + +pub fn vortex_array::dtype::DecimalType::default() -> vortex_array::dtype::DecimalType + +impl core::fmt::Debug for vortex_array::dtype::DecimalType + +pub fn vortex_array::dtype::DecimalType::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::fmt::Display for vortex_array::dtype::DecimalType + +pub fn vortex_array::dtype::DecimalType::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::hash::Hash for vortex_array::dtype::DecimalType + +pub fn vortex_array::dtype::DecimalType::hash<__H: core::hash::Hasher>(&self, state: &mut __H) + +impl core::marker::Copy for vortex_array::dtype::DecimalType + +impl core::marker::StructuralPartialEq for vortex_array::dtype::DecimalType + +pub enum vortex_array::dtype::Field + +pub vortex_array::dtype::Field::ElementType + +pub vortex_array::dtype::Field::Name(vortex_array::dtype::FieldName) + +impl vortex_array::dtype::Field + +pub fn vortex_array::dtype::Field::as_name(&self) -> core::option::Option<&str> + +pub fn vortex_array::dtype::Field::is_named(&self) -> bool + +impl core::clone::Clone for vortex_array::dtype::Field + +pub fn vortex_array::dtype::Field::clone(&self) -> vortex_array::dtype::Field + +impl core::cmp::Eq for vortex_array::dtype::Field + +impl core::cmp::PartialEq for vortex_array::dtype::Field + +pub fn vortex_array::dtype::Field::eq(&self, other: &vortex_array::dtype::Field) -> bool + +impl core::convert::From<&str> for vortex_array::dtype::Field + +pub fn vortex_array::dtype::Field::from(value: &str) -> Self + +impl core::convert::From> for vortex_array::dtype::Field + +pub fn vortex_array::dtype::Field::from(value: alloc::sync::Arc) -> Self + +impl core::convert::From for vortex_array::dtype::FieldPath + +pub fn vortex_array::dtype::FieldPath::from(value: vortex_array::dtype::Field) -> Self + +impl core::convert::From for vortex_array::dtype::Field + +pub fn vortex_array::dtype::Field::from(value: vortex_array::dtype::FieldName) -> Self + +impl core::fmt::Debug for vortex_array::dtype::Field + +pub fn vortex_array::dtype::Field::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::fmt::Display for vortex_array::dtype::Field + +pub fn vortex_array::dtype::Field::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::hash::Hash for vortex_array::dtype::Field + +pub fn vortex_array::dtype::Field::hash<__H: core::hash::Hasher>(&self, state: &mut __H) + +impl core::iter::traits::collect::FromIterator for vortex_array::dtype::FieldPath + +pub fn vortex_array::dtype::FieldPath::from_iter>(iter: T) -> Self + +impl core::marker::StructuralPartialEq for vortex_array::dtype::Field + +pub enum vortex_array::dtype::FieldMask + +pub vortex_array::dtype::FieldMask::All + +pub vortex_array::dtype::FieldMask::Exact(vortex_array::dtype::FieldPath) + +pub vortex_array::dtype::FieldMask::Prefix(vortex_array::dtype::FieldPath) + +impl vortex_array::dtype::FieldMask + +pub fn vortex_array::dtype::FieldMask::matches_all(&self) -> bool + +pub fn vortex_array::dtype::FieldMask::matches_root(&self) -> bool + +pub fn vortex_array::dtype::FieldMask::starting_field(&self) -> vortex_error::VortexResult> + +pub fn vortex_array::dtype::FieldMask::step_into(self) -> vortex_error::VortexResult + +impl core::clone::Clone for vortex_array::dtype::FieldMask + +pub fn vortex_array::dtype::FieldMask::clone(&self) -> vortex_array::dtype::FieldMask + +impl core::cmp::Eq for vortex_array::dtype::FieldMask + +impl core::cmp::PartialEq for vortex_array::dtype::FieldMask + +pub fn vortex_array::dtype::FieldMask::eq(&self, other: &vortex_array::dtype::FieldMask) -> bool + +impl core::fmt::Debug for vortex_array::dtype::FieldMask + +pub fn vortex_array::dtype::FieldMask::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::marker::StructuralPartialEq for vortex_array::dtype::FieldMask + +pub enum vortex_array::dtype::Nullability + +pub vortex_array::dtype::Nullability::NonNullable + +pub vortex_array::dtype::Nullability::Nullable + +impl vortex_array::dtype::Nullability + +pub fn vortex_array::dtype::Nullability::is_nullable(&self) -> bool + +impl core::clone::Clone for vortex_array::dtype::Nullability + +pub fn vortex_array::dtype::Nullability::clone(&self) -> vortex_array::dtype::Nullability + +impl core::cmp::Eq for vortex_array::dtype::Nullability + +impl core::cmp::PartialEq for vortex_array::dtype::Nullability + +pub fn vortex_array::dtype::Nullability::eq(&self, other: &vortex_array::dtype::Nullability) -> bool + +impl core::convert::From<&vortex_array::dtype::Nullability> for vortex_array::validity::Validity + +pub fn vortex_array::validity::Validity::from(value: &vortex_array::dtype::Nullability) -> Self + +impl core::convert::From for vortex_array::dtype::Nullability + +pub fn vortex_array::dtype::Nullability::from(value: bool) -> Self + +impl core::convert::From for bool + +pub fn bool::from(value: vortex_array::dtype::Nullability) -> Self + +impl core::convert::From for vortex_array::validity::Validity + +pub fn vortex_array::validity::Validity::from(value: vortex_array::dtype::Nullability) -> Self + +impl core::default::Default for vortex_array::dtype::Nullability + +pub fn vortex_array::dtype::Nullability::default() -> vortex_array::dtype::Nullability + +impl core::fmt::Debug for vortex_array::dtype::Nullability + +pub fn vortex_array::dtype::Nullability::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::fmt::Display for vortex_array::dtype::Nullability + +pub fn vortex_array::dtype::Nullability::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::hash::Hash for vortex_array::dtype::Nullability + +pub fn vortex_array::dtype::Nullability::hash<__H: core::hash::Hasher>(&self, state: &mut __H) + +impl core::marker::Copy for vortex_array::dtype::Nullability + +impl core::marker::StructuralPartialEq for vortex_array::dtype::Nullability + +impl core::ops::bit::BitOr for vortex_array::dtype::Nullability + +pub type vortex_array::dtype::Nullability::Output = vortex_array::dtype::Nullability + +pub fn vortex_array::dtype::Nullability::bitor(self, rhs: Self) -> Self::Output + +impl core::ops::bit::BitOrAssign for vortex_array::dtype::Nullability + +pub fn vortex_array::dtype::Nullability::bitor_assign(&mut self, rhs: Self) + +#[repr(u8)] pub enum vortex_array::dtype::PType + +pub vortex_array::dtype::PType::F16 = 8 + +pub vortex_array::dtype::PType::F32 = 9 + +pub vortex_array::dtype::PType::F64 = 10 + +pub vortex_array::dtype::PType::I16 = 5 + +pub vortex_array::dtype::PType::I32 = 6 + +pub vortex_array::dtype::PType::I64 = 7 + +pub vortex_array::dtype::PType::I8 = 4 + +pub vortex_array::dtype::PType::U16 = 1 + +pub vortex_array::dtype::PType::U32 = 2 + +pub vortex_array::dtype::PType::U64 = 3 + +pub vortex_array::dtype::PType::U8 = 0 + +impl vortex_array::dtype::PType + +pub const fn vortex_array::dtype::PType::bit_width(&self) -> usize + +pub const fn vortex_array::dtype::PType::byte_width(&self) -> usize + +pub const fn vortex_array::dtype::PType::is_float(self) -> bool + +pub const fn vortex_array::dtype::PType::is_int(self) -> bool + +pub const fn vortex_array::dtype::PType::is_signed_int(self) -> bool + +pub const fn vortex_array::dtype::PType::is_unsigned_int(self) -> bool + +pub const fn vortex_array::dtype::PType::max_signed_ptype(self, other: Self) -> Self + +pub const fn vortex_array::dtype::PType::max_unsigned_ptype(self, other: Self) -> Self + +pub fn vortex_array::dtype::PType::max_value_as_u64(&self) -> u64 + +pub const fn vortex_array::dtype::PType::min_signed_ptype_for_value(value: i64) -> Self + +pub const fn vortex_array::dtype::PType::min_unsigned_ptype_for_value(value: u64) -> Self + +pub const fn vortex_array::dtype::PType::to_signed(self) -> Self + +pub const fn vortex_array::dtype::PType::to_unsigned(self) -> Self + +impl vortex_array::dtype::PType + +pub fn vortex_array::dtype::PType::from_i32(value: i32) -> core::option::Option + +pub fn vortex_array::dtype::PType::is_valid(value: i32) -> bool + +impl vortex_array::dtype::PType + +pub fn vortex_array::dtype::PType::least_supertype(self, other: vortex_array::dtype::PType) -> core::option::Option + +impl core::clone::Clone for vortex_array::dtype::PType + +pub fn vortex_array::dtype::PType::clone(&self) -> vortex_array::dtype::PType + +impl core::cmp::Eq for vortex_array::dtype::PType + +impl core::cmp::PartialEq for vortex_array::dtype::PType + +pub fn vortex_array::dtype::PType::eq(&self, other: &vortex_array::dtype::PType) -> bool + +impl core::cmp::PartialOrd for vortex_array::dtype::PType + +pub fn vortex_array::dtype::PType::partial_cmp(&self, other: &vortex_array::dtype::PType) -> core::option::Option + +impl core::convert::From for &vortex_array::dtype::DType + +pub fn &vortex_array::dtype::DType::from(item: vortex_array::dtype::PType) -> Self + +impl core::convert::From for i32 + +pub fn i32::from(value: vortex_array::dtype::PType) -> i32 + +impl core::convert::From for vortex_array::dtype::DType + +pub fn vortex_array::dtype::DType::from(item: vortex_array::dtype::PType) -> Self + +impl core::convert::From for vortex_array::dtype::FieldDType + +pub fn vortex_array::dtype::FieldDType::from(value: vortex_array::dtype::PType) -> Self + +impl core::convert::From for vortex_flatbuffers::dtype::PType + +pub fn vortex_flatbuffers::dtype::PType::from(value: vortex_array::dtype::PType) -> Self + +impl core::convert::From for vortex_proto::dtype::PType + +pub fn vortex_proto::dtype::PType::from(value: vortex_array::dtype::PType) -> Self + +impl core::convert::From for vortex_array::dtype::PType + +pub fn vortex_array::dtype::PType::from(value: vortex_proto::dtype::PType) -> Self + +impl core::convert::TryFrom<&vortex_array::dtype::DType> for vortex_array::dtype::PType + +pub type vortex_array::dtype::PType::Error = vortex_error::VortexError + +pub fn vortex_array::dtype::PType::try_from(value: &vortex_array::dtype::DType) -> vortex_error::VortexResult + +impl core::convert::TryFrom for vortex_array::dtype::PType + +pub type vortex_array::dtype::PType::Error = prost::error::UnknownEnumValue + +pub fn vortex_array::dtype::PType::try_from(value: i32) -> core::result::Result + +impl core::convert::TryFrom for vortex_array::dtype::DecimalType + +pub type vortex_array::dtype::DecimalType::Error = vortex_error::VortexError + +pub fn vortex_array::dtype::DecimalType::try_from(value: vortex_array::dtype::PType) -> core::result::Result + +impl core::convert::TryFrom for vortex_array::dtype::PType + +pub type vortex_array::dtype::PType::Error = vortex_error::VortexError + +pub fn vortex_array::dtype::PType::try_from(value: vortex_flatbuffers::dtype::PType) -> core::result::Result + +impl core::default::Default for vortex_array::dtype::PType + +pub fn vortex_array::dtype::PType::default() -> vortex_array::dtype::PType + +impl core::fmt::Debug for vortex_array::dtype::PType + +pub fn vortex_array::dtype::PType::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::fmt::Display for vortex_array::dtype::PType + +pub fn vortex_array::dtype::PType::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::hash::Hash for vortex_array::dtype::PType + +pub fn vortex_array::dtype::PType::hash<__H: core::hash::Hasher>(&self, state: &mut __H) + +impl core::marker::Copy for vortex_array::dtype::PType + +impl core::marker::StructuralPartialEq for vortex_array::dtype::PType + +impl vortex_array::dtype::arrow::TryFromArrowType<&arrow_schema::datatype::DataType> for vortex_array::dtype::PType + +pub fn vortex_array::dtype::PType::try_from_arrow(value: &arrow_schema::datatype::DataType) -> vortex_error::VortexResult + +pub struct vortex_array::dtype::DecimalDType + +impl vortex_array::dtype::DecimalDType + +pub fn vortex_array::dtype::DecimalDType::new(precision: u8, scale: i8) -> Self + +pub fn vortex_array::dtype::DecimalDType::precision(&self) -> u8 + +pub fn vortex_array::dtype::DecimalDType::required_bit_width(&self) -> usize + +pub fn vortex_array::dtype::DecimalDType::scale(&self) -> i8 + +pub fn vortex_array::dtype::DecimalDType::try_new(precision: u8, scale: i8) -> vortex_error::VortexResult + +impl core::clone::Clone for vortex_array::dtype::DecimalDType + +pub fn vortex_array::dtype::DecimalDType::clone(&self) -> vortex_array::dtype::DecimalDType + +impl core::cmp::Eq for vortex_array::dtype::DecimalDType + +impl core::cmp::PartialEq for vortex_array::dtype::DecimalDType + +pub fn vortex_array::dtype::DecimalDType::eq(&self, other: &vortex_array::dtype::DecimalDType) -> bool + +impl core::convert::TryFrom<&vortex_array::dtype::DType> for vortex_array::dtype::DecimalDType + +pub type vortex_array::dtype::DecimalDType::Error = vortex_error::VortexError + +pub fn vortex_array::dtype::DecimalDType::try_from(value: &vortex_array::dtype::DType) -> core::result::Result + +impl core::convert::TryFrom for vortex_array::dtype::DecimalDType + +pub type vortex_array::dtype::DecimalDType::Error = vortex_error::VortexError + +pub fn vortex_array::dtype::DecimalDType::try_from(value: vortex_array::dtype::DType) -> core::result::Result + +impl core::fmt::Debug for vortex_array::dtype::DecimalDType + +pub fn vortex_array::dtype::DecimalDType::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::fmt::Display for vortex_array::dtype::DecimalDType + +pub fn vortex_array::dtype::DecimalDType::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::hash::Hash for vortex_array::dtype::DecimalDType + +pub fn vortex_array::dtype::DecimalDType::hash<__H: core::hash::Hasher>(&self, state: &mut __H) + +impl core::marker::Copy for vortex_array::dtype::DecimalDType + +impl core::marker::StructuralPartialEq for vortex_array::dtype::DecimalDType + +impl vortex_array::dtype::arrow::TryFromArrowType<&arrow_schema::datatype::DataType> for vortex_array::dtype::DecimalDType + +pub fn vortex_array::dtype::DecimalDType::try_from_arrow(value: &arrow_schema::datatype::DataType) -> vortex_error::VortexResult + +impl core::convert::From> for vortex_array::dtype::DecimalDType + +pub fn vortex_array::dtype::DecimalDType::from(value: vortex_array::dtype::PrecisionScale) -> Self + +impl core::convert::TryFrom<&vortex_array::dtype::DecimalDType> for vortex_array::dtype::PrecisionScale + +pub type vortex_array::dtype::PrecisionScale::Error = vortex_error::VortexError + +pub fn vortex_array::dtype::PrecisionScale::try_from(value: &vortex_array::dtype::DecimalDType) -> vortex_error::VortexResult + +pub struct vortex_array::dtype::FieldDType + +impl vortex_array::dtype::FieldDType + +pub fn vortex_array::dtype::FieldDType::value(&self) -> vortex_error::VortexResult + +impl core::clone::Clone for vortex_array::dtype::FieldDType + +pub fn vortex_array::dtype::FieldDType::clone(&self) -> vortex_array::dtype::FieldDType + +impl core::cmp::Eq for vortex_array::dtype::FieldDType + +impl core::cmp::PartialEq for vortex_array::dtype::FieldDType + +pub fn vortex_array::dtype::FieldDType::eq(&self, other: &vortex_array::dtype::FieldDType) -> bool + +impl core::convert::From for vortex_array::dtype::FieldDType + +pub fn vortex_array::dtype::FieldDType::from(value: vortex_array::dtype::DType) -> Self + +impl core::convert::From for vortex_array::dtype::FieldDType + +pub fn vortex_array::dtype::FieldDType::from(value: vortex_array::dtype::PType) -> Self + +impl core::fmt::Debug for vortex_array::dtype::FieldDType + +pub fn vortex_array::dtype::FieldDType::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::hash::Hash for vortex_array::dtype::FieldDType + +pub fn vortex_array::dtype::FieldDType::hash<__H: core::hash::Hasher>(&self, state: &mut __H) + +impl core::marker::StructuralPartialEq for vortex_array::dtype::FieldDType + +pub struct vortex_array::dtype::FieldName(_) + +impl vortex_array::dtype::FieldName + +pub fn vortex_array::dtype::FieldName::inner(&self) -> &alloc::sync::Arc + +impl core::borrow::Borrow for &vortex_array::dtype::FieldName + +pub fn &vortex_array::dtype::FieldName::borrow(&self) -> &str + +impl core::borrow::Borrow for vortex_array::dtype::FieldName + +pub fn vortex_array::dtype::FieldName::borrow(&self) -> &str + +impl core::clone::Clone for vortex_array::dtype::FieldName + +pub fn vortex_array::dtype::FieldName::clone(&self) -> vortex_array::dtype::FieldName + +impl core::cmp::Eq for vortex_array::dtype::FieldName + +impl core::cmp::Ord for vortex_array::dtype::FieldName + +pub fn vortex_array::dtype::FieldName::cmp(&self, other: &vortex_array::dtype::FieldName) -> core::cmp::Ordering + +impl core::cmp::PartialEq for vortex_array::dtype::FieldName + +pub fn vortex_array::dtype::FieldName::eq(&self, other: &vortex_array::dtype::FieldName) -> bool + +impl core::cmp::PartialEq<&alloc::string::String> for vortex_array::dtype::FieldName + +pub fn vortex_array::dtype::FieldName::eq(&self, other: &&alloc::string::String) -> bool + +impl core::cmp::PartialEq<&str> for &vortex_array::dtype::FieldName + +pub fn &vortex_array::dtype::FieldName::eq(&self, other: &&str) -> bool + +impl core::cmp::PartialEq<&str> for vortex_array::dtype::FieldName + +pub fn vortex_array::dtype::FieldName::eq(&self, other: &&str) -> bool + +impl core::cmp::PartialEq<&vortex_array::dtype::FieldName> for vortex_array::dtype::FieldName + +pub fn vortex_array::dtype::FieldName::eq(&self, other: &&vortex_array::dtype::FieldName) -> bool + +impl core::cmp::PartialEq for vortex_array::dtype::FieldName + +pub fn vortex_array::dtype::FieldName::eq(&self, other: &alloc::string::String) -> bool + +impl core::cmp::PartialEq for &vortex_array::dtype::FieldName + +pub fn &vortex_array::dtype::FieldName::eq(&self, other: &vortex_array::dtype::FieldName) -> bool + +impl core::cmp::PartialEq for str + +pub fn str::eq(&self, other: &vortex_array::dtype::FieldName) -> bool + +impl core::cmp::PartialOrd for vortex_array::dtype::FieldName + +pub fn vortex_array::dtype::FieldName::partial_cmp(&self, other: &vortex_array::dtype::FieldName) -> core::option::Option + +impl core::convert::AsRef for vortex_array::dtype::FieldName + +pub fn vortex_array::dtype::FieldName::as_ref(&self) -> &str + +impl core::convert::From<&str> for vortex_array::dtype::FieldName + +pub fn vortex_array::dtype::FieldName::from(value: &str) -> Self + +impl core::convert::From for vortex_array::dtype::FieldName + +pub fn vortex_array::dtype::FieldName::from(value: alloc::string::String) -> Self + +impl core::convert::From> for vortex_array::dtype::FieldName + +pub fn vortex_array::dtype::FieldName::from(value: alloc::sync::Arc) -> Self + +impl core::convert::From for alloc::string::String + +pub fn alloc::string::String::from(value: vortex_array::dtype::FieldName) -> Self + +impl core::convert::From for alloc::sync::Arc + +pub fn alloc::sync::Arc::from(value: vortex_array::dtype::FieldName) -> Self + +impl core::convert::From for vortex_array::dtype::Field + +pub fn vortex_array::dtype::Field::from(value: vortex_array::dtype::FieldName) -> Self + +impl core::fmt::Debug for vortex_array::dtype::FieldName + +pub fn vortex_array::dtype::FieldName::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::fmt::Display for vortex_array::dtype::FieldName + +pub fn vortex_array::dtype::FieldName::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::hash::Hash for vortex_array::dtype::FieldName + +pub fn vortex_array::dtype::FieldName::hash<__H: core::hash::Hasher>(&self, state: &mut __H) + +impl core::marker::StructuralPartialEq for vortex_array::dtype::FieldName + +pub struct vortex_array::dtype::FieldNames(_) + +impl vortex_array::dtype::FieldNames + +pub fn vortex_array::dtype::FieldNames::empty() -> Self + +pub fn vortex_array::dtype::FieldNames::find(&self, name: impl core::convert::AsRef) -> core::option::Option + +pub fn vortex_array::dtype::FieldNames::get(&self, index: usize) -> core::option::Option<&vortex_array::dtype::FieldName> + +pub fn vortex_array::dtype::FieldNames::is_empty(&self) -> bool + +pub fn vortex_array::dtype::FieldNames::iter(&self) -> impl core::iter::traits::exact_size::ExactSizeIterator + +pub fn vortex_array::dtype::FieldNames::len(&self) -> usize + +impl core::clone::Clone for vortex_array::dtype::FieldNames + +pub fn vortex_array::dtype::FieldNames::clone(&self) -> vortex_array::dtype::FieldNames + +impl core::cmp::Eq for vortex_array::dtype::FieldNames + +impl core::cmp::PartialEq for vortex_array::dtype::FieldNames + +pub fn vortex_array::dtype::FieldNames::eq(&self, other: &vortex_array::dtype::FieldNames) -> bool + +impl core::cmp::PartialEq<&[&str]> for &vortex_array::dtype::FieldNames + +pub fn &vortex_array::dtype::FieldNames::eq(&self, other: &&[&str]) -> bool + +impl core::cmp::PartialEq<&[&str]> for vortex_array::dtype::FieldNames + +pub fn vortex_array::dtype::FieldNames::eq(&self, other: &&[&str]) -> bool + +impl core::cmp::PartialEq<&[vortex_array::dtype::FieldName]> for &vortex_array::dtype::FieldNames + +pub fn &vortex_array::dtype::FieldNames::eq(&self, other: &&[vortex_array::dtype::FieldName]) -> bool + +impl core::cmp::PartialEq<&[vortex_array::dtype::FieldName]> for vortex_array::dtype::FieldNames + +pub fn vortex_array::dtype::FieldNames::eq(&self, other: &&[vortex_array::dtype::FieldName]) -> bool + +impl core::cmp::PartialEq<&vortex_array::dtype::FieldNames> for vortex_array::dtype::FieldNames + +pub fn vortex_array::dtype::FieldNames::eq(&self, other: &&vortex_array::dtype::FieldNames) -> bool + +impl core::convert::AsRef<[vortex_array::dtype::FieldName]> for vortex_array::dtype::FieldNames + +pub fn vortex_array::dtype::FieldNames::as_ref(&self) -> &[vortex_array::dtype::FieldName] + +impl core::convert::From<&[&'static str]> for vortex_array::dtype::FieldNames + +pub fn vortex_array::dtype::FieldNames::from(value: &[&'static str]) -> Self + +impl core::convert::From<&[vortex_array::dtype::FieldName]> for vortex_array::dtype::FieldNames + +pub fn vortex_array::dtype::FieldNames::from(value: &[vortex_array::dtype::FieldName]) -> Self + +impl core::convert::From> for vortex_array::dtype::FieldNames + +pub fn vortex_array::dtype::FieldNames::from(value: alloc::vec::Vec<&str>) -> Self + +impl core::convert::From>> for vortex_array::dtype::FieldNames + +pub fn vortex_array::dtype::FieldNames::from(value: alloc::vec::Vec>) -> Self + +impl core::convert::From> for vortex_array::dtype::FieldNames + +pub fn vortex_array::dtype::FieldNames::from(value: alloc::vec::Vec) -> Self + +impl core::default::Default for vortex_array::dtype::FieldNames + +pub fn vortex_array::dtype::FieldNames::default() -> vortex_array::dtype::FieldNames + +impl core::fmt::Debug for vortex_array::dtype::FieldNames + +pub fn vortex_array::dtype::FieldNames::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::fmt::Display for vortex_array::dtype::FieldNames + +pub fn vortex_array::dtype::FieldNames::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::hash::Hash for vortex_array::dtype::FieldNames + +pub fn vortex_array::dtype::FieldNames::hash<__H: core::hash::Hasher>(&self, state: &mut __H) + +impl core::iter::traits::collect::IntoIterator for vortex_array::dtype::FieldNames + +pub type vortex_array::dtype::FieldNames::IntoIter = vortex_array::dtype::FieldNamesIntoIter + +pub type vortex_array::dtype::FieldNames::Item = vortex_array::dtype::FieldName + +pub fn vortex_array::dtype::FieldNames::into_iter(self) -> Self::IntoIter + +impl core::marker::StructuralPartialEq for vortex_array::dtype::FieldNames + +impl core::ops::index::Index for vortex_array::dtype::FieldNames + +pub type vortex_array::dtype::FieldNames::Output = vortex_array::dtype::FieldName + +pub fn vortex_array::dtype::FieldNames::index(&self, index: usize) -> &Self::Output + +impl> core::iter::traits::collect::FromIterator for vortex_array::dtype::FieldNames + +pub fn vortex_array::dtype::FieldNames::from_iter>(iter: T) -> Self + +impl core::cmp::PartialEq<[&str; N]> for &vortex_array::dtype::FieldNames + +pub fn &vortex_array::dtype::FieldNames::eq(&self, other: &[&str; N]) -> bool + +impl core::cmp::PartialEq<[&str; N]> for vortex_array::dtype::FieldNames + +pub fn vortex_array::dtype::FieldNames::eq(&self, other: &[&str; N]) -> bool + +impl core::convert::From<&[&str; N]> for vortex_array::dtype::FieldNames + +pub fn vortex_array::dtype::FieldNames::from(value: &[&str; N]) -> Self + +impl core::convert::From<[&str; N]> for vortex_array::dtype::FieldNames + +pub fn vortex_array::dtype::FieldNames::from(value: [&str; N]) -> Self + +impl core::convert::From<[vortex_array::dtype::FieldName; N]> for vortex_array::dtype::FieldNames + +pub fn vortex_array::dtype::FieldNames::from(value: [vortex_array::dtype::FieldName; N]) -> Self + +pub struct vortex_array::dtype::FieldNamesIntoIter + +impl core::iter::traits::exact_size::ExactSizeIterator for vortex_array::dtype::FieldNamesIntoIter + +impl core::iter::traits::iterator::Iterator for vortex_array::dtype::FieldNamesIntoIter + +pub type vortex_array::dtype::FieldNamesIntoIter::Item = vortex_array::dtype::FieldName + +pub fn vortex_array::dtype::FieldNamesIntoIter::next(&mut self) -> core::option::Option + +pub fn vortex_array::dtype::FieldNamesIntoIter::size_hint(&self) -> (usize, core::option::Option) + +pub struct vortex_array::dtype::FieldNamesIter<'a> + +impl core::iter::traits::exact_size::ExactSizeIterator for vortex_array::dtype::FieldNamesIter<'_> + +impl<'a> core::iter::traits::iterator::Iterator for vortex_array::dtype::FieldNamesIter<'a> + +pub type vortex_array::dtype::FieldNamesIter<'a>::Item = &'a vortex_array::dtype::FieldName + +pub fn vortex_array::dtype::FieldNamesIter<'a>::next(&mut self) -> core::option::Option + +pub fn vortex_array::dtype::FieldNamesIter<'a>::size_hint(&self) -> (usize, core::option::Option) + +pub struct vortex_array::dtype::FieldPath(_) + +impl vortex_array::dtype::FieldPath + +pub fn vortex_array::dtype::FieldPath::exists_in(&self, dtype: vortex_array::dtype::DType) -> bool + +pub fn vortex_array::dtype::FieldPath::from_name>(name: F) -> Self + +pub fn vortex_array::dtype::FieldPath::is_root(&self) -> bool + +pub fn vortex_array::dtype::FieldPath::overlap(&self, other: &vortex_array::dtype::FieldPath) -> bool + +pub fn vortex_array::dtype::FieldPath::parts(&self) -> &[vortex_array::dtype::Field] + +pub fn vortex_array::dtype::FieldPath::push>(self, field: F) -> Self + +pub fn vortex_array::dtype::FieldPath::resolve(&self, dtype: vortex_array::dtype::DType) -> core::option::Option + +pub fn vortex_array::dtype::FieldPath::root() -> Self + +pub fn vortex_array::dtype::FieldPath::starts_with_field(&self, field: &vortex_array::dtype::Field) -> bool + +pub fn vortex_array::dtype::FieldPath::step_into(self) -> core::option::Option + +impl core::clone::Clone for vortex_array::dtype::FieldPath + +pub fn vortex_array::dtype::FieldPath::clone(&self) -> vortex_array::dtype::FieldPath + +impl core::cmp::Eq for vortex_array::dtype::FieldPath + +impl core::cmp::PartialEq for vortex_array::dtype::FieldPath + +pub fn vortex_array::dtype::FieldPath::eq(&self, other: &vortex_array::dtype::FieldPath) -> bool + +impl core::convert::From> for vortex_array::dtype::FieldPath + +pub fn vortex_array::dtype::FieldPath::from(value: alloc::vec::Vec) -> Self + +impl core::convert::From for vortex_array::dtype::FieldPath + +pub fn vortex_array::dtype::FieldPath::from(value: vortex_array::dtype::Field) -> Self + +impl core::convert::TryFrom<&vortex_proto::dtype::FieldPath> for vortex_array::dtype::FieldPath + +pub type vortex_array::dtype::FieldPath::Error = vortex_error::VortexError + +pub fn vortex_array::dtype::FieldPath::try_from(value: &vortex_proto::dtype::FieldPath) -> core::result::Result + +impl core::default::Default for vortex_array::dtype::FieldPath + +pub fn vortex_array::dtype::FieldPath::default() -> vortex_array::dtype::FieldPath + +impl core::fmt::Debug for vortex_array::dtype::FieldPath + +pub fn vortex_array::dtype::FieldPath::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::fmt::Display for vortex_array::dtype::FieldPath + +pub fn vortex_array::dtype::FieldPath::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::hash::Hash for vortex_array::dtype::FieldPath + +pub fn vortex_array::dtype::FieldPath::hash<__H: core::hash::Hasher>(&self, state: &mut __H) + +impl core::iter::traits::collect::FromIterator for vortex_array::dtype::FieldPath + +pub fn vortex_array::dtype::FieldPath::from_iter>(iter: T) -> Self + +impl core::iter::traits::collect::FromIterator for vortex_array::dtype::FieldPathSet + +pub fn vortex_array::dtype::FieldPathSet::from_iter>(iter: T) -> Self + +impl core::marker::StructuralPartialEq for vortex_array::dtype::FieldPath + +pub struct vortex_array::dtype::FieldPathSet + +impl vortex_array::dtype::FieldPathSet + +pub fn vortex_array::dtype::FieldPathSet::contains(&self, path: &vortex_array::dtype::FieldPath) -> bool + +impl core::clone::Clone for vortex_array::dtype::FieldPathSet + +pub fn vortex_array::dtype::FieldPathSet::clone(&self) -> vortex_array::dtype::FieldPathSet + +impl core::default::Default for vortex_array::dtype::FieldPathSet + +pub fn vortex_array::dtype::FieldPathSet::default() -> vortex_array::dtype::FieldPathSet + +impl core::fmt::Debug for vortex_array::dtype::FieldPathSet + +pub fn vortex_array::dtype::FieldPathSet::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::iter::traits::collect::FromIterator for vortex_array::dtype::FieldPathSet + +pub fn vortex_array::dtype::FieldPathSet::from_iter>(iter: T) -> Self + +pub struct vortex_array::dtype::PrecisionScale + +impl vortex_array::dtype::PrecisionScale + +pub fn vortex_array::dtype::PrecisionScale::is_valid(&self, value: D) -> bool + +pub fn vortex_array::dtype::PrecisionScale::new(precision: u8, scale: i8) -> Self + +pub unsafe fn vortex_array::dtype::PrecisionScale::new_unchecked(precision: u8, scale: i8) -> Self + +pub fn vortex_array::dtype::PrecisionScale::precision(&self) -> u8 + +pub fn vortex_array::dtype::PrecisionScale::scale(&self) -> i8 + +pub fn vortex_array::dtype::PrecisionScale::try_new(precision: u8, scale: i8) -> vortex_error::VortexResult + +impl core::clone::Clone for vortex_array::dtype::PrecisionScale + +pub fn vortex_array::dtype::PrecisionScale::clone(&self) -> vortex_array::dtype::PrecisionScale + +impl core::cmp::Eq for vortex_array::dtype::PrecisionScale + +impl core::cmp::PartialEq for vortex_array::dtype::PrecisionScale + +pub fn vortex_array::dtype::PrecisionScale::eq(&self, other: &vortex_array::dtype::PrecisionScale) -> bool + +impl core::fmt::Debug for vortex_array::dtype::PrecisionScale + +pub fn vortex_array::dtype::PrecisionScale::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::hash::Hash for vortex_array::dtype::PrecisionScale + +pub fn vortex_array::dtype::PrecisionScale::hash<__H: core::hash::Hasher>(&self, state: &mut __H) + +impl core::marker::Copy for vortex_array::dtype::PrecisionScale + +impl core::convert::From> for vortex_array::dtype::DecimalDType + +pub fn vortex_array::dtype::DecimalDType::from(value: vortex_array::dtype::PrecisionScale) -> Self + +impl core::convert::TryFrom<&vortex_array::dtype::DecimalDType> for vortex_array::dtype::PrecisionScale + +pub type vortex_array::dtype::PrecisionScale::Error = vortex_error::VortexError + +pub fn vortex_array::dtype::PrecisionScale::try_from(value: &vortex_array::dtype::DecimalDType) -> vortex_error::VortexResult + +impl core::fmt::Display for vortex_array::dtype::PrecisionScale + +pub fn vortex_array::dtype::PrecisionScale::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::marker::StructuralPartialEq for vortex_array::dtype::PrecisionScale + +pub struct vortex_array::dtype::StructFields(_) + +impl vortex_array::dtype::StructFields + +pub fn vortex_array::dtype::StructFields::disjoint_merge(&self, other: &Self) -> vortex_error::VortexResult + +pub fn vortex_array::dtype::StructFields::empty() -> Self + +pub fn vortex_array::dtype::StructFields::field(&self, name: impl core::convert::AsRef) -> core::option::Option + +pub fn vortex_array::dtype::StructFields::field_by_index(&self, index: usize) -> core::option::Option + +pub fn vortex_array::dtype::StructFields::field_name(&self, index: usize) -> core::option::Option<&vortex_array::dtype::FieldName> + +pub fn vortex_array::dtype::StructFields::fields(&self) -> impl core::iter::traits::exact_size::ExactSizeIterator + '_ + +pub fn vortex_array::dtype::StructFields::find(&self, name: impl core::convert::AsRef) -> core::option::Option + +pub fn vortex_array::dtype::StructFields::from_fields(names: vortex_array::dtype::FieldNames, dtypes: alloc::vec::Vec) -> Self + +pub fn vortex_array::dtype::StructFields::names(&self) -> &vortex_array::dtype::FieldNames + +pub fn vortex_array::dtype::StructFields::new(names: vortex_array::dtype::FieldNames, dtypes: alloc::vec::Vec) -> Self + +pub fn vortex_array::dtype::StructFields::nfields(&self) -> usize + +pub fn vortex_array::dtype::StructFields::project(&self, projection: &[vortex_array::dtype::FieldName]) -> vortex_error::VortexResult + +pub fn vortex_array::dtype::StructFields::without_field(&self, index: usize) -> vortex_error::VortexResult + +impl core::clone::Clone for vortex_array::dtype::StructFields + +pub fn vortex_array::dtype::StructFields::clone(&self) -> vortex_array::dtype::StructFields + +impl core::cmp::Eq for vortex_array::dtype::StructFields + +impl core::cmp::PartialEq for vortex_array::dtype::StructFields + +pub fn vortex_array::dtype::StructFields::eq(&self, other: &vortex_array::dtype::StructFields) -> bool + +impl core::default::Default for vortex_array::dtype::StructFields + +pub fn vortex_array::dtype::StructFields::default() -> Self + +impl core::fmt::Debug for vortex_array::dtype::StructFields + +pub fn vortex_array::dtype::StructFields::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::fmt::Display for vortex_array::dtype::StructFields + +pub fn vortex_array::dtype::StructFields::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::hash::Hash for vortex_array::dtype::StructFields + +pub fn vortex_array::dtype::StructFields::hash<__H: core::hash::Hasher>(&self, state: &mut __H) + +impl core::marker::StructuralPartialEq for vortex_array::dtype::StructFields + +impl vortex_array::dtype::arrow::FromArrowType<&arrow_schema::fields::Fields> for vortex_array::dtype::StructFields + +pub fn vortex_array::dtype::StructFields::from_arrow(value: &arrow_schema::fields::Fields) -> Self + +impl core::iter::traits::collect::FromIterator<(T, V)> for vortex_array::dtype::StructFields where T: core::convert::Into, V: core::convert::Into + +pub fn vortex_array::dtype::StructFields::from_iter>(iter: I) -> Self + +#[repr(transparent)] pub struct vortex_array::dtype::i256(_) + +impl vortex_array::dtype::i256 + +pub const vortex_array::dtype::i256::MAX: Self + +pub const vortex_array::dtype::i256::MIN: Self + +pub const vortex_array::dtype::i256::ONE: Self + +pub const vortex_array::dtype::i256::ZERO: Self + +pub fn vortex_array::dtype::i256::checked_pow(&self, exp: u32) -> core::option::Option + +pub const fn vortex_array::dtype::i256::from_i128(i: i128) -> Self + +pub const fn vortex_array::dtype::i256::from_le_bytes(bytes: [u8; 32]) -> Self + +pub const fn vortex_array::dtype::i256::from_parts(lower: u128, upper: i128) -> Self + +pub const fn vortex_array::dtype::i256::into_parts(self) -> (u128, i128) + +pub fn vortex_array::dtype::i256::maybe_i128(self) -> core::option::Option + +pub const fn vortex_array::dtype::i256::to_be_bytes(&self) -> [u8; 32] + +pub const fn vortex_array::dtype::i256::to_le_bytes(&self) -> [u8; 32] + +pub const fn vortex_array::dtype::i256::to_parts(&self) -> (u128, i128) + +pub fn vortex_array::dtype::i256::wrapping_add(&self, other: Self) -> Self + +pub fn vortex_array::dtype::i256::wrapping_pow(&self, exp: u32) -> Self + +impl core::clone::Clone for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::clone(&self) -> vortex_array::dtype::i256 + +impl core::cmp::Eq for vortex_array::dtype::i256 + +impl core::cmp::Ord for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::cmp(&self, other: &vortex_array::dtype::i256) -> core::cmp::Ordering + +impl core::cmp::PartialEq for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::eq(&self, other: &vortex_array::dtype::i256) -> bool + +impl core::cmp::PartialOrd for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::partial_cmp(&self, other: &vortex_array::dtype::i256) -> core::option::Option + +impl core::convert::From for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::from(i: arrow_buffer::bigint::i256) -> Self + +impl core::convert::From for arrow_buffer::bigint::i256 + +pub fn arrow_buffer::bigint::i256::from(i: vortex_array::dtype::i256) -> Self + +impl core::convert::From for vortex_array::scalar::DecimalValue + +pub fn vortex_array::scalar::DecimalValue::from(value: vortex_array::dtype::i256) -> Self + +impl core::convert::TryFrom> for vortex_array::dtype::i256 + +pub type vortex_array::dtype::i256::Error = vortex_error::VortexError + +pub fn vortex_array::dtype::i256::try_from(value: vortex_array::scalar::DecimalScalar<'_>) -> core::result::Result + +impl core::default::Default for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::default() -> vortex_array::dtype::i256 + +impl core::fmt::Debug for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::fmt::Display for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::hash::Hash for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::hash<__H: core::hash::Hasher>(&self, state: &mut __H) + +impl core::marker::Copy for vortex_array::dtype::i256 + +impl core::marker::StructuralPartialEq for vortex_array::dtype::i256 + +impl core::ops::arith::Add for vortex_array::dtype::i256 + +pub type vortex_array::dtype::i256::Output = vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::add(self, rhs: Self) -> Self::Output + +impl core::ops::arith::AddAssign for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::add_assign(&mut self, rhs: Self) + +impl core::ops::arith::Div for vortex_array::dtype::i256 + +pub type vortex_array::dtype::i256::Output = vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::div(self, rhs: Self) -> Self::Output + +impl core::ops::arith::Mul for vortex_array::dtype::i256 + +pub type vortex_array::dtype::i256::Output = vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::mul(self, rhs: Self) -> Self::Output + +impl core::ops::arith::Neg for vortex_array::dtype::i256 + +pub type vortex_array::dtype::i256::Output = vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::neg(self) -> Self::Output + +impl core::ops::arith::Rem for vortex_array::dtype::i256 + +pub type vortex_array::dtype::i256::Output = vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::rem(self, rhs: Self) -> Self::Output + +impl core::ops::arith::Sub for vortex_array::dtype::i256 + +pub type vortex_array::dtype::i256::Output = vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::sub(self, rhs: Self) -> Self::Output + +impl core::ops::bit::BitOr for vortex_array::dtype::i256 + +pub type vortex_array::dtype::i256::Output = vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::bitor(self, rhs: Self) -> Self::Output + +impl core::ops::bit::Shl for vortex_array::dtype::i256 + +pub type vortex_array::dtype::i256::Output = vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::shl(self, rhs: usize) -> Self::Output + +impl core::ops::bit::Shr for vortex_array::dtype::i256 + +pub type vortex_array::dtype::i256::Output = vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::shr(self, rhs: Self) -> Self::Output + +impl num_traits::cast::AsPrimitive for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::as_(self) -> i128 + +impl num_traits::cast::AsPrimitive for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::as_(self) -> i16 + +impl num_traits::cast::AsPrimitive for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::as_(self) -> i32 + +impl num_traits::cast::AsPrimitive for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::as_(self) -> i64 + +impl num_traits::cast::AsPrimitive for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::as_(self) -> i8 + +impl num_traits::cast::AsPrimitive for bool + +pub fn bool::as_(self) -> vortex_array::dtype::i256 + +impl num_traits::cast::AsPrimitive for i128 + +pub fn i128::as_(self) -> vortex_array::dtype::i256 + +impl num_traits::cast::AsPrimitive for i16 + +pub fn i16::as_(self) -> vortex_array::dtype::i256 + +impl num_traits::cast::AsPrimitive for i32 + +pub fn i32::as_(self) -> vortex_array::dtype::i256 + +impl num_traits::cast::AsPrimitive for i64 + +pub fn i64::as_(self) -> vortex_array::dtype::i256 + +impl num_traits::cast::AsPrimitive for i8 + +pub fn i8::as_(self) -> vortex_array::dtype::i256 + +impl num_traits::cast::AsPrimitive for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::as_(self) -> vortex_array::dtype::i256 + +impl num_traits::cast::ToPrimitive for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::to_i128(&self) -> core::option::Option + +pub fn vortex_array::dtype::i256::to_i64(&self) -> core::option::Option + +pub fn vortex_array::dtype::i256::to_u128(&self) -> core::option::Option + +pub fn vortex_array::dtype::i256::to_u64(&self) -> core::option::Option + +impl num_traits::identities::ConstZero for vortex_array::dtype::i256 + +pub const vortex_array::dtype::i256::ZERO: Self + +impl num_traits::identities::One for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::one() -> Self + +impl num_traits::identities::Zero for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::is_zero(&self) -> bool + +pub fn vortex_array::dtype::i256::zero() -> Self + +impl num_traits::ops::checked::CheckedAdd for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::checked_add(&self, v: &Self) -> core::option::Option + +impl num_traits::ops::checked::CheckedDiv for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::checked_div(&self, v: &Self) -> core::option::Option + +impl num_traits::ops::checked::CheckedMul for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::checked_mul(&self, v: &Self) -> core::option::Option + +impl num_traits::ops::checked::CheckedSub for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::checked_sub(&self, v: &Self) -> core::option::Option + +impl num_traits::ops::wrapping::WrappingAdd for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::wrapping_add(&self, v: &Self) -> Self + +impl num_traits::ops::wrapping::WrappingSub for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::wrapping_sub(&self, v: &Self) -> Self + +impl vortex_array::dtype::BigCast for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::from(n: T) -> core::option::Option + +impl vortex_array::dtype::NativeDecimalType for vortex_array::dtype::i256 + +pub const vortex_array::dtype::i256::DECIMAL_TYPE: vortex_array::dtype::DecimalType + +pub const vortex_array::dtype::i256::MAX_BY_PRECISION: &'static [Self] + +pub const vortex_array::dtype::i256::MAX_PRECISION: u8 + +pub const vortex_array::dtype::i256::MAX_SCALE: i8 + +pub const vortex_array::dtype::i256::MIN_BY_PRECISION: &'static [Self] + +pub fn vortex_array::dtype::i256::downcast(visitor: V) -> ::Output + +pub fn vortex_array::dtype::i256::upcast(input: ::Input) -> V + +impl vortex_array::dtype::ToI256 for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::to_i256(&self) -> core::option::Option + +pub const vortex_array::dtype::MAX_PRECISION: u8 + +pub const vortex_array::dtype::MAX_SCALE: i8 + +pub trait vortex_array::dtype::BigCast: core::marker::Sized + num_traits::cast::ToPrimitive + vortex_array::dtype::ToI256 + +pub fn vortex_array::dtype::BigCast::from(n: T) -> core::option::Option + +impl vortex_array::dtype::BigCast for i128 + +pub fn i128::from(n: T) -> core::option::Option + +impl vortex_array::dtype::BigCast for i16 + +pub fn i16::from(n: T) -> core::option::Option + +impl vortex_array::dtype::BigCast for i32 + +pub fn i32::from(n: T) -> core::option::Option + +impl vortex_array::dtype::BigCast for i64 + +pub fn i64::from(n: T) -> core::option::Option + +impl vortex_array::dtype::BigCast for i8 + +pub fn i8::from(n: T) -> core::option::Option + +impl vortex_array::dtype::BigCast for u128 + +pub fn u128::from(n: T) -> core::option::Option + +impl vortex_array::dtype::BigCast for u16 + +pub fn u16::from(n: T) -> core::option::Option + +impl vortex_array::dtype::BigCast for u32 + +pub fn u32::from(n: T) -> core::option::Option + +impl vortex_array::dtype::BigCast for u64 + +pub fn u64::from(n: T) -> core::option::Option + +impl vortex_array::dtype::BigCast for u8 + +pub fn u8::from(n: T) -> core::option::Option + +impl vortex_array::dtype::BigCast for vortex_array::dtype::i256 + +pub fn vortex_array::dtype::i256::from(n: T) -> core::option::Option + +pub trait vortex_array::dtype::DecimalTypeDowncast + +pub type vortex_array::dtype::DecimalTypeDowncast::Output + +pub fn vortex_array::dtype::DecimalTypeDowncast::into_i128(self) -> Self::Output + +pub fn vortex_array::dtype::DecimalTypeDowncast::into_i16(self) -> Self::Output + +pub fn vortex_array::dtype::DecimalTypeDowncast::into_i256(self) -> Self::Output + +pub fn vortex_array::dtype::DecimalTypeDowncast::into_i32(self) -> Self::Output + +pub fn vortex_array::dtype::DecimalTypeDowncast::into_i64(self) -> Self::Output + +pub fn vortex_array::dtype::DecimalTypeDowncast::into_i8(self) -> Self::Output + +pub trait vortex_array::dtype::DecimalTypeUpcast + +pub type vortex_array::dtype::DecimalTypeUpcast::Input + +pub fn vortex_array::dtype::DecimalTypeUpcast::from_i128(input: Self::Input) -> Self + +pub fn vortex_array::dtype::DecimalTypeUpcast::from_i16(input: Self::Input) -> Self + +pub fn vortex_array::dtype::DecimalTypeUpcast::from_i256(input: Self::Input) -> Self + +pub fn vortex_array::dtype::DecimalTypeUpcast::from_i32(input: Self::Input) -> Self + +pub fn vortex_array::dtype::DecimalTypeUpcast::from_i64(input: Self::Input) -> Self + +pub fn vortex_array::dtype::DecimalTypeUpcast::from_i8(input: Self::Input) -> Self + +pub trait vortex_array::dtype::FromPrimitiveOrF16: num_traits::cast::FromPrimitive + +pub fn vortex_array::dtype::FromPrimitiveOrF16::from_f16(v: half::binary16::f16) -> core::option::Option + +impl vortex_array::dtype::FromPrimitiveOrF16 for f32 + +pub fn f32::from_f16(v: half::binary16::f16) -> core::option::Option + +impl vortex_array::dtype::FromPrimitiveOrF16 for f64 + +pub fn f64::from_f16(v: half::binary16::f16) -> core::option::Option + +impl vortex_array::dtype::FromPrimitiveOrF16 for half::binary16::f16 + +pub fn half::binary16::f16::from_f16(v: half::binary16::f16) -> core::option::Option + +impl vortex_array::dtype::FromPrimitiveOrF16 for i16 + +pub fn i16::from_f16(_: half::binary16::f16) -> core::option::Option + +impl vortex_array::dtype::FromPrimitiveOrF16 for i32 + +pub fn i32::from_f16(_: half::binary16::f16) -> core::option::Option + +impl vortex_array::dtype::FromPrimitiveOrF16 for i64 + +pub fn i64::from_f16(_: half::binary16::f16) -> core::option::Option + +impl vortex_array::dtype::FromPrimitiveOrF16 for i8 + +pub fn i8::from_f16(_: half::binary16::f16) -> core::option::Option + +impl vortex_array::dtype::FromPrimitiveOrF16 for u16 + +pub fn u16::from_f16(value: half::binary16::f16) -> core::option::Option + +impl vortex_array::dtype::FromPrimitiveOrF16 for u32 + +pub fn u32::from_f16(value: half::binary16::f16) -> core::option::Option + +impl vortex_array::dtype::FromPrimitiveOrF16 for u64 + +pub fn u64::from_f16(value: half::binary16::f16) -> core::option::Option + +impl vortex_array::dtype::FromPrimitiveOrF16 for u8 + +pub fn u8::from_f16(value: half::binary16::f16) -> core::option::Option + +impl vortex_array::dtype::FromPrimitiveOrF16 for usize + +pub fn usize::from_f16(value: half::binary16::f16) -> core::option::Option + +pub trait vortex_array::dtype::IntegerPType: vortex_array::dtype::NativePType + num_traits::int::PrimInt + num_traits::cast::ToPrimitive + num_traits::bounds::Bounded + core::ops::arith::AddAssign + num_traits::cast::AsPrimitive + +pub fn vortex_array::dtype::IntegerPType::max_value_as_u64() -> u64 + +impl vortex_array::dtype::IntegerPType for T where T: vortex_array::dtype::NativePType + num_traits::int::PrimInt + num_traits::cast::ToPrimitive + num_traits::bounds::Bounded + core::ops::arith::AddAssign + num_traits::cast::AsPrimitive + +pub fn T::max_value_as_u64() -> u64 + +pub trait vortex_array::dtype::NativeDType + +pub fn vortex_array::dtype::NativeDType::dtype() -> vortex_array::dtype::DType + +impl vortex_array::dtype::NativeDType for &[u8] + +pub fn &[u8]::dtype() -> vortex_array::dtype::DType + +impl vortex_array::dtype::NativeDType for &str + +pub fn &str::dtype() -> vortex_array::dtype::DType + +impl vortex_array::dtype::NativeDType for alloc::string::String + +pub fn alloc::string::String::dtype() -> vortex_array::dtype::DType + +impl vortex_array::dtype::NativeDType for bool + +pub fn bool::dtype() -> vortex_array::dtype::DType + +impl vortex_array::dtype::NativeDType for f32 + +pub fn f32::dtype() -> vortex_array::dtype::DType + +impl vortex_array::dtype::NativeDType for f64 + +pub fn f64::dtype() -> vortex_array::dtype::DType + +impl vortex_array::dtype::NativeDType for half::binary16::f16 + +pub fn half::binary16::f16::dtype() -> vortex_array::dtype::DType + +impl vortex_array::dtype::NativeDType for i16 + +pub fn i16::dtype() -> vortex_array::dtype::DType + +impl vortex_array::dtype::NativeDType for i32 + +pub fn i32::dtype() -> vortex_array::dtype::DType + +impl vortex_array::dtype::NativeDType for i64 + +pub fn i64::dtype() -> vortex_array::dtype::DType + +impl vortex_array::dtype::NativeDType for i8 + +pub fn i8::dtype() -> vortex_array::dtype::DType + +impl vortex_array::dtype::NativeDType for u16 + +pub fn u16::dtype() -> vortex_array::dtype::DType + +impl vortex_array::dtype::NativeDType for u32 + +pub fn u32::dtype() -> vortex_array::dtype::DType + +impl vortex_array::dtype::NativeDType for u64 + +pub fn u64::dtype() -> vortex_array::dtype::DType + +impl vortex_array::dtype::NativeDType for u8 + +pub fn u8::dtype() -> vortex_array::dtype::DType + +impl vortex_array::dtype::NativeDType for vortex_buffer::ByteBuffer + +pub fn vortex_buffer::ByteBuffer::dtype() -> vortex_array::dtype::DType + +impl vortex_array::dtype::NativeDType for alloc::vec::Vec where T: vortex_array::dtype::NativeDType + +pub fn alloc::vec::Vec::dtype() -> vortex_array::dtype::DType + +impl vortex_array::dtype::NativeDType for core::option::Option where T: vortex_array::dtype::NativeDType + +pub fn core::option::Option::dtype() -> vortex_array::dtype::DType + +pub trait vortex_array::dtype::NativeDecimalType: core::marker::Send + core::marker::Sync + core::clone::Clone + core::marker::Copy + core::fmt::Debug + core::fmt::Display + core::default::Default + core::panic::unwind_safe::RefUnwindSafe + core::cmp::Eq + core::cmp::Ord + vortex_array::dtype::BigCast + 'static -pub fn vortex_array::builders::FixedSizeListBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) +pub const vortex_array::dtype::NativeDecimalType::DECIMAL_TYPE: vortex_array::dtype::DecimalType -pub unsafe fn vortex_array::builders::FixedSizeListBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) +pub const vortex_array::dtype::NativeDecimalType::MAX_BY_PRECISION: &'static [Self] -pub fn vortex_array::builders::FixedSizeListBuilder::finish(&mut self) -> vortex_array::ArrayRef +pub const vortex_array::dtype::NativeDecimalType::MAX_PRECISION: u8 -pub fn vortex_array::builders::FixedSizeListBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical +pub const vortex_array::dtype::NativeDecimalType::MAX_SCALE: i8 -pub fn vortex_array::builders::FixedSizeListBuilder::is_empty(&self) -> bool +pub const vortex_array::dtype::NativeDecimalType::MIN_BY_PRECISION: &'static [Self] -pub fn vortex_array::builders::FixedSizeListBuilder::len(&self) -> usize +pub fn vortex_array::dtype::NativeDecimalType::downcast(visitor: V) -> ::Output -pub fn vortex_array::builders::FixedSizeListBuilder::reserve_exact(&mut self, additional: usize) +pub fn vortex_array::dtype::NativeDecimalType::upcast(input: ::Input) -> V -pub fn vortex_array::builders::FixedSizeListBuilder::set_validity(&mut self, validity: vortex_mask::Mask) +impl vortex_array::dtype::NativeDecimalType for i128 -pub unsafe fn vortex_array::builders::FixedSizeListBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) +pub const i128::DECIMAL_TYPE: vortex_array::dtype::DecimalType -pub struct vortex_array::builders::ListBuilder +pub const i128::MAX_BY_PRECISION: &'static [Self] -impl vortex_array::builders::ListBuilder +pub const i128::MAX_PRECISION: u8 -pub fn vortex_array::builders::ListBuilder::append_array_as_list(&mut self, array: &vortex_array::ArrayRef) -> vortex_error::VortexResult<()> +pub const i128::MAX_SCALE: i8 -pub fn vortex_array::builders::ListBuilder::append_value(&mut self, value: vortex_array::scalar::ListScalar<'_>) -> vortex_error::VortexResult<()> +pub const i128::MIN_BY_PRECISION: &'static [Self] -pub fn vortex_array::builders::ListBuilder::element_dtype(&self) -> &vortex_array::dtype::DType +pub fn i128::downcast(visitor: V) -> ::Output -pub fn vortex_array::builders::ListBuilder::finish_into_list(&mut self) -> vortex_array::arrays::ListArray +pub fn i128::upcast(input: ::Input) -> V -pub fn vortex_array::builders::ListBuilder::new(value_dtype: alloc::sync::Arc, nullability: vortex_array::dtype::Nullability) -> Self +impl vortex_array::dtype::NativeDecimalType for i16 -pub fn vortex_array::builders::ListBuilder::with_capacity(value_dtype: alloc::sync::Arc, nullability: vortex_array::dtype::Nullability, elements_capacity: usize, capacity: usize) -> Self +pub const i16::DECIMAL_TYPE: vortex_array::dtype::DecimalType -impl vortex_array::builders::ArrayBuilder for vortex_array::builders::ListBuilder +pub const i16::MAX_BY_PRECISION: &'static [Self] -pub fn vortex_array::builders::ListBuilder::append_default(&mut self) +pub const i16::MAX_PRECISION: u8 -pub fn vortex_array::builders::ListBuilder::append_defaults(&mut self, n: usize) +pub const i16::MAX_SCALE: i8 -pub fn vortex_array::builders::ListBuilder::append_null(&mut self) +pub const i16::MIN_BY_PRECISION: &'static [Self] -pub fn vortex_array::builders::ListBuilder::append_nulls(&mut self, n: usize) +pub fn i16::downcast(visitor: V) -> ::Output -pub unsafe fn vortex_array::builders::ListBuilder::append_nulls_unchecked(&mut self, n: usize) +pub fn i16::upcast(input: ::Input) -> V -pub fn vortex_array::builders::ListBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> +impl vortex_array::dtype::NativeDecimalType for i32 -pub fn vortex_array::builders::ListBuilder::append_zero(&mut self) +pub const i32::DECIMAL_TYPE: vortex_array::dtype::DecimalType -pub fn vortex_array::builders::ListBuilder::append_zeros(&mut self, n: usize) +pub const i32::MAX_BY_PRECISION: &'static [Self] -pub fn vortex_array::builders::ListBuilder::as_any(&self) -> &dyn core::any::Any +pub const i32::MAX_PRECISION: u8 -pub fn vortex_array::builders::ListBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any +pub const i32::MAX_SCALE: i8 -pub fn vortex_array::builders::ListBuilder::dtype(&self) -> &vortex_array::dtype::DType +pub const i32::MIN_BY_PRECISION: &'static [Self] -pub fn vortex_array::builders::ListBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) +pub fn i32::downcast(visitor: V) -> ::Output -pub unsafe fn vortex_array::builders::ListBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) +pub fn i32::upcast(input: ::Input) -> V -pub fn vortex_array::builders::ListBuilder::finish(&mut self) -> vortex_array::ArrayRef +impl vortex_array::dtype::NativeDecimalType for i64 -pub fn vortex_array::builders::ListBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical +pub const i64::DECIMAL_TYPE: vortex_array::dtype::DecimalType -pub fn vortex_array::builders::ListBuilder::is_empty(&self) -> bool +pub const i64::MAX_BY_PRECISION: &'static [Self] -pub fn vortex_array::builders::ListBuilder::len(&self) -> usize +pub const i64::MAX_PRECISION: u8 -pub fn vortex_array::builders::ListBuilder::reserve_exact(&mut self, additional: usize) +pub const i64::MAX_SCALE: i8 -pub fn vortex_array::builders::ListBuilder::set_validity(&mut self, validity: vortex_mask::Mask) +pub const i64::MIN_BY_PRECISION: &'static [Self] -pub unsafe fn vortex_array::builders::ListBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) +pub fn i64::downcast(visitor: V) -> ::Output -pub struct vortex_array::builders::ListViewBuilder +pub fn i64::upcast(input: ::Input) -> V -impl vortex_array::builders::ListViewBuilder +impl vortex_array::dtype::NativeDecimalType for i8 -pub fn vortex_array::builders::ListViewBuilder::append_array_as_list(&mut self, array: &vortex_array::ArrayRef) -> vortex_error::VortexResult<()> +pub const i8::DECIMAL_TYPE: vortex_array::dtype::DecimalType -pub fn vortex_array::builders::ListViewBuilder::append_value(&mut self, value: vortex_array::scalar::ListScalar<'_>) -> vortex_error::VortexResult<()> +pub const i8::MAX_BY_PRECISION: &'static [Self] -pub fn vortex_array::builders::ListViewBuilder::element_dtype(&self) -> &vortex_array::dtype::DType +pub const i8::MAX_PRECISION: u8 + +pub const i8::MAX_SCALE: i8 + +pub const i8::MIN_BY_PRECISION: &'static [Self] + +pub fn i8::downcast(visitor: V) -> ::Output + +pub fn i8::upcast(input: ::Input) -> V + +impl vortex_array::dtype::NativeDecimalType for vortex_array::dtype::i256 + +pub const vortex_array::dtype::i256::DECIMAL_TYPE: vortex_array::dtype::DecimalType + +pub const vortex_array::dtype::i256::MAX_BY_PRECISION: &'static [Self] + +pub const vortex_array::dtype::i256::MAX_PRECISION: u8 + +pub const vortex_array::dtype::i256::MAX_SCALE: i8 + +pub const vortex_array::dtype::i256::MIN_BY_PRECISION: &'static [Self] + +pub fn vortex_array::dtype::i256::downcast(visitor: V) -> ::Output + +pub fn vortex_array::dtype::i256::upcast(input: ::Input) -> V + +pub trait vortex_array::dtype::NativePType: core::marker::Send + core::marker::Sync + core::clone::Clone + core::marker::Copy + core::fmt::Debug + core::fmt::Display + core::default::Default + core::panic::unwind_safe::RefUnwindSafe + num_traits::Num + num_traits::cast::NumCast + vortex_array::dtype::FromPrimitiveOrF16 + vortex_array::dtype::ToBytes + vortex_array::dtype::TryFromBytes + vortex_array::dtype::ptype::private::Sealed + 'static + +pub const vortex_array::dtype::NativePType::PTYPE: vortex_array::dtype::PType + +pub fn vortex_array::dtype::NativePType::downcast(visitor: V) -> ::Output + +pub fn vortex_array::dtype::NativePType::is_eq(self, other: Self) -> bool + +pub fn vortex_array::dtype::NativePType::is_ge(self, other: Self) -> bool + +pub fn vortex_array::dtype::NativePType::is_gt(self, other: Self) -> bool + +pub fn vortex_array::dtype::NativePType::is_infinite(self) -> bool + +pub fn vortex_array::dtype::NativePType::is_le(self, other: Self) -> bool + +pub fn vortex_array::dtype::NativePType::is_lt(self, other: Self) -> bool + +pub fn vortex_array::dtype::NativePType::is_nan(self) -> bool + +pub fn vortex_array::dtype::NativePType::total_compare(self, other: Self) -> core::cmp::Ordering + +pub fn vortex_array::dtype::NativePType::upcast(input: ::Input) -> V + +impl vortex_array::dtype::NativePType for f32 + +pub const f32::PTYPE: vortex_array::dtype::PType + +pub fn f32::downcast(visitor: V) -> ::Output + +pub fn f32::is_eq(self, other: Self) -> bool + +pub fn f32::is_ge(self, other: Self) -> bool + +pub fn f32::is_gt(self, other: Self) -> bool + +pub fn f32::is_infinite(self) -> bool + +pub fn f32::is_le(self, other: Self) -> bool + +pub fn f32::is_lt(self, other: Self) -> bool + +pub fn f32::is_nan(self) -> bool + +pub fn f32::total_compare(self, other: Self) -> core::cmp::Ordering + +pub fn f32::upcast(input: ::Input) -> V + +impl vortex_array::dtype::NativePType for f64 + +pub const f64::PTYPE: vortex_array::dtype::PType + +pub fn f64::downcast(visitor: V) -> ::Output + +pub fn f64::is_eq(self, other: Self) -> bool + +pub fn f64::is_ge(self, other: Self) -> bool + +pub fn f64::is_gt(self, other: Self) -> bool + +pub fn f64::is_infinite(self) -> bool + +pub fn f64::is_le(self, other: Self) -> bool + +pub fn f64::is_lt(self, other: Self) -> bool + +pub fn f64::is_nan(self) -> bool + +pub fn f64::total_compare(self, other: Self) -> core::cmp::Ordering + +pub fn f64::upcast(input: ::Input) -> V + +impl vortex_array::dtype::NativePType for half::binary16::f16 + +pub const half::binary16::f16::PTYPE: vortex_array::dtype::PType + +pub fn half::binary16::f16::downcast(visitor: V) -> ::Output + +pub fn half::binary16::f16::is_eq(self, other: Self) -> bool + +pub fn half::binary16::f16::is_ge(self, other: Self) -> bool + +pub fn half::binary16::f16::is_gt(self, other: Self) -> bool + +pub fn half::binary16::f16::is_infinite(self) -> bool + +pub fn half::binary16::f16::is_le(self, other: Self) -> bool + +pub fn half::binary16::f16::is_lt(self, other: Self) -> bool + +pub fn half::binary16::f16::is_nan(self) -> bool + +pub fn half::binary16::f16::total_compare(self, other: Self) -> core::cmp::Ordering + +pub fn half::binary16::f16::upcast(input: ::Input) -> V + +impl vortex_array::dtype::NativePType for i16 + +pub const i16::PTYPE: vortex_array::dtype::PType + +pub fn i16::downcast(visitor: V) -> ::Output + +pub fn i16::is_eq(self, other: Self) -> bool + +pub fn i16::is_ge(self, other: Self) -> bool + +pub fn i16::is_gt(self, other: Self) -> bool + +pub fn i16::is_infinite(self) -> bool + +pub fn i16::is_le(self, other: Self) -> bool + +pub fn i16::is_lt(self, other: Self) -> bool + +pub fn i16::is_nan(self) -> bool + +pub fn i16::total_compare(self, other: Self) -> core::cmp::Ordering + +pub fn i16::upcast(input: ::Input) -> V + +impl vortex_array::dtype::NativePType for i32 + +pub const i32::PTYPE: vortex_array::dtype::PType + +pub fn i32::downcast(visitor: V) -> ::Output + +pub fn i32::is_eq(self, other: Self) -> bool + +pub fn i32::is_ge(self, other: Self) -> bool + +pub fn i32::is_gt(self, other: Self) -> bool + +pub fn i32::is_infinite(self) -> bool + +pub fn i32::is_le(self, other: Self) -> bool + +pub fn i32::is_lt(self, other: Self) -> bool + +pub fn i32::is_nan(self) -> bool + +pub fn i32::total_compare(self, other: Self) -> core::cmp::Ordering + +pub fn i32::upcast(input: ::Input) -> V + +impl vortex_array::dtype::NativePType for i64 -pub fn vortex_array::builders::ListViewBuilder::finish_into_listview(&mut self) -> vortex_array::arrays::ListViewArray +pub const i64::PTYPE: vortex_array::dtype::PType -pub fn vortex_array::builders::ListViewBuilder::new(element_dtype: alloc::sync::Arc, nullability: vortex_array::dtype::Nullability) -> Self +pub fn i64::downcast(visitor: V) -> ::Output -pub fn vortex_array::builders::ListViewBuilder::with_capacity(element_dtype: alloc::sync::Arc, nullability: vortex_array::dtype::Nullability, elements_capacity: usize, capacity: usize) -> Self +pub fn i64::is_eq(self, other: Self) -> bool -impl vortex_array::builders::ArrayBuilder for vortex_array::builders::ListViewBuilder +pub fn i64::is_ge(self, other: Self) -> bool -pub fn vortex_array::builders::ListViewBuilder::append_default(&mut self) +pub fn i64::is_gt(self, other: Self) -> bool -pub fn vortex_array::builders::ListViewBuilder::append_defaults(&mut self, n: usize) +pub fn i64::is_infinite(self) -> bool -pub fn vortex_array::builders::ListViewBuilder::append_null(&mut self) +pub fn i64::is_le(self, other: Self) -> bool -pub fn vortex_array::builders::ListViewBuilder::append_nulls(&mut self, n: usize) +pub fn i64::is_lt(self, other: Self) -> bool -pub unsafe fn vortex_array::builders::ListViewBuilder::append_nulls_unchecked(&mut self, n: usize) +pub fn i64::is_nan(self) -> bool -pub fn vortex_array::builders::ListViewBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> +pub fn i64::total_compare(self, other: Self) -> core::cmp::Ordering -pub fn vortex_array::builders::ListViewBuilder::append_zero(&mut self) +pub fn i64::upcast(input: ::Input) -> V -pub fn vortex_array::builders::ListViewBuilder::append_zeros(&mut self, n: usize) +impl vortex_array::dtype::NativePType for i8 -pub fn vortex_array::builders::ListViewBuilder::as_any(&self) -> &dyn core::any::Any +pub const i8::PTYPE: vortex_array::dtype::PType -pub fn vortex_array::builders::ListViewBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any +pub fn i8::downcast(visitor: V) -> ::Output -pub fn vortex_array::builders::ListViewBuilder::dtype(&self) -> &vortex_array::dtype::DType +pub fn i8::is_eq(self, other: Self) -> bool -pub fn vortex_array::builders::ListViewBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) +pub fn i8::is_ge(self, other: Self) -> bool -pub unsafe fn vortex_array::builders::ListViewBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) +pub fn i8::is_gt(self, other: Self) -> bool -pub fn vortex_array::builders::ListViewBuilder::finish(&mut self) -> vortex_array::ArrayRef +pub fn i8::is_infinite(self) -> bool -pub fn vortex_array::builders::ListViewBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical +pub fn i8::is_le(self, other: Self) -> bool -pub fn vortex_array::builders::ListViewBuilder::is_empty(&self) -> bool +pub fn i8::is_lt(self, other: Self) -> bool -pub fn vortex_array::builders::ListViewBuilder::len(&self) -> usize +pub fn i8::is_nan(self) -> bool -pub fn vortex_array::builders::ListViewBuilder::reserve_exact(&mut self, capacity: usize) +pub fn i8::total_compare(self, other: Self) -> core::cmp::Ordering -pub fn vortex_array::builders::ListViewBuilder::set_validity(&mut self, validity: vortex_mask::Mask) +pub fn i8::upcast(input: ::Input) -> V -pub unsafe fn vortex_array::builders::ListViewBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) +impl vortex_array::dtype::NativePType for u16 -pub struct vortex_array::builders::NullBuilder +pub const u16::PTYPE: vortex_array::dtype::PType -impl vortex_array::builders::NullBuilder +pub fn u16::downcast(visitor: V) -> ::Output -pub fn vortex_array::builders::NullBuilder::new() -> Self +pub fn u16::is_eq(self, other: Self) -> bool -impl core::default::Default for vortex_array::builders::NullBuilder +pub fn u16::is_ge(self, other: Self) -> bool -pub fn vortex_array::builders::NullBuilder::default() -> Self +pub fn u16::is_gt(self, other: Self) -> bool -impl vortex_array::builders::ArrayBuilder for vortex_array::builders::NullBuilder +pub fn u16::is_infinite(self) -> bool -pub fn vortex_array::builders::NullBuilder::append_default(&mut self) +pub fn u16::is_le(self, other: Self) -> bool -pub fn vortex_array::builders::NullBuilder::append_defaults(&mut self, n: usize) +pub fn u16::is_lt(self, other: Self) -> bool -pub fn vortex_array::builders::NullBuilder::append_null(&mut self) +pub fn u16::is_nan(self) -> bool -pub fn vortex_array::builders::NullBuilder::append_nulls(&mut self, n: usize) +pub fn u16::total_compare(self, other: Self) -> core::cmp::Ordering -pub unsafe fn vortex_array::builders::NullBuilder::append_nulls_unchecked(&mut self, n: usize) +pub fn u16::upcast(input: ::Input) -> V -pub fn vortex_array::builders::NullBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> +impl vortex_array::dtype::NativePType for u32 -pub fn vortex_array::builders::NullBuilder::append_zero(&mut self) +pub const u32::PTYPE: vortex_array::dtype::PType -pub fn vortex_array::builders::NullBuilder::append_zeros(&mut self, n: usize) +pub fn u32::downcast(visitor: V) -> ::Output -pub fn vortex_array::builders::NullBuilder::as_any(&self) -> &dyn core::any::Any +pub fn u32::is_eq(self, other: Self) -> bool -pub fn vortex_array::builders::NullBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any +pub fn u32::is_ge(self, other: Self) -> bool -pub fn vortex_array::builders::NullBuilder::dtype(&self) -> &vortex_array::dtype::DType +pub fn u32::is_gt(self, other: Self) -> bool -pub fn vortex_array::builders::NullBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) +pub fn u32::is_infinite(self) -> bool -pub unsafe fn vortex_array::builders::NullBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) +pub fn u32::is_le(self, other: Self) -> bool -pub fn vortex_array::builders::NullBuilder::finish(&mut self) -> vortex_array::ArrayRef +pub fn u32::is_lt(self, other: Self) -> bool -pub fn vortex_array::builders::NullBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical +pub fn u32::is_nan(self) -> bool -pub fn vortex_array::builders::NullBuilder::is_empty(&self) -> bool +pub fn u32::total_compare(self, other: Self) -> core::cmp::Ordering -pub fn vortex_array::builders::NullBuilder::len(&self) -> usize +pub fn u32::upcast(input: ::Input) -> V -pub fn vortex_array::builders::NullBuilder::reserve_exact(&mut self, _additional: usize) +impl vortex_array::dtype::NativePType for u64 -pub fn vortex_array::builders::NullBuilder::set_validity(&mut self, validity: vortex_mask::Mask) +pub const u64::PTYPE: vortex_array::dtype::PType -pub unsafe fn vortex_array::builders::NullBuilder::set_validity_unchecked(&mut self, _validity: vortex_mask::Mask) +pub fn u64::downcast(visitor: V) -> ::Output -pub struct vortex_array::builders::PrimitiveBuilder +pub fn u64::is_eq(self, other: Self) -> bool -impl vortex_array::builders::PrimitiveBuilder +pub fn u64::is_ge(self, other: Self) -> bool -pub fn vortex_array::builders::PrimitiveBuilder::append_n_values(&mut self, value: T, n: usize) +pub fn u64::is_gt(self, other: Self) -> bool -pub fn vortex_array::builders::PrimitiveBuilder::append_value(&mut self, value: T) +pub fn u64::is_infinite(self) -> bool -pub fn vortex_array::builders::PrimitiveBuilder::extend_with_iterator(&mut self, iter: impl core::iter::traits::collect::IntoIterator, mask: vortex_mask::Mask) +pub fn u64::is_le(self, other: Self) -> bool -pub fn vortex_array::builders::PrimitiveBuilder::finish_into_primitive(&mut self) -> vortex_array::arrays::PrimitiveArray +pub fn u64::is_lt(self, other: Self) -> bool -pub fn vortex_array::builders::PrimitiveBuilder::new(nullability: vortex_array::dtype::Nullability) -> Self +pub fn u64::is_nan(self) -> bool -pub fn vortex_array::builders::PrimitiveBuilder::uninit_range(&mut self, len: usize) -> vortex_array::builders::UninitRange<'_, T> +pub fn u64::total_compare(self, other: Self) -> core::cmp::Ordering -pub fn vortex_array::builders::PrimitiveBuilder::values(&self) -> &[T] +pub fn u64::upcast(input: ::Input) -> V -pub fn vortex_array::builders::PrimitiveBuilder::values_mut(&mut self) -> &mut [T] +impl vortex_array::dtype::NativePType for u8 -pub fn vortex_array::builders::PrimitiveBuilder::with_capacity(nullability: vortex_array::dtype::Nullability, capacity: usize) -> Self +pub const u8::PTYPE: vortex_array::dtype::PType -impl vortex_array::builders::ArrayBuilder for vortex_array::builders::PrimitiveBuilder +pub fn u8::downcast(visitor: V) -> ::Output -pub fn vortex_array::builders::PrimitiveBuilder::append_default(&mut self) +pub fn u8::is_eq(self, other: Self) -> bool -pub fn vortex_array::builders::PrimitiveBuilder::append_defaults(&mut self, n: usize) +pub fn u8::is_ge(self, other: Self) -> bool -pub fn vortex_array::builders::PrimitiveBuilder::append_null(&mut self) +pub fn u8::is_gt(self, other: Self) -> bool -pub fn vortex_array::builders::PrimitiveBuilder::append_nulls(&mut self, n: usize) +pub fn u8::is_infinite(self) -> bool -pub unsafe fn vortex_array::builders::PrimitiveBuilder::append_nulls_unchecked(&mut self, n: usize) +pub fn u8::is_le(self, other: Self) -> bool -pub fn vortex_array::builders::PrimitiveBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> +pub fn u8::is_lt(self, other: Self) -> bool -pub fn vortex_array::builders::PrimitiveBuilder::append_zero(&mut self) +pub fn u8::is_nan(self) -> bool -pub fn vortex_array::builders::PrimitiveBuilder::append_zeros(&mut self, n: usize) +pub fn u8::total_compare(self, other: Self) -> core::cmp::Ordering -pub fn vortex_array::builders::PrimitiveBuilder::as_any(&self) -> &dyn core::any::Any +pub fn u8::upcast(input: ::Input) -> V -pub fn vortex_array::builders::PrimitiveBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any +pub trait vortex_array::dtype::PTypeDowncast -pub fn vortex_array::builders::PrimitiveBuilder::dtype(&self) -> &vortex_array::dtype::DType +pub type vortex_array::dtype::PTypeDowncast::Output -pub fn vortex_array::builders::PrimitiveBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) +pub fn vortex_array::dtype::PTypeDowncast::into_f16(self) -> Self::Output -pub unsafe fn vortex_array::builders::PrimitiveBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) +pub fn vortex_array::dtype::PTypeDowncast::into_f32(self) -> Self::Output -pub fn vortex_array::builders::PrimitiveBuilder::finish(&mut self) -> vortex_array::ArrayRef +pub fn vortex_array::dtype::PTypeDowncast::into_f64(self) -> Self::Output -pub fn vortex_array::builders::PrimitiveBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical +pub fn vortex_array::dtype::PTypeDowncast::into_i16(self) -> Self::Output -pub fn vortex_array::builders::PrimitiveBuilder::is_empty(&self) -> bool +pub fn vortex_array::dtype::PTypeDowncast::into_i32(self) -> Self::Output -pub fn vortex_array::builders::PrimitiveBuilder::len(&self) -> usize +pub fn vortex_array::dtype::PTypeDowncast::into_i64(self) -> Self::Output -pub fn vortex_array::builders::PrimitiveBuilder::reserve_exact(&mut self, additional: usize) +pub fn vortex_array::dtype::PTypeDowncast::into_i8(self) -> Self::Output -pub fn vortex_array::builders::PrimitiveBuilder::set_validity(&mut self, validity: vortex_mask::Mask) +pub fn vortex_array::dtype::PTypeDowncast::into_u16(self) -> Self::Output -pub unsafe fn vortex_array::builders::PrimitiveBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) +pub fn vortex_array::dtype::PTypeDowncast::into_u32(self) -> Self::Output -pub struct vortex_array::builders::StructBuilder +pub fn vortex_array::dtype::PTypeDowncast::into_u64(self) -> Self::Output -impl vortex_array::builders::StructBuilder +pub fn vortex_array::dtype::PTypeDowncast::into_u8(self) -> Self::Output -pub fn vortex_array::builders::StructBuilder::append_value(&mut self, struct_scalar: vortex_array::scalar::StructScalar<'_>) -> vortex_error::VortexResult<()> +pub trait vortex_array::dtype::PTypeDowncastExt: vortex_array::dtype::PTypeDowncast -pub fn vortex_array::builders::StructBuilder::finish_into_struct(&mut self) -> vortex_array::arrays::StructArray +pub fn vortex_array::dtype::PTypeDowncastExt::downcast(self) -> Self::Output where Self: core::marker::Sized -pub fn vortex_array::builders::StructBuilder::new(struct_dtype: vortex_array::dtype::StructFields, nullability: vortex_array::dtype::Nullability) -> Self +impl vortex_array::dtype::PTypeDowncastExt for T -pub fn vortex_array::builders::StructBuilder::struct_fields(&self) -> &vortex_array::dtype::StructFields +pub fn T::downcast(self) -> Self::Output where Self: core::marker::Sized -pub fn vortex_array::builders::StructBuilder::with_capacity(struct_dtype: vortex_array::dtype::StructFields, nullability: vortex_array::dtype::Nullability, capacity: usize) -> Self +pub trait vortex_array::dtype::PTypeUpcast -impl vortex_array::builders::ArrayBuilder for vortex_array::builders::StructBuilder +pub type vortex_array::dtype::PTypeUpcast::Input -pub fn vortex_array::builders::StructBuilder::append_default(&mut self) +pub fn vortex_array::dtype::PTypeUpcast::from_f16(input: Self::Input) -> Self -pub fn vortex_array::builders::StructBuilder::append_defaults(&mut self, n: usize) +pub fn vortex_array::dtype::PTypeUpcast::from_f32(input: Self::Input) -> Self -pub fn vortex_array::builders::StructBuilder::append_null(&mut self) +pub fn vortex_array::dtype::PTypeUpcast::from_f64(input: Self::Input) -> Self -pub fn vortex_array::builders::StructBuilder::append_nulls(&mut self, n: usize) +pub fn vortex_array::dtype::PTypeUpcast::from_i16(input: Self::Input) -> Self -pub unsafe fn vortex_array::builders::StructBuilder::append_nulls_unchecked(&mut self, n: usize) +pub fn vortex_array::dtype::PTypeUpcast::from_i32(input: Self::Input) -> Self -pub fn vortex_array::builders::StructBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> +pub fn vortex_array::dtype::PTypeUpcast::from_i64(input: Self::Input) -> Self -pub fn vortex_array::builders::StructBuilder::append_zero(&mut self) +pub fn vortex_array::dtype::PTypeUpcast::from_i8(input: Self::Input) -> Self -pub fn vortex_array::builders::StructBuilder::append_zeros(&mut self, n: usize) +pub fn vortex_array::dtype::PTypeUpcast::from_u16(input: Self::Input) -> Self -pub fn vortex_array::builders::StructBuilder::as_any(&self) -> &dyn core::any::Any +pub fn vortex_array::dtype::PTypeUpcast::from_u32(input: Self::Input) -> Self -pub fn vortex_array::builders::StructBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any +pub fn vortex_array::dtype::PTypeUpcast::from_u64(input: Self::Input) -> Self -pub fn vortex_array::builders::StructBuilder::dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_array::dtype::PTypeUpcast::from_u8(input: Self::Input) -> Self -pub fn vortex_array::builders::StructBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) +pub trait vortex_array::dtype::PhysicalPType: vortex_array::dtype::NativePType -pub unsafe fn vortex_array::builders::StructBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) +pub type vortex_array::dtype::PhysicalPType::Physical: vortex_array::dtype::NativePType + num_traits::sign::Unsigned -pub fn vortex_array::builders::StructBuilder::finish(&mut self) -> vortex_array::ArrayRef +impl vortex_array::dtype::PhysicalPType for i16 -pub fn vortex_array::builders::StructBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical +pub type i16::Physical = u16 -pub fn vortex_array::builders::StructBuilder::is_empty(&self) -> bool +impl vortex_array::dtype::PhysicalPType for i32 -pub fn vortex_array::builders::StructBuilder::len(&self) -> usize +pub type i32::Physical = u32 -pub fn vortex_array::builders::StructBuilder::reserve_exact(&mut self, capacity: usize) +impl vortex_array::dtype::PhysicalPType for i64 -pub fn vortex_array::builders::StructBuilder::set_validity(&mut self, validity: vortex_mask::Mask) +pub type i64::Physical = u64 -pub unsafe fn vortex_array::builders::StructBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) +impl vortex_array::dtype::PhysicalPType for i8 -pub struct vortex_array::builders::UninitRange<'a, T> +pub type i8::Physical = u8 -impl vortex_array::builders::UninitRange<'_, T> +impl vortex_array::dtype::PhysicalPType for u16 -pub unsafe fn vortex_array::builders::UninitRange<'_, T>::append_mask(&mut self, mask: vortex_mask::Mask) +pub type u16::Physical = u16 -pub fn vortex_array::builders::UninitRange<'_, T>::copy_from_slice(&mut self, local_offset: usize, src: &[T]) where T: core::marker::Copy +impl vortex_array::dtype::PhysicalPType for u32 -pub unsafe fn vortex_array::builders::UninitRange<'_, T>::finish(self) +pub type u32::Physical = u32 -pub fn vortex_array::builders::UninitRange<'_, T>::is_empty(&self) -> bool +impl vortex_array::dtype::PhysicalPType for u64 -pub fn vortex_array::builders::UninitRange<'_, T>::len(&self) -> usize +pub type u64::Physical = u64 -pub fn vortex_array::builders::UninitRange<'_, T>::set_validity_bit(&mut self, index: usize, v: bool) +impl vortex_array::dtype::PhysicalPType for u8 -pub fn vortex_array::builders::UninitRange<'_, T>::set_value(&mut self, index: usize, value: T) +pub type u8::Physical = u8 -pub unsafe fn vortex_array::builders::UninitRange<'_, T>::slice_uninit_mut(&mut self, offset: usize, len: usize) -> &mut [core::mem::maybe_uninit::MaybeUninit] +pub trait vortex_array::dtype::ToBytes: core::marker::Sized -pub struct vortex_array::builders::VarBinViewBuilder +pub fn vortex_array::dtype::ToBytes::to_le_bytes(&self) -> &[u8] -impl vortex_array::builders::VarBinViewBuilder +impl vortex_array::dtype::ToBytes for f32 -pub fn vortex_array::builders::VarBinViewBuilder::append_n_values>(&mut self, value: S, n: usize) +pub fn f32::to_le_bytes(&self) -> &[u8] -pub fn vortex_array::builders::VarBinViewBuilder::append_value>(&mut self, value: S) +impl vortex_array::dtype::ToBytes for f64 -pub fn vortex_array::builders::VarBinViewBuilder::completed_block_count(&self) -> u32 +pub fn f64::to_le_bytes(&self) -> &[u8] -pub fn vortex_array::builders::VarBinViewBuilder::finish_into_varbinview(&mut self) -> vortex_array::arrays::VarBinViewArray +impl vortex_array::dtype::ToBytes for half::binary16::f16 -pub fn vortex_array::builders::VarBinViewBuilder::new(dtype: vortex_array::dtype::DType, capacity: usize, completed: vortex_array::builders::CompletedBuffers, growth_strategy: vortex_array::builders::BufferGrowthStrategy, compaction_threshold: f64) -> Self +pub fn half::binary16::f16::to_le_bytes(&self) -> &[u8] -pub fn vortex_array::builders::VarBinViewBuilder::push_buffer_and_adjusted_views(&mut self, buffers: &[vortex_buffer::ByteBuffer], views: &vortex_buffer::buffer::Buffer, validity_mask: vortex_mask::Mask) +impl vortex_array::dtype::ToBytes for i16 -pub fn vortex_array::builders::VarBinViewBuilder::with_buffer_deduplication(dtype: vortex_array::dtype::DType, capacity: usize) -> Self +pub fn i16::to_le_bytes(&self) -> &[u8] -pub fn vortex_array::builders::VarBinViewBuilder::with_capacity(dtype: vortex_array::dtype::DType, capacity: usize) -> Self +impl vortex_array::dtype::ToBytes for i32 -pub fn vortex_array::builders::VarBinViewBuilder::with_compaction(dtype: vortex_array::dtype::DType, capacity: usize, compaction_threshold: f64) -> Self +pub fn i32::to_le_bytes(&self) -> &[u8] -impl vortex_array::builders::ArrayBuilder for vortex_array::builders::VarBinViewBuilder +impl vortex_array::dtype::ToBytes for i64 -pub fn vortex_array::builders::VarBinViewBuilder::append_default(&mut self) +pub fn i64::to_le_bytes(&self) -> &[u8] -pub fn vortex_array::builders::VarBinViewBuilder::append_defaults(&mut self, n: usize) +impl vortex_array::dtype::ToBytes for i8 -pub fn vortex_array::builders::VarBinViewBuilder::append_null(&mut self) +pub fn i8::to_le_bytes(&self) -> &[u8] -pub fn vortex_array::builders::VarBinViewBuilder::append_nulls(&mut self, n: usize) +impl vortex_array::dtype::ToBytes for u16 -pub unsafe fn vortex_array::builders::VarBinViewBuilder::append_nulls_unchecked(&mut self, n: usize) +pub fn u16::to_le_bytes(&self) -> &[u8] -pub fn vortex_array::builders::VarBinViewBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> +impl vortex_array::dtype::ToBytes for u32 -pub fn vortex_array::builders::VarBinViewBuilder::append_zero(&mut self) +pub fn u32::to_le_bytes(&self) -> &[u8] -pub fn vortex_array::builders::VarBinViewBuilder::append_zeros(&mut self, n: usize) +impl vortex_array::dtype::ToBytes for u64 -pub fn vortex_array::builders::VarBinViewBuilder::as_any(&self) -> &dyn core::any::Any +pub fn u64::to_le_bytes(&self) -> &[u8] -pub fn vortex_array::builders::VarBinViewBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any +impl vortex_array::dtype::ToBytes for u8 -pub fn vortex_array::builders::VarBinViewBuilder::dtype(&self) -> &vortex_array::dtype::DType +pub fn u8::to_le_bytes(&self) -> &[u8] -pub fn vortex_array::builders::VarBinViewBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) +impl vortex_array::dtype::ToBytes for vortex_array::scalar::PValue -pub unsafe fn vortex_array::builders::VarBinViewBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) +pub fn vortex_array::scalar::PValue::to_le_bytes(&self) -> &[u8] -pub fn vortex_array::builders::VarBinViewBuilder::finish(&mut self) -> vortex_array::ArrayRef +pub trait vortex_array::dtype::ToI256 -pub fn vortex_array::builders::VarBinViewBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical +pub fn vortex_array::dtype::ToI256::to_i256(&self) -> core::option::Option -pub fn vortex_array::builders::VarBinViewBuilder::is_empty(&self) -> bool +impl vortex_array::dtype::ToI256 for i128 -pub fn vortex_array::builders::VarBinViewBuilder::len(&self) -> usize +pub fn i128::to_i256(&self) -> core::option::Option -pub fn vortex_array::builders::VarBinViewBuilder::reserve_exact(&mut self, additional: usize) +impl vortex_array::dtype::ToI256 for i16 -pub fn vortex_array::builders::VarBinViewBuilder::set_validity(&mut self, validity: vortex_mask::Mask) +pub fn i16::to_i256(&self) -> core::option::Option -pub unsafe fn vortex_array::builders::VarBinViewBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) +impl vortex_array::dtype::ToI256 for i32 -pub const vortex_array::builders::DEFAULT_BUILDER_CAPACITY: usize +pub fn i32::to_i256(&self) -> core::option::Option -pub trait vortex_array::builders::ArrayBuilder: core::marker::Send +impl vortex_array::dtype::ToI256 for i64 -pub fn vortex_array::builders::ArrayBuilder::append_default(&mut self) +pub fn i64::to_i256(&self) -> core::option::Option -pub fn vortex_array::builders::ArrayBuilder::append_defaults(&mut self, n: usize) +impl vortex_array::dtype::ToI256 for i8 -pub fn vortex_array::builders::ArrayBuilder::append_null(&mut self) +pub fn i8::to_i256(&self) -> core::option::Option -pub fn vortex_array::builders::ArrayBuilder::append_nulls(&mut self, n: usize) +impl vortex_array::dtype::ToI256 for u128 -pub unsafe fn vortex_array::builders::ArrayBuilder::append_nulls_unchecked(&mut self, n: usize) +pub fn u128::to_i256(&self) -> core::option::Option -pub fn vortex_array::builders::ArrayBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> +impl vortex_array::dtype::ToI256 for u16 -pub fn vortex_array::builders::ArrayBuilder::append_zero(&mut self) +pub fn u16::to_i256(&self) -> core::option::Option -pub fn vortex_array::builders::ArrayBuilder::append_zeros(&mut self, n: usize) +impl vortex_array::dtype::ToI256 for u32 -pub fn vortex_array::builders::ArrayBuilder::as_any(&self) -> &dyn core::any::Any +pub fn u32::to_i256(&self) -> core::option::Option -pub fn vortex_array::builders::ArrayBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any +impl vortex_array::dtype::ToI256 for u64 -pub fn vortex_array::builders::ArrayBuilder::dtype(&self) -> &vortex_array::dtype::DType +pub fn u64::to_i256(&self) -> core::option::Option -pub fn vortex_array::builders::ArrayBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) +impl vortex_array::dtype::ToI256 for u8 -pub unsafe fn vortex_array::builders::ArrayBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) +pub fn u8::to_i256(&self) -> core::option::Option -pub fn vortex_array::builders::ArrayBuilder::finish(&mut self) -> vortex_array::ArrayRef +impl vortex_array::dtype::ToI256 for vortex_array::dtype::i256 -pub fn vortex_array::builders::ArrayBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical +pub fn vortex_array::dtype::i256::to_i256(&self) -> core::option::Option -pub fn vortex_array::builders::ArrayBuilder::is_empty(&self) -> bool +pub trait vortex_array::dtype::TryFromBytes: core::marker::Sized -pub fn vortex_array::builders::ArrayBuilder::len(&self) -> usize +pub fn vortex_array::dtype::TryFromBytes::try_from_le_bytes(bytes: &[u8]) -> vortex_error::VortexResult -pub fn vortex_array::builders::ArrayBuilder::reserve_exact(&mut self, additional: usize) +impl vortex_array::dtype::TryFromBytes for f32 -pub fn vortex_array::builders::ArrayBuilder::set_validity(&mut self, validity: vortex_mask::Mask) +pub fn f32::try_from_le_bytes(bytes: &[u8]) -> vortex_error::VortexResult -pub unsafe fn vortex_array::builders::ArrayBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) +impl vortex_array::dtype::TryFromBytes for f64 -impl vortex_array::builders::ArrayBuilder for vortex_array::builders::BoolBuilder +pub fn f64::try_from_le_bytes(bytes: &[u8]) -> vortex_error::VortexResult -pub fn vortex_array::builders::BoolBuilder::append_default(&mut self) +impl vortex_array::dtype::TryFromBytes for half::binary16::f16 -pub fn vortex_array::builders::BoolBuilder::append_defaults(&mut self, n: usize) +pub fn half::binary16::f16::try_from_le_bytes(bytes: &[u8]) -> vortex_error::VortexResult -pub fn vortex_array::builders::BoolBuilder::append_null(&mut self) +impl vortex_array::dtype::TryFromBytes for i16 -pub fn vortex_array::builders::BoolBuilder::append_nulls(&mut self, n: usize) +pub fn i16::try_from_le_bytes(bytes: &[u8]) -> vortex_error::VortexResult -pub unsafe fn vortex_array::builders::BoolBuilder::append_nulls_unchecked(&mut self, n: usize) +impl vortex_array::dtype::TryFromBytes for i32 -pub fn vortex_array::builders::BoolBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> +pub fn i32::try_from_le_bytes(bytes: &[u8]) -> vortex_error::VortexResult -pub fn vortex_array::builders::BoolBuilder::append_zero(&mut self) +impl vortex_array::dtype::TryFromBytes for i64 -pub fn vortex_array::builders::BoolBuilder::append_zeros(&mut self, n: usize) +pub fn i64::try_from_le_bytes(bytes: &[u8]) -> vortex_error::VortexResult -pub fn vortex_array::builders::BoolBuilder::as_any(&self) -> &dyn core::any::Any +impl vortex_array::dtype::TryFromBytes for i8 -pub fn vortex_array::builders::BoolBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any +pub fn i8::try_from_le_bytes(bytes: &[u8]) -> vortex_error::VortexResult -pub fn vortex_array::builders::BoolBuilder::dtype(&self) -> &vortex_array::dtype::DType +impl vortex_array::dtype::TryFromBytes for u16 -pub fn vortex_array::builders::BoolBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) +pub fn u16::try_from_le_bytes(bytes: &[u8]) -> vortex_error::VortexResult -pub unsafe fn vortex_array::builders::BoolBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) +impl vortex_array::dtype::TryFromBytes for u32 -pub fn vortex_array::builders::BoolBuilder::finish(&mut self) -> vortex_array::ArrayRef +pub fn u32::try_from_le_bytes(bytes: &[u8]) -> vortex_error::VortexResult -pub fn vortex_array::builders::BoolBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical +impl vortex_array::dtype::TryFromBytes for u64 -pub fn vortex_array::builders::BoolBuilder::is_empty(&self) -> bool +pub fn u64::try_from_le_bytes(bytes: &[u8]) -> vortex_error::VortexResult -pub fn vortex_array::builders::BoolBuilder::len(&self) -> usize +impl vortex_array::dtype::TryFromBytes for u8 -pub fn vortex_array::builders::BoolBuilder::reserve_exact(&mut self, additional: usize) +pub fn u8::try_from_le_bytes(bytes: &[u8]) -> vortex_error::VortexResult -pub fn vortex_array::builders::BoolBuilder::set_validity(&mut self, validity: vortex_mask::Mask) +pub trait vortex_array::dtype::UnsignedPType: vortex_array::dtype::IntegerPType + num_traits::sign::Unsigned -pub unsafe fn vortex_array::builders::BoolBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) +impl vortex_array::dtype::UnsignedPType for T where T: vortex_array::dtype::IntegerPType + num_traits::sign::Unsigned -impl vortex_array::builders::ArrayBuilder for vortex_array::builders::DecimalBuilder +pub mod vortex_array::expr -pub fn vortex_array::builders::DecimalBuilder::append_default(&mut self) +pub mod vortex_array::expr::aliases -pub fn vortex_array::builders::DecimalBuilder::append_defaults(&mut self, n: usize) +pub mod vortex_array::expr::aliases::paste -pub fn vortex_array::builders::DecimalBuilder::append_null(&mut self) +pub use vortex_array::expr::aliases::paste::paste -pub fn vortex_array::builders::DecimalBuilder::append_nulls(&mut self, n: usize) +pub mod vortex_array::expr::analysis -pub unsafe fn vortex_array::builders::DecimalBuilder::append_nulls_unchecked(&mut self, n: usize) +pub mod vortex_array::expr::analysis::annotation -pub fn vortex_array::builders::DecimalBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> +pub trait vortex_array::expr::analysis::annotation::Annotation: core::clone::Clone + core::hash::Hash + core::cmp::Eq -pub fn vortex_array::builders::DecimalBuilder::append_zero(&mut self) +impl vortex_array::expr::Annotation for A where A: core::clone::Clone + core::hash::Hash + core::cmp::Eq -pub fn vortex_array::builders::DecimalBuilder::append_zeros(&mut self, n: usize) +pub trait vortex_array::expr::analysis::annotation::AnnotationFn: core::ops::function::Fn(&vortex_array::expr::Expression) -> alloc::vec::Vec -pub fn vortex_array::builders::DecimalBuilder::as_any(&self) -> &dyn core::any::Any +pub type vortex_array::expr::analysis::annotation::AnnotationFn::Annotation: vortex_array::expr::Annotation -pub fn vortex_array::builders::DecimalBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any +impl vortex_array::expr::AnnotationFn for F where A: vortex_array::expr::Annotation, F: core::ops::function::Fn(&vortex_array::expr::Expression) -> alloc::vec::Vec -pub fn vortex_array::builders::DecimalBuilder::dtype(&self) -> &vortex_array::dtype::DType +pub type F::Annotation = A -pub fn vortex_array::builders::DecimalBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) +pub fn vortex_array::expr::analysis::annotation::descendent_annotations(expr: &vortex_array::expr::Expression, annotate: A) -> vortex_array::expr::Annotations<'_, ::Annotation> -pub unsafe fn vortex_array::builders::DecimalBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) +pub type vortex_array::expr::analysis::annotation::Annotations<'a, A> = vortex_utils::aliases::hash_map::HashMap<&'a vortex_array::expr::Expression, vortex_utils::aliases::hash_set::HashSet> -pub fn vortex_array::builders::DecimalBuilder::finish(&mut self) -> vortex_array::ArrayRef +pub mod vortex_array::expr::analysis::immediate_access -pub fn vortex_array::builders::DecimalBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical +pub fn vortex_array::expr::analysis::immediate_access::immediate_scope_access<'a>(expr: &'a vortex_array::expr::Expression, scope: &'a vortex_array::dtype::StructFields) -> vortex_utils::aliases::hash_set::HashSet -pub fn vortex_array::builders::DecimalBuilder::is_empty(&self) -> bool +pub fn vortex_array::expr::analysis::immediate_access::immediate_scope_accesses<'a>(expr: &'a vortex_array::expr::Expression, scope: &'a vortex_array::dtype::StructFields) -> vortex_array::expr::FieldAccesses<'a> -pub fn vortex_array::builders::DecimalBuilder::len(&self) -> usize +pub fn vortex_array::expr::analysis::immediate_access::make_free_field_annotator(scope: &vortex_array::dtype::StructFields) -> impl vortex_array::expr::AnnotationFn -pub fn vortex_array::builders::DecimalBuilder::reserve_exact(&mut self, additional: usize) +pub type vortex_array::expr::analysis::immediate_access::FieldAccesses<'a> = vortex_array::expr::Annotations<'a, vortex_array::dtype::FieldName> -pub fn vortex_array::builders::DecimalBuilder::set_validity(&mut self, validity: vortex_mask::Mask) +pub trait vortex_array::expr::analysis::Annotation: core::clone::Clone + core::hash::Hash + core::cmp::Eq -pub unsafe fn vortex_array::builders::DecimalBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) +impl vortex_array::expr::Annotation for A where A: core::clone::Clone + core::hash::Hash + core::cmp::Eq -impl vortex_array::builders::ArrayBuilder for vortex_array::builders::ExtensionBuilder +pub trait vortex_array::expr::analysis::AnnotationFn: core::ops::function::Fn(&vortex_array::expr::Expression) -> alloc::vec::Vec -pub fn vortex_array::builders::ExtensionBuilder::append_default(&mut self) +pub type vortex_array::expr::analysis::AnnotationFn::Annotation: vortex_array::expr::Annotation -pub fn vortex_array::builders::ExtensionBuilder::append_defaults(&mut self, n: usize) +impl vortex_array::expr::AnnotationFn for F where A: vortex_array::expr::Annotation, F: core::ops::function::Fn(&vortex_array::expr::Expression) -> alloc::vec::Vec -pub fn vortex_array::builders::ExtensionBuilder::append_null(&mut self) +pub type F::Annotation = A -pub fn vortex_array::builders::ExtensionBuilder::append_nulls(&mut self, n: usize) +pub fn vortex_array::expr::analysis::descendent_annotations(expr: &vortex_array::expr::Expression, annotate: A) -> vortex_array::expr::Annotations<'_, ::Annotation> -pub unsafe fn vortex_array::builders::ExtensionBuilder::append_nulls_unchecked(&mut self, n: usize) +pub fn vortex_array::expr::analysis::immediate_scope_access<'a>(expr: &'a vortex_array::expr::Expression, scope: &'a vortex_array::dtype::StructFields) -> vortex_utils::aliases::hash_set::HashSet -pub fn vortex_array::builders::ExtensionBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> +pub fn vortex_array::expr::analysis::immediate_scope_accesses<'a>(expr: &'a vortex_array::expr::Expression, scope: &'a vortex_array::dtype::StructFields) -> vortex_array::expr::FieldAccesses<'a> -pub fn vortex_array::builders::ExtensionBuilder::append_zero(&mut self) +pub fn vortex_array::expr::analysis::label_is_fallible(expr: &vortex_array::expr::Expression) -> vortex_array::expr::BooleanLabels<'_> -pub fn vortex_array::builders::ExtensionBuilder::append_zeros(&mut self, n: usize) +pub fn vortex_array::expr::analysis::label_null_sensitive(expr: &vortex_array::expr::Expression) -> vortex_array::expr::BooleanLabels<'_> -pub fn vortex_array::builders::ExtensionBuilder::as_any(&self) -> &dyn core::any::Any +pub fn vortex_array::expr::analysis::label_tree(expr: &vortex_array::expr::Expression, self_label: impl core::ops::function::Fn(&vortex_array::expr::Expression) -> L, merge_child: impl core::ops::function::FnMut(L, &L) -> L) -> vortex_utils::aliases::hash_map::HashMap<&vortex_array::expr::Expression, L> -pub fn vortex_array::builders::ExtensionBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any +pub fn vortex_array::expr::analysis::make_free_field_annotator(scope: &vortex_array::dtype::StructFields) -> impl vortex_array::expr::AnnotationFn -pub fn vortex_array::builders::ExtensionBuilder::dtype(&self) -> &vortex_array::dtype::DType +pub type vortex_array::expr::analysis::Annotations<'a, A> = vortex_utils::aliases::hash_map::HashMap<&'a vortex_array::expr::Expression, vortex_utils::aliases::hash_set::HashSet> -pub fn vortex_array::builders::ExtensionBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) +pub type vortex_array::expr::analysis::BooleanLabels<'a> = vortex_utils::aliases::hash_map::HashMap<&'a vortex_array::expr::Expression, bool> -pub unsafe fn vortex_array::builders::ExtensionBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) +pub type vortex_array::expr::analysis::FieldAccesses<'a> = vortex_array::expr::Annotations<'a, vortex_array::dtype::FieldName> -pub fn vortex_array::builders::ExtensionBuilder::finish(&mut self) -> vortex_array::ArrayRef +pub mod vortex_array::expr::annotation -pub fn vortex_array::builders::ExtensionBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical +pub trait vortex_array::expr::annotation::Annotation: core::clone::Clone + core::hash::Hash + core::cmp::Eq -pub fn vortex_array::builders::ExtensionBuilder::is_empty(&self) -> bool +impl vortex_array::expr::Annotation for A where A: core::clone::Clone + core::hash::Hash + core::cmp::Eq -pub fn vortex_array::builders::ExtensionBuilder::len(&self) -> usize +pub trait vortex_array::expr::annotation::AnnotationFn: core::ops::function::Fn(&vortex_array::expr::Expression) -> alloc::vec::Vec -pub fn vortex_array::builders::ExtensionBuilder::reserve_exact(&mut self, capacity: usize) +pub type vortex_array::expr::annotation::AnnotationFn::Annotation: vortex_array::expr::Annotation -pub fn vortex_array::builders::ExtensionBuilder::set_validity(&mut self, validity: vortex_mask::Mask) +impl vortex_array::expr::AnnotationFn for F where A: vortex_array::expr::Annotation, F: core::ops::function::Fn(&vortex_array::expr::Expression) -> alloc::vec::Vec -pub unsafe fn vortex_array::builders::ExtensionBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) +pub type F::Annotation = A -impl vortex_array::builders::ArrayBuilder for vortex_array::builders::FixedSizeListBuilder +pub fn vortex_array::expr::annotation::descendent_annotations(expr: &vortex_array::expr::Expression, annotate: A) -> vortex_array::expr::Annotations<'_, ::Annotation> -pub fn vortex_array::builders::FixedSizeListBuilder::append_default(&mut self) +pub type vortex_array::expr::annotation::Annotations<'a, A> = vortex_utils::aliases::hash_map::HashMap<&'a vortex_array::expr::Expression, vortex_utils::aliases::hash_set::HashSet> -pub fn vortex_array::builders::FixedSizeListBuilder::append_defaults(&mut self, n: usize) +pub mod vortex_array::expr::display -pub fn vortex_array::builders::FixedSizeListBuilder::append_null(&mut self) +pub enum vortex_array::expr::display::DisplayFormat -pub fn vortex_array::builders::FixedSizeListBuilder::append_nulls(&mut self, n: usize) +pub vortex_array::expr::display::DisplayFormat::Compact -pub unsafe fn vortex_array::builders::FixedSizeListBuilder::append_nulls_unchecked(&mut self, n: usize) +pub vortex_array::expr::display::DisplayFormat::Tree -pub fn vortex_array::builders::FixedSizeListBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> +pub struct vortex_array::expr::display::DisplayTreeExpr<'a>(pub &'a vortex_array::expr::Expression) -pub fn vortex_array::builders::FixedSizeListBuilder::append_zero(&mut self) +impl core::fmt::Display for vortex_array::expr::display::DisplayTreeExpr<'_> -pub fn vortex_array::builders::FixedSizeListBuilder::append_zeros(&mut self, n: usize) +pub fn vortex_array::expr::display::DisplayTreeExpr<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::builders::FixedSizeListBuilder::as_any(&self) -> &dyn core::any::Any +pub mod vortex_array::expr::forms -pub fn vortex_array::builders::FixedSizeListBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any +pub fn vortex_array::expr::forms::conjuncts(expr: &vortex_array::expr::Expression) -> alloc::vec::Vec -pub fn vortex_array::builders::FixedSizeListBuilder::dtype(&self) -> &vortex_array::dtype::DType +pub mod vortex_array::expr::immediate_access -pub fn vortex_array::builders::FixedSizeListBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) +pub fn vortex_array::expr::immediate_access::immediate_scope_access<'a>(expr: &'a vortex_array::expr::Expression, scope: &'a vortex_array::dtype::StructFields) -> vortex_utils::aliases::hash_set::HashSet -pub unsafe fn vortex_array::builders::FixedSizeListBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) +pub fn vortex_array::expr::immediate_access::immediate_scope_accesses<'a>(expr: &'a vortex_array::expr::Expression, scope: &'a vortex_array::dtype::StructFields) -> vortex_array::expr::FieldAccesses<'a> -pub fn vortex_array::builders::FixedSizeListBuilder::finish(&mut self) -> vortex_array::ArrayRef +pub fn vortex_array::expr::immediate_access::make_free_field_annotator(scope: &vortex_array::dtype::StructFields) -> impl vortex_array::expr::AnnotationFn -pub fn vortex_array::builders::FixedSizeListBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical +pub type vortex_array::expr::immediate_access::FieldAccesses<'a> = vortex_array::expr::Annotations<'a, vortex_array::dtype::FieldName> -pub fn vortex_array::builders::FixedSizeListBuilder::is_empty(&self) -> bool +pub mod vortex_array::expr::proto -pub fn vortex_array::builders::FixedSizeListBuilder::len(&self) -> usize +pub trait vortex_array::expr::proto::ExprSerializeProtoExt -pub fn vortex_array::builders::FixedSizeListBuilder::reserve_exact(&mut self, additional: usize) +pub fn vortex_array::expr::proto::ExprSerializeProtoExt::serialize_proto(&self) -> vortex_error::VortexResult -pub fn vortex_array::builders::FixedSizeListBuilder::set_validity(&mut self, validity: vortex_mask::Mask) +impl vortex_array::expr::proto::ExprSerializeProtoExt for vortex_array::expr::Expression -pub unsafe fn vortex_array::builders::FixedSizeListBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) +pub fn vortex_array::expr::Expression::serialize_proto(&self) -> vortex_error::VortexResult -impl vortex_array::builders::ArrayBuilder for vortex_array::builders::NullBuilder +pub fn vortex_array::expr::proto::deserialize_expr_proto(expr: &vortex_proto::expr::Expr, session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::builders::NullBuilder::append_default(&mut self) +pub mod vortex_array::expr::pruning -pub fn vortex_array::builders::NullBuilder::append_defaults(&mut self, n: usize) +pub struct vortex_array::expr::pruning::Relation -pub fn vortex_array::builders::NullBuilder::append_null(&mut self) +impl vortex_array::expr::pruning::Relation -pub fn vortex_array::builders::NullBuilder::append_nulls(&mut self, n: usize) +pub fn vortex_array::expr::pruning::Relation::insert(&mut self, k: K, v: V) -pub unsafe fn vortex_array::builders::NullBuilder::append_nulls_unchecked(&mut self, n: usize) +pub fn vortex_array::expr::pruning::Relation::map(&self) -> &vortex_utils::aliases::hash_map::HashMap> -pub fn vortex_array::builders::NullBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> +pub fn vortex_array::expr::pruning::Relation::new() -> Self -pub fn vortex_array::builders::NullBuilder::append_zero(&mut self) +impl core::convert::From>> for vortex_array::expr::pruning::Relation -pub fn vortex_array::builders::NullBuilder::append_zeros(&mut self, n: usize) +pub fn vortex_array::expr::pruning::Relation::from(value: vortex_utils::aliases::hash_map::HashMap>) -> Self -pub fn vortex_array::builders::NullBuilder::as_any(&self) -> &dyn core::any::Any +impl core::iter::traits::collect::IntoIterator for vortex_array::expr::pruning::Relation -pub fn vortex_array::builders::NullBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any +pub type vortex_array::expr::pruning::Relation::IntoIter = hashbrown::map::IntoIter> -pub fn vortex_array::builders::NullBuilder::dtype(&self) -> &vortex_array::dtype::DType +pub type vortex_array::expr::pruning::Relation::Item = (K, hashbrown::set::HashSet) -pub fn vortex_array::builders::NullBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) +pub fn vortex_array::expr::pruning::Relation::into_iter(self) -> Self::IntoIter -pub unsafe fn vortex_array::builders::NullBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) +impl core::clone::Clone for vortex_array::expr::pruning::Relation -pub fn vortex_array::builders::NullBuilder::finish(&mut self) -> vortex_array::ArrayRef +pub fn vortex_array::expr::pruning::Relation::clone(&self) -> vortex_array::expr::pruning::Relation -pub fn vortex_array::builders::NullBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical +impl core::fmt::Debug for vortex_array::expr::pruning::Relation -pub fn vortex_array::builders::NullBuilder::is_empty(&self) -> bool +pub fn vortex_array::expr::pruning::Relation::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::builders::NullBuilder::len(&self) -> usize +impl core::default::Default for vortex_array::expr::pruning::Relation -pub fn vortex_array::builders::NullBuilder::reserve_exact(&mut self, _additional: usize) +pub fn vortex_array::expr::pruning::Relation::default() -> Self -pub fn vortex_array::builders::NullBuilder::set_validity(&mut self, validity: vortex_mask::Mask) +pub trait vortex_array::expr::pruning::StatsCatalog -pub unsafe fn vortex_array::builders::NullBuilder::set_validity_unchecked(&mut self, _validity: vortex_mask::Mask) +pub fn vortex_array::expr::pruning::StatsCatalog::stats_ref(&self, _field_path: &vortex_array::dtype::FieldPath, _stat: vortex_array::expr::stats::Stat) -> core::option::Option -impl vortex_array::builders::ArrayBuilder for vortex_array::builders::StructBuilder +pub fn vortex_array::expr::pruning::checked_pruning_expr(expr: &vortex_array::expr::Expression, available_stats: &vortex_array::dtype::FieldPathSet) -> core::option::Option<(vortex_array::expr::Expression, vortex_array::expr::pruning::RequiredStats)> -pub fn vortex_array::builders::StructBuilder::append_default(&mut self) +pub type vortex_array::expr::pruning::RequiredStats = vortex_array::expr::pruning::Relation -pub fn vortex_array::builders::StructBuilder::append_defaults(&mut self, n: usize) +pub mod vortex_array::expr::stats -pub fn vortex_array::builders::StructBuilder::append_null(&mut self) +pub enum vortex_array::expr::stats::IntersectionResult -pub fn vortex_array::builders::StructBuilder::append_nulls(&mut self, n: usize) +pub vortex_array::expr::stats::IntersectionResult::None -pub unsafe fn vortex_array::builders::StructBuilder::append_nulls_unchecked(&mut self, n: usize) +pub vortex_array::expr::stats::IntersectionResult::Value(T) -pub fn vortex_array::builders::StructBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> +impl vortex_array::expr::stats::IntersectionResult -pub fn vortex_array::builders::StructBuilder::append_zero(&mut self) +pub fn vortex_array::expr::stats::IntersectionResult::ok_or_else(self, err: F) -> vortex_error::VortexResult where F: core::ops::function::FnOnce() -> vortex_error::VortexError -pub fn vortex_array::builders::StructBuilder::append_zeros(&mut self, n: usize) +impl core::clone::Clone for vortex_array::expr::stats::IntersectionResult -pub fn vortex_array::builders::StructBuilder::as_any(&self) -> &dyn core::any::Any +pub fn vortex_array::expr::stats::IntersectionResult::clone(&self) -> vortex_array::expr::stats::IntersectionResult -pub fn vortex_array::builders::StructBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any +impl core::cmp::Eq for vortex_array::expr::stats::IntersectionResult -pub fn vortex_array::builders::StructBuilder::dtype(&self) -> &vortex_array::dtype::DType +impl core::cmp::PartialEq for vortex_array::expr::stats::IntersectionResult -pub fn vortex_array::builders::StructBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) +pub fn vortex_array::expr::stats::IntersectionResult::eq(&self, other: &vortex_array::expr::stats::IntersectionResult) -> bool -pub unsafe fn vortex_array::builders::StructBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) +impl core::fmt::Debug for vortex_array::expr::stats::IntersectionResult -pub fn vortex_array::builders::StructBuilder::finish(&mut self) -> vortex_array::ArrayRef +pub fn vortex_array::expr::stats::IntersectionResult::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::builders::StructBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical +impl core::marker::StructuralPartialEq for vortex_array::expr::stats::IntersectionResult -pub fn vortex_array::builders::StructBuilder::is_empty(&self) -> bool +pub enum vortex_array::expr::stats::Precision -pub fn vortex_array::builders::StructBuilder::len(&self) -> usize +pub vortex_array::expr::stats::Precision::Exact(T) -pub fn vortex_array::builders::StructBuilder::reserve_exact(&mut self, capacity: usize) +pub vortex_array::expr::stats::Precision::Inexact(T) -pub fn vortex_array::builders::StructBuilder::set_validity(&mut self, validity: vortex_mask::Mask) +impl vortex_array::expr::stats::Precision<&vortex_array::scalar::ScalarValue> -pub unsafe fn vortex_array::builders::StructBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) +pub fn vortex_array::expr::stats::Precision<&vortex_array::scalar::ScalarValue>::into_scalar(self, dtype: vortex_array::dtype::DType) -> vortex_array::expr::stats::Precision -impl vortex_array::builders::ArrayBuilder for vortex_array::builders::VarBinViewBuilder +impl vortex_array::expr::stats::Precision -pub fn vortex_array::builders::VarBinViewBuilder::append_default(&mut self) +pub fn vortex_array::expr::stats::Precision::into_scalar(self, dtype: vortex_array::dtype::DType) -> vortex_array::expr::stats::Precision -pub fn vortex_array::builders::VarBinViewBuilder::append_defaults(&mut self, n: usize) +impl vortex_array::expr::stats::Precision where T: core::marker::Copy -pub fn vortex_array::builders::VarBinViewBuilder::append_null(&mut self) +pub fn vortex_array::expr::stats::Precision::to_inexact(&self) -> Self -pub fn vortex_array::builders::VarBinViewBuilder::append_nulls(&mut self, n: usize) +impl vortex_array::expr::stats::Precision -pub unsafe fn vortex_array::builders::VarBinViewBuilder::append_nulls_unchecked(&mut self, n: usize) +pub fn vortex_array::expr::stats::Precision::as_exact(self) -> core::option::Option -pub fn vortex_array::builders::VarBinViewBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> +pub fn vortex_array::expr::stats::Precision::as_inexact(self) -> core::option::Option -pub fn vortex_array::builders::VarBinViewBuilder::append_zero(&mut self) +pub fn vortex_array::expr::stats::Precision::as_ref(&self) -> vortex_array::expr::stats::Precision<&T> -pub fn vortex_array::builders::VarBinViewBuilder::append_zeros(&mut self, n: usize) +pub fn vortex_array::expr::stats::Precision::exact>(s: S) -> vortex_array::expr::stats::Precision -pub fn vortex_array::builders::VarBinViewBuilder::as_any(&self) -> &dyn core::any::Any +pub fn vortex_array::expr::stats::Precision::inexact>(s: S) -> vortex_array::expr::stats::Precision -pub fn vortex_array::builders::VarBinViewBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any +pub fn vortex_array::expr::stats::Precision::into_inexact(self) -> Self -pub fn vortex_array::builders::VarBinViewBuilder::dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_array::expr::stats::Precision::into_inner(self) -> T -pub fn vortex_array::builders::VarBinViewBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) +pub fn vortex_array::expr::stats::Precision::is_exact(&self) -> bool -pub unsafe fn vortex_array::builders::VarBinViewBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) +pub fn vortex_array::expr::stats::Precision::map U>(self, f: F) -> vortex_array::expr::stats::Precision -pub fn vortex_array::builders::VarBinViewBuilder::finish(&mut self) -> vortex_array::ArrayRef +pub fn vortex_array::expr::stats::Precision::try_map vortex_error::VortexResult>(self, f: F) -> vortex_error::VortexResult> -pub fn vortex_array::builders::VarBinViewBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical +pub fn vortex_array::expr::stats::Precision::zip(self, other: vortex_array::expr::stats::Precision) -> vortex_array::expr::stats::Precision<(T, U)> -pub fn vortex_array::builders::VarBinViewBuilder::is_empty(&self) -> bool +impl vortex_array::expr::stats::Precision -pub fn vortex_array::builders::VarBinViewBuilder::len(&self) -> usize +pub fn vortex_array::expr::stats::Precision::bound>(self) -> ::Bound -pub fn vortex_array::builders::VarBinViewBuilder::reserve_exact(&mut self, additional: usize) +impl vortex_array::expr::stats::Precision> -pub fn vortex_array::builders::VarBinViewBuilder::set_validity(&mut self, validity: vortex_mask::Mask) +pub fn vortex_array::expr::stats::Precision>::transpose(self) -> core::option::Option> -pub unsafe fn vortex_array::builders::VarBinViewBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) +impl core::clone::Clone for vortex_array::expr::stats::Precision -impl vortex_array::builders::ArrayBuilder for vortex_array::builders::ListViewBuilder +pub fn vortex_array::expr::stats::Precision::clone(&self) -> vortex_array::expr::stats::Precision -pub fn vortex_array::builders::ListViewBuilder::append_default(&mut self) +impl core::cmp::Eq for vortex_array::expr::stats::Precision -pub fn vortex_array::builders::ListViewBuilder::append_defaults(&mut self, n: usize) +impl core::cmp::PartialEq for vortex_array::expr::stats::Precision -pub fn vortex_array::builders::ListViewBuilder::append_null(&mut self) +pub fn vortex_array::expr::stats::Precision::eq(&self, other: &vortex_array::expr::stats::Precision) -> bool -pub fn vortex_array::builders::ListViewBuilder::append_nulls(&mut self, n: usize) +impl core::cmp::PartialEq for vortex_array::expr::stats::Precision -pub unsafe fn vortex_array::builders::ListViewBuilder::append_nulls_unchecked(&mut self, n: usize) +pub fn vortex_array::expr::stats::Precision::eq(&self, other: &T) -> bool -pub fn vortex_array::builders::ListViewBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> +impl vortex_array::expr::stats::StatBound for vortex_array::expr::stats::Precision -pub fn vortex_array::builders::ListViewBuilder::append_zero(&mut self) +pub fn vortex_array::expr::stats::Precision::intersection(&self, other: &Self) -> core::option::Option> -pub fn vortex_array::builders::ListViewBuilder::append_zeros(&mut self, n: usize) +pub fn vortex_array::expr::stats::Precision::into_value(self) -> vortex_array::expr::stats::Precision -pub fn vortex_array::builders::ListViewBuilder::as_any(&self) -> &dyn core::any::Any +pub fn vortex_array::expr::stats::Precision::lift(value: vortex_array::expr::stats::Precision) -> Self -pub fn vortex_array::builders::ListViewBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any +pub fn vortex_array::expr::stats::Precision::to_exact(&self) -> core::option::Option<&T> -pub fn vortex_array::builders::ListViewBuilder::dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_array::expr::stats::Precision::union(&self, other: &Self) -> core::option::Option -pub fn vortex_array::builders::ListViewBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) +impl core::fmt::Debug for vortex_array::expr::stats::Precision -pub unsafe fn vortex_array::builders::ListViewBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) +pub fn vortex_array::expr::stats::Precision::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::builders::ListViewBuilder::finish(&mut self) -> vortex_array::ArrayRef +impl core::fmt::Display for vortex_array::expr::stats::Precision -pub fn vortex_array::builders::ListViewBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical +pub fn vortex_array::expr::stats::Precision::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::builders::ListViewBuilder::is_empty(&self) -> bool +impl core::marker::Copy for vortex_array::expr::stats::Precision -pub fn vortex_array::builders::ListViewBuilder::len(&self) -> usize +impl core::marker::StructuralPartialEq for vortex_array::expr::stats::Precision -pub fn vortex_array::builders::ListViewBuilder::reserve_exact(&mut self, capacity: usize) +#[repr(u8)] pub enum vortex_array::expr::stats::Stat -pub fn vortex_array::builders::ListViewBuilder::set_validity(&mut self, validity: vortex_mask::Mask) +pub vortex_array::expr::stats::Stat::IsConstant = 0 -pub unsafe fn vortex_array::builders::ListViewBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) +pub vortex_array::expr::stats::Stat::IsSorted = 1 -impl vortex_array::builders::ArrayBuilder for vortex_array::builders::ListBuilder +pub vortex_array::expr::stats::Stat::IsStrictSorted = 2 -pub fn vortex_array::builders::ListBuilder::append_default(&mut self) +pub vortex_array::expr::stats::Stat::Max = 3 -pub fn vortex_array::builders::ListBuilder::append_defaults(&mut self, n: usize) +pub vortex_array::expr::stats::Stat::Min = 4 -pub fn vortex_array::builders::ListBuilder::append_null(&mut self) +pub vortex_array::expr::stats::Stat::NaNCount = 8 -pub fn vortex_array::builders::ListBuilder::append_nulls(&mut self, n: usize) +pub vortex_array::expr::stats::Stat::NullCount = 6 -pub unsafe fn vortex_array::builders::ListBuilder::append_nulls_unchecked(&mut self, n: usize) +pub vortex_array::expr::stats::Stat::Sum = 5 -pub fn vortex_array::builders::ListBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> +pub vortex_array::expr::stats::Stat::UncompressedSizeInBytes = 7 -pub fn vortex_array::builders::ListBuilder::append_zero(&mut self) +impl vortex_array::expr::stats::Stat -pub fn vortex_array::builders::ListBuilder::append_zeros(&mut self, n: usize) +pub fn vortex_array::expr::stats::Stat::all() -> impl core::iter::traits::iterator::Iterator -pub fn vortex_array::builders::ListBuilder::as_any(&self) -> &dyn core::any::Any +pub fn vortex_array::expr::stats::Stat::dtype(&self, data_type: &vortex_array::dtype::DType) -> core::option::Option -pub fn vortex_array::builders::ListBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any +pub fn vortex_array::expr::stats::Stat::has_same_dtype_as_array(&self) -> bool -pub fn vortex_array::builders::ListBuilder::dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_array::expr::stats::Stat::is_commutative(&self) -> bool -pub fn vortex_array::builders::ListBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) +pub fn vortex_array::expr::stats::Stat::name(&self) -> &str -pub unsafe fn vortex_array::builders::ListBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) +impl core::clone::Clone for vortex_array::expr::stats::Stat -pub fn vortex_array::builders::ListBuilder::finish(&mut self) -> vortex_array::ArrayRef +pub fn vortex_array::expr::stats::Stat::clone(&self) -> vortex_array::expr::stats::Stat -pub fn vortex_array::builders::ListBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical +impl core::cmp::Eq for vortex_array::expr::stats::Stat -pub fn vortex_array::builders::ListBuilder::is_empty(&self) -> bool +impl core::cmp::Ord for vortex_array::expr::stats::Stat -pub fn vortex_array::builders::ListBuilder::len(&self) -> usize +pub fn vortex_array::expr::stats::Stat::cmp(&self, other: &vortex_array::expr::stats::Stat) -> core::cmp::Ordering -pub fn vortex_array::builders::ListBuilder::reserve_exact(&mut self, additional: usize) +impl core::cmp::PartialEq for vortex_array::expr::stats::Stat -pub fn vortex_array::builders::ListBuilder::set_validity(&mut self, validity: vortex_mask::Mask) +pub fn vortex_array::expr::stats::Stat::eq(&self, other: &vortex_array::expr::stats::Stat) -> bool -pub unsafe fn vortex_array::builders::ListBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) +impl core::cmp::PartialOrd for vortex_array::expr::stats::Stat -impl vortex_array::builders::ArrayBuilder for vortex_array::builders::PrimitiveBuilder +pub fn vortex_array::expr::stats::Stat::partial_cmp(&self, other: &vortex_array::expr::stats::Stat) -> core::option::Option -pub fn vortex_array::builders::PrimitiveBuilder::append_default(&mut self) +impl core::convert::From for u8 -pub fn vortex_array::builders::PrimitiveBuilder::append_defaults(&mut self, n: usize) +pub fn u8::from(enum_value: vortex_array::expr::stats::Stat) -> Self -pub fn vortex_array::builders::PrimitiveBuilder::append_null(&mut self) +impl core::convert::TryFrom for vortex_array::expr::stats::Stat -pub fn vortex_array::builders::PrimitiveBuilder::append_nulls(&mut self, n: usize) +pub type vortex_array::expr::stats::Stat::Error = num_enum::TryFromPrimitiveError -pub unsafe fn vortex_array::builders::PrimitiveBuilder::append_nulls_unchecked(&mut self, n: usize) +pub fn vortex_array::expr::stats::Stat::try_from(number: u8) -> core::result::Result> -pub fn vortex_array::builders::PrimitiveBuilder::append_scalar(&mut self, scalar: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult<()> +impl core::fmt::Debug for vortex_array::expr::stats::Stat -pub fn vortex_array::builders::PrimitiveBuilder::append_zero(&mut self) +pub fn vortex_array::expr::stats::Stat::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::builders::PrimitiveBuilder::append_zeros(&mut self, n: usize) +impl core::fmt::Display for vortex_array::expr::stats::Stat -pub fn vortex_array::builders::PrimitiveBuilder::as_any(&self) -> &dyn core::any::Any +pub fn vortex_array::expr::stats::Stat::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::builders::PrimitiveBuilder::as_any_mut(&mut self) -> &mut dyn core::any::Any +impl core::hash::Hash for vortex_array::expr::stats::Stat -pub fn vortex_array::builders::PrimitiveBuilder::dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_array::expr::stats::Stat::hash<__H: core::hash::Hasher>(&self, state: &mut __H) -pub fn vortex_array::builders::PrimitiveBuilder::extend_from_array(&mut self, array: &vortex_array::ArrayRef) +impl core::marker::Copy for vortex_array::expr::stats::Stat -pub unsafe fn vortex_array::builders::PrimitiveBuilder::extend_from_array_unchecked(&mut self, array: &vortex_array::ArrayRef) +impl core::marker::StructuralPartialEq for vortex_array::expr::stats::Stat -pub fn vortex_array::builders::PrimitiveBuilder::finish(&mut self) -> vortex_array::ArrayRef +impl enum_iterator::Sequence for vortex_array::expr::stats::Stat -pub fn vortex_array::builders::PrimitiveBuilder::finish_into_canonical(&mut self) -> vortex_array::Canonical +pub const vortex_array::expr::stats::Stat::CARDINALITY: usize -pub fn vortex_array::builders::PrimitiveBuilder::is_empty(&self) -> bool +pub fn vortex_array::expr::stats::Stat::first() -> core::option::Option -pub fn vortex_array::builders::PrimitiveBuilder::len(&self) -> usize +pub fn vortex_array::expr::stats::Stat::last() -> core::option::Option -pub fn vortex_array::builders::PrimitiveBuilder::reserve_exact(&mut self, additional: usize) +pub fn vortex_array::expr::stats::Stat::next(&self) -> core::option::Option -pub fn vortex_array::builders::PrimitiveBuilder::set_validity(&mut self, validity: vortex_mask::Mask) +pub fn vortex_array::expr::stats::Stat::previous(&self) -> core::option::Option -pub unsafe fn vortex_array::builders::PrimitiveBuilder::set_validity_unchecked(&mut self, validity: vortex_mask::Mask) +impl num_enum::TryFromPrimitive for vortex_array::expr::stats::Stat -pub fn vortex_array::builders::builder_with_capacity(dtype: &vortex_array::dtype::DType, capacity: usize) -> alloc::boxed::Box +pub type vortex_array::expr::stats::Stat::Error = num_enum::TryFromPrimitiveError -pub mod vortex_array::builtins +pub type vortex_array::expr::stats::Stat::Primitive = u8 -pub trait vortex_array::builtins::ArrayBuiltins: core::marker::Sized +pub const vortex_array::expr::stats::Stat::NAME: &'static str -pub fn vortex_array::builtins::ArrayBuiltins::between(self, lower: vortex_array::ArrayRef, upper: vortex_array::ArrayRef, options: vortex_array::scalar_fn::fns::between::BetweenOptions) -> vortex_error::VortexResult +pub fn vortex_array::expr::stats::Stat::try_from_primitive(number: Self::Primitive) -> core::result::Result> -pub fn vortex_array::builtins::ArrayBuiltins::binary(&self, rhs: vortex_array::ArrayRef, op: vortex_array::scalar_fn::fns::operators::Operator) -> vortex_error::VortexResult +pub struct vortex_array::expr::stats::IsConstant -pub fn vortex_array::builtins::ArrayBuiltins::cast(&self, dtype: vortex_array::dtype::DType) -> vortex_error::VortexResult +impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::IsConstant -pub fn vortex_array::builtins::ArrayBuiltins::fill_null(&self, fill_value: impl core::convert::Into) -> vortex_error::VortexResult +pub type vortex_array::expr::stats::IsConstant::Bound = vortex_array::expr::stats::Precision -pub fn vortex_array::builtins::ArrayBuiltins::get_item(&self, field_name: impl core::convert::Into) -> vortex_error::VortexResult +pub const vortex_array::expr::stats::IsConstant::STAT: vortex_array::expr::stats::Stat -pub fn vortex_array::builtins::ArrayBuiltins::is_null(&self) -> vortex_error::VortexResult +pub struct vortex_array::expr::stats::IsSorted -pub fn vortex_array::builtins::ArrayBuiltins::list_contains(&self, value: vortex_array::ArrayRef) -> vortex_error::VortexResult +impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::IsSorted -pub fn vortex_array::builtins::ArrayBuiltins::mask(self, mask: vortex_array::ArrayRef) -> vortex_error::VortexResult +pub type vortex_array::expr::stats::IsSorted::Bound = vortex_array::expr::stats::Precision -pub fn vortex_array::builtins::ArrayBuiltins::not(&self) -> vortex_error::VortexResult +pub const vortex_array::expr::stats::IsSorted::STAT: vortex_array::expr::stats::Stat -pub fn vortex_array::builtins::ArrayBuiltins::zip(&self, if_true: vortex_array::ArrayRef, if_false: vortex_array::ArrayRef) -> vortex_error::VortexResult +pub struct vortex_array::expr::stats::IsStrictSorted -impl vortex_array::builtins::ArrayBuiltins for vortex_array::ArrayRef +impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::IsStrictSorted -pub fn vortex_array::ArrayRef::between(self, lower: vortex_array::ArrayRef, upper: vortex_array::ArrayRef, options: vortex_array::scalar_fn::fns::between::BetweenOptions) -> vortex_error::VortexResult +pub type vortex_array::expr::stats::IsStrictSorted::Bound = vortex_array::expr::stats::Precision -pub fn vortex_array::ArrayRef::binary(&self, rhs: vortex_array::ArrayRef, op: vortex_array::scalar_fn::fns::operators::Operator) -> vortex_error::VortexResult +pub const vortex_array::expr::stats::IsStrictSorted::STAT: vortex_array::expr::stats::Stat -pub fn vortex_array::ArrayRef::cast(&self, dtype: vortex_array::dtype::DType) -> vortex_error::VortexResult +pub struct vortex_array::expr::stats::LowerBound(_) -pub fn vortex_array::ArrayRef::fill_null(&self, fill_value: impl core::convert::Into) -> vortex_error::VortexResult +impl vortex_array::expr::stats::LowerBound -pub fn vortex_array::ArrayRef::get_item(&self, field_name: impl core::convert::Into) -> vortex_error::VortexResult +pub fn vortex_array::expr::stats::LowerBound::is_exact(&self) -> bool -pub fn vortex_array::ArrayRef::is_null(&self) -> vortex_error::VortexResult +impl core::clone::Clone for vortex_array::expr::stats::LowerBound -pub fn vortex_array::ArrayRef::list_contains(&self, value: vortex_array::ArrayRef) -> vortex_error::VortexResult +pub fn vortex_array::expr::stats::LowerBound::clone(&self) -> vortex_array::expr::stats::LowerBound -pub fn vortex_array::ArrayRef::mask(self, mask: vortex_array::ArrayRef) -> vortex_error::VortexResult +impl core::cmp::Eq for vortex_array::expr::stats::LowerBound -pub fn vortex_array::ArrayRef::not(&self) -> vortex_error::VortexResult +impl core::cmp::PartialEq for vortex_array::expr::stats::LowerBound -pub fn vortex_array::ArrayRef::zip(&self, if_true: vortex_array::ArrayRef, if_false: vortex_array::ArrayRef) -> vortex_error::VortexResult +pub fn vortex_array::expr::stats::LowerBound::eq(&self, other: &vortex_array::expr::stats::LowerBound) -> bool -pub trait vortex_array::builtins::ExprBuiltins: core::marker::Sized +impl vortex_array::expr::stats::StatBound for vortex_array::expr::stats::LowerBound -pub fn vortex_array::builtins::ExprBuiltins::binary(&self, rhs: vortex_array::expr::Expression, op: vortex_array::scalar_fn::fns::operators::Operator) -> vortex_error::VortexResult +pub fn vortex_array::expr::stats::LowerBound::intersection(&self, other: &Self) -> core::option::Option>> -pub fn vortex_array::builtins::ExprBuiltins::cast(&self, dtype: vortex_array::dtype::DType) -> vortex_error::VortexResult +pub fn vortex_array::expr::stats::LowerBound::into_value(self) -> vortex_array::expr::stats::Precision -pub fn vortex_array::builtins::ExprBuiltins::fill_null(&self, fill_value: vortex_array::expr::Expression) -> vortex_error::VortexResult +pub fn vortex_array::expr::stats::LowerBound::lift(value: vortex_array::expr::stats::Precision) -> Self -pub fn vortex_array::builtins::ExprBuiltins::get_item(&self, field_name: impl core::convert::Into) -> vortex_error::VortexResult +pub fn vortex_array::expr::stats::LowerBound::to_exact(&self) -> core::option::Option<&T> -pub fn vortex_array::builtins::ExprBuiltins::is_null(&self) -> vortex_error::VortexResult +pub fn vortex_array::expr::stats::LowerBound::union(&self, other: &Self) -> core::option::Option> -pub fn vortex_array::builtins::ExprBuiltins::list_contains(&self, value: vortex_array::expr::Expression) -> vortex_error::VortexResult +impl core::cmp::PartialEq for vortex_array::expr::stats::LowerBound -pub fn vortex_array::builtins::ExprBuiltins::mask(&self, mask: vortex_array::expr::Expression) -> vortex_error::VortexResult +pub fn vortex_array::expr::stats::LowerBound::eq(&self, other: &T) -> bool -pub fn vortex_array::builtins::ExprBuiltins::not(&self) -> vortex_error::VortexResult +impl core::cmp::PartialOrd for vortex_array::expr::stats::LowerBound -pub fn vortex_array::builtins::ExprBuiltins::zip(&self, if_true: vortex_array::expr::Expression, if_false: vortex_array::expr::Expression) -> vortex_error::VortexResult +pub fn vortex_array::expr::stats::LowerBound::partial_cmp(&self, other: &T) -> core::option::Option -impl vortex_array::builtins::ExprBuiltins for vortex_array::expr::Expression +impl core::fmt::Debug for vortex_array::expr::stats::LowerBound -pub fn vortex_array::expr::Expression::binary(&self, rhs: vortex_array::expr::Expression, op: vortex_array::scalar_fn::fns::operators::Operator) -> vortex_error::VortexResult +pub fn vortex_array::expr::stats::LowerBound::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::expr::Expression::cast(&self, dtype: vortex_array::dtype::DType) -> vortex_error::VortexResult +impl core::marker::StructuralPartialEq for vortex_array::expr::stats::LowerBound -pub fn vortex_array::expr::Expression::fill_null(&self, fill_value: vortex_array::expr::Expression) -> vortex_error::VortexResult +pub struct vortex_array::expr::stats::Max -pub fn vortex_array::expr::Expression::get_item(&self, field_name: impl core::convert::Into) -> vortex_error::VortexResult +impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::Max -pub fn vortex_array::expr::Expression::is_null(&self) -> vortex_error::VortexResult +pub type vortex_array::expr::stats::Max::Bound = vortex_array::expr::stats::UpperBound -pub fn vortex_array::expr::Expression::list_contains(&self, value: vortex_array::expr::Expression) -> vortex_error::VortexResult +pub const vortex_array::expr::stats::Max::STAT: vortex_array::expr::stats::Stat -pub fn vortex_array::expr::Expression::mask(&self, mask: vortex_array::expr::Expression) -> vortex_error::VortexResult +pub struct vortex_array::expr::stats::Min -pub fn vortex_array::expr::Expression::not(&self) -> vortex_error::VortexResult +impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::Min -pub fn vortex_array::expr::Expression::zip(&self, if_true: vortex_array::expr::Expression, if_false: vortex_array::expr::Expression) -> vortex_error::VortexResult +pub type vortex_array::expr::stats::Min::Bound = vortex_array::expr::stats::LowerBound -pub mod vortex_array::compute +pub const vortex_array::expr::stats::Min::STAT: vortex_array::expr::stats::Stat -pub mod vortex_array::display +pub struct vortex_array::expr::stats::NaNCount -pub enum vortex_array::display::DisplayOptions +impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::NaNCount -pub vortex_array::display::DisplayOptions::CommaSeparatedScalars +pub type vortex_array::expr::stats::NaNCount::Bound = vortex_array::expr::stats::UpperBound -pub vortex_array::display::DisplayOptions::CommaSeparatedScalars::omit_comma_after_space: bool +pub const vortex_array::expr::stats::NaNCount::STAT: vortex_array::expr::stats::Stat -pub vortex_array::display::DisplayOptions::MetadataOnly +pub struct vortex_array::expr::stats::NullCount -pub vortex_array::display::DisplayOptions::TreeDisplay +impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::NullCount -pub vortex_array::display::DisplayOptions::TreeDisplay::buffers: bool +pub type vortex_array::expr::stats::NullCount::Bound = vortex_array::expr::stats::UpperBound -pub vortex_array::display::DisplayOptions::TreeDisplay::metadata: bool +pub const vortex_array::expr::stats::NullCount::STAT: vortex_array::expr::stats::Stat -pub vortex_array::display::DisplayOptions::TreeDisplay::stats: bool +pub struct vortex_array::expr::stats::Sum -impl core::default::Default for vortex_array::display::DisplayOptions +impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::Sum -pub fn vortex_array::display::DisplayOptions::default() -> Self +pub type vortex_array::expr::stats::Sum::Bound = vortex_array::expr::stats::Precision -pub struct vortex_array::display::BufferExtractor +pub const vortex_array::expr::stats::Sum::STAT: vortex_array::expr::stats::Stat -pub vortex_array::display::BufferExtractor::show_percent: bool +pub struct vortex_array::expr::stats::UncompressedSizeInBytes -impl vortex_array::display::TreeExtractor for vortex_array::display::BufferExtractor +impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::UncompressedSizeInBytes -pub fn vortex_array::display::BufferExtractor::write_details(&self, array: &dyn vortex_array::DynArray, _ctx: &vortex_array::display::TreeContext, f: &mut vortex_array::display::IndentedFormatter<'_, '_>) -> core::fmt::Result +pub type vortex_array::expr::stats::UncompressedSizeInBytes::Bound = vortex_array::expr::stats::UpperBound -pub fn vortex_array::display::BufferExtractor::write_header(&self, array: &dyn vortex_array::DynArray, ctx: &vortex_array::display::TreeContext, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub const vortex_array::expr::stats::UncompressedSizeInBytes::STAT: vortex_array::expr::stats::Stat -pub struct vortex_array::display::DisplayArrayAs<'a>(pub &'a dyn vortex_array::DynArray, pub vortex_array::display::DisplayOptions) +pub struct vortex_array::expr::stats::UpperBound(_) -impl core::fmt::Display for vortex_array::display::DisplayArrayAs<'_> +impl core::clone::Clone for vortex_array::expr::stats::UpperBound -pub fn vortex_array::display::DisplayArrayAs<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::expr::stats::UpperBound::clone(&self) -> vortex_array::expr::stats::UpperBound -pub struct vortex_array::display::EncodingSummaryExtractor +impl core::cmp::Eq for vortex_array::expr::stats::UpperBound -impl vortex_array::display::EncodingSummaryExtractor +impl core::cmp::PartialEq for vortex_array::expr::stats::UpperBound -pub fn vortex_array::display::EncodingSummaryExtractor::write(array: &dyn vortex_array::DynArray, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::expr::stats::UpperBound::eq(&self, other: &vortex_array::expr::stats::UpperBound) -> bool -impl vortex_array::display::TreeExtractor for vortex_array::display::EncodingSummaryExtractor +impl vortex_array::expr::stats::StatBound for vortex_array::expr::stats::UpperBound -pub fn vortex_array::display::EncodingSummaryExtractor::write_details(&self, array: &dyn vortex_array::DynArray, ctx: &vortex_array::display::TreeContext, f: &mut vortex_array::display::IndentedFormatter<'_, '_>) -> core::fmt::Result +pub fn vortex_array::expr::stats::UpperBound::intersection(&self, other: &Self) -> core::option::Option>> -pub fn vortex_array::display::EncodingSummaryExtractor::write_header(&self, array: &dyn vortex_array::DynArray, _ctx: &vortex_array::display::TreeContext, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::expr::stats::UpperBound::into_value(self) -> vortex_array::expr::stats::Precision -pub struct vortex_array::display::IndentedFormatter<'a, 'b> +pub fn vortex_array::expr::stats::UpperBound::lift(value: vortex_array::expr::stats::Precision) -> Self -impl<'a, 'b> vortex_array::display::IndentedFormatter<'a, 'b> +pub fn vortex_array::expr::stats::UpperBound::to_exact(&self) -> core::option::Option<&T> -pub fn vortex_array::display::IndentedFormatter<'a, 'b>::formatter(&mut self) -> &mut core::fmt::Formatter<'b> +pub fn vortex_array::expr::stats::UpperBound::union(&self, other: &Self) -> core::option::Option> -pub fn vortex_array::display::IndentedFormatter<'a, 'b>::indent(&self) -> &str +impl core::cmp::PartialEq for vortex_array::expr::stats::UpperBound -pub fn vortex_array::display::IndentedFormatter<'a, 'b>::parts(&mut self) -> (&str, &mut core::fmt::Formatter<'b>) +pub fn vortex_array::expr::stats::UpperBound::eq(&self, other: &T) -> bool -pub struct vortex_array::display::MetadataExtractor +impl core::cmp::PartialOrd for vortex_array::expr::stats::UpperBound -impl vortex_array::display::TreeExtractor for vortex_array::display::MetadataExtractor +pub fn vortex_array::expr::stats::UpperBound::partial_cmp(&self, other: &T) -> core::option::Option -pub fn vortex_array::display::MetadataExtractor::write_details(&self, array: &dyn vortex_array::DynArray, _ctx: &vortex_array::display::TreeContext, f: &mut vortex_array::display::IndentedFormatter<'_, '_>) -> core::fmt::Result +impl core::fmt::Debug for vortex_array::expr::stats::UpperBound -pub fn vortex_array::display::MetadataExtractor::write_header(&self, array: &dyn vortex_array::DynArray, ctx: &vortex_array::display::TreeContext, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::expr::stats::UpperBound::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub struct vortex_array::display::NbytesExtractor +impl core::marker::StructuralPartialEq for vortex_array::expr::stats::UpperBound -impl vortex_array::display::TreeExtractor for vortex_array::display::NbytesExtractor +pub trait vortex_array::expr::stats::StatBound: core::marker::Sized -pub fn vortex_array::display::NbytesExtractor::write_details(&self, array: &dyn vortex_array::DynArray, ctx: &vortex_array::display::TreeContext, f: &mut vortex_array::display::IndentedFormatter<'_, '_>) -> core::fmt::Result +pub fn vortex_array::expr::stats::StatBound::intersection(&self, other: &Self) -> core::option::Option> -pub fn vortex_array::display::NbytesExtractor::write_header(&self, array: &dyn vortex_array::DynArray, ctx: &vortex_array::display::TreeContext, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::expr::stats::StatBound::into_value(self) -> vortex_array::expr::stats::Precision -pub struct vortex_array::display::StatsExtractor +pub fn vortex_array::expr::stats::StatBound::lift(value: vortex_array::expr::stats::Precision) -> Self -impl vortex_array::display::TreeExtractor for vortex_array::display::StatsExtractor +pub fn vortex_array::expr::stats::StatBound::to_exact(&self) -> core::option::Option<&T> -pub fn vortex_array::display::StatsExtractor::write_details(&self, array: &dyn vortex_array::DynArray, ctx: &vortex_array::display::TreeContext, f: &mut vortex_array::display::IndentedFormatter<'_, '_>) -> core::fmt::Result +pub fn vortex_array::expr::stats::StatBound::union(&self, other: &Self) -> core::option::Option -pub fn vortex_array::display::StatsExtractor::write_header(&self, array: &dyn vortex_array::DynArray, _ctx: &vortex_array::display::TreeContext, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl vortex_array::expr::stats::StatBound for vortex_array::expr::stats::LowerBound -pub struct vortex_array::display::TreeContext +pub fn vortex_array::expr::stats::LowerBound::intersection(&self, other: &Self) -> core::option::Option>> -impl vortex_array::display::TreeContext +pub fn vortex_array::expr::stats::LowerBound::into_value(self) -> vortex_array::expr::stats::Precision -pub fn vortex_array::display::TreeContext::parent_total_size(&self) -> core::option::Option +pub fn vortex_array::expr::stats::LowerBound::lift(value: vortex_array::expr::stats::Precision) -> Self -pub struct vortex_array::display::TreeDisplay +pub fn vortex_array::expr::stats::LowerBound::to_exact(&self) -> core::option::Option<&T> -impl vortex_array::display::TreeDisplay +pub fn vortex_array::expr::stats::LowerBound::union(&self, other: &Self) -> core::option::Option> -pub fn vortex_array::display::TreeDisplay::default_display(array: vortex_array::ArrayRef) -> Self +impl vortex_array::expr::stats::StatBound for vortex_array::expr::stats::Precision -pub fn vortex_array::display::TreeDisplay::new(array: vortex_array::ArrayRef) -> Self +pub fn vortex_array::expr::stats::Precision::intersection(&self, other: &Self) -> core::option::Option> -pub fn vortex_array::display::TreeDisplay::with(self, extractor: E) -> Self +pub fn vortex_array::expr::stats::Precision::into_value(self) -> vortex_array::expr::stats::Precision -pub fn vortex_array::display::TreeDisplay::with_boxed(self, extractor: alloc::boxed::Box) -> Self +pub fn vortex_array::expr::stats::Precision::lift(value: vortex_array::expr::stats::Precision) -> Self -impl core::fmt::Display for vortex_array::display::TreeDisplay +pub fn vortex_array::expr::stats::Precision::to_exact(&self) -> core::option::Option<&T> -pub fn vortex_array::display::TreeDisplay::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::expr::stats::Precision::union(&self, other: &Self) -> core::option::Option -pub trait vortex_array::display::TreeExtractor: core::marker::Send + core::marker::Sync +impl vortex_array::expr::stats::StatBound for vortex_array::expr::stats::UpperBound -pub fn vortex_array::display::TreeExtractor::write_details(&self, array: &dyn vortex_array::DynArray, ctx: &vortex_array::display::TreeContext, f: &mut vortex_array::display::IndentedFormatter<'_, '_>) -> core::fmt::Result +pub fn vortex_array::expr::stats::UpperBound::intersection(&self, other: &Self) -> core::option::Option>> -pub fn vortex_array::display::TreeExtractor::write_header(&self, array: &dyn vortex_array::DynArray, ctx: &vortex_array::display::TreeContext, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::expr::stats::UpperBound::into_value(self) -> vortex_array::expr::stats::Precision -impl vortex_array::display::TreeExtractor for vortex_array::display::BufferExtractor +pub fn vortex_array::expr::stats::UpperBound::lift(value: vortex_array::expr::stats::Precision) -> Self -pub fn vortex_array::display::BufferExtractor::write_details(&self, array: &dyn vortex_array::DynArray, _ctx: &vortex_array::display::TreeContext, f: &mut vortex_array::display::IndentedFormatter<'_, '_>) -> core::fmt::Result +pub fn vortex_array::expr::stats::UpperBound::to_exact(&self) -> core::option::Option<&T> -pub fn vortex_array::display::BufferExtractor::write_header(&self, array: &dyn vortex_array::DynArray, ctx: &vortex_array::display::TreeContext, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::expr::stats::UpperBound::union(&self, other: &Self) -> core::option::Option> -impl vortex_array::display::TreeExtractor for vortex_array::display::EncodingSummaryExtractor +pub trait vortex_array::expr::stats::StatType -pub fn vortex_array::display::EncodingSummaryExtractor::write_details(&self, array: &dyn vortex_array::DynArray, ctx: &vortex_array::display::TreeContext, f: &mut vortex_array::display::IndentedFormatter<'_, '_>) -> core::fmt::Result +pub type vortex_array::expr::stats::StatType::Bound: vortex_array::expr::stats::StatBound -pub fn vortex_array::display::EncodingSummaryExtractor::write_header(&self, array: &dyn vortex_array::DynArray, _ctx: &vortex_array::display::TreeContext, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub const vortex_array::expr::stats::StatType::STAT: vortex_array::expr::stats::Stat -impl vortex_array::display::TreeExtractor for vortex_array::display::MetadataExtractor +impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::IsConstant -pub fn vortex_array::display::MetadataExtractor::write_details(&self, array: &dyn vortex_array::DynArray, _ctx: &vortex_array::display::TreeContext, f: &mut vortex_array::display::IndentedFormatter<'_, '_>) -> core::fmt::Result +pub type vortex_array::expr::stats::IsConstant::Bound = vortex_array::expr::stats::Precision -pub fn vortex_array::display::MetadataExtractor::write_header(&self, array: &dyn vortex_array::DynArray, ctx: &vortex_array::display::TreeContext, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub const vortex_array::expr::stats::IsConstant::STAT: vortex_array::expr::stats::Stat -impl vortex_array::display::TreeExtractor for vortex_array::display::NbytesExtractor +impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::IsSorted -pub fn vortex_array::display::NbytesExtractor::write_details(&self, array: &dyn vortex_array::DynArray, ctx: &vortex_array::display::TreeContext, f: &mut vortex_array::display::IndentedFormatter<'_, '_>) -> core::fmt::Result +pub type vortex_array::expr::stats::IsSorted::Bound = vortex_array::expr::stats::Precision -pub fn vortex_array::display::NbytesExtractor::write_header(&self, array: &dyn vortex_array::DynArray, ctx: &vortex_array::display::TreeContext, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub const vortex_array::expr::stats::IsSorted::STAT: vortex_array::expr::stats::Stat -impl vortex_array::display::TreeExtractor for vortex_array::display::StatsExtractor +impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::IsStrictSorted -pub fn vortex_array::display::StatsExtractor::write_details(&self, array: &dyn vortex_array::DynArray, ctx: &vortex_array::display::TreeContext, f: &mut vortex_array::display::IndentedFormatter<'_, '_>) -> core::fmt::Result +pub type vortex_array::expr::stats::IsStrictSorted::Bound = vortex_array::expr::stats::Precision -pub fn vortex_array::display::StatsExtractor::write_header(&self, array: &dyn vortex_array::DynArray, _ctx: &vortex_array::display::TreeContext, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub const vortex_array::expr::stats::IsStrictSorted::STAT: vortex_array::expr::stats::Stat -pub mod vortex_array::dtype +impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::Max -pub use vortex_array::dtype::half +pub type vortex_array::expr::stats::Max::Bound = vortex_array::expr::stats::UpperBound -pub mod vortex_array::dtype::arrow +pub const vortex_array::expr::stats::Max::STAT: vortex_array::expr::stats::Stat -pub trait vortex_array::dtype::arrow::FromArrowType: core::marker::Sized +impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::Min -pub fn vortex_array::dtype::arrow::FromArrowType::from_arrow(value: T) -> Self +pub type vortex_array::expr::stats::Min::Bound = vortex_array::expr::stats::LowerBound -impl vortex_array::dtype::arrow::FromArrowType<&arrow_schema::field::Field> for vortex_array::dtype::DType +pub const vortex_array::expr::stats::Min::STAT: vortex_array::expr::stats::Stat -pub fn vortex_array::dtype::DType::from_arrow(field: &arrow_schema::field::Field) -> Self +impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::Sum -impl vortex_array::dtype::arrow::FromArrowType<&arrow_schema::fields::Fields> for vortex_array::dtype::StructFields +pub type vortex_array::expr::stats::Sum::Bound = vortex_array::expr::stats::Precision -pub fn vortex_array::dtype::StructFields::from_arrow(value: &arrow_schema::fields::Fields) -> Self +pub const vortex_array::expr::stats::Sum::STAT: vortex_array::expr::stats::Stat -impl vortex_array::dtype::arrow::FromArrowType<&arrow_schema::schema::Schema> for vortex_array::dtype::DType +impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::NaNCount -pub fn vortex_array::dtype::DType::from_arrow(value: &arrow_schema::schema::Schema) -> Self +pub type vortex_array::expr::stats::NaNCount::Bound = vortex_array::expr::stats::UpperBound -impl vortex_array::dtype::arrow::FromArrowType<(&arrow_schema::datatype::DataType, vortex_array::dtype::Nullability)> for vortex_array::dtype::DType +pub const vortex_array::expr::stats::NaNCount::STAT: vortex_array::expr::stats::Stat -pub fn vortex_array::dtype::DType::from_arrow((data_type, nullability): (&arrow_schema::datatype::DataType, vortex_array::dtype::Nullability)) -> Self +impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::NullCount -impl vortex_array::dtype::arrow::FromArrowType> for vortex_array::dtype::DType +pub type vortex_array::expr::stats::NullCount::Bound = vortex_array::expr::stats::UpperBound -pub fn vortex_array::dtype::DType::from_arrow(value: arrow_schema::schema::SchemaRef) -> Self +pub const vortex_array::expr::stats::NullCount::STAT: vortex_array::expr::stats::Stat -pub trait vortex_array::dtype::arrow::TryFromArrowType: core::marker::Sized +impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::UncompressedSizeInBytes -pub fn vortex_array::dtype::arrow::TryFromArrowType::try_from_arrow(value: T) -> vortex_error::VortexResult +pub type vortex_array::expr::stats::UncompressedSizeInBytes::Bound = vortex_array::expr::stats::UpperBound -impl vortex_array::dtype::arrow::TryFromArrowType<&arrow_schema::datatype::DataType> for vortex_array::dtype::DecimalDType +pub const vortex_array::expr::stats::UncompressedSizeInBytes::STAT: vortex_array::expr::stats::Stat -pub fn vortex_array::dtype::DecimalDType::try_from_arrow(value: &arrow_schema::datatype::DataType) -> vortex_error::VortexResult +pub trait vortex_array::expr::stats::StatsProvider -impl vortex_array::dtype::arrow::TryFromArrowType<&arrow_schema::datatype::DataType> for vortex_array::dtype::PType +pub fn vortex_array::expr::stats::StatsProvider::get(&self, stat: vortex_array::expr::stats::Stat) -> core::option::Option> -pub fn vortex_array::dtype::PType::try_from_arrow(value: &arrow_schema::datatype::DataType) -> vortex_error::VortexResult +pub fn vortex_array::expr::stats::StatsProvider::is_empty(&self) -> bool -pub mod vortex_array::dtype::extension +pub fn vortex_array::expr::stats::StatsProvider::len(&self) -> usize -pub struct vortex_array::dtype::extension::ExtDType +impl vortex_array::expr::stats::StatsProvider for vortex_array::stats::MutTypedStatsSetRef<'_, '_> -impl vortex_array::dtype::extension::ExtDType +pub fn vortex_array::stats::MutTypedStatsSetRef<'_, '_>::get(&self, stat: vortex_array::expr::stats::Stat) -> core::option::Option> -pub fn vortex_array::dtype::extension::ExtDType::try_new(metadata: ::Metadata, storage_dtype: vortex_array::dtype::DType) -> vortex_error::VortexResult +pub fn vortex_array::stats::MutTypedStatsSetRef<'_, '_>::is_empty(&self) -> bool -impl vortex_array::dtype::extension::ExtDType +pub fn vortex_array::stats::MutTypedStatsSetRef<'_, '_>::len(&self) -> usize -pub fn vortex_array::dtype::extension::ExtDType::can_coerce_from(&self, other: &vortex_array::dtype::DType) -> bool +impl vortex_array::expr::stats::StatsProvider for vortex_array::stats::StatsSetRef<'_> -pub fn vortex_array::dtype::extension::ExtDType::can_coerce_to(&self, other: &vortex_array::dtype::DType) -> bool +pub fn vortex_array::stats::StatsSetRef<'_>::get(&self, stat: vortex_array::expr::stats::Stat) -> core::option::Option> -pub fn vortex_array::dtype::extension::ExtDType::erased(self) -> vortex_array::dtype::extension::ExtDTypeRef +pub fn vortex_array::stats::StatsSetRef<'_>::is_empty(&self) -> bool -pub fn vortex_array::dtype::extension::ExtDType::id(&self) -> vortex_array::dtype::extension::ExtId +pub fn vortex_array::stats::StatsSetRef<'_>::len(&self) -> usize -pub fn vortex_array::dtype::extension::ExtDType::least_supertype(&self, other: &vortex_array::dtype::DType) -> core::option::Option +impl vortex_array::expr::stats::StatsProvider for vortex_array::stats::TypedStatsSetRef<'_, '_> -pub fn vortex_array::dtype::extension::ExtDType::metadata(&self) -> &::Metadata +pub fn vortex_array::stats::TypedStatsSetRef<'_, '_>::get(&self, stat: vortex_array::expr::stats::Stat) -> core::option::Option> -pub fn vortex_array::dtype::extension::ExtDType::serialize_metadata(&self) -> vortex_error::VortexResult> +pub fn vortex_array::stats::TypedStatsSetRef<'_, '_>::is_empty(&self) -> bool -pub fn vortex_array::dtype::extension::ExtDType::storage_dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_array::stats::TypedStatsSetRef<'_, '_>::len(&self) -> usize -pub fn vortex_array::dtype::extension::ExtDType::try_with_vtable(vtable: V, metadata: ::Metadata, storage_dtype: vortex_array::dtype::DType) -> vortex_error::VortexResult +pub trait vortex_array::expr::stats::StatsProviderExt: vortex_array::expr::stats::StatsProvider -pub fn vortex_array::dtype::extension::ExtDType::validate_scalar_value(&self, storage_value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult<()> +pub fn vortex_array::expr::stats::StatsProviderExt::get_as core::convert::TryFrom<&'a vortex_array::scalar::Scalar, Error = vortex_error::VortexError>>(&self, stat: vortex_array::expr::stats::Stat) -> core::option::Option> -pub fn vortex_array::dtype::extension::ExtDType::vtable(&self) -> &V +pub fn vortex_array::expr::stats::StatsProviderExt::get_as_bound(&self) -> core::option::Option<::Bound> where S: vortex_array::expr::stats::StatType, U: for<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar, Error = vortex_error::VortexError> -pub fn vortex_array::dtype::extension::ExtDType::with_nullability(&self, nullability: vortex_array::dtype::Nullability) -> vortex_array::dtype::extension::ExtDTypeRef +pub fn vortex_array::expr::stats::StatsProviderExt::get_scalar_bound>(&self) -> core::option::Option<::Bound> -impl core::clone::Clone for vortex_array::dtype::extension::ExtDType where ::Metadata: core::clone::Clone +impl vortex_array::expr::stats::StatsProviderExt for S where S: vortex_array::expr::stats::StatsProvider -pub fn vortex_array::dtype::extension::ExtDType::clone(&self) -> vortex_array::dtype::extension::ExtDType +pub fn S::get_as core::convert::TryFrom<&'a vortex_array::scalar::Scalar, Error = vortex_error::VortexError>>(&self, stat: vortex_array::expr::stats::Stat) -> core::option::Option> -impl core::cmp::Eq for vortex_array::dtype::extension::ExtDType where ::Metadata: core::cmp::Eq +pub fn S::get_as_bound(&self) -> core::option::Option<::Bound> where S: vortex_array::expr::stats::StatType, U: for<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar, Error = vortex_error::VortexError> -impl core::cmp::PartialEq for vortex_array::dtype::extension::ExtDType where ::Metadata: core::cmp::PartialEq +pub fn S::get_scalar_bound>(&self) -> core::option::Option<::Bound> -pub fn vortex_array::dtype::extension::ExtDType::eq(&self, other: &vortex_array::dtype::extension::ExtDType) -> bool +pub mod vortex_array::expr::transform -impl core::fmt::Debug for vortex_array::dtype::extension::ExtDType where ::Metadata: core::fmt::Debug +pub struct vortex_array::expr::transform::PartitionedExpr -pub fn vortex_array::dtype::extension::ExtDType::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub vortex_array::expr::transform::PartitionedExpr::partition_annotations: alloc::boxed::Box<[A]> -impl core::hash::Hash for vortex_array::dtype::extension::ExtDType where ::Metadata: core::hash::Hash +pub vortex_array::expr::transform::PartitionedExpr::partition_dtypes: alloc::boxed::Box<[vortex_array::dtype::DType]> -pub fn vortex_array::dtype::extension::ExtDType::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub vortex_array::expr::transform::PartitionedExpr::partition_names: vortex_array::dtype::FieldNames -impl core::marker::StructuralPartialEq for vortex_array::dtype::extension::ExtDType +pub vortex_array::expr::transform::PartitionedExpr::partitions: alloc::boxed::Box<[vortex_array::expr::Expression]> -pub struct vortex_array::dtype::extension::ExtDTypeRef(_) +pub vortex_array::expr::transform::PartitionedExpr::root: vortex_array::expr::Expression -impl vortex_array::dtype::extension::ExtDTypeRef +impl vortex_array::expr::transform::PartitionedExpr where vortex_array::dtype::FieldName: core::convert::From -pub fn vortex_array::dtype::extension::ExtDTypeRef::can_coerce_from(&self, other: &vortex_array::dtype::DType) -> bool +pub fn vortex_array::expr::transform::PartitionedExpr::find_partition(&self, id: &A) -> core::option::Option<&vortex_array::expr::Expression> -pub fn vortex_array::dtype::extension::ExtDTypeRef::can_coerce_to(&self, other: &vortex_array::dtype::DType) -> bool +impl core::fmt::Debug for vortex_array::expr::transform::PartitionedExpr -pub fn vortex_array::dtype::extension::ExtDTypeRef::display_metadata(&self) -> impl core::fmt::Display + '_ +pub fn vortex_array::expr::transform::PartitionedExpr::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::dtype::extension::ExtDTypeRef::eq_ignore_nullability(&self, other: &Self) -> bool +impl core::fmt::Display for vortex_array::expr::transform::PartitionedExpr -pub fn vortex_array::dtype::extension::ExtDTypeRef::id(&self) -> vortex_array::dtype::extension::ExtId +pub fn vortex_array::expr::transform::PartitionedExpr::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::dtype::extension::ExtDTypeRef::is_nullable(&self) -> bool +pub fn vortex_array::expr::transform::coerce_expression(expr: vortex_array::expr::Expression, scope: &vortex_array::dtype::DType) -> vortex_error::VortexResult -pub fn vortex_array::dtype::extension::ExtDTypeRef::least_supertype(&self, other: &vortex_array::dtype::DType) -> core::option::Option +pub fn vortex_array::expr::transform::partition(expr: vortex_array::expr::Expression, scope: &vortex_array::dtype::DType, annotate_fn: A) -> vortex_error::VortexResult::Annotation>> where ::Annotation: core::fmt::Display, vortex_array::dtype::FieldName: core::convert::From<::Annotation> -pub fn vortex_array::dtype::extension::ExtDTypeRef::nullability(&self) -> vortex_array::dtype::Nullability +pub fn vortex_array::expr::transform::replace(expr: vortex_array::expr::Expression, needle: &vortex_array::expr::Expression, replacement: vortex_array::expr::Expression) -> vortex_array::expr::Expression -pub fn vortex_array::dtype::extension::ExtDTypeRef::serialize_metadata(&self) -> vortex_error::VortexResult> +pub fn vortex_array::expr::transform::replace_root_fields(expr: vortex_array::expr::Expression, fields: &vortex_array::dtype::StructFields) -> vortex_array::expr::Expression -pub fn vortex_array::dtype::extension::ExtDTypeRef::storage_dtype(&self) -> &vortex_array::dtype::DType +pub mod vortex_array::expr::traversal -pub fn vortex_array::dtype::extension::ExtDTypeRef::with_nullability(&self, nullability: vortex_array::dtype::Nullability) -> Self +pub enum vortex_array::expr::traversal::FoldDown -impl vortex_array::dtype::extension::ExtDTypeRef +pub vortex_array::expr::traversal::FoldDown::Continue -pub fn vortex_array::dtype::extension::ExtDTypeRef::downcast(self) -> alloc::sync::Arc> +pub vortex_array::expr::traversal::FoldDown::Skip(R) -pub fn vortex_array::dtype::extension::ExtDTypeRef::is(&self) -> bool +pub vortex_array::expr::traversal::FoldDown::Stop(R) -pub fn vortex_array::dtype::extension::ExtDTypeRef::metadata(&self) -> ::Match +impl core::fmt::Debug for vortex_array::expr::traversal::FoldDown -pub fn vortex_array::dtype::extension::ExtDTypeRef::metadata_opt(&self) -> core::option::Option<::Match> +pub fn vortex_array::expr::traversal::FoldDown::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::dtype::extension::ExtDTypeRef::try_downcast(self) -> core::result::Result>, vortex_array::dtype::extension::ExtDTypeRef> +pub enum vortex_array::expr::traversal::FoldDownContext -impl core::clone::Clone for vortex_array::dtype::extension::ExtDTypeRef +pub vortex_array::expr::traversal::FoldDownContext::Continue(C) -pub fn vortex_array::dtype::extension::ExtDTypeRef::clone(&self) -> vortex_array::dtype::extension::ExtDTypeRef +pub vortex_array::expr::traversal::FoldDownContext::Skip(R) -impl core::cmp::Eq for vortex_array::dtype::extension::ExtDTypeRef +pub vortex_array::expr::traversal::FoldDownContext::Stop(R) -impl core::cmp::PartialEq for vortex_array::dtype::extension::ExtDTypeRef +impl core::fmt::Debug for vortex_array::expr::traversal::FoldDownContext -pub fn vortex_array::dtype::extension::ExtDTypeRef::eq(&self, other: &Self) -> bool +pub fn vortex_array::expr::traversal::FoldDownContext::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::fmt::Debug for vortex_array::dtype::extension::ExtDTypeRef +pub enum vortex_array::expr::traversal::FoldUp -pub fn vortex_array::dtype::extension::ExtDTypeRef::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub vortex_array::expr::traversal::FoldUp::Continue(R) -impl core::fmt::Display for vortex_array::dtype::extension::ExtDTypeRef +pub vortex_array::expr::traversal::FoldUp::Stop(R) -pub fn vortex_array::dtype::extension::ExtDTypeRef::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl vortex_array::expr::traversal::FoldUp -impl core::hash::Hash for vortex_array::dtype::extension::ExtDTypeRef +pub fn vortex_array::expr::traversal::FoldUp::value(self) -> R -pub fn vortex_array::dtype::extension::ExtDTypeRef::hash(&self, state: &mut H) +impl core::fmt::Debug for vortex_array::expr::traversal::FoldUp -pub trait vortex_array::dtype::extension::ExtDTypePlugin: 'static + core::marker::Send + core::marker::Sync + core::fmt::Debug +pub fn vortex_array::expr::traversal::FoldUp::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::dtype::extension::ExtDTypePlugin::deserialize(&self, data: &[u8], storage_dtype: vortex_array::dtype::DType) -> vortex_error::VortexResult +pub enum vortex_array::expr::traversal::TraversalOrder -pub fn vortex_array::dtype::extension::ExtDTypePlugin::id(&self) -> vortex_array::dtype::extension::ExtId +pub vortex_array::expr::traversal::TraversalOrder::Continue -impl vortex_array::dtype::extension::ExtDTypePlugin for V +pub vortex_array::expr::traversal::TraversalOrder::Skip -pub fn V::deserialize(&self, data: &[u8], storage_dtype: vortex_array::dtype::DType) -> core::result::Result +pub vortex_array::expr::traversal::TraversalOrder::Stop -pub fn V::id(&self) -> arcref::ArcRef +impl vortex_array::expr::traversal::TraversalOrder -pub trait vortex_array::dtype::extension::ExtVTable: 'static + core::marker::Sized + core::marker::Send + core::marker::Sync + core::clone::Clone + core::fmt::Debug + core::cmp::Eq + core::hash::Hash +pub fn vortex_array::expr::traversal::TraversalOrder::visit_children vortex_error::VortexResult>(self, f: F) -> vortex_error::VortexResult -pub type vortex_array::dtype::extension::ExtVTable::Metadata: 'static + core::marker::Send + core::marker::Sync + core::clone::Clone + core::fmt::Debug + core::fmt::Display + core::cmp::Eq + core::hash::Hash +pub fn vortex_array::expr::traversal::TraversalOrder::visit_parent vortex_error::VortexResult>(self, f: F) -> vortex_error::VortexResult -pub type vortex_array::dtype::extension::ExtVTable::NativeValue<'a>: core::fmt::Display +impl core::clone::Clone for vortex_array::expr::traversal::TraversalOrder -pub fn vortex_array::dtype::extension::ExtVTable::can_coerce_from(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool +pub fn vortex_array::expr::traversal::TraversalOrder::clone(&self) -> vortex_array::expr::traversal::TraversalOrder -pub fn vortex_array::dtype::extension::ExtVTable::can_coerce_to(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool +impl core::cmp::Eq for vortex_array::expr::traversal::TraversalOrder -pub fn vortex_array::dtype::extension::ExtVTable::deserialize_metadata(&self, metadata: &[u8]) -> vortex_error::VortexResult +impl core::cmp::PartialEq for vortex_array::expr::traversal::TraversalOrder -pub fn vortex_array::dtype::extension::ExtVTable::id(&self) -> vortex_array::dtype::extension::ExtId +pub fn vortex_array::expr::traversal::TraversalOrder::eq(&self, other: &vortex_array::expr::traversal::TraversalOrder) -> bool -pub fn vortex_array::dtype::extension::ExtVTable::least_supertype(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> core::option::Option +impl core::fmt::Debug for vortex_array::expr::traversal::TraversalOrder -pub fn vortex_array::dtype::extension::ExtVTable::serialize_metadata(&self, metadata: &Self::Metadata) -> vortex_error::VortexResult> +pub fn vortex_array::expr::traversal::TraversalOrder::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::dtype::extension::ExtVTable::unpack_native<'a>(ext_dtype: &'a vortex_array::dtype::extension::ExtDType, storage_value: &'a vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult +impl core::marker::StructuralPartialEq for vortex_array::expr::traversal::TraversalOrder -pub fn vortex_array::dtype::extension::ExtVTable::validate_dtype(ext_dtype: &vortex_array::dtype::extension::ExtDType) -> vortex_error::VortexResult<()> +pub struct vortex_array::expr::traversal::ReferenceCollector -pub fn vortex_array::dtype::extension::ExtVTable::validate_scalar_value(ext_dtype: &vortex_array::dtype::extension::ExtDType, storage_value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult<()> +impl vortex_array::expr::traversal::ReferenceCollector -impl vortex_array::dtype::extension::ExtVTable for vortex_array::extension::datetime::Date +pub fn vortex_array::expr::traversal::ReferenceCollector::into_fields(self) -> vortex_utils::aliases::hash_set::HashSet -pub type vortex_array::extension::datetime::Date::Metadata = vortex_array::extension::datetime::TimeUnit +pub fn vortex_array::expr::traversal::ReferenceCollector::new() -> Self -pub type vortex_array::extension::datetime::Date::NativeValue<'a> = vortex_array::extension::datetime::DateValue +pub fn vortex_array::expr::traversal::ReferenceCollector::with_set(set: vortex_utils::aliases::hash_set::HashSet) -> Self -pub fn vortex_array::extension::datetime::Date::can_coerce_from(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool +impl core::default::Default for vortex_array::expr::traversal::ReferenceCollector -pub fn vortex_array::extension::datetime::Date::can_coerce_to(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool +pub fn vortex_array::expr::traversal::ReferenceCollector::default() -> vortex_array::expr::traversal::ReferenceCollector -pub fn vortex_array::extension::datetime::Date::deserialize_metadata(&self, metadata: &[u8]) -> vortex_error::VortexResult +impl vortex_array::expr::traversal::NodeVisitor<'_> for vortex_array::expr::traversal::ReferenceCollector -pub fn vortex_array::extension::datetime::Date::id(&self) -> vortex_array::dtype::extension::ExtId +pub type vortex_array::expr::traversal::ReferenceCollector::NodeTy = vortex_array::expr::Expression -pub fn vortex_array::extension::datetime::Date::least_supertype(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> core::option::Option +pub fn vortex_array::expr::traversal::ReferenceCollector::visit_down(&mut self, node: &'a Self::NodeTy) -> vortex_error::VortexResult -pub fn vortex_array::extension::datetime::Date::serialize_metadata(&self, metadata: &Self::Metadata) -> vortex_error::VortexResult> +pub fn vortex_array::expr::traversal::ReferenceCollector::visit_up(&mut self, node: &vortex_array::expr::Expression) -> vortex_error::VortexResult -pub fn vortex_array::extension::datetime::Date::unpack_native<'a>(ext_dtype: &'a vortex_array::dtype::extension::ExtDType, storage_value: &'a vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult +pub struct vortex_array::expr::traversal::Transformed -pub fn vortex_array::extension::datetime::Date::validate_dtype(ext_dtype: &vortex_array::dtype::extension::ExtDType) -> vortex_error::VortexResult<()> +pub vortex_array::expr::traversal::Transformed::changed: bool -pub fn vortex_array::extension::datetime::Date::validate_scalar_value(ext_dtype: &vortex_array::dtype::extension::ExtDType, storage_value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult<()> +pub vortex_array::expr::traversal::Transformed::order: vortex_array::expr::traversal::TraversalOrder -impl vortex_array::dtype::extension::ExtVTable for vortex_array::extension::datetime::Time +pub vortex_array::expr::traversal::Transformed::value: T -pub type vortex_array::extension::datetime::Time::Metadata = vortex_array::extension::datetime::TimeUnit +impl vortex_array::expr::traversal::Transformed -pub type vortex_array::extension::datetime::Time::NativeValue<'a> = vortex_array::extension::datetime::TimeValue +pub fn vortex_array::expr::traversal::Transformed::into_inner(self) -> T -pub fn vortex_array::extension::datetime::Time::can_coerce_from(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool +pub fn vortex_array::expr::traversal::Transformed::map O>(self, f: F) -> vortex_array::expr::traversal::Transformed -pub fn vortex_array::extension::datetime::Time::can_coerce_to(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool +pub fn vortex_array::expr::traversal::Transformed::no(value: T) -> Self -pub fn vortex_array::extension::datetime::Time::deserialize_metadata(&self, data: &[u8]) -> vortex_error::VortexResult +pub fn vortex_array::expr::traversal::Transformed::yes(value: T) -> Self -pub fn vortex_array::extension::datetime::Time::id(&self) -> vortex_array::dtype::extension::ExtId +impl core::clone::Clone for vortex_array::expr::traversal::Transformed -pub fn vortex_array::extension::datetime::Time::least_supertype(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> core::option::Option +pub fn vortex_array::expr::traversal::Transformed::clone(&self) -> vortex_array::expr::traversal::Transformed -pub fn vortex_array::extension::datetime::Time::serialize_metadata(&self, metadata: &Self::Metadata) -> vortex_error::VortexResult> +impl core::fmt::Debug for vortex_array::expr::traversal::Transformed -pub fn vortex_array::extension::datetime::Time::unpack_native<'a>(ext_dtype: &'a vortex_array::dtype::extension::ExtDType, storage_value: &'a vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult +pub fn vortex_array::expr::traversal::Transformed::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::extension::datetime::Time::validate_dtype(ext_dtype: &vortex_array::dtype::extension::ExtDType) -> vortex_error::VortexResult<()> +pub trait vortex_array::expr::traversal::Node: core::marker::Sized + core::clone::Clone -pub fn vortex_array::extension::datetime::Time::validate_scalar_value(ext_dtype: &vortex_array::dtype::extension::ExtDType, storage_value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult<()> +pub fn vortex_array::expr::traversal::Node::apply_children<'a, F: core::ops::function::FnMut(&'a Self) -> vortex_error::VortexResult>(&'a self, f: F) -> vortex_error::VortexResult -impl vortex_array::dtype::extension::ExtVTable for vortex_array::extension::datetime::Timestamp +pub fn vortex_array::expr::traversal::Node::children_count(&self) -> usize -pub type vortex_array::extension::datetime::Timestamp::Metadata = vortex_array::extension::datetime::TimestampOptions +pub fn vortex_array::expr::traversal::Node::iter_children(&self, f: impl core::ops::function::FnOnce(&mut dyn core::iter::traits::iterator::Iterator) -> T) -> T -pub type vortex_array::extension::datetime::Timestamp::NativeValue<'a> = vortex_array::extension::datetime::TimestampValue<'a> +pub fn vortex_array::expr::traversal::Node::map_children vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult> -pub fn vortex_array::extension::datetime::Timestamp::can_coerce_from(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool +impl vortex_array::expr::traversal::Node for vortex_array::expr::Expression -pub fn vortex_array::extension::datetime::Timestamp::can_coerce_to(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool +pub fn vortex_array::expr::Expression::apply_children<'a, F: core::ops::function::FnMut(&'a Self) -> vortex_error::VortexResult>(&'a self, f: F) -> vortex_error::VortexResult -pub fn vortex_array::extension::datetime::Timestamp::deserialize_metadata(&self, data: &[u8]) -> vortex_error::VortexResult +pub fn vortex_array::expr::Expression::children_count(&self) -> usize -pub fn vortex_array::extension::datetime::Timestamp::id(&self) -> vortex_array::dtype::extension::ExtId +pub fn vortex_array::expr::Expression::iter_children(&self, f: impl core::ops::function::FnOnce(&mut dyn core::iter::traits::iterator::Iterator) -> T) -> T -pub fn vortex_array::extension::datetime::Timestamp::least_supertype(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> core::option::Option +pub fn vortex_array::expr::Expression::map_children vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult> -pub fn vortex_array::extension::datetime::Timestamp::serialize_metadata(&self, metadata: &Self::Metadata) -> vortex_error::VortexResult> +pub trait vortex_array::expr::traversal::NodeContainer<'a, T: 'a>: core::marker::Sized -pub fn vortex_array::extension::datetime::Timestamp::unpack_native<'a>(ext_dtype: &'a vortex_array::dtype::extension::ExtDType, storage_value: &'a vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult +pub fn vortex_array::expr::traversal::NodeContainer::apply_elements vortex_error::VortexResult>(&'a self, f: F) -> vortex_error::VortexResult -pub fn vortex_array::extension::datetime::Timestamp::validate_dtype(ext_dtype: &vortex_array::dtype::extension::ExtDType) -> vortex_error::VortexResult<()> +pub fn vortex_array::expr::traversal::NodeContainer::map_elements vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult> -pub fn vortex_array::extension::datetime::Timestamp::validate_scalar_value(ext_dtype: &vortex_array::dtype::extension::ExtDType, storage_value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult<()> +impl<'a, T, C> vortex_array::expr::traversal::NodeContainer<'a, T> for alloc::sync::Arc where T: 'a, C: vortex_array::expr::traversal::NodeContainer<'a, T> + core::clone::Clone -impl vortex_array::dtype::extension::ExtVTable for vortex_array::extension::uuid::Uuid +pub fn alloc::sync::Arc::apply_elements vortex_error::VortexResult>(&'a self, f: F) -> vortex_error::VortexResult -pub type vortex_array::extension::uuid::Uuid::Metadata = vortex_array::extension::uuid::UuidMetadata +pub fn alloc::sync::Arc::map_elements vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult>> -pub type vortex_array::extension::uuid::Uuid::NativeValue<'a> = uuid::Uuid +impl<'a, T: 'a, C: vortex_array::expr::traversal::NodeContainer<'a, T>> vortex_array::expr::traversal::NodeContainer<'a, T> for [C; 2] -pub fn vortex_array::extension::uuid::Uuid::can_coerce_from(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool +pub fn [C; 2]::apply_elements vortex_error::VortexResult>(&'a self, f: F) -> vortex_error::VortexResult -pub fn vortex_array::extension::uuid::Uuid::can_coerce_to(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool +pub fn [C; 2]::map_elements vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult> -pub fn vortex_array::extension::uuid::Uuid::deserialize_metadata(&self, metadata: &[u8]) -> vortex_error::VortexResult +impl<'a, T: 'a, C: vortex_array::expr::traversal::NodeContainer<'a, T>> vortex_array::expr::traversal::NodeContainer<'a, T> for alloc::boxed::Box -pub fn vortex_array::extension::uuid::Uuid::id(&self) -> vortex_array::dtype::extension::ExtId +pub fn alloc::boxed::Box::apply_elements vortex_error::VortexResult>(&'a self, f: F) -> vortex_error::VortexResult -pub fn vortex_array::extension::uuid::Uuid::least_supertype(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> core::option::Option +pub fn alloc::boxed::Box::map_elements vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult>> -pub fn vortex_array::extension::uuid::Uuid::serialize_metadata(&self, metadata: &Self::Metadata) -> vortex_error::VortexResult> +impl<'a, T: 'a, C: vortex_array::expr::traversal::NodeContainer<'a, T>> vortex_array::expr::traversal::NodeContainer<'a, T> for alloc::vec::Vec -pub fn vortex_array::extension::uuid::Uuid::unpack_native<'a>(ext_dtype: &vortex_array::dtype::extension::ExtDType, storage_value: &'a vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult +pub fn alloc::vec::Vec::apply_elements vortex_error::VortexResult>(&'a self, f: F) -> vortex_error::VortexResult -pub fn vortex_array::extension::uuid::Uuid::validate_dtype(ext_dtype: &vortex_array::dtype::extension::ExtDType) -> vortex_error::VortexResult<()> +pub fn alloc::vec::Vec::map_elements vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult> -pub fn vortex_array::extension::uuid::Uuid::validate_scalar_value(ext_dtype: &vortex_array::dtype::extension::ExtDType, storage_value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult<()> +impl<'a> vortex_array::expr::traversal::NodeContainer<'a, vortex_array::expr::Expression> for vortex_array::expr::Expression -pub trait vortex_array::dtype::extension::Matcher +pub fn vortex_array::expr::Expression::apply_elements vortex_error::VortexResult>(&'a self, f: F) -> vortex_error::VortexResult -pub type vortex_array::dtype::extension::Matcher::Match<'a> +pub fn vortex_array::expr::Expression::map_elements vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::extension::Matcher::matches(item: &vortex_array::dtype::extension::ExtDTypeRef) -> bool +pub trait vortex_array::expr::traversal::NodeExt: vortex_array::expr::traversal::Node -pub fn vortex_array::dtype::extension::Matcher::try_match<'a>(item: &'a vortex_array::dtype::extension::ExtDTypeRef) -> core::option::Option +pub fn vortex_array::expr::traversal::NodeExt::accept<'a, V: vortex_array::expr::traversal::NodeVisitor<'a, NodeTy = Self>>(&'a self, visitor: &mut V) -> vortex_error::VortexResult -impl vortex_array::dtype::extension::Matcher for vortex_array::extension::datetime::AnyTemporal +pub fn vortex_array::expr::traversal::NodeExt::fold>(self, folder: &mut F) -> vortex_error::VortexResult> -pub type vortex_array::extension::datetime::AnyTemporal::Match<'a> = vortex_array::extension::datetime::TemporalMetadata<'a> +pub fn vortex_array::expr::traversal::NodeExt::fold_context>(self, ctx: &::Context, folder: &mut F) -> vortex_error::VortexResult> -pub fn vortex_array::extension::datetime::AnyTemporal::matches(item: &vortex_array::dtype::extension::ExtDTypeRef) -> bool +pub fn vortex_array::expr::traversal::NodeExt::rewrite>(self, rewriter: &mut R) -> vortex_error::VortexResult> -pub fn vortex_array::extension::datetime::AnyTemporal::try_match<'a>(item: &'a vortex_array::dtype::extension::ExtDTypeRef) -> core::option::Option +pub fn vortex_array::expr::traversal::NodeExt::transform(self, down: F, up: G) -> vortex_error::VortexResult> where F: core::ops::function::FnMut(Self) -> vortex_error::VortexResult>, G: core::ops::function::FnMut(Self) -> vortex_error::VortexResult> -impl vortex_array::dtype::extension::Matcher for V +pub fn vortex_array::expr::traversal::NodeExt::transform_down vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult> -pub type V::Match<'a> = &'a ::Metadata +pub fn vortex_array::expr::traversal::NodeExt::transform_up vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult> -pub fn V::matches(item: &vortex_array::dtype::extension::ExtDTypeRef) -> bool +impl vortex_array::expr::traversal::NodeExt for T -pub fn V::try_match<'a>(item: &'a vortex_array::dtype::extension::ExtDTypeRef) -> core::option::Option<::Match> +pub fn T::accept<'a, V: vortex_array::expr::traversal::NodeVisitor<'a, NodeTy = Self>>(&'a self, visitor: &mut V) -> vortex_error::VortexResult -pub type vortex_array::dtype::extension::ExtDTypePluginRef = alloc::sync::Arc +pub fn T::fold>(self, folder: &mut F) -> vortex_error::VortexResult> -pub type vortex_array::dtype::extension::ExtId = arcref::ArcRef +pub fn T::fold_context>(self, ctx: &::Context, folder: &mut F) -> vortex_error::VortexResult> -pub mod vortex_array::dtype::flatbuffers +pub fn T::rewrite>(self, rewriter: &mut R) -> vortex_error::VortexResult> -pub use vortex_array::dtype::flatbuffers::<> +pub fn T::transform(self, down: F, up: G) -> vortex_error::VortexResult> where F: core::ops::function::FnMut(Self) -> vortex_error::VortexResult>, G: core::ops::function::FnMut(Self) -> vortex_error::VortexResult> -pub mod vortex_array::dtype::proto +pub fn T::transform_down vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult> -pub use vortex_array::dtype::proto::dtype +pub fn T::transform_up vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult> -pub mod vortex_array::dtype::serde +pub trait vortex_array::expr::traversal::NodeFolder -pub mod vortex_array::dtype::session +pub type vortex_array::expr::traversal::NodeFolder::NodeTy: vortex_array::expr::traversal::Node -pub struct vortex_array::dtype::session::DTypeSession +pub type vortex_array::expr::traversal::NodeFolder::Result -impl vortex_array::dtype::session::DTypeSession +pub fn vortex_array::expr::traversal::NodeFolder::visit_down(&mut self, _node: &Self::NodeTy) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::session::DTypeSession::register(&self, vtable: V) +pub fn vortex_array::expr::traversal::NodeFolder::visit_up(&mut self, _node: Self::NodeTy, _children: alloc::vec::Vec) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::session::DTypeSession::registry(&self) -> &vortex_array::dtype::session::ExtDTypeRegistry +pub trait vortex_array::expr::traversal::NodeFolderContext -impl core::default::Default for vortex_array::dtype::session::DTypeSession +pub type vortex_array::expr::traversal::NodeFolderContext::Context -pub fn vortex_array::dtype::session::DTypeSession::default() -> Self +pub type vortex_array::expr::traversal::NodeFolderContext::NodeTy: vortex_array::expr::traversal::Node -impl core::fmt::Debug for vortex_array::dtype::session::DTypeSession +pub type vortex_array::expr::traversal::NodeFolderContext::Result -pub fn vortex_array::dtype::session::DTypeSession::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::expr::traversal::NodeFolderContext::visit_down(&mut self, _ctx: &Self::Context, _node: &Self::NodeTy) -> vortex_error::VortexResult> -pub trait vortex_array::dtype::session::DTypeSessionExt: vortex_session::SessionExt +pub fn vortex_array::expr::traversal::NodeFolderContext::visit_up(&mut self, _node: Self::NodeTy, _context: &Self::Context, _children: alloc::vec::Vec) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::session::DTypeSessionExt::dtypes(&self) -> vortex_session::Ref<'_, vortex_array::dtype::session::DTypeSession> +pub trait vortex_array::expr::traversal::NodeRefContainer<'a, T: 'a>: core::marker::Sized -impl vortex_array::dtype::session::DTypeSessionExt for S +pub fn vortex_array::expr::traversal::NodeRefContainer::apply_ref_elements vortex_error::VortexResult>(&self, f: F) -> vortex_error::VortexResult -pub fn S::dtypes(&self) -> vortex_session::Ref<'_, vortex_array::dtype::session::DTypeSession> +impl<'a, T: 'a, C: vortex_array::expr::traversal::NodeContainer<'a, T>> vortex_array::expr::traversal::NodeRefContainer<'a, T> for &'a [C] -pub type vortex_array::dtype::session::ExtDTypeRegistry = vortex_session::registry::Registry +pub fn &'a [C]::apply_ref_elements vortex_error::VortexResult>(&self, f: F) -> vortex_error::VortexResult -pub enum vortex_array::dtype::DType +pub trait vortex_array::expr::traversal::NodeRewriter: core::marker::Sized -pub vortex_array::dtype::DType::Binary(vortex_array::dtype::Nullability) +pub type vortex_array::expr::traversal::NodeRewriter::NodeTy: vortex_array::expr::traversal::Node -pub vortex_array::dtype::DType::Bool(vortex_array::dtype::Nullability) +pub fn vortex_array::expr::traversal::NodeRewriter::visit_down(&mut self, node: Self::NodeTy) -> vortex_error::VortexResult> -pub vortex_array::dtype::DType::Decimal(vortex_array::dtype::DecimalDType, vortex_array::dtype::Nullability) +pub fn vortex_array::expr::traversal::NodeRewriter::visit_up(&mut self, node: Self::NodeTy) -> vortex_error::VortexResult> -pub vortex_array::dtype::DType::Extension(vortex_array::dtype::extension::ExtDTypeRef) +pub trait vortex_array::expr::traversal::NodeVisitor<'a> -pub vortex_array::dtype::DType::FixedSizeList(alloc::sync::Arc, u32, vortex_array::dtype::Nullability) +pub type vortex_array::expr::traversal::NodeVisitor::NodeTy: vortex_array::expr::traversal::Node -pub vortex_array::dtype::DType::List(alloc::sync::Arc, vortex_array::dtype::Nullability) +pub fn vortex_array::expr::traversal::NodeVisitor::visit_down(&mut self, node: &'a Self::NodeTy) -> vortex_error::VortexResult -pub vortex_array::dtype::DType::Null +pub fn vortex_array::expr::traversal::NodeVisitor::visit_up(&mut self, node: &'a Self::NodeTy) -> vortex_error::VortexResult -pub vortex_array::dtype::DType::Primitive(vortex_array::dtype::PType, vortex_array::dtype::Nullability) +impl vortex_array::expr::traversal::NodeVisitor<'_> for vortex_array::expr::traversal::ReferenceCollector -pub vortex_array::dtype::DType::Struct(vortex_array::dtype::StructFields, vortex_array::dtype::Nullability) +pub type vortex_array::expr::traversal::ReferenceCollector::NodeTy = vortex_array::expr::Expression -pub vortex_array::dtype::DType::Utf8(vortex_array::dtype::Nullability) +pub fn vortex_array::expr::traversal::ReferenceCollector::visit_down(&mut self, node: &'a Self::NodeTy) -> vortex_error::VortexResult -pub vortex_array::dtype::DType::Variant(vortex_array::dtype::Nullability) +pub fn vortex_array::expr::traversal::ReferenceCollector::visit_up(&mut self, node: &vortex_array::expr::Expression) -> vortex_error::VortexResult -impl vortex_array::dtype::DType +pub fn vortex_array::expr::traversal::pre_order_visit_down<'a, T: 'a + vortex_array::expr::traversal::Node>(tree: &'a T, f: impl core::ops::function::FnMut(&'a T) -> vortex_error::VortexResult) -> vortex_error::VortexResult<()> -pub const vortex_array::dtype::DType::BYTES: Self +pub fn vortex_array::expr::traversal::pre_order_visit_up<'a, T: 'a + vortex_array::expr::traversal::Node>(tree: &'a T, f: impl core::ops::function::FnMut(&'a T) -> vortex_error::VortexResult) -> vortex_error::VortexResult<()> -pub fn vortex_array::dtype::DType::as_any_size_list_element_opt(&self) -> core::option::Option<&alloc::sync::Arc> +pub struct vortex_array::expr::ExactExpr(pub vortex_array::expr::Expression) -pub fn vortex_array::dtype::DType::as_decimal_opt(&self) -> core::option::Option<&vortex_array::dtype::DecimalDType> +impl core::clone::Clone for vortex_array::expr::ExactExpr -pub fn vortex_array::dtype::DType::as_extension(&self) -> &vortex_array::dtype::extension::ExtDTypeRef +pub fn vortex_array::expr::ExactExpr::clone(&self) -> vortex_array::expr::ExactExpr -pub fn vortex_array::dtype::DType::as_extension_opt(&self) -> core::option::Option<&vortex_array::dtype::extension::ExtDTypeRef> +impl core::cmp::Eq for vortex_array::expr::ExactExpr -pub fn vortex_array::dtype::DType::as_fixed_size_list_element_opt(&self) -> core::option::Option<&alloc::sync::Arc> +impl core::cmp::PartialEq for vortex_array::expr::ExactExpr -pub fn vortex_array::dtype::DType::as_list_element_opt(&self) -> core::option::Option<&alloc::sync::Arc> +pub fn vortex_array::expr::ExactExpr::eq(&self, other: &Self) -> bool -pub fn vortex_array::dtype::DType::as_nonnullable(&self) -> Self +impl core::hash::Hash for vortex_array::expr::ExactExpr -pub fn vortex_array::dtype::DType::as_nullable(&self) -> Self +pub fn vortex_array::expr::ExactExpr::hash(&self, state: &mut H) -pub fn vortex_array::dtype::DType::as_ptype(&self) -> vortex_array::dtype::PType +pub struct vortex_array::expr::Expression -pub fn vortex_array::dtype::DType::as_struct_fields(&self) -> &vortex_array::dtype::StructFields +impl vortex_array::expr::Expression -pub fn vortex_array::dtype::DType::as_struct_fields_opt(&self) -> core::option::Option<&vortex_array::dtype::StructFields> +pub fn vortex_array::expr::Expression::child(&self, n: usize) -> &vortex_array::expr::Expression -pub fn vortex_array::dtype::DType::element_size(&self) -> core::option::Option +pub fn vortex_array::expr::Expression::children(&self) -> &alloc::sync::Arc> -pub fn vortex_array::dtype::DType::eq_ignore_nullability(&self, other: &Self) -> bool +pub fn vortex_array::expr::Expression::display_tree(&self) -> impl core::fmt::Display -pub fn vortex_array::dtype::DType::eq_with_nullability_subset(&self, other: &Self) -> bool +pub fn vortex_array::expr::Expression::fmt_sql(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::dtype::DType::eq_with_nullability_superset(&self, other: &Self) -> bool +pub fn vortex_array::expr::Expression::return_dtype(&self, scope: &vortex_array::dtype::DType) -> vortex_error::VortexResult -pub fn vortex_array::dtype::DType::into_any_size_list_element_opt(self) -> core::option::Option> +pub fn vortex_array::expr::Expression::scalar_fn(&self) -> &vortex_array::scalar_fn::ScalarFnRef -pub fn vortex_array::dtype::DType::into_decimal_opt(self) -> core::option::Option +pub fn vortex_array::expr::Expression::stat_expression(&self, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::dtype::DType::into_fixed_size_list_element_opt(self) -> core::option::Option> +pub fn vortex_array::expr::Expression::stat_falsification(&self, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::dtype::DType::into_list_element_opt(self) -> core::option::Option> +pub fn vortex_array::expr::Expression::stat_max(&self, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::dtype::DType::into_struct_fields(self) -> vortex_array::dtype::StructFields +pub fn vortex_array::expr::Expression::stat_min(&self, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::dtype::DType::into_struct_fields_opt(self) -> core::option::Option +pub fn vortex_array::expr::Expression::try_new(scalar_fn: vortex_array::scalar_fn::ScalarFnRef, children: impl core::iter::traits::collect::IntoIterator) -> vortex_error::VortexResult -pub fn vortex_array::dtype::DType::is_binary(&self) -> bool +pub fn vortex_array::expr::Expression::validity(&self) -> vortex_error::VortexResult -pub fn vortex_array::dtype::DType::is_boolean(&self) -> bool +pub fn vortex_array::expr::Expression::with_children(self, children: impl core::iter::traits::collect::IntoIterator) -> vortex_error::VortexResult -pub fn vortex_array::dtype::DType::is_decimal(&self) -> bool +impl vortex_array::expr::Expression -pub fn vortex_array::dtype::DType::is_extension(&self) -> bool +pub fn vortex_array::expr::Expression::from_proto(expr: &vortex_proto::expr::Expr, session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::dtype::DType::is_fixed_size_list(&self) -> bool +impl vortex_array::expr::Expression -pub fn vortex_array::dtype::DType::is_float(&self) -> bool +pub fn vortex_array::expr::Expression::optimize(&self, scope: &vortex_array::dtype::DType) -> vortex_error::VortexResult -pub fn vortex_array::dtype::DType::is_int(&self) -> bool +pub fn vortex_array::expr::Expression::optimize_recursive(&self, scope: &vortex_array::dtype::DType) -> vortex_error::VortexResult -pub fn vortex_array::dtype::DType::is_list(&self) -> bool +pub fn vortex_array::expr::Expression::simplify(&self, scope: &vortex_array::dtype::DType) -> vortex_error::VortexResult -pub fn vortex_array::dtype::DType::is_nested(&self) -> bool +pub fn vortex_array::expr::Expression::simplify_untyped(&self) -> vortex_error::VortexResult -pub fn vortex_array::dtype::DType::is_nullable(&self) -> bool +pub fn vortex_array::expr::Expression::try_optimize(&self, scope: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::DType::is_primitive(&self) -> bool +pub fn vortex_array::expr::Expression::try_optimize_recursive(&self, scope: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::DType::is_signed_int(&self) -> bool +impl core::clone::Clone for vortex_array::expr::Expression -pub fn vortex_array::dtype::DType::is_struct(&self) -> bool +pub fn vortex_array::expr::Expression::clone(&self) -> vortex_array::expr::Expression -pub fn vortex_array::dtype::DType::is_unsigned_int(&self) -> bool +impl core::cmp::Eq for vortex_array::expr::Expression -pub fn vortex_array::dtype::DType::is_utf8(&self) -> bool +impl core::cmp::PartialEq for vortex_array::expr::Expression -pub fn vortex_array::dtype::DType::is_variant(&self) -> bool +pub fn vortex_array::expr::Expression::eq(&self, other: &vortex_array::expr::Expression) -> bool -pub fn vortex_array::dtype::DType::list(dtype: impl core::convert::Into, nullability: vortex_array::dtype::Nullability) -> Self +impl core::fmt::Debug for vortex_array::expr::Expression -pub fn vortex_array::dtype::DType::nullability(&self) -> vortex_array::dtype::Nullability +pub fn vortex_array::expr::Expression::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::dtype::DType::struct_, impl core::convert::Into)>>(iter: I, nullability: vortex_array::dtype::Nullability) -> Self +impl core::fmt::Display for vortex_array::expr::Expression -pub fn vortex_array::dtype::DType::union_nullability(&self, other: vortex_array::dtype::Nullability) -> Self +pub fn vortex_array::expr::Expression::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::dtype::DType::with_nullability(&self, nullability: vortex_array::dtype::Nullability) -> Self +impl core::hash::Hash for vortex_array::expr::Expression -impl vortex_array::dtype::DType +pub fn vortex_array::expr::Expression::hash<__H: core::hash::Hasher>(&self, state: &mut __H) -pub fn vortex_array::dtype::DType::all_coercible_to(types: &[vortex_array::dtype::DType], target: &vortex_array::dtype::DType) -> bool +impl core::marker::StructuralPartialEq for vortex_array::expr::Expression -pub fn vortex_array::dtype::DType::are_coercible(types: &[vortex_array::dtype::DType]) -> bool +impl core::ops::deref::Deref for vortex_array::expr::Expression -pub fn vortex_array::dtype::DType::can_coerce_from(&self, other: &vortex_array::dtype::DType) -> bool +pub type vortex_array::expr::Expression::Target = vortex_array::scalar_fn::ScalarFnRef -pub fn vortex_array::dtype::DType::can_coerce_to(&self, other: &vortex_array::dtype::DType) -> bool +pub fn vortex_array::expr::Expression::deref(&self) -> &Self::Target -pub fn vortex_array::dtype::DType::coerce_all_to(types: &[vortex_array::dtype::DType], target: &vortex_array::dtype::DType) -> core::option::Option> +impl core::ops::drop::Drop for vortex_array::expr::Expression -pub fn vortex_array::dtype::DType::coerce_to_supertype(types: &[vortex_array::dtype::DType]) -> core::option::Option> +pub fn vortex_array::expr::Expression::drop(&mut self) -pub fn vortex_array::dtype::DType::is_numeric(&self) -> bool +impl vortex_array::builtins::ExprBuiltins for vortex_array::expr::Expression -pub fn vortex_array::dtype::DType::is_temporal(&self) -> bool +pub fn vortex_array::expr::Expression::binary(&self, rhs: vortex_array::expr::Expression, op: vortex_array::scalar_fn::fns::operators::Operator) -> vortex_error::VortexResult -pub fn vortex_array::dtype::DType::least_supertype(&self, other: &vortex_array::dtype::DType) -> core::option::Option +pub fn vortex_array::expr::Expression::cast(&self, dtype: vortex_array::dtype::DType) -> vortex_error::VortexResult -pub fn vortex_array::dtype::DType::least_supertype_of(types: &[vortex_array::dtype::DType]) -> core::option::Option +pub fn vortex_array::expr::Expression::fill_null(&self, fill_value: vortex_array::expr::Expression) -> vortex_error::VortexResult -impl vortex_array::dtype::DType +pub fn vortex_array::expr::Expression::get_item(&self, field_name: impl core::convert::Into) -> vortex_error::VortexResult -pub fn vortex_array::dtype::DType::from_flatbuffer(buffer: vortex_flatbuffers::FlatBuffer, session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::expr::Expression::is_null(&self) -> vortex_error::VortexResult -impl vortex_array::dtype::DType +pub fn vortex_array::expr::Expression::list_contains(&self, value: vortex_array::expr::Expression) -> vortex_error::VortexResult -pub fn vortex_array::dtype::DType::from_proto(value: &vortex_proto::dtype::DType, session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::expr::Expression::mask(&self, mask: vortex_array::expr::Expression) -> vortex_error::VortexResult -impl vortex_array::dtype::DType +pub fn vortex_array::expr::Expression::not(&self) -> vortex_error::VortexResult -pub fn vortex_array::dtype::DType::to_arrow_dtype(&self) -> vortex_error::VortexResult +pub fn vortex_array::expr::Expression::zip(&self, if_true: vortex_array::expr::Expression, if_false: vortex_array::expr::Expression) -> vortex_error::VortexResult -pub fn vortex_array::dtype::DType::to_arrow_schema(&self) -> vortex_error::VortexResult +impl vortex_array::expr::VortexExprExt for vortex_array::expr::Expression -impl core::clone::Clone for vortex_array::dtype::DType +pub fn vortex_array::expr::Expression::field_references(&self) -> vortex_utils::aliases::hash_set::HashSet -pub fn vortex_array::dtype::DType::clone(&self) -> vortex_array::dtype::DType +impl vortex_array::expr::proto::ExprSerializeProtoExt for vortex_array::expr::Expression -impl core::cmp::Eq for vortex_array::dtype::DType +pub fn vortex_array::expr::Expression::serialize_proto(&self) -> vortex_error::VortexResult -impl core::cmp::PartialEq for vortex_array::dtype::DType +impl vortex_array::expr::traversal::Node for vortex_array::expr::Expression -pub fn vortex_array::dtype::DType::eq(&self, other: &vortex_array::dtype::DType) -> bool +pub fn vortex_array::expr::Expression::apply_children<'a, F: core::ops::function::FnMut(&'a Self) -> vortex_error::VortexResult>(&'a self, f: F) -> vortex_error::VortexResult -impl core::convert::From for vortex_array::dtype::FieldDType +pub fn vortex_array::expr::Expression::children_count(&self) -> usize -pub fn vortex_array::dtype::FieldDType::from(value: vortex_array::dtype::DType) -> Self +pub fn vortex_array::expr::Expression::iter_children(&self, f: impl core::ops::function::FnOnce(&mut dyn core::iter::traits::iterator::Iterator) -> T) -> T -impl core::convert::From for &vortex_array::dtype::DType +pub fn vortex_array::expr::Expression::map_children vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult> -pub fn &vortex_array::dtype::DType::from(item: vortex_array::dtype::PType) -> Self +impl<'a> vortex_array::expr::traversal::NodeContainer<'a, vortex_array::expr::Expression> for vortex_array::expr::Expression -impl core::convert::From for vortex_array::dtype::DType +pub fn vortex_array::expr::Expression::apply_elements vortex_error::VortexResult>(&'a self, f: F) -> vortex_error::VortexResult -pub fn vortex_array::dtype::DType::from(item: vortex_array::dtype::PType) -> Self +pub fn vortex_array::expr::Expression::map_elements vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult> -impl core::convert::TryFrom<&vortex_array::dtype::DType> for vortex_array::dtype::DecimalDType +pub trait vortex_array::expr::Annotation: core::clone::Clone + core::hash::Hash + core::cmp::Eq -pub type vortex_array::dtype::DecimalDType::Error = vortex_error::VortexError +impl vortex_array::expr::Annotation for A where A: core::clone::Clone + core::hash::Hash + core::cmp::Eq -pub fn vortex_array::dtype::DecimalDType::try_from(value: &vortex_array::dtype::DType) -> core::result::Result +pub trait vortex_array::expr::AnnotationFn: core::ops::function::Fn(&vortex_array::expr::Expression) -> alloc::vec::Vec -impl core::convert::TryFrom<&vortex_array::dtype::DType> for vortex_array::dtype::PType +pub type vortex_array::expr::AnnotationFn::Annotation: vortex_array::expr::Annotation -pub type vortex_array::dtype::PType::Error = vortex_error::VortexError +impl vortex_array::expr::AnnotationFn for F where A: vortex_array::expr::Annotation, F: core::ops::function::Fn(&vortex_array::expr::Expression) -> alloc::vec::Vec -pub fn vortex_array::dtype::PType::try_from(value: &vortex_array::dtype::DType) -> vortex_error::VortexResult +pub type F::Annotation = A -impl core::convert::TryFrom<&vortex_array::dtype::DType> for vortex_proto::dtype::DType +pub trait vortex_array::expr::StatsCatalog -pub type vortex_proto::dtype::DType::Error = vortex_error::VortexError +pub fn vortex_array::expr::StatsCatalog::stats_ref(&self, _field_path: &vortex_array::dtype::FieldPath, _stat: vortex_array::expr::stats::Stat) -> core::option::Option -pub fn vortex_proto::dtype::DType::try_from(value: &vortex_array::dtype::DType) -> vortex_error::VortexResult +pub trait vortex_array::expr::VortexExprExt -impl core::convert::TryFrom for vortex_array::dtype::DecimalDType +pub fn vortex_array::expr::VortexExprExt::field_references(&self) -> vortex_utils::aliases::hash_set::HashSet -pub type vortex_array::dtype::DecimalDType::Error = vortex_error::VortexError +impl vortex_array::expr::VortexExprExt for vortex_array::expr::Expression -pub fn vortex_array::dtype::DecimalDType::try_from(value: vortex_array::dtype::DType) -> core::result::Result +pub fn vortex_array::expr::Expression::field_references(&self) -> vortex_utils::aliases::hash_set::HashSet -impl core::fmt::Debug for vortex_array::dtype::DType +pub fn vortex_array::expr::and(lhs: vortex_array::expr::Expression, rhs: vortex_array::expr::Expression) -> vortex_array::expr::Expression -pub fn vortex_array::dtype::DType::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::expr::and_collect(iter: I) -> core::option::Option where I: core::iter::traits::collect::IntoIterator -impl core::fmt::Display for vortex_array::dtype::DType +pub fn vortex_array::expr::between(arr: vortex_array::expr::Expression, lower: vortex_array::expr::Expression, upper: vortex_array::expr::Expression, options: vortex_array::scalar_fn::fns::between::BetweenOptions) -> vortex_array::expr::Expression -pub fn vortex_array::dtype::DType::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::expr::case_when(condition: vortex_array::expr::Expression, then_value: vortex_array::expr::Expression, else_value: vortex_array::expr::Expression) -> vortex_array::expr::Expression -impl core::hash::Hash for vortex_array::dtype::DType +pub fn vortex_array::expr::case_when_no_else(condition: vortex_array::expr::Expression, then_value: vortex_array::expr::Expression) -> vortex_array::expr::Expression -pub fn vortex_array::dtype::DType::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::expr::cast(child: vortex_array::expr::Expression, target: vortex_array::dtype::DType) -> vortex_array::expr::Expression -impl core::marker::StructuralPartialEq for vortex_array::dtype::DType +pub fn vortex_array::expr::checked_add(lhs: vortex_array::expr::Expression, rhs: vortex_array::expr::Expression) -> vortex_array::expr::Expression -impl vortex_array::dtype::arrow::FromArrowType<&arrow_schema::field::Field> for vortex_array::dtype::DType +pub fn vortex_array::expr::col(field: impl core::convert::Into) -> vortex_array::expr::Expression -pub fn vortex_array::dtype::DType::from_arrow(field: &arrow_schema::field::Field) -> Self +pub fn vortex_array::expr::descendent_annotations(expr: &vortex_array::expr::Expression, annotate: A) -> vortex_array::expr::Annotations<'_, ::Annotation> -impl vortex_array::dtype::arrow::FromArrowType<&arrow_schema::schema::Schema> for vortex_array::dtype::DType +pub fn vortex_array::expr::dynamic(operator: vortex_array::scalar_fn::fns::operators::CompareOperator, rhs_value: impl core::ops::function::Fn() -> core::option::Option + core::marker::Send + core::marker::Sync + 'static, rhs_dtype: vortex_array::dtype::DType, default: bool, lhs: vortex_array::expr::Expression) -> vortex_array::expr::Expression -pub fn vortex_array::dtype::DType::from_arrow(value: &arrow_schema::schema::Schema) -> Self +pub fn vortex_array::expr::eq(lhs: vortex_array::expr::Expression, rhs: vortex_array::expr::Expression) -> vortex_array::expr::Expression -impl vortex_array::dtype::arrow::FromArrowType<(&arrow_schema::datatype::DataType, vortex_array::dtype::Nullability)> for vortex_array::dtype::DType +pub fn vortex_array::expr::fill_null(child: vortex_array::expr::Expression, fill_value: vortex_array::expr::Expression) -> vortex_array::expr::Expression -pub fn vortex_array::dtype::DType::from_arrow((data_type, nullability): (&arrow_schema::datatype::DataType, vortex_array::dtype::Nullability)) -> Self +pub fn vortex_array::expr::get_item(field: impl core::convert::Into, child: vortex_array::expr::Expression) -> vortex_array::expr::Expression -impl vortex_array::dtype::arrow::FromArrowType> for vortex_array::dtype::DType +pub fn vortex_array::expr::gt(lhs: vortex_array::expr::Expression, rhs: vortex_array::expr::Expression) -> vortex_array::expr::Expression -pub fn vortex_array::dtype::DType::from_arrow(value: arrow_schema::schema::SchemaRef) -> Self +pub fn vortex_array::expr::gt_eq(lhs: vortex_array::expr::Expression, rhs: vortex_array::expr::Expression) -> vortex_array::expr::Expression -impl vortex_flatbuffers::FlatBufferRoot for vortex_array::dtype::DType +pub fn vortex_array::expr::ilike(child: vortex_array::expr::Expression, pattern: vortex_array::expr::Expression) -> vortex_array::expr::Expression -impl vortex_flatbuffers::WriteFlatBuffer for vortex_array::dtype::DType +pub fn vortex_array::expr::immediate_scope_access<'a>(expr: &'a vortex_array::expr::Expression, scope: &'a vortex_array::dtype::StructFields) -> vortex_utils::aliases::hash_set::HashSet -pub type vortex_array::dtype::DType::Target<'a> = vortex_flatbuffers::dtype::DType<'a> +pub fn vortex_array::expr::immediate_scope_accesses<'a>(expr: &'a vortex_array::expr::Expression, scope: &'a vortex_array::dtype::StructFields) -> vortex_array::expr::FieldAccesses<'a> -pub fn vortex_array::dtype::DType::write_flatbuffer<'fb>(&self, fbb: &mut flatbuffers::builder::FlatBufferBuilder<'fb>) -> vortex_error::VortexResult> +pub fn vortex_array::expr::is_null(child: vortex_array::expr::Expression) -> vortex_array::expr::Expression -#[repr(u8)] pub enum vortex_array::dtype::DecimalType +pub fn vortex_array::expr::is_root(expr: &vortex_array::expr::Expression) -> bool -pub vortex_array::dtype::DecimalType::I128 = 4 +pub fn vortex_array::expr::label_is_fallible(expr: &vortex_array::expr::Expression) -> vortex_array::expr::BooleanLabels<'_> -pub vortex_array::dtype::DecimalType::I16 = 1 +pub fn vortex_array::expr::label_null_sensitive(expr: &vortex_array::expr::Expression) -> vortex_array::expr::BooleanLabels<'_> -pub vortex_array::dtype::DecimalType::I256 = 5 +pub fn vortex_array::expr::label_tree(expr: &vortex_array::expr::Expression, self_label: impl core::ops::function::Fn(&vortex_array::expr::Expression) -> L, merge_child: impl core::ops::function::FnMut(L, &L) -> L) -> vortex_utils::aliases::hash_map::HashMap<&vortex_array::expr::Expression, L> -pub vortex_array::dtype::DecimalType::I32 = 2 +pub fn vortex_array::expr::like(child: vortex_array::expr::Expression, pattern: vortex_array::expr::Expression) -> vortex_array::expr::Expression -pub vortex_array::dtype::DecimalType::I64 = 3 +pub fn vortex_array::expr::list_contains(list: vortex_array::expr::Expression, value: vortex_array::expr::Expression) -> vortex_array::expr::Expression -pub vortex_array::dtype::DecimalType::I8 = 0 +pub fn vortex_array::expr::lit(value: impl core::convert::Into) -> vortex_array::expr::Expression -impl vortex_array::dtype::DecimalType +pub fn vortex_array::expr::lt(lhs: vortex_array::expr::Expression, rhs: vortex_array::expr::Expression) -> vortex_array::expr::Expression -pub fn vortex_array::dtype::DecimalType::byte_width(&self) -> usize +pub fn vortex_array::expr::lt_eq(lhs: vortex_array::expr::Expression, rhs: vortex_array::expr::Expression) -> vortex_array::expr::Expression -pub fn vortex_array::dtype::DecimalType::is_compatible_decimal_value_type(self, dtype: vortex_array::dtype::DecimalDType) -> bool +pub fn vortex_array::expr::make_free_field_annotator(scope: &vortex_array::dtype::StructFields) -> impl vortex_array::expr::AnnotationFn -pub fn vortex_array::dtype::DecimalType::smallest_decimal_value_type(decimal_dtype: &vortex_array::dtype::DecimalDType) -> vortex_array::dtype::DecimalType +pub fn vortex_array::expr::mask(array: vortex_array::expr::Expression, mask: vortex_array::expr::Expression) -> vortex_array::expr::Expression -impl vortex_array::dtype::DecimalType +pub fn vortex_array::expr::merge(elements: impl core::iter::traits::collect::IntoIterator>) -> vortex_array::expr::Expression -pub fn vortex_array::dtype::DecimalType::from_i32(value: i32) -> core::option::Option +pub fn vortex_array::expr::merge_opts(elements: impl core::iter::traits::collect::IntoIterator>, duplicate_handling: vortex_array::scalar_fn::fns::merge::DuplicateHandling) -> vortex_array::expr::Expression -pub fn vortex_array::dtype::DecimalType::is_valid(value: i32) -> bool +pub fn vortex_array::expr::nested_case_when(when_then_pairs: alloc::vec::Vec<(vortex_array::expr::Expression, vortex_array::expr::Expression)>, else_value: core::option::Option) -> vortex_array::expr::Expression -impl core::clone::Clone for vortex_array::dtype::DecimalType +pub fn vortex_array::expr::not(operand: vortex_array::expr::Expression) -> vortex_array::expr::Expression -pub fn vortex_array::dtype::DecimalType::clone(&self) -> vortex_array::dtype::DecimalType +pub fn vortex_array::expr::not_eq(lhs: vortex_array::expr::Expression, rhs: vortex_array::expr::Expression) -> vortex_array::expr::Expression -impl core::cmp::Eq for vortex_array::dtype::DecimalType +pub fn vortex_array::expr::not_ilike(child: vortex_array::expr::Expression, pattern: vortex_array::expr::Expression) -> vortex_array::expr::Expression -impl core::cmp::Ord for vortex_array::dtype::DecimalType +pub fn vortex_array::expr::not_like(child: vortex_array::expr::Expression, pattern: vortex_array::expr::Expression) -> vortex_array::expr::Expression -pub fn vortex_array::dtype::DecimalType::cmp(&self, other: &vortex_array::dtype::DecimalType) -> core::cmp::Ordering +pub fn vortex_array::expr::or(lhs: vortex_array::expr::Expression, rhs: vortex_array::expr::Expression) -> vortex_array::expr::Expression -impl core::cmp::PartialEq for vortex_array::dtype::DecimalType +pub fn vortex_array::expr::or_collect(iter: I) -> core::option::Option where I: core::iter::traits::collect::IntoIterator -pub fn vortex_array::dtype::DecimalType::eq(&self, other: &vortex_array::dtype::DecimalType) -> bool +pub fn vortex_array::expr::pack(elements: impl core::iter::traits::collect::IntoIterator, vortex_array::expr::Expression)>, nullability: vortex_array::dtype::Nullability) -> vortex_array::expr::Expression -impl core::cmp::PartialOrd for vortex_array::dtype::DecimalType +pub fn vortex_array::expr::root() -> vortex_array::expr::Expression -pub fn vortex_array::dtype::DecimalType::partial_cmp(&self, other: &vortex_array::dtype::DecimalType) -> core::option::Option +pub fn vortex_array::expr::select(field_names: impl core::convert::Into, child: vortex_array::expr::Expression) -> vortex_array::expr::Expression -impl core::convert::From for i32 +pub fn vortex_array::expr::select_exclude(fields: impl core::convert::Into, child: vortex_array::expr::Expression) -> vortex_array::expr::Expression -pub fn i32::from(value: vortex_array::dtype::DecimalType) -> i32 +pub fn vortex_array::expr::split_conjunction(expr: &vortex_array::expr::Expression) -> alloc::vec::Vec -impl core::convert::TryFrom for vortex_array::dtype::DecimalType +pub fn vortex_array::expr::zip_expr(mask: vortex_array::expr::Expression, if_true: vortex_array::expr::Expression, if_false: vortex_array::expr::Expression) -> vortex_array::expr::Expression -pub type vortex_array::dtype::DecimalType::Error = prost::error::UnknownEnumValue +pub type vortex_array::expr::Annotations<'a, A> = vortex_utils::aliases::hash_map::HashMap<&'a vortex_array::expr::Expression, vortex_utils::aliases::hash_set::HashSet> -pub fn vortex_array::dtype::DecimalType::try_from(value: i32) -> core::result::Result +pub type vortex_array::expr::BooleanLabels<'a> = vortex_utils::aliases::hash_map::HashMap<&'a vortex_array::expr::Expression, bool> -impl core::convert::TryFrom for vortex_array::dtype::DecimalType +pub type vortex_array::expr::FieldAccesses<'a> = vortex_array::expr::Annotations<'a, vortex_array::dtype::FieldName> -pub type vortex_array::dtype::DecimalType::Error = vortex_error::VortexError +pub mod vortex_array::extension -pub fn vortex_array::dtype::DecimalType::try_from(value: vortex_array::dtype::PType) -> core::result::Result +pub mod vortex_array::extension::datetime -impl core::default::Default for vortex_array::dtype::DecimalType +pub enum vortex_array::extension::datetime::DateValue -pub fn vortex_array::dtype::DecimalType::default() -> vortex_array::dtype::DecimalType +pub vortex_array::extension::datetime::DateValue::Days(i32) -impl core::fmt::Debug for vortex_array::dtype::DecimalType +pub vortex_array::extension::datetime::DateValue::Milliseconds(i64) -pub fn vortex_array::dtype::DecimalType::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl core::fmt::Display for vortex_array::extension::datetime::DateValue -impl core::fmt::Display for vortex_array::dtype::DecimalType +pub fn vortex_array::extension::datetime::DateValue::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::dtype::DecimalType::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub enum vortex_array::extension::datetime::TemporalJiff -impl core::hash::Hash for vortex_array::dtype::DecimalType +pub vortex_array::extension::datetime::TemporalJiff::Date(jiff::civil::date::Date) -pub fn vortex_array::dtype::DecimalType::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub vortex_array::extension::datetime::TemporalJiff::Time(jiff::civil::time::Time) -impl core::marker::Copy for vortex_array::dtype::DecimalType +pub vortex_array::extension::datetime::TemporalJiff::Unzoned(jiff::civil::datetime::DateTime) -impl core::marker::StructuralPartialEq for vortex_array::dtype::DecimalType +pub vortex_array::extension::datetime::TemporalJiff::Zoned(jiff::zoned::Zoned) -pub enum vortex_array::dtype::Field +impl core::fmt::Display for vortex_array::extension::datetime::TemporalJiff -pub vortex_array::dtype::Field::ElementType +pub fn vortex_array::extension::datetime::TemporalJiff::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub vortex_array::dtype::Field::Name(vortex_array::dtype::FieldName) +pub enum vortex_array::extension::datetime::TemporalMetadata<'a> -impl vortex_array::dtype::Field +pub vortex_array::extension::datetime::TemporalMetadata::Date(&'a ::Metadata) -pub fn vortex_array::dtype::Field::as_name(&self) -> core::option::Option<&str> +pub vortex_array::extension::datetime::TemporalMetadata::Time(&'a ::Metadata) -pub fn vortex_array::dtype::Field::is_named(&self) -> bool +pub vortex_array::extension::datetime::TemporalMetadata::Timestamp(&'a vortex_array::extension::datetime::TimeUnit, &'a core::option::Option>) -impl core::clone::Clone for vortex_array::dtype::Field +impl vortex_array::extension::datetime::TemporalMetadata<'_> -pub fn vortex_array::dtype::Field::clone(&self) -> vortex_array::dtype::Field +pub fn vortex_array::extension::datetime::TemporalMetadata<'_>::time_unit(&self) -> vortex_array::extension::datetime::TimeUnit -impl core::cmp::Eq for vortex_array::dtype::Field +pub fn vortex_array::extension::datetime::TemporalMetadata<'_>::to_jiff(&self, v: i64) -> vortex_error::VortexResult -impl core::cmp::PartialEq for vortex_array::dtype::Field +impl<'a> core::cmp::Eq for vortex_array::extension::datetime::TemporalMetadata<'a> -pub fn vortex_array::dtype::Field::eq(&self, other: &vortex_array::dtype::Field) -> bool +impl<'a> core::cmp::PartialEq for vortex_array::extension::datetime::TemporalMetadata<'a> -impl core::convert::From<&str> for vortex_array::dtype::Field +pub fn vortex_array::extension::datetime::TemporalMetadata<'a>::eq(&self, other: &vortex_array::extension::datetime::TemporalMetadata<'a>) -> bool -pub fn vortex_array::dtype::Field::from(value: &str) -> Self +impl<'a> core::fmt::Debug for vortex_array::extension::datetime::TemporalMetadata<'a> -impl core::convert::From> for vortex_array::dtype::Field +pub fn vortex_array::extension::datetime::TemporalMetadata<'a>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::dtype::Field::from(value: alloc::sync::Arc) -> Self +impl<'a> core::marker::StructuralPartialEq for vortex_array::extension::datetime::TemporalMetadata<'a> -impl core::convert::From for vortex_array::dtype::FieldPath +#[repr(u8)] pub enum vortex_array::extension::datetime::TimeUnit -pub fn vortex_array::dtype::FieldPath::from(value: vortex_array::dtype::Field) -> Self +pub vortex_array::extension::datetime::TimeUnit::Days = 4 -impl core::convert::From for vortex_array::dtype::Field +pub vortex_array::extension::datetime::TimeUnit::Microseconds = 1 -pub fn vortex_array::dtype::Field::from(value: vortex_array::dtype::FieldName) -> Self +pub vortex_array::extension::datetime::TimeUnit::Milliseconds = 2 -impl core::fmt::Debug for vortex_array::dtype::Field +pub vortex_array::extension::datetime::TimeUnit::Nanoseconds = 0 -pub fn vortex_array::dtype::Field::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub vortex_array::extension::datetime::TimeUnit::Seconds = 3 -impl core::fmt::Display for vortex_array::dtype::Field +impl vortex_array::extension::datetime::TimeUnit -pub fn vortex_array::dtype::Field::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::extension::datetime::TimeUnit::to_jiff_span(&self, v: i64) -> vortex_error::VortexResult -impl core::hash::Hash for vortex_array::dtype::Field +impl core::clone::Clone for vortex_array::extension::datetime::TimeUnit -pub fn vortex_array::dtype::Field::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::extension::datetime::TimeUnit::clone(&self) -> vortex_array::extension::datetime::TimeUnit -impl core::iter::traits::collect::FromIterator for vortex_array::dtype::FieldPath +impl core::cmp::Eq for vortex_array::extension::datetime::TimeUnit -pub fn vortex_array::dtype::FieldPath::from_iter>(iter: T) -> Self +impl core::cmp::Ord for vortex_array::extension::datetime::TimeUnit -impl core::marker::StructuralPartialEq for vortex_array::dtype::Field +pub fn vortex_array::extension::datetime::TimeUnit::cmp(&self, other: &vortex_array::extension::datetime::TimeUnit) -> core::cmp::Ordering -pub enum vortex_array::dtype::FieldMask +impl core::cmp::PartialEq for vortex_array::extension::datetime::TimeUnit -pub vortex_array::dtype::FieldMask::All +pub fn vortex_array::extension::datetime::TimeUnit::eq(&self, other: &vortex_array::extension::datetime::TimeUnit) -> bool -pub vortex_array::dtype::FieldMask::Exact(vortex_array::dtype::FieldPath) +impl core::cmp::PartialOrd for vortex_array::extension::datetime::TimeUnit -pub vortex_array::dtype::FieldMask::Prefix(vortex_array::dtype::FieldPath) +pub fn vortex_array::extension::datetime::TimeUnit::partial_cmp(&self, other: &vortex_array::extension::datetime::TimeUnit) -> core::option::Option -impl vortex_array::dtype::FieldMask +impl core::convert::From<&arrow_schema::datatype::TimeUnit> for vortex_array::extension::datetime::TimeUnit -pub fn vortex_array::dtype::FieldMask::matches_all(&self) -> bool +pub fn vortex_array::extension::datetime::TimeUnit::from(value: &arrow_schema::datatype::TimeUnit) -> Self -pub fn vortex_array::dtype::FieldMask::matches_root(&self) -> bool +impl core::convert::From for vortex_array::extension::datetime::TimeUnit -pub fn vortex_array::dtype::FieldMask::starting_field(&self) -> vortex_error::VortexResult> +pub fn vortex_array::extension::datetime::TimeUnit::from(value: arrow_schema::datatype::TimeUnit) -> Self -pub fn vortex_array::dtype::FieldMask::step_into(self) -> vortex_error::VortexResult +impl core::convert::From for u8 -impl core::clone::Clone for vortex_array::dtype::FieldMask +pub fn u8::from(enum_value: vortex_array::extension::datetime::TimeUnit) -> Self -pub fn vortex_array::dtype::FieldMask::clone(&self) -> vortex_array::dtype::FieldMask +impl core::convert::TryFrom for vortex_array::extension::datetime::TimeUnit -impl core::cmp::Eq for vortex_array::dtype::FieldMask +pub type vortex_array::extension::datetime::TimeUnit::Error = vortex_error::VortexError -impl core::cmp::PartialEq for vortex_array::dtype::FieldMask +pub fn vortex_array::extension::datetime::TimeUnit::try_from(value: u8) -> core::result::Result -pub fn vortex_array::dtype::FieldMask::eq(&self, other: &vortex_array::dtype::FieldMask) -> bool +impl core::convert::TryFrom for arrow_schema::datatype::TimeUnit -impl core::fmt::Debug for vortex_array::dtype::FieldMask +pub type arrow_schema::datatype::TimeUnit::Error = vortex_error::VortexError -pub fn vortex_array::dtype::FieldMask::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn arrow_schema::datatype::TimeUnit::try_from(value: vortex_array::extension::datetime::TimeUnit) -> vortex_error::VortexResult -impl core::marker::StructuralPartialEq for vortex_array::dtype::FieldMask +impl core::fmt::Debug for vortex_array::extension::datetime::TimeUnit -pub enum vortex_array::dtype::Nullability +pub fn vortex_array::extension::datetime::TimeUnit::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub vortex_array::dtype::Nullability::NonNullable +impl core::fmt::Display for vortex_array::extension::datetime::TimeUnit -pub vortex_array::dtype::Nullability::Nullable +pub fn vortex_array::extension::datetime::TimeUnit::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::dtype::Nullability +impl core::hash::Hash for vortex_array::extension::datetime::TimeUnit -pub fn vortex_array::dtype::Nullability::is_nullable(&self) -> bool +pub fn vortex_array::extension::datetime::TimeUnit::hash<__H: core::hash::Hasher>(&self, state: &mut __H) -impl core::clone::Clone for vortex_array::dtype::Nullability +impl core::marker::Copy for vortex_array::extension::datetime::TimeUnit -pub fn vortex_array::dtype::Nullability::clone(&self) -> vortex_array::dtype::Nullability +impl core::marker::StructuralPartialEq for vortex_array::extension::datetime::TimeUnit -impl core::cmp::Eq for vortex_array::dtype::Nullability +pub enum vortex_array::extension::datetime::TimeValue -impl core::cmp::PartialEq for vortex_array::dtype::Nullability +pub vortex_array::extension::datetime::TimeValue::Microseconds(i64) -pub fn vortex_array::dtype::Nullability::eq(&self, other: &vortex_array::dtype::Nullability) -> bool +pub vortex_array::extension::datetime::TimeValue::Milliseconds(i32) -impl core::convert::From<&vortex_array::dtype::Nullability> for vortex_array::validity::Validity +pub vortex_array::extension::datetime::TimeValue::Nanoseconds(i64) -pub fn vortex_array::validity::Validity::from(value: &vortex_array::dtype::Nullability) -> Self +pub vortex_array::extension::datetime::TimeValue::Seconds(i32) -impl core::convert::From for vortex_array::dtype::Nullability +impl core::fmt::Display for vortex_array::extension::datetime::TimeValue -pub fn vortex_array::dtype::Nullability::from(value: bool) -> Self +pub fn vortex_array::extension::datetime::TimeValue::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::convert::From for bool +pub enum vortex_array::extension::datetime::TimestampValue<'a> -pub fn bool::from(value: vortex_array::dtype::Nullability) -> Self +pub vortex_array::extension::datetime::TimestampValue::Microseconds(i64, core::option::Option<&'a alloc::sync::Arc>) -impl core::convert::From for vortex_array::validity::Validity +pub vortex_array::extension::datetime::TimestampValue::Milliseconds(i64, core::option::Option<&'a alloc::sync::Arc>) -pub fn vortex_array::validity::Validity::from(value: vortex_array::dtype::Nullability) -> Self +pub vortex_array::extension::datetime::TimestampValue::Nanoseconds(i64, core::option::Option<&'a alloc::sync::Arc>) -impl core::default::Default for vortex_array::dtype::Nullability +pub vortex_array::extension::datetime::TimestampValue::Seconds(i64, core::option::Option<&'a alloc::sync::Arc>) -pub fn vortex_array::dtype::Nullability::default() -> vortex_array::dtype::Nullability +impl core::fmt::Display for vortex_array::extension::datetime::TimestampValue<'_> -impl core::fmt::Debug for vortex_array::dtype::Nullability +pub fn vortex_array::extension::datetime::TimestampValue<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::dtype::Nullability::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub struct vortex_array::extension::datetime::AnyTemporal -impl core::fmt::Display for vortex_array::dtype::Nullability +impl vortex_array::dtype::extension::Matcher for vortex_array::extension::datetime::AnyTemporal -pub fn vortex_array::dtype::Nullability::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::extension::datetime::AnyTemporal::Match<'a> = vortex_array::extension::datetime::TemporalMetadata<'a> -impl core::hash::Hash for vortex_array::dtype::Nullability +pub fn vortex_array::extension::datetime::AnyTemporal::matches(item: &vortex_array::dtype::extension::ExtDTypeRef) -> bool -pub fn vortex_array::dtype::Nullability::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::extension::datetime::AnyTemporal::try_match<'a>(item: &'a vortex_array::dtype::extension::ExtDTypeRef) -> core::option::Option -impl core::marker::Copy for vortex_array::dtype::Nullability +pub struct vortex_array::extension::datetime::Date -impl core::marker::StructuralPartialEq for vortex_array::dtype::Nullability +impl vortex_array::extension::datetime::Date -impl core::ops::bit::BitOr for vortex_array::dtype::Nullability +pub fn vortex_array::extension::datetime::Date::new(time_unit: vortex_array::extension::datetime::TimeUnit, nullability: vortex_array::dtype::Nullability) -> vortex_array::dtype::extension::ExtDType -pub type vortex_array::dtype::Nullability::Output = vortex_array::dtype::Nullability +pub fn vortex_array::extension::datetime::Date::try_new(time_unit: vortex_array::extension::datetime::TimeUnit, nullability: vortex_array::dtype::Nullability) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::Nullability::bitor(self, rhs: Self) -> Self::Output +impl core::clone::Clone for vortex_array::extension::datetime::Date -impl core::ops::bit::BitOrAssign for vortex_array::dtype::Nullability +pub fn vortex_array::extension::datetime::Date::clone(&self) -> vortex_array::extension::datetime::Date -pub fn vortex_array::dtype::Nullability::bitor_assign(&mut self, rhs: Self) +impl core::cmp::Eq for vortex_array::extension::datetime::Date -#[repr(u8)] pub enum vortex_array::dtype::PType +impl core::cmp::PartialEq for vortex_array::extension::datetime::Date -pub vortex_array::dtype::PType::F16 = 8 +pub fn vortex_array::extension::datetime::Date::eq(&self, other: &vortex_array::extension::datetime::Date) -> bool -pub vortex_array::dtype::PType::F32 = 9 +impl core::default::Default for vortex_array::extension::datetime::Date -pub vortex_array::dtype::PType::F64 = 10 +pub fn vortex_array::extension::datetime::Date::default() -> vortex_array::extension::datetime::Date -pub vortex_array::dtype::PType::I16 = 5 +impl core::fmt::Debug for vortex_array::extension::datetime::Date -pub vortex_array::dtype::PType::I32 = 6 +pub fn vortex_array::extension::datetime::Date::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub vortex_array::dtype::PType::I64 = 7 +impl core::hash::Hash for vortex_array::extension::datetime::Date -pub vortex_array::dtype::PType::I8 = 4 +pub fn vortex_array::extension::datetime::Date::hash<__H: core::hash::Hasher>(&self, state: &mut __H) -pub vortex_array::dtype::PType::U16 = 1 +impl core::marker::StructuralPartialEq for vortex_array::extension::datetime::Date -pub vortex_array::dtype::PType::U32 = 2 +impl vortex_array::dtype::extension::ExtVTable for vortex_array::extension::datetime::Date -pub vortex_array::dtype::PType::U64 = 3 +pub type vortex_array::extension::datetime::Date::Metadata = vortex_array::extension::datetime::TimeUnit -pub vortex_array::dtype::PType::U8 = 0 +pub type vortex_array::extension::datetime::Date::NativeValue<'a> = vortex_array::extension::datetime::DateValue -impl vortex_array::dtype::PType +pub fn vortex_array::extension::datetime::Date::can_coerce_from(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool -pub const fn vortex_array::dtype::PType::bit_width(&self) -> usize +pub fn vortex_array::extension::datetime::Date::can_coerce_to(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool -pub const fn vortex_array::dtype::PType::byte_width(&self) -> usize +pub fn vortex_array::extension::datetime::Date::deserialize_metadata(&self, metadata: &[u8]) -> vortex_error::VortexResult -pub const fn vortex_array::dtype::PType::is_float(self) -> bool +pub fn vortex_array::extension::datetime::Date::id(&self) -> vortex_array::dtype::extension::ExtId -pub const fn vortex_array::dtype::PType::is_int(self) -> bool +pub fn vortex_array::extension::datetime::Date::least_supertype(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> core::option::Option -pub const fn vortex_array::dtype::PType::is_signed_int(self) -> bool +pub fn vortex_array::extension::datetime::Date::serialize_metadata(&self, metadata: &Self::Metadata) -> vortex_error::VortexResult> -pub const fn vortex_array::dtype::PType::is_unsigned_int(self) -> bool +pub fn vortex_array::extension::datetime::Date::unpack_native<'a>(ext_dtype: &'a vortex_array::dtype::extension::ExtDType, storage_value: &'a vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult -pub const fn vortex_array::dtype::PType::max_signed_ptype(self, other: Self) -> Self +pub fn vortex_array::extension::datetime::Date::validate_dtype(ext_dtype: &vortex_array::dtype::extension::ExtDType) -> vortex_error::VortexResult<()> -pub const fn vortex_array::dtype::PType::max_unsigned_ptype(self, other: Self) -> Self +pub fn vortex_array::extension::datetime::Date::validate_scalar_value(ext_dtype: &vortex_array::dtype::extension::ExtDType, storage_value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult<()> -pub fn vortex_array::dtype::PType::max_value_as_u64(&self) -> u64 +pub struct vortex_array::extension::datetime::Time -pub const fn vortex_array::dtype::PType::min_signed_ptype_for_value(value: i64) -> Self +impl vortex_array::extension::datetime::Time -pub const fn vortex_array::dtype::PType::min_unsigned_ptype_for_value(value: u64) -> Self +pub fn vortex_array::extension::datetime::Time::new(time_unit: vortex_array::extension::datetime::TimeUnit, nullability: vortex_array::dtype::Nullability) -> vortex_array::dtype::extension::ExtDType -pub const fn vortex_array::dtype::PType::to_signed(self) -> Self +pub fn vortex_array::extension::datetime::Time::try_new(time_unit: vortex_array::extension::datetime::TimeUnit, nullability: vortex_array::dtype::Nullability) -> vortex_error::VortexResult> -pub const fn vortex_array::dtype::PType::to_unsigned(self) -> Self +impl core::clone::Clone for vortex_array::extension::datetime::Time -impl vortex_array::dtype::PType +pub fn vortex_array::extension::datetime::Time::clone(&self) -> vortex_array::extension::datetime::Time -pub fn vortex_array::dtype::PType::from_i32(value: i32) -> core::option::Option +impl core::cmp::Eq for vortex_array::extension::datetime::Time -pub fn vortex_array::dtype::PType::is_valid(value: i32) -> bool +impl core::cmp::PartialEq for vortex_array::extension::datetime::Time -impl vortex_array::dtype::PType +pub fn vortex_array::extension::datetime::Time::eq(&self, other: &vortex_array::extension::datetime::Time) -> bool -pub fn vortex_array::dtype::PType::least_supertype(self, other: vortex_array::dtype::PType) -> core::option::Option +impl core::default::Default for vortex_array::extension::datetime::Time -impl core::clone::Clone for vortex_array::dtype::PType +pub fn vortex_array::extension::datetime::Time::default() -> vortex_array::extension::datetime::Time -pub fn vortex_array::dtype::PType::clone(&self) -> vortex_array::dtype::PType +impl core::fmt::Debug for vortex_array::extension::datetime::Time -impl core::cmp::Eq for vortex_array::dtype::PType +pub fn vortex_array::extension::datetime::Time::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::cmp::PartialEq for vortex_array::dtype::PType +impl core::hash::Hash for vortex_array::extension::datetime::Time -pub fn vortex_array::dtype::PType::eq(&self, other: &vortex_array::dtype::PType) -> bool +pub fn vortex_array::extension::datetime::Time::hash<__H: core::hash::Hasher>(&self, state: &mut __H) -impl core::cmp::PartialOrd for vortex_array::dtype::PType +impl core::marker::StructuralPartialEq for vortex_array::extension::datetime::Time -pub fn vortex_array::dtype::PType::partial_cmp(&self, other: &vortex_array::dtype::PType) -> core::option::Option +impl vortex_array::dtype::extension::ExtVTable for vortex_array::extension::datetime::Time -impl core::convert::From for &vortex_array::dtype::DType +pub type vortex_array::extension::datetime::Time::Metadata = vortex_array::extension::datetime::TimeUnit -pub fn &vortex_array::dtype::DType::from(item: vortex_array::dtype::PType) -> Self +pub type vortex_array::extension::datetime::Time::NativeValue<'a> = vortex_array::extension::datetime::TimeValue -impl core::convert::From for i32 +pub fn vortex_array::extension::datetime::Time::can_coerce_from(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool -pub fn i32::from(value: vortex_array::dtype::PType) -> i32 +pub fn vortex_array::extension::datetime::Time::can_coerce_to(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool -impl core::convert::From for vortex_array::dtype::DType +pub fn vortex_array::extension::datetime::Time::deserialize_metadata(&self, data: &[u8]) -> vortex_error::VortexResult -pub fn vortex_array::dtype::DType::from(item: vortex_array::dtype::PType) -> Self +pub fn vortex_array::extension::datetime::Time::id(&self) -> vortex_array::dtype::extension::ExtId -impl core::convert::From for vortex_array::dtype::FieldDType +pub fn vortex_array::extension::datetime::Time::least_supertype(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> core::option::Option -pub fn vortex_array::dtype::FieldDType::from(value: vortex_array::dtype::PType) -> Self +pub fn vortex_array::extension::datetime::Time::serialize_metadata(&self, metadata: &Self::Metadata) -> vortex_error::VortexResult> -impl core::convert::From for vortex_flatbuffers::dtype::PType +pub fn vortex_array::extension::datetime::Time::unpack_native<'a>(ext_dtype: &'a vortex_array::dtype::extension::ExtDType, storage_value: &'a vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult -pub fn vortex_flatbuffers::dtype::PType::from(value: vortex_array::dtype::PType) -> Self +pub fn vortex_array::extension::datetime::Time::validate_dtype(ext_dtype: &vortex_array::dtype::extension::ExtDType) -> vortex_error::VortexResult<()> -impl core::convert::From for vortex_proto::dtype::PType +pub fn vortex_array::extension::datetime::Time::validate_scalar_value(ext_dtype: &vortex_array::dtype::extension::ExtDType, storage_value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult<()> -pub fn vortex_proto::dtype::PType::from(value: vortex_array::dtype::PType) -> Self +pub struct vortex_array::extension::datetime::Timestamp -impl core::convert::From for vortex_array::dtype::PType +impl vortex_array::extension::datetime::Timestamp -pub fn vortex_array::dtype::PType::from(value: vortex_proto::dtype::PType) -> Self +pub fn vortex_array::extension::datetime::Timestamp::new(time_unit: vortex_array::extension::datetime::TimeUnit, nullability: vortex_array::dtype::Nullability) -> vortex_array::dtype::extension::ExtDType -impl core::convert::TryFrom<&vortex_array::dtype::DType> for vortex_array::dtype::PType +pub fn vortex_array::extension::datetime::Timestamp::new_with_options(options: vortex_array::extension::datetime::TimestampOptions, nullability: vortex_array::dtype::Nullability) -> vortex_array::dtype::extension::ExtDType -pub type vortex_array::dtype::PType::Error = vortex_error::VortexError +pub fn vortex_array::extension::datetime::Timestamp::new_with_tz(time_unit: vortex_array::extension::datetime::TimeUnit, timezone: core::option::Option>, nullability: vortex_array::dtype::Nullability) -> vortex_array::dtype::extension::ExtDType -pub fn vortex_array::dtype::PType::try_from(value: &vortex_array::dtype::DType) -> vortex_error::VortexResult +impl core::clone::Clone for vortex_array::extension::datetime::Timestamp -impl core::convert::TryFrom for vortex_array::dtype::PType +pub fn vortex_array::extension::datetime::Timestamp::clone(&self) -> vortex_array::extension::datetime::Timestamp -pub type vortex_array::dtype::PType::Error = prost::error::UnknownEnumValue +impl core::cmp::Eq for vortex_array::extension::datetime::Timestamp -pub fn vortex_array::dtype::PType::try_from(value: i32) -> core::result::Result +impl core::cmp::PartialEq for vortex_array::extension::datetime::Timestamp -impl core::convert::TryFrom for vortex_array::dtype::DecimalType +pub fn vortex_array::extension::datetime::Timestamp::eq(&self, other: &vortex_array::extension::datetime::Timestamp) -> bool -pub type vortex_array::dtype::DecimalType::Error = vortex_error::VortexError +impl core::default::Default for vortex_array::extension::datetime::Timestamp -pub fn vortex_array::dtype::DecimalType::try_from(value: vortex_array::dtype::PType) -> core::result::Result +pub fn vortex_array::extension::datetime::Timestamp::default() -> vortex_array::extension::datetime::Timestamp -impl core::convert::TryFrom for vortex_array::dtype::PType +impl core::fmt::Debug for vortex_array::extension::datetime::Timestamp -pub type vortex_array::dtype::PType::Error = vortex_error::VortexError +pub fn vortex_array::extension::datetime::Timestamp::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::dtype::PType::try_from(value: vortex_flatbuffers::dtype::PType) -> core::result::Result +impl core::hash::Hash for vortex_array::extension::datetime::Timestamp -impl core::default::Default for vortex_array::dtype::PType +pub fn vortex_array::extension::datetime::Timestamp::hash<__H: core::hash::Hasher>(&self, state: &mut __H) -pub fn vortex_array::dtype::PType::default() -> vortex_array::dtype::PType +impl core::marker::StructuralPartialEq for vortex_array::extension::datetime::Timestamp -impl core::fmt::Debug for vortex_array::dtype::PType +impl vortex_array::dtype::extension::ExtVTable for vortex_array::extension::datetime::Timestamp -pub fn vortex_array::dtype::PType::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::extension::datetime::Timestamp::Metadata = vortex_array::extension::datetime::TimestampOptions -impl core::fmt::Display for vortex_array::dtype::PType +pub type vortex_array::extension::datetime::Timestamp::NativeValue<'a> = vortex_array::extension::datetime::TimestampValue<'a> -pub fn vortex_array::dtype::PType::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::extension::datetime::Timestamp::can_coerce_from(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool -impl core::hash::Hash for vortex_array::dtype::PType +pub fn vortex_array::extension::datetime::Timestamp::can_coerce_to(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool -pub fn vortex_array::dtype::PType::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::extension::datetime::Timestamp::deserialize_metadata(&self, data: &[u8]) -> vortex_error::VortexResult -impl core::marker::Copy for vortex_array::dtype::PType +pub fn vortex_array::extension::datetime::Timestamp::id(&self) -> vortex_array::dtype::extension::ExtId -impl core::marker::StructuralPartialEq for vortex_array::dtype::PType +pub fn vortex_array::extension::datetime::Timestamp::least_supertype(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> core::option::Option -impl vortex_array::dtype::arrow::TryFromArrowType<&arrow_schema::datatype::DataType> for vortex_array::dtype::PType +pub fn vortex_array::extension::datetime::Timestamp::serialize_metadata(&self, metadata: &Self::Metadata) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::PType::try_from_arrow(value: &arrow_schema::datatype::DataType) -> vortex_error::VortexResult +pub fn vortex_array::extension::datetime::Timestamp::unpack_native<'a>(ext_dtype: &'a vortex_array::dtype::extension::ExtDType, storage_value: &'a vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult -pub struct vortex_array::dtype::DecimalDType +pub fn vortex_array::extension::datetime::Timestamp::validate_dtype(ext_dtype: &vortex_array::dtype::extension::ExtDType) -> vortex_error::VortexResult<()> -impl vortex_array::dtype::DecimalDType +pub fn vortex_array::extension::datetime::Timestamp::validate_scalar_value(ext_dtype: &vortex_array::dtype::extension::ExtDType, storage_value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult<()> -pub fn vortex_array::dtype::DecimalDType::new(precision: u8, scale: i8) -> Self +pub struct vortex_array::extension::datetime::TimestampOptions -pub fn vortex_array::dtype::DecimalDType::precision(&self) -> u8 +pub vortex_array::extension::datetime::TimestampOptions::tz: core::option::Option> -pub fn vortex_array::dtype::DecimalDType::required_bit_width(&self) -> usize +pub vortex_array::extension::datetime::TimestampOptions::unit: vortex_array::extension::datetime::TimeUnit -pub fn vortex_array::dtype::DecimalDType::scale(&self) -> i8 +impl core::clone::Clone for vortex_array::extension::datetime::TimestampOptions -pub fn vortex_array::dtype::DecimalDType::try_new(precision: u8, scale: i8) -> vortex_error::VortexResult +pub fn vortex_array::extension::datetime::TimestampOptions::clone(&self) -> vortex_array::extension::datetime::TimestampOptions -impl core::clone::Clone for vortex_array::dtype::DecimalDType +impl core::cmp::Eq for vortex_array::extension::datetime::TimestampOptions -pub fn vortex_array::dtype::DecimalDType::clone(&self) -> vortex_array::dtype::DecimalDType +impl core::cmp::PartialEq for vortex_array::extension::datetime::TimestampOptions -impl core::cmp::Eq for vortex_array::dtype::DecimalDType +pub fn vortex_array::extension::datetime::TimestampOptions::eq(&self, other: &vortex_array::extension::datetime::TimestampOptions) -> bool -impl core::cmp::PartialEq for vortex_array::dtype::DecimalDType +impl core::fmt::Debug for vortex_array::extension::datetime::TimestampOptions -pub fn vortex_array::dtype::DecimalDType::eq(&self, other: &vortex_array::dtype::DecimalDType) -> bool +pub fn vortex_array::extension::datetime::TimestampOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::convert::TryFrom<&vortex_array::dtype::DType> for vortex_array::dtype::DecimalDType +impl core::fmt::Display for vortex_array::extension::datetime::TimestampOptions -pub type vortex_array::dtype::DecimalDType::Error = vortex_error::VortexError +pub fn vortex_array::extension::datetime::TimestampOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::dtype::DecimalDType::try_from(value: &vortex_array::dtype::DType) -> core::result::Result +impl core::hash::Hash for vortex_array::extension::datetime::TimestampOptions -impl core::convert::TryFrom for vortex_array::dtype::DecimalDType +pub fn vortex_array::extension::datetime::TimestampOptions::hash<__H: core::hash::Hasher>(&self, state: &mut __H) -pub type vortex_array::dtype::DecimalDType::Error = vortex_error::VortexError +impl core::marker::StructuralPartialEq for vortex_array::extension::datetime::TimestampOptions -pub fn vortex_array::dtype::DecimalDType::try_from(value: vortex_array::dtype::DType) -> core::result::Result +pub mod vortex_array::extension::uuid -impl core::fmt::Debug for vortex_array::dtype::DecimalDType +pub struct vortex_array::extension::uuid::Uuid -pub fn vortex_array::dtype::DecimalDType::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl core::clone::Clone for vortex_array::extension::uuid::Uuid -impl core::fmt::Display for vortex_array::dtype::DecimalDType +pub fn vortex_array::extension::uuid::Uuid::clone(&self) -> vortex_array::extension::uuid::Uuid -pub fn vortex_array::dtype::DecimalDType::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl core::cmp::Eq for vortex_array::extension::uuid::Uuid -impl core::hash::Hash for vortex_array::dtype::DecimalDType +impl core::cmp::PartialEq for vortex_array::extension::uuid::Uuid -pub fn vortex_array::dtype::DecimalDType::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::extension::uuid::Uuid::eq(&self, other: &vortex_array::extension::uuid::Uuid) -> bool -impl core::marker::Copy for vortex_array::dtype::DecimalDType +impl core::default::Default for vortex_array::extension::uuid::Uuid -impl core::marker::StructuralPartialEq for vortex_array::dtype::DecimalDType +pub fn vortex_array::extension::uuid::Uuid::default() -> vortex_array::extension::uuid::Uuid -impl vortex_array::dtype::arrow::TryFromArrowType<&arrow_schema::datatype::DataType> for vortex_array::dtype::DecimalDType +impl core::fmt::Debug for vortex_array::extension::uuid::Uuid -pub fn vortex_array::dtype::DecimalDType::try_from_arrow(value: &arrow_schema::datatype::DataType) -> vortex_error::VortexResult +pub fn vortex_array::extension::uuid::Uuid::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::convert::From> for vortex_array::dtype::DecimalDType +impl core::hash::Hash for vortex_array::extension::uuid::Uuid -pub fn vortex_array::dtype::DecimalDType::from(value: vortex_array::dtype::PrecisionScale) -> Self +pub fn vortex_array::extension::uuid::Uuid::hash<__H: core::hash::Hasher>(&self, state: &mut __H) -impl core::convert::TryFrom<&vortex_array::dtype::DecimalDType> for vortex_array::dtype::PrecisionScale +impl core::marker::StructuralPartialEq for vortex_array::extension::uuid::Uuid -pub type vortex_array::dtype::PrecisionScale::Error = vortex_error::VortexError +impl vortex_array::dtype::extension::ExtVTable for vortex_array::extension::uuid::Uuid -pub fn vortex_array::dtype::PrecisionScale::try_from(value: &vortex_array::dtype::DecimalDType) -> vortex_error::VortexResult +pub type vortex_array::extension::uuid::Uuid::Metadata = vortex_array::extension::uuid::UuidMetadata -pub struct vortex_array::dtype::FieldDType +pub type vortex_array::extension::uuid::Uuid::NativeValue<'a> = uuid::Uuid -impl vortex_array::dtype::FieldDType +pub fn vortex_array::extension::uuid::Uuid::can_coerce_from(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool -pub fn vortex_array::dtype::FieldDType::value(&self) -> vortex_error::VortexResult +pub fn vortex_array::extension::uuid::Uuid::can_coerce_to(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool -impl core::clone::Clone for vortex_array::dtype::FieldDType +pub fn vortex_array::extension::uuid::Uuid::deserialize_metadata(&self, metadata: &[u8]) -> vortex_error::VortexResult -pub fn vortex_array::dtype::FieldDType::clone(&self) -> vortex_array::dtype::FieldDType +pub fn vortex_array::extension::uuid::Uuid::id(&self) -> vortex_array::dtype::extension::ExtId -impl core::cmp::Eq for vortex_array::dtype::FieldDType +pub fn vortex_array::extension::uuid::Uuid::least_supertype(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> core::option::Option -impl core::cmp::PartialEq for vortex_array::dtype::FieldDType +pub fn vortex_array::extension::uuid::Uuid::serialize_metadata(&self, metadata: &Self::Metadata) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::FieldDType::eq(&self, other: &vortex_array::dtype::FieldDType) -> bool +pub fn vortex_array::extension::uuid::Uuid::unpack_native<'a>(ext_dtype: &vortex_array::dtype::extension::ExtDType, storage_value: &'a vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult -impl core::convert::From for vortex_array::dtype::FieldDType +pub fn vortex_array::extension::uuid::Uuid::validate_dtype(ext_dtype: &vortex_array::dtype::extension::ExtDType) -> vortex_error::VortexResult<()> -pub fn vortex_array::dtype::FieldDType::from(value: vortex_array::dtype::DType) -> Self +pub fn vortex_array::extension::uuid::Uuid::validate_scalar_value(ext_dtype: &vortex_array::dtype::extension::ExtDType, storage_value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult<()> -impl core::convert::From for vortex_array::dtype::FieldDType +pub struct vortex_array::extension::uuid::UuidMetadata -pub fn vortex_array::dtype::FieldDType::from(value: vortex_array::dtype::PType) -> Self +pub vortex_array::extension::uuid::UuidMetadata::version: core::option::Option -impl core::fmt::Debug for vortex_array::dtype::FieldDType +impl core::clone::Clone for vortex_array::extension::uuid::UuidMetadata -pub fn vortex_array::dtype::FieldDType::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::extension::uuid::UuidMetadata::clone(&self) -> vortex_array::extension::uuid::UuidMetadata -impl core::hash::Hash for vortex_array::dtype::FieldDType +impl core::cmp::Eq for vortex_array::extension::uuid::UuidMetadata -pub fn vortex_array::dtype::FieldDType::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +impl core::cmp::PartialEq for vortex_array::extension::uuid::UuidMetadata -impl core::marker::StructuralPartialEq for vortex_array::dtype::FieldDType +pub fn vortex_array::extension::uuid::UuidMetadata::eq(&self, other: &Self) -> bool -pub struct vortex_array::dtype::FieldName(_) +impl core::default::Default for vortex_array::extension::uuid::UuidMetadata -impl vortex_array::dtype::FieldName +pub fn vortex_array::extension::uuid::UuidMetadata::default() -> vortex_array::extension::uuid::UuidMetadata -pub fn vortex_array::dtype::FieldName::inner(&self) -> &alloc::sync::Arc +impl core::fmt::Debug for vortex_array::extension::uuid::UuidMetadata -impl core::borrow::Borrow for &vortex_array::dtype::FieldName +pub fn vortex_array::extension::uuid::UuidMetadata::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn &vortex_array::dtype::FieldName::borrow(&self) -> &str +impl core::fmt::Display for vortex_array::extension::uuid::UuidMetadata -impl core::borrow::Borrow for vortex_array::dtype::FieldName +pub fn vortex_array::extension::uuid::UuidMetadata::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::dtype::FieldName::borrow(&self) -> &str +impl core::hash::Hash for vortex_array::extension::uuid::UuidMetadata -impl core::clone::Clone for vortex_array::dtype::FieldName +pub fn vortex_array::extension::uuid::UuidMetadata::hash(&self, state: &mut H) -pub fn vortex_array::dtype::FieldName::clone(&self) -> vortex_array::dtype::FieldName +pub struct vortex_array::extension::EmptyMetadata -impl core::cmp::Eq for vortex_array::dtype::FieldName +impl core::clone::Clone for vortex_array::extension::EmptyMetadata -impl core::cmp::Ord for vortex_array::dtype::FieldName +pub fn vortex_array::extension::EmptyMetadata::clone(&self) -> vortex_array::extension::EmptyMetadata -pub fn vortex_array::dtype::FieldName::cmp(&self, other: &vortex_array::dtype::FieldName) -> core::cmp::Ordering +impl core::cmp::Eq for vortex_array::extension::EmptyMetadata -impl core::cmp::PartialEq for vortex_array::dtype::FieldName +impl core::cmp::PartialEq for vortex_array::extension::EmptyMetadata -pub fn vortex_array::dtype::FieldName::eq(&self, other: &vortex_array::dtype::FieldName) -> bool +pub fn vortex_array::extension::EmptyMetadata::eq(&self, other: &vortex_array::extension::EmptyMetadata) -> bool -impl core::cmp::PartialEq<&alloc::string::String> for vortex_array::dtype::FieldName +impl core::fmt::Debug for vortex_array::extension::EmptyMetadata -pub fn vortex_array::dtype::FieldName::eq(&self, other: &&alloc::string::String) -> bool +pub fn vortex_array::extension::EmptyMetadata::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::cmp::PartialEq<&str> for &vortex_array::dtype::FieldName +impl core::fmt::Display for vortex_array::extension::EmptyMetadata -pub fn &vortex_array::dtype::FieldName::eq(&self, other: &&str) -> bool +pub fn vortex_array::extension::EmptyMetadata::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::cmp::PartialEq<&str> for vortex_array::dtype::FieldName +impl core::hash::Hash for vortex_array::extension::EmptyMetadata -pub fn vortex_array::dtype::FieldName::eq(&self, other: &&str) -> bool +pub fn vortex_array::extension::EmptyMetadata::hash<__H: core::hash::Hasher>(&self, state: &mut __H) -impl core::cmp::PartialEq<&vortex_array::dtype::FieldName> for vortex_array::dtype::FieldName +impl core::marker::StructuralPartialEq for vortex_array::extension::EmptyMetadata -pub fn vortex_array::dtype::FieldName::eq(&self, other: &&vortex_array::dtype::FieldName) -> bool +pub mod vortex_array::flatbuffers -impl core::cmp::PartialEq for vortex_array::dtype::FieldName +pub use vortex_array::flatbuffers::<> -pub fn vortex_array::dtype::FieldName::eq(&self, other: &alloc::string::String) -> bool +pub mod vortex_array::iter -impl core::cmp::PartialEq for &vortex_array::dtype::FieldName +pub struct vortex_array::iter::ArrayIteratorAdapter -pub fn &vortex_array::dtype::FieldName::eq(&self, other: &vortex_array::dtype::FieldName) -> bool +impl vortex_array::iter::ArrayIteratorAdapter -impl core::cmp::PartialEq for str +pub fn vortex_array::iter::ArrayIteratorAdapter::new(dtype: vortex_array::dtype::DType, inner: I) -> Self -pub fn str::eq(&self, other: &vortex_array::dtype::FieldName) -> bool +impl core::iter::traits::iterator::Iterator for vortex_array::iter::ArrayIteratorAdapter where I: core::iter::traits::iterator::Iterator> -impl core::cmp::PartialOrd for vortex_array::dtype::FieldName +pub type vortex_array::iter::ArrayIteratorAdapter::Item = core::result::Result -pub fn vortex_array::dtype::FieldName::partial_cmp(&self, other: &vortex_array::dtype::FieldName) -> core::option::Option +pub fn vortex_array::iter::ArrayIteratorAdapter::next(&mut self) -> core::option::Option -impl core::convert::AsRef for vortex_array::dtype::FieldName +impl vortex_array::iter::ArrayIterator for vortex_array::iter::ArrayIteratorAdapter where I: core::iter::traits::iterator::Iterator> -pub fn vortex_array::dtype::FieldName::as_ref(&self) -> &str +pub fn vortex_array::iter::ArrayIteratorAdapter::dtype(&self) -> &vortex_array::dtype::DType -impl core::convert::From<&str> for vortex_array::dtype::FieldName +pub trait vortex_array::iter::ArrayIterator: core::iter::traits::iterator::Iterator> -pub fn vortex_array::dtype::FieldName::from(value: &str) -> Self +pub fn vortex_array::iter::ArrayIterator::dtype(&self) -> &vortex_array::dtype::DType -impl core::convert::From for vortex_array::dtype::FieldName +impl vortex_array::iter::ArrayIterator for alloc::boxed::Box<(dyn vortex_array::iter::ArrayIterator + core::marker::Send)> -pub fn vortex_array::dtype::FieldName::from(value: alloc::string::String) -> Self +pub fn alloc::boxed::Box<(dyn vortex_array::iter::ArrayIterator + core::marker::Send)>::dtype(&self) -> &vortex_array::dtype::DType -impl core::convert::From> for vortex_array::dtype::FieldName +impl vortex_array::iter::ArrayIterator for vortex_array::arrow::ArrowArrayStreamAdapter -pub fn vortex_array::dtype::FieldName::from(value: alloc::sync::Arc) -> Self +pub fn vortex_array::arrow::ArrowArrayStreamAdapter::dtype(&self) -> &vortex_array::dtype::DType -impl core::convert::From for alloc::string::String +impl vortex_array::iter::ArrayIterator for vortex_array::iter::ArrayIteratorAdapter where I: core::iter::traits::iterator::Iterator> -pub fn alloc::string::String::from(value: vortex_array::dtype::FieldName) -> Self +pub fn vortex_array::iter::ArrayIteratorAdapter::dtype(&self) -> &vortex_array::dtype::DType -impl core::convert::From for alloc::sync::Arc +pub trait vortex_array::iter::ArrayIteratorExt: vortex_array::iter::ArrayIterator -pub fn alloc::sync::Arc::from(value: vortex_array::dtype::FieldName) -> Self +pub fn vortex_array::iter::ArrayIteratorExt::into_array_stream(self) -> impl vortex_array::stream::ArrayStream where Self: core::marker::Sized -impl core::convert::From for vortex_array::dtype::Field +pub fn vortex_array::iter::ArrayIteratorExt::read_all(self) -> vortex_error::VortexResult where Self: core::marker::Sized -pub fn vortex_array::dtype::Field::from(value: vortex_array::dtype::FieldName) -> Self +impl vortex_array::iter::ArrayIteratorExt for I -impl core::fmt::Debug for vortex_array::dtype::FieldName +pub fn I::into_array_stream(self) -> impl vortex_array::stream::ArrayStream where Self: core::marker::Sized -pub fn vortex_array::dtype::FieldName::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn I::read_all(self) -> vortex_error::VortexResult where Self: core::marker::Sized -impl core::fmt::Display for vortex_array::dtype::FieldName +pub mod vortex_array::kernel -pub fn vortex_array::dtype::FieldName::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub struct vortex_array::kernel::ParentKernelAdapter -impl core::hash::Hash for vortex_array::dtype::FieldName +impl> core::fmt::Debug for vortex_array::kernel::ParentKernelAdapter -pub fn vortex_array::dtype::FieldName::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::kernel::ParentKernelAdapter::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::marker::StructuralPartialEq for vortex_array::dtype::FieldName +impl> vortex_array::kernel::DynParentKernel for vortex_array::kernel::ParentKernelAdapter -pub struct vortex_array::dtype::FieldNames(_) +pub fn vortex_array::kernel::ParentKernelAdapter::execute_parent(&self, child: vortex_array::ArrayView<'_, V>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::dtype::FieldNames +pub fn vortex_array::kernel::ParentKernelAdapter::matches(&self, parent: &vortex_array::ArrayRef) -> bool -pub fn vortex_array::dtype::FieldNames::empty() -> Self +pub struct vortex_array::kernel::ParentKernelSet -pub fn vortex_array::dtype::FieldNames::find(&self, name: impl core::convert::AsRef) -> core::option::Option +impl vortex_array::kernel::ParentKernelSet -pub fn vortex_array::dtype::FieldNames::get(&self, index: usize) -> core::option::Option<&vortex_array::dtype::FieldName> +pub fn vortex_array::kernel::ParentKernelSet::execute(&self, child: vortex_array::ArrayView<'_, V>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::FieldNames::is_empty(&self) -> bool +pub const fn vortex_array::kernel::ParentKernelSet::lift>(kernel: &'static K) -> &'static dyn vortex_array::kernel::DynParentKernel -pub fn vortex_array::dtype::FieldNames::iter(&self) -> impl core::iter::traits::exact_size::ExactSizeIterator +pub const fn vortex_array::kernel::ParentKernelSet::new(kernels: &'static [&'static dyn vortex_array::kernel::DynParentKernel]) -> Self -pub fn vortex_array::dtype::FieldNames::len(&self) -> usize +pub trait vortex_array::kernel::DynParentKernel: core::marker::Send + core::marker::Sync -impl core::clone::Clone for vortex_array::dtype::FieldNames +pub fn vortex_array::kernel::DynParentKernel::execute_parent(&self, child: vortex_array::ArrayView<'_, V>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::FieldNames::clone(&self) -> vortex_array::dtype::FieldNames +pub fn vortex_array::kernel::DynParentKernel::matches(&self, parent: &vortex_array::ArrayRef) -> bool -impl core::cmp::Eq for vortex_array::dtype::FieldNames +impl> vortex_array::kernel::DynParentKernel for vortex_array::kernel::ParentKernelAdapter -impl core::cmp::PartialEq for vortex_array::dtype::FieldNames +pub fn vortex_array::kernel::ParentKernelAdapter::execute_parent(&self, child: vortex_array::ArrayView<'_, V>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::FieldNames::eq(&self, other: &vortex_array::dtype::FieldNames) -> bool +pub fn vortex_array::kernel::ParentKernelAdapter::matches(&self, parent: &vortex_array::ArrayRef) -> bool -impl core::cmp::PartialEq<&[&str]> for &vortex_array::dtype::FieldNames +pub trait vortex_array::kernel::ExecuteParentKernel: core::fmt::Debug + core::marker::Send + core::marker::Sync + 'static -pub fn &vortex_array::dtype::FieldNames::eq(&self, other: &&[&str]) -> bool +pub type vortex_array::kernel::ExecuteParentKernel::Parent: vortex_array::matcher::Matcher -impl core::cmp::PartialEq<&[&str]> for vortex_array::dtype::FieldNames +pub fn vortex_array::kernel::ExecuteParentKernel::execute_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: ::Match, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::FieldNames::eq(&self, other: &&[&str]) -> bool +impl vortex_array::kernel::ExecuteParentKernel for vortex_array::arrays::dict::TakeExecuteAdaptor where V: vortex_array::arrays::dict::TakeExecute -impl core::cmp::PartialEq<&[vortex_array::dtype::FieldName]> for &vortex_array::dtype::FieldNames +pub type vortex_array::arrays::dict::TakeExecuteAdaptor::Parent = vortex_array::arrays::dict::Dict -pub fn &vortex_array::dtype::FieldNames::eq(&self, other: &&[vortex_array::dtype::FieldName]) -> bool +pub fn vortex_array::arrays::dict::TakeExecuteAdaptor::execute_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: ::Match, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl core::cmp::PartialEq<&[vortex_array::dtype::FieldName]> for vortex_array::dtype::FieldNames +impl vortex_array::kernel::ExecuteParentKernel for vortex_array::arrays::filter::FilterExecuteAdaptor where V: vortex_array::arrays::filter::FilterKernel -pub fn vortex_array::dtype::FieldNames::eq(&self, other: &&[vortex_array::dtype::FieldName]) -> bool +pub type vortex_array::arrays::filter::FilterExecuteAdaptor::Parent = vortex_array::arrays::Filter -impl core::cmp::PartialEq<&vortex_array::dtype::FieldNames> for vortex_array::dtype::FieldNames +pub fn vortex_array::arrays::filter::FilterExecuteAdaptor::execute_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: ::Match, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::FieldNames::eq(&self, other: &&vortex_array::dtype::FieldNames) -> bool +impl vortex_array::kernel::ExecuteParentKernel for vortex_array::arrays::slice::SliceExecuteAdaptor where V: vortex_array::arrays::slice::SliceKernel -impl core::convert::AsRef<[vortex_array::dtype::FieldName]> for vortex_array::dtype::FieldNames +pub type vortex_array::arrays::slice::SliceExecuteAdaptor::Parent = vortex_array::arrays::slice::Slice -pub fn vortex_array::dtype::FieldNames::as_ref(&self) -> &[vortex_array::dtype::FieldName] +pub fn vortex_array::arrays::slice::SliceExecuteAdaptor::execute_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: ::Match, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl core::convert::From<&[&'static str]> for vortex_array::dtype::FieldNames +impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::between::BetweenExecuteAdaptor where V: vortex_array::scalar_fn::fns::between::BetweenKernel -pub fn vortex_array::dtype::FieldNames::from(value: &[&'static str]) -> Self +pub type vortex_array::scalar_fn::fns::between::BetweenExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -impl core::convert::From<&[vortex_array::dtype::FieldName]> for vortex_array::dtype::FieldNames +pub fn vortex_array::scalar_fn::fns::between::BetweenExecuteAdaptor::execute_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::between::Between>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::FieldNames::from(value: &[vortex_array::dtype::FieldName]) -> Self +impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::binary::CompareExecuteAdaptor where V: vortex_array::scalar_fn::fns::binary::CompareKernel -impl core::convert::From> for vortex_array::dtype::FieldNames +pub type vortex_array::scalar_fn::fns::binary::CompareExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -pub fn vortex_array::dtype::FieldNames::from(value: alloc::vec::Vec<&str>) -> Self +pub fn vortex_array::scalar_fn::fns::binary::CompareExecuteAdaptor::execute_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::binary::Binary>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl core::convert::From>> for vortex_array::dtype::FieldNames +impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::cast::CastExecuteAdaptor where V: vortex_array::scalar_fn::fns::cast::CastKernel -pub fn vortex_array::dtype::FieldNames::from(value: alloc::vec::Vec>) -> Self +pub type vortex_array::scalar_fn::fns::cast::CastExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -impl core::convert::From> for vortex_array::dtype::FieldNames +pub fn vortex_array::scalar_fn::fns::cast::CastExecuteAdaptor::execute_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: ::Match, _child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::FieldNames::from(value: alloc::vec::Vec) -> Self +impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::fill_null::FillNullExecuteAdaptor where V: vortex_array::scalar_fn::fns::fill_null::FillNullKernel -impl core::default::Default for vortex_array::dtype::FieldNames +pub type vortex_array::scalar_fn::fns::fill_null::FillNullExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -pub fn vortex_array::dtype::FieldNames::default() -> vortex_array::dtype::FieldNames +pub fn vortex_array::scalar_fn::fns::fill_null::FillNullExecuteAdaptor::execute_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::fill_null::FillNull>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl core::fmt::Debug for vortex_array::dtype::FieldNames +impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::like::LikeExecuteAdaptor where V: vortex_array::scalar_fn::fns::like::LikeKernel -pub fn vortex_array::dtype::FieldNames::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::scalar_fn::fns::like::LikeExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -impl core::fmt::Display for vortex_array::dtype::FieldNames +pub fn vortex_array::scalar_fn::fns::like::LikeExecuteAdaptor::execute_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::like::Like>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::FieldNames::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::list_contains::ListContainsElementExecuteAdaptor where V: vortex_array::scalar_fn::fns::list_contains::ListContainsElementKernel -impl core::hash::Hash for vortex_array::dtype::FieldNames +pub type vortex_array::scalar_fn::fns::list_contains::ListContainsElementExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -pub fn vortex_array::dtype::FieldNames::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::scalar_fn::fns::list_contains::ListContainsElementExecuteAdaptor::execute_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::list_contains::ListContains>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl core::iter::traits::collect::IntoIterator for vortex_array::dtype::FieldNames +impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::mask::MaskExecuteAdaptor where V: vortex_array::scalar_fn::fns::mask::MaskKernel -pub type vortex_array::dtype::FieldNames::IntoIter = vortex_array::dtype::FieldNamesIntoIter +pub type vortex_array::scalar_fn::fns::mask::MaskExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -pub type vortex_array::dtype::FieldNames::Item = vortex_array::dtype::FieldName +pub fn vortex_array::scalar_fn::fns::mask::MaskExecuteAdaptor::execute_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::mask::Mask>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::FieldNames::into_iter(self) -> Self::IntoIter +impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::not::NotExecuteAdaptor where V: vortex_array::scalar_fn::fns::not::NotKernel -impl core::marker::StructuralPartialEq for vortex_array::dtype::FieldNames +pub type vortex_array::scalar_fn::fns::not::NotExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -impl core::ops::index::Index for vortex_array::dtype::FieldNames +pub fn vortex_array::scalar_fn::fns::not::NotExecuteAdaptor::execute_parent(&self, array: vortex_array::ArrayView<'_, V>, _parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::not::Not>, _child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub type vortex_array::dtype::FieldNames::Output = vortex_array::dtype::FieldName +impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::zip::ZipExecuteAdaptor where V: vortex_array::scalar_fn::fns::zip::ZipKernel -pub fn vortex_array::dtype::FieldNames::index(&self, index: usize) -> &Self::Output +pub type vortex_array::scalar_fn::fns::zip::ZipExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -impl> core::iter::traits::collect::FromIterator for vortex_array::dtype::FieldNames +pub fn vortex_array::scalar_fn::fns::zip::ZipExecuteAdaptor::execute_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::zip::Zip>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::FieldNames::from_iter>(iter: T) -> Self +pub mod vortex_array::mask -impl core::cmp::PartialEq<[&str; N]> for &vortex_array::dtype::FieldNames +pub mod vortex_array::matcher -pub fn &vortex_array::dtype::FieldNames::eq(&self, other: &[&str; N]) -> bool +pub struct vortex_array::matcher::AnyArray -impl core::cmp::PartialEq<[&str; N]> for vortex_array::dtype::FieldNames +impl core::fmt::Debug for vortex_array::matcher::AnyArray -pub fn vortex_array::dtype::FieldNames::eq(&self, other: &[&str; N]) -> bool +pub fn vortex_array::matcher::AnyArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::convert::From<&[&str; N]> for vortex_array::dtype::FieldNames +impl vortex_array::matcher::Matcher for vortex_array::matcher::AnyArray -pub fn vortex_array::dtype::FieldNames::from(value: &[&str; N]) -> Self +pub type vortex_array::matcher::AnyArray::Match<'a> = &'a vortex_array::ArrayRef -impl core::convert::From<[&str; N]> for vortex_array::dtype::FieldNames +pub fn vortex_array::matcher::AnyArray::matches(_array: &vortex_array::ArrayRef) -> bool -pub fn vortex_array::dtype::FieldNames::from(value: [&str; N]) -> Self +pub fn vortex_array::matcher::AnyArray::try_match(array: &vortex_array::ArrayRef) -> core::option::Option -impl core::convert::From<[vortex_array::dtype::FieldName; N]> for vortex_array::dtype::FieldNames +pub trait vortex_array::matcher::Matcher -pub fn vortex_array::dtype::FieldNames::from(value: [vortex_array::dtype::FieldName; N]) -> Self +pub type vortex_array::matcher::Matcher::Match<'a> -pub struct vortex_array::dtype::FieldNamesIntoIter +pub fn vortex_array::matcher::Matcher::matches(array: &vortex_array::ArrayRef) -> bool -impl core::iter::traits::exact_size::ExactSizeIterator for vortex_array::dtype::FieldNamesIntoIter +pub fn vortex_array::matcher::Matcher::try_match<'a>(array: &'a vortex_array::ArrayRef) -> core::option::Option -impl core::iter::traits::iterator::Iterator for vortex_array::dtype::FieldNamesIntoIter +impl vortex_array::matcher::Matcher for vortex_array::AnyCanonical -pub type vortex_array::dtype::FieldNamesIntoIter::Item = vortex_array::dtype::FieldName +pub type vortex_array::AnyCanonical::Match<'a> = vortex_array::CanonicalView<'a> -pub fn vortex_array::dtype::FieldNamesIntoIter::next(&mut self) -> core::option::Option +pub fn vortex_array::AnyCanonical::matches(array: &vortex_array::ArrayRef) -> bool -pub fn vortex_array::dtype::FieldNamesIntoIter::size_hint(&self) -> (usize, core::option::Option) +pub fn vortex_array::AnyCanonical::try_match<'a>(array: &'a vortex_array::ArrayRef) -> core::option::Option -pub struct vortex_array::dtype::FieldNamesIter<'a> +impl vortex_array::matcher::Matcher for vortex_array::AnyColumnar -impl core::iter::traits::exact_size::ExactSizeIterator for vortex_array::dtype::FieldNamesIter<'_> +pub type vortex_array::AnyColumnar::Match<'a> = vortex_array::ColumnarView<'a> -impl<'a> core::iter::traits::iterator::Iterator for vortex_array::dtype::FieldNamesIter<'a> +pub fn vortex_array::AnyColumnar::matches(array: &vortex_array::ArrayRef) -> bool -pub type vortex_array::dtype::FieldNamesIter<'a>::Item = &'a vortex_array::dtype::FieldName +pub fn vortex_array::AnyColumnar::try_match<'a>(array: &'a vortex_array::ArrayRef) -> core::option::Option -pub fn vortex_array::dtype::FieldNamesIter<'a>::next(&mut self) -> core::option::Option +impl vortex_array::matcher::Matcher for vortex_array::arrays::scalar_fn::AnyScalarFn -pub fn vortex_array::dtype::FieldNamesIter<'a>::size_hint(&self) -> (usize, core::option::Option) +pub type vortex_array::arrays::scalar_fn::AnyScalarFn::Match<'a> = vortex_array::ArrayView<'a, vortex_array::arrays::scalar_fn::ScalarFnVTable> -pub struct vortex_array::dtype::FieldPath(_) +pub fn vortex_array::arrays::scalar_fn::AnyScalarFn::matches(array: &vortex_array::ArrayRef) -> bool -impl vortex_array::dtype::FieldPath +pub fn vortex_array::arrays::scalar_fn::AnyScalarFn::try_match(array: &vortex_array::ArrayRef) -> core::option::Option -pub fn vortex_array::dtype::FieldPath::exists_in(&self, dtype: vortex_array::dtype::DType) -> bool +impl vortex_array::matcher::Matcher for vortex_array::matcher::AnyArray -pub fn vortex_array::dtype::FieldPath::from_name>(name: F) -> Self +pub type vortex_array::matcher::AnyArray::Match<'a> = &'a vortex_array::ArrayRef -pub fn vortex_array::dtype::FieldPath::is_root(&self) -> bool +pub fn vortex_array::matcher::AnyArray::matches(_array: &vortex_array::ArrayRef) -> bool -pub fn vortex_array::dtype::FieldPath::overlap(&self, other: &vortex_array::dtype::FieldPath) -> bool +pub fn vortex_array::matcher::AnyArray::try_match(array: &vortex_array::ArrayRef) -> core::option::Option -pub fn vortex_array::dtype::FieldPath::parts(&self) -> &[vortex_array::dtype::Field] +impl vortex_array::matcher::Matcher for vortex_array::arrays::scalar_fn::ExactScalarFn -pub fn vortex_array::dtype::FieldPath::push>(self, field: F) -> Self +pub type vortex_array::arrays::scalar_fn::ExactScalarFn::Match<'a> = vortex_array::arrays::scalar_fn::ScalarFnArrayView<'a, F> -pub fn vortex_array::dtype::FieldPath::resolve(&self, dtype: vortex_array::dtype::DType) -> core::option::Option +pub fn vortex_array::arrays::scalar_fn::ExactScalarFn::matches(array: &vortex_array::ArrayRef) -> bool -pub fn vortex_array::dtype::FieldPath::root() -> Self +pub fn vortex_array::arrays::scalar_fn::ExactScalarFn::try_match(array: &vortex_array::ArrayRef) -> core::option::Option -pub fn vortex_array::dtype::FieldPath::starts_with_field(&self, field: &vortex_array::dtype::Field) -> bool +impl vortex_array::matcher::Matcher for V -pub fn vortex_array::dtype::FieldPath::step_into(self) -> core::option::Option +pub type V::Match<'a> = vortex_array::ArrayView<'a, V> -impl core::clone::Clone for vortex_array::dtype::FieldPath +pub fn V::matches(array: &vortex_array::ArrayRef) -> bool -pub fn vortex_array::dtype::FieldPath::clone(&self) -> vortex_array::dtype::FieldPath +pub fn V::try_match<'a>(array: &'a vortex_array::ArrayRef) -> core::option::Option> -impl core::cmp::Eq for vortex_array::dtype::FieldPath +pub mod vortex_array::normalize -impl core::cmp::PartialEq for vortex_array::dtype::FieldPath +pub enum vortex_array::normalize::Operation -pub fn vortex_array::dtype::FieldPath::eq(&self, other: &vortex_array::dtype::FieldPath) -> bool +pub vortex_array::normalize::Operation::Error -impl core::convert::From> for vortex_array::dtype::FieldPath +pub struct vortex_array::normalize::NormalizeOptions<'a> -pub fn vortex_array::dtype::FieldPath::from(value: alloc::vec::Vec) -> Self +pub vortex_array::normalize::NormalizeOptions::allowed: &'a vortex_array::session::ArrayRegistry -impl core::convert::From for vortex_array::dtype::FieldPath +pub vortex_array::normalize::NormalizeOptions::operation: vortex_array::normalize::Operation -pub fn vortex_array::dtype::FieldPath::from(value: vortex_array::dtype::Field) -> Self +pub mod vortex_array::optimizer -impl core::convert::TryFrom<&vortex_proto::dtype::FieldPath> for vortex_array::dtype::FieldPath +pub mod vortex_array::optimizer::rules -pub type vortex_array::dtype::FieldPath::Error = vortex_error::VortexError +pub struct vortex_array::optimizer::rules::ParentReduceRuleAdapter -pub fn vortex_array::dtype::FieldPath::try_from(value: &vortex_proto::dtype::FieldPath) -> core::result::Result +impl> vortex_array::optimizer::rules::DynArrayParentReduceRule for vortex_array::optimizer::rules::ParentReduceRuleAdapter -impl core::default::Default for vortex_array::dtype::FieldPath +pub fn vortex_array::optimizer::rules::ParentReduceRuleAdapter::matches(&self, parent: &vortex_array::ArrayRef) -> bool -pub fn vortex_array::dtype::FieldPath::default() -> vortex_array::dtype::FieldPath +pub fn vortex_array::optimizer::rules::ParentReduceRuleAdapter::reduce_parent(&self, child: vortex_array::ArrayView<'_, V>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -impl core::fmt::Debug for vortex_array::dtype::FieldPath +impl> core::fmt::Debug for vortex_array::optimizer::rules::ParentReduceRuleAdapter -pub fn vortex_array::dtype::FieldPath::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::optimizer::rules::ParentReduceRuleAdapter::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::fmt::Display for vortex_array::dtype::FieldPath +pub struct vortex_array::optimizer::rules::ParentRuleSet -pub fn vortex_array::dtype::FieldPath::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl vortex_array::optimizer::rules::ParentRuleSet -impl core::hash::Hash for vortex_array::dtype::FieldPath +pub fn vortex_array::optimizer::rules::ParentRuleSet::evaluate(&self, child: vortex_array::ArrayView<'_, V>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::FieldPath::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub const fn vortex_array::optimizer::rules::ParentRuleSet::lift>(rule: &'static R) -> &'static dyn vortex_array::optimizer::rules::DynArrayParentReduceRule -impl core::iter::traits::collect::FromIterator for vortex_array::dtype::FieldPath +pub const fn vortex_array::optimizer::rules::ParentRuleSet::new(rules: &'static [&'static dyn vortex_array::optimizer::rules::DynArrayParentReduceRule]) -> Self -pub fn vortex_array::dtype::FieldPath::from_iter>(iter: T) -> Self +pub struct vortex_array::optimizer::rules::ReduceRuleSet -impl core::iter::traits::collect::FromIterator for vortex_array::dtype::FieldPathSet +impl vortex_array::optimizer::rules::ReduceRuleSet -pub fn vortex_array::dtype::FieldPathSet::from_iter>(iter: T) -> Self +pub fn vortex_array::optimizer::rules::ReduceRuleSet::evaluate(&self, array: vortex_array::ArrayView<'_, V>) -> vortex_error::VortexResult> -impl core::marker::StructuralPartialEq for vortex_array::dtype::FieldPath +pub const fn vortex_array::optimizer::rules::ReduceRuleSet::new(rules: &'static [&'static dyn vortex_array::optimizer::rules::ArrayReduceRule]) -> Self -pub struct vortex_array::dtype::FieldPathSet +pub trait vortex_array::optimizer::rules::ArrayParentReduceRule: core::fmt::Debug + core::marker::Send + core::marker::Sync + 'static -impl vortex_array::dtype::FieldPathSet +pub type vortex_array::optimizer::rules::ArrayParentReduceRule::Parent: vortex_array::matcher::Matcher -pub fn vortex_array::dtype::FieldPathSet::contains(&self, path: &vortex_array::dtype::FieldPath) -> bool +pub fn vortex_array::optimizer::rules::ArrayParentReduceRule::reduce_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: ::Match, child_idx: usize) -> vortex_error::VortexResult> -impl core::clone::Clone for vortex_array::dtype::FieldPathSet +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::arrays::bool::BoolMaskedValidityRule -pub fn vortex_array::dtype::FieldPathSet::clone(&self) -> vortex_array::dtype::FieldPathSet +pub type vortex_array::arrays::bool::BoolMaskedValidityRule::Parent = vortex_array::arrays::Masked -impl core::default::Default for vortex_array::dtype::FieldPathSet +pub fn vortex_array::arrays::bool::BoolMaskedValidityRule::reduce_parent(&self, array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>, parent: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::FieldPathSet::default() -> vortex_array::dtype::FieldPathSet +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::arrays::decimal::DecimalMaskedValidityRule -impl core::fmt::Debug for vortex_array::dtype::FieldPathSet +pub type vortex_array::arrays::decimal::DecimalMaskedValidityRule::Parent = vortex_array::arrays::Masked -pub fn vortex_array::dtype::FieldPathSet::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::decimal::DecimalMaskedValidityRule::reduce_parent(&self, array: vortex_array::ArrayView<'_, vortex_array::arrays::Decimal>, parent: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>, _child_idx: usize) -> vortex_error::VortexResult> -impl core::iter::traits::collect::FromIterator for vortex_array::dtype::FieldPathSet +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::arrays::primitive::PrimitiveMaskedValidityRule -pub fn vortex_array::dtype::FieldPathSet::from_iter>(iter: T) -> Self +pub type vortex_array::arrays::primitive::PrimitiveMaskedValidityRule::Parent = vortex_array::arrays::Masked -pub struct vortex_array::dtype::PrecisionScale +pub fn vortex_array::arrays::primitive::PrimitiveMaskedValidityRule::reduce_parent(&self, array: vortex_array::ArrayView<'_, vortex_array::arrays::Primitive>, parent: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>, _child_idx: usize) -> vortex_error::VortexResult> -impl vortex_array::dtype::PrecisionScale +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::arrays::dict::TakeReduceAdaptor where V: vortex_array::arrays::dict::TakeReduce -pub fn vortex_array::dtype::PrecisionScale::is_valid(&self, value: D) -> bool +pub type vortex_array::arrays::dict::TakeReduceAdaptor::Parent = vortex_array::arrays::dict::Dict -pub fn vortex_array::dtype::PrecisionScale::new(precision: u8, scale: i8) -> Self +pub fn vortex_array::arrays::dict::TakeReduceAdaptor::reduce_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, child_idx: usize) -> vortex_error::VortexResult> -pub unsafe fn vortex_array::dtype::PrecisionScale::new_unchecked(precision: u8, scale: i8) -> Self +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::arrays::filter::FilterReduceAdaptor where V: vortex_array::arrays::filter::FilterReduce -pub fn vortex_array::dtype::PrecisionScale::precision(&self) -> u8 +pub type vortex_array::arrays::filter::FilterReduceAdaptor::Parent = vortex_array::arrays::Filter -pub fn vortex_array::dtype::PrecisionScale::scale(&self) -> i8 +pub fn vortex_array::arrays::filter::FilterReduceAdaptor::reduce_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::ArrayView<'_, vortex_array::arrays::Filter>, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::PrecisionScale::try_new(precision: u8, scale: i8) -> vortex_error::VortexResult +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::arrays::slice::SliceReduceAdaptor where V: vortex_array::arrays::slice::SliceReduce -impl core::clone::Clone for vortex_array::dtype::PrecisionScale +pub type vortex_array::arrays::slice::SliceReduceAdaptor::Parent = vortex_array::arrays::slice::Slice -pub fn vortex_array::dtype::PrecisionScale::clone(&self) -> vortex_array::dtype::PrecisionScale +pub fn vortex_array::arrays::slice::SliceReduceAdaptor::reduce_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: ::Match, child_idx: usize) -> vortex_error::VortexResult> -impl core::cmp::Eq for vortex_array::dtype::PrecisionScale +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::between::BetweenReduceAdaptor where V: vortex_array::scalar_fn::fns::between::BetweenReduce -impl core::cmp::PartialEq for vortex_array::dtype::PrecisionScale +pub type vortex_array::scalar_fn::fns::between::BetweenReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -pub fn vortex_array::dtype::PrecisionScale::eq(&self, other: &vortex_array::dtype::PrecisionScale) -> bool +pub fn vortex_array::scalar_fn::fns::between::BetweenReduceAdaptor::reduce_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::between::Between>, child_idx: usize) -> vortex_error::VortexResult> -impl core::fmt::Debug for vortex_array::dtype::PrecisionScale +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::cast::CastReduceAdaptor where V: vortex_array::scalar_fn::fns::cast::CastReduce -pub fn vortex_array::dtype::PrecisionScale::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::scalar_fn::fns::cast::CastReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -impl core::hash::Hash for vortex_array::dtype::PrecisionScale +pub fn vortex_array::scalar_fn::fns::cast::CastReduceAdaptor::reduce_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::cast::Cast>, _child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::PrecisionScale::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::fill_null::FillNullReduceAdaptor where V: vortex_array::scalar_fn::fns::fill_null::FillNullReduce -impl core::marker::Copy for vortex_array::dtype::PrecisionScale +pub type vortex_array::scalar_fn::fns::fill_null::FillNullReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -impl core::convert::From> for vortex_array::dtype::DecimalDType +pub fn vortex_array::scalar_fn::fns::fill_null::FillNullReduceAdaptor::reduce_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::fill_null::FillNull>, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::DecimalDType::from(value: vortex_array::dtype::PrecisionScale) -> Self +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::like::LikeReduceAdaptor where V: vortex_array::scalar_fn::fns::like::LikeReduce -impl core::convert::TryFrom<&vortex_array::dtype::DecimalDType> for vortex_array::dtype::PrecisionScale +pub type vortex_array::scalar_fn::fns::like::LikeReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -pub type vortex_array::dtype::PrecisionScale::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::like::LikeReduceAdaptor::reduce_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::like::Like>, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::PrecisionScale::try_from(value: &vortex_array::dtype::DecimalDType) -> vortex_error::VortexResult +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduceAdaptor where V: vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduce -impl core::fmt::Display for vortex_array::dtype::PrecisionScale +pub type vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -pub fn vortex_array::dtype::PrecisionScale::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduceAdaptor::reduce_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::list_contains::ListContains>, child_idx: usize) -> vortex_error::VortexResult> -impl core::marker::StructuralPartialEq for vortex_array::dtype::PrecisionScale +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::mask::MaskReduceAdaptor where V: vortex_array::scalar_fn::fns::mask::MaskReduce -pub struct vortex_array::dtype::StructFields(_) +pub type vortex_array::scalar_fn::fns::mask::MaskReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -impl vortex_array::dtype::StructFields +pub fn vortex_array::scalar_fn::fns::mask::MaskReduceAdaptor::reduce_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::mask::Mask>, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::StructFields::disjoint_merge(&self, other: &Self) -> vortex_error::VortexResult +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::not::NotReduceAdaptor where V: vortex_array::scalar_fn::fns::not::NotReduce -pub fn vortex_array::dtype::StructFields::empty() -> Self +pub type vortex_array::scalar_fn::fns::not::NotReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -pub fn vortex_array::dtype::StructFields::field(&self, name: impl core::convert::AsRef) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::not::NotReduceAdaptor::reduce_parent(&self, array: vortex_array::ArrayView<'_, V>, _parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::not::Not>, _child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::StructFields::field_by_index(&self, index: usize) -> core::option::Option +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::zip::ZipReduceAdaptor where V: vortex_array::scalar_fn::fns::zip::ZipReduce -pub fn vortex_array::dtype::StructFields::field_name(&self, index: usize) -> core::option::Option<&vortex_array::dtype::FieldName> +pub type vortex_array::scalar_fn::fns::zip::ZipReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -pub fn vortex_array::dtype::StructFields::fields(&self) -> impl core::iter::traits::exact_size::ExactSizeIterator + '_ +pub fn vortex_array::scalar_fn::fns::zip::ZipReduceAdaptor::reduce_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::zip::Zip>, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::StructFields::find(&self, name: impl core::convert::AsRef) -> core::option::Option +pub trait vortex_array::optimizer::rules::ArrayReduceRule: core::fmt::Debug + core::marker::Send + core::marker::Sync + 'static -pub fn vortex_array::dtype::StructFields::from_fields(names: vortex_array::dtype::FieldNames, dtypes: alloc::vec::Vec) -> Self +pub fn vortex_array::optimizer::rules::ArrayReduceRule::reduce(&self, array: vortex_array::ArrayView<'_, V>) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::StructFields::names(&self) -> &vortex_array::dtype::FieldNames +pub trait vortex_array::optimizer::rules::DynArrayParentReduceRule: core::fmt::Debug + core::marker::Send + core::marker::Sync -pub fn vortex_array::dtype::StructFields::new(names: vortex_array::dtype::FieldNames, dtypes: alloc::vec::Vec) -> Self +pub fn vortex_array::optimizer::rules::DynArrayParentReduceRule::matches(&self, parent: &vortex_array::ArrayRef) -> bool -pub fn vortex_array::dtype::StructFields::nfields(&self) -> usize +pub fn vortex_array::optimizer::rules::DynArrayParentReduceRule::reduce_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::StructFields::project(&self, projection: &[vortex_array::dtype::FieldName]) -> vortex_error::VortexResult +impl> vortex_array::optimizer::rules::DynArrayParentReduceRule for vortex_array::optimizer::rules::ParentReduceRuleAdapter -pub fn vortex_array::dtype::StructFields::without_field(&self, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::optimizer::rules::ParentReduceRuleAdapter::matches(&self, parent: &vortex_array::ArrayRef) -> bool -impl core::clone::Clone for vortex_array::dtype::StructFields +pub fn vortex_array::optimizer::rules::ParentReduceRuleAdapter::reduce_parent(&self, child: vortex_array::ArrayView<'_, V>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::StructFields::clone(&self) -> vortex_array::dtype::StructFields +pub trait vortex_array::optimizer::ArrayOptimizer -impl core::cmp::Eq for vortex_array::dtype::StructFields +pub fn vortex_array::optimizer::ArrayOptimizer::optimize(&self) -> vortex_error::VortexResult -impl core::cmp::PartialEq for vortex_array::dtype::StructFields +pub fn vortex_array::optimizer::ArrayOptimizer::optimize_recursive(&self) -> vortex_error::VortexResult -pub fn vortex_array::dtype::StructFields::eq(&self, other: &vortex_array::dtype::StructFields) -> bool +impl vortex_array::optimizer::ArrayOptimizer for vortex_array::ArrayRef -impl core::default::Default for vortex_array::dtype::StructFields +pub fn vortex_array::ArrayRef::optimize(&self) -> vortex_error::VortexResult -pub fn vortex_array::dtype::StructFields::default() -> Self +pub fn vortex_array::ArrayRef::optimize_recursive(&self) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::dtype::StructFields +pub mod vortex_array::patches -pub fn vortex_array::dtype::StructFields::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub struct vortex_array::patches::Patches -impl core::fmt::Display for vortex_array::dtype::StructFields +impl vortex_array::patches::Patches -pub fn vortex_array::dtype::StructFields::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub unsafe fn vortex_array::patches::Patches::apply_to_buffer(&self, buffer: &mut [P], validity: &mut vortex_mask::mask_mut::MaskMut, ctx: &mut vortex_array::ExecutionCtx) -impl core::hash::Hash for vortex_array::dtype::StructFields +pub fn vortex_array::patches::Patches::array_len(&self) -> usize -pub fn vortex_array::dtype::StructFields::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::patches::Patches::cast_values(self, values_dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult -impl core::marker::StructuralPartialEq for vortex_array::dtype::StructFields +pub fn vortex_array::patches::Patches::chunk_offset_at(&self, idx: usize) -> vortex_error::VortexResult -impl vortex_array::dtype::arrow::FromArrowType<&arrow_schema::fields::Fields> for vortex_array::dtype::StructFields +pub fn vortex_array::patches::Patches::chunk_offsets(&self) -> &core::option::Option -pub fn vortex_array::dtype::StructFields::from_arrow(value: &arrow_schema::fields::Fields) -> Self +pub fn vortex_array::patches::Patches::dtype(&self) -> &vortex_array::dtype::DType -impl core::iter::traits::collect::FromIterator<(T, V)> for vortex_array::dtype::StructFields where T: core::convert::Into, V: core::convert::Into +pub fn vortex_array::patches::Patches::filter(&self, mask: &vortex_mask::Mask, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::StructFields::from_iter>(iter: I) -> Self +pub fn vortex_array::patches::Patches::get_patched(&self, index: usize) -> vortex_error::VortexResult> -#[repr(transparent)] pub struct vortex_array::dtype::i256(_) +pub fn vortex_array::patches::Patches::indices(&self) -> &vortex_array::ArrayRef -impl vortex_array::dtype::i256 +pub fn vortex_array::patches::Patches::indices_mut(&mut self) -> &mut vortex_array::ArrayRef -pub const vortex_array::dtype::i256::MAX: Self +pub fn vortex_array::patches::Patches::indices_ptype(&self) -> vortex_error::VortexResult -pub const vortex_array::dtype::i256::MIN: Self +pub fn vortex_array::patches::Patches::into_indices(self) -> vortex_array::ArrayRef -pub const vortex_array::dtype::i256::ONE: Self +pub fn vortex_array::patches::Patches::into_values(self) -> vortex_array::ArrayRef -pub const vortex_array::dtype::i256::ZERO: Self +pub fn vortex_array::patches::Patches::map_values(self, f: F) -> vortex_error::VortexResult where F: core::ops::function::FnOnce(vortex_array::ArrayRef) -> vortex_error::VortexResult -pub fn vortex_array::dtype::i256::checked_pow(&self, exp: u32) -> core::option::Option +pub fn vortex_array::patches::Patches::mask(&self, mask: &vortex_mask::Mask, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub const fn vortex_array::dtype::i256::from_i128(i: i128) -> Self +pub fn vortex_array::patches::Patches::max_index(&self) -> vortex_error::VortexResult -pub const fn vortex_array::dtype::i256::from_le_bytes(bytes: [u8; 32]) -> Self +pub fn vortex_array::patches::Patches::min_index(&self) -> vortex_error::VortexResult -pub const fn vortex_array::dtype::i256::from_parts(lower: u128, upper: i128) -> Self +pub fn vortex_array::patches::Patches::new(array_len: usize, offset: usize, indices: vortex_array::ArrayRef, values: vortex_array::ArrayRef, chunk_offsets: core::option::Option) -> vortex_error::VortexResult -pub const fn vortex_array::dtype::i256::into_parts(self) -> (u128, i128) +pub unsafe fn vortex_array::patches::Patches::new_unchecked(array_len: usize, offset: usize, indices: vortex_array::ArrayRef, values: vortex_array::ArrayRef, chunk_offsets: core::option::Option, offset_within_chunk: core::option::Option) -> Self -pub fn vortex_array::dtype::i256::maybe_i128(self) -> core::option::Option +pub fn vortex_array::patches::Patches::num_patches(&self) -> usize -pub const fn vortex_array::dtype::i256::to_be_bytes(&self) -> [u8; 32] +pub fn vortex_array::patches::Patches::offset(&self) -> usize -pub const fn vortex_array::dtype::i256::to_le_bytes(&self) -> [u8; 32] +pub fn vortex_array::patches::Patches::offset_within_chunk(&self) -> core::option::Option -pub const fn vortex_array::dtype::i256::to_parts(&self) -> (u128, i128) +pub fn vortex_array::patches::Patches::search_index(&self, index: usize) -> vortex_error::VortexResult -pub fn vortex_array::dtype::i256::wrapping_add(&self, other: Self) -> Self +pub fn vortex_array::patches::Patches::slice(&self, range: core::ops::range::Range) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::i256::wrapping_pow(&self, exp: u32) -> Self +pub fn vortex_array::patches::Patches::take(&self, take_indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl core::clone::Clone for vortex_array::dtype::i256 +pub fn vortex_array::patches::Patches::take_map(&self, take_indices: vortex_array::arrays::PrimitiveArray, include_nulls: bool, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::i256::clone(&self) -> vortex_array::dtype::i256 +pub fn vortex_array::patches::Patches::take_search(&self, take_indices: vortex_array::arrays::PrimitiveArray, include_nulls: bool, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl core::cmp::Eq for vortex_array::dtype::i256 +pub fn vortex_array::patches::Patches::take_with_nulls(&self, take_indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl core::cmp::Ord for vortex_array::dtype::i256 +pub fn vortex_array::patches::Patches::to_metadata(&self, len: usize, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult -pub fn vortex_array::dtype::i256::cmp(&self, other: &vortex_array::dtype::i256) -> core::cmp::Ordering +pub fn vortex_array::patches::Patches::values(&self) -> &vortex_array::ArrayRef -impl core::cmp::PartialEq for vortex_array::dtype::i256 +pub fn vortex_array::patches::Patches::values_mut(&mut self) -> &mut vortex_array::ArrayRef -pub fn vortex_array::dtype::i256::eq(&self, other: &vortex_array::dtype::i256) -> bool +impl core::clone::Clone for vortex_array::patches::Patches -impl core::cmp::PartialOrd for vortex_array::dtype::i256 +pub fn vortex_array::patches::Patches::clone(&self) -> vortex_array::patches::Patches -pub fn vortex_array::dtype::i256::partial_cmp(&self, other: &vortex_array::dtype::i256) -> core::option::Option +impl core::fmt::Debug for vortex_array::patches::Patches -impl core::convert::From for vortex_array::dtype::i256 +pub fn vortex_array::patches::Patches::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::dtype::i256::from(i: arrow_buffer::bigint::i256) -> Self +impl vortex_array::ArrayEq for vortex_array::patches::Patches -impl core::convert::From for arrow_buffer::bigint::i256 +pub fn vortex_array::patches::Patches::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool -pub fn arrow_buffer::bigint::i256::from(i: vortex_array::dtype::i256) -> Self +impl vortex_array::ArrayHash for vortex_array::patches::Patches -impl core::convert::From for vortex_array::scalar::DecimalValue +pub fn vortex_array::patches::Patches::array_hash(&self, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::scalar::DecimalValue::from(value: vortex_array::dtype::i256) -> Self +pub struct vortex_array::patches::PatchesMetadata -impl core::convert::TryFrom> for vortex_array::dtype::i256 +impl vortex_array::patches::PatchesMetadata -pub type vortex_array::dtype::i256::Error = vortex_error::VortexError +pub fn vortex_array::patches::PatchesMetadata::chunk_offsets_dtype(&self) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::i256::try_from(value: vortex_array::scalar::DecimalScalar<'_>) -> core::result::Result +pub fn vortex_array::patches::PatchesMetadata::indices_dtype(&self) -> vortex_error::VortexResult -impl core::default::Default for vortex_array::dtype::i256 +pub fn vortex_array::patches::PatchesMetadata::is_empty(&self) -> bool -pub fn vortex_array::dtype::i256::default() -> vortex_array::dtype::i256 +pub fn vortex_array::patches::PatchesMetadata::len(&self) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::dtype::i256 +pub fn vortex_array::patches::PatchesMetadata::new(len: usize, offset: usize, indices_ptype: vortex_array::dtype::PType, chunk_offsets_len: core::option::Option, chunk_offsets_ptype: core::option::Option, offset_within_chunk: core::option::Option) -> Self -pub fn vortex_array::dtype::i256::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::patches::PatchesMetadata::offset(&self) -> vortex_error::VortexResult -impl core::fmt::Display for vortex_array::dtype::i256 +impl vortex_array::patches::PatchesMetadata -pub fn vortex_array::dtype::i256::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::patches::PatchesMetadata::chunk_offsets_len(&self) -> u64 -impl core::hash::Hash for vortex_array::dtype::i256 +pub fn vortex_array::patches::PatchesMetadata::chunk_offsets_ptype(&self) -> vortex_array::dtype::PType -pub fn vortex_array::dtype::i256::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::patches::PatchesMetadata::indices_ptype(&self) -> vortex_array::dtype::PType -impl core::marker::Copy for vortex_array::dtype::i256 +pub fn vortex_array::patches::PatchesMetadata::offset_within_chunk(&self) -> u64 -impl core::marker::StructuralPartialEq for vortex_array::dtype::i256 +pub fn vortex_array::patches::PatchesMetadata::set_chunk_offsets_ptype(&mut self, value: vortex_array::dtype::PType) -impl core::ops::arith::Add for vortex_array::dtype::i256 +pub fn vortex_array::patches::PatchesMetadata::set_indices_ptype(&mut self, value: vortex_array::dtype::PType) -pub type vortex_array::dtype::i256::Output = vortex_array::dtype::i256 +impl core::clone::Clone for vortex_array::patches::PatchesMetadata -pub fn vortex_array::dtype::i256::add(self, rhs: Self) -> Self::Output +pub fn vortex_array::patches::PatchesMetadata::clone(&self) -> vortex_array::patches::PatchesMetadata -impl core::ops::arith::AddAssign for vortex_array::dtype::i256 +impl core::default::Default for vortex_array::patches::PatchesMetadata -pub fn vortex_array::dtype::i256::add_assign(&mut self, rhs: Self) +pub fn vortex_array::patches::PatchesMetadata::default() -> Self -impl core::ops::arith::Div for vortex_array::dtype::i256 +impl core::fmt::Debug for vortex_array::patches::PatchesMetadata -pub type vortex_array::dtype::i256::Output = vortex_array::dtype::i256 +pub fn vortex_array::patches::PatchesMetadata::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::dtype::i256::div(self, rhs: Self) -> Self::Output +impl core::marker::Copy for vortex_array::patches::PatchesMetadata -impl core::ops::arith::Mul for vortex_array::dtype::i256 +impl prost::message::Message for vortex_array::patches::PatchesMetadata -pub type vortex_array::dtype::i256::Output = vortex_array::dtype::i256 +pub fn vortex_array::patches::PatchesMetadata::clear(&mut self) -pub fn vortex_array::dtype::i256::mul(self, rhs: Self) -> Self::Output +pub fn vortex_array::patches::PatchesMetadata::encoded_len(&self) -> usize -impl core::ops::arith::Neg for vortex_array::dtype::i256 +pub const vortex_array::patches::PATCH_CHUNK_SIZE: usize -pub type vortex_array::dtype::i256::Output = vortex_array::dtype::i256 +pub mod vortex_array::scalar -pub fn vortex_array::dtype::i256::neg(self) -> Self::Output +pub enum vortex_array::scalar::DecimalValue -impl core::ops::arith::Rem for vortex_array::dtype::i256 +pub vortex_array::scalar::DecimalValue::I128(i128) -pub type vortex_array::dtype::i256::Output = vortex_array::dtype::i256 +pub vortex_array::scalar::DecimalValue::I16(i16) -pub fn vortex_array::dtype::i256::rem(self, rhs: Self) -> Self::Output +pub vortex_array::scalar::DecimalValue::I256(vortex_array::dtype::i256) -impl core::ops::arith::Sub for vortex_array::dtype::i256 +pub vortex_array::scalar::DecimalValue::I32(i32) -pub type vortex_array::dtype::i256::Output = vortex_array::dtype::i256 +pub vortex_array::scalar::DecimalValue::I64(i64) -pub fn vortex_array::dtype::i256::sub(self, rhs: Self) -> Self::Output +pub vortex_array::scalar::DecimalValue::I8(i8) -impl core::ops::bit::BitOr for vortex_array::dtype::i256 +impl vortex_array::scalar::DecimalValue -pub type vortex_array::dtype::i256::Output = vortex_array::dtype::i256 +pub fn vortex_array::scalar::DecimalValue::cast(&self) -> core::option::Option -pub fn vortex_array::dtype::i256::bitor(self, rhs: Self) -> Self::Output +pub fn vortex_array::scalar::DecimalValue::checked_add(&self, other: &Self) -> core::option::Option -impl core::ops::bit::Shl for vortex_array::dtype::i256 +pub fn vortex_array::scalar::DecimalValue::checked_div(&self, other: &Self) -> core::option::Option -pub type vortex_array::dtype::i256::Output = vortex_array::dtype::i256 +pub fn vortex_array::scalar::DecimalValue::checked_mul(&self, other: &Self) -> core::option::Option -pub fn vortex_array::dtype::i256::shl(self, rhs: usize) -> Self::Output +pub fn vortex_array::scalar::DecimalValue::checked_sub(&self, other: &Self) -> core::option::Option -impl core::ops::bit::Shr for vortex_array::dtype::i256 +pub fn vortex_array::scalar::DecimalValue::decimal_dtype(&self) -> vortex_array::dtype::DecimalDType -pub type vortex_array::dtype::i256::Output = vortex_array::dtype::i256 +pub fn vortex_array::scalar::DecimalValue::decimal_type(&self) -> vortex_array::dtype::DecimalType -pub fn vortex_array::dtype::i256::shr(self, rhs: Self) -> Self::Output +pub fn vortex_array::scalar::DecimalValue::fits_in_precision(&self, decimal_type: vortex_array::dtype::DecimalDType) -> bool -impl num_traits::cast::AsPrimitive for vortex_array::dtype::i256 +pub fn vortex_array::scalar::DecimalValue::is_zero(&self) -> bool -pub fn vortex_array::dtype::i256::as_(self) -> i128 +pub fn vortex_array::scalar::DecimalValue::zero(decimal_type: &vortex_array::dtype::DecimalDType) -> Self -impl num_traits::cast::AsPrimitive for vortex_array::dtype::i256 +impl core::clone::Clone for vortex_array::scalar::DecimalValue -pub fn vortex_array::dtype::i256::as_(self) -> i16 +pub fn vortex_array::scalar::DecimalValue::clone(&self) -> vortex_array::scalar::DecimalValue -impl num_traits::cast::AsPrimitive for vortex_array::dtype::i256 +impl core::cmp::Eq for vortex_array::scalar::DecimalValue -pub fn vortex_array::dtype::i256::as_(self) -> i32 +impl core::cmp::PartialEq for vortex_array::scalar::DecimalValue -impl num_traits::cast::AsPrimitive for vortex_array::dtype::i256 +pub fn vortex_array::scalar::DecimalValue::eq(&self, other: &Self) -> bool -pub fn vortex_array::dtype::i256::as_(self) -> i64 +impl core::cmp::PartialOrd for vortex_array::scalar::DecimalValue -impl num_traits::cast::AsPrimitive for vortex_array::dtype::i256 +pub fn vortex_array::scalar::DecimalValue::partial_cmp(&self, other: &Self) -> core::option::Option -pub fn vortex_array::dtype::i256::as_(self) -> i8 +impl core::convert::From for vortex_array::scalar::DecimalValue -impl num_traits::cast::AsPrimitive for bool +pub fn vortex_array::scalar::DecimalValue::from(value: i128) -> Self -pub fn bool::as_(self) -> vortex_array::dtype::i256 +impl core::convert::From for vortex_array::scalar::DecimalValue -impl num_traits::cast::AsPrimitive for i128 +pub fn vortex_array::scalar::DecimalValue::from(value: i16) -> Self -pub fn i128::as_(self) -> vortex_array::dtype::i256 +impl core::convert::From for vortex_array::scalar::DecimalValue -impl num_traits::cast::AsPrimitive for i16 +pub fn vortex_array::scalar::DecimalValue::from(value: i32) -> Self -pub fn i16::as_(self) -> vortex_array::dtype::i256 +impl core::convert::From for vortex_array::scalar::DecimalValue -impl num_traits::cast::AsPrimitive for i32 +pub fn vortex_array::scalar::DecimalValue::from(value: i64) -> Self -pub fn i32::as_(self) -> vortex_array::dtype::i256 +impl core::convert::From for vortex_array::scalar::DecimalValue -impl num_traits::cast::AsPrimitive for i64 +pub fn vortex_array::scalar::DecimalValue::from(value: i8) -> Self -pub fn i64::as_(self) -> vortex_array::dtype::i256 +impl core::convert::From for vortex_array::scalar::DecimalValue -impl num_traits::cast::AsPrimitive for i8 +pub fn vortex_array::scalar::DecimalValue::from(value: u16) -> Self -pub fn i8::as_(self) -> vortex_array::dtype::i256 +impl core::convert::From for vortex_array::scalar::DecimalValue -impl num_traits::cast::AsPrimitive for vortex_array::dtype::i256 +pub fn vortex_array::scalar::DecimalValue::from(value: u32) -> Self -pub fn vortex_array::dtype::i256::as_(self) -> vortex_array::dtype::i256 +impl core::convert::From for vortex_array::scalar::DecimalValue -impl num_traits::cast::ToPrimitive for vortex_array::dtype::i256 +pub fn vortex_array::scalar::DecimalValue::from(value: u64) -> Self -pub fn vortex_array::dtype::i256::to_i128(&self) -> core::option::Option +impl core::convert::From for vortex_array::scalar::DecimalValue -pub fn vortex_array::dtype::i256::to_i64(&self) -> core::option::Option +pub fn vortex_array::scalar::DecimalValue::from(value: u8) -> Self -pub fn vortex_array::dtype::i256::to_u128(&self) -> core::option::Option +impl core::convert::From for vortex_array::scalar::DecimalValue -pub fn vortex_array::dtype::i256::to_u64(&self) -> core::option::Option +pub fn vortex_array::scalar::DecimalValue::from(value: vortex_array::dtype::i256) -> Self -impl num_traits::identities::ConstZero for vortex_array::dtype::i256 +impl core::convert::From for vortex_array::scalar::Scalar -pub const vortex_array::dtype::i256::ZERO: Self +pub fn vortex_array::scalar::Scalar::from(value: vortex_array::scalar::DecimalValue) -> Self -impl num_traits::identities::One for vortex_array::dtype::i256 +impl core::convert::From for vortex_array::scalar::ScalarValue -pub fn vortex_array::dtype::i256::one() -> Self +pub fn vortex_array::scalar::ScalarValue::from(value: vortex_array::scalar::DecimalValue) -> Self -impl num_traits::identities::Zero for vortex_array::dtype::i256 +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for vortex_array::scalar::DecimalValue -pub fn vortex_array::dtype::i256::is_zero(&self) -> bool +pub type vortex_array::scalar::DecimalValue::Error = vortex_error::VortexError -pub fn vortex_array::dtype::i256::zero() -> Self +pub fn vortex_array::scalar::DecimalValue::try_from(scalar: &vortex_array::scalar::Scalar) -> core::result::Result -impl num_traits::ops::checked::CheckedAdd for vortex_array::dtype::i256 +impl core::convert::TryFrom for vortex_array::scalar::DecimalValue -pub fn vortex_array::dtype::i256::checked_add(&self, v: &Self) -> core::option::Option +pub type vortex_array::scalar::DecimalValue::Error = vortex_error::VortexError -impl num_traits::ops::checked::CheckedDiv for vortex_array::dtype::i256 +pub fn vortex_array::scalar::DecimalValue::try_from(scalar: vortex_array::scalar::Scalar) -> core::result::Result -pub fn vortex_array::dtype::i256::checked_div(&self, v: &Self) -> core::option::Option +impl core::fmt::Debug for vortex_array::scalar::DecimalValue -impl num_traits::ops::checked::CheckedMul for vortex_array::dtype::i256 +pub fn vortex_array::scalar::DecimalValue::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::dtype::i256::checked_mul(&self, v: &Self) -> core::option::Option +impl core::fmt::Display for vortex_array::scalar::DecimalValue -impl num_traits::ops::checked::CheckedSub for vortex_array::dtype::i256 +pub fn vortex_array::scalar::DecimalValue::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::dtype::i256::checked_sub(&self, v: &Self) -> core::option::Option +impl core::hash::Hash for vortex_array::scalar::DecimalValue -impl num_traits::ops::wrapping::WrappingAdd for vortex_array::dtype::i256 +pub fn vortex_array::scalar::DecimalValue::hash(&self, state: &mut H) -pub fn vortex_array::dtype::i256::wrapping_add(&self, v: &Self) -> Self +impl core::marker::Copy for vortex_array::scalar::DecimalValue -impl num_traits::ops::wrapping::WrappingSub for vortex_array::dtype::i256 +pub enum vortex_array::scalar::NumericOperator -pub fn vortex_array::dtype::i256::wrapping_sub(&self, v: &Self) -> Self +pub vortex_array::scalar::NumericOperator::Add -impl vortex_array::dtype::BigCast for vortex_array::dtype::i256 +pub vortex_array::scalar::NumericOperator::Div -pub fn vortex_array::dtype::i256::from(n: T) -> core::option::Option +pub vortex_array::scalar::NumericOperator::Mul -impl vortex_array::dtype::NativeDecimalType for vortex_array::dtype::i256 +pub vortex_array::scalar::NumericOperator::Sub -pub const vortex_array::dtype::i256::DECIMAL_TYPE: vortex_array::dtype::DecimalType +impl core::clone::Clone for vortex_array::scalar::NumericOperator -pub const vortex_array::dtype::i256::MAX_BY_PRECISION: &'static [Self] +pub fn vortex_array::scalar::NumericOperator::clone(&self) -> vortex_array::scalar::NumericOperator -pub const vortex_array::dtype::i256::MAX_PRECISION: u8 +impl core::cmp::Eq for vortex_array::scalar::NumericOperator -pub const vortex_array::dtype::i256::MAX_SCALE: i8 +impl core::cmp::PartialEq for vortex_array::scalar::NumericOperator -pub const vortex_array::dtype::i256::MIN_BY_PRECISION: &'static [Self] +pub fn vortex_array::scalar::NumericOperator::eq(&self, other: &vortex_array::scalar::NumericOperator) -> bool -pub fn vortex_array::dtype::i256::downcast(visitor: V) -> ::Output +impl core::convert::From for vortex_array::scalar_fn::fns::operators::Operator -pub fn vortex_array::dtype::i256::upcast(input: ::Input) -> V +pub fn vortex_array::scalar_fn::fns::operators::Operator::from(op: vortex_array::scalar::NumericOperator) -> Self -impl vortex_array::dtype::ToI256 for vortex_array::dtype::i256 +impl core::fmt::Debug for vortex_array::scalar::NumericOperator -pub fn vortex_array::dtype::i256::to_i256(&self) -> core::option::Option +pub fn vortex_array::scalar::NumericOperator::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub const vortex_array::dtype::MAX_PRECISION: u8 +impl core::fmt::Display for vortex_array::scalar::NumericOperator -pub const vortex_array::dtype::MAX_SCALE: i8 +pub fn vortex_array::scalar::NumericOperator::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub trait vortex_array::dtype::BigCast: core::marker::Sized + num_traits::cast::ToPrimitive + vortex_array::dtype::ToI256 +impl core::marker::Copy for vortex_array::scalar::NumericOperator -pub fn vortex_array::dtype::BigCast::from(n: T) -> core::option::Option +impl core::marker::StructuralPartialEq for vortex_array::scalar::NumericOperator -impl vortex_array::dtype::BigCast for i128 +pub enum vortex_array::scalar::PValue -pub fn i128::from(n: T) -> core::option::Option +pub vortex_array::scalar::PValue::F16(half::binary16::f16) -impl vortex_array::dtype::BigCast for i16 +pub vortex_array::scalar::PValue::F32(f32) -pub fn i16::from(n: T) -> core::option::Option +pub vortex_array::scalar::PValue::F64(f64) -impl vortex_array::dtype::BigCast for i32 +pub vortex_array::scalar::PValue::I16(i16) -pub fn i32::from(n: T) -> core::option::Option +pub vortex_array::scalar::PValue::I32(i32) -impl vortex_array::dtype::BigCast for i64 +pub vortex_array::scalar::PValue::I64(i64) -pub fn i64::from(n: T) -> core::option::Option +pub vortex_array::scalar::PValue::I8(i8) -impl vortex_array::dtype::BigCast for i8 +pub vortex_array::scalar::PValue::U16(u16) -pub fn i8::from(n: T) -> core::option::Option +pub vortex_array::scalar::PValue::U32(u32) -impl vortex_array::dtype::BigCast for u128 +pub vortex_array::scalar::PValue::U64(u64) -pub fn u128::from(n: T) -> core::option::Option +pub vortex_array::scalar::PValue::U8(u8) -impl vortex_array::dtype::BigCast for u16 +impl vortex_array::scalar::PValue -pub fn u16::from(n: T) -> core::option::Option +pub fn vortex_array::scalar::PValue::as_f16(self) -> core::option::Option -impl vortex_array::dtype::BigCast for u32 +pub fn vortex_array::scalar::PValue::as_f32(self) -> core::option::Option -pub fn u32::from(n: T) -> core::option::Option +pub fn vortex_array::scalar::PValue::as_f64(self) -> core::option::Option -impl vortex_array::dtype::BigCast for u64 +pub fn vortex_array::scalar::PValue::as_i16(self) -> core::option::Option -pub fn u64::from(n: T) -> core::option::Option +pub fn vortex_array::scalar::PValue::as_i32(self) -> core::option::Option -impl vortex_array::dtype::BigCast for u8 +pub fn vortex_array::scalar::PValue::as_i64(self) -> core::option::Option -pub fn u8::from(n: T) -> core::option::Option +pub fn vortex_array::scalar::PValue::as_i8(self) -> core::option::Option -impl vortex_array::dtype::BigCast for vortex_array::dtype::i256 +pub fn vortex_array::scalar::PValue::as_u16(self) -> core::option::Option -pub fn vortex_array::dtype::i256::from(n: T) -> core::option::Option +pub fn vortex_array::scalar::PValue::as_u32(self) -> core::option::Option -pub trait vortex_array::dtype::DecimalTypeDowncast +pub fn vortex_array::scalar::PValue::as_u64(self) -> core::option::Option -pub type vortex_array::dtype::DecimalTypeDowncast::Output +pub fn vortex_array::scalar::PValue::as_u8(self) -> core::option::Option -pub fn vortex_array::dtype::DecimalTypeDowncast::into_i128(self) -> Self::Output +pub fn vortex_array::scalar::PValue::cast(&self) -> vortex_error::VortexResult -pub fn vortex_array::dtype::DecimalTypeDowncast::into_i16(self) -> Self::Output +pub fn vortex_array::scalar::PValue::is_instance_of(&self, ptype: &vortex_array::dtype::PType) -> bool -pub fn vortex_array::dtype::DecimalTypeDowncast::into_i256(self) -> Self::Output +pub fn vortex_array::scalar::PValue::is_nan(&self) -> bool -pub fn vortex_array::dtype::DecimalTypeDowncast::into_i32(self) -> Self::Output +pub fn vortex_array::scalar::PValue::is_zero(&self) -> bool -pub fn vortex_array::dtype::DecimalTypeDowncast::into_i64(self) -> Self::Output +pub fn vortex_array::scalar::PValue::ptype(&self) -> vortex_array::dtype::PType -pub fn vortex_array::dtype::DecimalTypeDowncast::into_i8(self) -> Self::Output +pub fn vortex_array::scalar::PValue::reinterpret_cast(&self, ptype: vortex_array::dtype::PType) -> Self -pub trait vortex_array::dtype::DecimalTypeUpcast +pub fn vortex_array::scalar::PValue::zero(ptype: &vortex_array::dtype::PType) -> vortex_array::scalar::PValue -pub type vortex_array::dtype::DecimalTypeUpcast::Input +impl core::clone::Clone for vortex_array::scalar::PValue -pub fn vortex_array::dtype::DecimalTypeUpcast::from_i128(input: Self::Input) -> Self +pub fn vortex_array::scalar::PValue::clone(&self) -> vortex_array::scalar::PValue -pub fn vortex_array::dtype::DecimalTypeUpcast::from_i16(input: Self::Input) -> Self +impl core::cmp::Eq for vortex_array::scalar::PValue -pub fn vortex_array::dtype::DecimalTypeUpcast::from_i256(input: Self::Input) -> Self +impl core::cmp::PartialEq for vortex_array::scalar::PValue -pub fn vortex_array::dtype::DecimalTypeUpcast::from_i32(input: Self::Input) -> Self +pub fn vortex_array::scalar::PValue::eq(&self, other: &Self) -> bool -pub fn vortex_array::dtype::DecimalTypeUpcast::from_i64(input: Self::Input) -> Self +impl core::cmp::PartialOrd for vortex_array::scalar::PValue -pub fn vortex_array::dtype::DecimalTypeUpcast::from_i8(input: Self::Input) -> Self +pub fn vortex_array::scalar::PValue::partial_cmp(&self, other: &Self) -> core::option::Option -pub trait vortex_array::dtype::FromPrimitiveOrF16: num_traits::cast::FromPrimitive +impl core::convert::From<&vortex_array::scalar::PValue> for vortex_proto::scalar::ScalarValue -pub fn vortex_array::dtype::FromPrimitiveOrF16::from_f16(v: half::binary16::f16) -> core::option::Option +pub fn vortex_proto::scalar::ScalarValue::from(value: &vortex_array::scalar::PValue) -> Self -impl vortex_array::dtype::FromPrimitiveOrF16 for f32 +impl core::convert::From for vortex_array::scalar::PValue -pub fn f32::from_f16(v: half::binary16::f16) -> core::option::Option +pub fn vortex_array::scalar::PValue::from(value: f32) -> Self -impl vortex_array::dtype::FromPrimitiveOrF16 for f64 +impl core::convert::From for vortex_array::scalar::PValue -pub fn f64::from_f16(v: half::binary16::f16) -> core::option::Option +pub fn vortex_array::scalar::PValue::from(value: f64) -> Self -impl vortex_array::dtype::FromPrimitiveOrF16 for half::binary16::f16 +impl core::convert::From for vortex_array::scalar::PValue -pub fn half::binary16::f16::from_f16(v: half::binary16::f16) -> core::option::Option +pub fn vortex_array::scalar::PValue::from(value: half::binary16::f16) -> Self -impl vortex_array::dtype::FromPrimitiveOrF16 for i16 +impl core::convert::From for vortex_array::scalar::PValue -pub fn i16::from_f16(_: half::binary16::f16) -> core::option::Option +pub fn vortex_array::scalar::PValue::from(value: i16) -> Self -impl vortex_array::dtype::FromPrimitiveOrF16 for i32 +impl core::convert::From for vortex_array::scalar::PValue -pub fn i32::from_f16(_: half::binary16::f16) -> core::option::Option +pub fn vortex_array::scalar::PValue::from(value: i32) -> Self -impl vortex_array::dtype::FromPrimitiveOrF16 for i64 +impl core::convert::From for vortex_array::scalar::PValue -pub fn i64::from_f16(_: half::binary16::f16) -> core::option::Option +pub fn vortex_array::scalar::PValue::from(value: i64) -> Self -impl vortex_array::dtype::FromPrimitiveOrF16 for i8 +impl core::convert::From for vortex_array::scalar::PValue -pub fn i8::from_f16(_: half::binary16::f16) -> core::option::Option +pub fn vortex_array::scalar::PValue::from(value: i8) -> Self -impl vortex_array::dtype::FromPrimitiveOrF16 for u16 +impl core::convert::From for vortex_array::scalar::PValue -pub fn u16::from_f16(value: half::binary16::f16) -> core::option::Option +pub fn vortex_array::scalar::PValue::from(value: u16) -> Self -impl vortex_array::dtype::FromPrimitiveOrF16 for u32 +impl core::convert::From for vortex_array::scalar::PValue -pub fn u32::from_f16(value: half::binary16::f16) -> core::option::Option +pub fn vortex_array::scalar::PValue::from(value: u32) -> Self -impl vortex_array::dtype::FromPrimitiveOrF16 for u64 +impl core::convert::From for vortex_array::scalar::PValue -pub fn u64::from_f16(value: half::binary16::f16) -> core::option::Option +pub fn vortex_array::scalar::PValue::from(value: u64) -> Self -impl vortex_array::dtype::FromPrimitiveOrF16 for u8 +impl core::convert::From for vortex_array::scalar::PValue -pub fn u8::from_f16(value: half::binary16::f16) -> core::option::Option +pub fn vortex_array::scalar::PValue::from(value: u8) -> Self -impl vortex_array::dtype::FromPrimitiveOrF16 for usize +impl core::convert::From for vortex_array::scalar::PValue -pub fn usize::from_f16(value: half::binary16::f16) -> core::option::Option +pub fn vortex_array::scalar::PValue::from(value: usize) -> vortex_array::scalar::PValue -pub trait vortex_array::dtype::IntegerPType: vortex_array::dtype::NativePType + num_traits::int::PrimInt + num_traits::cast::ToPrimitive + num_traits::bounds::Bounded + core::ops::arith::AddAssign + num_traits::cast::AsPrimitive +impl core::convert::From for vortex_array::scalar::ScalarValue -pub fn vortex_array::dtype::IntegerPType::max_value_as_u64() -> u64 +pub fn vortex_array::scalar::ScalarValue::from(value: vortex_array::scalar::PValue) -> Self -impl vortex_array::dtype::IntegerPType for T where T: vortex_array::dtype::NativePType + num_traits::int::PrimInt + num_traits::cast::ToPrimitive + num_traits::bounds::Bounded + core::ops::arith::AddAssign + num_traits::cast::AsPrimitive +impl core::convert::TryFrom for f32 -pub fn T::max_value_as_u64() -> u64 +pub type f32::Error = vortex_error::VortexError -pub trait vortex_array::dtype::NativeDType +pub fn f32::try_from(value: vortex_array::scalar::PValue) -> core::result::Result -pub fn vortex_array::dtype::NativeDType::dtype() -> vortex_array::dtype::DType +impl core::convert::TryFrom for f64 -impl vortex_array::dtype::NativeDType for &[u8] +pub type f64::Error = vortex_error::VortexError -pub fn &[u8]::dtype() -> vortex_array::dtype::DType +pub fn f64::try_from(value: vortex_array::scalar::PValue) -> core::result::Result -impl vortex_array::dtype::NativeDType for &str +impl core::convert::TryFrom for half::binary16::f16 -pub fn &str::dtype() -> vortex_array::dtype::DType +pub type half::binary16::f16::Error = vortex_error::VortexError -impl vortex_array::dtype::NativeDType for alloc::string::String +pub fn half::binary16::f16::try_from(value: vortex_array::scalar::PValue) -> core::result::Result -pub fn alloc::string::String::dtype() -> vortex_array::dtype::DType +impl core::convert::TryFrom for i16 -impl vortex_array::dtype::NativeDType for bool +pub type i16::Error = vortex_error::VortexError -pub fn bool::dtype() -> vortex_array::dtype::DType +pub fn i16::try_from(value: vortex_array::scalar::PValue) -> core::result::Result -impl vortex_array::dtype::NativeDType for f32 +impl core::convert::TryFrom for i32 -pub fn f32::dtype() -> vortex_array::dtype::DType +pub type i32::Error = vortex_error::VortexError -impl vortex_array::dtype::NativeDType for f64 +pub fn i32::try_from(value: vortex_array::scalar::PValue) -> core::result::Result -pub fn f64::dtype() -> vortex_array::dtype::DType +impl core::convert::TryFrom for i64 -impl vortex_array::dtype::NativeDType for half::binary16::f16 +pub type i64::Error = vortex_error::VortexError -pub fn half::binary16::f16::dtype() -> vortex_array::dtype::DType +pub fn i64::try_from(value: vortex_array::scalar::PValue) -> core::result::Result -impl vortex_array::dtype::NativeDType for i16 +impl core::convert::TryFrom for i8 -pub fn i16::dtype() -> vortex_array::dtype::DType +pub type i8::Error = vortex_error::VortexError -impl vortex_array::dtype::NativeDType for i32 +pub fn i8::try_from(value: vortex_array::scalar::PValue) -> core::result::Result -pub fn i32::dtype() -> vortex_array::dtype::DType +impl core::convert::TryFrom for u16 -impl vortex_array::dtype::NativeDType for i64 +pub type u16::Error = vortex_error::VortexError -pub fn i64::dtype() -> vortex_array::dtype::DType +pub fn u16::try_from(value: vortex_array::scalar::PValue) -> core::result::Result -impl vortex_array::dtype::NativeDType for i8 +impl core::convert::TryFrom for u32 -pub fn i8::dtype() -> vortex_array::dtype::DType +pub type u32::Error = vortex_error::VortexError -impl vortex_array::dtype::NativeDType for u16 +pub fn u32::try_from(value: vortex_array::scalar::PValue) -> core::result::Result -pub fn u16::dtype() -> vortex_array::dtype::DType +impl core::convert::TryFrom for u64 -impl vortex_array::dtype::NativeDType for u32 +pub type u64::Error = vortex_error::VortexError -pub fn u32::dtype() -> vortex_array::dtype::DType +pub fn u64::try_from(value: vortex_array::scalar::PValue) -> core::result::Result -impl vortex_array::dtype::NativeDType for u64 +impl core::convert::TryFrom for u8 -pub fn u64::dtype() -> vortex_array::dtype::DType +pub type u8::Error = vortex_error::VortexError -impl vortex_array::dtype::NativeDType for u8 +pub fn u8::try_from(value: vortex_array::scalar::PValue) -> core::result::Result -pub fn u8::dtype() -> vortex_array::dtype::DType +impl core::convert::TryFrom for usize -impl vortex_array::dtype::NativeDType for vortex_buffer::ByteBuffer +pub type usize::Error = vortex_error::VortexError -pub fn vortex_buffer::ByteBuffer::dtype() -> vortex_array::dtype::DType +pub fn usize::try_from(value: vortex_array::scalar::PValue) -> core::result::Result -impl vortex_array::dtype::NativeDType for alloc::vec::Vec where T: vortex_array::dtype::NativeDType +impl core::fmt::Debug for vortex_array::scalar::PValue -pub fn alloc::vec::Vec::dtype() -> vortex_array::dtype::DType +pub fn vortex_array::scalar::PValue::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::dtype::NativeDType for core::option::Option where T: vortex_array::dtype::NativeDType +impl core::fmt::Display for vortex_array::scalar::PValue -pub fn core::option::Option::dtype() -> vortex_array::dtype::DType +pub fn vortex_array::scalar::PValue::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub trait vortex_array::dtype::NativeDecimalType: core::marker::Send + core::marker::Sync + core::clone::Clone + core::marker::Copy + core::fmt::Debug + core::fmt::Display + core::default::Default + core::panic::unwind_safe::RefUnwindSafe + core::cmp::Eq + core::cmp::Ord + vortex_array::dtype::BigCast + 'static +impl core::hash::Hash for vortex_array::scalar::PValue -pub const vortex_array::dtype::NativeDecimalType::DECIMAL_TYPE: vortex_array::dtype::DecimalType +pub fn vortex_array::scalar::PValue::hash(&self, state: &mut H) -pub const vortex_array::dtype::NativeDecimalType::MAX_BY_PRECISION: &'static [Self] +impl core::marker::Copy for vortex_array::scalar::PValue -pub const vortex_array::dtype::NativeDecimalType::MAX_PRECISION: u8 +impl vortex_array::dtype::ToBytes for vortex_array::scalar::PValue -pub const vortex_array::dtype::NativeDecimalType::MAX_SCALE: i8 +pub fn vortex_array::scalar::PValue::to_le_bytes(&self) -> &[u8] -pub const vortex_array::dtype::NativeDecimalType::MIN_BY_PRECISION: &'static [Self] +impl vortex_array::search_sorted::IndexOrd for vortex_array::variants::PrimitiveTyped<'_> -pub fn vortex_array::dtype::NativeDecimalType::downcast(visitor: V) -> ::Output +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_cmp(&self, idx: usize, elem: &vortex_array::scalar::PValue) -> vortex_error::VortexResult> -pub fn vortex_array::dtype::NativeDecimalType::upcast(input: ::Input) -> V +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_ge(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -impl vortex_array::dtype::NativeDecimalType for i128 +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_gt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub const i128::DECIMAL_TYPE: vortex_array::dtype::DecimalType +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_le(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub const i128::MAX_BY_PRECISION: &'static [Self] +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_len(&self) -> usize -pub const i128::MAX_PRECISION: u8 +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_lt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub const i128::MAX_SCALE: i8 +pub enum vortex_array::scalar::ScalarValue -pub const i128::MIN_BY_PRECISION: &'static [Self] +pub vortex_array::scalar::ScalarValue::Binary(vortex_buffer::ByteBuffer) -pub fn i128::downcast(visitor: V) -> ::Output +pub vortex_array::scalar::ScalarValue::Bool(bool) -pub fn i128::upcast(input: ::Input) -> V +pub vortex_array::scalar::ScalarValue::Decimal(vortex_array::scalar::DecimalValue) -impl vortex_array::dtype::NativeDecimalType for i16 +pub vortex_array::scalar::ScalarValue::List(alloc::vec::Vec>) -pub const i16::DECIMAL_TYPE: vortex_array::dtype::DecimalType +pub vortex_array::scalar::ScalarValue::Primitive(vortex_array::scalar::PValue) -pub const i16::MAX_BY_PRECISION: &'static [Self] +pub vortex_array::scalar::ScalarValue::Utf8(vortex_buffer::string::BufferString) -pub const i16::MAX_PRECISION: u8 +pub vortex_array::scalar::ScalarValue::Variant(alloc::boxed::Box) -pub const i16::MAX_SCALE: i8 +impl vortex_array::scalar::ScalarValue -pub const i16::MIN_BY_PRECISION: &'static [Self] +pub fn vortex_array::scalar::ScalarValue::as_binary(&self) -> &vortex_buffer::ByteBuffer -pub fn i16::downcast(visitor: V) -> ::Output +pub fn vortex_array::scalar::ScalarValue::as_bool(&self) -> bool -pub fn i16::upcast(input: ::Input) -> V +pub fn vortex_array::scalar::ScalarValue::as_decimal(&self) -> &vortex_array::scalar::DecimalValue -impl vortex_array::dtype::NativeDecimalType for i32 +pub fn vortex_array::scalar::ScalarValue::as_list(&self) -> &[core::option::Option] -pub const i32::DECIMAL_TYPE: vortex_array::dtype::DecimalType +pub fn vortex_array::scalar::ScalarValue::as_primitive(&self) -> &vortex_array::scalar::PValue -pub const i32::MAX_BY_PRECISION: &'static [Self] +pub fn vortex_array::scalar::ScalarValue::as_utf8(&self) -> &vortex_buffer::string::BufferString -pub const i32::MAX_PRECISION: u8 +pub fn vortex_array::scalar::ScalarValue::as_variant(&self) -> &vortex_array::scalar::Scalar -pub const i32::MAX_SCALE: i8 +pub fn vortex_array::scalar::ScalarValue::into_binary(self) -> vortex_buffer::ByteBuffer -pub const i32::MIN_BY_PRECISION: &'static [Self] +pub fn vortex_array::scalar::ScalarValue::into_bool(self) -> bool -pub fn i32::downcast(visitor: V) -> ::Output +pub fn vortex_array::scalar::ScalarValue::into_decimal(self) -> vortex_array::scalar::DecimalValue -pub fn i32::upcast(input: ::Input) -> V +pub fn vortex_array::scalar::ScalarValue::into_list(self) -> alloc::vec::Vec> -impl vortex_array::dtype::NativeDecimalType for i64 +pub fn vortex_array::scalar::ScalarValue::into_primitive(self) -> vortex_array::scalar::PValue -pub const i64::DECIMAL_TYPE: vortex_array::dtype::DecimalType +pub fn vortex_array::scalar::ScalarValue::into_utf8(self) -> vortex_buffer::string::BufferString -pub const i64::MAX_BY_PRECISION: &'static [Self] +pub fn vortex_array::scalar::ScalarValue::into_variant(self) -> vortex_array::scalar::Scalar -pub const i64::MAX_PRECISION: u8 +impl vortex_array::scalar::ScalarValue -pub const i64::MAX_SCALE: i8 +pub fn vortex_array::scalar::ScalarValue::from_proto(value: &vortex_proto::scalar::ScalarValue, dtype: &vortex_array::dtype::DType, session: &vortex_session::VortexSession) -> vortex_error::VortexResult> -pub const i64::MIN_BY_PRECISION: &'static [Self] +pub fn vortex_array::scalar::ScalarValue::from_proto_bytes(bytes: &[u8], dtype: &vortex_array::dtype::DType, session: &vortex_session::VortexSession) -> vortex_error::VortexResult> -pub fn i64::downcast(visitor: V) -> ::Output +impl vortex_array::scalar::ScalarValue -pub fn i64::upcast(input: ::Input) -> V +pub fn vortex_array::scalar::ScalarValue::to_proto(this: core::option::Option<&Self>) -> vortex_proto::scalar::ScalarValue -impl vortex_array::dtype::NativeDecimalType for i8 +pub fn vortex_array::scalar::ScalarValue::to_proto_bytes(value: core::option::Option<&vortex_array::scalar::ScalarValue>) -> B -pub const i8::DECIMAL_TYPE: vortex_array::dtype::DecimalType +impl core::clone::Clone for vortex_array::scalar::ScalarValue -pub const i8::MAX_BY_PRECISION: &'static [Self] +pub fn vortex_array::scalar::ScalarValue::clone(&self) -> vortex_array::scalar::ScalarValue -pub const i8::MAX_PRECISION: u8 +impl core::cmp::Eq for vortex_array::scalar::ScalarValue -pub const i8::MAX_SCALE: i8 +impl core::cmp::PartialEq for vortex_array::scalar::ScalarValue -pub const i8::MIN_BY_PRECISION: &'static [Self] +pub fn vortex_array::scalar::ScalarValue::eq(&self, other: &vortex_array::scalar::ScalarValue) -> bool -pub fn i8::downcast(visitor: V) -> ::Output +impl core::cmp::PartialOrd for vortex_array::scalar::ScalarValue -pub fn i8::upcast(input: ::Input) -> V +pub fn vortex_array::scalar::ScalarValue::partial_cmp(&self, other: &Self) -> core::option::Option -impl vortex_array::dtype::NativeDecimalType for vortex_array::dtype::i256 +impl core::convert::From<&[u8]> for vortex_array::scalar::ScalarValue -pub const vortex_array::dtype::i256::DECIMAL_TYPE: vortex_array::dtype::DecimalType +pub fn vortex_array::scalar::ScalarValue::from(value: &[u8]) -> Self -pub const vortex_array::dtype::i256::MAX_BY_PRECISION: &'static [Self] +impl core::convert::From<&str> for vortex_array::scalar::ScalarValue -pub const vortex_array::dtype::i256::MAX_PRECISION: u8 +pub fn vortex_array::scalar::ScalarValue::from(value: &str) -> Self -pub const vortex_array::dtype::i256::MAX_SCALE: i8 +impl core::convert::From<&vortex_array::scalar::ScalarValue> for vortex_proto::scalar::ScalarValue -pub const vortex_array::dtype::i256::MIN_BY_PRECISION: &'static [Self] +pub fn vortex_proto::scalar::ScalarValue::from(value: &vortex_array::scalar::ScalarValue) -> Self -pub fn vortex_array::dtype::i256::downcast(visitor: V) -> ::Output +impl core::convert::From for vortex_array::scalar::ScalarValue -pub fn vortex_array::dtype::i256::upcast(input: ::Input) -> V +pub fn vortex_array::scalar::ScalarValue::from(value: alloc::string::String) -> Self -pub trait vortex_array::dtype::NativePType: core::marker::Send + core::marker::Sync + core::clone::Clone + core::marker::Copy + core::fmt::Debug + core::fmt::Display + core::default::Default + core::panic::unwind_safe::RefUnwindSafe + num_traits::Num + num_traits::cast::NumCast + vortex_array::dtype::FromPrimitiveOrF16 + vortex_array::dtype::ToBytes + vortex_array::dtype::TryFromBytes + vortex_array::dtype::ptype::private::Sealed + 'static +impl core::convert::From for vortex_array::scalar::ScalarValue -pub const vortex_array::dtype::NativePType::PTYPE: vortex_array::dtype::PType +pub fn vortex_array::scalar::ScalarValue::from(value: bool) -> Self -pub fn vortex_array::dtype::NativePType::downcast(visitor: V) -> ::Output +impl core::convert::From for vortex_array::scalar::ScalarValue -pub fn vortex_array::dtype::NativePType::is_eq(self, other: Self) -> bool +pub fn vortex_array::scalar::ScalarValue::from(value: f32) -> Self -pub fn vortex_array::dtype::NativePType::is_ge(self, other: Self) -> bool +impl core::convert::From for vortex_array::scalar::ScalarValue -pub fn vortex_array::dtype::NativePType::is_gt(self, other: Self) -> bool +pub fn vortex_array::scalar::ScalarValue::from(value: f64) -> Self -pub fn vortex_array::dtype::NativePType::is_infinite(self) -> bool +impl core::convert::From for vortex_array::scalar::ScalarValue -pub fn vortex_array::dtype::NativePType::is_le(self, other: Self) -> bool +pub fn vortex_array::scalar::ScalarValue::from(value: half::binary16::f16) -> Self -pub fn vortex_array::dtype::NativePType::is_lt(self, other: Self) -> bool +impl core::convert::From for vortex_array::scalar::ScalarValue -pub fn vortex_array::dtype::NativePType::is_nan(self) -> bool +pub fn vortex_array::scalar::ScalarValue::from(value: i16) -> Self -pub fn vortex_array::dtype::NativePType::total_compare(self, other: Self) -> core::cmp::Ordering +impl core::convert::From for vortex_array::scalar::ScalarValue -pub fn vortex_array::dtype::NativePType::upcast(input: ::Input) -> V +pub fn vortex_array::scalar::ScalarValue::from(value: i32) -> Self -impl vortex_array::dtype::NativePType for f32 +impl core::convert::From for vortex_array::scalar::ScalarValue -pub const f32::PTYPE: vortex_array::dtype::PType +pub fn vortex_array::scalar::ScalarValue::from(value: i64) -> Self -pub fn f32::downcast(visitor: V) -> ::Output +impl core::convert::From for vortex_array::scalar::ScalarValue -pub fn f32::is_eq(self, other: Self) -> bool +pub fn vortex_array::scalar::ScalarValue::from(value: i8) -> Self -pub fn f32::is_ge(self, other: Self) -> bool +impl core::convert::From for vortex_array::scalar::ScalarValue -pub fn f32::is_gt(self, other: Self) -> bool +pub fn vortex_array::scalar::ScalarValue::from(value: u16) -> Self -pub fn f32::is_infinite(self) -> bool +impl core::convert::From for vortex_array::scalar::ScalarValue -pub fn f32::is_le(self, other: Self) -> bool +pub fn vortex_array::scalar::ScalarValue::from(value: u32) -> Self -pub fn f32::is_lt(self, other: Self) -> bool +impl core::convert::From for vortex_array::scalar::ScalarValue -pub fn f32::is_nan(self) -> bool +pub fn vortex_array::scalar::ScalarValue::from(value: u64) -> Self -pub fn f32::total_compare(self, other: Self) -> core::cmp::Ordering +impl core::convert::From for vortex_array::scalar::ScalarValue -pub fn f32::upcast(input: ::Input) -> V +pub fn vortex_array::scalar::ScalarValue::from(value: u8) -> Self -impl vortex_array::dtype::NativePType for f64 +impl core::convert::From for vortex_array::scalar::ScalarValue -pub const f64::PTYPE: vortex_array::dtype::PType +pub fn vortex_array::scalar::ScalarValue::from(value: usize) -> Self -pub fn f64::downcast(visitor: V) -> ::Output +impl core::convert::From for vortex_array::scalar::ScalarValue -pub fn f64::is_eq(self, other: Self) -> bool +pub fn vortex_array::scalar::ScalarValue::from(value: vortex_array::scalar::DecimalValue) -> Self -pub fn f64::is_ge(self, other: Self) -> bool +impl core::convert::From for vortex_array::scalar::ScalarValue -pub fn f64::is_gt(self, other: Self) -> bool +pub fn vortex_array::scalar::ScalarValue::from(value: vortex_array::scalar::PValue) -> Self -pub fn f64::is_infinite(self) -> bool +impl core::convert::From> for vortex_array::scalar::ScalarValue -pub fn f64::is_le(self, other: Self) -> bool +pub fn vortex_array::scalar::ScalarValue::from(value: vortex_buffer::ByteBuffer) -> Self -pub fn f64::is_lt(self, other: Self) -> bool +impl core::convert::From for vortex_array::scalar::ScalarValue -pub fn f64::is_nan(self) -> bool +pub fn vortex_array::scalar::ScalarValue::from(value: vortex_buffer::string::BufferString) -> Self -pub fn f64::total_compare(self, other: Self) -> core::cmp::Ordering +impl core::convert::TryFrom<&vortex_array::scalar::ScalarValue> for f32 -pub fn f64::upcast(input: ::Input) -> V +pub type f32::Error = vortex_error::VortexError -impl vortex_array::dtype::NativePType for half::binary16::f16 +pub fn f32::try_from(value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult -pub const half::binary16::f16::PTYPE: vortex_array::dtype::PType +impl core::convert::TryFrom<&vortex_array::scalar::ScalarValue> for f64 -pub fn half::binary16::f16::downcast(visitor: V) -> ::Output +pub type f64::Error = vortex_error::VortexError -pub fn half::binary16::f16::is_eq(self, other: Self) -> bool +pub fn f64::try_from(value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult -pub fn half::binary16::f16::is_ge(self, other: Self) -> bool +impl core::convert::TryFrom<&vortex_array::scalar::ScalarValue> for half::binary16::f16 -pub fn half::binary16::f16::is_gt(self, other: Self) -> bool +pub type half::binary16::f16::Error = vortex_error::VortexError -pub fn half::binary16::f16::is_infinite(self) -> bool +pub fn half::binary16::f16::try_from(value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult -pub fn half::binary16::f16::is_le(self, other: Self) -> bool +impl core::convert::TryFrom<&vortex_array::scalar::ScalarValue> for i16 -pub fn half::binary16::f16::is_lt(self, other: Self) -> bool +pub type i16::Error = vortex_error::VortexError -pub fn half::binary16::f16::is_nan(self) -> bool +pub fn i16::try_from(value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult -pub fn half::binary16::f16::total_compare(self, other: Self) -> core::cmp::Ordering +impl core::convert::TryFrom<&vortex_array::scalar::ScalarValue> for i32 -pub fn half::binary16::f16::upcast(input: ::Input) -> V +pub type i32::Error = vortex_error::VortexError -impl vortex_array::dtype::NativePType for i16 +pub fn i32::try_from(value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult -pub const i16::PTYPE: vortex_array::dtype::PType +impl core::convert::TryFrom<&vortex_array::scalar::ScalarValue> for i64 -pub fn i16::downcast(visitor: V) -> ::Output +pub type i64::Error = vortex_error::VortexError -pub fn i16::is_eq(self, other: Self) -> bool +pub fn i64::try_from(value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult -pub fn i16::is_ge(self, other: Self) -> bool +impl core::convert::TryFrom<&vortex_array::scalar::ScalarValue> for i8 -pub fn i16::is_gt(self, other: Self) -> bool +pub type i8::Error = vortex_error::VortexError -pub fn i16::is_infinite(self) -> bool +pub fn i8::try_from(value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult -pub fn i16::is_le(self, other: Self) -> bool +impl core::convert::TryFrom<&vortex_array::scalar::ScalarValue> for u16 -pub fn i16::is_lt(self, other: Self) -> bool +pub type u16::Error = vortex_error::VortexError -pub fn i16::is_nan(self) -> bool +pub fn u16::try_from(value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult -pub fn i16::total_compare(self, other: Self) -> core::cmp::Ordering +impl core::convert::TryFrom<&vortex_array::scalar::ScalarValue> for u32 -pub fn i16::upcast(input: ::Input) -> V +pub type u32::Error = vortex_error::VortexError -impl vortex_array::dtype::NativePType for i32 +pub fn u32::try_from(value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult -pub const i32::PTYPE: vortex_array::dtype::PType +impl core::convert::TryFrom<&vortex_array::scalar::ScalarValue> for u64 -pub fn i32::downcast(visitor: V) -> ::Output +pub type u64::Error = vortex_error::VortexError -pub fn i32::is_eq(self, other: Self) -> bool +pub fn u64::try_from(value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult -pub fn i32::is_ge(self, other: Self) -> bool +impl core::convert::TryFrom<&vortex_array::scalar::ScalarValue> for u8 -pub fn i32::is_gt(self, other: Self) -> bool +pub type u8::Error = vortex_error::VortexError -pub fn i32::is_infinite(self) -> bool +pub fn u8::try_from(value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult -pub fn i32::is_le(self, other: Self) -> bool +impl core::convert::TryFrom<&vortex_array::scalar::ScalarValue> for usize -pub fn i32::is_lt(self, other: Self) -> bool +pub type usize::Error = vortex_error::VortexError -pub fn i32::is_nan(self) -> bool +pub fn usize::try_from(value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult -pub fn i32::total_compare(self, other: Self) -> core::cmp::Ordering +impl core::fmt::Debug for vortex_array::scalar::ScalarValue -pub fn i32::upcast(input: ::Input) -> V +pub fn vortex_array::scalar::ScalarValue::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::dtype::NativePType for i64 +impl core::fmt::Display for vortex_array::scalar::ScalarValue -pub const i64::PTYPE: vortex_array::dtype::PType +pub fn vortex_array::scalar::ScalarValue::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn i64::downcast(visitor: V) -> ::Output +impl core::hash::Hash for vortex_array::scalar::ScalarValue -pub fn i64::is_eq(self, other: Self) -> bool +pub fn vortex_array::scalar::ScalarValue::hash<__H: core::hash::Hasher>(&self, state: &mut __H) -pub fn i64::is_ge(self, other: Self) -> bool +impl core::marker::StructuralPartialEq for vortex_array::scalar::ScalarValue -pub fn i64::is_gt(self, other: Self) -> bool +impl core::convert::From> for vortex_array::scalar::ScalarValue where T: vortex_array::dtype::NativeDType, vortex_array::scalar::Scalar: core::convert::From -pub fn i64::is_infinite(self) -> bool +pub fn vortex_array::scalar::ScalarValue::from(vec: alloc::vec::Vec) -> Self -pub fn i64::is_le(self, other: Self) -> bool +pub struct vortex_array::scalar::BinaryScalar<'a> -pub fn i64::is_lt(self, other: Self) -> bool +impl<'a> vortex_array::scalar::BinaryScalar<'a> -pub fn i64::is_nan(self) -> bool +pub fn vortex_array::scalar::BinaryScalar<'a>::dtype(&self) -> &'a vortex_array::dtype::DType -pub fn i64::total_compare(self, other: Self) -> core::cmp::Ordering +pub fn vortex_array::scalar::BinaryScalar<'a>::is_empty(&self) -> core::option::Option -pub fn i64::upcast(input: ::Input) -> V +pub fn vortex_array::scalar::BinaryScalar<'a>::len(&self) -> core::option::Option -impl vortex_array::dtype::NativePType for i8 +pub fn vortex_array::scalar::BinaryScalar<'a>::try_new(dtype: &'a vortex_array::dtype::DType, value: core::option::Option<&'a vortex_array::scalar::ScalarValue>) -> vortex_error::VortexResult -pub const i8::PTYPE: vortex_array::dtype::PType +pub fn vortex_array::scalar::BinaryScalar<'a>::value(&self) -> core::option::Option<&'a vortex_buffer::ByteBuffer> -pub fn i8::downcast(visitor: V) -> ::Output +impl core::cmp::Eq for vortex_array::scalar::BinaryScalar<'_> -pub fn i8::is_eq(self, other: Self) -> bool +impl core::cmp::Ord for vortex_array::scalar::BinaryScalar<'_> -pub fn i8::is_ge(self, other: Self) -> bool +pub fn vortex_array::scalar::BinaryScalar<'_>::cmp(&self, other: &Self) -> core::cmp::Ordering -pub fn i8::is_gt(self, other: Self) -> bool +impl core::cmp::PartialEq for vortex_array::scalar::BinaryScalar<'_> -pub fn i8::is_infinite(self) -> bool +pub fn vortex_array::scalar::BinaryScalar<'_>::eq(&self, other: &Self) -> bool -pub fn i8::is_le(self, other: Self) -> bool +impl core::cmp::PartialOrd for vortex_array::scalar::BinaryScalar<'_> -pub fn i8::is_lt(self, other: Self) -> bool +pub fn vortex_array::scalar::BinaryScalar<'_>::partial_cmp(&self, other: &Self) -> core::option::Option -pub fn i8::is_nan(self) -> bool +impl core::fmt::Display for vortex_array::scalar::BinaryScalar<'_> -pub fn i8::total_compare(self, other: Self) -> core::cmp::Ordering +pub fn vortex_array::scalar::BinaryScalar<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn i8::upcast(input: ::Input) -> V +impl<'a> core::clone::Clone for vortex_array::scalar::BinaryScalar<'a> -impl vortex_array::dtype::NativePType for u16 +pub fn vortex_array::scalar::BinaryScalar<'a>::clone(&self) -> vortex_array::scalar::BinaryScalar<'a> -pub const u16::PTYPE: vortex_array::dtype::PType +impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::BinaryScalar<'a> -pub fn u16::downcast(visitor: V) -> ::Output +pub type vortex_array::scalar::BinaryScalar<'a>::Error = vortex_error::VortexError -pub fn u16::is_eq(self, other: Self) -> bool +pub fn vortex_array::scalar::BinaryScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub fn u16::is_ge(self, other: Self) -> bool +impl<'a> core::fmt::Debug for vortex_array::scalar::BinaryScalar<'a> -pub fn u16::is_gt(self, other: Self) -> bool +pub fn vortex_array::scalar::BinaryScalar<'a>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn u16::is_infinite(self) -> bool +impl<'a> core::hash::Hash for vortex_array::scalar::BinaryScalar<'a> -pub fn u16::is_le(self, other: Self) -> bool +pub fn vortex_array::scalar::BinaryScalar<'a>::hash<__H: core::hash::Hasher>(&self, state: &mut __H) -pub fn u16::is_lt(self, other: Self) -> bool +pub struct vortex_array::scalar::BoolScalar<'a> -pub fn u16::is_nan(self) -> bool +impl<'a> vortex_array::scalar::BoolScalar<'a> -pub fn u16::total_compare(self, other: Self) -> core::cmp::Ordering +pub fn vortex_array::scalar::BoolScalar<'a>::dtype(&self) -> &'a vortex_array::dtype::DType -pub fn u16::upcast(input: ::Input) -> V +pub fn vortex_array::scalar::BoolScalar<'a>::into_scalar(self) -> vortex_array::scalar::Scalar -impl vortex_array::dtype::NativePType for u32 +pub fn vortex_array::scalar::BoolScalar<'a>::invert(self) -> vortex_array::scalar::BoolScalar<'a> -pub const u32::PTYPE: vortex_array::dtype::PType +pub fn vortex_array::scalar::BoolScalar<'a>::try_new(dtype: &'a vortex_array::dtype::DType, value: core::option::Option<&vortex_array::scalar::ScalarValue>) -> vortex_error::VortexResult -pub fn u32::downcast(visitor: V) -> ::Output +pub fn vortex_array::scalar::BoolScalar<'a>::value(&self) -> core::option::Option -pub fn u32::is_eq(self, other: Self) -> bool +impl core::cmp::Ord for vortex_array::scalar::BoolScalar<'_> -pub fn u32::is_ge(self, other: Self) -> bool +pub fn vortex_array::scalar::BoolScalar<'_>::cmp(&self, other: &Self) -> core::cmp::Ordering -pub fn u32::is_gt(self, other: Self) -> bool +impl core::cmp::PartialEq for vortex_array::scalar::BoolScalar<'_> -pub fn u32::is_infinite(self) -> bool +pub fn vortex_array::scalar::BoolScalar<'_>::eq(&self, other: &Self) -> bool -pub fn u32::is_le(self, other: Self) -> bool +impl core::cmp::PartialOrd for vortex_array::scalar::BoolScalar<'_> -pub fn u32::is_lt(self, other: Self) -> bool +pub fn vortex_array::scalar::BoolScalar<'_>::partial_cmp(&self, other: &Self) -> core::option::Option -pub fn u32::is_nan(self) -> bool +impl core::fmt::Display for vortex_array::scalar::BoolScalar<'_> -pub fn u32::total_compare(self, other: Self) -> core::cmp::Ordering +pub fn vortex_array::scalar::BoolScalar<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn u32::upcast(input: ::Input) -> V +impl<'a> core::clone::Clone for vortex_array::scalar::BoolScalar<'a> -impl vortex_array::dtype::NativePType for u64 +pub fn vortex_array::scalar::BoolScalar<'a>::clone(&self) -> vortex_array::scalar::BoolScalar<'a> -pub const u64::PTYPE: vortex_array::dtype::PType +impl<'a> core::cmp::Eq for vortex_array::scalar::BoolScalar<'a> -pub fn u64::downcast(visitor: V) -> ::Output +impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::BoolScalar<'a> -pub fn u64::is_eq(self, other: Self) -> bool +pub type vortex_array::scalar::BoolScalar<'a>::Error = vortex_error::VortexError -pub fn u64::is_ge(self, other: Self) -> bool +pub fn vortex_array::scalar::BoolScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub fn u64::is_gt(self, other: Self) -> bool +impl<'a> core::fmt::Debug for vortex_array::scalar::BoolScalar<'a> -pub fn u64::is_infinite(self) -> bool +pub fn vortex_array::scalar::BoolScalar<'a>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn u64::is_le(self, other: Self) -> bool +impl<'a> core::hash::Hash for vortex_array::scalar::BoolScalar<'a> -pub fn u64::is_lt(self, other: Self) -> bool +pub fn vortex_array::scalar::BoolScalar<'a>::hash<__H: core::hash::Hasher>(&self, state: &mut __H) -pub fn u64::is_nan(self) -> bool +pub struct vortex_array::scalar::DecimalScalar<'a> -pub fn u64::total_compare(self, other: Self) -> core::cmp::Ordering +impl<'a> vortex_array::scalar::DecimalScalar<'a> -pub fn u64::upcast(input: ::Input) -> V +pub fn vortex_array::scalar::DecimalScalar<'a>::checked_binary_numeric(&self, other: &vortex_array::scalar::DecimalScalar<'a>, op: vortex_array::scalar::NumericOperator) -> core::option::Option> -impl vortex_array::dtype::NativePType for u8 +pub fn vortex_array::scalar::DecimalScalar<'a>::decimal_value(&self) -> core::option::Option -pub const u8::PTYPE: vortex_array::dtype::PType +pub fn vortex_array::scalar::DecimalScalar<'a>::dtype(&self) -> &'a vortex_array::dtype::DType -pub fn u8::downcast(visitor: V) -> ::Output +pub fn vortex_array::scalar::DecimalScalar<'a>::is_zero(&self) -> core::option::Option -pub fn u8::is_eq(self, other: Self) -> bool +pub fn vortex_array::scalar::DecimalScalar<'a>::try_new(dtype: &'a vortex_array::dtype::DType, value: core::option::Option<&vortex_array::scalar::ScalarValue>) -> vortex_error::VortexResult -pub fn u8::is_ge(self, other: Self) -> bool +impl core::cmp::Eq for vortex_array::scalar::DecimalScalar<'_> -pub fn u8::is_gt(self, other: Self) -> bool +impl core::cmp::PartialEq for vortex_array::scalar::DecimalScalar<'_> -pub fn u8::is_infinite(self) -> bool +pub fn vortex_array::scalar::DecimalScalar<'_>::eq(&self, other: &Self) -> bool -pub fn u8::is_le(self, other: Self) -> bool +impl core::cmp::PartialOrd for vortex_array::scalar::DecimalScalar<'_> -pub fn u8::is_lt(self, other: Self) -> bool +pub fn vortex_array::scalar::DecimalScalar<'_>::partial_cmp(&self, other: &Self) -> core::option::Option -pub fn u8::is_nan(self) -> bool +impl core::convert::From> for vortex_array::scalar::Scalar -pub fn u8::total_compare(self, other: Self) -> core::cmp::Ordering +pub fn vortex_array::scalar::Scalar::from(ds: vortex_array::scalar::DecimalScalar<'_>) -> Self -pub fn u8::upcast(input: ::Input) -> V +impl core::convert::TryFrom> for core::option::Option -pub trait vortex_array::dtype::PTypeDowncast +pub type core::option::Option::Error = vortex_error::VortexError -pub type vortex_array::dtype::PTypeDowncast::Output +pub fn core::option::Option::try_from(value: vortex_array::scalar::DecimalScalar<'_>) -> core::result::Result -pub fn vortex_array::dtype::PTypeDowncast::into_f16(self) -> Self::Output +impl core::convert::TryFrom> for core::option::Option -pub fn vortex_array::dtype::PTypeDowncast::into_f32(self) -> Self::Output +pub type core::option::Option::Error = vortex_error::VortexError -pub fn vortex_array::dtype::PTypeDowncast::into_f64(self) -> Self::Output +pub fn core::option::Option::try_from(value: vortex_array::scalar::DecimalScalar<'_>) -> core::result::Result -pub fn vortex_array::dtype::PTypeDowncast::into_i16(self) -> Self::Output +impl core::convert::TryFrom> for core::option::Option -pub fn vortex_array::dtype::PTypeDowncast::into_i32(self) -> Self::Output +pub type core::option::Option::Error = vortex_error::VortexError -pub fn vortex_array::dtype::PTypeDowncast::into_i64(self) -> Self::Output +pub fn core::option::Option::try_from(value: vortex_array::scalar::DecimalScalar<'_>) -> core::result::Result -pub fn vortex_array::dtype::PTypeDowncast::into_i8(self) -> Self::Output +impl core::convert::TryFrom> for core::option::Option -pub fn vortex_array::dtype::PTypeDowncast::into_u16(self) -> Self::Output +pub type core::option::Option::Error = vortex_error::VortexError -pub fn vortex_array::dtype::PTypeDowncast::into_u32(self) -> Self::Output +pub fn core::option::Option::try_from(value: vortex_array::scalar::DecimalScalar<'_>) -> core::result::Result -pub fn vortex_array::dtype::PTypeDowncast::into_u64(self) -> Self::Output +impl core::convert::TryFrom> for core::option::Option -pub fn vortex_array::dtype::PTypeDowncast::into_u8(self) -> Self::Output +pub type core::option::Option::Error = vortex_error::VortexError -pub trait vortex_array::dtype::PTypeDowncastExt: vortex_array::dtype::PTypeDowncast +pub fn core::option::Option::try_from(value: vortex_array::scalar::DecimalScalar<'_>) -> core::result::Result -pub fn vortex_array::dtype::PTypeDowncastExt::downcast(self) -> Self::Output where Self: core::marker::Sized +impl core::convert::TryFrom> for core::option::Option -impl vortex_array::dtype::PTypeDowncastExt for T +pub type core::option::Option::Error = vortex_error::VortexError -pub fn T::downcast(self) -> Self::Output where Self: core::marker::Sized +pub fn core::option::Option::try_from(value: vortex_array::scalar::DecimalScalar<'_>) -> core::result::Result -pub trait vortex_array::dtype::PTypeUpcast +impl core::convert::TryFrom> for i128 -pub type vortex_array::dtype::PTypeUpcast::Input +pub type i128::Error = vortex_error::VortexError -pub fn vortex_array::dtype::PTypeUpcast::from_f16(input: Self::Input) -> Self +pub fn i128::try_from(value: vortex_array::scalar::DecimalScalar<'_>) -> core::result::Result -pub fn vortex_array::dtype::PTypeUpcast::from_f32(input: Self::Input) -> Self +impl core::convert::TryFrom> for i16 -pub fn vortex_array::dtype::PTypeUpcast::from_f64(input: Self::Input) -> Self +pub type i16::Error = vortex_error::VortexError -pub fn vortex_array::dtype::PTypeUpcast::from_i16(input: Self::Input) -> Self +pub fn i16::try_from(value: vortex_array::scalar::DecimalScalar<'_>) -> core::result::Result -pub fn vortex_array::dtype::PTypeUpcast::from_i32(input: Self::Input) -> Self +impl core::convert::TryFrom> for i32 -pub fn vortex_array::dtype::PTypeUpcast::from_i64(input: Self::Input) -> Self +pub type i32::Error = vortex_error::VortexError -pub fn vortex_array::dtype::PTypeUpcast::from_i8(input: Self::Input) -> Self +pub fn i32::try_from(value: vortex_array::scalar::DecimalScalar<'_>) -> core::result::Result -pub fn vortex_array::dtype::PTypeUpcast::from_u16(input: Self::Input) -> Self +impl core::convert::TryFrom> for i64 -pub fn vortex_array::dtype::PTypeUpcast::from_u32(input: Self::Input) -> Self +pub type i64::Error = vortex_error::VortexError -pub fn vortex_array::dtype::PTypeUpcast::from_u64(input: Self::Input) -> Self +pub fn i64::try_from(value: vortex_array::scalar::DecimalScalar<'_>) -> core::result::Result -pub fn vortex_array::dtype::PTypeUpcast::from_u8(input: Self::Input) -> Self +impl core::convert::TryFrom> for i8 -pub trait vortex_array::dtype::PhysicalPType: vortex_array::dtype::NativePType +pub type i8::Error = vortex_error::VortexError -pub type vortex_array::dtype::PhysicalPType::Physical: vortex_array::dtype::NativePType + num_traits::sign::Unsigned +pub fn i8::try_from(value: vortex_array::scalar::DecimalScalar<'_>) -> core::result::Result -impl vortex_array::dtype::PhysicalPType for i16 +impl core::convert::TryFrom> for vortex_array::dtype::i256 -pub type i16::Physical = u16 +pub type vortex_array::dtype::i256::Error = vortex_error::VortexError -impl vortex_array::dtype::PhysicalPType for i32 +pub fn vortex_array::dtype::i256::try_from(value: vortex_array::scalar::DecimalScalar<'_>) -> core::result::Result -pub type i32::Physical = u32 +impl core::fmt::Display for vortex_array::scalar::DecimalScalar<'_> -impl vortex_array::dtype::PhysicalPType for i64 +pub fn vortex_array::scalar::DecimalScalar<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub type i64::Physical = u64 +impl<'a> core::clone::Clone for vortex_array::scalar::DecimalScalar<'a> -impl vortex_array::dtype::PhysicalPType for i8 +pub fn vortex_array::scalar::DecimalScalar<'a>::clone(&self) -> vortex_array::scalar::DecimalScalar<'a> -pub type i8::Physical = u8 +impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::DecimalScalar<'a> -impl vortex_array::dtype::PhysicalPType for u16 +pub type vortex_array::scalar::DecimalScalar<'a>::Error = vortex_error::VortexError -pub type u16::Physical = u16 +pub fn vortex_array::scalar::DecimalScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult -impl vortex_array::dtype::PhysicalPType for u32 +impl<'a> core::fmt::Debug for vortex_array::scalar::DecimalScalar<'a> -pub type u32::Physical = u32 +pub fn vortex_array::scalar::DecimalScalar<'a>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::dtype::PhysicalPType for u64 +impl<'a> core::hash::Hash for vortex_array::scalar::DecimalScalar<'a> -pub type u64::Physical = u64 +pub fn vortex_array::scalar::DecimalScalar<'a>::hash<__H: core::hash::Hasher>(&self, state: &mut __H) -impl vortex_array::dtype::PhysicalPType for u8 +impl<'a> core::marker::Copy for vortex_array::scalar::DecimalScalar<'a> -pub type u8::Physical = u8 +pub struct vortex_array::scalar::ExtScalar<'a> -pub trait vortex_array::dtype::ToBytes: core::marker::Sized +impl<'a> vortex_array::scalar::ExtScalar<'a> -pub fn vortex_array::dtype::ToBytes::to_le_bytes(&self) -> &[u8] +pub fn vortex_array::scalar::ExtScalar<'a>::dtype(&self) -> &vortex_array::dtype::DType -impl vortex_array::dtype::ToBytes for f32 +pub fn vortex_array::scalar::ExtScalar<'a>::ext_dtype(&self) -> &'a vortex_array::dtype::extension::ExtDTypeRef -pub fn f32::to_le_bytes(&self) -> &[u8] +pub fn vortex_array::scalar::ExtScalar<'a>::to_storage_scalar(&self) -> vortex_array::scalar::Scalar -impl vortex_array::dtype::ToBytes for f64 +impl core::cmp::Eq for vortex_array::scalar::ExtScalar<'_> -pub fn f64::to_le_bytes(&self) -> &[u8] +impl core::cmp::PartialEq for vortex_array::scalar::ExtScalar<'_> -impl vortex_array::dtype::ToBytes for half::binary16::f16 +pub fn vortex_array::scalar::ExtScalar<'_>::eq(&self, other: &Self) -> bool -pub fn half::binary16::f16::to_le_bytes(&self) -> &[u8] +impl core::cmp::PartialOrd for vortex_array::scalar::ExtScalar<'_> -impl vortex_array::dtype::ToBytes for i16 +pub fn vortex_array::scalar::ExtScalar<'_>::partial_cmp(&self, other: &Self) -> core::option::Option -pub fn i16::to_le_bytes(&self) -> &[u8] +impl core::fmt::Display for vortex_array::scalar::ExtScalar<'_> -impl vortex_array::dtype::ToBytes for i32 +pub fn vortex_array::scalar::ExtScalar<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn i32::to_le_bytes(&self) -> &[u8] +impl core::hash::Hash for vortex_array::scalar::ExtScalar<'_> -impl vortex_array::dtype::ToBytes for i64 +pub fn vortex_array::scalar::ExtScalar<'_>::hash(&self, state: &mut H) -pub fn i64::to_le_bytes(&self) -> &[u8] +impl<'a> core::clone::Clone for vortex_array::scalar::ExtScalar<'a> -impl vortex_array::dtype::ToBytes for i8 +pub fn vortex_array::scalar::ExtScalar<'a>::clone(&self) -> vortex_array::scalar::ExtScalar<'a> -pub fn i8::to_le_bytes(&self) -> &[u8] +impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::ExtScalar<'a> -impl vortex_array::dtype::ToBytes for u16 +pub type vortex_array::scalar::ExtScalar<'a>::Error = vortex_error::VortexError -pub fn u16::to_le_bytes(&self) -> &[u8] +pub fn vortex_array::scalar::ExtScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult -impl vortex_array::dtype::ToBytes for u32 +impl<'a> core::fmt::Debug for vortex_array::scalar::ExtScalar<'a> -pub fn u32::to_le_bytes(&self) -> &[u8] +pub fn vortex_array::scalar::ExtScalar<'a>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::dtype::ToBytes for u64 +pub struct vortex_array::scalar::ListScalar<'a> -pub fn u64::to_le_bytes(&self) -> &[u8] +impl<'a> vortex_array::scalar::ListScalar<'a> -impl vortex_array::dtype::ToBytes for u8 +pub fn vortex_array::scalar::ListScalar<'a>::dtype(&self) -> &'a vortex_array::dtype::DType -pub fn u8::to_le_bytes(&self) -> &[u8] +pub fn vortex_array::scalar::ListScalar<'a>::element(&self, idx: usize) -> core::option::Option -impl vortex_array::dtype::ToBytes for vortex_array::scalar::PValue +pub fn vortex_array::scalar::ListScalar<'a>::element_dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar::PValue::to_le_bytes(&self) -> &[u8] +pub fn vortex_array::scalar::ListScalar<'a>::elements(&self) -> core::option::Option> -pub trait vortex_array::dtype::ToI256 +pub fn vortex_array::scalar::ListScalar<'a>::is_empty(&self) -> bool -pub fn vortex_array::dtype::ToI256::to_i256(&self) -> core::option::Option +pub fn vortex_array::scalar::ListScalar<'a>::is_null(&self) -> bool -impl vortex_array::dtype::ToI256 for i128 +pub fn vortex_array::scalar::ListScalar<'a>::len(&self) -> usize -pub fn i128::to_i256(&self) -> core::option::Option +pub fn vortex_array::scalar::ListScalar<'a>::try_new(dtype: &'a vortex_array::dtype::DType, value: core::option::Option<&'a vortex_array::scalar::ScalarValue>) -> vortex_error::VortexResult -impl vortex_array::dtype::ToI256 for i16 +impl core::cmp::Eq for vortex_array::scalar::ListScalar<'_> -pub fn i16::to_i256(&self) -> core::option::Option +impl core::cmp::PartialEq for vortex_array::scalar::ListScalar<'_> -impl vortex_array::dtype::ToI256 for i32 +pub fn vortex_array::scalar::ListScalar<'_>::eq(&self, other: &Self) -> bool -pub fn i32::to_i256(&self) -> core::option::Option +impl core::cmp::PartialOrd for vortex_array::scalar::ListScalar<'_> -impl vortex_array::dtype::ToI256 for i64 +pub fn vortex_array::scalar::ListScalar<'_>::partial_cmp(&self, other: &Self) -> core::option::Option -pub fn i64::to_i256(&self) -> core::option::Option +impl core::fmt::Display for vortex_array::scalar::ListScalar<'_> -impl vortex_array::dtype::ToI256 for i8 +pub fn vortex_array::scalar::ListScalar<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn i8::to_i256(&self) -> core::option::Option +impl core::hash::Hash for vortex_array::scalar::ListScalar<'_> -impl vortex_array::dtype::ToI256 for u128 +pub fn vortex_array::scalar::ListScalar<'_>::hash(&self, state: &mut H) -pub fn u128::to_i256(&self) -> core::option::Option +impl<'a> core::clone::Clone for vortex_array::scalar::ListScalar<'a> -impl vortex_array::dtype::ToI256 for u16 +pub fn vortex_array::scalar::ListScalar<'a>::clone(&self) -> vortex_array::scalar::ListScalar<'a> -pub fn u16::to_i256(&self) -> core::option::Option +impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::ListScalar<'a> -impl vortex_array::dtype::ToI256 for u32 +pub type vortex_array::scalar::ListScalar<'a>::Error = vortex_error::VortexError -pub fn u32::to_i256(&self) -> core::option::Option +pub fn vortex_array::scalar::ListScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult -impl vortex_array::dtype::ToI256 for u64 +impl<'a> core::fmt::Debug for vortex_array::scalar::ListScalar<'a> -pub fn u64::to_i256(&self) -> core::option::Option +pub fn vortex_array::scalar::ListScalar<'a>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::dtype::ToI256 for u8 +pub struct vortex_array::scalar::PrimitiveScalar<'a> -pub fn u8::to_i256(&self) -> core::option::Option +impl<'a> vortex_array::scalar::PrimitiveScalar<'a> -impl vortex_array::dtype::ToI256 for vortex_array::dtype::i256 +pub fn vortex_array::scalar::PrimitiveScalar<'a>::as_(&self) -> core::option::Option -pub fn vortex_array::dtype::i256::to_i256(&self) -> core::option::Option +pub fn vortex_array::scalar::PrimitiveScalar<'a>::as_opt(&self) -> core::option::Option> -pub trait vortex_array::dtype::TryFromBytes: core::marker::Sized +pub fn vortex_array::scalar::PrimitiveScalar<'a>::dtype(&self) -> &'a vortex_array::dtype::DType -pub fn vortex_array::dtype::TryFromBytes::try_from_le_bytes(bytes: &[u8]) -> vortex_error::VortexResult +pub fn vortex_array::scalar::PrimitiveScalar<'a>::is_nan(&self) -> bool -impl vortex_array::dtype::TryFromBytes for f32 +pub fn vortex_array::scalar::PrimitiveScalar<'a>::is_zero(&self) -> core::option::Option -pub fn f32::try_from_le_bytes(bytes: &[u8]) -> vortex_error::VortexResult +pub fn vortex_array::scalar::PrimitiveScalar<'a>::ptype(&self) -> vortex_array::dtype::PType -impl vortex_array::dtype::TryFromBytes for f64 +pub fn vortex_array::scalar::PrimitiveScalar<'a>::pvalue(&self) -> core::option::Option -pub fn f64::try_from_le_bytes(bytes: &[u8]) -> vortex_error::VortexResult +pub fn vortex_array::scalar::PrimitiveScalar<'a>::try_new(dtype: &'a vortex_array::dtype::DType, value: core::option::Option<&vortex_array::scalar::ScalarValue>) -> vortex_error::VortexResult -impl vortex_array::dtype::TryFromBytes for half::binary16::f16 +pub fn vortex_array::scalar::PrimitiveScalar<'a>::try_typed_value(&self) -> vortex_error::VortexResult> -pub fn half::binary16::f16::try_from_le_bytes(bytes: &[u8]) -> vortex_error::VortexResult +pub fn vortex_array::scalar::PrimitiveScalar<'a>::typed_value(&self) -> core::option::Option -impl vortex_array::dtype::TryFromBytes for i16 +impl<'a> vortex_array::scalar::PrimitiveScalar<'a> -pub fn i16::try_from_le_bytes(bytes: &[u8]) -> vortex_error::VortexResult +pub fn vortex_array::scalar::PrimitiveScalar<'a>::checked_binary_numeric(&self, other: &vortex_array::scalar::PrimitiveScalar<'a>, op: vortex_array::scalar::NumericOperator) -> core::option::Option> -impl vortex_array::dtype::TryFromBytes for i32 +impl core::cmp::Eq for vortex_array::scalar::PrimitiveScalar<'_> -pub fn i32::try_from_le_bytes(bytes: &[u8]) -> vortex_error::VortexResult +impl core::cmp::PartialEq for vortex_array::scalar::PrimitiveScalar<'_> -impl vortex_array::dtype::TryFromBytes for i64 +pub fn vortex_array::scalar::PrimitiveScalar<'_>::eq(&self, other: &Self) -> bool -pub fn i64::try_from_le_bytes(bytes: &[u8]) -> vortex_error::VortexResult +impl core::cmp::PartialOrd for vortex_array::scalar::PrimitiveScalar<'_> -impl vortex_array::dtype::TryFromBytes for i8 +pub fn vortex_array::scalar::PrimitiveScalar<'_>::partial_cmp(&self, other: &Self) -> core::option::Option -pub fn i8::try_from_le_bytes(bytes: &[u8]) -> vortex_error::VortexResult +impl core::convert::From> for vortex_array::scalar::Scalar -impl vortex_array::dtype::TryFromBytes for u16 +pub fn vortex_array::scalar::Scalar::from(ps: vortex_array::scalar::PrimitiveScalar<'_>) -> Self -pub fn u16::try_from_le_bytes(bytes: &[u8]) -> vortex_error::VortexResult +impl core::fmt::Display for vortex_array::scalar::PrimitiveScalar<'_> -impl vortex_array::dtype::TryFromBytes for u32 +pub fn vortex_array::scalar::PrimitiveScalar<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn u32::try_from_le_bytes(bytes: &[u8]) -> vortex_error::VortexResult +impl core::ops::arith::Add for vortex_array::scalar::PrimitiveScalar<'_> -impl vortex_array::dtype::TryFromBytes for u64 +pub type vortex_array::scalar::PrimitiveScalar<'_>::Output = vortex_array::scalar::PrimitiveScalar<'_> -pub fn u64::try_from_le_bytes(bytes: &[u8]) -> vortex_error::VortexResult +pub fn vortex_array::scalar::PrimitiveScalar<'_>::add(self, rhs: Self) -> Self::Output -impl vortex_array::dtype::TryFromBytes for u8 +impl core::ops::arith::Sub for vortex_array::scalar::PrimitiveScalar<'_> -pub fn u8::try_from_le_bytes(bytes: &[u8]) -> vortex_error::VortexResult +pub type vortex_array::scalar::PrimitiveScalar<'_>::Output = vortex_array::scalar::PrimitiveScalar<'_> -pub trait vortex_array::dtype::UnsignedPType: vortex_array::dtype::IntegerPType + num_traits::sign::Unsigned +pub fn vortex_array::scalar::PrimitiveScalar<'_>::sub(self, rhs: Self) -> Self::Output -impl vortex_array::dtype::UnsignedPType for T where T: vortex_array::dtype::IntegerPType + num_traits::sign::Unsigned +impl num_traits::ops::checked::CheckedAdd for vortex_array::scalar::PrimitiveScalar<'_> -pub mod vortex_array::expr +pub fn vortex_array::scalar::PrimitiveScalar<'_>::checked_add(&self, rhs: &Self) -> core::option::Option -pub mod vortex_array::expr::aliases +impl num_traits::ops::checked::CheckedSub for vortex_array::scalar::PrimitiveScalar<'_> -pub mod vortex_array::expr::aliases::paste +pub fn vortex_array::scalar::PrimitiveScalar<'_>::checked_sub(&self, rhs: &Self) -> core::option::Option -pub use vortex_array::expr::aliases::paste::paste +impl<'a> core::clone::Clone for vortex_array::scalar::PrimitiveScalar<'a> -pub mod vortex_array::expr::analysis +pub fn vortex_array::scalar::PrimitiveScalar<'a>::clone(&self) -> vortex_array::scalar::PrimitiveScalar<'a> -pub mod vortex_array::expr::analysis::annotation +impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::PrimitiveScalar<'a> -pub trait vortex_array::expr::analysis::annotation::Annotation: core::clone::Clone + core::hash::Hash + core::cmp::Eq +pub type vortex_array::scalar::PrimitiveScalar<'a>::Error = vortex_error::VortexError -impl vortex_array::expr::Annotation for A where A: core::clone::Clone + core::hash::Hash + core::cmp::Eq +pub fn vortex_array::scalar::PrimitiveScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub trait vortex_array::expr::analysis::annotation::AnnotationFn: core::ops::function::Fn(&vortex_array::expr::Expression) -> alloc::vec::Vec +impl<'a> core::fmt::Debug for vortex_array::scalar::PrimitiveScalar<'a> -pub type vortex_array::expr::analysis::annotation::AnnotationFn::Annotation: vortex_array::expr::Annotation +pub fn vortex_array::scalar::PrimitiveScalar<'a>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::expr::AnnotationFn for F where A: vortex_array::expr::Annotation, F: core::ops::function::Fn(&vortex_array::expr::Expression) -> alloc::vec::Vec +impl<'a> core::hash::Hash for vortex_array::scalar::PrimitiveScalar<'a> -pub type F::Annotation = A +pub fn vortex_array::scalar::PrimitiveScalar<'a>::hash<__H: core::hash::Hasher>(&self, state: &mut __H) -pub fn vortex_array::expr::analysis::annotation::descendent_annotations(expr: &vortex_array::expr::Expression, annotate: A) -> vortex_array::expr::Annotations<'_, ::Annotation> +impl<'a> core::marker::Copy for vortex_array::scalar::PrimitiveScalar<'a> -pub type vortex_array::expr::analysis::annotation::Annotations<'a, A> = vortex_utils::aliases::hash_map::HashMap<&'a vortex_array::expr::Expression, vortex_utils::aliases::hash_set::HashSet> +pub struct vortex_array::scalar::Scalar -pub mod vortex_array::expr::analysis::immediate_access +impl vortex_array::scalar::Scalar -pub fn vortex_array::expr::analysis::immediate_access::immediate_scope_access<'a>(expr: &'a vortex_array::expr::Expression, scope: &'a vortex_array::dtype::StructFields) -> vortex_utils::aliases::hash_set::HashSet +pub fn vortex_array::scalar::Scalar::approx_nbytes(&self) -> usize -pub fn vortex_array::expr::analysis::immediate_access::immediate_scope_accesses<'a>(expr: &'a vortex_array::expr::Expression, scope: &'a vortex_array::dtype::StructFields) -> vortex_array::expr::FieldAccesses<'a> +pub fn vortex_array::scalar::Scalar::default_value(dtype: &vortex_array::dtype::DType) -> Self -pub fn vortex_array::expr::analysis::immediate_access::make_free_field_annotator(scope: &vortex_array::dtype::StructFields) -> impl vortex_array::expr::AnnotationFn +pub fn vortex_array::scalar::Scalar::dtype(&self) -> &vortex_array::dtype::DType -pub type vortex_array::expr::analysis::immediate_access::FieldAccesses<'a> = vortex_array::expr::Annotations<'a, vortex_array::dtype::FieldName> +pub fn vortex_array::scalar::Scalar::eq_ignore_nullability(&self, other: &Self) -> bool -pub trait vortex_array::expr::analysis::Annotation: core::clone::Clone + core::hash::Hash + core::cmp::Eq +pub fn vortex_array::scalar::Scalar::into_parts(self) -> (vortex_array::dtype::DType, core::option::Option) -impl vortex_array::expr::Annotation for A where A: core::clone::Clone + core::hash::Hash + core::cmp::Eq +pub fn vortex_array::scalar::Scalar::into_value(self) -> core::option::Option -pub trait vortex_array::expr::analysis::AnnotationFn: core::ops::function::Fn(&vortex_array::expr::Expression) -> alloc::vec::Vec +pub fn vortex_array::scalar::Scalar::is_null(&self) -> bool -pub type vortex_array::expr::analysis::AnnotationFn::Annotation: vortex_array::expr::Annotation +pub fn vortex_array::scalar::Scalar::is_valid(&self) -> bool -impl vortex_array::expr::AnnotationFn for F where A: vortex_array::expr::Annotation, F: core::ops::function::Fn(&vortex_array::expr::Expression) -> alloc::vec::Vec +pub fn vortex_array::scalar::Scalar::is_zero(&self) -> core::option::Option -pub type F::Annotation = A +pub unsafe fn vortex_array::scalar::Scalar::new_unchecked(dtype: vortex_array::dtype::DType, value: core::option::Option) -> Self -pub fn vortex_array::expr::analysis::descendent_annotations(expr: &vortex_array::expr::Expression, annotate: A) -> vortex_array::expr::Annotations<'_, ::Annotation> +pub fn vortex_array::scalar::Scalar::null(dtype: vortex_array::dtype::DType) -> Self -pub fn vortex_array::expr::analysis::immediate_scope_access<'a>(expr: &'a vortex_array::expr::Expression, scope: &'a vortex_array::dtype::StructFields) -> vortex_utils::aliases::hash_set::HashSet +pub fn vortex_array::scalar::Scalar::null_native() -> Self -pub fn vortex_array::expr::analysis::immediate_scope_accesses<'a>(expr: &'a vortex_array::expr::Expression, scope: &'a vortex_array::dtype::StructFields) -> vortex_array::expr::FieldAccesses<'a> +pub fn vortex_array::scalar::Scalar::primitive_reinterpret_cast(&self, ptype: vortex_array::dtype::PType) -> vortex_error::VortexResult -pub fn vortex_array::expr::analysis::label_is_fallible(expr: &vortex_array::expr::Expression) -> vortex_array::expr::BooleanLabels<'_> +pub fn vortex_array::scalar::Scalar::try_new(dtype: vortex_array::dtype::DType, value: core::option::Option) -> vortex_error::VortexResult -pub fn vortex_array::expr::analysis::label_null_sensitive(expr: &vortex_array::expr::Expression) -> vortex_array::expr::BooleanLabels<'_> +pub fn vortex_array::scalar::Scalar::value(&self) -> core::option::Option<&vortex_array::scalar::ScalarValue> -pub fn vortex_array::expr::analysis::label_tree(expr: &vortex_array::expr::Expression, self_label: impl core::ops::function::Fn(&vortex_array::expr::Expression) -> L, merge_child: impl core::ops::function::FnMut(L, &L) -> L) -> vortex_utils::aliases::hash_map::HashMap<&vortex_array::expr::Expression, L> +pub fn vortex_array::scalar::Scalar::zero_value(dtype: &vortex_array::dtype::DType) -> Self -pub fn vortex_array::expr::analysis::make_free_field_annotator(scope: &vortex_array::dtype::StructFields) -> impl vortex_array::expr::AnnotationFn +impl vortex_array::scalar::Scalar -pub type vortex_array::expr::analysis::Annotations<'a, A> = vortex_utils::aliases::hash_map::HashMap<&'a vortex_array::expr::Expression, vortex_utils::aliases::hash_set::HashSet> +pub fn vortex_array::scalar::Scalar::as_binary(&self) -> vortex_array::scalar::BinaryScalar<'_> -pub type vortex_array::expr::analysis::BooleanLabels<'a> = vortex_utils::aliases::hash_map::HashMap<&'a vortex_array::expr::Expression, bool> +pub fn vortex_array::scalar::Scalar::as_binary_opt(&self) -> core::option::Option> -pub type vortex_array::expr::analysis::FieldAccesses<'a> = vortex_array::expr::Annotations<'a, vortex_array::dtype::FieldName> +pub fn vortex_array::scalar::Scalar::as_bool(&self) -> vortex_array::scalar::BoolScalar<'_> -pub mod vortex_array::expr::annotation +pub fn vortex_array::scalar::Scalar::as_bool_opt(&self) -> core::option::Option> -pub trait vortex_array::expr::annotation::Annotation: core::clone::Clone + core::hash::Hash + core::cmp::Eq +pub fn vortex_array::scalar::Scalar::as_decimal(&self) -> vortex_array::scalar::DecimalScalar<'_> -impl vortex_array::expr::Annotation for A where A: core::clone::Clone + core::hash::Hash + core::cmp::Eq +pub fn vortex_array::scalar::Scalar::as_decimal_opt(&self) -> core::option::Option> -pub trait vortex_array::expr::annotation::AnnotationFn: core::ops::function::Fn(&vortex_array::expr::Expression) -> alloc::vec::Vec +pub fn vortex_array::scalar::Scalar::as_extension(&self) -> vortex_array::scalar::ExtScalar<'_> -pub type vortex_array::expr::annotation::AnnotationFn::Annotation: vortex_array::expr::Annotation +pub fn vortex_array::scalar::Scalar::as_extension_opt(&self) -> core::option::Option> -impl vortex_array::expr::AnnotationFn for F where A: vortex_array::expr::Annotation, F: core::ops::function::Fn(&vortex_array::expr::Expression) -> alloc::vec::Vec +pub fn vortex_array::scalar::Scalar::as_list(&self) -> vortex_array::scalar::ListScalar<'_> -pub type F::Annotation = A +pub fn vortex_array::scalar::Scalar::as_list_opt(&self) -> core::option::Option> -pub fn vortex_array::expr::annotation::descendent_annotations(expr: &vortex_array::expr::Expression, annotate: A) -> vortex_array::expr::Annotations<'_, ::Annotation> +pub fn vortex_array::scalar::Scalar::as_primitive(&self) -> vortex_array::scalar::PrimitiveScalar<'_> -pub type vortex_array::expr::annotation::Annotations<'a, A> = vortex_utils::aliases::hash_map::HashMap<&'a vortex_array::expr::Expression, vortex_utils::aliases::hash_set::HashSet> +pub fn vortex_array::scalar::Scalar::as_primitive_opt(&self) -> core::option::Option> -pub mod vortex_array::expr::display +pub fn vortex_array::scalar::Scalar::as_struct(&self) -> vortex_array::scalar::StructScalar<'_> -pub enum vortex_array::expr::display::DisplayFormat +pub fn vortex_array::scalar::Scalar::as_struct_opt(&self) -> core::option::Option> -pub vortex_array::expr::display::DisplayFormat::Compact +pub fn vortex_array::scalar::Scalar::as_utf8(&self) -> vortex_array::scalar::Utf8Scalar<'_> -pub vortex_array::expr::display::DisplayFormat::Tree +pub fn vortex_array::scalar::Scalar::as_utf8_opt(&self) -> core::option::Option> -pub struct vortex_array::expr::display::DisplayTreeExpr<'a>(pub &'a vortex_array::expr::Expression) +pub fn vortex_array::scalar::Scalar::as_variant(&self) -> vortex_array::scalar::VariantScalar<'_> -impl core::fmt::Display for vortex_array::expr::display::DisplayTreeExpr<'_> +pub fn vortex_array::scalar::Scalar::as_variant_opt(&self) -> core::option::Option> -pub fn vortex_array::expr::display::DisplayTreeExpr<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl vortex_array::scalar::Scalar -pub mod vortex_array::expr::forms +pub fn vortex_array::scalar::Scalar::binary(buffer: impl core::convert::Into, nullability: vortex_array::dtype::Nullability) -> Self -pub fn vortex_array::expr::forms::conjuncts(expr: &vortex_array::expr::Expression) -> alloc::vec::Vec +pub fn vortex_array::scalar::Scalar::bool(value: bool, nullability: vortex_array::dtype::Nullability) -> Self -pub mod vortex_array::expr::immediate_access +pub fn vortex_array::scalar::Scalar::decimal(value: vortex_array::scalar::DecimalValue, decimal_type: vortex_array::dtype::DecimalDType, nullability: vortex_array::dtype::Nullability) -> Self -pub fn vortex_array::expr::immediate_access::immediate_scope_access<'a>(expr: &'a vortex_array::expr::Expression, scope: &'a vortex_array::dtype::StructFields) -> vortex_utils::aliases::hash_set::HashSet +pub fn vortex_array::scalar::Scalar::extension(options: ::Metadata, storage_scalar: vortex_array::scalar::Scalar) -> Self -pub fn vortex_array::expr::immediate_access::immediate_scope_accesses<'a>(expr: &'a vortex_array::expr::Expression, scope: &'a vortex_array::dtype::StructFields) -> vortex_array::expr::FieldAccesses<'a> +pub fn vortex_array::scalar::Scalar::extension_ref(ext_dtype: vortex_array::dtype::extension::ExtDTypeRef, storage_scalar: vortex_array::scalar::Scalar) -> Self -pub fn vortex_array::expr::immediate_access::make_free_field_annotator(scope: &vortex_array::dtype::StructFields) -> impl vortex_array::expr::AnnotationFn +pub fn vortex_array::scalar::Scalar::fixed_size_list(element_dtype: impl core::convert::Into>, children: alloc::vec::Vec, nullability: vortex_array::dtype::Nullability) -> Self -pub type vortex_array::expr::immediate_access::FieldAccesses<'a> = vortex_array::expr::Annotations<'a, vortex_array::dtype::FieldName> +pub fn vortex_array::scalar::Scalar::list(element_dtype: impl core::convert::Into>, children: alloc::vec::Vec, nullability: vortex_array::dtype::Nullability) -> Self -pub mod vortex_array::expr::proto +pub fn vortex_array::scalar::Scalar::list_empty(element_dtype: alloc::sync::Arc, nullability: vortex_array::dtype::Nullability) -> Self -pub trait vortex_array::expr::proto::ExprSerializeProtoExt +pub fn vortex_array::scalar::Scalar::primitive>(value: T, nullability: vortex_array::dtype::Nullability) -> Self -pub fn vortex_array::expr::proto::ExprSerializeProtoExt::serialize_proto(&self) -> vortex_error::VortexResult +pub fn vortex_array::scalar::Scalar::primitive_value(value: vortex_array::scalar::PValue, ptype: vortex_array::dtype::PType, nullability: vortex_array::dtype::Nullability) -> Self -impl vortex_array::expr::proto::ExprSerializeProtoExt for vortex_array::expr::Expression +pub fn vortex_array::scalar::Scalar::try_utf8(str: B, nullability: vortex_array::dtype::Nullability) -> core::result::Result>::Error> where B: core::convert::TryInto -pub fn vortex_array::expr::Expression::serialize_proto(&self) -> vortex_error::VortexResult +pub fn vortex_array::scalar::Scalar::utf8(str: B, nullability: vortex_array::dtype::Nullability) -> Self where B: core::convert::Into -pub fn vortex_array::expr::proto::deserialize_expr_proto(expr: &vortex_proto::expr::Expr, session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::scalar::Scalar::variant(value: vortex_array::scalar::Scalar) -> Self -pub mod vortex_array::expr::pruning +impl vortex_array::scalar::Scalar -pub struct vortex_array::expr::pruning::Relation +pub fn vortex_array::scalar::Scalar::cast(&self, target_dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult -impl vortex_array::expr::pruning::Relation +pub fn vortex_array::scalar::Scalar::into_nullable(self) -> vortex_array::scalar::Scalar -pub fn vortex_array::expr::pruning::Relation::insert(&mut self, k: K, v: V) +impl vortex_array::scalar::Scalar -pub fn vortex_array::expr::pruning::Relation::map(&self) -> &vortex_utils::aliases::hash_map::HashMap> +pub fn vortex_array::scalar::Scalar::from_proto(value: &vortex_proto::scalar::Scalar, session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::expr::pruning::Relation::new() -> Self +pub fn vortex_array::scalar::Scalar::from_proto_value(value: &vortex_proto::scalar::ScalarValue, dtype: &vortex_array::dtype::DType, session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl core::convert::From>> for vortex_array::expr::pruning::Relation +impl vortex_array::scalar::Scalar -pub fn vortex_array::expr::pruning::Relation::from(value: vortex_utils::aliases::hash_map::HashMap>) -> Self +pub fn vortex_array::scalar::Scalar::struct_(dtype: vortex_array::dtype::DType, children: impl core::iter::traits::collect::IntoIterator) -> Self -impl core::iter::traits::collect::IntoIterator for vortex_array::expr::pruning::Relation +pub unsafe fn vortex_array::scalar::Scalar::struct_unchecked(dtype: vortex_array::dtype::DType, children: impl core::iter::traits::collect::IntoIterator) -> Self -pub type vortex_array::expr::pruning::Relation::IntoIter = hashbrown::map::IntoIter> +impl vortex_array::scalar::Scalar -pub type vortex_array::expr::pruning::Relation::Item = (K, hashbrown::set::HashSet) +pub fn vortex_array::scalar::Scalar::validate(dtype: &vortex_array::dtype::DType, value: core::option::Option<&vortex_array::scalar::ScalarValue>) -> vortex_error::VortexResult<()> -pub fn vortex_array::expr::pruning::Relation::into_iter(self) -> Self::IntoIter +impl core::clone::Clone for vortex_array::scalar::Scalar -impl core::clone::Clone for vortex_array::expr::pruning::Relation +pub fn vortex_array::scalar::Scalar::clone(&self) -> vortex_array::scalar::Scalar -pub fn vortex_array::expr::pruning::Relation::clone(&self) -> vortex_array::expr::pruning::Relation +impl core::cmp::Eq for vortex_array::scalar::Scalar -impl core::fmt::Debug for vortex_array::expr::pruning::Relation +impl core::cmp::PartialEq for vortex_array::scalar::Scalar -pub fn vortex_array::expr::pruning::Relation::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar::Scalar::eq(&self, other: &Self) -> bool -impl core::default::Default for vortex_array::expr::pruning::Relation +impl core::cmp::PartialOrd for vortex_array::scalar::Scalar -pub fn vortex_array::expr::pruning::Relation::default() -> Self +pub fn vortex_array::scalar::Scalar::partial_cmp(&self, other: &Self) -> core::option::Option -pub trait vortex_array::expr::pruning::StatsCatalog +impl core::convert::From<&[u8]> for vortex_array::scalar::Scalar -pub fn vortex_array::expr::pruning::StatsCatalog::stats_ref(&self, _field_path: &vortex_array::dtype::FieldPath, _stat: vortex_array::expr::stats::Stat) -> core::option::Option +pub fn vortex_array::scalar::Scalar::from(value: &[u8]) -> Self -pub fn vortex_array::expr::pruning::checked_pruning_expr(expr: &vortex_array::expr::Expression, available_stats: &vortex_array::dtype::FieldPathSet) -> core::option::Option<(vortex_array::expr::Expression, vortex_array::expr::pruning::RequiredStats)> +impl core::convert::From<&str> for vortex_array::scalar::Scalar -pub type vortex_array::expr::pruning::RequiredStats = vortex_array::expr::pruning::Relation +pub fn vortex_array::scalar::Scalar::from(value: &str) -> Self -pub mod vortex_array::expr::stats +impl core::convert::From<&vortex_array::scalar::Scalar> for vortex_proto::scalar::Scalar -pub enum vortex_array::expr::stats::IntersectionResult +pub fn vortex_proto::scalar::Scalar::from(value: &vortex_array::scalar::Scalar) -> Self -pub vortex_array::expr::stats::IntersectionResult::None +impl core::convert::From for vortex_array::scalar::Scalar -pub vortex_array::expr::stats::IntersectionResult::Value(T) +pub fn vortex_array::scalar::Scalar::from(value: alloc::string::String) -> Self -impl vortex_array::expr::stats::IntersectionResult +impl core::convert::From for vortex_array::scalar::Scalar -pub fn vortex_array::expr::stats::IntersectionResult::ok_or_else(self, err: F) -> vortex_error::VortexResult where F: core::ops::function::FnOnce() -> vortex_error::VortexError +pub fn vortex_array::scalar::Scalar::from(value: bool) -> Self -impl core::clone::Clone for vortex_array::expr::stats::IntersectionResult +impl core::convert::From> for vortex_array::scalar::Scalar -pub fn vortex_array::expr::stats::IntersectionResult::clone(&self) -> vortex_array::expr::stats::IntersectionResult +pub fn vortex_array::scalar::Scalar::from(value: core::option::Option<&[u8]>) -> Self -impl core::cmp::Eq for vortex_array::expr::stats::IntersectionResult +impl core::convert::From> for vortex_array::scalar::Scalar -impl core::cmp::PartialEq for vortex_array::expr::stats::IntersectionResult +pub fn vortex_array::scalar::Scalar::from(value: core::option::Option<&str>) -> Self -pub fn vortex_array::expr::stats::IntersectionResult::eq(&self, other: &vortex_array::expr::stats::IntersectionResult) -> bool +impl core::convert::From> for vortex_array::scalar::Scalar -impl core::fmt::Debug for vortex_array::expr::stats::IntersectionResult +pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self -pub fn vortex_array::expr::stats::IntersectionResult::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl core::convert::From> for vortex_array::scalar::Scalar -impl core::marker::StructuralPartialEq for vortex_array::expr::stats::IntersectionResult +pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self -pub enum vortex_array::expr::stats::Precision +impl core::convert::From> for vortex_array::scalar::Scalar -pub vortex_array::expr::stats::Precision::Exact(T) +pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self -pub vortex_array::expr::stats::Precision::Inexact(T) +impl core::convert::From> for vortex_array::scalar::Scalar -impl vortex_array::expr::stats::Precision<&vortex_array::scalar::ScalarValue> +pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self -pub fn vortex_array::expr::stats::Precision<&vortex_array::scalar::ScalarValue>::into_scalar(self, dtype: vortex_array::dtype::DType) -> vortex_array::expr::stats::Precision +impl core::convert::From> for vortex_array::scalar::Scalar -impl vortex_array::expr::stats::Precision +pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self -pub fn vortex_array::expr::stats::Precision::into_scalar(self, dtype: vortex_array::dtype::DType) -> vortex_array::expr::stats::Precision +impl core::convert::From> for vortex_array::scalar::Scalar -impl vortex_array::expr::stats::Precision where T: core::marker::Copy +pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self -pub fn vortex_array::expr::stats::Precision::to_inexact(&self) -> Self +impl core::convert::From> for vortex_array::scalar::Scalar -impl vortex_array::expr::stats::Precision +pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self -pub fn vortex_array::expr::stats::Precision::as_exact(self) -> core::option::Option +impl core::convert::From> for vortex_array::scalar::Scalar -pub fn vortex_array::expr::stats::Precision::as_inexact(self) -> core::option::Option +pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self -pub fn vortex_array::expr::stats::Precision::as_ref(&self) -> vortex_array::expr::stats::Precision<&T> +impl core::convert::From> for vortex_array::scalar::Scalar -pub fn vortex_array::expr::stats::Precision::exact>(s: S) -> vortex_array::expr::stats::Precision +pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self -pub fn vortex_array::expr::stats::Precision::inexact>(s: S) -> vortex_array::expr::stats::Precision +impl core::convert::From> for vortex_array::scalar::Scalar -pub fn vortex_array::expr::stats::Precision::into_inexact(self) -> Self +pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self -pub fn vortex_array::expr::stats::Precision::into_inner(self) -> T +impl core::convert::From> for vortex_array::scalar::Scalar -pub fn vortex_array::expr::stats::Precision::is_exact(&self) -> bool +pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self -pub fn vortex_array::expr::stats::Precision::map U>(self, f: F) -> vortex_array::expr::stats::Precision +impl core::convert::From> for vortex_array::scalar::Scalar -pub fn vortex_array::expr::stats::Precision::try_map vortex_error::VortexResult>(self, f: F) -> vortex_error::VortexResult> +pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self -pub fn vortex_array::expr::stats::Precision::zip(self, other: vortex_array::expr::stats::Precision) -> vortex_array::expr::stats::Precision<(T, U)> +impl core::convert::From> for vortex_array::scalar::Scalar -impl vortex_array::expr::stats::Precision +pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self -pub fn vortex_array::expr::stats::Precision::bound>(self) -> ::Bound +impl core::convert::From> for vortex_array::scalar::Scalar -impl vortex_array::expr::stats::Precision> +pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self -pub fn vortex_array::expr::stats::Precision>::transpose(self) -> core::option::Option> +impl core::convert::From> for vortex_array::scalar::Scalar -impl core::clone::Clone for vortex_array::expr::stats::Precision +pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self -pub fn vortex_array::expr::stats::Precision::clone(&self) -> vortex_array::expr::stats::Precision +impl core::convert::From>> for vortex_array::scalar::Scalar -impl core::cmp::Eq for vortex_array::expr::stats::Precision +pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self -impl core::cmp::PartialEq for vortex_array::expr::stats::Precision +impl core::convert::From> for vortex_array::scalar::Scalar -pub fn vortex_array::expr::stats::Precision::eq(&self, other: &vortex_array::expr::stats::Precision) -> bool +pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self -impl core::cmp::PartialEq for vortex_array::expr::stats::Precision +impl core::convert::From for vortex_array::scalar::Scalar -pub fn vortex_array::expr::stats::Precision::eq(&self, other: &T) -> bool +pub fn vortex_array::scalar::Scalar::from(value: f32) -> Self -impl vortex_array::expr::stats::StatBound for vortex_array::expr::stats::Precision +impl core::convert::From for vortex_array::scalar::Scalar -pub fn vortex_array::expr::stats::Precision::intersection(&self, other: &Self) -> core::option::Option> +pub fn vortex_array::scalar::Scalar::from(value: f64) -> Self -pub fn vortex_array::expr::stats::Precision::into_value(self) -> vortex_array::expr::stats::Precision +impl core::convert::From for vortex_array::scalar::Scalar -pub fn vortex_array::expr::stats::Precision::lift(value: vortex_array::expr::stats::Precision) -> Self +pub fn vortex_array::scalar::Scalar::from(value: half::binary16::f16) -> Self -pub fn vortex_array::expr::stats::Precision::to_exact(&self) -> core::option::Option<&T> +impl core::convert::From for vortex_array::scalar::Scalar -pub fn vortex_array::expr::stats::Precision::union(&self, other: &Self) -> core::option::Option +pub fn vortex_array::scalar::Scalar::from(value: i16) -> Self -impl core::fmt::Debug for vortex_array::expr::stats::Precision +impl core::convert::From for vortex_array::scalar::Scalar -pub fn vortex_array::expr::stats::Precision::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar::Scalar::from(value: i32) -> Self -impl core::fmt::Display for vortex_array::expr::stats::Precision +impl core::convert::From for vortex_array::scalar::Scalar -pub fn vortex_array::expr::stats::Precision::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar::Scalar::from(value: i64) -> Self -impl core::marker::Copy for vortex_array::expr::stats::Precision +impl core::convert::From for vortex_array::scalar::Scalar -impl core::marker::StructuralPartialEq for vortex_array::expr::stats::Precision +pub fn vortex_array::scalar::Scalar::from(value: i8) -> Self -#[repr(u8)] pub enum vortex_array::expr::stats::Stat +impl core::convert::From for vortex_array::scalar::Scalar -pub vortex_array::expr::stats::Stat::IsConstant = 0 +pub fn vortex_array::scalar::Scalar::from(value: u16) -> Self -pub vortex_array::expr::stats::Stat::IsSorted = 1 +impl core::convert::From for vortex_array::scalar::Scalar -pub vortex_array::expr::stats::Stat::IsStrictSorted = 2 +pub fn vortex_array::scalar::Scalar::from(value: u32) -> Self -pub vortex_array::expr::stats::Stat::Max = 3 +impl core::convert::From for vortex_array::scalar::Scalar -pub vortex_array::expr::stats::Stat::Min = 4 +pub fn vortex_array::scalar::Scalar::from(value: u64) -> Self -pub vortex_array::expr::stats::Stat::NaNCount = 8 +impl core::convert::From for vortex_array::scalar::Scalar -pub vortex_array::expr::stats::Stat::NullCount = 6 +pub fn vortex_array::scalar::Scalar::from(value: u8) -> Self -pub vortex_array::expr::stats::Stat::Sum = 5 +impl core::convert::From for vortex_array::scalar::Scalar -pub vortex_array::expr::stats::Stat::UncompressedSizeInBytes = 7 +pub fn vortex_array::scalar::Scalar::from(value: usize) -> Self -impl vortex_array::expr::stats::Stat +impl core::convert::From> for vortex_array::scalar::Scalar -pub fn vortex_array::expr::stats::Stat::all() -> impl core::iter::traits::iterator::Iterator +pub fn vortex_array::scalar::Scalar::from(ds: vortex_array::scalar::DecimalScalar<'_>) -> Self -pub fn vortex_array::expr::stats::Stat::dtype(&self, data_type: &vortex_array::dtype::DType) -> core::option::Option +impl core::convert::From for vortex_array::scalar::Scalar -pub fn vortex_array::expr::stats::Stat::has_same_dtype_as_array(&self) -> bool +pub fn vortex_array::scalar::Scalar::from(value: vortex_array::scalar::DecimalValue) -> Self -pub fn vortex_array::expr::stats::Stat::is_commutative(&self) -> bool +impl core::convert::From> for vortex_array::scalar::Scalar -pub fn vortex_array::expr::stats::Stat::name(&self) -> &str +pub fn vortex_array::scalar::Scalar::from(ps: vortex_array::scalar::PrimitiveScalar<'_>) -> Self -impl core::clone::Clone for vortex_array::expr::stats::Stat +impl core::convert::From> for vortex_array::scalar::Scalar -pub fn vortex_array::expr::stats::Stat::clone(&self) -> vortex_array::expr::stats::Stat +pub fn vortex_array::scalar::Scalar::from(value: vortex_buffer::ByteBuffer) -> Self -impl core::cmp::Eq for vortex_array::expr::stats::Stat +impl core::convert::From for vortex_array::scalar::Scalar -impl core::cmp::Ord for vortex_array::expr::stats::Stat +pub fn vortex_array::scalar::Scalar::from(value: vortex_buffer::string::BufferString) -> Self -pub fn vortex_array::expr::stats::Stat::cmp(&self, other: &vortex_array::expr::stats::Stat) -> core::cmp::Ordering +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for alloc::sync::Arc -impl core::cmp::PartialEq for vortex_array::expr::stats::Stat +pub type alloc::sync::Arc::Error = vortex_error::VortexError -pub fn vortex_array::expr::stats::Stat::eq(&self, other: &vortex_array::expr::stats::Stat) -> bool +pub fn alloc::sync::Arc::try_from(value: &vortex_array::scalar::Scalar) -> core::result::Result, Self::Error> -impl core::cmp::PartialOrd for vortex_array::expr::stats::Stat +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for bool -pub fn vortex_array::expr::stats::Stat::partial_cmp(&self, other: &vortex_array::expr::stats::Stat) -> core::option::Option +pub type bool::Error = vortex_error::VortexError -impl core::convert::From for u8 +pub fn bool::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub fn u8::from(enum_value: vortex_array::expr::stats::Stat) -> Self +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option -impl core::convert::TryFrom for vortex_array::expr::stats::Stat +pub type core::option::Option::Error = vortex_error::VortexError -pub type vortex_array::expr::stats::Stat::Error = num_enum::TryFromPrimitiveError +pub fn core::option::Option::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub fn vortex_array::expr::stats::Stat::try_from(number: u8) -> core::result::Result> +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option -impl core::fmt::Debug for vortex_array::expr::stats::Stat +pub type core::option::Option::Error = vortex_error::VortexError -pub fn vortex_array::expr::stats::Stat::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn core::option::Option::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult -impl core::fmt::Display for vortex_array::expr::stats::Stat +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option -pub fn vortex_array::expr::stats::Stat::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type core::option::Option::Error = vortex_error::VortexError -impl core::hash::Hash for vortex_array::expr::stats::Stat +pub fn core::option::Option::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub fn vortex_array::expr::stats::Stat::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option -impl core::marker::Copy for vortex_array::expr::stats::Stat +pub type core::option::Option::Error = vortex_error::VortexError -impl core::marker::StructuralPartialEq for vortex_array::expr::stats::Stat +pub fn core::option::Option::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult -impl enum_iterator::Sequence for vortex_array::expr::stats::Stat +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option -pub const vortex_array::expr::stats::Stat::CARDINALITY: usize +pub type core::option::Option::Error = vortex_error::VortexError -pub fn vortex_array::expr::stats::Stat::first() -> core::option::Option +pub fn core::option::Option::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub fn vortex_array::expr::stats::Stat::last() -> core::option::Option +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option -pub fn vortex_array::expr::stats::Stat::next(&self) -> core::option::Option +pub type core::option::Option::Error = vortex_error::VortexError -pub fn vortex_array::expr::stats::Stat::previous(&self) -> core::option::Option +pub fn core::option::Option::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult -impl num_enum::TryFromPrimitive for vortex_array::expr::stats::Stat +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option -pub type vortex_array::expr::stats::Stat::Error = num_enum::TryFromPrimitiveError +pub type core::option::Option::Error = vortex_error::VortexError -pub type vortex_array::expr::stats::Stat::Primitive = u8 +pub fn core::option::Option::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub const vortex_array::expr::stats::Stat::NAME: &'static str +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option -pub fn vortex_array::expr::stats::Stat::try_from_primitive(number: Self::Primitive) -> core::result::Result> +pub type core::option::Option::Error = vortex_error::VortexError -pub struct vortex_array::expr::stats::IsConstant +pub fn core::option::Option::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult -impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::IsConstant +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option -pub type vortex_array::expr::stats::IsConstant::Bound = vortex_array::expr::stats::Precision +pub type core::option::Option::Error = vortex_error::VortexError -pub const vortex_array::expr::stats::IsConstant::STAT: vortex_array::expr::stats::Stat +pub fn core::option::Option::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub struct vortex_array::expr::stats::IsSorted +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option -impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::IsSorted +pub type core::option::Option::Error = vortex_error::VortexError -pub type vortex_array::expr::stats::IsSorted::Bound = vortex_array::expr::stats::Precision +pub fn core::option::Option::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub const vortex_array::expr::stats::IsSorted::STAT: vortex_array::expr::stats::Stat +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option -pub struct vortex_array::expr::stats::IsStrictSorted +pub type core::option::Option::Error = vortex_error::VortexError -impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::IsStrictSorted +pub fn core::option::Option::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub type vortex_array::expr::stats::IsStrictSorted::Bound = vortex_array::expr::stats::Precision +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option -pub const vortex_array::expr::stats::IsStrictSorted::STAT: vortex_array::expr::stats::Stat +pub type core::option::Option::Error = vortex_error::VortexError -pub struct vortex_array::expr::stats::LowerBound(_) +pub fn core::option::Option::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult -impl vortex_array::expr::stats::LowerBound +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option -pub fn vortex_array::expr::stats::LowerBound::is_exact(&self) -> bool +pub type core::option::Option::Error = vortex_error::VortexError -impl core::clone::Clone for vortex_array::expr::stats::LowerBound +pub fn core::option::Option::try_from(value: &vortex_array::scalar::Scalar) -> core::result::Result -pub fn vortex_array::expr::stats::LowerBound::clone(&self) -> vortex_array::expr::stats::LowerBound +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option -impl core::cmp::Eq for vortex_array::expr::stats::LowerBound +pub type core::option::Option::Error = vortex_error::VortexError -impl core::cmp::PartialEq for vortex_array::expr::stats::LowerBound +pub fn core::option::Option::try_from(scalar: &vortex_array::scalar::Scalar) -> core::result::Result -pub fn vortex_array::expr::stats::LowerBound::eq(&self, other: &vortex_array::expr::stats::LowerBound) -> bool +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for f32 -impl vortex_array::expr::stats::StatBound for vortex_array::expr::stats::LowerBound +pub type f32::Error = vortex_error::VortexError -pub fn vortex_array::expr::stats::LowerBound::intersection(&self, other: &Self) -> core::option::Option>> +pub fn f32::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub fn vortex_array::expr::stats::LowerBound::into_value(self) -> vortex_array::expr::stats::Precision +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for f64 -pub fn vortex_array::expr::stats::LowerBound::lift(value: vortex_array::expr::stats::Precision) -> Self +pub type f64::Error = vortex_error::VortexError -pub fn vortex_array::expr::stats::LowerBound::to_exact(&self) -> core::option::Option<&T> +pub fn f64::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub fn vortex_array::expr::stats::LowerBound::union(&self, other: &Self) -> core::option::Option> +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for half::binary16::f16 -impl core::cmp::PartialEq for vortex_array::expr::stats::LowerBound +pub type half::binary16::f16::Error = vortex_error::VortexError -pub fn vortex_array::expr::stats::LowerBound::eq(&self, other: &T) -> bool +pub fn half::binary16::f16::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult -impl core::cmp::PartialOrd for vortex_array::expr::stats::LowerBound +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for i16 -pub fn vortex_array::expr::stats::LowerBound::partial_cmp(&self, other: &T) -> core::option::Option +pub type i16::Error = vortex_error::VortexError -impl core::fmt::Debug for vortex_array::expr::stats::LowerBound +pub fn i16::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub fn vortex_array::expr::stats::LowerBound::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for i32 -impl core::marker::StructuralPartialEq for vortex_array::expr::stats::LowerBound +pub type i32::Error = vortex_error::VortexError -pub struct vortex_array::expr::stats::Max +pub fn i32::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult -impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::Max +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for i64 -pub type vortex_array::expr::stats::Max::Bound = vortex_array::expr::stats::UpperBound +pub type i64::Error = vortex_error::VortexError -pub const vortex_array::expr::stats::Max::STAT: vortex_array::expr::stats::Stat +pub fn i64::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub struct vortex_array::expr::stats::Min +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for i8 -impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::Min +pub type i8::Error = vortex_error::VortexError -pub type vortex_array::expr::stats::Min::Bound = vortex_array::expr::stats::LowerBound +pub fn i8::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub const vortex_array::expr::stats::Min::STAT: vortex_array::expr::stats::Stat +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for u16 -pub struct vortex_array::expr::stats::NaNCount +pub type u16::Error = vortex_error::VortexError -impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::NaNCount +pub fn u16::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub type vortex_array::expr::stats::NaNCount::Bound = vortex_array::expr::stats::UpperBound +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for u32 -pub const vortex_array::expr::stats::NaNCount::STAT: vortex_array::expr::stats::Stat +pub type u32::Error = vortex_error::VortexError -pub struct vortex_array::expr::stats::NullCount +pub fn u32::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult -impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::NullCount +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for u64 -pub type vortex_array::expr::stats::NullCount::Bound = vortex_array::expr::stats::UpperBound +pub type u64::Error = vortex_error::VortexError -pub const vortex_array::expr::stats::NullCount::STAT: vortex_array::expr::stats::Stat +pub fn u64::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub struct vortex_array::expr::stats::Sum +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for u8 -impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::Sum +pub type u8::Error = vortex_error::VortexError -pub type vortex_array::expr::stats::Sum::Bound = vortex_array::expr::stats::Precision +pub fn u8::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub const vortex_array::expr::stats::Sum::STAT: vortex_array::expr::stats::Stat +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for usize -pub struct vortex_array::expr::stats::UncompressedSizeInBytes +pub type usize::Error = vortex_error::VortexError -impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::UncompressedSizeInBytes +pub fn usize::try_from(value: &vortex_array::scalar::Scalar) -> core::result::Result -pub type vortex_array::expr::stats::UncompressedSizeInBytes::Bound = vortex_array::expr::stats::UpperBound +impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for vortex_array::scalar::DecimalValue -pub const vortex_array::expr::stats::UncompressedSizeInBytes::STAT: vortex_array::expr::stats::Stat +pub type vortex_array::scalar::DecimalValue::Error = vortex_error::VortexError -pub struct vortex_array::expr::stats::UpperBound(_) +pub fn vortex_array::scalar::DecimalValue::try_from(scalar: &vortex_array::scalar::Scalar) -> core::result::Result -impl core::clone::Clone for vortex_array::expr::stats::UpperBound +impl core::convert::TryFrom for alloc::string::String -pub fn vortex_array::expr::stats::UpperBound::clone(&self) -> vortex_array::expr::stats::UpperBound +pub type alloc::string::String::Error = vortex_error::VortexError -impl core::cmp::Eq for vortex_array::expr::stats::UpperBound +pub fn alloc::string::String::try_from(value: vortex_array::scalar::Scalar) -> core::result::Result -impl core::cmp::PartialEq for vortex_array::expr::stats::UpperBound +impl core::convert::TryFrom for bool -pub fn vortex_array::expr::stats::UpperBound::eq(&self, other: &vortex_array::expr::stats::UpperBound) -> bool +pub type bool::Error = vortex_error::VortexError -impl vortex_array::expr::stats::StatBound for vortex_array::expr::stats::UpperBound +pub fn bool::try_from(value: vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub fn vortex_array::expr::stats::UpperBound::intersection(&self, other: &Self) -> core::option::Option>> +impl core::convert::TryFrom for core::option::Option -pub fn vortex_array::expr::stats::UpperBound::into_value(self) -> vortex_array::expr::stats::Precision +pub type core::option::Option::Error = vortex_error::VortexError -pub fn vortex_array::expr::stats::UpperBound::lift(value: vortex_array::expr::stats::Precision) -> Self +pub fn core::option::Option::try_from(value: vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub fn vortex_array::expr::stats::UpperBound::to_exact(&self) -> core::option::Option<&T> +impl core::convert::TryFrom for core::option::Option -pub fn vortex_array::expr::stats::UpperBound::union(&self, other: &Self) -> core::option::Option> +pub type core::option::Option::Error = vortex_error::VortexError -impl core::cmp::PartialEq for vortex_array::expr::stats::UpperBound +pub fn core::option::Option::try_from(scalar: vortex_array::scalar::Scalar) -> core::result::Result -pub fn vortex_array::expr::stats::UpperBound::eq(&self, other: &T) -> bool +impl core::convert::TryFrom for core::option::Option -impl core::cmp::PartialOrd for vortex_array::expr::stats::UpperBound +pub type core::option::Option::Error = vortex_error::VortexError -pub fn vortex_array::expr::stats::UpperBound::partial_cmp(&self, other: &T) -> core::option::Option +pub fn core::option::Option::try_from(scalar: vortex_array::scalar::Scalar) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::expr::stats::UpperBound +impl core::convert::TryFrom for core::option::Option -pub fn vortex_array::expr::stats::UpperBound::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type core::option::Option::Error = vortex_error::VortexError -impl core::marker::StructuralPartialEq for vortex_array::expr::stats::UpperBound +pub fn core::option::Option::try_from(scalar: vortex_array::scalar::Scalar) -> core::result::Result -pub trait vortex_array::expr::stats::StatBound: core::marker::Sized +impl core::convert::TryFrom for vortex_array::scalar::DecimalValue -pub fn vortex_array::expr::stats::StatBound::intersection(&self, other: &Self) -> core::option::Option> +pub type vortex_array::scalar::DecimalValue::Error = vortex_error::VortexError -pub fn vortex_array::expr::stats::StatBound::into_value(self) -> vortex_array::expr::stats::Precision +pub fn vortex_array::scalar::DecimalValue::try_from(scalar: vortex_array::scalar::Scalar) -> core::result::Result -pub fn vortex_array::expr::stats::StatBound::lift(value: vortex_array::expr::stats::Precision) -> Self +impl core::convert::TryFrom for vortex_buffer::ByteBuffer -pub fn vortex_array::expr::stats::StatBound::to_exact(&self) -> core::option::Option<&T> +pub type vortex_buffer::ByteBuffer::Error = vortex_error::VortexError -pub fn vortex_array::expr::stats::StatBound::union(&self, other: &Self) -> core::option::Option +pub fn vortex_buffer::ByteBuffer::try_from(scalar: vortex_array::scalar::Scalar) -> vortex_error::VortexResult -impl vortex_array::expr::stats::StatBound for vortex_array::expr::stats::LowerBound +impl core::convert::TryFrom for vortex_buffer::string::BufferString -pub fn vortex_array::expr::stats::LowerBound::intersection(&self, other: &Self) -> core::option::Option>> +pub type vortex_buffer::string::BufferString::Error = vortex_error::VortexError -pub fn vortex_array::expr::stats::LowerBound::into_value(self) -> vortex_array::expr::stats::Precision +pub fn vortex_buffer::string::BufferString::try_from(scalar: vortex_array::scalar::Scalar) -> core::result::Result -pub fn vortex_array::expr::stats::LowerBound::lift(value: vortex_array::expr::stats::Precision) -> Self +impl core::fmt::Debug for vortex_array::scalar::Scalar -pub fn vortex_array::expr::stats::LowerBound::to_exact(&self) -> core::option::Option<&T> +pub fn vortex_array::scalar::Scalar::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::expr::stats::LowerBound::union(&self, other: &Self) -> core::option::Option> +impl core::fmt::Display for vortex_array::scalar::Scalar -impl vortex_array::expr::stats::StatBound for vortex_array::expr::stats::Precision +pub fn vortex_array::scalar::Scalar::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::expr::stats::Precision::intersection(&self, other: &Self) -> core::option::Option> +impl core::hash::Hash for vortex_array::scalar::Scalar -pub fn vortex_array::expr::stats::Precision::into_value(self) -> vortex_array::expr::stats::Precision +pub fn vortex_array::scalar::Scalar::hash(&self, state: &mut H) -pub fn vortex_array::expr::stats::Precision::lift(value: vortex_array::expr::stats::Precision) -> Self +impl vortex_array::search_sorted::IndexOrd for vortex_array::ArrayRef -pub fn vortex_array::expr::stats::Precision::to_exact(&self) -> core::option::Option<&T> +pub fn vortex_array::ArrayRef::index_cmp(&self, idx: usize, elem: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult> -pub fn vortex_array::expr::stats::Precision::union(&self, other: &Self) -> core::option::Option +pub fn vortex_array::ArrayRef::index_ge(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -impl vortex_array::expr::stats::StatBound for vortex_array::expr::stats::UpperBound +pub fn vortex_array::ArrayRef::index_gt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub fn vortex_array::expr::stats::UpperBound::intersection(&self, other: &Self) -> core::option::Option>> +pub fn vortex_array::ArrayRef::index_le(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub fn vortex_array::expr::stats::UpperBound::into_value(self) -> vortex_array::expr::stats::Precision +pub fn vortex_array::ArrayRef::index_len(&self) -> usize -pub fn vortex_array::expr::stats::UpperBound::lift(value: vortex_array::expr::stats::Precision) -> Self +pub fn vortex_array::ArrayRef::index_lt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub fn vortex_array::expr::stats::UpperBound::to_exact(&self) -> core::option::Option<&T> +impl<'a, T> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for alloc::vec::Vec where T: for<'b> core::convert::TryFrom<&'b vortex_array::scalar::Scalar, Error = vortex_error::VortexError> -pub fn vortex_array::expr::stats::UpperBound::union(&self, other: &Self) -> core::option::Option> +pub type alloc::vec::Vec::Error = vortex_error::VortexError -pub trait vortex_array::expr::stats::StatType +pub fn alloc::vec::Vec::try_from(value: &'a vortex_array::scalar::Scalar) -> core::result::Result -pub type vortex_array::expr::stats::StatType::Bound: vortex_array::expr::stats::StatBound +impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for alloc::string::String -pub const vortex_array::expr::stats::StatType::STAT: vortex_array::expr::stats::Stat +pub type alloc::string::String::Error = vortex_error::VortexError -impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::IsConstant +pub fn alloc::string::String::try_from(value: &'a vortex_array::scalar::Scalar) -> core::result::Result -pub type vortex_array::expr::stats::IsConstant::Bound = vortex_array::expr::stats::Precision +impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for core::option::Option -pub const vortex_array::expr::stats::IsConstant::STAT: vortex_array::expr::stats::Stat +pub type core::option::Option::Error = vortex_error::VortexError -impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::IsSorted +pub fn core::option::Option::try_from(scalar: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub type vortex_array::expr::stats::IsSorted::Bound = vortex_array::expr::stats::Precision +impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for core::option::Option -pub const vortex_array::expr::stats::IsSorted::STAT: vortex_array::expr::stats::Stat +pub type core::option::Option::Error = vortex_error::VortexError -impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::IsStrictSorted +pub fn core::option::Option::try_from(scalar: &'a vortex_array::scalar::Scalar) -> core::result::Result -pub type vortex_array::expr::stats::IsStrictSorted::Bound = vortex_array::expr::stats::Precision +impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::BinaryScalar<'a> -pub const vortex_array::expr::stats::IsStrictSorted::STAT: vortex_array::expr::stats::Stat +pub type vortex_array::scalar::BinaryScalar<'a>::Error = vortex_error::VortexError -impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::Max +pub fn vortex_array::scalar::BinaryScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub type vortex_array::expr::stats::Max::Bound = vortex_array::expr::stats::UpperBound +impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::BoolScalar<'a> -pub const vortex_array::expr::stats::Max::STAT: vortex_array::expr::stats::Stat +pub type vortex_array::scalar::BoolScalar<'a>::Error = vortex_error::VortexError -impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::Min +pub fn vortex_array::scalar::BoolScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub type vortex_array::expr::stats::Min::Bound = vortex_array::expr::stats::LowerBound +impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::DecimalScalar<'a> -pub const vortex_array::expr::stats::Min::STAT: vortex_array::expr::stats::Stat +pub type vortex_array::scalar::DecimalScalar<'a>::Error = vortex_error::VortexError -impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::Sum +pub fn vortex_array::scalar::DecimalScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub type vortex_array::expr::stats::Sum::Bound = vortex_array::expr::stats::Precision +impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::ExtScalar<'a> -pub const vortex_array::expr::stats::Sum::STAT: vortex_array::expr::stats::Stat +pub type vortex_array::scalar::ExtScalar<'a>::Error = vortex_error::VortexError -impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::NaNCount +pub fn vortex_array::scalar::ExtScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub type vortex_array::expr::stats::NaNCount::Bound = vortex_array::expr::stats::UpperBound +impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::ListScalar<'a> -pub const vortex_array::expr::stats::NaNCount::STAT: vortex_array::expr::stats::Stat +pub type vortex_array::scalar::ListScalar<'a>::Error = vortex_error::VortexError -impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::NullCount +pub fn vortex_array::scalar::ListScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub type vortex_array::expr::stats::NullCount::Bound = vortex_array::expr::stats::UpperBound +impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::PrimitiveScalar<'a> -pub const vortex_array::expr::stats::NullCount::STAT: vortex_array::expr::stats::Stat +pub type vortex_array::scalar::PrimitiveScalar<'a>::Error = vortex_error::VortexError -impl vortex_array::expr::stats::StatType for vortex_array::expr::stats::UncompressedSizeInBytes +pub fn vortex_array::scalar::PrimitiveScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub type vortex_array::expr::stats::UncompressedSizeInBytes::Bound = vortex_array::expr::stats::UpperBound +impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::StructScalar<'a> -pub const vortex_array::expr::stats::UncompressedSizeInBytes::STAT: vortex_array::expr::stats::Stat +pub type vortex_array::scalar::StructScalar<'a>::Error = vortex_error::VortexError -pub trait vortex_array::expr::stats::StatsProvider +pub fn vortex_array::scalar::StructScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub fn vortex_array::expr::stats::StatsProvider::get(&self, stat: vortex_array::expr::stats::Stat) -> core::option::Option> +impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::Utf8Scalar<'a> -pub fn vortex_array::expr::stats::StatsProvider::is_empty(&self) -> bool +pub type vortex_array::scalar::Utf8Scalar<'a>::Error = vortex_error::VortexError -pub fn vortex_array::expr::stats::StatsProvider::len(&self) -> usize +pub fn vortex_array::scalar::Utf8Scalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult -impl vortex_array::expr::stats::StatsProvider for vortex_array::stats::MutTypedStatsSetRef<'_, '_> +impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_buffer::ByteBuffer -pub fn vortex_array::stats::MutTypedStatsSetRef<'_, '_>::get(&self, stat: vortex_array::expr::stats::Stat) -> core::option::Option> +pub type vortex_buffer::ByteBuffer::Error = vortex_error::VortexError -pub fn vortex_array::stats::MutTypedStatsSetRef<'_, '_>::is_empty(&self) -> bool +pub fn vortex_buffer::ByteBuffer::try_from(scalar: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub fn vortex_array::stats::MutTypedStatsSetRef<'_, '_>::len(&self) -> usize +impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_buffer::string::BufferString -impl vortex_array::expr::stats::StatsProvider for vortex_array::stats::StatsSetRef<'_> +pub type vortex_buffer::string::BufferString::Error = vortex_error::VortexError -pub fn vortex_array::stats::StatsSetRef<'_>::get(&self, stat: vortex_array::expr::stats::Stat) -> core::option::Option> +pub fn vortex_buffer::string::BufferString::try_from(scalar: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub fn vortex_array::stats::StatsSetRef<'_>::is_empty(&self) -> bool +impl core::convert::From> for vortex_array::scalar::Scalar where T: vortex_array::dtype::NativeDType, vortex_array::scalar::Scalar: core::convert::From -pub fn vortex_array::stats::StatsSetRef<'_>::len(&self) -> usize +pub fn vortex_array::scalar::Scalar::from(vec: alloc::vec::Vec) -> Self -impl vortex_array::expr::stats::StatsProvider for vortex_array::stats::TypedStatsSetRef<'_, '_> +impl core::convert::From>> for vortex_array::scalar::Scalar where T: vortex_array::dtype::NativeDType, vortex_array::scalar::Scalar: core::convert::From -pub fn vortex_array::stats::TypedStatsSetRef<'_, '_>::get(&self, stat: vortex_array::expr::stats::Stat) -> core::option::Option> +pub fn vortex_array::scalar::Scalar::from(vec: core::option::Option>) -> Self -pub fn vortex_array::stats::TypedStatsSetRef<'_, '_>::is_empty(&self) -> bool +impl core::convert::TryFrom for alloc::vec::Vec where T: for<'b> core::convert::TryFrom<&'b vortex_array::scalar::Scalar, Error = vortex_error::VortexError> -pub fn vortex_array::stats::TypedStatsSetRef<'_, '_>::len(&self) -> usize +pub type alloc::vec::Vec::Error = vortex_error::VortexError -pub trait vortex_array::expr::stats::StatsProviderExt: vortex_array::expr::stats::StatsProvider +pub fn alloc::vec::Vec::try_from(value: vortex_array::scalar::Scalar) -> core::result::Result -pub fn vortex_array::expr::stats::StatsProviderExt::get_as core::convert::TryFrom<&'a vortex_array::scalar::Scalar, Error = vortex_error::VortexError>>(&self, stat: vortex_array::expr::stats::Stat) -> core::option::Option> +pub struct vortex_array::scalar::StructScalar<'a> -pub fn vortex_array::expr::stats::StatsProviderExt::get_as_bound(&self) -> core::option::Option<::Bound> where S: vortex_array::expr::stats::StatType, U: for<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar, Error = vortex_error::VortexError> +impl<'a> vortex_array::scalar::StructScalar<'a> -pub fn vortex_array::expr::stats::StatsProviderExt::get_scalar_bound>(&self) -> core::option::Option<::Bound> +pub fn vortex_array::scalar::StructScalar<'a>::cast(&self, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult -impl vortex_array::expr::stats::StatsProviderExt for S where S: vortex_array::expr::stats::StatsProvider +pub fn vortex_array::scalar::StructScalar<'a>::dtype(&self) -> &'a vortex_array::dtype::DType -pub fn S::get_as core::convert::TryFrom<&'a vortex_array::scalar::Scalar, Error = vortex_error::VortexError>>(&self, stat: vortex_array::expr::stats::Stat) -> core::option::Option> +pub fn vortex_array::scalar::StructScalar<'a>::field(&self, name: impl core::convert::AsRef) -> core::option::Option -pub fn S::get_as_bound(&self) -> core::option::Option<::Bound> where S: vortex_array::expr::stats::StatType, U: for<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar, Error = vortex_error::VortexError> +pub fn vortex_array::scalar::StructScalar<'a>::field_by_idx(&self, idx: usize) -> core::option::Option -pub fn S::get_scalar_bound>(&self) -> core::option::Option<::Bound> +pub fn vortex_array::scalar::StructScalar<'a>::fields_iter(&self) -> core::option::Option> -pub mod vortex_array::expr::transform +pub fn vortex_array::scalar::StructScalar<'a>::is_null(&self) -> bool -pub struct vortex_array::expr::transform::PartitionedExpr +pub fn vortex_array::scalar::StructScalar<'a>::names(&self) -> &vortex_array::dtype::FieldNames -pub vortex_array::expr::transform::PartitionedExpr::partition_annotations: alloc::boxed::Box<[A]> +pub fn vortex_array::scalar::StructScalar<'a>::project(&self, projection: &[vortex_array::dtype::FieldName]) -> vortex_error::VortexResult -pub vortex_array::expr::transform::PartitionedExpr::partition_dtypes: alloc::boxed::Box<[vortex_array::dtype::DType]> +pub fn vortex_array::scalar::StructScalar<'a>::struct_fields(&self) -> &vortex_array::dtype::StructFields -pub vortex_array::expr::transform::PartitionedExpr::partition_names: vortex_array::dtype::FieldNames +impl core::cmp::Eq for vortex_array::scalar::StructScalar<'_> -pub vortex_array::expr::transform::PartitionedExpr::partitions: alloc::boxed::Box<[vortex_array::expr::Expression]> +impl core::cmp::PartialEq for vortex_array::scalar::StructScalar<'_> -pub vortex_array::expr::transform::PartitionedExpr::root: vortex_array::expr::Expression +pub fn vortex_array::scalar::StructScalar<'_>::eq(&self, other: &Self) -> bool -impl vortex_array::expr::transform::PartitionedExpr where vortex_array::dtype::FieldName: core::convert::From +impl core::cmp::PartialOrd for vortex_array::scalar::StructScalar<'_> -pub fn vortex_array::expr::transform::PartitionedExpr::find_partition(&self, id: &A) -> core::option::Option<&vortex_array::expr::Expression> +pub fn vortex_array::scalar::StructScalar<'_>::partial_cmp(&self, other: &Self) -> core::option::Option -impl core::fmt::Debug for vortex_array::expr::transform::PartitionedExpr +impl core::fmt::Display for vortex_array::scalar::StructScalar<'_> -pub fn vortex_array::expr::transform::PartitionedExpr::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar::StructScalar<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::fmt::Display for vortex_array::expr::transform::PartitionedExpr +impl core::hash::Hash for vortex_array::scalar::StructScalar<'_> -pub fn vortex_array::expr::transform::PartitionedExpr::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar::StructScalar<'_>::hash(&self, state: &mut H) -pub fn vortex_array::expr::transform::coerce_expression(expr: vortex_array::expr::Expression, scope: &vortex_array::dtype::DType) -> vortex_error::VortexResult +impl<'a> core::clone::Clone for vortex_array::scalar::StructScalar<'a> -pub fn vortex_array::expr::transform::partition(expr: vortex_array::expr::Expression, scope: &vortex_array::dtype::DType, annotate_fn: A) -> vortex_error::VortexResult::Annotation>> where ::Annotation: core::fmt::Display, vortex_array::dtype::FieldName: core::convert::From<::Annotation> +pub fn vortex_array::scalar::StructScalar<'a>::clone(&self) -> vortex_array::scalar::StructScalar<'a> -pub fn vortex_array::expr::transform::replace(expr: vortex_array::expr::Expression, needle: &vortex_array::expr::Expression, replacement: vortex_array::expr::Expression) -> vortex_array::expr::Expression +impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::StructScalar<'a> -pub fn vortex_array::expr::transform::replace_root_fields(expr: vortex_array::expr::Expression, fields: &vortex_array::dtype::StructFields) -> vortex_array::expr::Expression +pub type vortex_array::scalar::StructScalar<'a>::Error = vortex_error::VortexError -pub mod vortex_array::expr::traversal +pub fn vortex_array::scalar::StructScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult -pub enum vortex_array::expr::traversal::FoldDown +impl<'a> core::fmt::Debug for vortex_array::scalar::StructScalar<'a> -pub vortex_array::expr::traversal::FoldDown::Continue +pub fn vortex_array::scalar::StructScalar<'a>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub vortex_array::expr::traversal::FoldDown::Skip(R) +pub struct vortex_array::scalar::Utf8Scalar<'a> -pub vortex_array::expr::traversal::FoldDown::Stop(R) +impl<'a> vortex_array::scalar::Utf8Scalar<'a> -impl core::fmt::Debug for vortex_array::expr::traversal::FoldDown +pub fn vortex_array::scalar::Utf8Scalar<'a>::dtype(&self) -> &'a vortex_array::dtype::DType -pub fn vortex_array::expr::traversal::FoldDown::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar::Utf8Scalar<'a>::is_empty(&self) -> core::option::Option -pub enum vortex_array::expr::traversal::FoldDownContext +pub fn vortex_array::scalar::Utf8Scalar<'a>::len(&self) -> core::option::Option -pub vortex_array::expr::traversal::FoldDownContext::Continue(C) +pub fn vortex_array::scalar::Utf8Scalar<'a>::try_new(dtype: &'a vortex_array::dtype::DType, value: core::option::Option<&'a vortex_array::scalar::ScalarValue>) -> vortex_error::VortexResult -pub vortex_array::expr::traversal::FoldDownContext::Skip(R) +pub fn vortex_array::scalar::Utf8Scalar<'a>::value(&self) -> core::option::Option<&'a vortex_buffer::string::BufferString> -pub vortex_array::expr::traversal::FoldDownContext::Stop(R) +impl core::cmp::Ord for vortex_array::scalar::Utf8Scalar<'_> -impl core::fmt::Debug for vortex_array::expr::traversal::FoldDownContext +pub fn vortex_array::scalar::Utf8Scalar<'_>::cmp(&self, other: &Self) -> core::cmp::Ordering -pub fn vortex_array::expr::traversal::FoldDownContext::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl core::cmp::PartialEq for vortex_array::scalar::Utf8Scalar<'_> -pub enum vortex_array::expr::traversal::FoldUp +pub fn vortex_array::scalar::Utf8Scalar<'_>::eq(&self, other: &Self) -> bool -pub vortex_array::expr::traversal::FoldUp::Continue(R) +impl core::cmp::PartialOrd for vortex_array::scalar::Utf8Scalar<'_> -pub vortex_array::expr::traversal::FoldUp::Stop(R) +pub fn vortex_array::scalar::Utf8Scalar<'_>::partial_cmp(&self, other: &Self) -> core::option::Option -impl vortex_array::expr::traversal::FoldUp +impl core::fmt::Display for vortex_array::scalar::Utf8Scalar<'_> -pub fn vortex_array::expr::traversal::FoldUp::value(self) -> R +pub fn vortex_array::scalar::Utf8Scalar<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::fmt::Debug for vortex_array::expr::traversal::FoldUp +impl<'a> core::clone::Clone for vortex_array::scalar::Utf8Scalar<'a> -pub fn vortex_array::expr::traversal::FoldUp::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar::Utf8Scalar<'a>::clone(&self) -> vortex_array::scalar::Utf8Scalar<'a> -pub enum vortex_array::expr::traversal::TraversalOrder +impl<'a> core::cmp::Eq for vortex_array::scalar::Utf8Scalar<'a> -pub vortex_array::expr::traversal::TraversalOrder::Continue +impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::Utf8Scalar<'a> -pub vortex_array::expr::traversal::TraversalOrder::Skip +pub type vortex_array::scalar::Utf8Scalar<'a>::Error = vortex_error::VortexError -pub vortex_array::expr::traversal::TraversalOrder::Stop +pub fn vortex_array::scalar::Utf8Scalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult -impl vortex_array::expr::traversal::TraversalOrder +impl<'a> core::fmt::Debug for vortex_array::scalar::Utf8Scalar<'a> -pub fn vortex_array::expr::traversal::TraversalOrder::visit_children vortex_error::VortexResult>(self, f: F) -> vortex_error::VortexResult +pub fn vortex_array::scalar::Utf8Scalar<'a>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::expr::traversal::TraversalOrder::visit_parent vortex_error::VortexResult>(self, f: F) -> vortex_error::VortexResult +impl<'a> core::hash::Hash for vortex_array::scalar::Utf8Scalar<'a> -impl core::clone::Clone for vortex_array::expr::traversal::TraversalOrder +pub fn vortex_array::scalar::Utf8Scalar<'a>::hash<__H: core::hash::Hasher>(&self, state: &mut __H) -pub fn vortex_array::expr::traversal::TraversalOrder::clone(&self) -> vortex_array::expr::traversal::TraversalOrder +pub struct vortex_array::scalar::VariantScalar<'a> -impl core::cmp::Eq for vortex_array::expr::traversal::TraversalOrder +impl<'a> vortex_array::scalar::VariantScalar<'a> -impl core::cmp::PartialEq for vortex_array::expr::traversal::TraversalOrder +pub fn vortex_array::scalar::VariantScalar<'a>::dtype(&self) -> &'a vortex_array::dtype::DType -pub fn vortex_array::expr::traversal::TraversalOrder::eq(&self, other: &vortex_array::expr::traversal::TraversalOrder) -> bool +pub fn vortex_array::scalar::VariantScalar<'a>::is_null(&self) -> bool -impl core::fmt::Debug for vortex_array::expr::traversal::TraversalOrder +pub fn vortex_array::scalar::VariantScalar<'a>::is_variant_null(&self) -> core::option::Option -pub fn vortex_array::expr::traversal::TraversalOrder::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar::VariantScalar<'a>::is_zero(&self) -> core::option::Option -impl core::marker::StructuralPartialEq for vortex_array::expr::traversal::TraversalOrder +pub fn vortex_array::scalar::VariantScalar<'a>::value(&self) -> core::option::Option<&'a vortex_array::scalar::Scalar> -pub struct vortex_array::expr::traversal::ReferenceCollector +impl core::fmt::Display for vortex_array::scalar::VariantScalar<'_> -impl vortex_array::expr::traversal::ReferenceCollector +pub fn vortex_array::scalar::VariantScalar<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::expr::traversal::ReferenceCollector::into_fields(self) -> vortex_utils::aliases::hash_set::HashSet +impl<'a> core::clone::Clone for vortex_array::scalar::VariantScalar<'a> -pub fn vortex_array::expr::traversal::ReferenceCollector::new() -> Self +pub fn vortex_array::scalar::VariantScalar<'a>::clone(&self) -> vortex_array::scalar::VariantScalar<'a> -pub fn vortex_array::expr::traversal::ReferenceCollector::with_set(set: vortex_utils::aliases::hash_set::HashSet) -> Self +impl<'a> core::fmt::Debug for vortex_array::scalar::VariantScalar<'a> -impl core::default::Default for vortex_array::expr::traversal::ReferenceCollector +pub fn vortex_array::scalar::VariantScalar<'a>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::expr::traversal::ReferenceCollector::default() -> vortex_array::expr::traversal::ReferenceCollector +impl<'a> core::marker::Copy for vortex_array::scalar::VariantScalar<'a> -impl vortex_array::expr::traversal::NodeVisitor<'_> for vortex_array::expr::traversal::ReferenceCollector +pub trait vortex_array::scalar::ScalarTruncation: core::marker::Send + core::marker::Sized -pub type vortex_array::expr::traversal::ReferenceCollector::NodeTy = vortex_array::expr::Expression +pub fn vortex_array::scalar::ScalarTruncation::from_scalar(value: vortex_array::scalar::Scalar) -> vortex_error::VortexResult> -pub fn vortex_array::expr::traversal::ReferenceCollector::visit_down(&mut self, node: &'a Self::NodeTy) -> vortex_error::VortexResult +pub fn vortex_array::scalar::ScalarTruncation::into_scalar(self, nullability: vortex_array::dtype::Nullability) -> vortex_array::scalar::Scalar -pub fn vortex_array::expr::traversal::ReferenceCollector::visit_up(&mut self, node: &vortex_array::expr::Expression) -> vortex_error::VortexResult +pub fn vortex_array::scalar::ScalarTruncation::len(&self) -> usize -pub struct vortex_array::expr::traversal::Transformed +pub fn vortex_array::scalar::ScalarTruncation::lower_bound(self, max_length: usize) -> Self -pub vortex_array::expr::traversal::Transformed::changed: bool +pub fn vortex_array::scalar::ScalarTruncation::upper_bound(self, max_length: usize) -> core::option::Option -pub vortex_array::expr::traversal::Transformed::order: vortex_array::expr::traversal::TraversalOrder +impl vortex_array::scalar::ScalarTruncation for vortex_buffer::ByteBuffer -pub vortex_array::expr::traversal::Transformed::value: T +pub fn vortex_buffer::ByteBuffer::from_scalar(value: vortex_array::scalar::Scalar) -> vortex_error::VortexResult> -impl vortex_array::expr::traversal::Transformed +pub fn vortex_buffer::ByteBuffer::into_scalar(self, nullability: vortex_array::dtype::Nullability) -> vortex_array::scalar::Scalar -pub fn vortex_array::expr::traversal::Transformed::into_inner(self) -> T +pub fn vortex_buffer::ByteBuffer::len(&self) -> usize -pub fn vortex_array::expr::traversal::Transformed::map O>(self, f: F) -> vortex_array::expr::traversal::Transformed +pub fn vortex_buffer::ByteBuffer::lower_bound(self, max_length: usize) -> Self -pub fn vortex_array::expr::traversal::Transformed::no(value: T) -> Self +pub fn vortex_buffer::ByteBuffer::upper_bound(self, max_length: usize) -> core::option::Option -pub fn vortex_array::expr::traversal::Transformed::yes(value: T) -> Self +impl vortex_array::scalar::ScalarTruncation for vortex_buffer::string::BufferString -impl core::clone::Clone for vortex_array::expr::traversal::Transformed +pub fn vortex_buffer::string::BufferString::from_scalar(value: vortex_array::scalar::Scalar) -> vortex_error::VortexResult> -pub fn vortex_array::expr::traversal::Transformed::clone(&self) -> vortex_array::expr::traversal::Transformed +pub fn vortex_buffer::string::BufferString::into_scalar(self, nullability: vortex_array::dtype::Nullability) -> vortex_array::scalar::Scalar -impl core::fmt::Debug for vortex_array::expr::traversal::Transformed +pub fn vortex_buffer::string::BufferString::len(&self) -> usize -pub fn vortex_array::expr::traversal::Transformed::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_buffer::string::BufferString::lower_bound(self, max_length: usize) -> Self -pub trait vortex_array::expr::traversal::Node: core::marker::Sized + core::clone::Clone +pub fn vortex_buffer::string::BufferString::upper_bound(self, max_length: usize) -> core::option::Option -pub fn vortex_array::expr::traversal::Node::apply_children<'a, F: core::ops::function::FnMut(&'a Self) -> vortex_error::VortexResult>(&'a self, f: F) -> vortex_error::VortexResult +pub trait vortex_array::scalar::StringLike: vortex_array::scalar::typed_view::utf8::private::Sealed + core::marker::Sized -pub fn vortex_array::expr::traversal::Node::children_count(&self) -> usize +pub fn vortex_array::scalar::StringLike::increment(self) -> core::result::Result -pub fn vortex_array::expr::traversal::Node::iter_children(&self, f: impl core::ops::function::FnOnce(&mut dyn core::iter::traits::iterator::Iterator) -> T) -> T +impl vortex_array::scalar::StringLike for alloc::string::String -pub fn vortex_array::expr::traversal::Node::map_children vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult> +pub fn alloc::string::String::increment(self) -> core::result::Result -impl vortex_array::expr::traversal::Node for vortex_array::expr::Expression +impl vortex_array::scalar::StringLike for vortex_buffer::string::BufferString -pub fn vortex_array::expr::Expression::apply_children<'a, F: core::ops::function::FnMut(&'a Self) -> vortex_error::VortexResult>(&'a self, f: F) -> vortex_error::VortexResult +pub fn vortex_buffer::string::BufferString::increment(self) -> core::result::Result -pub fn vortex_array::expr::Expression::children_count(&self) -> usize +pub fn vortex_array::scalar::lower_bound(value: core::option::Option, max_length: usize, nullability: vortex_array::dtype::Nullability) -> core::option::Option<(vortex_array::scalar::Scalar, bool)> -pub fn vortex_array::expr::Expression::iter_children(&self, f: impl core::ops::function::FnOnce(&mut dyn core::iter::traits::iterator::Iterator) -> T) -> T +pub fn vortex_array::scalar::upper_bound(value: core::option::Option, max_length: usize, nullability: vortex_array::dtype::Nullability) -> core::option::Option<(vortex_array::scalar::Scalar, bool)> -pub fn vortex_array::expr::Expression::map_children vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult> +pub mod vortex_array::scalar_fn -pub trait vortex_array::expr::traversal::NodeContainer<'a, T: 'a>: core::marker::Sized +pub mod vortex_array::scalar_fn::fns -pub fn vortex_array::expr::traversal::NodeContainer::apply_elements vortex_error::VortexResult>(&'a self, f: F) -> vortex_error::VortexResult +pub mod vortex_array::scalar_fn::fns::between -pub fn vortex_array::expr::traversal::NodeContainer::map_elements vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult> +pub enum vortex_array::scalar_fn::fns::between::StrictComparison -impl<'a, T, C> vortex_array::expr::traversal::NodeContainer<'a, T> for alloc::sync::Arc where T: 'a, C: vortex_array::expr::traversal::NodeContainer<'a, T> + core::clone::Clone +pub vortex_array::scalar_fn::fns::between::StrictComparison::NonStrict -pub fn alloc::sync::Arc::apply_elements vortex_error::VortexResult>(&'a self, f: F) -> vortex_error::VortexResult +pub vortex_array::scalar_fn::fns::between::StrictComparison::Strict -pub fn alloc::sync::Arc::map_elements vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult>> +impl vortex_array::scalar_fn::fns::between::StrictComparison -impl<'a, T: 'a, C: vortex_array::expr::traversal::NodeContainer<'a, T>> vortex_array::expr::traversal::NodeContainer<'a, T> for [C; 2] +pub const fn vortex_array::scalar_fn::fns::between::StrictComparison::is_strict(&self) -> bool -pub fn [C; 2]::apply_elements vortex_error::VortexResult>(&'a self, f: F) -> vortex_error::VortexResult +pub const fn vortex_array::scalar_fn::fns::between::StrictComparison::to_compare_operator(&self) -> vortex_array::scalar_fn::fns::operators::CompareOperator -pub fn [C; 2]::map_elements vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult> +pub const fn vortex_array::scalar_fn::fns::between::StrictComparison::to_operator(&self) -> vortex_array::scalar_fn::fns::operators::Operator -impl<'a, T: 'a, C: vortex_array::expr::traversal::NodeContainer<'a, T>> vortex_array::expr::traversal::NodeContainer<'a, T> for alloc::boxed::Box +impl core::clone::Clone for vortex_array::scalar_fn::fns::between::StrictComparison -pub fn alloc::boxed::Box::apply_elements vortex_error::VortexResult>(&'a self, f: F) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::between::StrictComparison::clone(&self) -> vortex_array::scalar_fn::fns::between::StrictComparison -pub fn alloc::boxed::Box::map_elements vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult>> +impl core::cmp::Eq for vortex_array::scalar_fn::fns::between::StrictComparison -impl<'a, T: 'a, C: vortex_array::expr::traversal::NodeContainer<'a, T>> vortex_array::expr::traversal::NodeContainer<'a, T> for alloc::vec::Vec +impl core::cmp::PartialEq for vortex_array::scalar_fn::fns::between::StrictComparison -pub fn alloc::vec::Vec::apply_elements vortex_error::VortexResult>(&'a self, f: F) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::between::StrictComparison::eq(&self, other: &vortex_array::scalar_fn::fns::between::StrictComparison) -> bool -pub fn alloc::vec::Vec::map_elements vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult> +impl core::fmt::Debug for vortex_array::scalar_fn::fns::between::StrictComparison -impl<'a> vortex_array::expr::traversal::NodeContainer<'a, vortex_array::expr::Expression> for vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::between::StrictComparison::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::expr::Expression::apply_elements vortex_error::VortexResult>(&'a self, f: F) -> vortex_error::VortexResult +impl core::hash::Hash for vortex_array::scalar_fn::fns::between::StrictComparison -pub fn vortex_array::expr::Expression::map_elements vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::between::StrictComparison::hash<__H: core::hash::Hasher>(&self, state: &mut __H) -pub trait vortex_array::expr::traversal::NodeExt: vortex_array::expr::traversal::Node +impl core::marker::Copy for vortex_array::scalar_fn::fns::between::StrictComparison -pub fn vortex_array::expr::traversal::NodeExt::accept<'a, V: vortex_array::expr::traversal::NodeVisitor<'a, NodeTy = Self>>(&'a self, visitor: &mut V) -> vortex_error::VortexResult +impl core::marker::StructuralPartialEq for vortex_array::scalar_fn::fns::between::StrictComparison -pub fn vortex_array::expr::traversal::NodeExt::fold>(self, folder: &mut F) -> vortex_error::VortexResult> +pub struct vortex_array::scalar_fn::fns::between::Between -pub fn vortex_array::expr::traversal::NodeExt::fold_context>(self, ctx: &::Context, folder: &mut F) -> vortex_error::VortexResult> +impl core::clone::Clone for vortex_array::scalar_fn::fns::between::Between -pub fn vortex_array::expr::traversal::NodeExt::rewrite>(self, rewriter: &mut R) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::between::Between::clone(&self) -> vortex_array::scalar_fn::fns::between::Between -pub fn vortex_array::expr::traversal::NodeExt::transform(self, down: F, up: G) -> vortex_error::VortexResult> where F: core::ops::function::FnMut(Self) -> vortex_error::VortexResult>, G: core::ops::function::FnMut(Self) -> vortex_error::VortexResult> +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::between::Between -pub fn vortex_array::expr::traversal::NodeExt::transform_down vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult> +pub type vortex_array::scalar_fn::fns::between::Between::Options = vortex_array::scalar_fn::fns::between::BetweenOptions -pub fn vortex_array::expr::traversal::NodeExt::transform_up vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::between::Between::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity -impl vortex_array::expr::traversal::NodeExt for T +pub fn vortex_array::scalar_fn::fns::between::Between::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -pub fn T::accept<'a, V: vortex_array::expr::traversal::NodeVisitor<'a, NodeTy = Self>>(&'a self, visitor: &mut V) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::between::Between::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -pub fn T::fold>(self, folder: &mut F) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::between::Between::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn T::fold_context>(self, ctx: &::Context, folder: &mut F) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::between::Between::execute(&self, options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn T::rewrite>(self, rewriter: &mut R) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::between::Between::fmt_sql(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn T::transform(self, down: F, up: G) -> vortex_error::VortexResult> where F: core::ops::function::FnMut(Self) -> vortex_error::VortexResult>, G: core::ops::function::FnMut(Self) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::between::Between::id(&self) -> vortex_array::scalar_fn::ScalarFnId -pub fn T::transform_down vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::between::Between::is_fallible(&self, _options: &Self::Options) -> bool -pub fn T::transform_up vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::between::Between::is_null_sensitive(&self, _instance: &Self::Options) -> bool -pub trait vortex_array::expr::traversal::NodeFolder +pub fn vortex_array::scalar_fn::fns::between::Between::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub type vortex_array::expr::traversal::NodeFolder::NodeTy: vortex_array::expr::traversal::Node +pub fn vortex_array::scalar_fn::fns::between::Between::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -pub type vortex_array::expr::traversal::NodeFolder::Result +pub fn vortex_array::scalar_fn::fns::between::Between::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> -pub fn vortex_array::expr::traversal::NodeFolder::visit_down(&mut self, _node: &Self::NodeTy) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::between::Between::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -pub fn vortex_array::expr::traversal::NodeFolder::visit_up(&mut self, _node: Self::NodeTy, _children: alloc::vec::Vec) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::between::Between::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub trait vortex_array::expr::traversal::NodeFolderContext +pub fn vortex_array::scalar_fn::fns::between::Between::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub type vortex_array::expr::traversal::NodeFolderContext::Context +pub fn vortex_array::scalar_fn::fns::between::Between::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub type vortex_array::expr::traversal::NodeFolderContext::NodeTy: vortex_array::expr::traversal::Node +pub fn vortex_array::scalar_fn::fns::between::Between::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub type vortex_array::expr::traversal::NodeFolderContext::Result +pub struct vortex_array::scalar_fn::fns::between::BetweenExecuteAdaptor(pub V) -pub fn vortex_array::expr::traversal::NodeFolderContext::visit_down(&mut self, _ctx: &Self::Context, _node: &Self::NodeTy) -> vortex_error::VortexResult> +impl core::default::Default for vortex_array::scalar_fn::fns::between::BetweenExecuteAdaptor -pub fn vortex_array::expr::traversal::NodeFolderContext::visit_up(&mut self, _node: Self::NodeTy, _context: &Self::Context, _children: alloc::vec::Vec) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::between::BetweenExecuteAdaptor::default() -> vortex_array::scalar_fn::fns::between::BetweenExecuteAdaptor -pub trait vortex_array::expr::traversal::NodeRefContainer<'a, T: 'a>: core::marker::Sized +impl core::fmt::Debug for vortex_array::scalar_fn::fns::between::BetweenExecuteAdaptor -pub fn vortex_array::expr::traversal::NodeRefContainer::apply_ref_elements vortex_error::VortexResult>(&self, f: F) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::between::BetweenExecuteAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl<'a, T: 'a, C: vortex_array::expr::traversal::NodeContainer<'a, T>> vortex_array::expr::traversal::NodeRefContainer<'a, T> for &'a [C] +impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::between::BetweenExecuteAdaptor where V: vortex_array::scalar_fn::fns::between::BetweenKernel -pub fn &'a [C]::apply_ref_elements vortex_error::VortexResult>(&self, f: F) -> vortex_error::VortexResult +pub type vortex_array::scalar_fn::fns::between::BetweenExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -pub trait vortex_array::expr::traversal::NodeRewriter: core::marker::Sized +pub fn vortex_array::scalar_fn::fns::between::BetweenExecuteAdaptor::execute_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::between::Between>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub type vortex_array::expr::traversal::NodeRewriter::NodeTy: vortex_array::expr::traversal::Node +pub struct vortex_array::scalar_fn::fns::between::BetweenOptions -pub fn vortex_array::expr::traversal::NodeRewriter::visit_down(&mut self, node: Self::NodeTy) -> vortex_error::VortexResult> +pub vortex_array::scalar_fn::fns::between::BetweenOptions::lower_strict: vortex_array::scalar_fn::fns::between::StrictComparison -pub fn vortex_array::expr::traversal::NodeRewriter::visit_up(&mut self, node: Self::NodeTy) -> vortex_error::VortexResult> +pub vortex_array::scalar_fn::fns::between::BetweenOptions::upper_strict: vortex_array::scalar_fn::fns::between::StrictComparison -pub trait vortex_array::expr::traversal::NodeVisitor<'a> +impl core::clone::Clone for vortex_array::scalar_fn::fns::between::BetweenOptions -pub type vortex_array::expr::traversal::NodeVisitor::NodeTy: vortex_array::expr::traversal::Node +pub fn vortex_array::scalar_fn::fns::between::BetweenOptions::clone(&self) -> vortex_array::scalar_fn::fns::between::BetweenOptions -pub fn vortex_array::expr::traversal::NodeVisitor::visit_down(&mut self, node: &'a Self::NodeTy) -> vortex_error::VortexResult +impl core::cmp::Eq for vortex_array::scalar_fn::fns::between::BetweenOptions -pub fn vortex_array::expr::traversal::NodeVisitor::visit_up(&mut self, node: &'a Self::NodeTy) -> vortex_error::VortexResult +impl core::cmp::PartialEq for vortex_array::scalar_fn::fns::between::BetweenOptions -impl vortex_array::expr::traversal::NodeVisitor<'_> for vortex_array::expr::traversal::ReferenceCollector +pub fn vortex_array::scalar_fn::fns::between::BetweenOptions::eq(&self, other: &vortex_array::scalar_fn::fns::between::BetweenOptions) -> bool -pub type vortex_array::expr::traversal::ReferenceCollector::NodeTy = vortex_array::expr::Expression +impl core::fmt::Debug for vortex_array::scalar_fn::fns::between::BetweenOptions -pub fn vortex_array::expr::traversal::ReferenceCollector::visit_down(&mut self, node: &'a Self::NodeTy) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::between::BetweenOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::expr::traversal::ReferenceCollector::visit_up(&mut self, node: &vortex_array::expr::Expression) -> vortex_error::VortexResult +impl core::fmt::Display for vortex_array::scalar_fn::fns::between::BetweenOptions -pub fn vortex_array::expr::traversal::pre_order_visit_down<'a, T: 'a + vortex_array::expr::traversal::Node>(tree: &'a T, f: impl core::ops::function::FnMut(&'a T) -> vortex_error::VortexResult) -> vortex_error::VortexResult<()> +pub fn vortex_array::scalar_fn::fns::between::BetweenOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::expr::traversal::pre_order_visit_up<'a, T: 'a + vortex_array::expr::traversal::Node>(tree: &'a T, f: impl core::ops::function::FnMut(&'a T) -> vortex_error::VortexResult) -> vortex_error::VortexResult<()> +impl core::hash::Hash for vortex_array::scalar_fn::fns::between::BetweenOptions -pub struct vortex_array::expr::ExactExpr(pub vortex_array::expr::Expression) +pub fn vortex_array::scalar_fn::fns::between::BetweenOptions::hash<__H: core::hash::Hasher>(&self, state: &mut __H) -impl core::clone::Clone for vortex_array::expr::ExactExpr +impl core::marker::StructuralPartialEq for vortex_array::scalar_fn::fns::between::BetweenOptions -pub fn vortex_array::expr::ExactExpr::clone(&self) -> vortex_array::expr::ExactExpr +pub struct vortex_array::scalar_fn::fns::between::BetweenReduceAdaptor(pub V) -impl core::cmp::Eq for vortex_array::expr::ExactExpr +impl core::default::Default for vortex_array::scalar_fn::fns::between::BetweenReduceAdaptor -impl core::cmp::PartialEq for vortex_array::expr::ExactExpr +pub fn vortex_array::scalar_fn::fns::between::BetweenReduceAdaptor::default() -> vortex_array::scalar_fn::fns::between::BetweenReduceAdaptor -pub fn vortex_array::expr::ExactExpr::eq(&self, other: &Self) -> bool +impl core::fmt::Debug for vortex_array::scalar_fn::fns::between::BetweenReduceAdaptor -impl core::hash::Hash for vortex_array::expr::ExactExpr +pub fn vortex_array::scalar_fn::fns::between::BetweenReduceAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::expr::ExactExpr::hash(&self, state: &mut H) +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::between::BetweenReduceAdaptor where V: vortex_array::scalar_fn::fns::between::BetweenReduce -pub struct vortex_array::expr::Expression +pub type vortex_array::scalar_fn::fns::between::BetweenReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -impl vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::between::BetweenReduceAdaptor::reduce_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::between::Between>, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::expr::Expression::child(&self, n: usize) -> &vortex_array::expr::Expression +pub trait vortex_array::scalar_fn::fns::between::BetweenKernel: vortex_array::VTable -pub fn vortex_array::expr::Expression::children(&self) -> &alloc::sync::Arc> +pub fn vortex_array::scalar_fn::fns::between::BetweenKernel::between(array: vortex_array::ArrayView<'_, Self>, lower: &vortex_array::ArrayRef, upper: &vortex_array::ArrayRef, options: &vortex_array::scalar_fn::fns::between::BetweenOptions, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::expr::Expression::display_tree(&self) -> impl core::fmt::Display +impl vortex_array::scalar_fn::fns::between::BetweenKernel for vortex_array::arrays::Decimal -pub fn vortex_array::expr::Expression::fmt_sql(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Decimal::between(arr: vortex_array::ArrayView<'_, vortex_array::arrays::Decimal>, lower: &vortex_array::ArrayRef, upper: &vortex_array::ArrayRef, options: &vortex_array::scalar_fn::fns::between::BetweenOptions, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::expr::Expression::return_dtype(&self, scope: &vortex_array::dtype::DType) -> vortex_error::VortexResult +impl vortex_array::scalar_fn::fns::between::BetweenKernel for vortex_array::arrays::Primitive -pub fn vortex_array::expr::Expression::scalar_fn(&self) -> &vortex_array::scalar_fn::ScalarFnRef +pub fn vortex_array::arrays::Primitive::between(arr: vortex_array::ArrayView<'_, vortex_array::arrays::Primitive>, lower: &vortex_array::ArrayRef, upper: &vortex_array::ArrayRef, options: &vortex_array::scalar_fn::fns::between::BetweenOptions, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::expr::Expression::stat_expression(&self, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub trait vortex_array::scalar_fn::fns::between::BetweenReduce: vortex_array::VTable -pub fn vortex_array::expr::Expression::stat_falsification(&self, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::between::BetweenReduce::between(array: vortex_array::ArrayView<'_, Self>, lower: &vortex_array::ArrayRef, upper: &vortex_array::ArrayRef, options: &vortex_array::scalar_fn::fns::between::BetweenOptions) -> vortex_error::VortexResult> -pub fn vortex_array::expr::Expression::stat_max(&self, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +impl vortex_array::scalar_fn::fns::between::BetweenReduce for vortex_array::arrays::Constant -pub fn vortex_array::expr::Expression::stat_min(&self, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Constant::between(array: vortex_array::ArrayView<'_, vortex_array::arrays::Constant>, lower: &vortex_array::ArrayRef, upper: &vortex_array::ArrayRef, options: &vortex_array::scalar_fn::fns::between::BetweenOptions) -> vortex_error::VortexResult> -pub fn vortex_array::expr::Expression::try_new(scalar_fn: vortex_array::scalar_fn::ScalarFnRef, children: impl core::iter::traits::collect::IntoIterator) -> vortex_error::VortexResult +pub mod vortex_array::scalar_fn::fns::binary -pub fn vortex_array::expr::Expression::validity(&self) -> vortex_error::VortexResult +pub struct vortex_array::scalar_fn::fns::binary::Binary -pub fn vortex_array::expr::Expression::with_children(self, children: impl core::iter::traits::collect::IntoIterator) -> vortex_error::VortexResult +impl core::clone::Clone for vortex_array::scalar_fn::fns::binary::Binary -impl vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::binary::Binary::clone(&self) -> vortex_array::scalar_fn::fns::binary::Binary -pub fn vortex_array::expr::Expression::from_proto(expr: &vortex_proto::expr::Expr, session: &vortex_session::VortexSession) -> vortex_error::VortexResult +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::binary::Binary -impl vortex_array::expr::Expression +pub type vortex_array::scalar_fn::fns::binary::Binary::Options = vortex_array::scalar_fn::fns::operators::Operator -pub fn vortex_array::expr::Expression::optimize(&self, scope: &vortex_array::dtype::DType) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::binary::Binary::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity -pub fn vortex_array::expr::Expression::optimize_recursive(&self, scope: &vortex_array::dtype::DType) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::binary::Binary::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -pub fn vortex_array::expr::Expression::simplify(&self, scope: &vortex_array::dtype::DType) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::binary::Binary::coerce_args(&self, operator: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -pub fn vortex_array::expr::Expression::simplify_untyped(&self) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::binary::Binary::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::expr::Expression::try_optimize(&self, scope: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::binary::Binary::execute(&self, op: &vortex_array::scalar_fn::fns::operators::Operator, args: &dyn vortex_array::scalar_fn::ExecutionArgs, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::expr::Expression::try_optimize_recursive(&self, scope: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::binary::Binary::fmt_sql(&self, operator: &vortex_array::scalar_fn::fns::operators::Operator, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::clone::Clone for vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::binary::Binary::id(&self) -> vortex_array::scalar_fn::ScalarFnId -pub fn vortex_array::expr::Expression::clone(&self) -> vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::binary::Binary::is_fallible(&self, operator: &vortex_array::scalar_fn::fns::operators::Operator) -> bool -impl core::cmp::Eq for vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::binary::Binary::is_null_sensitive(&self, _operator: &vortex_array::scalar_fn::fns::operators::Operator) -> bool -impl core::cmp::PartialEq for vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::binary::Binary::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub fn vortex_array::expr::Expression::eq(&self, other: &vortex_array::expr::Expression) -> bool +pub fn vortex_array::scalar_fn::fns::binary::Binary::return_dtype(&self, operator: &vortex_array::scalar_fn::fns::operators::Operator, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::binary::Binary::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> -pub fn vortex_array::expr::Expression::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::fns::binary::Binary::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -impl core::fmt::Display for vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::binary::Binary::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::expr::Expression::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::fns::binary::Binary::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -impl core::hash::Hash for vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::binary::Binary::stat_falsification(&self, operator: &vortex_array::scalar_fn::fns::operators::Operator, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::expr::Expression::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::scalar_fn::fns::binary::Binary::validity(&self, operator: &vortex_array::scalar_fn::fns::operators::Operator, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -impl core::marker::StructuralPartialEq for vortex_array::expr::Expression +pub struct vortex_array::scalar_fn::fns::binary::CompareExecuteAdaptor(pub V) -impl core::ops::deref::Deref for vortex_array::expr::Expression +impl core::default::Default for vortex_array::scalar_fn::fns::binary::CompareExecuteAdaptor -pub type vortex_array::expr::Expression::Target = vortex_array::scalar_fn::ScalarFnRef +pub fn vortex_array::scalar_fn::fns::binary::CompareExecuteAdaptor::default() -> vortex_array::scalar_fn::fns::binary::CompareExecuteAdaptor -pub fn vortex_array::expr::Expression::deref(&self) -> &Self::Target +impl core::fmt::Debug for vortex_array::scalar_fn::fns::binary::CompareExecuteAdaptor -impl core::ops::drop::Drop for vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::binary::CompareExecuteAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::expr::Expression::drop(&mut self) +impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::binary::CompareExecuteAdaptor where V: vortex_array::scalar_fn::fns::binary::CompareKernel -impl vortex_array::builtins::ExprBuiltins for vortex_array::expr::Expression +pub type vortex_array::scalar_fn::fns::binary::CompareExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -pub fn vortex_array::expr::Expression::binary(&self, rhs: vortex_array::expr::Expression, op: vortex_array::scalar_fn::fns::operators::Operator) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::binary::CompareExecuteAdaptor::execute_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::binary::Binary>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::expr::Expression::cast(&self, dtype: vortex_array::dtype::DType) -> vortex_error::VortexResult +pub trait vortex_array::scalar_fn::fns::binary::CompareKernel: vortex_array::VTable -pub fn vortex_array::expr::Expression::fill_null(&self, fill_value: vortex_array::expr::Expression) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::binary::CompareKernel::compare(lhs: vortex_array::ArrayView<'_, Self>, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::expr::Expression::get_item(&self, field_name: impl core::convert::Into) -> vortex_error::VortexResult +impl vortex_array::scalar_fn::fns::binary::CompareKernel for vortex_array::arrays::Extension -pub fn vortex_array::expr::Expression::is_null(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Extension::compare(lhs: vortex_array::ArrayView<'_, vortex_array::arrays::Extension>, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::expr::Expression::list_contains(&self, value: vortex_array::expr::Expression) -> vortex_error::VortexResult +impl vortex_array::scalar_fn::fns::binary::CompareKernel for vortex_array::arrays::VarBin -pub fn vortex_array::expr::Expression::mask(&self, mask: vortex_array::expr::Expression) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBin::compare(lhs: vortex_array::ArrayView<'_, vortex_array::arrays::VarBin>, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::expr::Expression::not(&self) -> vortex_error::VortexResult +impl vortex_array::scalar_fn::fns::binary::CompareKernel for vortex_array::arrays::dict::Dict -pub fn vortex_array::expr::Expression::zip(&self, if_true: vortex_array::expr::Expression, if_false: vortex_array::expr::Expression) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::compare(lhs: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::expr::VortexExprExt for vortex_array::expr::Expression +impl vortex_array::scalar_fn::fns::binary::CompareKernel for vortex_array::arrays::patched::Patched -pub fn vortex_array::expr::Expression::field_references(&self) -> vortex_utils::aliases::hash_set::HashSet +pub fn vortex_array::arrays::patched::Patched::compare(lhs: vortex_array::ArrayView<'_, Self>, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::expr::proto::ExprSerializeProtoExt for vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::binary::and_kleene(lhs: &vortex_array::ArrayRef, rhs: &vortex_array::ArrayRef) -> vortex_error::VortexResult -pub fn vortex_array::expr::Expression::serialize_proto(&self) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::binary::compare_nested_arrow_arrays(lhs: &dyn arrow_array::array::Array, rhs: &dyn arrow_array::array::Array, operator: vortex_array::scalar_fn::fns::operators::CompareOperator) -> vortex_error::VortexResult -impl vortex_array::expr::traversal::Node for vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::binary::or_kleene(lhs: &vortex_array::ArrayRef, rhs: &vortex_array::ArrayRef) -> vortex_error::VortexResult -pub fn vortex_array::expr::Expression::apply_children<'a, F: core::ops::function::FnMut(&'a Self) -> vortex_error::VortexResult>(&'a self, f: F) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::binary::scalar_cmp(lhs: &vortex_array::scalar::Scalar, rhs: &vortex_array::scalar::Scalar, operator: vortex_array::scalar_fn::fns::operators::CompareOperator) -> vortex_error::VortexResult -pub fn vortex_array::expr::Expression::children_count(&self) -> usize +pub mod vortex_array::scalar_fn::fns::case_when -pub fn vortex_array::expr::Expression::iter_children(&self, f: impl core::ops::function::FnOnce(&mut dyn core::iter::traits::iterator::Iterator) -> T) -> T +pub struct vortex_array::scalar_fn::fns::case_when::CaseWhen -pub fn vortex_array::expr::Expression::map_children vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult> +impl core::clone::Clone for vortex_array::scalar_fn::fns::case_when::CaseWhen -impl<'a> vortex_array::expr::traversal::NodeContainer<'a, vortex_array::expr::Expression> for vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::clone(&self) -> vortex_array::scalar_fn::fns::case_when::CaseWhen -pub fn vortex_array::expr::Expression::apply_elements vortex_error::VortexResult>(&'a self, f: F) -> vortex_error::VortexResult +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::case_when::CaseWhen -pub fn vortex_array::expr::Expression::map_elements vortex_error::VortexResult>>(self, f: F) -> vortex_error::VortexResult> +pub type vortex_array::scalar_fn::fns::case_when::CaseWhen::Options = vortex_array::scalar_fn::fns::case_when::CaseWhenOptions -pub trait vortex_array::expr::Annotation: core::clone::Clone + core::hash::Hash + core::cmp::Eq +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::arity(&self, options: &Self::Options) -> vortex_array::scalar_fn::Arity -impl vortex_array::expr::Annotation for A where A: core::clone::Clone + core::hash::Hash + core::cmp::Eq +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::child_name(&self, options: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -pub trait vortex_array::expr::AnnotationFn: core::ops::function::Fn(&vortex_array::expr::Expression) -> alloc::vec::Vec +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -pub type vortex_array::expr::AnnotationFn::Annotation: vortex_array::expr::Annotation +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::deserialize(&self, metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl vortex_array::expr::AnnotationFn for F where A: vortex_array::expr::Annotation, F: core::ops::function::Fn(&vortex_array::expr::Expression) -> alloc::vec::Vec +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::execute(&self, options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type F::Annotation = A +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::fmt_sql(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub trait vortex_array::expr::StatsCatalog +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::id(&self) -> vortex_array::scalar_fn::ScalarFnId -pub fn vortex_array::expr::StatsCatalog::stats_ref(&self, _field_path: &vortex_array::dtype::FieldPath, _stat: vortex_array::expr::stats::Stat) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::is_fallible(&self, _options: &Self::Options) -> bool -pub trait vortex_array::expr::VortexExprExt +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::is_null_sensitive(&self, _options: &Self::Options) -> bool -pub fn vortex_array::expr::VortexExprExt::field_references(&self) -> vortex_utils::aliases::hash_set::HashSet +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -impl vortex_array::expr::VortexExprExt for vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::return_dtype(&self, options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -pub fn vortex_array::expr::Expression::field_references(&self) -> vortex_utils::aliases::hash_set::HashSet +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::serialize(&self, _options: &Self::Options) -> vortex_error::VortexResult>> -pub fn vortex_array::expr::and(lhs: vortex_array::expr::Expression, rhs: vortex_array::expr::Expression) -> vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -pub fn vortex_array::expr::and_collect(iter: I) -> core::option::Option where I: core::iter::traits::collect::IntoIterator +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::expr::between(arr: vortex_array::expr::Expression, lower: vortex_array::expr::Expression, upper: vortex_array::expr::Expression, options: vortex_array::scalar_fn::fns::between::BetweenOptions) -> vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::expr::case_when(condition: vortex_array::expr::Expression, then_value: vortex_array::expr::Expression, else_value: vortex_array::expr::Expression) -> vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::expr::case_when_no_else(condition: vortex_array::expr::Expression, then_value: vortex_array::expr::Expression) -> vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::expr::cast(child: vortex_array::expr::Expression, target: vortex_array::dtype::DType) -> vortex_array::expr::Expression +pub struct vortex_array::scalar_fn::fns::case_when::CaseWhenOptions -pub fn vortex_array::expr::checked_add(lhs: vortex_array::expr::Expression, rhs: vortex_array::expr::Expression) -> vortex_array::expr::Expression +pub vortex_array::scalar_fn::fns::case_when::CaseWhenOptions::has_else: bool -pub fn vortex_array::expr::col(field: impl core::convert::Into) -> vortex_array::expr::Expression +pub vortex_array::scalar_fn::fns::case_when::CaseWhenOptions::num_when_then_pairs: u32 -pub fn vortex_array::expr::descendent_annotations(expr: &vortex_array::expr::Expression, annotate: A) -> vortex_array::expr::Annotations<'_, ::Annotation> +impl vortex_array::scalar_fn::fns::case_when::CaseWhenOptions -pub fn vortex_array::expr::dynamic(operator: vortex_array::scalar_fn::fns::operators::CompareOperator, rhs_value: impl core::ops::function::Fn() -> core::option::Option + core::marker::Send + core::marker::Sync + 'static, rhs_dtype: vortex_array::dtype::DType, default: bool, lhs: vortex_array::expr::Expression) -> vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhenOptions::num_children(&self) -> usize -pub fn vortex_array::expr::eq(lhs: vortex_array::expr::Expression, rhs: vortex_array::expr::Expression) -> vortex_array::expr::Expression +impl core::clone::Clone for vortex_array::scalar_fn::fns::case_when::CaseWhenOptions -pub fn vortex_array::expr::fill_null(child: vortex_array::expr::Expression, fill_value: vortex_array::expr::Expression) -> vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhenOptions::clone(&self) -> vortex_array::scalar_fn::fns::case_when::CaseWhenOptions -pub fn vortex_array::expr::get_item(field: impl core::convert::Into, child: vortex_array::expr::Expression) -> vortex_array::expr::Expression +impl core::cmp::Eq for vortex_array::scalar_fn::fns::case_when::CaseWhenOptions -pub fn vortex_array::expr::gt(lhs: vortex_array::expr::Expression, rhs: vortex_array::expr::Expression) -> vortex_array::expr::Expression +impl core::cmp::PartialEq for vortex_array::scalar_fn::fns::case_when::CaseWhenOptions -pub fn vortex_array::expr::gt_eq(lhs: vortex_array::expr::Expression, rhs: vortex_array::expr::Expression) -> vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhenOptions::eq(&self, other: &vortex_array::scalar_fn::fns::case_when::CaseWhenOptions) -> bool -pub fn vortex_array::expr::ilike(child: vortex_array::expr::Expression, pattern: vortex_array::expr::Expression) -> vortex_array::expr::Expression +impl core::fmt::Debug for vortex_array::scalar_fn::fns::case_when::CaseWhenOptions -pub fn vortex_array::expr::immediate_scope_access<'a>(expr: &'a vortex_array::expr::Expression, scope: &'a vortex_array::dtype::StructFields) -> vortex_utils::aliases::hash_set::HashSet +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhenOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::expr::immediate_scope_accesses<'a>(expr: &'a vortex_array::expr::Expression, scope: &'a vortex_array::dtype::StructFields) -> vortex_array::expr::FieldAccesses<'a> +impl core::fmt::Display for vortex_array::scalar_fn::fns::case_when::CaseWhenOptions -pub fn vortex_array::expr::is_null(child: vortex_array::expr::Expression) -> vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhenOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::expr::is_root(expr: &vortex_array::expr::Expression) -> bool +impl core::hash::Hash for vortex_array::scalar_fn::fns::case_when::CaseWhenOptions -pub fn vortex_array::expr::label_is_fallible(expr: &vortex_array::expr::Expression) -> vortex_array::expr::BooleanLabels<'_> +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhenOptions::hash<__H: core::hash::Hasher>(&self, state: &mut __H) -pub fn vortex_array::expr::label_null_sensitive(expr: &vortex_array::expr::Expression) -> vortex_array::expr::BooleanLabels<'_> +impl core::marker::Copy for vortex_array::scalar_fn::fns::case_when::CaseWhenOptions -pub fn vortex_array::expr::label_tree(expr: &vortex_array::expr::Expression, self_label: impl core::ops::function::Fn(&vortex_array::expr::Expression) -> L, merge_child: impl core::ops::function::FnMut(L, &L) -> L) -> vortex_utils::aliases::hash_map::HashMap<&vortex_array::expr::Expression, L> +impl core::marker::StructuralPartialEq for vortex_array::scalar_fn::fns::case_when::CaseWhenOptions -pub fn vortex_array::expr::like(child: vortex_array::expr::Expression, pattern: vortex_array::expr::Expression) -> vortex_array::expr::Expression +pub mod vortex_array::scalar_fn::fns::cast -pub fn vortex_array::expr::list_contains(list: vortex_array::expr::Expression, value: vortex_array::expr::Expression) -> vortex_array::expr::Expression +pub struct vortex_array::scalar_fn::fns::cast::Cast -pub fn vortex_array::expr::lit(value: impl core::convert::Into) -> vortex_array::expr::Expression +impl core::clone::Clone for vortex_array::scalar_fn::fns::cast::Cast -pub fn vortex_array::expr::lt(lhs: vortex_array::expr::Expression, rhs: vortex_array::expr::Expression) -> vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::cast::Cast::clone(&self) -> vortex_array::scalar_fn::fns::cast::Cast -pub fn vortex_array::expr::lt_eq(lhs: vortex_array::expr::Expression, rhs: vortex_array::expr::Expression) -> vortex_array::expr::Expression +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::cast::Cast -pub fn vortex_array::expr::make_free_field_annotator(scope: &vortex_array::dtype::StructFields) -> impl vortex_array::expr::AnnotationFn +pub type vortex_array::scalar_fn::fns::cast::Cast::Options = vortex_array::dtype::DType -pub fn vortex_array::expr::mask(array: vortex_array::expr::Expression, mask: vortex_array::expr::Expression) -> vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::cast::Cast::arity(&self, _options: &vortex_array::dtype::DType) -> vortex_array::scalar_fn::Arity -pub fn vortex_array::expr::merge(elements: impl core::iter::traits::collect::IntoIterator>) -> vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::cast::Cast::child_name(&self, _instance: &vortex_array::dtype::DType, child_idx: usize) -> vortex_array::scalar_fn::ChildName -pub fn vortex_array::expr::merge_opts(elements: impl core::iter::traits::collect::IntoIterator>, duplicate_handling: vortex_array::scalar_fn::fns::merge::DuplicateHandling) -> vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::cast::Cast::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -pub fn vortex_array::expr::nested_case_when(when_then_pairs: alloc::vec::Vec<(vortex_array::expr::Expression, vortex_array::expr::Expression)>, else_value: core::option::Option) -> vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::cast::Cast::deserialize(&self, _metadata: &[u8], session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::expr::not(operand: vortex_array::expr::Expression) -> vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::cast::Cast::execute(&self, target_dtype: &vortex_array::dtype::DType, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::expr::not_eq(lhs: vortex_array::expr::Expression, rhs: vortex_array::expr::Expression) -> vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::cast::Cast::fmt_sql(&self, dtype: &vortex_array::dtype::DType, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::expr::not_ilike(child: vortex_array::expr::Expression, pattern: vortex_array::expr::Expression) -> vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::cast::Cast::id(&self) -> vortex_array::scalar_fn::ScalarFnId -pub fn vortex_array::expr::not_like(child: vortex_array::expr::Expression, pattern: vortex_array::expr::Expression) -> vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::cast::Cast::is_fallible(&self, options: &Self::Options) -> bool -pub fn vortex_array::expr::or(lhs: vortex_array::expr::Expression, rhs: vortex_array::expr::Expression) -> vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::cast::Cast::is_null_sensitive(&self, _instance: &vortex_array::dtype::DType) -> bool -pub fn vortex_array::expr::or_collect(iter: I) -> core::option::Option where I: core::iter::traits::collect::IntoIterator +pub fn vortex_array::scalar_fn::fns::cast::Cast::reduce(&self, target_dtype: &vortex_array::dtype::DType, node: &dyn vortex_array::scalar_fn::ReduceNode, _ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub fn vortex_array::expr::pack(elements: impl core::iter::traits::collect::IntoIterator, vortex_array::expr::Expression)>, nullability: vortex_array::dtype::Nullability) -> vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::cast::Cast::return_dtype(&self, dtype: &vortex_array::dtype::DType, _arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -pub fn vortex_array::expr::root() -> vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::cast::Cast::serialize(&self, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult>> -pub fn vortex_array::expr::select(field_names: impl core::convert::Into, child: vortex_array::expr::Expression) -> vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::cast::Cast::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -pub fn vortex_array::expr::select_exclude(fields: impl core::convert::Into, child: vortex_array::expr::Expression) -> vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::cast::Cast::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::expr::split_conjunction(expr: &vortex_array::expr::Expression) -> alloc::vec::Vec +pub fn vortex_array::scalar_fn::fns::cast::Cast::stat_expression(&self, dtype: &vortex_array::dtype::DType, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::expr::zip_expr(mask: vortex_array::expr::Expression, if_true: vortex_array::expr::Expression, if_false: vortex_array::expr::Expression) -> vortex_array::expr::Expression +pub fn vortex_array::scalar_fn::fns::cast::Cast::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub type vortex_array::expr::Annotations<'a, A> = vortex_utils::aliases::hash_map::HashMap<&'a vortex_array::expr::Expression, vortex_utils::aliases::hash_set::HashSet> +pub fn vortex_array::scalar_fn::fns::cast::Cast::validity(&self, dtype: &vortex_array::dtype::DType, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub type vortex_array::expr::BooleanLabels<'a> = vortex_utils::aliases::hash_map::HashMap<&'a vortex_array::expr::Expression, bool> +pub struct vortex_array::scalar_fn::fns::cast::CastExecuteAdaptor(pub V) -pub type vortex_array::expr::FieldAccesses<'a> = vortex_array::expr::Annotations<'a, vortex_array::dtype::FieldName> +impl core::default::Default for vortex_array::scalar_fn::fns::cast::CastExecuteAdaptor -pub mod vortex_array::extension +pub fn vortex_array::scalar_fn::fns::cast::CastExecuteAdaptor::default() -> vortex_array::scalar_fn::fns::cast::CastExecuteAdaptor -pub mod vortex_array::extension::datetime +impl core::fmt::Debug for vortex_array::scalar_fn::fns::cast::CastExecuteAdaptor -pub enum vortex_array::extension::datetime::DateValue +pub fn vortex_array::scalar_fn::fns::cast::CastExecuteAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub vortex_array::extension::datetime::DateValue::Days(i32) +impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::cast::CastExecuteAdaptor where V: vortex_array::scalar_fn::fns::cast::CastKernel -pub vortex_array::extension::datetime::DateValue::Milliseconds(i64) +pub type vortex_array::scalar_fn::fns::cast::CastExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -impl core::fmt::Display for vortex_array::extension::datetime::DateValue +pub fn vortex_array::scalar_fn::fns::cast::CastExecuteAdaptor::execute_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: ::Match, _child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::extension::datetime::DateValue::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub struct vortex_array::scalar_fn::fns::cast::CastReduceAdaptor(pub V) -pub enum vortex_array::extension::datetime::TemporalJiff +impl core::default::Default for vortex_array::scalar_fn::fns::cast::CastReduceAdaptor -pub vortex_array::extension::datetime::TemporalJiff::Date(jiff::civil::date::Date) +pub fn vortex_array::scalar_fn::fns::cast::CastReduceAdaptor::default() -> vortex_array::scalar_fn::fns::cast::CastReduceAdaptor -pub vortex_array::extension::datetime::TemporalJiff::Time(jiff::civil::time::Time) +impl core::fmt::Debug for vortex_array::scalar_fn::fns::cast::CastReduceAdaptor -pub vortex_array::extension::datetime::TemporalJiff::Unzoned(jiff::civil::datetime::DateTime) +pub fn vortex_array::scalar_fn::fns::cast::CastReduceAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub vortex_array::extension::datetime::TemporalJiff::Zoned(jiff::zoned::Zoned) +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::cast::CastReduceAdaptor where V: vortex_array::scalar_fn::fns::cast::CastReduce -impl core::fmt::Display for vortex_array::extension::datetime::TemporalJiff +pub type vortex_array::scalar_fn::fns::cast::CastReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -pub fn vortex_array::extension::datetime::TemporalJiff::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::fns::cast::CastReduceAdaptor::reduce_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::cast::Cast>, _child_idx: usize) -> vortex_error::VortexResult> -pub enum vortex_array::extension::datetime::TemporalMetadata<'a> +pub trait vortex_array::scalar_fn::fns::cast::CastKernel: vortex_array::VTable -pub vortex_array::extension::datetime::TemporalMetadata::Date(&'a ::Metadata) +pub fn vortex_array::scalar_fn::fns::cast::CastKernel::cast(array: vortex_array::ArrayView<'_, Self>, dtype: &vortex_array::dtype::DType, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub vortex_array::extension::datetime::TemporalMetadata::Time(&'a ::Metadata) +impl vortex_array::scalar_fn::fns::cast::CastKernel for vortex_array::arrays::Decimal -pub vortex_array::extension::datetime::TemporalMetadata::Timestamp(&'a vortex_array::extension::datetime::TimeUnit, &'a core::option::Option>) +pub fn vortex_array::arrays::Decimal::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::Decimal>, dtype: &vortex_array::dtype::DType, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::extension::datetime::TemporalMetadata<'_> +impl vortex_array::scalar_fn::fns::cast::CastKernel for vortex_array::arrays::Primitive -pub fn vortex_array::extension::datetime::TemporalMetadata<'_>::time_unit(&self) -> vortex_array::extension::datetime::TimeUnit +pub fn vortex_array::arrays::Primitive::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::Primitive>, dtype: &vortex_array::dtype::DType, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::extension::datetime::TemporalMetadata<'_>::to_jiff(&self, v: i64) -> vortex_error::VortexResult +impl vortex_array::scalar_fn::fns::cast::CastKernel for vortex_array::arrays::Struct -impl<'a> core::cmp::Eq for vortex_array::extension::datetime::TemporalMetadata<'a> +pub fn vortex_array::arrays::Struct::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::Struct>, dtype: &vortex_array::dtype::DType, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl<'a> core::cmp::PartialEq for vortex_array::extension::datetime::TemporalMetadata<'a> +pub trait vortex_array::scalar_fn::fns::cast::CastReduce: vortex_array::VTable -pub fn vortex_array::extension::datetime::TemporalMetadata<'a>::eq(&self, other: &vortex_array::extension::datetime::TemporalMetadata<'a>) -> bool +pub fn vortex_array::scalar_fn::fns::cast::CastReduce::cast(array: vortex_array::ArrayView<'_, Self>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -impl<'a> core::fmt::Debug for vortex_array::extension::datetime::TemporalMetadata<'a> +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::Bool -pub fn vortex_array::extension::datetime::TemporalMetadata<'a>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Bool::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -impl<'a> core::marker::StructuralPartialEq for vortex_array::extension::datetime::TemporalMetadata<'a> +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::Chunked -#[repr(u8)] pub enum vortex_array::extension::datetime::TimeUnit +pub fn vortex_array::arrays::Chunked::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::Chunked>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub vortex_array::extension::datetime::TimeUnit::Days = 4 +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::Constant -pub vortex_array::extension::datetime::TimeUnit::Microseconds = 1 +pub fn vortex_array::arrays::Constant::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::Constant>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub vortex_array::extension::datetime::TimeUnit::Milliseconds = 2 +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::Extension -pub vortex_array::extension::datetime::TimeUnit::Nanoseconds = 0 +pub fn vortex_array::arrays::Extension::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::Extension>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub vortex_array::extension::datetime::TimeUnit::Seconds = 3 +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::FixedSizeList -impl vortex_array::extension::datetime::TimeUnit +pub fn vortex_array::arrays::FixedSizeList::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::FixedSizeList>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_array::extension::datetime::TimeUnit::to_jiff_span(&self, v: i64) -> vortex_error::VortexResult +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::List -impl core::clone::Clone for vortex_array::extension::datetime::TimeUnit +pub fn vortex_array::arrays::List::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::List>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -pub fn vortex_array::extension::datetime::TimeUnit::clone(&self) -> vortex_array::extension::datetime::TimeUnit +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::ListView -impl core::cmp::Eq for vortex_array::extension::datetime::TimeUnit +pub fn vortex_array::arrays::ListView::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::ListView>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -impl core::cmp::Ord for vortex_array::extension::datetime::TimeUnit +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::VarBin -pub fn vortex_array::extension::datetime::TimeUnit::cmp(&self, other: &vortex_array::extension::datetime::TimeUnit) -> core::cmp::Ordering +pub fn vortex_array::arrays::VarBin::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBin>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -impl core::cmp::PartialEq for vortex_array::extension::datetime::TimeUnit +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::VarBinView -pub fn vortex_array::extension::datetime::TimeUnit::eq(&self, other: &vortex_array::extension::datetime::TimeUnit) -> bool +pub fn vortex_array::arrays::VarBinView::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBinView>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -impl core::cmp::PartialOrd for vortex_array::extension::datetime::TimeUnit +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::dict::Dict -pub fn vortex_array::extension::datetime::TimeUnit::partial_cmp(&self, other: &vortex_array::extension::datetime::TimeUnit) -> core::option::Option +pub fn vortex_array::arrays::dict::Dict::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -impl core::convert::From<&arrow_schema::datatype::TimeUnit> for vortex_array::extension::datetime::TimeUnit +impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::null::Null -pub fn vortex_array::extension::datetime::TimeUnit::from(value: &arrow_schema::datatype::TimeUnit) -> Self +pub fn vortex_array::arrays::null::Null::cast(array: vortex_array::ArrayView<'_, vortex_array::arrays::null::Null>, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -impl core::convert::From for vortex_array::extension::datetime::TimeUnit +pub mod vortex_array::scalar_fn::fns::dynamic -pub fn vortex_array::extension::datetime::TimeUnit::from(value: arrow_schema::datatype::TimeUnit) -> Self +pub struct vortex_array::scalar_fn::fns::dynamic::DynamicComparison -impl core::convert::From for u8 +impl core::clone::Clone for vortex_array::scalar_fn::fns::dynamic::DynamicComparison -pub fn u8::from(enum_value: vortex_array::extension::datetime::TimeUnit) -> Self +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::clone(&self) -> vortex_array::scalar_fn::fns::dynamic::DynamicComparison -impl core::convert::TryFrom for vortex_array::extension::datetime::TimeUnit +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::dynamic::DynamicComparison -pub type vortex_array::extension::datetime::TimeUnit::Error = vortex_error::VortexError +pub type vortex_array::scalar_fn::fns::dynamic::DynamicComparison::Options = vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr -pub fn vortex_array::extension::datetime::TimeUnit::try_from(value: u8) -> core::result::Result +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity -impl core::convert::TryFrom for arrow_schema::datatype::TimeUnit +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -pub type arrow_schema::datatype::TimeUnit::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -pub fn arrow_schema::datatype::TimeUnit::try_from(value: vortex_array::extension::datetime::TimeUnit) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::extension::datetime::TimeUnit +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::execute(&self, data: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::extension::datetime::TimeUnit::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::fmt_sql(&self, dynamic: &vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::fmt::Display for vortex_array::extension::datetime::TimeUnit +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::id(&self) -> vortex_array::scalar_fn::ScalarFnId -pub fn vortex_array::extension::datetime::TimeUnit::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::is_fallible(&self, options: &Self::Options) -> bool -impl core::hash::Hash for vortex_array::extension::datetime::TimeUnit +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::is_null_sensitive(&self, _instance: &Self::Options) -> bool -pub fn vortex_array::extension::datetime::TimeUnit::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -impl core::marker::Copy for vortex_array::extension::datetime::TimeUnit +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::return_dtype(&self, dynamic: &vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -impl core::marker::StructuralPartialEq for vortex_array::extension::datetime::TimeUnit +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::serialize(&self, options: &Self::Options) -> vortex_error::VortexResult>> -pub enum vortex_array::extension::datetime::TimeValue +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -pub vortex_array::extension::datetime::TimeValue::Microseconds(i64) +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub vortex_array::extension::datetime::TimeValue::Milliseconds(i32) +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub vortex_array::extension::datetime::TimeValue::Nanoseconds(i64) +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::stat_falsification(&self, dynamic: &vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub vortex_array::extension::datetime::TimeValue::Seconds(i32) +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -impl core::fmt::Display for vortex_array::extension::datetime::TimeValue +pub struct vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr -pub fn vortex_array::extension::datetime::TimeValue::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr -pub enum vortex_array::extension::datetime::TimestampValue<'a> +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr::scalar(&self) -> core::option::Option -pub vortex_array::extension::datetime::TimestampValue::Microseconds(i64, core::option::Option<&'a alloc::sync::Arc>) +impl core::clone::Clone for vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr -pub vortex_array::extension::datetime::TimestampValue::Milliseconds(i64, core::option::Option<&'a alloc::sync::Arc>) +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr::clone(&self) -> vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr -pub vortex_array::extension::datetime::TimestampValue::Nanoseconds(i64, core::option::Option<&'a alloc::sync::Arc>) +impl core::cmp::Eq for vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr -pub vortex_array::extension::datetime::TimestampValue::Seconds(i64, core::option::Option<&'a alloc::sync::Arc>) +impl core::cmp::PartialEq for vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr -impl core::fmt::Display for vortex_array::extension::datetime::TimestampValue<'_> +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr::eq(&self, other: &Self) -> bool -pub fn vortex_array::extension::datetime::TimestampValue<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl core::fmt::Debug for vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr -pub struct vortex_array::extension::datetime::AnyTemporal +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::dtype::extension::Matcher for vortex_array::extension::datetime::AnyTemporal +impl core::fmt::Display for vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr -pub type vortex_array::extension::datetime::AnyTemporal::Match<'a> = vortex_array::extension::datetime::TemporalMetadata<'a> +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::extension::datetime::AnyTemporal::matches(item: &vortex_array::dtype::extension::ExtDTypeRef) -> bool +impl core::hash::Hash for vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr -pub fn vortex_array::extension::datetime::AnyTemporal::try_match<'a>(item: &'a vortex_array::dtype::extension::ExtDTypeRef) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr::hash(&self, state: &mut H) -pub struct vortex_array::extension::datetime::Date +pub struct vortex_array::scalar_fn::fns::dynamic::DynamicExprUpdates -impl vortex_array::extension::datetime::Date +impl vortex_array::scalar_fn::fns::dynamic::DynamicExprUpdates -pub fn vortex_array::extension::datetime::Date::new(time_unit: vortex_array::extension::datetime::TimeUnit, nullability: vortex_array::dtype::Nullability) -> vortex_array::dtype::extension::ExtDType +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicExprUpdates::new(expr: &vortex_array::expr::Expression) -> core::option::Option -pub fn vortex_array::extension::datetime::Date::try_new(time_unit: vortex_array::extension::datetime::TimeUnit, nullability: vortex_array::dtype::Nullability) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicExprUpdates::version(&self) -> u64 -impl core::clone::Clone for vortex_array::extension::datetime::Date +pub mod vortex_array::scalar_fn::fns::fill_null -pub fn vortex_array::extension::datetime::Date::clone(&self) -> vortex_array::extension::datetime::Date +pub struct vortex_array::scalar_fn::fns::fill_null::FillNull -impl core::cmp::Eq for vortex_array::extension::datetime::Date +impl core::clone::Clone for vortex_array::scalar_fn::fns::fill_null::FillNull -impl core::cmp::PartialEq for vortex_array::extension::datetime::Date +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::clone(&self) -> vortex_array::scalar_fn::fns::fill_null::FillNull -pub fn vortex_array::extension::datetime::Date::eq(&self, other: &vortex_array::extension::datetime::Date) -> bool +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::fill_null::FillNull -impl core::default::Default for vortex_array::extension::datetime::Date +pub type vortex_array::scalar_fn::fns::fill_null::FillNull::Options = vortex_array::scalar_fn::EmptyOptions -pub fn vortex_array::extension::datetime::Date::default() -> vortex_array::extension::datetime::Date +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity -impl core::fmt::Debug for vortex_array::extension::datetime::Date +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::child_name(&self, _options: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -pub fn vortex_array::extension::datetime::Date::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -impl core::hash::Hash for vortex_array::extension::datetime::Date +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::extension::datetime::Date::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::execute(&self, _options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::marker::StructuralPartialEq for vortex_array::extension::datetime::Date +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::dtype::extension::ExtVTable for vortex_array::extension::datetime::Date +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::id(&self) -> vortex_array::scalar_fn::ScalarFnId -pub type vortex_array::extension::datetime::Date::Metadata = vortex_array::extension::datetime::TimeUnit +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::is_fallible(&self, _options: &Self::Options) -> bool -pub type vortex_array::extension::datetime::Date::NativeValue<'a> = vortex_array::extension::datetime::DateValue +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::is_null_sensitive(&self, _options: &Self::Options) -> bool -pub fn vortex_array::extension::datetime::Date::can_coerce_from(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub fn vortex_array::extension::datetime::Date::can_coerce_to(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -pub fn vortex_array::extension::datetime::Date::deserialize_metadata(&self, metadata: &[u8]) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::serialize(&self, _options: &Self::Options) -> vortex_error::VortexResult>> -pub fn vortex_array::extension::datetime::Date::id(&self) -> vortex_array::dtype::extension::ExtId +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::simplify(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -pub fn vortex_array::extension::datetime::Date::least_supertype(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::extension::datetime::Date::serialize_metadata(&self, metadata: &Self::Metadata) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::extension::datetime::Date::unpack_native<'a>(ext_dtype: &'a vortex_array::dtype::extension::ExtDType, storage_value: &'a vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::extension::datetime::Date::validate_dtype(ext_dtype: &vortex_array::dtype::extension::ExtDType) -> vortex_error::VortexResult<()> +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::validity(&self, _options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::extension::datetime::Date::validate_scalar_value(ext_dtype: &vortex_array::dtype::extension::ExtDType, storage_value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult<()> +pub struct vortex_array::scalar_fn::fns::fill_null::FillNullExecuteAdaptor(pub V) -pub struct vortex_array::extension::datetime::Time +impl core::default::Default for vortex_array::scalar_fn::fns::fill_null::FillNullExecuteAdaptor -impl vortex_array::extension::datetime::Time +pub fn vortex_array::scalar_fn::fns::fill_null::FillNullExecuteAdaptor::default() -> vortex_array::scalar_fn::fns::fill_null::FillNullExecuteAdaptor -pub fn vortex_array::extension::datetime::Time::new(time_unit: vortex_array::extension::datetime::TimeUnit, nullability: vortex_array::dtype::Nullability) -> vortex_array::dtype::extension::ExtDType +impl core::fmt::Debug for vortex_array::scalar_fn::fns::fill_null::FillNullExecuteAdaptor -pub fn vortex_array::extension::datetime::Time::try_new(time_unit: vortex_array::extension::datetime::TimeUnit, nullability: vortex_array::dtype::Nullability) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::fill_null::FillNullExecuteAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::clone::Clone for vortex_array::extension::datetime::Time +impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::fill_null::FillNullExecuteAdaptor where V: vortex_array::scalar_fn::fns::fill_null::FillNullKernel -pub fn vortex_array::extension::datetime::Time::clone(&self) -> vortex_array::extension::datetime::Time +pub type vortex_array::scalar_fn::fns::fill_null::FillNullExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -impl core::cmp::Eq for vortex_array::extension::datetime::Time +pub fn vortex_array::scalar_fn::fns::fill_null::FillNullExecuteAdaptor::execute_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::fill_null::FillNull>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl core::cmp::PartialEq for vortex_array::extension::datetime::Time +pub struct vortex_array::scalar_fn::fns::fill_null::FillNullReduceAdaptor(pub V) -pub fn vortex_array::extension::datetime::Time::eq(&self, other: &vortex_array::extension::datetime::Time) -> bool +impl core::default::Default for vortex_array::scalar_fn::fns::fill_null::FillNullReduceAdaptor -impl core::default::Default for vortex_array::extension::datetime::Time +pub fn vortex_array::scalar_fn::fns::fill_null::FillNullReduceAdaptor::default() -> vortex_array::scalar_fn::fns::fill_null::FillNullReduceAdaptor -pub fn vortex_array::extension::datetime::Time::default() -> vortex_array::extension::datetime::Time +impl core::fmt::Debug for vortex_array::scalar_fn::fns::fill_null::FillNullReduceAdaptor -impl core::fmt::Debug for vortex_array::extension::datetime::Time +pub fn vortex_array::scalar_fn::fns::fill_null::FillNullReduceAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::extension::datetime::Time::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::fill_null::FillNullReduceAdaptor where V: vortex_array::scalar_fn::fns::fill_null::FillNullReduce -impl core::hash::Hash for vortex_array::extension::datetime::Time +pub type vortex_array::scalar_fn::fns::fill_null::FillNullReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -pub fn vortex_array::extension::datetime::Time::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::scalar_fn::fns::fill_null::FillNullReduceAdaptor::reduce_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::fill_null::FillNull>, child_idx: usize) -> vortex_error::VortexResult> -impl core::marker::StructuralPartialEq for vortex_array::extension::datetime::Time +pub trait vortex_array::scalar_fn::fns::fill_null::FillNullKernel: vortex_array::VTable -impl vortex_array::dtype::extension::ExtVTable for vortex_array::extension::datetime::Time +pub fn vortex_array::scalar_fn::fns::fill_null::FillNullKernel::fill_null(array: vortex_array::ArrayView<'_, Self>, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub type vortex_array::extension::datetime::Time::Metadata = vortex_array::extension::datetime::TimeUnit +impl vortex_array::scalar_fn::fns::fill_null::FillNullKernel for vortex_array::arrays::Bool -pub type vortex_array::extension::datetime::Time::NativeValue<'a> = vortex_array::extension::datetime::TimeValue +pub fn vortex_array::arrays::Bool::fill_null(array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::extension::datetime::Time::can_coerce_from(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool +impl vortex_array::scalar_fn::fns::fill_null::FillNullKernel for vortex_array::arrays::Decimal -pub fn vortex_array::extension::datetime::Time::can_coerce_to(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool +pub fn vortex_array::arrays::Decimal::fill_null(array: vortex_array::ArrayView<'_, vortex_array::arrays::Decimal>, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::extension::datetime::Time::deserialize_metadata(&self, data: &[u8]) -> vortex_error::VortexResult +impl vortex_array::scalar_fn::fns::fill_null::FillNullKernel for vortex_array::arrays::Primitive -pub fn vortex_array::extension::datetime::Time::id(&self) -> vortex_array::dtype::extension::ExtId +pub fn vortex_array::arrays::Primitive::fill_null(array: vortex_array::ArrayView<'_, vortex_array::arrays::Primitive>, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::extension::datetime::Time::least_supertype(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> core::option::Option +impl vortex_array::scalar_fn::fns::fill_null::FillNullKernel for vortex_array::arrays::dict::Dict -pub fn vortex_array::extension::datetime::Time::serialize_metadata(&self, metadata: &Self::Metadata) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::fill_null(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::extension::datetime::Time::unpack_native<'a>(ext_dtype: &'a vortex_array::dtype::extension::ExtDType, storage_value: &'a vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult +pub trait vortex_array::scalar_fn::fns::fill_null::FillNullReduce: vortex_array::VTable -pub fn vortex_array::extension::datetime::Time::validate_dtype(ext_dtype: &vortex_array::dtype::extension::ExtDType) -> vortex_error::VortexResult<()> +pub fn vortex_array::scalar_fn::fns::fill_null::FillNullReduce::fill_null(array: vortex_array::ArrayView<'_, Self>, fill_value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult> -pub fn vortex_array::extension::datetime::Time::validate_scalar_value(ext_dtype: &vortex_array::dtype::extension::ExtDType, storage_value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult<()> +impl vortex_array::scalar_fn::fns::fill_null::FillNullReduce for vortex_array::arrays::Chunked -pub struct vortex_array::extension::datetime::Timestamp +pub fn vortex_array::arrays::Chunked::fill_null(array: vortex_array::ArrayView<'_, vortex_array::arrays::Chunked>, fill_value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult> -impl vortex_array::extension::datetime::Timestamp +impl vortex_array::scalar_fn::fns::fill_null::FillNullReduce for vortex_array::arrays::Constant -pub fn vortex_array::extension::datetime::Timestamp::new(time_unit: vortex_array::extension::datetime::TimeUnit, nullability: vortex_array::dtype::Nullability) -> vortex_array::dtype::extension::ExtDType +pub fn vortex_array::arrays::Constant::fill_null(array: vortex_array::ArrayView<'_, vortex_array::arrays::Constant>, fill_value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult> -pub fn vortex_array::extension::datetime::Timestamp::new_with_options(options: vortex_array::extension::datetime::TimestampOptions, nullability: vortex_array::dtype::Nullability) -> vortex_array::dtype::extension::ExtDType +pub mod vortex_array::scalar_fn::fns::get_item -pub fn vortex_array::extension::datetime::Timestamp::new_with_tz(time_unit: vortex_array::extension::datetime::TimeUnit, timezone: core::option::Option>, nullability: vortex_array::dtype::Nullability) -> vortex_array::dtype::extension::ExtDType +pub struct vortex_array::scalar_fn::fns::get_item::GetItem -impl core::clone::Clone for vortex_array::extension::datetime::Timestamp +impl core::clone::Clone for vortex_array::scalar_fn::fns::get_item::GetItem -pub fn vortex_array::extension::datetime::Timestamp::clone(&self) -> vortex_array::extension::datetime::Timestamp +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::clone(&self) -> vortex_array::scalar_fn::fns::get_item::GetItem -impl core::cmp::Eq for vortex_array::extension::datetime::Timestamp +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::get_item::GetItem -impl core::cmp::PartialEq for vortex_array::extension::datetime::Timestamp +pub type vortex_array::scalar_fn::fns::get_item::GetItem::Options = vortex_array::dtype::FieldName -pub fn vortex_array::extension::datetime::Timestamp::eq(&self, other: &vortex_array::extension::datetime::Timestamp) -> bool +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::arity(&self, _field_name: &vortex_array::dtype::FieldName) -> vortex_array::scalar_fn::Arity -impl core::default::Default for vortex_array::extension::datetime::Timestamp +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -pub fn vortex_array::extension::datetime::Timestamp::default() -> vortex_array::extension::datetime::Timestamp +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -impl core::fmt::Debug for vortex_array::extension::datetime::Timestamp +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::extension::datetime::Timestamp::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::execute(&self, field_name: &vortex_array::dtype::FieldName, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::hash::Hash for vortex_array::extension::datetime::Timestamp +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::fmt_sql(&self, field_name: &vortex_array::dtype::FieldName, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::extension::datetime::Timestamp::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::id(&self) -> vortex_array::scalar_fn::ScalarFnId -impl core::marker::StructuralPartialEq for vortex_array::extension::datetime::Timestamp +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::is_fallible(&self, _field_name: &vortex_array::dtype::FieldName) -> bool -impl vortex_array::dtype::extension::ExtVTable for vortex_array::extension::datetime::Timestamp +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::is_null_sensitive(&self, _field_name: &vortex_array::dtype::FieldName) -> bool -pub type vortex_array::extension::datetime::Timestamp::Metadata = vortex_array::extension::datetime::TimestampOptions +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::reduce(&self, field_name: &vortex_array::dtype::FieldName, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub type vortex_array::extension::datetime::Timestamp::NativeValue<'a> = vortex_array::extension::datetime::TimestampValue<'a> +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::return_dtype(&self, field_name: &vortex_array::dtype::FieldName, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -pub fn vortex_array::extension::datetime::Timestamp::can_coerce_from(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> -pub fn vortex_array::extension::datetime::Timestamp::can_coerce_to(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -pub fn vortex_array::extension::datetime::Timestamp::deserialize_metadata(&self, data: &[u8]) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::simplify_untyped(&self, field_name: &vortex_array::dtype::FieldName, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::extension::datetime::Timestamp::id(&self) -> vortex_array::dtype::extension::ExtId +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::stat_expression(&self, field_name: &vortex_array::dtype::FieldName, _expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::extension::datetime::Timestamp::least_supertype(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::extension::datetime::Timestamp::serialize_metadata(&self, metadata: &Self::Metadata) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::extension::datetime::Timestamp::unpack_native<'a>(ext_dtype: &'a vortex_array::dtype::extension::ExtDType, storage_value: &'a vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult +pub mod vortex_array::scalar_fn::fns::is_null -pub fn vortex_array::extension::datetime::Timestamp::validate_dtype(ext_dtype: &vortex_array::dtype::extension::ExtDType) -> vortex_error::VortexResult<()> +pub struct vortex_array::scalar_fn::fns::is_null::IsNull -pub fn vortex_array::extension::datetime::Timestamp::validate_scalar_value(ext_dtype: &vortex_array::dtype::extension::ExtDType, storage_value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult<()> +impl core::clone::Clone for vortex_array::scalar_fn::fns::is_null::IsNull -pub struct vortex_array::extension::datetime::TimestampOptions +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::clone(&self) -> vortex_array::scalar_fn::fns::is_null::IsNull -pub vortex_array::extension::datetime::TimestampOptions::tz: core::option::Option> +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::is_null::IsNull -pub vortex_array::extension::datetime::TimestampOptions::unit: vortex_array::extension::datetime::TimeUnit +pub type vortex_array::scalar_fn::fns::is_null::IsNull::Options = vortex_array::scalar_fn::EmptyOptions -impl core::clone::Clone for vortex_array::extension::datetime::TimestampOptions +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity -pub fn vortex_array::extension::datetime::TimestampOptions::clone(&self) -> vortex_array::extension::datetime::TimestampOptions +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -impl core::cmp::Eq for vortex_array::extension::datetime::TimestampOptions +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -impl core::cmp::PartialEq for vortex_array::extension::datetime::TimestampOptions +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::extension::datetime::TimestampOptions::eq(&self, other: &vortex_array::extension::datetime::TimestampOptions) -> bool +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::execute(&self, _data: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::extension::datetime::TimestampOptions +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::extension::datetime::TimestampOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::id(&self) -> vortex_array::scalar_fn::ScalarFnId -impl core::fmt::Display for vortex_array::extension::datetime::TimestampOptions +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::is_fallible(&self, _instance: &Self::Options) -> bool -pub fn vortex_array::extension::datetime::TimestampOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::is_null_sensitive(&self, _instance: &Self::Options) -> bool -impl core::hash::Hash for vortex_array::extension::datetime::TimestampOptions +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub fn vortex_array::extension::datetime::TimestampOptions::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::return_dtype(&self, _options: &Self::Options, _arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -impl core::marker::StructuralPartialEq for vortex_array::extension::datetime::TimestampOptions +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::serialize(&self, _instance: &Self::Options) -> vortex_error::VortexResult>> -pub mod vortex_array::extension::uuid +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -pub struct vortex_array::extension::uuid::Uuid +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -impl core::clone::Clone for vortex_array::extension::uuid::Uuid +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::extension::uuid::Uuid::clone(&self) -> vortex_array::extension::uuid::Uuid +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::stat_falsification(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -impl core::cmp::Eq for vortex_array::extension::uuid::Uuid +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -impl core::cmp::PartialEq for vortex_array::extension::uuid::Uuid +pub mod vortex_array::scalar_fn::fns::like -pub fn vortex_array::extension::uuid::Uuid::eq(&self, other: &vortex_array::extension::uuid::Uuid) -> bool +pub struct vortex_array::scalar_fn::fns::like::Like -impl core::default::Default for vortex_array::extension::uuid::Uuid +impl core::clone::Clone for vortex_array::scalar_fn::fns::like::Like -pub fn vortex_array::extension::uuid::Uuid::default() -> vortex_array::extension::uuid::Uuid +pub fn vortex_array::scalar_fn::fns::like::Like::clone(&self) -> vortex_array::scalar_fn::fns::like::Like -impl core::fmt::Debug for vortex_array::extension::uuid::Uuid +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::like::Like -pub fn vortex_array::extension::uuid::Uuid::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::scalar_fn::fns::like::Like::Options = vortex_array::scalar_fn::fns::like::LikeOptions -impl core::hash::Hash for vortex_array::extension::uuid::Uuid +pub fn vortex_array::scalar_fn::fns::like::Like::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity -pub fn vortex_array::extension::uuid::Uuid::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::scalar_fn::fns::like::Like::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -impl core::marker::StructuralPartialEq for vortex_array::extension::uuid::Uuid +pub fn vortex_array::scalar_fn::fns::like::Like::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -impl vortex_array::dtype::extension::ExtVTable for vortex_array::extension::uuid::Uuid +pub fn vortex_array::scalar_fn::fns::like::Like::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::extension::uuid::Uuid::Metadata = vortex_array::extension::uuid::UuidMetadata +pub fn vortex_array::scalar_fn::fns::like::Like::execute(&self, options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::extension::uuid::Uuid::NativeValue<'a> = uuid::Uuid +pub fn vortex_array::scalar_fn::fns::like::Like::fmt_sql(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::extension::uuid::Uuid::can_coerce_from(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool +pub fn vortex_array::scalar_fn::fns::like::Like::id(&self) -> vortex_array::scalar_fn::ScalarFnId -pub fn vortex_array::extension::uuid::Uuid::can_coerce_to(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> bool +pub fn vortex_array::scalar_fn::fns::like::Like::is_fallible(&self, options: &Self::Options) -> bool -pub fn vortex_array::extension::uuid::Uuid::deserialize_metadata(&self, metadata: &[u8]) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::like::Like::is_null_sensitive(&self, _instance: &Self::Options) -> bool -pub fn vortex_array::extension::uuid::Uuid::id(&self) -> vortex_array::dtype::extension::ExtId +pub fn vortex_array::scalar_fn::fns::like::Like::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub fn vortex_array::extension::uuid::Uuid::least_supertype(ext_dtype: &vortex_array::dtype::extension::ExtDType, other: &vortex_array::dtype::DType) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::like::Like::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -pub fn vortex_array::extension::uuid::Uuid::serialize_metadata(&self, metadata: &Self::Metadata) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::like::Like::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> -pub fn vortex_array::extension::uuid::Uuid::unpack_native<'a>(ext_dtype: &vortex_array::dtype::extension::ExtDType, storage_value: &'a vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::like::Like::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -pub fn vortex_array::extension::uuid::Uuid::validate_dtype(ext_dtype: &vortex_array::dtype::extension::ExtDType) -> vortex_error::VortexResult<()> +pub fn vortex_array::scalar_fn::fns::like::Like::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::extension::uuid::Uuid::validate_scalar_value(ext_dtype: &vortex_array::dtype::extension::ExtDType, storage_value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult<()> +pub fn vortex_array::scalar_fn::fns::like::Like::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub struct vortex_array::extension::uuid::UuidMetadata +pub fn vortex_array::scalar_fn::fns::like::Like::stat_falsification(&self, like_opts: &vortex_array::scalar_fn::fns::like::LikeOptions, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub vortex_array::extension::uuid::UuidMetadata::version: core::option::Option +pub fn vortex_array::scalar_fn::fns::like::Like::validity(&self, _options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -impl core::clone::Clone for vortex_array::extension::uuid::UuidMetadata +pub struct vortex_array::scalar_fn::fns::like::LikeExecuteAdaptor(pub V) -pub fn vortex_array::extension::uuid::UuidMetadata::clone(&self) -> vortex_array::extension::uuid::UuidMetadata +impl core::default::Default for vortex_array::scalar_fn::fns::like::LikeExecuteAdaptor -impl core::cmp::Eq for vortex_array::extension::uuid::UuidMetadata +pub fn vortex_array::scalar_fn::fns::like::LikeExecuteAdaptor::default() -> vortex_array::scalar_fn::fns::like::LikeExecuteAdaptor -impl core::cmp::PartialEq for vortex_array::extension::uuid::UuidMetadata +impl core::fmt::Debug for vortex_array::scalar_fn::fns::like::LikeExecuteAdaptor -pub fn vortex_array::extension::uuid::UuidMetadata::eq(&self, other: &Self) -> bool +pub fn vortex_array::scalar_fn::fns::like::LikeExecuteAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::default::Default for vortex_array::extension::uuid::UuidMetadata +impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::like::LikeExecuteAdaptor where V: vortex_array::scalar_fn::fns::like::LikeKernel -pub fn vortex_array::extension::uuid::UuidMetadata::default() -> vortex_array::extension::uuid::UuidMetadata +pub type vortex_array::scalar_fn::fns::like::LikeExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -impl core::fmt::Debug for vortex_array::extension::uuid::UuidMetadata +pub fn vortex_array::scalar_fn::fns::like::LikeExecuteAdaptor::execute_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::like::Like>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::extension::uuid::UuidMetadata::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub struct vortex_array::scalar_fn::fns::like::LikeOptions -impl core::fmt::Display for vortex_array::extension::uuid::UuidMetadata +pub vortex_array::scalar_fn::fns::like::LikeOptions::case_insensitive: bool -pub fn vortex_array::extension::uuid::UuidMetadata::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub vortex_array::scalar_fn::fns::like::LikeOptions::negated: bool -impl core::hash::Hash for vortex_array::extension::uuid::UuidMetadata +impl core::clone::Clone for vortex_array::scalar_fn::fns::like::LikeOptions -pub fn vortex_array::extension::uuid::UuidMetadata::hash(&self, state: &mut H) +pub fn vortex_array::scalar_fn::fns::like::LikeOptions::clone(&self) -> vortex_array::scalar_fn::fns::like::LikeOptions -pub struct vortex_array::extension::EmptyMetadata +impl core::cmp::Eq for vortex_array::scalar_fn::fns::like::LikeOptions -impl core::clone::Clone for vortex_array::extension::EmptyMetadata +impl core::cmp::PartialEq for vortex_array::scalar_fn::fns::like::LikeOptions -pub fn vortex_array::extension::EmptyMetadata::clone(&self) -> vortex_array::extension::EmptyMetadata +pub fn vortex_array::scalar_fn::fns::like::LikeOptions::eq(&self, other: &vortex_array::scalar_fn::fns::like::LikeOptions) -> bool -impl core::cmp::Eq for vortex_array::extension::EmptyMetadata +impl core::default::Default for vortex_array::scalar_fn::fns::like::LikeOptions -impl core::cmp::PartialEq for vortex_array::extension::EmptyMetadata +pub fn vortex_array::scalar_fn::fns::like::LikeOptions::default() -> vortex_array::scalar_fn::fns::like::LikeOptions -pub fn vortex_array::extension::EmptyMetadata::eq(&self, other: &vortex_array::extension::EmptyMetadata) -> bool +impl core::fmt::Debug for vortex_array::scalar_fn::fns::like::LikeOptions -impl core::fmt::Debug for vortex_array::extension::EmptyMetadata +pub fn vortex_array::scalar_fn::fns::like::LikeOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::extension::EmptyMetadata::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl core::fmt::Display for vortex_array::scalar_fn::fns::like::LikeOptions -impl core::fmt::Display for vortex_array::extension::EmptyMetadata +pub fn vortex_array::scalar_fn::fns::like::LikeOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::extension::EmptyMetadata::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl core::hash::Hash for vortex_array::scalar_fn::fns::like::LikeOptions -impl core::hash::Hash for vortex_array::extension::EmptyMetadata +pub fn vortex_array::scalar_fn::fns::like::LikeOptions::hash<__H: core::hash::Hasher>(&self, state: &mut __H) -pub fn vortex_array::extension::EmptyMetadata::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +impl core::marker::Copy for vortex_array::scalar_fn::fns::like::LikeOptions -impl core::marker::StructuralPartialEq for vortex_array::extension::EmptyMetadata +impl core::marker::StructuralPartialEq for vortex_array::scalar_fn::fns::like::LikeOptions -pub mod vortex_array::flatbuffers +pub struct vortex_array::scalar_fn::fns::like::LikeReduceAdaptor(pub V) -pub use vortex_array::flatbuffers::<> +impl core::default::Default for vortex_array::scalar_fn::fns::like::LikeReduceAdaptor -pub mod vortex_array::iter +pub fn vortex_array::scalar_fn::fns::like::LikeReduceAdaptor::default() -> vortex_array::scalar_fn::fns::like::LikeReduceAdaptor -pub struct vortex_array::iter::ArrayIteratorAdapter +impl core::fmt::Debug for vortex_array::scalar_fn::fns::like::LikeReduceAdaptor -impl vortex_array::iter::ArrayIteratorAdapter +pub fn vortex_array::scalar_fn::fns::like::LikeReduceAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::iter::ArrayIteratorAdapter::new(dtype: vortex_array::dtype::DType, inner: I) -> Self +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::like::LikeReduceAdaptor where V: vortex_array::scalar_fn::fns::like::LikeReduce -impl core::iter::traits::iterator::Iterator for vortex_array::iter::ArrayIteratorAdapter where I: core::iter::traits::iterator::Iterator> +pub type vortex_array::scalar_fn::fns::like::LikeReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -pub type vortex_array::iter::ArrayIteratorAdapter::Item = core::result::Result, vortex_error::VortexError> +pub fn vortex_array::scalar_fn::fns::like::LikeReduceAdaptor::reduce_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::like::Like>, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::iter::ArrayIteratorAdapter::next(&mut self) -> core::option::Option +pub trait vortex_array::scalar_fn::fns::like::LikeKernel: vortex_array::VTable -impl vortex_array::iter::ArrayIterator for vortex_array::iter::ArrayIteratorAdapter where I: core::iter::traits::iterator::Iterator> +pub fn vortex_array::scalar_fn::fns::like::LikeKernel::like(array: vortex_array::ArrayView<'_, Self>, pattern: &vortex_array::ArrayRef, options: vortex_array::scalar_fn::fns::like::LikeOptions, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::iter::ArrayIteratorAdapter::dtype(&self) -> &vortex_array::dtype::DType +pub trait vortex_array::scalar_fn::fns::like::LikeReduce: vortex_array::VTable -pub trait vortex_array::iter::ArrayIterator: core::iter::traits::iterator::Iterator> +pub fn vortex_array::scalar_fn::fns::like::LikeReduce::like(array: vortex_array::ArrayView<'_, Self>, pattern: &vortex_array::ArrayRef, options: vortex_array::scalar_fn::fns::like::LikeOptions) -> vortex_error::VortexResult> -pub fn vortex_array::iter::ArrayIterator::dtype(&self) -> &vortex_array::dtype::DType +impl vortex_array::scalar_fn::fns::like::LikeReduce for vortex_array::arrays::dict::Dict -impl vortex_array::iter::ArrayIterator for alloc::boxed::Box<(dyn vortex_array::iter::ArrayIterator + core::marker::Send)> +pub fn vortex_array::arrays::dict::Dict::like(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, pattern: &vortex_array::ArrayRef, options: vortex_array::scalar_fn::fns::like::LikeOptions) -> vortex_error::VortexResult> -pub fn alloc::boxed::Box<(dyn vortex_array::iter::ArrayIterator + core::marker::Send)>::dtype(&self) -> &vortex_array::dtype::DType +pub mod vortex_array::scalar_fn::fns::list_contains -impl vortex_array::iter::ArrayIterator for vortex_array::arrow::ArrowArrayStreamAdapter +pub struct vortex_array::scalar_fn::fns::list_contains::ListContains -pub fn vortex_array::arrow::ArrowArrayStreamAdapter::dtype(&self) -> &vortex_array::dtype::DType +impl core::clone::Clone for vortex_array::scalar_fn::fns::list_contains::ListContains -impl vortex_array::iter::ArrayIterator for vortex_array::iter::ArrayIteratorAdapter where I: core::iter::traits::iterator::Iterator> +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::clone(&self) -> vortex_array::scalar_fn::fns::list_contains::ListContains -pub fn vortex_array::iter::ArrayIteratorAdapter::dtype(&self) -> &vortex_array::dtype::DType +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::list_contains::ListContains -pub trait vortex_array::iter::ArrayIteratorExt: vortex_array::iter::ArrayIterator +pub type vortex_array::scalar_fn::fns::list_contains::ListContains::Options = vortex_array::scalar_fn::EmptyOptions -pub fn vortex_array::iter::ArrayIteratorExt::into_array_stream(self) -> impl vortex_array::stream::ArrayStream where Self: core::marker::Sized +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity -pub fn vortex_array::iter::ArrayIteratorExt::read_all(self) -> vortex_error::VortexResult where Self: core::marker::Sized +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -impl vortex_array::iter::ArrayIteratorExt for I +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -pub fn I::into_array_stream(self) -> impl vortex_array::stream::ArrayStream where Self: core::marker::Sized +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn I::read_all(self) -> vortex_error::VortexResult where Self: core::marker::Sized +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::execute(&self, _options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub mod vortex_array::kernel +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub struct vortex_array::kernel::ParentKernelAdapter +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::id(&self) -> vortex_array::scalar_fn::ScalarFnId -impl> core::fmt::Debug for vortex_array::kernel::ParentKernelAdapter +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::is_fallible(&self, _options: &Self::Options) -> bool -pub fn vortex_array::kernel::ParentKernelAdapter::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::is_null_sensitive(&self, _instance: &Self::Options) -> bool -impl> vortex_array::kernel::DynParentKernel for vortex_array::kernel::ParentKernelAdapter +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub fn vortex_array::kernel::ParentKernelAdapter::execute_parent(&self, child: &::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -pub fn vortex_array::kernel::ParentKernelAdapter::matches(&self, parent: &vortex_array::ArrayRef) -> bool +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::serialize(&self, _instance: &Self::Options) -> vortex_error::VortexResult>> -pub struct vortex_array::kernel::ParentKernelSet +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -impl vortex_array::kernel::ParentKernelSet +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::kernel::ParentKernelSet::execute(&self, child: &::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub const fn vortex_array::kernel::ParentKernelSet::lift>(kernel: &'static K) -> &'static dyn vortex_array::kernel::DynParentKernel +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::stat_falsification(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub const fn vortex_array::kernel::ParentKernelSet::new(kernels: &'static [&'static dyn vortex_array::kernel::DynParentKernel]) -> Self +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub trait vortex_array::kernel::DynParentKernel: core::marker::Send + core::marker::Sync +pub struct vortex_array::scalar_fn::fns::list_contains::ListContainsElementExecuteAdaptor(pub V) -pub fn vortex_array::kernel::DynParentKernel::execute_parent(&self, child: &::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl core::default::Default for vortex_array::scalar_fn::fns::list_contains::ListContainsElementExecuteAdaptor -pub fn vortex_array::kernel::DynParentKernel::matches(&self, parent: &vortex_array::ArrayRef) -> bool +pub fn vortex_array::scalar_fn::fns::list_contains::ListContainsElementExecuteAdaptor::default() -> vortex_array::scalar_fn::fns::list_contains::ListContainsElementExecuteAdaptor -impl> vortex_array::kernel::DynParentKernel for vortex_array::kernel::ParentKernelAdapter +impl core::fmt::Debug for vortex_array::scalar_fn::fns::list_contains::ListContainsElementExecuteAdaptor -pub fn vortex_array::kernel::ParentKernelAdapter::execute_parent(&self, child: &::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::list_contains::ListContainsElementExecuteAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::kernel::ParentKernelAdapter::matches(&self, parent: &vortex_array::ArrayRef) -> bool +impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::list_contains::ListContainsElementExecuteAdaptor where V: vortex_array::scalar_fn::fns::list_contains::ListContainsElementKernel -pub trait vortex_array::kernel::ExecuteParentKernel: core::fmt::Debug + core::marker::Send + core::marker::Sync + 'static +pub type vortex_array::scalar_fn::fns::list_contains::ListContainsElementExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -pub type vortex_array::kernel::ExecuteParentKernel::Parent: vortex_array::matcher::Matcher +pub fn vortex_array::scalar_fn::fns::list_contains::ListContainsElementExecuteAdaptor::execute_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::list_contains::ListContains>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::kernel::ExecuteParentKernel::execute_parent(&self, array: &::Array, parent: ::Match, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub struct vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduceAdaptor(pub V) -impl vortex_array::kernel::ExecuteParentKernel for vortex_array::arrays::dict::TakeExecuteAdaptor where V: vortex_array::arrays::dict::TakeExecute +impl core::default::Default for vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduceAdaptor -pub type vortex_array::arrays::dict::TakeExecuteAdaptor::Parent = vortex_array::arrays::dict::Dict +pub fn vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduceAdaptor::default() -> vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduceAdaptor -pub fn vortex_array::arrays::dict::TakeExecuteAdaptor::execute_parent(&self, array: &::Array, parent: ::Match, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl core::fmt::Debug for vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduceAdaptor -impl vortex_array::kernel::ExecuteParentKernel for vortex_array::arrays::filter::FilterExecuteAdaptor where V: vortex_array::arrays::filter::FilterKernel +pub fn vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduceAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub type vortex_array::arrays::filter::FilterExecuteAdaptor::Parent = vortex_array::arrays::Filter +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduceAdaptor where V: vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduce -pub fn vortex_array::arrays::filter::FilterExecuteAdaptor::execute_parent(&self, array: &::Array, parent: ::Match, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub type vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -impl vortex_array::kernel::ExecuteParentKernel for vortex_array::arrays::slice::SliceExecuteAdaptor where V: vortex_array::arrays::slice::SliceKernel +pub fn vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduceAdaptor::reduce_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::list_contains::ListContains>, child_idx: usize) -> vortex_error::VortexResult> -pub type vortex_array::arrays::slice::SliceExecuteAdaptor::Parent = vortex_array::arrays::slice::Slice +pub trait vortex_array::scalar_fn::fns::list_contains::ListContainsElementKernel: vortex_array::VTable -pub fn vortex_array::arrays::slice::SliceExecuteAdaptor::execute_parent(&self, array: &::Array, parent: ::Match, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::list_contains::ListContainsElementKernel::list_contains(list: &vortex_array::ArrayRef, element: vortex_array::ArrayView<'_, Self>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::between::BetweenExecuteAdaptor where V: vortex_array::scalar_fn::fns::between::BetweenKernel +pub trait vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduce: vortex_array::VTable -pub type vortex_array::scalar_fn::fns::between::BetweenExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub fn vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduce::list_contains(list: &vortex_array::ArrayRef, element: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::between::BetweenExecuteAdaptor::execute_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::between::Between>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub mod vortex_array::scalar_fn::fns::literal -impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::binary::CompareExecuteAdaptor where V: vortex_array::scalar_fn::fns::binary::CompareKernel +pub struct vortex_array::scalar_fn::fns::literal::Literal -pub type vortex_array::scalar_fn::fns::binary::CompareExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +impl core::clone::Clone for vortex_array::scalar_fn::fns::literal::Literal -pub fn vortex_array::scalar_fn::fns::binary::CompareExecuteAdaptor::execute_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::binary::Binary>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::literal::Literal::clone(&self) -> vortex_array::scalar_fn::fns::literal::Literal -impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::cast::CastExecuteAdaptor where V: vortex_array::scalar_fn::fns::cast::CastKernel +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::literal::Literal -pub type vortex_array::scalar_fn::fns::cast::CastExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub type vortex_array::scalar_fn::fns::literal::Literal::Options = vortex_array::scalar::Scalar -pub fn vortex_array::scalar_fn::fns::cast::CastExecuteAdaptor::execute_parent(&self, array: &::Array, parent: ::Match, _child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::literal::Literal::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity -impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::fill_null::FillNullExecuteAdaptor where V: vortex_array::scalar_fn::fns::fill_null::FillNullKernel +pub fn vortex_array::scalar_fn::fns::literal::Literal::child_name(&self, _instance: &Self::Options, _child_idx: usize) -> vortex_array::scalar_fn::ChildName -pub type vortex_array::scalar_fn::fns::fill_null::FillNullExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub fn vortex_array::scalar_fn::fns::literal::Literal::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::fill_null::FillNullExecuteAdaptor::execute_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::fill_null::FillNull>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::literal::Literal::deserialize(&self, _metadata: &[u8], session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::like::LikeExecuteAdaptor where V: vortex_array::scalar_fn::fns::like::LikeKernel +pub fn vortex_array::scalar_fn::fns::literal::Literal::execute(&self, scalar: &vortex_array::scalar::Scalar, args: &dyn vortex_array::scalar_fn::ExecutionArgs, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::scalar_fn::fns::like::LikeExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub fn vortex_array::scalar_fn::fns::literal::Literal::fmt_sql(&self, scalar: &vortex_array::scalar::Scalar, _expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::scalar_fn::fns::like::LikeExecuteAdaptor::execute_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::like::Like>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::literal::Literal::id(&self) -> vortex_array::scalar_fn::ScalarFnId -impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::list_contains::ListContainsElementExecuteAdaptor where V: vortex_array::scalar_fn::fns::list_contains::ListContainsElementKernel +pub fn vortex_array::scalar_fn::fns::literal::Literal::is_fallible(&self, _instance: &Self::Options) -> bool -pub type vortex_array::scalar_fn::fns::list_contains::ListContainsElementExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub fn vortex_array::scalar_fn::fns::literal::Literal::is_null_sensitive(&self, _instance: &Self::Options) -> bool -pub fn vortex_array::scalar_fn::fns::list_contains::ListContainsElementExecuteAdaptor::execute_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::list_contains::ListContains>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::literal::Literal::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::mask::MaskExecuteAdaptor where V: vortex_array::scalar_fn::fns::mask::MaskKernel +pub fn vortex_array::scalar_fn::fns::literal::Literal::return_dtype(&self, options: &Self::Options, _arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -pub type vortex_array::scalar_fn::fns::mask::MaskExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub fn vortex_array::scalar_fn::fns::literal::Literal::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar_fn::fns::mask::MaskExecuteAdaptor::execute_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::mask::Mask>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::literal::Literal::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::not::NotExecuteAdaptor where V: vortex_array::scalar_fn::fns::not::NotKernel +pub fn vortex_array::scalar_fn::fns::literal::Literal::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub type vortex_array::scalar_fn::fns::not::NotExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub fn vortex_array::scalar_fn::fns::literal::Literal::stat_expression(&self, scalar: &vortex_array::scalar::Scalar, _expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, _catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::scalar_fn::fns::not::NotExecuteAdaptor::execute_parent(&self, array: &::Array, _parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::not::Not>, _child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::literal::Literal::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::zip::ZipExecuteAdaptor where V: vortex_array::scalar_fn::fns::zip::ZipKernel +pub fn vortex_array::scalar_fn::fns::literal::Literal::validity(&self, scalar: &vortex_array::scalar::Scalar, _expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub type vortex_array::scalar_fn::fns::zip::ZipExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub mod vortex_array::scalar_fn::fns::mask -pub fn vortex_array::scalar_fn::fns::zip::ZipExecuteAdaptor::execute_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::zip::Zip>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub struct vortex_array::scalar_fn::fns::mask::Mask -pub mod vortex_array::mask +impl core::clone::Clone for vortex_array::scalar_fn::fns::mask::Mask -pub mod vortex_array::matcher +pub fn vortex_array::scalar_fn::fns::mask::Mask::clone(&self) -> vortex_array::scalar_fn::fns::mask::Mask -pub struct vortex_array::matcher::AnyArray +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::mask::Mask -impl core::fmt::Debug for vortex_array::matcher::AnyArray +pub type vortex_array::scalar_fn::fns::mask::Mask::Options = vortex_array::scalar_fn::EmptyOptions -pub fn vortex_array::matcher::AnyArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::fns::mask::Mask::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity -impl vortex_array::matcher::Matcher for vortex_array::matcher::AnyArray +pub fn vortex_array::scalar_fn::fns::mask::Mask::child_name(&self, _options: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -pub type vortex_array::matcher::AnyArray::Match<'a> = &'a (dyn vortex_array::DynArray + 'static) +pub fn vortex_array::scalar_fn::fns::mask::Mask::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -pub fn vortex_array::matcher::AnyArray::matches(_array: &dyn vortex_array::DynArray) -> bool +pub fn vortex_array::scalar_fn::fns::mask::Mask::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::matcher::AnyArray::try_match(array: &dyn vortex_array::DynArray) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::mask::Mask::execute(&self, _options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub trait vortex_array::matcher::Matcher +pub fn vortex_array::scalar_fn::fns::mask::Mask::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub type vortex_array::matcher::Matcher::Match<'a> +pub fn vortex_array::scalar_fn::fns::mask::Mask::id(&self) -> vortex_array::scalar_fn::ScalarFnId -pub fn vortex_array::matcher::Matcher::matches(array: &dyn vortex_array::DynArray) -> bool +pub fn vortex_array::scalar_fn::fns::mask::Mask::is_fallible(&self, options: &Self::Options) -> bool -pub fn vortex_array::matcher::Matcher::try_match<'a>(array: &'a dyn vortex_array::DynArray) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::mask::Mask::is_null_sensitive(&self, options: &Self::Options) -> bool -impl vortex_array::matcher::Matcher for vortex_array::AnyCanonical +pub fn vortex_array::scalar_fn::fns::mask::Mask::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub type vortex_array::AnyCanonical::Match<'a> = vortex_array::CanonicalView<'a> +pub fn vortex_array::scalar_fn::fns::mask::Mask::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -pub fn vortex_array::AnyCanonical::matches(array: &dyn vortex_array::DynArray) -> bool +pub fn vortex_array::scalar_fn::fns::mask::Mask::serialize(&self, _options: &Self::Options) -> vortex_error::VortexResult>> -pub fn vortex_array::AnyCanonical::try_match<'a>(array: &'a dyn vortex_array::DynArray) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::mask::Mask::simplify(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -impl vortex_array::matcher::Matcher for vortex_array::AnyColumnar +pub fn vortex_array::scalar_fn::fns::mask::Mask::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub type vortex_array::AnyColumnar::Match<'a> = vortex_array::ColumnarView<'a> +pub fn vortex_array::scalar_fn::fns::mask::Mask::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::AnyColumnar::matches(array: &dyn vortex_array::DynArray) -> bool +pub fn vortex_array::scalar_fn::fns::mask::Mask::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::AnyColumnar::try_match<'a>(array: &'a dyn vortex_array::DynArray) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::mask::Mask::validity(&self, _options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -impl vortex_array::matcher::Matcher for vortex_array::arrays::scalar_fn::AnyScalarFn +pub struct vortex_array::scalar_fn::fns::mask::MaskExecuteAdaptor(pub V) -pub type vortex_array::arrays::scalar_fn::AnyScalarFn::Match<'a> = &'a vortex_array::arrays::scalar_fn::ScalarFnArray +impl core::default::Default for vortex_array::scalar_fn::fns::mask::MaskExecuteAdaptor -pub fn vortex_array::arrays::scalar_fn::AnyScalarFn::matches(array: &dyn vortex_array::DynArray) -> bool +pub fn vortex_array::scalar_fn::fns::mask::MaskExecuteAdaptor::default() -> vortex_array::scalar_fn::fns::mask::MaskExecuteAdaptor -pub fn vortex_array::arrays::scalar_fn::AnyScalarFn::try_match(array: &dyn vortex_array::DynArray) -> core::option::Option +impl core::fmt::Debug for vortex_array::scalar_fn::fns::mask::MaskExecuteAdaptor -impl vortex_array::matcher::Matcher for vortex_array::matcher::AnyArray +pub fn vortex_array::scalar_fn::fns::mask::MaskExecuteAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub type vortex_array::matcher::AnyArray::Match<'a> = &'a (dyn vortex_array::DynArray + 'static) +impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::mask::MaskExecuteAdaptor where V: vortex_array::scalar_fn::fns::mask::MaskKernel -pub fn vortex_array::matcher::AnyArray::matches(_array: &dyn vortex_array::DynArray) -> bool +pub type vortex_array::scalar_fn::fns::mask::MaskExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -pub fn vortex_array::matcher::AnyArray::try_match(array: &dyn vortex_array::DynArray) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::mask::MaskExecuteAdaptor::execute_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::mask::Mask>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::matcher::Matcher for vortex_array::arrays::scalar_fn::ExactScalarFn +pub struct vortex_array::scalar_fn::fns::mask::MaskReduceAdaptor(pub V) -pub type vortex_array::arrays::scalar_fn::ExactScalarFn::Match<'a> = vortex_array::arrays::scalar_fn::ScalarFnArrayView<'a, F> +impl core::default::Default for vortex_array::scalar_fn::fns::mask::MaskReduceAdaptor -pub fn vortex_array::arrays::scalar_fn::ExactScalarFn::matches(array: &dyn vortex_array::DynArray) -> bool +pub fn vortex_array::scalar_fn::fns::mask::MaskReduceAdaptor::default() -> vortex_array::scalar_fn::fns::mask::MaskReduceAdaptor -pub fn vortex_array::arrays::scalar_fn::ExactScalarFn::try_match(array: &dyn vortex_array::DynArray) -> core::option::Option +impl core::fmt::Debug for vortex_array::scalar_fn::fns::mask::MaskReduceAdaptor -impl vortex_array::matcher::Matcher for V +pub fn vortex_array::scalar_fn::fns::mask::MaskReduceAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub type V::Match<'a> = &'a ::Array +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::mask::MaskReduceAdaptor where V: vortex_array::scalar_fn::fns::mask::MaskReduce -pub fn V::matches(array: &dyn vortex_array::DynArray) -> bool +pub type vortex_array::scalar_fn::fns::mask::MaskReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -pub fn V::try_match<'a>(array: &'a dyn vortex_array::DynArray) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::mask::MaskReduceAdaptor::reduce_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::mask::Mask>, child_idx: usize) -> vortex_error::VortexResult> -pub mod vortex_array::normalize +pub trait vortex_array::scalar_fn::fns::mask::MaskKernel: vortex_array::VTable -pub enum vortex_array::normalize::Operation +pub fn vortex_array::scalar_fn::fns::mask::MaskKernel::mask(array: vortex_array::ArrayView<'_, Self>, mask: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub vortex_array::normalize::Operation::Error +impl vortex_array::scalar_fn::fns::mask::MaskKernel for vortex_array::arrays::Chunked -pub struct vortex_array::normalize::NormalizeOptions<'a> +pub fn vortex_array::arrays::Chunked::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::Chunked>, mask: &vortex_array::ArrayRef, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub vortex_array::normalize::NormalizeOptions::allowed: &'a vortex_array::session::ArrayRegistry +pub trait vortex_array::scalar_fn::fns::mask::MaskReduce: vortex_array::VTable -pub vortex_array::normalize::NormalizeOptions::operation: vortex_array::normalize::Operation +pub fn vortex_array::scalar_fn::fns::mask::MaskReduce::mask(array: vortex_array::ArrayView<'_, Self>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub mod vortex_array::optimizer +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Bool -pub mod vortex_array::optimizer::rules +pub fn vortex_array::arrays::Bool::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub struct vortex_array::optimizer::rules::ParentReduceRuleAdapter +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Decimal -impl> vortex_array::optimizer::rules::DynArrayParentReduceRule for vortex_array::optimizer::rules::ParentReduceRuleAdapter +pub fn vortex_array::arrays::Decimal::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::Decimal>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::optimizer::rules::ParentReduceRuleAdapter::matches(&self, parent: &vortex_array::ArrayRef) -> bool +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Extension -pub fn vortex_array::optimizer::rules::ParentReduceRuleAdapter::reduce_parent(&self, child: &::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Extension::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::Extension>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -impl> core::fmt::Debug for vortex_array::optimizer::rules::ParentReduceRuleAdapter +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::FixedSizeList -pub fn vortex_array::optimizer::rules::ParentReduceRuleAdapter::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::FixedSizeList::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::FixedSizeList>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub struct vortex_array::optimizer::rules::ParentRuleSet +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::List -impl vortex_array::optimizer::rules::ParentRuleSet +pub fn vortex_array::arrays::List::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::List>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::optimizer::rules::ParentRuleSet::evaluate(&self, child: &::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::ListView -pub const fn vortex_array::optimizer::rules::ParentRuleSet::lift>(rule: &'static R) -> &'static dyn vortex_array::optimizer::rules::DynArrayParentReduceRule +pub fn vortex_array::arrays::ListView::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::ListView>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub const fn vortex_array::optimizer::rules::ParentRuleSet::new(rules: &'static [&'static dyn vortex_array::optimizer::rules::DynArrayParentReduceRule]) -> Self +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Masked -pub struct vortex_array::optimizer::rules::ReduceRuleSet +pub fn vortex_array::arrays::Masked::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -impl vortex_array::optimizer::rules::ReduceRuleSet +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Primitive -pub fn vortex_array::optimizer::rules::ReduceRuleSet::evaluate(&self, array: &::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Primitive::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::Primitive>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub const fn vortex_array::optimizer::rules::ReduceRuleSet::new(rules: &'static [&'static dyn vortex_array::optimizer::rules::ArrayReduceRule]) -> Self +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Struct -pub trait vortex_array::optimizer::rules::ArrayParentReduceRule: core::fmt::Debug + core::marker::Send + core::marker::Sync + 'static +pub fn vortex_array::arrays::Struct::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::Struct>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub type vortex_array::optimizer::rules::ArrayParentReduceRule::Parent: vortex_array::matcher::Matcher +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::VarBin -pub fn vortex_array::optimizer::rules::ArrayParentReduceRule::reduce_parent(&self, array: &::Array, parent: ::Match, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBin>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::arrays::bool::BoolMaskedValidityRule +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::VarBinView -pub type vortex_array::arrays::bool::BoolMaskedValidityRule::Parent = vortex_array::arrays::Masked +pub fn vortex_array::arrays::VarBinView::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBinView>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::bool::BoolMaskedValidityRule::reduce_parent(&self, array: &vortex_array::arrays::BoolArray, parent: &vortex_array::arrays::MaskedArray, child_idx: usize) -> vortex_error::VortexResult> +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::dict::Dict -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::arrays::decimal::DecimalMaskedValidityRule +pub fn vortex_array::arrays::dict::Dict::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub type vortex_array::arrays::decimal::DecimalMaskedValidityRule::Parent = vortex_array::arrays::Masked +impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::null::Null -pub fn vortex_array::arrays::decimal::DecimalMaskedValidityRule::reduce_parent(&self, array: &vortex_array::arrays::DecimalArray, parent: &vortex_array::arrays::MaskedArray, _child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::null::Null::mask(array: vortex_array::ArrayView<'_, vortex_array::arrays::null::Null>, _mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::arrays::primitive::PrimitiveMaskedValidityRule +pub mod vortex_array::scalar_fn::fns::merge -pub type vortex_array::arrays::primitive::PrimitiveMaskedValidityRule::Parent = vortex_array::arrays::Masked +pub enum vortex_array::scalar_fn::fns::merge::DuplicateHandling -pub fn vortex_array::arrays::primitive::PrimitiveMaskedValidityRule::reduce_parent(&self, array: &vortex_array::arrays::PrimitiveArray, parent: &vortex_array::arrays::MaskedArray, _child_idx: usize) -> vortex_error::VortexResult> +pub vortex_array::scalar_fn::fns::merge::DuplicateHandling::Error -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::arrays::dict::TakeReduceAdaptor where V: vortex_array::arrays::dict::TakeReduce +pub vortex_array::scalar_fn::fns::merge::DuplicateHandling::RightMost -pub type vortex_array::arrays::dict::TakeReduceAdaptor::Parent = vortex_array::arrays::dict::Dict +impl core::clone::Clone for vortex_array::scalar_fn::fns::merge::DuplicateHandling -pub fn vortex_array::arrays::dict::TakeReduceAdaptor::reduce_parent(&self, array: &::Array, parent: &vortex_array::arrays::dict::DictArray, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::merge::DuplicateHandling::clone(&self) -> vortex_array::scalar_fn::fns::merge::DuplicateHandling -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::arrays::filter::FilterReduceAdaptor where V: vortex_array::arrays::filter::FilterReduce +impl core::cmp::Eq for vortex_array::scalar_fn::fns::merge::DuplicateHandling -pub type vortex_array::arrays::filter::FilterReduceAdaptor::Parent = vortex_array::arrays::Filter +impl core::cmp::PartialEq for vortex_array::scalar_fn::fns::merge::DuplicateHandling -pub fn vortex_array::arrays::filter::FilterReduceAdaptor::reduce_parent(&self, array: &::Array, parent: &vortex_array::arrays::FilterArray, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::merge::DuplicateHandling::eq(&self, other: &vortex_array::scalar_fn::fns::merge::DuplicateHandling) -> bool -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::arrays::slice::SliceReduceAdaptor where V: vortex_array::arrays::slice::SliceReduce +impl core::default::Default for vortex_array::scalar_fn::fns::merge::DuplicateHandling -pub type vortex_array::arrays::slice::SliceReduceAdaptor::Parent = vortex_array::arrays::slice::Slice +pub fn vortex_array::scalar_fn::fns::merge::DuplicateHandling::default() -> vortex_array::scalar_fn::fns::merge::DuplicateHandling -pub fn vortex_array::arrays::slice::SliceReduceAdaptor::reduce_parent(&self, array: &::Array, parent: ::Match, child_idx: usize) -> vortex_error::VortexResult> +impl core::fmt::Debug for vortex_array::scalar_fn::fns::merge::DuplicateHandling -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::between::BetweenReduceAdaptor where V: vortex_array::scalar_fn::fns::between::BetweenReduce +pub fn vortex_array::scalar_fn::fns::merge::DuplicateHandling::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub type vortex_array::scalar_fn::fns::between::BetweenReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +impl core::fmt::Display for vortex_array::scalar_fn::fns::merge::DuplicateHandling -pub fn vortex_array::scalar_fn::fns::between::BetweenReduceAdaptor::reduce_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::between::Between>, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::merge::DuplicateHandling::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::cast::CastReduceAdaptor where V: vortex_array::scalar_fn::fns::cast::CastReduce +impl core::hash::Hash for vortex_array::scalar_fn::fns::merge::DuplicateHandling -pub type vortex_array::scalar_fn::fns::cast::CastReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub fn vortex_array::scalar_fn::fns::merge::DuplicateHandling::hash<__H: core::hash::Hasher>(&self, state: &mut __H) -pub fn vortex_array::scalar_fn::fns::cast::CastReduceAdaptor::reduce_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::cast::Cast>, _child_idx: usize) -> vortex_error::VortexResult> +impl core::marker::Copy for vortex_array::scalar_fn::fns::merge::DuplicateHandling -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::fill_null::FillNullReduceAdaptor where V: vortex_array::scalar_fn::fns::fill_null::FillNullReduce +impl core::marker::StructuralPartialEq for vortex_array::scalar_fn::fns::merge::DuplicateHandling -pub type vortex_array::scalar_fn::fns::fill_null::FillNullReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub struct vortex_array::scalar_fn::fns::merge::Merge -pub fn vortex_array::scalar_fn::fns::fill_null::FillNullReduceAdaptor::reduce_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::fill_null::FillNull>, child_idx: usize) -> vortex_error::VortexResult> +impl core::clone::Clone for vortex_array::scalar_fn::fns::merge::Merge -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::like::LikeReduceAdaptor where V: vortex_array::scalar_fn::fns::like::LikeReduce +pub fn vortex_array::scalar_fn::fns::merge::Merge::clone(&self) -> vortex_array::scalar_fn::fns::merge::Merge -pub type vortex_array::scalar_fn::fns::like::LikeReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::merge::Merge -pub fn vortex_array::scalar_fn::fns::like::LikeReduceAdaptor::reduce_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::like::Like>, child_idx: usize) -> vortex_error::VortexResult> +pub type vortex_array::scalar_fn::fns::merge::Merge::Options = vortex_array::scalar_fn::fns::merge::DuplicateHandling -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduceAdaptor where V: vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduce +pub fn vortex_array::scalar_fn::fns::merge::Merge::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity -pub type vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub fn vortex_array::scalar_fn::fns::merge::Merge::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -pub fn vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduceAdaptor::reduce_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::list_contains::ListContains>, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::merge::Merge::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::mask::MaskReduceAdaptor where V: vortex_array::scalar_fn::fns::mask::MaskReduce +pub fn vortex_array::scalar_fn::fns::merge::Merge::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::scalar_fn::fns::mask::MaskReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub fn vortex_array::scalar_fn::fns::merge::Merge::execute(&self, options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::mask::MaskReduceAdaptor::reduce_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::mask::Mask>, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::merge::Merge::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::not::NotReduceAdaptor where V: vortex_array::scalar_fn::fns::not::NotReduce +pub fn vortex_array::scalar_fn::fns::merge::Merge::id(&self) -> vortex_array::scalar_fn::ScalarFnId -pub type vortex_array::scalar_fn::fns::not::NotReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub fn vortex_array::scalar_fn::fns::merge::Merge::is_fallible(&self, instance: &Self::Options) -> bool -pub fn vortex_array::scalar_fn::fns::not::NotReduceAdaptor::reduce_parent(&self, array: &::Array, _parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::not::Not>, _child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::merge::Merge::is_null_sensitive(&self, _instance: &Self::Options) -> bool -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::zip::ZipReduceAdaptor where V: vortex_array::scalar_fn::fns::zip::ZipReduce +pub fn vortex_array::scalar_fn::fns::merge::Merge::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub type vortex_array::scalar_fn::fns::zip::ZipReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub fn vortex_array::scalar_fn::fns::merge::Merge::return_dtype(&self, options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::zip::ZipReduceAdaptor::reduce_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::zip::Zip>, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::merge::Merge::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> -pub trait vortex_array::optimizer::rules::ArrayReduceRule: core::fmt::Debug + core::marker::Send + core::marker::Sync + 'static +pub fn vortex_array::scalar_fn::fns::merge::Merge::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -pub fn vortex_array::optimizer::rules::ArrayReduceRule::reduce(&self, array: &::Array) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::merge::Merge::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub trait vortex_array::optimizer::rules::DynArrayParentReduceRule: core::fmt::Debug + core::marker::Send + core::marker::Sync +pub fn vortex_array::scalar_fn::fns::merge::Merge::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::optimizer::rules::DynArrayParentReduceRule::matches(&self, parent: &vortex_array::ArrayRef) -> bool +pub fn vortex_array::scalar_fn::fns::merge::Merge::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::optimizer::rules::DynArrayParentReduceRule::reduce_parent(&self, array: &::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::merge::Merge::validity(&self, _options: &Self::Options, _expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -impl> vortex_array::optimizer::rules::DynArrayParentReduceRule for vortex_array::optimizer::rules::ParentReduceRuleAdapter +pub mod vortex_array::scalar_fn::fns::not -pub fn vortex_array::optimizer::rules::ParentReduceRuleAdapter::matches(&self, parent: &vortex_array::ArrayRef) -> bool +pub struct vortex_array::scalar_fn::fns::not::Not -pub fn vortex_array::optimizer::rules::ParentReduceRuleAdapter::reduce_parent(&self, child: &::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +impl core::clone::Clone for vortex_array::scalar_fn::fns::not::Not -pub trait vortex_array::optimizer::ArrayOptimizer +pub fn vortex_array::scalar_fn::fns::not::Not::clone(&self) -> vortex_array::scalar_fn::fns::not::Not -pub fn vortex_array::optimizer::ArrayOptimizer::optimize(&self) -> vortex_error::VortexResult +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::not::Not -pub fn vortex_array::optimizer::ArrayOptimizer::optimize_recursive(&self) -> vortex_error::VortexResult +pub type vortex_array::scalar_fn::fns::not::Not::Options = vortex_array::scalar_fn::EmptyOptions -impl vortex_array::optimizer::ArrayOptimizer for vortex_array::ArrayRef +pub fn vortex_array::scalar_fn::fns::not::Not::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity -pub fn vortex_array::ArrayRef::optimize(&self) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::not::Not::child_name(&self, _options: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -pub fn vortex_array::ArrayRef::optimize_recursive(&self) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::not::Not::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -pub mod vortex_array::patches +pub fn vortex_array::scalar_fn::fns::not::Not::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub struct vortex_array::patches::Patches +pub fn vortex_array::scalar_fn::fns::not::Not::execute(&self, _data: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::patches::Patches +pub fn vortex_array::scalar_fn::fns::not::Not::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub unsafe fn vortex_array::patches::Patches::apply_to_buffer(&self, buffer: &mut [P], validity: &mut vortex_mask::mask_mut::MaskMut, ctx: &mut vortex_array::ExecutionCtx) +pub fn vortex_array::scalar_fn::fns::not::Not::id(&self) -> vortex_array::scalar_fn::ScalarFnId -pub fn vortex_array::patches::Patches::array_len(&self) -> usize +pub fn vortex_array::scalar_fn::fns::not::Not::is_fallible(&self, _options: &Self::Options) -> bool -pub fn vortex_array::patches::Patches::cast_values(self, values_dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::not::Not::is_null_sensitive(&self, _options: &Self::Options) -> bool -pub fn vortex_array::patches::Patches::chunk_offset_at(&self, idx: usize) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::not::Not::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub fn vortex_array::patches::Patches::chunk_offsets(&self) -> &core::option::Option +pub fn vortex_array::scalar_fn::fns::not::Not::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -pub fn vortex_array::patches::Patches::dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_array::scalar_fn::fns::not::Not::serialize(&self, _options: &Self::Options) -> vortex_error::VortexResult>> -pub fn vortex_array::patches::Patches::filter(&self, mask: &vortex_mask::Mask, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::not::Not::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -pub fn vortex_array::patches::Patches::get_patched(&self, index: usize) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::not::Not::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::patches::Patches::indices(&self) -> &vortex_array::ArrayRef +pub fn vortex_array::scalar_fn::fns::not::Not::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::patches::Patches::indices_mut(&mut self) -> &mut vortex_array::ArrayRef +pub fn vortex_array::scalar_fn::fns::not::Not::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::patches::Patches::indices_ptype(&self) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::not::Not::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::patches::Patches::into_indices(self) -> vortex_array::ArrayRef +pub struct vortex_array::scalar_fn::fns::not::NotExecuteAdaptor(pub V) -pub fn vortex_array::patches::Patches::into_values(self) -> vortex_array::ArrayRef +impl core::default::Default for vortex_array::scalar_fn::fns::not::NotExecuteAdaptor -pub fn vortex_array::patches::Patches::map_values(self, f: F) -> vortex_error::VortexResult where F: core::ops::function::FnOnce(vortex_array::ArrayRef) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::not::NotExecuteAdaptor::default() -> vortex_array::scalar_fn::fns::not::NotExecuteAdaptor -pub fn vortex_array::patches::Patches::mask(&self, mask: &vortex_mask::Mask, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl core::fmt::Debug for vortex_array::scalar_fn::fns::not::NotExecuteAdaptor -pub fn vortex_array::patches::Patches::max_index(&self) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::not::NotExecuteAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::patches::Patches::min_index(&self) -> vortex_error::VortexResult +impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::not::NotExecuteAdaptor where V: vortex_array::scalar_fn::fns::not::NotKernel -pub fn vortex_array::patches::Patches::new(array_len: usize, offset: usize, indices: vortex_array::ArrayRef, values: vortex_array::ArrayRef, chunk_offsets: core::option::Option) -> vortex_error::VortexResult +pub type vortex_array::scalar_fn::fns::not::NotExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -pub unsafe fn vortex_array::patches::Patches::new_unchecked(array_len: usize, offset: usize, indices: vortex_array::ArrayRef, values: vortex_array::ArrayRef, chunk_offsets: core::option::Option, offset_within_chunk: core::option::Option) -> Self +pub fn vortex_array::scalar_fn::fns::not::NotExecuteAdaptor::execute_parent(&self, array: vortex_array::ArrayView<'_, V>, _parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::not::Not>, _child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::patches::Patches::num_patches(&self) -> usize +pub struct vortex_array::scalar_fn::fns::not::NotReduceAdaptor(pub V) -pub fn vortex_array::patches::Patches::offset(&self) -> usize +impl core::default::Default for vortex_array::scalar_fn::fns::not::NotReduceAdaptor -pub fn vortex_array::patches::Patches::offset_within_chunk(&self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::not::NotReduceAdaptor::default() -> vortex_array::scalar_fn::fns::not::NotReduceAdaptor -pub fn vortex_array::patches::Patches::search_index(&self, index: usize) -> vortex_error::VortexResult +impl core::fmt::Debug for vortex_array::scalar_fn::fns::not::NotReduceAdaptor -pub fn vortex_array::patches::Patches::slice(&self, range: core::ops::range::Range) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::not::NotReduceAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::patches::Patches::take(&self, take_indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::not::NotReduceAdaptor where V: vortex_array::scalar_fn::fns::not::NotReduce -pub fn vortex_array::patches::Patches::take_map(&self, take_indices: vortex_array::arrays::PrimitiveArray, include_nulls: bool, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub type vortex_array::scalar_fn::fns::not::NotReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -pub fn vortex_array::patches::Patches::take_search(&self, take_indices: vortex_array::arrays::PrimitiveArray, include_nulls: bool, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::not::NotReduceAdaptor::reduce_parent(&self, array: vortex_array::ArrayView<'_, V>, _parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::not::Not>, _child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::patches::Patches::take_with_nulls(&self, take_indices: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub trait vortex_array::scalar_fn::fns::not::NotKernel: vortex_array::VTable -pub fn vortex_array::patches::Patches::to_metadata(&self, len: usize, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::not::NotKernel::invert(array: vortex_array::ArrayView<'_, Self>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::patches::Patches::values(&self) -> &vortex_array::ArrayRef +pub trait vortex_array::scalar_fn::fns::not::NotReduce: vortex_array::VTable -pub fn vortex_array::patches::Patches::values_mut(&mut self) -> &mut vortex_array::ArrayRef +pub fn vortex_array::scalar_fn::fns::not::NotReduce::invert(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -impl core::clone::Clone for vortex_array::patches::Patches +impl vortex_array::scalar_fn::fns::not::NotReduce for vortex_array::arrays::Constant -pub fn vortex_array::patches::Patches::clone(&self) -> vortex_array::patches::Patches +pub fn vortex_array::arrays::Constant::invert(array: vortex_array::ArrayView<'_, vortex_array::arrays::Constant>) -> vortex_error::VortexResult> -impl core::fmt::Debug for vortex_array::patches::Patches +pub mod vortex_array::scalar_fn::fns::operators -pub fn vortex_array::patches::Patches::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub enum vortex_array::scalar_fn::fns::operators::CompareOperator -impl vortex_array::ArrayEq for vortex_array::patches::Patches +pub vortex_array::scalar_fn::fns::operators::CompareOperator::Eq -pub fn vortex_array::patches::Patches::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool +pub vortex_array::scalar_fn::fns::operators::CompareOperator::Gt -impl vortex_array::ArrayHash for vortex_array::patches::Patches +pub vortex_array::scalar_fn::fns::operators::CompareOperator::Gte -pub fn vortex_array::patches::Patches::array_hash(&self, state: &mut H, precision: vortex_array::Precision) +pub vortex_array::scalar_fn::fns::operators::CompareOperator::Lt -pub struct vortex_array::patches::PatchesMetadata +pub vortex_array::scalar_fn::fns::operators::CompareOperator::Lte -impl vortex_array::patches::PatchesMetadata +pub vortex_array::scalar_fn::fns::operators::CompareOperator::NotEq -pub fn vortex_array::patches::PatchesMetadata::chunk_offsets_dtype(&self) -> vortex_error::VortexResult> +impl vortex_array::scalar_fn::fns::operators::CompareOperator -pub fn vortex_array::patches::PatchesMetadata::indices_dtype(&self) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::operators::CompareOperator::inverse(self) -> Self -pub fn vortex_array::patches::PatchesMetadata::is_empty(&self) -> bool +pub fn vortex_array::scalar_fn::fns::operators::CompareOperator::swap(self) -> Self -pub fn vortex_array::patches::PatchesMetadata::len(&self) -> vortex_error::VortexResult +impl core::clone::Clone for vortex_array::scalar_fn::fns::operators::CompareOperator -pub fn vortex_array::patches::PatchesMetadata::new(len: usize, offset: usize, indices_ptype: vortex_array::dtype::PType, chunk_offsets_len: core::option::Option, chunk_offsets_ptype: core::option::Option, offset_within_chunk: core::option::Option) -> Self +pub fn vortex_array::scalar_fn::fns::operators::CompareOperator::clone(&self) -> vortex_array::scalar_fn::fns::operators::CompareOperator -pub fn vortex_array::patches::PatchesMetadata::offset(&self) -> vortex_error::VortexResult +impl core::cmp::Eq for vortex_array::scalar_fn::fns::operators::CompareOperator -impl vortex_array::patches::PatchesMetadata +impl core::cmp::PartialEq for vortex_array::scalar_fn::fns::operators::CompareOperator -pub fn vortex_array::patches::PatchesMetadata::chunk_offsets_len(&self) -> u64 +pub fn vortex_array::scalar_fn::fns::operators::CompareOperator::eq(&self, other: &vortex_array::scalar_fn::fns::operators::CompareOperator) -> bool -pub fn vortex_array::patches::PatchesMetadata::chunk_offsets_ptype(&self) -> vortex_array::dtype::PType +impl core::cmp::PartialOrd for vortex_array::scalar_fn::fns::operators::CompareOperator -pub fn vortex_array::patches::PatchesMetadata::indices_ptype(&self) -> vortex_array::dtype::PType +pub fn vortex_array::scalar_fn::fns::operators::CompareOperator::partial_cmp(&self, other: &vortex_array::scalar_fn::fns::operators::CompareOperator) -> core::option::Option -pub fn vortex_array::patches::PatchesMetadata::offset_within_chunk(&self) -> u64 +impl core::convert::From for vortex_array::scalar_fn::fns::operators::Operator -pub fn vortex_array::patches::PatchesMetadata::set_chunk_offsets_ptype(&mut self, value: vortex_array::dtype::PType) +pub fn vortex_array::scalar_fn::fns::operators::Operator::from(value: vortex_array::scalar_fn::fns::operators::CompareOperator) -> Self -pub fn vortex_array::patches::PatchesMetadata::set_indices_ptype(&mut self, value: vortex_array::dtype::PType) +impl core::convert::TryFrom for vortex_array::scalar_fn::fns::operators::CompareOperator -impl core::clone::Clone for vortex_array::patches::PatchesMetadata +pub type vortex_array::scalar_fn::fns::operators::CompareOperator::Error = vortex_error::VortexError -pub fn vortex_array::patches::PatchesMetadata::clone(&self) -> vortex_array::patches::PatchesMetadata +pub fn vortex_array::scalar_fn::fns::operators::CompareOperator::try_from(value: vortex_array::scalar_fn::fns::operators::Operator) -> core::result::Result -impl core::default::Default for vortex_array::patches::PatchesMetadata +impl core::fmt::Debug for vortex_array::scalar_fn::fns::operators::CompareOperator -pub fn vortex_array::patches::PatchesMetadata::default() -> Self +pub fn vortex_array::scalar_fn::fns::operators::CompareOperator::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::fmt::Debug for vortex_array::patches::PatchesMetadata +impl core::fmt::Display for vortex_array::scalar_fn::fns::operators::CompareOperator -pub fn vortex_array::patches::PatchesMetadata::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::fns::operators::CompareOperator::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::marker::Copy for vortex_array::patches::PatchesMetadata +impl core::hash::Hash for vortex_array::scalar_fn::fns::operators::CompareOperator -impl prost::message::Message for vortex_array::patches::PatchesMetadata +pub fn vortex_array::scalar_fn::fns::operators::CompareOperator::hash<__H: core::hash::Hasher>(&self, state: &mut __H) -pub fn vortex_array::patches::PatchesMetadata::clear(&mut self) +impl core::marker::Copy for vortex_array::scalar_fn::fns::operators::CompareOperator -pub fn vortex_array::patches::PatchesMetadata::encoded_len(&self) -> usize +impl core::marker::StructuralPartialEq for vortex_array::scalar_fn::fns::operators::CompareOperator -pub const vortex_array::patches::PATCH_CHUNK_SIZE: usize +pub enum vortex_array::scalar_fn::fns::operators::Operator -pub mod vortex_array::scalar +pub vortex_array::scalar_fn::fns::operators::Operator::Add -pub enum vortex_array::scalar::DecimalValue +pub vortex_array::scalar_fn::fns::operators::Operator::And -pub vortex_array::scalar::DecimalValue::I128(i128) +pub vortex_array::scalar_fn::fns::operators::Operator::Div -pub vortex_array::scalar::DecimalValue::I16(i16) +pub vortex_array::scalar_fn::fns::operators::Operator::Eq -pub vortex_array::scalar::DecimalValue::I256(vortex_array::dtype::i256) +pub vortex_array::scalar_fn::fns::operators::Operator::Gt -pub vortex_array::scalar::DecimalValue::I32(i32) +pub vortex_array::scalar_fn::fns::operators::Operator::Gte -pub vortex_array::scalar::DecimalValue::I64(i64) +pub vortex_array::scalar_fn::fns::operators::Operator::Lt -pub vortex_array::scalar::DecimalValue::I8(i8) +pub vortex_array::scalar_fn::fns::operators::Operator::Lte -impl vortex_array::scalar::DecimalValue +pub vortex_array::scalar_fn::fns::operators::Operator::Mul -pub fn vortex_array::scalar::DecimalValue::cast(&self) -> core::option::Option +pub vortex_array::scalar_fn::fns::operators::Operator::NotEq -pub fn vortex_array::scalar::DecimalValue::checked_add(&self, other: &Self) -> core::option::Option +pub vortex_array::scalar_fn::fns::operators::Operator::Or -pub fn vortex_array::scalar::DecimalValue::checked_div(&self, other: &Self) -> core::option::Option +pub vortex_array::scalar_fn::fns::operators::Operator::Sub -pub fn vortex_array::scalar::DecimalValue::checked_mul(&self, other: &Self) -> core::option::Option +impl vortex_array::scalar_fn::fns::operators::Operator -pub fn vortex_array::scalar::DecimalValue::checked_sub(&self, other: &Self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::operators::Operator::inverse(self) -> core::option::Option -pub fn vortex_array::scalar::DecimalValue::decimal_dtype(&self) -> vortex_array::dtype::DecimalDType +pub fn vortex_array::scalar_fn::fns::operators::Operator::is_arithmetic(&self) -> bool -pub fn vortex_array::scalar::DecimalValue::decimal_type(&self) -> vortex_array::dtype::DecimalType +pub fn vortex_array::scalar_fn::fns::operators::Operator::is_comparison(&self) -> bool -pub fn vortex_array::scalar::DecimalValue::fits_in_precision(&self, decimal_type: vortex_array::dtype::DecimalDType) -> bool +pub fn vortex_array::scalar_fn::fns::operators::Operator::logical_inverse(self) -> core::option::Option -pub fn vortex_array::scalar::DecimalValue::is_zero(&self) -> bool +pub fn vortex_array::scalar_fn::fns::operators::Operator::swap(self) -> core::option::Option -pub fn vortex_array::scalar::DecimalValue::zero(decimal_type: &vortex_array::dtype::DecimalDType) -> Self +impl core::clone::Clone for vortex_array::scalar_fn::fns::operators::Operator -impl core::clone::Clone for vortex_array::scalar::DecimalValue +pub fn vortex_array::scalar_fn::fns::operators::Operator::clone(&self) -> vortex_array::scalar_fn::fns::operators::Operator -pub fn vortex_array::scalar::DecimalValue::clone(&self) -> vortex_array::scalar::DecimalValue +impl core::cmp::Eq for vortex_array::scalar_fn::fns::operators::Operator -impl core::cmp::Eq for vortex_array::scalar::DecimalValue +impl core::cmp::PartialEq for vortex_array::scalar_fn::fns::operators::Operator -impl core::cmp::PartialEq for vortex_array::scalar::DecimalValue +pub fn vortex_array::scalar_fn::fns::operators::Operator::eq(&self, other: &vortex_array::scalar_fn::fns::operators::Operator) -> bool -pub fn vortex_array::scalar::DecimalValue::eq(&self, other: &Self) -> bool +impl core::cmp::PartialOrd for vortex_array::scalar_fn::fns::operators::Operator -impl core::cmp::PartialOrd for vortex_array::scalar::DecimalValue +pub fn vortex_array::scalar_fn::fns::operators::Operator::partial_cmp(&self, other: &vortex_array::scalar_fn::fns::operators::Operator) -> core::option::Option -pub fn vortex_array::scalar::DecimalValue::partial_cmp(&self, other: &Self) -> core::option::Option +impl core::convert::From for vortex_array::scalar_fn::fns::operators::Operator -impl core::convert::From for vortex_array::scalar::DecimalValue +pub fn vortex_array::scalar_fn::fns::operators::Operator::from(op: vortex_array::scalar::NumericOperator) -> Self -pub fn vortex_array::scalar::DecimalValue::from(value: i128) -> Self +impl core::convert::From for vortex_array::scalar_fn::fns::operators::Operator -impl core::convert::From for vortex_array::scalar::DecimalValue +pub fn vortex_array::scalar_fn::fns::operators::Operator::from(value: vortex_array::scalar_fn::fns::operators::CompareOperator) -> Self -pub fn vortex_array::scalar::DecimalValue::from(value: i16) -> Self +impl core::convert::From for i32 -impl core::convert::From for vortex_array::scalar::DecimalValue +pub fn i32::from(value: vortex_array::scalar_fn::fns::operators::Operator) -> Self -pub fn vortex_array::scalar::DecimalValue::from(value: i32) -> Self +impl core::convert::From for vortex_proto::expr::binary_opts::BinaryOp -impl core::convert::From for vortex_array::scalar::DecimalValue +pub fn vortex_proto::expr::binary_opts::BinaryOp::from(value: vortex_array::scalar_fn::fns::operators::Operator) -> Self -pub fn vortex_array::scalar::DecimalValue::from(value: i64) -> Self +impl core::convert::From for vortex_array::scalar_fn::fns::operators::Operator -impl core::convert::From for vortex_array::scalar::DecimalValue +pub fn vortex_array::scalar_fn::fns::operators::Operator::from(value: vortex_proto::expr::binary_opts::BinaryOp) -> Self -pub fn vortex_array::scalar::DecimalValue::from(value: i8) -> Self +impl core::convert::TryFrom for vortex_array::scalar_fn::fns::operators::Operator -impl core::convert::From for vortex_array::scalar::DecimalValue +pub type vortex_array::scalar_fn::fns::operators::Operator::Error = vortex_error::VortexError -pub fn vortex_array::scalar::DecimalValue::from(value: u16) -> Self +pub fn vortex_array::scalar_fn::fns::operators::Operator::try_from(value: i32) -> core::result::Result -impl core::convert::From for vortex_array::scalar::DecimalValue +impl core::convert::TryFrom for vortex_array::scalar_fn::fns::operators::CompareOperator -pub fn vortex_array::scalar::DecimalValue::from(value: u32) -> Self +pub type vortex_array::scalar_fn::fns::operators::CompareOperator::Error = vortex_error::VortexError -impl core::convert::From for vortex_array::scalar::DecimalValue +pub fn vortex_array::scalar_fn::fns::operators::CompareOperator::try_from(value: vortex_array::scalar_fn::fns::operators::Operator) -> core::result::Result -pub fn vortex_array::scalar::DecimalValue::from(value: u64) -> Self +impl core::fmt::Debug for vortex_array::scalar_fn::fns::operators::Operator -impl core::convert::From for vortex_array::scalar::DecimalValue +pub fn vortex_array::scalar_fn::fns::operators::Operator::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::scalar::DecimalValue::from(value: u8) -> Self +impl core::fmt::Display for vortex_array::scalar_fn::fns::operators::Operator -impl core::convert::From for vortex_array::scalar::DecimalValue +pub fn vortex_array::scalar_fn::fns::operators::Operator::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::scalar::DecimalValue::from(value: vortex_array::dtype::i256) -> Self +impl core::hash::Hash for vortex_array::scalar_fn::fns::operators::Operator -impl core::convert::From for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::operators::Operator::hash<__H: core::hash::Hasher>(&self, state: &mut __H) -pub fn vortex_array::scalar::Scalar::from(value: vortex_array::scalar::DecimalValue) -> Self +impl core::marker::Copy for vortex_array::scalar_fn::fns::operators::Operator -impl core::convert::From for vortex_array::scalar::ScalarValue +impl core::marker::StructuralPartialEq for vortex_array::scalar_fn::fns::operators::Operator -pub fn vortex_array::scalar::ScalarValue::from(value: vortex_array::scalar::DecimalValue) -> Self +pub mod vortex_array::scalar_fn::fns::pack -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for vortex_array::scalar::DecimalValue +pub struct vortex_array::scalar_fn::fns::pack::Pack -pub type vortex_array::scalar::DecimalValue::Error = vortex_error::VortexError +impl core::clone::Clone for vortex_array::scalar_fn::fns::pack::Pack -pub fn vortex_array::scalar::DecimalValue::try_from(scalar: &vortex_array::scalar::Scalar) -> core::result::Result +pub fn vortex_array::scalar_fn::fns::pack::Pack::clone(&self) -> vortex_array::scalar_fn::fns::pack::Pack -impl core::convert::TryFrom for vortex_array::scalar::DecimalValue +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::pack::Pack -pub type vortex_array::scalar::DecimalValue::Error = vortex_error::VortexError +pub type vortex_array::scalar_fn::fns::pack::Pack::Options = vortex_array::scalar_fn::fns::pack::PackOptions -pub fn vortex_array::scalar::DecimalValue::try_from(scalar: vortex_array::scalar::Scalar) -> core::result::Result +pub fn vortex_array::scalar_fn::fns::pack::Pack::arity(&self, options: &Self::Options) -> vortex_array::scalar_fn::Arity -impl core::fmt::Debug for vortex_array::scalar::DecimalValue +pub fn vortex_array::scalar_fn::fns::pack::Pack::child_name(&self, instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -pub fn vortex_array::scalar::DecimalValue::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::fns::pack::Pack::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -impl core::fmt::Display for vortex_array::scalar::DecimalValue +pub fn vortex_array::scalar_fn::fns::pack::Pack::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar::DecimalValue::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::fns::pack::Pack::execute(&self, options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::hash::Hash for vortex_array::scalar::DecimalValue +pub fn vortex_array::scalar_fn::fns::pack::Pack::fmt_sql(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::scalar::DecimalValue::hash(&self, state: &mut H) +pub fn vortex_array::scalar_fn::fns::pack::Pack::id(&self) -> vortex_array::scalar_fn::ScalarFnId -impl core::marker::Copy for vortex_array::scalar::DecimalValue +pub fn vortex_array::scalar_fn::fns::pack::Pack::is_fallible(&self, _instance: &Self::Options) -> bool -pub enum vortex_array::scalar::NumericOperator +pub fn vortex_array::scalar_fn::fns::pack::Pack::is_null_sensitive(&self, _instance: &Self::Options) -> bool -pub vortex_array::scalar::NumericOperator::Add +pub fn vortex_array::scalar_fn::fns::pack::Pack::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub vortex_array::scalar::NumericOperator::Div +pub fn vortex_array::scalar_fn::fns::pack::Pack::return_dtype(&self, options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -pub vortex_array::scalar::NumericOperator::Mul +pub fn vortex_array::scalar_fn::fns::pack::Pack::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> -pub vortex_array::scalar::NumericOperator::Sub +pub fn vortex_array::scalar_fn::fns::pack::Pack::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -impl core::clone::Clone for vortex_array::scalar::NumericOperator +pub fn vortex_array::scalar_fn::fns::pack::Pack::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::NumericOperator::clone(&self) -> vortex_array::scalar::NumericOperator +pub fn vortex_array::scalar_fn::fns::pack::Pack::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -impl core::cmp::Eq for vortex_array::scalar::NumericOperator +pub fn vortex_array::scalar_fn::fns::pack::Pack::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -impl core::cmp::PartialEq for vortex_array::scalar::NumericOperator +pub fn vortex_array::scalar_fn::fns::pack::Pack::validity(&self, _options: &Self::Options, _expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::NumericOperator::eq(&self, other: &vortex_array::scalar::NumericOperator) -> bool +pub struct vortex_array::scalar_fn::fns::pack::PackOptions -impl core::convert::From for vortex_array::scalar_fn::fns::operators::Operator +pub vortex_array::scalar_fn::fns::pack::PackOptions::names: vortex_array::dtype::FieldNames -pub fn vortex_array::scalar_fn::fns::operators::Operator::from(op: vortex_array::scalar::NumericOperator) -> Self +pub vortex_array::scalar_fn::fns::pack::PackOptions::nullability: vortex_array::dtype::Nullability -impl core::fmt::Debug for vortex_array::scalar::NumericOperator +impl core::clone::Clone for vortex_array::scalar_fn::fns::pack::PackOptions -pub fn vortex_array::scalar::NumericOperator::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::fns::pack::PackOptions::clone(&self) -> vortex_array::scalar_fn::fns::pack::PackOptions -impl core::fmt::Display for vortex_array::scalar::NumericOperator +impl core::cmp::Eq for vortex_array::scalar_fn::fns::pack::PackOptions -pub fn vortex_array::scalar::NumericOperator::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl core::cmp::PartialEq for vortex_array::scalar_fn::fns::pack::PackOptions -impl core::marker::Copy for vortex_array::scalar::NumericOperator +pub fn vortex_array::scalar_fn::fns::pack::PackOptions::eq(&self, other: &vortex_array::scalar_fn::fns::pack::PackOptions) -> bool -impl core::marker::StructuralPartialEq for vortex_array::scalar::NumericOperator +impl core::fmt::Debug for vortex_array::scalar_fn::fns::pack::PackOptions -pub enum vortex_array::scalar::PValue +pub fn vortex_array::scalar_fn::fns::pack::PackOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub vortex_array::scalar::PValue::F16(half::binary16::f16) +impl core::fmt::Display for vortex_array::scalar_fn::fns::pack::PackOptions -pub vortex_array::scalar::PValue::F32(f32) +pub fn vortex_array::scalar_fn::fns::pack::PackOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub vortex_array::scalar::PValue::F64(f64) +impl core::hash::Hash for vortex_array::scalar_fn::fns::pack::PackOptions -pub vortex_array::scalar::PValue::I16(i16) +pub fn vortex_array::scalar_fn::fns::pack::PackOptions::hash<__H: core::hash::Hasher>(&self, state: &mut __H) -pub vortex_array::scalar::PValue::I32(i32) +impl core::marker::StructuralPartialEq for vortex_array::scalar_fn::fns::pack::PackOptions -pub vortex_array::scalar::PValue::I64(i64) +pub mod vortex_array::scalar_fn::fns::root -pub vortex_array::scalar::PValue::I8(i8) +pub struct vortex_array::scalar_fn::fns::root::Root -pub vortex_array::scalar::PValue::U16(u16) +impl core::clone::Clone for vortex_array::scalar_fn::fns::root::Root -pub vortex_array::scalar::PValue::U32(u32) +pub fn vortex_array::scalar_fn::fns::root::Root::clone(&self) -> vortex_array::scalar_fn::fns::root::Root -pub vortex_array::scalar::PValue::U64(u64) +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::root::Root -pub vortex_array::scalar::PValue::U8(u8) +pub type vortex_array::scalar_fn::fns::root::Root::Options = vortex_array::scalar_fn::EmptyOptions -impl vortex_array::scalar::PValue +pub fn vortex_array::scalar_fn::fns::root::Root::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity -pub fn vortex_array::scalar::PValue::as_f16(self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::root::Root::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -pub fn vortex_array::scalar::PValue::as_f32(self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::root::Root::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::PValue::as_f64(self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::root::Root::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar::PValue::as_i16(self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::root::Root::execute(&self, _data: &Self::Options, _args: &dyn vortex_array::scalar_fn::ExecutionArgs, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar::PValue::as_i32(self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::root::Root::fmt_sql(&self, _options: &Self::Options, _expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::scalar::PValue::as_i64(self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::root::Root::id(&self) -> vortex_array::scalar_fn::ScalarFnId -pub fn vortex_array::scalar::PValue::as_i8(self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::root::Root::is_fallible(&self, _options: &Self::Options) -> bool -pub fn vortex_array::scalar::PValue::as_u16(self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::root::Root::is_null_sensitive(&self, _options: &Self::Options) -> bool -pub fn vortex_array::scalar::PValue::as_u32(self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::root::Root::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::PValue::as_u64(self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::root::Root::return_dtype(&self, _options: &Self::Options, _arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -pub fn vortex_array::scalar::PValue::as_u8(self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::root::Root::serialize(&self, _instance: &Self::Options) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar::PValue::cast(&self) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::root::Root::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::PValue::is_instance_of(&self, ptype: &vortex_array::dtype::PType) -> bool +pub fn vortex_array::scalar_fn::fns::root::Root::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::PValue::is_nan(&self) -> bool +pub fn vortex_array::scalar_fn::fns::root::Root::stat_expression(&self, _options: &Self::Options, _expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::scalar::PValue::is_zero(&self) -> bool +pub fn vortex_array::scalar_fn::fns::root::Root::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::scalar::PValue::ptype(&self) -> vortex_array::dtype::PType +pub fn vortex_array::scalar_fn::fns::root::Root::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::PValue::reinterpret_cast(&self, ptype: vortex_array::dtype::PType) -> Self +pub mod vortex_array::scalar_fn::fns::select -pub fn vortex_array::scalar::PValue::zero(ptype: &vortex_array::dtype::PType) -> vortex_array::scalar::PValue +pub enum vortex_array::scalar_fn::fns::select::FieldSelection -impl core::clone::Clone for vortex_array::scalar::PValue +pub vortex_array::scalar_fn::fns::select::FieldSelection::Exclude(vortex_array::dtype::FieldNames) -pub fn vortex_array::scalar::PValue::clone(&self) -> vortex_array::scalar::PValue +pub vortex_array::scalar_fn::fns::select::FieldSelection::Include(vortex_array::dtype::FieldNames) -impl core::cmp::Eq for vortex_array::scalar::PValue +impl vortex_array::scalar_fn::fns::select::FieldSelection -impl core::cmp::PartialEq for vortex_array::scalar::PValue +pub fn vortex_array::scalar_fn::fns::select::FieldSelection::exclude(columns: vortex_array::dtype::FieldNames) -> Self -pub fn vortex_array::scalar::PValue::eq(&self, other: &Self) -> bool +pub fn vortex_array::scalar_fn::fns::select::FieldSelection::field_names(&self) -> &vortex_array::dtype::FieldNames -impl core::cmp::PartialOrd for vortex_array::scalar::PValue +pub fn vortex_array::scalar_fn::fns::select::FieldSelection::include(columns: vortex_array::dtype::FieldNames) -> Self -pub fn vortex_array::scalar::PValue::partial_cmp(&self, other: &Self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::select::FieldSelection::is_exclude(&self) -> bool -impl core::convert::From<&vortex_array::scalar::PValue> for vortex_proto::scalar::ScalarValue +pub fn vortex_array::scalar_fn::fns::select::FieldSelection::is_include(&self) -> bool -pub fn vortex_proto::scalar::ScalarValue::from(value: &vortex_array::scalar::PValue) -> Self +pub fn vortex_array::scalar_fn::fns::select::FieldSelection::normalize_to_included_fields(&self, available_fields: &vortex_array::dtype::FieldNames) -> vortex_error::VortexResult -impl core::convert::From for vortex_array::scalar::PValue +impl core::clone::Clone for vortex_array::scalar_fn::fns::select::FieldSelection -pub fn vortex_array::scalar::PValue::from(value: f32) -> Self +pub fn vortex_array::scalar_fn::fns::select::FieldSelection::clone(&self) -> vortex_array::scalar_fn::fns::select::FieldSelection -impl core::convert::From for vortex_array::scalar::PValue +impl core::cmp::Eq for vortex_array::scalar_fn::fns::select::FieldSelection -pub fn vortex_array::scalar::PValue::from(value: f64) -> Self +impl core::cmp::PartialEq for vortex_array::scalar_fn::fns::select::FieldSelection -impl core::convert::From for vortex_array::scalar::PValue +pub fn vortex_array::scalar_fn::fns::select::FieldSelection::eq(&self, other: &vortex_array::scalar_fn::fns::select::FieldSelection) -> bool -pub fn vortex_array::scalar::PValue::from(value: half::binary16::f16) -> Self +impl core::fmt::Debug for vortex_array::scalar_fn::fns::select::FieldSelection -impl core::convert::From for vortex_array::scalar::PValue +pub fn vortex_array::scalar_fn::fns::select::FieldSelection::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::scalar::PValue::from(value: i16) -> Self +impl core::fmt::Display for vortex_array::scalar_fn::fns::select::FieldSelection -impl core::convert::From for vortex_array::scalar::PValue +pub fn vortex_array::scalar_fn::fns::select::FieldSelection::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::scalar::PValue::from(value: i32) -> Self +impl core::hash::Hash for vortex_array::scalar_fn::fns::select::FieldSelection -impl core::convert::From for vortex_array::scalar::PValue +pub fn vortex_array::scalar_fn::fns::select::FieldSelection::hash<__H: core::hash::Hasher>(&self, state: &mut __H) -pub fn vortex_array::scalar::PValue::from(value: i64) -> Self +impl core::marker::StructuralPartialEq for vortex_array::scalar_fn::fns::select::FieldSelection -impl core::convert::From for vortex_array::scalar::PValue +pub struct vortex_array::scalar_fn::fns::select::Select -pub fn vortex_array::scalar::PValue::from(value: i8) -> Self +impl core::clone::Clone for vortex_array::scalar_fn::fns::select::Select -impl core::convert::From for vortex_array::scalar::PValue +pub fn vortex_array::scalar_fn::fns::select::Select::clone(&self) -> vortex_array::scalar_fn::fns::select::Select -pub fn vortex_array::scalar::PValue::from(value: u16) -> Self +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::select::Select -impl core::convert::From for vortex_array::scalar::PValue +pub type vortex_array::scalar_fn::fns::select::Select::Options = vortex_array::scalar_fn::fns::select::FieldSelection -pub fn vortex_array::scalar::PValue::from(value: u32) -> Self +pub fn vortex_array::scalar_fn::fns::select::Select::arity(&self, _options: &vortex_array::scalar_fn::fns::select::FieldSelection) -> vortex_array::scalar_fn::Arity -impl core::convert::From for vortex_array::scalar::PValue +pub fn vortex_array::scalar_fn::fns::select::Select::child_name(&self, _instance: &vortex_array::scalar_fn::fns::select::FieldSelection, child_idx: usize) -> vortex_array::scalar_fn::ChildName -pub fn vortex_array::scalar::PValue::from(value: u64) -> Self +pub fn vortex_array::scalar_fn::fns::select::Select::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -impl core::convert::From for vortex_array::scalar::PValue +pub fn vortex_array::scalar_fn::fns::select::Select::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar::PValue::from(value: u8) -> Self +pub fn vortex_array::scalar_fn::fns::select::Select::execute(&self, selection: &vortex_array::scalar_fn::fns::select::FieldSelection, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::convert::From for vortex_array::scalar::PValue +pub fn vortex_array::scalar_fn::fns::select::Select::fmt_sql(&self, selection: &vortex_array::scalar_fn::fns::select::FieldSelection, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::scalar::PValue::from(value: usize) -> vortex_array::scalar::PValue +pub fn vortex_array::scalar_fn::fns::select::Select::id(&self) -> vortex_array::scalar_fn::ScalarFnId -impl core::convert::From for vortex_array::scalar::ScalarValue +pub fn vortex_array::scalar_fn::fns::select::Select::is_fallible(&self, _instance: &vortex_array::scalar_fn::fns::select::FieldSelection) -> bool -pub fn vortex_array::scalar::ScalarValue::from(value: vortex_array::scalar::PValue) -> Self +pub fn vortex_array::scalar_fn::fns::select::Select::is_null_sensitive(&self, _instance: &vortex_array::scalar_fn::fns::select::FieldSelection) -> bool -impl core::convert::TryFrom for f32 +pub fn vortex_array::scalar_fn::fns::select::Select::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub type f32::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::select::Select::return_dtype(&self, selection: &vortex_array::scalar_fn::fns::select::FieldSelection, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -pub fn f32::try_from(value: vortex_array::scalar::PValue) -> core::result::Result +pub fn vortex_array::scalar_fn::fns::select::Select::serialize(&self, instance: &vortex_array::scalar_fn::fns::select::FieldSelection) -> vortex_error::VortexResult>> -impl core::convert::TryFrom for f64 +pub fn vortex_array::scalar_fn::fns::select::Select::simplify(&self, selection: &vortex_array::scalar_fn::fns::select::FieldSelection, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -pub type f64::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::select::Select::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn f64::try_from(value: vortex_array::scalar::PValue) -> core::result::Result +pub fn vortex_array::scalar_fn::fns::select::Select::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -impl core::convert::TryFrom for half::binary16::f16 +pub fn vortex_array::scalar_fn::fns::select::Select::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub type half::binary16::f16::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::select::Select::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn half::binary16::f16::try_from(value: vortex_array::scalar::PValue) -> core::result::Result +pub mod vortex_array::scalar_fn::fns::zip -impl core::convert::TryFrom for i16 +pub struct vortex_array::scalar_fn::fns::zip::Zip -pub type i16::Error = vortex_error::VortexError +impl core::clone::Clone for vortex_array::scalar_fn::fns::zip::Zip -pub fn i16::try_from(value: vortex_array::scalar::PValue) -> core::result::Result +pub fn vortex_array::scalar_fn::fns::zip::Zip::clone(&self) -> vortex_array::scalar_fn::fns::zip::Zip -impl core::convert::TryFrom for i32 +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::zip::Zip -pub type i32::Error = vortex_error::VortexError +pub type vortex_array::scalar_fn::fns::zip::Zip::Options = vortex_array::scalar_fn::EmptyOptions -pub fn i32::try_from(value: vortex_array::scalar::PValue) -> core::result::Result +pub fn vortex_array::scalar_fn::fns::zip::Zip::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity -impl core::convert::TryFrom for i64 +pub fn vortex_array::scalar_fn::fns::zip::Zip::child_name(&self, _options: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -pub type i64::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::zip::Zip::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -pub fn i64::try_from(value: vortex_array::scalar::PValue) -> core::result::Result +pub fn vortex_array::scalar_fn::fns::zip::Zip::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl core::convert::TryFrom for i8 +pub fn vortex_array::scalar_fn::fns::zip::Zip::execute(&self, _options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type i8::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::zip::Zip::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn i8::try_from(value: vortex_array::scalar::PValue) -> core::result::Result +pub fn vortex_array::scalar_fn::fns::zip::Zip::id(&self) -> vortex_array::scalar_fn::ScalarFnId -impl core::convert::TryFrom for u16 +pub fn vortex_array::scalar_fn::fns::zip::Zip::is_fallible(&self, _options: &Self::Options) -> bool -pub type u16::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::zip::Zip::is_null_sensitive(&self, _options: &Self::Options) -> bool -pub fn u16::try_from(value: vortex_array::scalar::PValue) -> core::result::Result +pub fn vortex_array::scalar_fn::fns::zip::Zip::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -impl core::convert::TryFrom for u32 +pub fn vortex_array::scalar_fn::fns::zip::Zip::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -pub type u32::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::zip::Zip::serialize(&self, _options: &Self::Options) -> vortex_error::VortexResult>> -pub fn u32::try_from(value: vortex_array::scalar::PValue) -> core::result::Result +pub fn vortex_array::scalar_fn::fns::zip::Zip::simplify(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, _ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -impl core::convert::TryFrom for u64 +pub fn vortex_array::scalar_fn::fns::zip::Zip::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub type u64::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::zip::Zip::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn u64::try_from(value: vortex_array::scalar::PValue) -> core::result::Result +pub fn vortex_array::scalar_fn::fns::zip::Zip::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -impl core::convert::TryFrom for u8 +pub fn vortex_array::scalar_fn::fns::zip::Zip::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub type u8::Error = vortex_error::VortexError +pub struct vortex_array::scalar_fn::fns::zip::ZipExecuteAdaptor(pub V) -pub fn u8::try_from(value: vortex_array::scalar::PValue) -> core::result::Result +impl core::default::Default for vortex_array::scalar_fn::fns::zip::ZipExecuteAdaptor -impl core::convert::TryFrom for usize +pub fn vortex_array::scalar_fn::fns::zip::ZipExecuteAdaptor::default() -> vortex_array::scalar_fn::fns::zip::ZipExecuteAdaptor -pub type usize::Error = vortex_error::VortexError +impl core::fmt::Debug for vortex_array::scalar_fn::fns::zip::ZipExecuteAdaptor -pub fn usize::try_from(value: vortex_array::scalar::PValue) -> core::result::Result +pub fn vortex_array::scalar_fn::fns::zip::ZipExecuteAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::fmt::Debug for vortex_array::scalar::PValue +impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::zip::ZipExecuteAdaptor where V: vortex_array::scalar_fn::fns::zip::ZipKernel -pub fn vortex_array::scalar::PValue::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::scalar_fn::fns::zip::ZipExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -impl core::fmt::Display for vortex_array::scalar::PValue +pub fn vortex_array::scalar_fn::fns::zip::ZipExecuteAdaptor::execute_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::zip::Zip>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::PValue::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub struct vortex_array::scalar_fn::fns::zip::ZipReduceAdaptor(pub V) -impl core::hash::Hash for vortex_array::scalar::PValue +impl core::default::Default for vortex_array::scalar_fn::fns::zip::ZipReduceAdaptor -pub fn vortex_array::scalar::PValue::hash(&self, state: &mut H) +pub fn vortex_array::scalar_fn::fns::zip::ZipReduceAdaptor::default() -> vortex_array::scalar_fn::fns::zip::ZipReduceAdaptor -impl core::marker::Copy for vortex_array::scalar::PValue +impl core::fmt::Debug for vortex_array::scalar_fn::fns::zip::ZipReduceAdaptor -impl vortex_array::dtype::ToBytes for vortex_array::scalar::PValue +pub fn vortex_array::scalar_fn::fns::zip::ZipReduceAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::scalar::PValue::to_le_bytes(&self) -> &[u8] +impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::zip::ZipReduceAdaptor where V: vortex_array::scalar_fn::fns::zip::ZipReduce -impl vortex_array::search_sorted::IndexOrd for vortex_array::variants::PrimitiveTyped<'_> +pub type vortex_array::scalar_fn::fns::zip::ZipReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_cmp(&self, idx: usize, elem: &vortex_array::scalar::PValue) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::zip::ZipReduceAdaptor::reduce_parent(&self, array: vortex_array::ArrayView<'_, V>, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::zip::Zip>, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_ge(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub trait vortex_array::scalar_fn::fns::zip::ZipKernel: vortex_array::VTable -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_gt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::zip::ZipKernel::zip(array: vortex_array::ArrayView<'_, Self>, if_false: &vortex_array::ArrayRef, mask: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_le(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +impl vortex_array::scalar_fn::fns::zip::ZipKernel for vortex_array::arrays::Chunked -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_len(&self) -> usize +pub fn vortex_array::arrays::Chunked::zip(if_true: vortex_array::ArrayView<'_, vortex_array::arrays::Chunked>, if_false: &vortex_array::ArrayRef, mask: &vortex_array::ArrayRef, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_lt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +impl vortex_array::scalar_fn::fns::zip::ZipKernel for vortex_array::arrays::Struct -pub enum vortex_array::scalar::ScalarValue +pub fn vortex_array::arrays::Struct::zip(if_true: vortex_array::ArrayView<'_, vortex_array::arrays::Struct>, if_false: &vortex_array::ArrayRef, mask: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub vortex_array::scalar::ScalarValue::Binary(vortex_buffer::ByteBuffer) +impl vortex_array::scalar_fn::fns::zip::ZipKernel for vortex_array::arrays::VarBinView -pub vortex_array::scalar::ScalarValue::Bool(bool) +pub fn vortex_array::arrays::VarBinView::zip(if_true: vortex_array::ArrayView<'_, vortex_array::arrays::VarBinView>, if_false: &vortex_array::ArrayRef, mask: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub vortex_array::scalar::ScalarValue::Decimal(vortex_array::scalar::DecimalValue) +pub trait vortex_array::scalar_fn::fns::zip::ZipReduce: vortex_array::VTable -pub vortex_array::scalar::ScalarValue::List(alloc::vec::Vec>) +pub fn vortex_array::scalar_fn::fns::zip::ZipReduce::zip(array: vortex_array::ArrayView<'_, Self>, if_false: &vortex_array::ArrayRef, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub vortex_array::scalar::ScalarValue::Primitive(vortex_array::scalar::PValue) +pub mod vortex_array::scalar_fn::session -pub vortex_array::scalar::ScalarValue::Utf8(vortex_buffer::string::BufferString) +pub struct vortex_array::scalar_fn::session::ScalarFnSession -pub vortex_array::scalar::ScalarValue::Variant(alloc::boxed::Box) +impl vortex_array::scalar_fn::session::ScalarFnSession -impl vortex_array::scalar::ScalarValue +pub fn vortex_array::scalar_fn::session::ScalarFnSession::register(&self, vtable: V) -pub fn vortex_array::scalar::ScalarValue::as_binary(&self) -> &vortex_buffer::ByteBuffer +pub fn vortex_array::scalar_fn::session::ScalarFnSession::registry(&self) -> &vortex_array::scalar_fn::session::ScalarFnRegistry -pub fn vortex_array::scalar::ScalarValue::as_bool(&self) -> bool +impl core::default::Default for vortex_array::scalar_fn::session::ScalarFnSession -pub fn vortex_array::scalar::ScalarValue::as_decimal(&self) -> &vortex_array::scalar::DecimalValue +pub fn vortex_array::scalar_fn::session::ScalarFnSession::default() -> Self -pub fn vortex_array::scalar::ScalarValue::as_list(&self) -> &[core::option::Option] +impl core::fmt::Debug for vortex_array::scalar_fn::session::ScalarFnSession -pub fn vortex_array::scalar::ScalarValue::as_primitive(&self) -> &vortex_array::scalar::PValue +pub fn vortex_array::scalar_fn::session::ScalarFnSession::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::scalar::ScalarValue::as_utf8(&self) -> &vortex_buffer::string::BufferString +pub trait vortex_array::scalar_fn::session::ScalarFnSessionExt: vortex_session::SessionExt -pub fn vortex_array::scalar::ScalarValue::as_variant(&self) -> &vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::session::ScalarFnSessionExt::scalar_fns(&self) -> vortex_session::Ref<'_, vortex_array::scalar_fn::session::ScalarFnSession> -pub fn vortex_array::scalar::ScalarValue::into_binary(self) -> vortex_buffer::ByteBuffer +impl vortex_array::scalar_fn::session::ScalarFnSessionExt for S -pub fn vortex_array::scalar::ScalarValue::into_bool(self) -> bool +pub fn S::scalar_fns(&self) -> vortex_session::Ref<'_, vortex_array::scalar_fn::session::ScalarFnSession> -pub fn vortex_array::scalar::ScalarValue::into_decimal(self) -> vortex_array::scalar::DecimalValue +pub type vortex_array::scalar_fn::session::ScalarFnRegistry = vortex_session::registry::Registry -pub fn vortex_array::scalar::ScalarValue::into_list(self) -> alloc::vec::Vec> +pub enum vortex_array::scalar_fn::Arity -pub fn vortex_array::scalar::ScalarValue::into_primitive(self) -> vortex_array::scalar::PValue +pub vortex_array::scalar_fn::Arity::Exact(usize) -pub fn vortex_array::scalar::ScalarValue::into_utf8(self) -> vortex_buffer::string::BufferString +pub vortex_array::scalar_fn::Arity::Variadic -pub fn vortex_array::scalar::ScalarValue::into_variant(self) -> vortex_array::scalar::Scalar +pub vortex_array::scalar_fn::Arity::Variadic::max: core::option::Option -impl vortex_array::scalar::ScalarValue +pub vortex_array::scalar_fn::Arity::Variadic::min: usize -pub fn vortex_array::scalar::ScalarValue::from_proto(value: &vortex_proto::scalar::ScalarValue, dtype: &vortex_array::dtype::DType, session: &vortex_session::VortexSession) -> vortex_error::VortexResult> +impl vortex_array::scalar_fn::Arity -pub fn vortex_array::scalar::ScalarValue::from_proto_bytes(bytes: &[u8], dtype: &vortex_array::dtype::DType, session: &vortex_session::VortexSession) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::Arity::matches(&self, arg_count: usize) -> bool -impl vortex_array::scalar::ScalarValue +impl core::clone::Clone for vortex_array::scalar_fn::Arity -pub fn vortex_array::scalar::ScalarValue::to_proto(this: core::option::Option<&Self>) -> vortex_proto::scalar::ScalarValue +pub fn vortex_array::scalar_fn::Arity::clone(&self) -> vortex_array::scalar_fn::Arity -pub fn vortex_array::scalar::ScalarValue::to_proto_bytes(value: core::option::Option<&vortex_array::scalar::ScalarValue>) -> B +impl core::cmp::Eq for vortex_array::scalar_fn::Arity -impl core::clone::Clone for vortex_array::scalar::ScalarValue +impl core::cmp::PartialEq for vortex_array::scalar_fn::Arity -pub fn vortex_array::scalar::ScalarValue::clone(&self) -> vortex_array::scalar::ScalarValue +pub fn vortex_array::scalar_fn::Arity::eq(&self, other: &vortex_array::scalar_fn::Arity) -> bool -impl core::cmp::Eq for vortex_array::scalar::ScalarValue +impl core::fmt::Debug for vortex_array::scalar_fn::Arity -impl core::cmp::PartialEq for vortex_array::scalar::ScalarValue +pub fn vortex_array::scalar_fn::Arity::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::scalar::ScalarValue::eq(&self, other: &vortex_array::scalar::ScalarValue) -> bool +impl core::fmt::Display for vortex_array::scalar_fn::Arity -impl core::cmp::PartialOrd for vortex_array::scalar::ScalarValue +pub fn vortex_array::scalar_fn::Arity::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::scalar::ScalarValue::partial_cmp(&self, other: &Self) -> core::option::Option +impl core::marker::Copy for vortex_array::scalar_fn::Arity -impl core::convert::From<&[u8]> for vortex_array::scalar::ScalarValue +impl core::marker::StructuralPartialEq for vortex_array::scalar_fn::Arity -pub fn vortex_array::scalar::ScalarValue::from(value: &[u8]) -> Self +pub struct vortex_array::scalar_fn::EmptyOptions -impl core::convert::From<&str> for vortex_array::scalar::ScalarValue +impl core::clone::Clone for vortex_array::scalar_fn::EmptyOptions -pub fn vortex_array::scalar::ScalarValue::from(value: &str) -> Self +pub fn vortex_array::scalar_fn::EmptyOptions::clone(&self) -> vortex_array::scalar_fn::EmptyOptions -impl core::convert::From<&vortex_array::scalar::ScalarValue> for vortex_proto::scalar::ScalarValue +impl core::cmp::Eq for vortex_array::scalar_fn::EmptyOptions -pub fn vortex_proto::scalar::ScalarValue::from(value: &vortex_array::scalar::ScalarValue) -> Self +impl core::cmp::PartialEq for vortex_array::scalar_fn::EmptyOptions -impl core::convert::From for vortex_array::scalar::ScalarValue +pub fn vortex_array::scalar_fn::EmptyOptions::eq(&self, other: &vortex_array::scalar_fn::EmptyOptions) -> bool -pub fn vortex_array::scalar::ScalarValue::from(value: alloc::string::String) -> Self +impl core::fmt::Debug for vortex_array::scalar_fn::EmptyOptions -impl core::convert::From for vortex_array::scalar::ScalarValue +pub fn vortex_array::scalar_fn::EmptyOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::scalar::ScalarValue::from(value: bool) -> Self +impl core::fmt::Display for vortex_array::scalar_fn::EmptyOptions -impl core::convert::From for vortex_array::scalar::ScalarValue +pub fn vortex_array::scalar_fn::EmptyOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::scalar::ScalarValue::from(value: f32) -> Self +impl core::hash::Hash for vortex_array::scalar_fn::EmptyOptions -impl core::convert::From for vortex_array::scalar::ScalarValue +pub fn vortex_array::scalar_fn::EmptyOptions::hash<__H: core::hash::Hasher>(&self, state: &mut __H) -pub fn vortex_array::scalar::ScalarValue::from(value: f64) -> Self +impl core::marker::StructuralPartialEq for vortex_array::scalar_fn::EmptyOptions -impl core::convert::From for vortex_array::scalar::ScalarValue +pub struct vortex_array::scalar_fn::ScalarFn -pub fn vortex_array::scalar::ScalarValue::from(value: half::binary16::f16) -> Self +impl vortex_array::scalar_fn::ScalarFn -impl core::convert::From for vortex_array::scalar::ScalarValue +pub fn vortex_array::scalar_fn::ScalarFn::erased(self) -> vortex_array::scalar_fn::ScalarFnRef -pub fn vortex_array::scalar::ScalarValue::from(value: i16) -> Self +pub fn vortex_array::scalar_fn::ScalarFn::new(vtable: V, options: ::Options) -> Self -impl core::convert::From for vortex_array::scalar::ScalarValue +pub fn vortex_array::scalar_fn::ScalarFn::options(&self) -> &::Options -pub fn vortex_array::scalar::ScalarValue::from(value: i32) -> Self +pub fn vortex_array::scalar_fn::ScalarFn::vtable(&self) -> &V -impl core::convert::From for vortex_array::scalar::ScalarValue +pub struct vortex_array::scalar_fn::ScalarFnOptions<'a> -pub fn vortex_array::scalar::ScalarValue::from(value: i64) -> Self +impl vortex_array::scalar_fn::ScalarFnOptions<'_> -impl core::convert::From for vortex_array::scalar::ScalarValue +pub fn vortex_array::scalar_fn::ScalarFnOptions<'_>::serialize(&self) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar::ScalarValue::from(value: i8) -> Self +impl<'a> vortex_array::scalar_fn::ScalarFnOptions<'a> -impl core::convert::From for vortex_array::scalar::ScalarValue +pub fn vortex_array::scalar_fn::ScalarFnOptions<'a>::as_any(&self) -> &'a dyn core::any::Any -pub fn vortex_array::scalar::ScalarValue::from(value: u16) -> Self +impl core::cmp::Eq for vortex_array::scalar_fn::ScalarFnOptions<'_> -impl core::convert::From for vortex_array::scalar::ScalarValue +impl core::cmp::PartialEq for vortex_array::scalar_fn::ScalarFnOptions<'_> -pub fn vortex_array::scalar::ScalarValue::from(value: u32) -> Self +pub fn vortex_array::scalar_fn::ScalarFnOptions<'_>::eq(&self, other: &Self) -> bool -impl core::convert::From for vortex_array::scalar::ScalarValue +impl core::fmt::Debug for vortex_array::scalar_fn::ScalarFnOptions<'_> -pub fn vortex_array::scalar::ScalarValue::from(value: u64) -> Self +pub fn vortex_array::scalar_fn::ScalarFnOptions<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::convert::From for vortex_array::scalar::ScalarValue +impl core::fmt::Display for vortex_array::scalar_fn::ScalarFnOptions<'_> -pub fn vortex_array::scalar::ScalarValue::from(value: u8) -> Self +pub fn vortex_array::scalar_fn::ScalarFnOptions<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::convert::From for vortex_array::scalar::ScalarValue +impl core::hash::Hash for vortex_array::scalar_fn::ScalarFnOptions<'_> -pub fn vortex_array::scalar::ScalarValue::from(value: usize) -> Self +pub fn vortex_array::scalar_fn::ScalarFnOptions<'_>::hash(&self, state: &mut H) -impl core::convert::From for vortex_array::scalar::ScalarValue +pub struct vortex_array::scalar_fn::ScalarFnRef(_) -pub fn vortex_array::scalar::ScalarValue::from(value: vortex_array::scalar::DecimalValue) -> Self +impl vortex_array::scalar_fn::ScalarFnRef -impl core::convert::From for vortex_array::scalar::ScalarValue +pub fn vortex_array::scalar_fn::ScalarFnRef::as_(&self) -> &::Options -pub fn vortex_array::scalar::ScalarValue::from(value: vortex_array::scalar::PValue) -> Self +pub fn vortex_array::scalar_fn::ScalarFnRef::as_opt(&self) -> core::option::Option<&::Options> -impl core::convert::From> for vortex_array::scalar::ScalarValue +pub fn vortex_array::scalar_fn::ScalarFnRef::coerce_args(&self, arg_types: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::ScalarValue::from(value: vortex_buffer::ByteBuffer) -> Self +pub fn vortex_array::scalar_fn::ScalarFnRef::downcast(self) -> alloc::sync::Arc> -impl core::convert::From for vortex_array::scalar::ScalarValue +pub fn vortex_array::scalar_fn::ScalarFnRef::downcast_ref(&self) -> core::option::Option<&vortex_array::scalar_fn::ScalarFn> -pub fn vortex_array::scalar::ScalarValue::from(value: vortex_buffer::string::BufferString) -> Self +pub fn vortex_array::scalar_fn::ScalarFnRef::execute(&self, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::convert::TryFrom<&vortex_array::scalar::ScalarValue> for f32 +pub fn vortex_array::scalar_fn::ScalarFnRef::id(&self) -> vortex_array::scalar_fn::ScalarFnId -pub type f32::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::ScalarFnRef::is(&self) -> bool -pub fn f32::try_from(value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::ScalarFnRef::options(&self) -> vortex_array::scalar_fn::ScalarFnOptions<'_> -impl core::convert::TryFrom<&vortex_array::scalar::ScalarValue> for f64 +pub fn vortex_array::scalar_fn::ScalarFnRef::reduce(&self, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub type f64::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::ScalarFnRef::return_dtype(&self, arg_types: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -pub fn f64::try_from(value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::ScalarFnRef::signature(&self) -> vortex_array::scalar_fn::ScalarFnSignature<'_> -impl core::convert::TryFrom<&vortex_array::scalar::ScalarValue> for half::binary16::f16 +pub fn vortex_array::scalar_fn::ScalarFnRef::try_downcast(self) -> core::result::Result>, vortex_array::scalar_fn::ScalarFnRef> -pub type half::binary16::f16::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::ScalarFnRef::validity(&self, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult -pub fn half::binary16::f16::try_from(value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult +impl core::clone::Clone for vortex_array::scalar_fn::ScalarFnRef -impl core::convert::TryFrom<&vortex_array::scalar::ScalarValue> for i16 +pub fn vortex_array::scalar_fn::ScalarFnRef::clone(&self) -> vortex_array::scalar_fn::ScalarFnRef -pub type i16::Error = vortex_error::VortexError +impl core::cmp::Eq for vortex_array::scalar_fn::ScalarFnRef -pub fn i16::try_from(value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult +impl core::cmp::PartialEq for vortex_array::scalar_fn::ScalarFnRef -impl core::convert::TryFrom<&vortex_array::scalar::ScalarValue> for i32 +pub fn vortex_array::scalar_fn::ScalarFnRef::eq(&self, other: &Self) -> bool -pub type i32::Error = vortex_error::VortexError +impl core::fmt::Debug for vortex_array::scalar_fn::ScalarFnRef -pub fn i32::try_from(value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::ScalarFnRef::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::convert::TryFrom<&vortex_array::scalar::ScalarValue> for i64 +impl core::fmt::Display for vortex_array::scalar_fn::ScalarFnRef -pub type i64::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::ScalarFnRef::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn i64::try_from(value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult +impl core::hash::Hash for vortex_array::scalar_fn::ScalarFnRef -impl core::convert::TryFrom<&vortex_array::scalar::ScalarValue> for i8 +pub fn vortex_array::scalar_fn::ScalarFnRef::hash(&self, state: &mut H) -pub type i8::Error = vortex_error::VortexError +pub struct vortex_array::scalar_fn::ScalarFnSignature<'a> -pub fn i8::try_from(value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult +impl vortex_array::scalar_fn::ScalarFnSignature<'_> -impl core::convert::TryFrom<&vortex_array::scalar::ScalarValue> for u16 +pub fn vortex_array::scalar_fn::ScalarFnSignature<'_>::arity(&self) -> vortex_array::scalar_fn::Arity -pub type u16::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::ScalarFnSignature<'_>::child_name(&self, index: usize) -> vortex_array::scalar_fn::ChildName -pub fn u16::try_from(value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::ScalarFnSignature<'_>::is_fallible(&self) -> bool -impl core::convert::TryFrom<&vortex_array::scalar::ScalarValue> for u32 +pub fn vortex_array::scalar_fn::ScalarFnSignature<'_>::is_null_sensitive(&self) -> bool -pub type u32::Error = vortex_error::VortexError +pub struct vortex_array::scalar_fn::VecExecutionArgs -pub fn u32::try_from(value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult +impl vortex_array::scalar_fn::VecExecutionArgs -impl core::convert::TryFrom<&vortex_array::scalar::ScalarValue> for u64 +pub fn vortex_array::scalar_fn::VecExecutionArgs::new(inputs: alloc::vec::Vec, row_count: usize) -> Self -pub type u64::Error = vortex_error::VortexError +impl vortex_array::scalar_fn::ExecutionArgs for vortex_array::scalar_fn::VecExecutionArgs -pub fn u64::try_from(value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::VecExecutionArgs::get(&self, index: usize) -> vortex_error::VortexResult -impl core::convert::TryFrom<&vortex_array::scalar::ScalarValue> for u8 +pub fn vortex_array::scalar_fn::VecExecutionArgs::num_inputs(&self) -> usize -pub type u8::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::VecExecutionArgs::row_count(&self) -> usize -pub fn u8::try_from(value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult +pub trait vortex_array::scalar_fn::ExecutionArgs -impl core::convert::TryFrom<&vortex_array::scalar::ScalarValue> for usize +pub fn vortex_array::scalar_fn::ExecutionArgs::get(&self, index: usize) -> vortex_error::VortexResult -pub type usize::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::ExecutionArgs::num_inputs(&self) -> usize -pub fn usize::try_from(value: &vortex_array::scalar::ScalarValue) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::ExecutionArgs::row_count(&self) -> usize -impl core::fmt::Debug for vortex_array::scalar::ScalarValue +impl vortex_array::scalar_fn::ExecutionArgs for vortex_array::scalar_fn::VecExecutionArgs -pub fn vortex_array::scalar::ScalarValue::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::VecExecutionArgs::get(&self, index: usize) -> vortex_error::VortexResult -impl core::fmt::Display for vortex_array::scalar::ScalarValue +pub fn vortex_array::scalar_fn::VecExecutionArgs::num_inputs(&self) -> usize -pub fn vortex_array::scalar::ScalarValue::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::VecExecutionArgs::row_count(&self) -> usize -impl core::hash::Hash for vortex_array::scalar::ScalarValue +pub trait vortex_array::scalar_fn::ReduceCtx -pub fn vortex_array::scalar::ScalarValue::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::scalar_fn::ReduceCtx::new_node(&self, scalar_fn: vortex_array::scalar_fn::ScalarFnRef, children: &[vortex_array::scalar_fn::ReduceNodeRef]) -> vortex_error::VortexResult -impl core::marker::StructuralPartialEq for vortex_array::scalar::ScalarValue +pub trait vortex_array::scalar_fn::ReduceNode -impl core::convert::From> for vortex_array::scalar::ScalarValue where T: vortex_array::dtype::NativeDType, vortex_array::scalar::Scalar: core::convert::From +pub fn vortex_array::scalar_fn::ReduceNode::as_any(&self) -> &dyn core::any::Any -pub fn vortex_array::scalar::ScalarValue::from(vec: alloc::vec::Vec) -> Self +pub fn vortex_array::scalar_fn::ReduceNode::child(&self, idx: usize) -> vortex_array::scalar_fn::ReduceNodeRef -pub struct vortex_array::scalar::BinaryScalar<'a> +pub fn vortex_array::scalar_fn::ReduceNode::child_count(&self) -> usize -impl<'a> vortex_array::scalar::BinaryScalar<'a> +pub fn vortex_array::scalar_fn::ReduceNode::node_dtype(&self) -> vortex_error::VortexResult -pub fn vortex_array::scalar::BinaryScalar<'a>::dtype(&self) -> &'a vortex_array::dtype::DType +pub fn vortex_array::scalar_fn::ReduceNode::scalar_fn(&self) -> core::option::Option<&vortex_array::scalar_fn::ScalarFnRef> -pub fn vortex_array::scalar::BinaryScalar<'a>::is_empty(&self) -> core::option::Option +impl vortex_array::scalar_fn::ReduceNode for vortex_array::ArrayRef -pub fn vortex_array::scalar::BinaryScalar<'a>::len(&self) -> core::option::Option +pub fn vortex_array::ArrayRef::as_any(&self) -> &dyn core::any::Any -pub fn vortex_array::scalar::BinaryScalar<'a>::try_new(dtype: &'a vortex_array::dtype::DType, value: core::option::Option<&'a vortex_array::scalar::ScalarValue>) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::child(&self, idx: usize) -> vortex_array::scalar_fn::ReduceNodeRef -pub fn vortex_array::scalar::BinaryScalar<'a>::value(&self) -> core::option::Option<&'a vortex_buffer::ByteBuffer> +pub fn vortex_array::ArrayRef::child_count(&self) -> usize -impl core::cmp::Eq for vortex_array::scalar::BinaryScalar<'_> +pub fn vortex_array::ArrayRef::node_dtype(&self) -> vortex_error::VortexResult -impl core::cmp::Ord for vortex_array::scalar::BinaryScalar<'_> +pub fn vortex_array::ArrayRef::scalar_fn(&self) -> core::option::Option<&vortex_array::scalar_fn::ScalarFnRef> -pub fn vortex_array::scalar::BinaryScalar<'_>::cmp(&self, other: &Self) -> core::cmp::Ordering +pub trait vortex_array::scalar_fn::ScalarFnPlugin: 'static + core::marker::Send + core::marker::Sync -impl core::cmp::PartialEq for vortex_array::scalar::BinaryScalar<'_> +pub fn vortex_array::scalar_fn::ScalarFnPlugin::deserialize(&self, metadata: &[u8], session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar::BinaryScalar<'_>::eq(&self, other: &Self) -> bool +pub fn vortex_array::scalar_fn::ScalarFnPlugin::id(&self) -> vortex_array::scalar_fn::ScalarFnId -impl core::cmp::PartialOrd for vortex_array::scalar::BinaryScalar<'_> +impl vortex_array::scalar_fn::ScalarFnPlugin for V -pub fn vortex_array::scalar::BinaryScalar<'_>::partial_cmp(&self, other: &Self) -> core::option::Option +pub fn V::deserialize(&self, metadata: &[u8], session: &vortex_session::VortexSession) -> core::result::Result -impl core::fmt::Display for vortex_array::scalar::BinaryScalar<'_> +pub fn V::id(&self) -> arcref::ArcRef -pub fn vortex_array::scalar::BinaryScalar<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub trait vortex_array::scalar_fn::ScalarFnVTable: 'static + core::marker::Sized + core::clone::Clone + core::marker::Send + core::marker::Sync -impl<'a> core::clone::Clone for vortex_array::scalar::BinaryScalar<'a> +pub type vortex_array::scalar_fn::ScalarFnVTable::Options: 'static + core::marker::Send + core::marker::Sync + core::clone::Clone + core::fmt::Debug + core::fmt::Display + core::cmp::PartialEq + core::cmp::Eq + core::hash::Hash -pub fn vortex_array::scalar::BinaryScalar<'a>::clone(&self) -> vortex_array::scalar::BinaryScalar<'a> +pub fn vortex_array::scalar_fn::ScalarFnVTable::arity(&self, options: &Self::Options) -> vortex_array::scalar_fn::Arity -impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::BinaryScalar<'a> +pub fn vortex_array::scalar_fn::ScalarFnVTable::child_name(&self, options: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -pub type vortex_array::scalar::BinaryScalar<'a>::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::ScalarFnVTable::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::BinaryScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::ScalarFnVTable::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl<'a> core::fmt::Debug for vortex_array::scalar::BinaryScalar<'a> +pub fn vortex_array::scalar_fn::ScalarFnVTable::execute(&self, options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar::BinaryScalar<'a>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::ScalarFnVTable::fmt_sql(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl<'a> core::hash::Hash for vortex_array::scalar::BinaryScalar<'a> +pub fn vortex_array::scalar_fn::ScalarFnVTable::id(&self) -> vortex_array::scalar_fn::ScalarFnId -pub fn vortex_array::scalar::BinaryScalar<'a>::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::scalar_fn::ScalarFnVTable::is_fallible(&self, options: &Self::Options) -> bool -pub struct vortex_array::scalar::BoolScalar<'a> +pub fn vortex_array::scalar_fn::ScalarFnVTable::is_null_sensitive(&self, options: &Self::Options) -> bool -impl<'a> vortex_array::scalar::BoolScalar<'a> +pub fn vortex_array::scalar_fn::ScalarFnVTable::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::BoolScalar<'a>::dtype(&self) -> &'a vortex_array::dtype::DType +pub fn vortex_array::scalar_fn::ScalarFnVTable::return_dtype(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -pub fn vortex_array::scalar::BoolScalar<'a>::into_scalar(self) -> vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::ScalarFnVTable::serialize(&self, options: &Self::Options) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar::BoolScalar<'a>::invert(self) -> vortex_array::scalar::BoolScalar<'a> +pub fn vortex_array::scalar_fn::ScalarFnVTable::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::BoolScalar<'a>::try_new(dtype: &'a vortex_array::dtype::DType, value: core::option::Option<&vortex_array::scalar::ScalarValue>) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::ScalarFnVTable::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::BoolScalar<'a>::value(&self) -> core::option::Option +pub fn vortex_array::scalar_fn::ScalarFnVTable::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -impl core::cmp::Ord for vortex_array::scalar::BoolScalar<'_> +pub fn vortex_array::scalar_fn::ScalarFnVTable::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::scalar::BoolScalar<'_>::cmp(&self, other: &Self) -> core::cmp::Ordering +pub fn vortex_array::scalar_fn::ScalarFnVTable::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -impl core::cmp::PartialEq for vortex_array::scalar::BoolScalar<'_> +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::between::Between -pub fn vortex_array::scalar::BoolScalar<'_>::eq(&self, other: &Self) -> bool +pub type vortex_array::scalar_fn::fns::between::Between::Options = vortex_array::scalar_fn::fns::between::BetweenOptions -impl core::cmp::PartialOrd for vortex_array::scalar::BoolScalar<'_> +pub fn vortex_array::scalar_fn::fns::between::Between::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity -pub fn vortex_array::scalar::BoolScalar<'_>::partial_cmp(&self, other: &Self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::between::Between::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -impl core::fmt::Display for vortex_array::scalar::BoolScalar<'_> +pub fn vortex_array::scalar_fn::fns::between::Between::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::BoolScalar<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::fns::between::Between::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl<'a> core::clone::Clone for vortex_array::scalar::BoolScalar<'a> +pub fn vortex_array::scalar_fn::fns::between::Between::execute(&self, options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar::BoolScalar<'a>::clone(&self) -> vortex_array::scalar::BoolScalar<'a> +pub fn vortex_array::scalar_fn::fns::between::Between::fmt_sql(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl<'a> core::cmp::Eq for vortex_array::scalar::BoolScalar<'a> +pub fn vortex_array::scalar_fn::fns::between::Between::id(&self) -> vortex_array::scalar_fn::ScalarFnId -impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::BoolScalar<'a> +pub fn vortex_array::scalar_fn::fns::between::Between::is_fallible(&self, _options: &Self::Options) -> bool -pub type vortex_array::scalar::BoolScalar<'a>::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::between::Between::is_null_sensitive(&self, _instance: &Self::Options) -> bool -pub fn vortex_array::scalar::BoolScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::between::Between::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -impl<'a> core::fmt::Debug for vortex_array::scalar::BoolScalar<'a> +pub fn vortex_array::scalar_fn::fns::between::Between::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -pub fn vortex_array::scalar::BoolScalar<'a>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::fns::between::Between::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> -impl<'a> core::hash::Hash for vortex_array::scalar::BoolScalar<'a> +pub fn vortex_array::scalar_fn::fns::between::Between::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::BoolScalar<'a>::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::scalar_fn::fns::between::Between::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub struct vortex_array::scalar::DecimalScalar<'a> +pub fn vortex_array::scalar_fn::fns::between::Between::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -impl<'a> vortex_array::scalar::DecimalScalar<'a> +pub fn vortex_array::scalar_fn::fns::between::Between::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::scalar::DecimalScalar<'a>::checked_binary_numeric(&self, other: &vortex_array::scalar::DecimalScalar<'a>, op: vortex_array::scalar::NumericOperator) -> core::option::Option> +pub fn vortex_array::scalar_fn::fns::between::Between::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::DecimalScalar<'a>::decimal_value(&self) -> core::option::Option +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::binary::Binary -pub fn vortex_array::scalar::DecimalScalar<'a>::dtype(&self) -> &'a vortex_array::dtype::DType +pub type vortex_array::scalar_fn::fns::binary::Binary::Options = vortex_array::scalar_fn::fns::operators::Operator -pub fn vortex_array::scalar::DecimalScalar<'a>::is_zero(&self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::binary::Binary::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity -pub fn vortex_array::scalar::DecimalScalar<'a>::try_new(dtype: &'a vortex_array::dtype::DType, value: core::option::Option<&vortex_array::scalar::ScalarValue>) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::binary::Binary::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -impl core::cmp::Eq for vortex_array::scalar::DecimalScalar<'_> +pub fn vortex_array::scalar_fn::fns::binary::Binary::coerce_args(&self, operator: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -impl core::cmp::PartialEq for vortex_array::scalar::DecimalScalar<'_> +pub fn vortex_array::scalar_fn::fns::binary::Binary::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar::DecimalScalar<'_>::eq(&self, other: &Self) -> bool +pub fn vortex_array::scalar_fn::fns::binary::Binary::execute(&self, op: &vortex_array::scalar_fn::fns::operators::Operator, args: &dyn vortex_array::scalar_fn::ExecutionArgs, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::cmp::PartialOrd for vortex_array::scalar::DecimalScalar<'_> +pub fn vortex_array::scalar_fn::fns::binary::Binary::fmt_sql(&self, operator: &vortex_array::scalar_fn::fns::operators::Operator, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::scalar::DecimalScalar<'_>::partial_cmp(&self, other: &Self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::binary::Binary::id(&self) -> vortex_array::scalar_fn::ScalarFnId -impl core::convert::From> for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::binary::Binary::is_fallible(&self, operator: &vortex_array::scalar_fn::fns::operators::Operator) -> bool -pub fn vortex_array::scalar::Scalar::from(ds: vortex_array::scalar::DecimalScalar<'_>) -> Self +pub fn vortex_array::scalar_fn::fns::binary::Binary::is_null_sensitive(&self, _operator: &vortex_array::scalar_fn::fns::operators::Operator) -> bool -impl core::convert::TryFrom> for core::option::Option +pub fn vortex_array::scalar_fn::fns::binary::Binary::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub type core::option::Option::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::binary::Binary::return_dtype(&self, operator: &vortex_array::scalar_fn::fns::operators::Operator, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -pub fn core::option::Option::try_from(value: vortex_array::scalar::DecimalScalar<'_>) -> core::result::Result +pub fn vortex_array::scalar_fn::fns::binary::Binary::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> -impl core::convert::TryFrom> for core::option::Option +pub fn vortex_array::scalar_fn::fns::binary::Binary::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -pub type core::option::Option::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::binary::Binary::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn core::option::Option::try_from(value: vortex_array::scalar::DecimalScalar<'_>) -> core::result::Result +pub fn vortex_array::scalar_fn::fns::binary::Binary::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -impl core::convert::TryFrom> for core::option::Option +pub fn vortex_array::scalar_fn::fns::binary::Binary::stat_falsification(&self, operator: &vortex_array::scalar_fn::fns::operators::Operator, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub type core::option::Option::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::binary::Binary::validity(&self, operator: &vortex_array::scalar_fn::fns::operators::Operator, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn core::option::Option::try_from(value: vortex_array::scalar::DecimalScalar<'_>) -> core::result::Result +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::case_when::CaseWhen -impl core::convert::TryFrom> for core::option::Option +pub type vortex_array::scalar_fn::fns::case_when::CaseWhen::Options = vortex_array::scalar_fn::fns::case_when::CaseWhenOptions -pub type core::option::Option::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::arity(&self, options: &Self::Options) -> vortex_array::scalar_fn::Arity -pub fn core::option::Option::try_from(value: vortex_array::scalar::DecimalScalar<'_>) -> core::result::Result +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::child_name(&self, options: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -impl core::convert::TryFrom> for core::option::Option +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -pub type core::option::Option::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::deserialize(&self, metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn core::option::Option::try_from(value: vortex_array::scalar::DecimalScalar<'_>) -> core::result::Result +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::execute(&self, options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::convert::TryFrom> for core::option::Option +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::fmt_sql(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub type core::option::Option::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::id(&self) -> vortex_array::scalar_fn::ScalarFnId -pub fn core::option::Option::try_from(value: vortex_array::scalar::DecimalScalar<'_>) -> core::result::Result +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::is_fallible(&self, _options: &Self::Options) -> bool -impl core::convert::TryFrom> for i128 +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::is_null_sensitive(&self, _options: &Self::Options) -> bool -pub type i128::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub fn i128::try_from(value: vortex_array::scalar::DecimalScalar<'_>) -> core::result::Result +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::return_dtype(&self, options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -impl core::convert::TryFrom> for i16 +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::serialize(&self, _options: &Self::Options) -> vortex_error::VortexResult>> -pub type i16::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -pub fn i16::try_from(value: vortex_array::scalar::DecimalScalar<'_>) -> core::result::Result +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -impl core::convert::TryFrom> for i32 +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub type i32::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn i32::try_from(value: vortex_array::scalar::DecimalScalar<'_>) -> core::result::Result +pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -impl core::convert::TryFrom> for i64 +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::cast::Cast -pub type i64::Error = vortex_error::VortexError +pub type vortex_array::scalar_fn::fns::cast::Cast::Options = vortex_array::dtype::DType -pub fn i64::try_from(value: vortex_array::scalar::DecimalScalar<'_>) -> core::result::Result +pub fn vortex_array::scalar_fn::fns::cast::Cast::arity(&self, _options: &vortex_array::dtype::DType) -> vortex_array::scalar_fn::Arity -impl core::convert::TryFrom> for i8 +pub fn vortex_array::scalar_fn::fns::cast::Cast::child_name(&self, _instance: &vortex_array::dtype::DType, child_idx: usize) -> vortex_array::scalar_fn::ChildName -pub type i8::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::cast::Cast::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -pub fn i8::try_from(value: vortex_array::scalar::DecimalScalar<'_>) -> core::result::Result +pub fn vortex_array::scalar_fn::fns::cast::Cast::deserialize(&self, _metadata: &[u8], session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl core::convert::TryFrom> for vortex_array::dtype::i256 +pub fn vortex_array::scalar_fn::fns::cast::Cast::execute(&self, target_dtype: &vortex_array::dtype::DType, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::dtype::i256::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::cast::Cast::fmt_sql(&self, dtype: &vortex_array::dtype::DType, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::dtype::i256::try_from(value: vortex_array::scalar::DecimalScalar<'_>) -> core::result::Result +pub fn vortex_array::scalar_fn::fns::cast::Cast::id(&self) -> vortex_array::scalar_fn::ScalarFnId -impl core::fmt::Display for vortex_array::scalar::DecimalScalar<'_> +pub fn vortex_array::scalar_fn::fns::cast::Cast::is_fallible(&self, options: &Self::Options) -> bool -pub fn vortex_array::scalar::DecimalScalar<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::fns::cast::Cast::is_null_sensitive(&self, _instance: &vortex_array::dtype::DType) -> bool -impl<'a> core::clone::Clone for vortex_array::scalar::DecimalScalar<'a> +pub fn vortex_array::scalar_fn::fns::cast::Cast::reduce(&self, target_dtype: &vortex_array::dtype::DType, node: &dyn vortex_array::scalar_fn::ReduceNode, _ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::DecimalScalar<'a>::clone(&self) -> vortex_array::scalar::DecimalScalar<'a> +pub fn vortex_array::scalar_fn::fns::cast::Cast::return_dtype(&self, dtype: &vortex_array::dtype::DType, _arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::DecimalScalar<'a> +pub fn vortex_array::scalar_fn::fns::cast::Cast::serialize(&self, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult>> -pub type vortex_array::scalar::DecimalScalar<'a>::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::cast::Cast::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::DecimalScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::cast::Cast::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -impl<'a> core::fmt::Debug for vortex_array::scalar::DecimalScalar<'a> +pub fn vortex_array::scalar_fn::fns::cast::Cast::stat_expression(&self, dtype: &vortex_array::dtype::DType, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::scalar::DecimalScalar<'a>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::fns::cast::Cast::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -impl<'a> core::hash::Hash for vortex_array::scalar::DecimalScalar<'a> +pub fn vortex_array::scalar_fn::fns::cast::Cast::validity(&self, dtype: &vortex_array::dtype::DType, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::DecimalScalar<'a>::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::dynamic::DynamicComparison -impl<'a> core::marker::Copy for vortex_array::scalar::DecimalScalar<'a> +pub type vortex_array::scalar_fn::fns::dynamic::DynamicComparison::Options = vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr -pub struct vortex_array::scalar::ExtScalar<'a> +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity -impl<'a> vortex_array::scalar::ExtScalar<'a> +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -pub fn vortex_array::scalar::ExtScalar<'a>::dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::ExtScalar<'a>::ext_dtype(&self) -> &'a vortex_array::dtype::extension::ExtDTypeRef +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar::ExtScalar<'a>::to_storage_scalar(&self) -> vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::execute(&self, data: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::cmp::Eq for vortex_array::scalar::ExtScalar<'_> +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::fmt_sql(&self, dynamic: &vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::cmp::PartialEq for vortex_array::scalar::ExtScalar<'_> +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::id(&self) -> vortex_array::scalar_fn::ScalarFnId -pub fn vortex_array::scalar::ExtScalar<'_>::eq(&self, other: &Self) -> bool +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::is_fallible(&self, options: &Self::Options) -> bool -impl core::cmp::PartialOrd for vortex_array::scalar::ExtScalar<'_> +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::is_null_sensitive(&self, _instance: &Self::Options) -> bool -pub fn vortex_array::scalar::ExtScalar<'_>::partial_cmp(&self, other: &Self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -impl core::fmt::Display for vortex_array::scalar::ExtScalar<'_> +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::return_dtype(&self, dynamic: &vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -pub fn vortex_array::scalar::ExtScalar<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::serialize(&self, options: &Self::Options) -> vortex_error::VortexResult>> -impl core::hash::Hash for vortex_array::scalar::ExtScalar<'_> +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::ExtScalar<'_>::hash(&self, state: &mut H) +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -impl<'a> core::clone::Clone for vortex_array::scalar::ExtScalar<'a> +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::scalar::ExtScalar<'a>::clone(&self) -> vortex_array::scalar::ExtScalar<'a> +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::stat_falsification(&self, dynamic: &vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::ExtScalar<'a> +pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub type vortex_array::scalar::ExtScalar<'a>::Error = vortex_error::VortexError +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::fill_null::FillNull -pub fn vortex_array::scalar::ExtScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub type vortex_array::scalar_fn::fns::fill_null::FillNull::Options = vortex_array::scalar_fn::EmptyOptions -impl<'a> core::fmt::Debug for vortex_array::scalar::ExtScalar<'a> +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity -pub fn vortex_array::scalar::ExtScalar<'a>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::child_name(&self, _options: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -pub struct vortex_array::scalar::ListScalar<'a> +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -impl<'a> vortex_array::scalar::ListScalar<'a> +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar::ListScalar<'a>::dtype(&self) -> &'a vortex_array::dtype::DType +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::execute(&self, _options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar::ListScalar<'a>::element(&self, idx: usize) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::scalar::ListScalar<'a>::element_dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::id(&self) -> vortex_array::scalar_fn::ScalarFnId -pub fn vortex_array::scalar::ListScalar<'a>::elements(&self) -> core::option::Option> +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::is_fallible(&self, _options: &Self::Options) -> bool -pub fn vortex_array::scalar::ListScalar<'a>::is_empty(&self) -> bool +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::is_null_sensitive(&self, _options: &Self::Options) -> bool -pub fn vortex_array::scalar::ListScalar<'a>::is_null(&self) -> bool +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::ListScalar<'a>::len(&self) -> usize +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -pub fn vortex_array::scalar::ListScalar<'a>::try_new(dtype: &'a vortex_array::dtype::DType, value: core::option::Option<&'a vortex_array::scalar::ScalarValue>) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::serialize(&self, _options: &Self::Options) -> vortex_error::VortexResult>> -impl core::cmp::Eq for vortex_array::scalar::ListScalar<'_> +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::simplify(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -impl core::cmp::PartialEq for vortex_array::scalar::ListScalar<'_> +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::ListScalar<'_>::eq(&self, other: &Self) -> bool +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -impl core::cmp::PartialOrd for vortex_array::scalar::ListScalar<'_> +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::scalar::ListScalar<'_>::partial_cmp(&self, other: &Self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::validity(&self, _options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -impl core::fmt::Display for vortex_array::scalar::ListScalar<'_> +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::get_item::GetItem -pub fn vortex_array::scalar::ListScalar<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::scalar_fn::fns::get_item::GetItem::Options = vortex_array::dtype::FieldName -impl core::hash::Hash for vortex_array::scalar::ListScalar<'_> +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::arity(&self, _field_name: &vortex_array::dtype::FieldName) -> vortex_array::scalar_fn::Arity -pub fn vortex_array::scalar::ListScalar<'_>::hash(&self, state: &mut H) +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -impl<'a> core::clone::Clone for vortex_array::scalar::ListScalar<'a> +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::ListScalar<'a>::clone(&self) -> vortex_array::scalar::ListScalar<'a> +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::ListScalar<'a> +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::execute(&self, field_name: &vortex_array::dtype::FieldName, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::scalar::ListScalar<'a>::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::fmt_sql(&self, field_name: &vortex_array::dtype::FieldName, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::scalar::ListScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::id(&self) -> vortex_array::scalar_fn::ScalarFnId -impl<'a> core::fmt::Debug for vortex_array::scalar::ListScalar<'a> +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::is_fallible(&self, _field_name: &vortex_array::dtype::FieldName) -> bool -pub fn vortex_array::scalar::ListScalar<'a>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::is_null_sensitive(&self, _field_name: &vortex_array::dtype::FieldName) -> bool -pub struct vortex_array::scalar::PrimitiveScalar<'a> +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::reduce(&self, field_name: &vortex_array::dtype::FieldName, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -impl<'a> vortex_array::scalar::PrimitiveScalar<'a> +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::return_dtype(&self, field_name: &vortex_array::dtype::FieldName, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -pub fn vortex_array::scalar::PrimitiveScalar<'a>::as_(&self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar::PrimitiveScalar<'a>::as_opt(&self) -> core::option::Option> +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::PrimitiveScalar<'a>::dtype(&self) -> &'a vortex_array::dtype::DType +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::simplify_untyped(&self, field_name: &vortex_array::dtype::FieldName, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::PrimitiveScalar<'a>::is_nan(&self) -> bool +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::stat_expression(&self, field_name: &vortex_array::dtype::FieldName, _expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::scalar::PrimitiveScalar<'a>::is_zero(&self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::scalar::PrimitiveScalar<'a>::ptype(&self) -> vortex_array::dtype::PType +pub fn vortex_array::scalar_fn::fns::get_item::GetItem::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::PrimitiveScalar<'a>::pvalue(&self) -> core::option::Option +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::is_null::IsNull -pub fn vortex_array::scalar::PrimitiveScalar<'a>::try_new(dtype: &'a vortex_array::dtype::DType, value: core::option::Option<&vortex_array::scalar::ScalarValue>) -> vortex_error::VortexResult +pub type vortex_array::scalar_fn::fns::is_null::IsNull::Options = vortex_array::scalar_fn::EmptyOptions -pub fn vortex_array::scalar::PrimitiveScalar<'a>::try_typed_value(&self) -> vortex_error::VortexResult> +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity -pub fn vortex_array::scalar::PrimitiveScalar<'a>::typed_value(&self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -impl<'a> vortex_array::scalar::PrimitiveScalar<'a> +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::PrimitiveScalar<'a>::checked_binary_numeric(&self, other: &vortex_array::scalar::PrimitiveScalar<'a>, op: vortex_array::scalar::NumericOperator) -> core::option::Option> +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl core::cmp::Eq for vortex_array::scalar::PrimitiveScalar<'_> +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::execute(&self, _data: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::cmp::PartialEq for vortex_array::scalar::PrimitiveScalar<'_> +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::scalar::PrimitiveScalar<'_>::eq(&self, other: &Self) -> bool +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::id(&self) -> vortex_array::scalar_fn::ScalarFnId -impl core::cmp::PartialOrd for vortex_array::scalar::PrimitiveScalar<'_> +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::is_fallible(&self, _instance: &Self::Options) -> bool -pub fn vortex_array::scalar::PrimitiveScalar<'_>::partial_cmp(&self, other: &Self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::is_null_sensitive(&self, _instance: &Self::Options) -> bool -impl core::convert::From> for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::Scalar::from(ps: vortex_array::scalar::PrimitiveScalar<'_>) -> Self +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::return_dtype(&self, _options: &Self::Options, _arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -impl core::fmt::Display for vortex_array::scalar::PrimitiveScalar<'_> +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::serialize(&self, _instance: &Self::Options) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar::PrimitiveScalar<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -impl core::ops::arith::Add for vortex_array::scalar::PrimitiveScalar<'_> +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub type vortex_array::scalar::PrimitiveScalar<'_>::Output = vortex_array::scalar::PrimitiveScalar<'_> +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::scalar::PrimitiveScalar<'_>::add(self, rhs: Self) -> Self::Output +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::stat_falsification(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -impl core::ops::arith::Sub for vortex_array::scalar::PrimitiveScalar<'_> +pub fn vortex_array::scalar_fn::fns::is_null::IsNull::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub type vortex_array::scalar::PrimitiveScalar<'_>::Output = vortex_array::scalar::PrimitiveScalar<'_> +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::like::Like -pub fn vortex_array::scalar::PrimitiveScalar<'_>::sub(self, rhs: Self) -> Self::Output +pub type vortex_array::scalar_fn::fns::like::Like::Options = vortex_array::scalar_fn::fns::like::LikeOptions -impl num_traits::ops::checked::CheckedAdd for vortex_array::scalar::PrimitiveScalar<'_> +pub fn vortex_array::scalar_fn::fns::like::Like::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity -pub fn vortex_array::scalar::PrimitiveScalar<'_>::checked_add(&self, rhs: &Self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::like::Like::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -impl num_traits::ops::checked::CheckedSub for vortex_array::scalar::PrimitiveScalar<'_> +pub fn vortex_array::scalar_fn::fns::like::Like::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::PrimitiveScalar<'_>::checked_sub(&self, rhs: &Self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::like::Like::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl<'a> core::clone::Clone for vortex_array::scalar::PrimitiveScalar<'a> +pub fn vortex_array::scalar_fn::fns::like::Like::execute(&self, options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar::PrimitiveScalar<'a>::clone(&self) -> vortex_array::scalar::PrimitiveScalar<'a> +pub fn vortex_array::scalar_fn::fns::like::Like::fmt_sql(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::PrimitiveScalar<'a> +pub fn vortex_array::scalar_fn::fns::like::Like::id(&self) -> vortex_array::scalar_fn::ScalarFnId -pub type vortex_array::scalar::PrimitiveScalar<'a>::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::like::Like::is_fallible(&self, options: &Self::Options) -> bool -pub fn vortex_array::scalar::PrimitiveScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::like::Like::is_null_sensitive(&self, _instance: &Self::Options) -> bool -impl<'a> core::fmt::Debug for vortex_array::scalar::PrimitiveScalar<'a> +pub fn vortex_array::scalar_fn::fns::like::Like::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::PrimitiveScalar<'a>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::scalar_fn::fns::like::Like::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -impl<'a> core::hash::Hash for vortex_array::scalar::PrimitiveScalar<'a> +pub fn vortex_array::scalar_fn::fns::like::Like::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar::PrimitiveScalar<'a>::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::scalar_fn::fns::like::Like::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -impl<'a> core::marker::Copy for vortex_array::scalar::PrimitiveScalar<'a> +pub fn vortex_array::scalar_fn::fns::like::Like::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub struct vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::like::Like::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -impl vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::like::Like::stat_falsification(&self, like_opts: &vortex_array::scalar_fn::fns::like::LikeOptions, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::scalar::Scalar::approx_nbytes(&self) -> usize +pub fn vortex_array::scalar_fn::fns::like::Like::validity(&self, _options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::Scalar::default_value(dtype: &vortex_array::dtype::DType) -> Self +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::list_contains::ListContains -pub fn vortex_array::scalar::Scalar::dtype(&self) -> &vortex_array::dtype::DType +pub type vortex_array::scalar_fn::fns::list_contains::ListContains::Options = vortex_array::scalar_fn::EmptyOptions -pub fn vortex_array::scalar::Scalar::eq_ignore_nullability(&self, other: &Self) -> bool +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity -pub fn vortex_array::scalar::Scalar::into_parts(self) -> (vortex_array::dtype::DType, core::option::Option) +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -pub fn vortex_array::scalar::Scalar::into_value(self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::Scalar::is_null(&self) -> bool +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar::Scalar::is_valid(&self) -> bool +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::execute(&self, _options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar::Scalar::is_zero(&self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub unsafe fn vortex_array::scalar::Scalar::new_unchecked(dtype: vortex_array::dtype::DType, value: core::option::Option) -> Self +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::id(&self) -> vortex_array::scalar_fn::ScalarFnId -pub fn vortex_array::scalar::Scalar::null(dtype: vortex_array::dtype::DType) -> Self +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::is_fallible(&self, _options: &Self::Options) -> bool -pub fn vortex_array::scalar::Scalar::null_native() -> Self +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::is_null_sensitive(&self, _instance: &Self::Options) -> bool -pub fn vortex_array::scalar::Scalar::primitive_reinterpret_cast(&self, ptype: vortex_array::dtype::PType) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::Scalar::try_new(dtype: vortex_array::dtype::DType, value: core::option::Option) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -pub fn vortex_array::scalar::Scalar::value(&self) -> core::option::Option<&vortex_array::scalar::ScalarValue> +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::serialize(&self, _instance: &Self::Options) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar::Scalar::zero_value(dtype: &vortex_array::dtype::DType) -> Self +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -impl vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::Scalar::as_binary(&self) -> vortex_array::scalar::BinaryScalar<'_> +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::scalar::Scalar::as_binary_opt(&self) -> core::option::Option> +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::stat_falsification(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::scalar::Scalar::as_bool(&self) -> vortex_array::scalar::BoolScalar<'_> +pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::Scalar::as_bool_opt(&self) -> core::option::Option> +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::literal::Literal -pub fn vortex_array::scalar::Scalar::as_decimal(&self) -> vortex_array::scalar::DecimalScalar<'_> +pub type vortex_array::scalar_fn::fns::literal::Literal::Options = vortex_array::scalar::Scalar -pub fn vortex_array::scalar::Scalar::as_decimal_opt(&self) -> core::option::Option> +pub fn vortex_array::scalar_fn::fns::literal::Literal::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity -pub fn vortex_array::scalar::Scalar::as_extension(&self) -> vortex_array::scalar::ExtScalar<'_> +pub fn vortex_array::scalar_fn::fns::literal::Literal::child_name(&self, _instance: &Self::Options, _child_idx: usize) -> vortex_array::scalar_fn::ChildName -pub fn vortex_array::scalar::Scalar::as_extension_opt(&self) -> core::option::Option> +pub fn vortex_array::scalar_fn::fns::literal::Literal::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::Scalar::as_list(&self) -> vortex_array::scalar::ListScalar<'_> +pub fn vortex_array::scalar_fn::fns::literal::Literal::deserialize(&self, _metadata: &[u8], session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar::Scalar::as_list_opt(&self) -> core::option::Option> +pub fn vortex_array::scalar_fn::fns::literal::Literal::execute(&self, scalar: &vortex_array::scalar::Scalar, args: &dyn vortex_array::scalar_fn::ExecutionArgs, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar::Scalar::as_primitive(&self) -> vortex_array::scalar::PrimitiveScalar<'_> +pub fn vortex_array::scalar_fn::fns::literal::Literal::fmt_sql(&self, scalar: &vortex_array::scalar::Scalar, _expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::scalar::Scalar::as_primitive_opt(&self) -> core::option::Option> +pub fn vortex_array::scalar_fn::fns::literal::Literal::id(&self) -> vortex_array::scalar_fn::ScalarFnId -pub fn vortex_array::scalar::Scalar::as_struct(&self) -> vortex_array::scalar::StructScalar<'_> +pub fn vortex_array::scalar_fn::fns::literal::Literal::is_fallible(&self, _instance: &Self::Options) -> bool -pub fn vortex_array::scalar::Scalar::as_struct_opt(&self) -> core::option::Option> +pub fn vortex_array::scalar_fn::fns::literal::Literal::is_null_sensitive(&self, _instance: &Self::Options) -> bool -pub fn vortex_array::scalar::Scalar::as_utf8(&self) -> vortex_array::scalar::Utf8Scalar<'_> +pub fn vortex_array::scalar_fn::fns::literal::Literal::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::Scalar::as_utf8_opt(&self) -> core::option::Option> +pub fn vortex_array::scalar_fn::fns::literal::Literal::return_dtype(&self, options: &Self::Options, _arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -pub fn vortex_array::scalar::Scalar::as_variant(&self) -> vortex_array::scalar::VariantScalar<'_> +pub fn vortex_array::scalar_fn::fns::literal::Literal::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar::Scalar::as_variant_opt(&self) -> core::option::Option> +pub fn vortex_array::scalar_fn::fns::literal::Literal::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -impl vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::literal::Literal::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::Scalar::binary(buffer: impl core::convert::Into, nullability: vortex_array::dtype::Nullability) -> Self +pub fn vortex_array::scalar_fn::fns::literal::Literal::stat_expression(&self, scalar: &vortex_array::scalar::Scalar, _expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, _catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::scalar::Scalar::bool(value: bool, nullability: vortex_array::dtype::Nullability) -> Self +pub fn vortex_array::scalar_fn::fns::literal::Literal::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::scalar::Scalar::decimal(value: vortex_array::scalar::DecimalValue, decimal_type: vortex_array::dtype::DecimalDType, nullability: vortex_array::dtype::Nullability) -> Self +pub fn vortex_array::scalar_fn::fns::literal::Literal::validity(&self, scalar: &vortex_array::scalar::Scalar, _expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::Scalar::extension(options: ::Metadata, storage_scalar: vortex_array::scalar::Scalar) -> Self +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::mask::Mask -pub fn vortex_array::scalar::Scalar::extension_ref(ext_dtype: vortex_array::dtype::extension::ExtDTypeRef, storage_scalar: vortex_array::scalar::Scalar) -> Self +pub type vortex_array::scalar_fn::fns::mask::Mask::Options = vortex_array::scalar_fn::EmptyOptions -pub fn vortex_array::scalar::Scalar::fixed_size_list(element_dtype: impl core::convert::Into>, children: alloc::vec::Vec, nullability: vortex_array::dtype::Nullability) -> Self +pub fn vortex_array::scalar_fn::fns::mask::Mask::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity -pub fn vortex_array::scalar::Scalar::list(element_dtype: impl core::convert::Into>, children: alloc::vec::Vec, nullability: vortex_array::dtype::Nullability) -> Self +pub fn vortex_array::scalar_fn::fns::mask::Mask::child_name(&self, _options: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -pub fn vortex_array::scalar::Scalar::list_empty(element_dtype: alloc::sync::Arc, nullability: vortex_array::dtype::Nullability) -> Self +pub fn vortex_array::scalar_fn::fns::mask::Mask::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::Scalar::primitive>(value: T, nullability: vortex_array::dtype::Nullability) -> Self +pub fn vortex_array::scalar_fn::fns::mask::Mask::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar::Scalar::primitive_value(value: vortex_array::scalar::PValue, ptype: vortex_array::dtype::PType, nullability: vortex_array::dtype::Nullability) -> Self +pub fn vortex_array::scalar_fn::fns::mask::Mask::execute(&self, _options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar::Scalar::try_utf8(str: B, nullability: vortex_array::dtype::Nullability) -> core::result::Result>::Error> where B: core::convert::TryInto +pub fn vortex_array::scalar_fn::fns::mask::Mask::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::scalar::Scalar::utf8(str: B, nullability: vortex_array::dtype::Nullability) -> Self where B: core::convert::Into +pub fn vortex_array::scalar_fn::fns::mask::Mask::id(&self) -> vortex_array::scalar_fn::ScalarFnId -pub fn vortex_array::scalar::Scalar::variant(value: vortex_array::scalar::Scalar) -> Self +pub fn vortex_array::scalar_fn::fns::mask::Mask::is_fallible(&self, options: &Self::Options) -> bool -impl vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::mask::Mask::is_null_sensitive(&self, options: &Self::Options) -> bool -pub fn vortex_array::scalar::Scalar::cast(&self, target_dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::mask::Mask::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::Scalar::into_nullable(self) -> vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::mask::Mask::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -impl vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::mask::Mask::serialize(&self, _options: &Self::Options) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar::Scalar::from_proto(value: &vortex_proto::scalar::Scalar, session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::mask::Mask::simplify(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::Scalar::from_proto_value(value: &vortex_proto::scalar::ScalarValue, dtype: &vortex_array::dtype::DType, session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::mask::Mask::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -impl vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::mask::Mask::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::scalar::Scalar::struct_(dtype: vortex_array::dtype::DType, children: impl core::iter::traits::collect::IntoIterator) -> Self +pub fn vortex_array::scalar_fn::fns::mask::Mask::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub unsafe fn vortex_array::scalar::Scalar::struct_unchecked(dtype: vortex_array::dtype::DType, children: impl core::iter::traits::collect::IntoIterator) -> Self +pub fn vortex_array::scalar_fn::fns::mask::Mask::validity(&self, _options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -impl vortex_array::scalar::Scalar +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::merge::Merge -pub fn vortex_array::scalar::Scalar::validate(dtype: &vortex_array::dtype::DType, value: core::option::Option<&vortex_array::scalar::ScalarValue>) -> vortex_error::VortexResult<()> +pub type vortex_array::scalar_fn::fns::merge::Merge::Options = vortex_array::scalar_fn::fns::merge::DuplicateHandling -impl core::clone::Clone for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::merge::Merge::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity -pub fn vortex_array::scalar::Scalar::clone(&self) -> vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::merge::Merge::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -impl core::cmp::Eq for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::merge::Merge::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -impl core::cmp::PartialEq for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::merge::Merge::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar::Scalar::eq(&self, other: &Self) -> bool +pub fn vortex_array::scalar_fn::fns::merge::Merge::execute(&self, options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::cmp::PartialOrd for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::merge::Merge::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::scalar::Scalar::partial_cmp(&self, other: &Self) -> core::option::Option +pub fn vortex_array::scalar_fn::fns::merge::Merge::id(&self) -> vortex_array::scalar_fn::ScalarFnId -impl core::convert::From<&[u8]> for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::merge::Merge::is_fallible(&self, instance: &Self::Options) -> bool -pub fn vortex_array::scalar::Scalar::from(value: &[u8]) -> Self +pub fn vortex_array::scalar_fn::fns::merge::Merge::is_null_sensitive(&self, _instance: &Self::Options) -> bool -impl core::convert::From<&str> for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::merge::Merge::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::Scalar::from(value: &str) -> Self +pub fn vortex_array::scalar_fn::fns::merge::Merge::return_dtype(&self, options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -impl core::convert::From<&vortex_array::scalar::Scalar> for vortex_proto::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::merge::Merge::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> -pub fn vortex_proto::scalar::Scalar::from(value: &vortex_array::scalar::Scalar) -> Self +pub fn vortex_array::scalar_fn::fns::merge::Merge::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -impl core::convert::From for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::merge::Merge::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::Scalar::from(value: alloc::string::String) -> Self +pub fn vortex_array::scalar_fn::fns::merge::Merge::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -impl core::convert::From for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::merge::Merge::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::scalar::Scalar::from(value: bool) -> Self +pub fn vortex_array::scalar_fn::fns::merge::Merge::validity(&self, _options: &Self::Options, _expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -impl core::convert::From> for vortex_array::scalar::Scalar +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::not::Not -pub fn vortex_array::scalar::Scalar::from(value: core::option::Option<&[u8]>) -> Self +pub type vortex_array::scalar_fn::fns::not::Not::Options = vortex_array::scalar_fn::EmptyOptions -impl core::convert::From> for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::not::Not::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity -pub fn vortex_array::scalar::Scalar::from(value: core::option::Option<&str>) -> Self +pub fn vortex_array::scalar_fn::fns::not::Not::child_name(&self, _options: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -impl core::convert::From> for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::not::Not::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self +pub fn vortex_array::scalar_fn::fns::not::Not::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl core::convert::From> for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::not::Not::execute(&self, _data: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self +pub fn vortex_array::scalar_fn::fns::not::Not::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::convert::From> for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::not::Not::id(&self) -> vortex_array::scalar_fn::ScalarFnId -pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self +pub fn vortex_array::scalar_fn::fns::not::Not::is_fallible(&self, _options: &Self::Options) -> bool -impl core::convert::From> for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::not::Not::is_null_sensitive(&self, _options: &Self::Options) -> bool -pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self +pub fn vortex_array::scalar_fn::fns::not::Not::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -impl core::convert::From> for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::not::Not::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self +pub fn vortex_array::scalar_fn::fns::not::Not::serialize(&self, _options: &Self::Options) -> vortex_error::VortexResult>> -impl core::convert::From> for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::not::Not::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self +pub fn vortex_array::scalar_fn::fns::not::Not::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -impl core::convert::From> for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::not::Not::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self +pub fn vortex_array::scalar_fn::fns::not::Not::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -impl core::convert::From> for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::not::Not::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::pack::Pack -impl core::convert::From> for vortex_array::scalar::Scalar +pub type vortex_array::scalar_fn::fns::pack::Pack::Options = vortex_array::scalar_fn::fns::pack::PackOptions -pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self +pub fn vortex_array::scalar_fn::fns::pack::Pack::arity(&self, options: &Self::Options) -> vortex_array::scalar_fn::Arity -impl core::convert::From> for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::pack::Pack::child_name(&self, instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self +pub fn vortex_array::scalar_fn::fns::pack::Pack::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -impl core::convert::From> for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::pack::Pack::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self +pub fn vortex_array::scalar_fn::fns::pack::Pack::execute(&self, options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::convert::From> for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::pack::Pack::fmt_sql(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self +pub fn vortex_array::scalar_fn::fns::pack::Pack::id(&self) -> vortex_array::scalar_fn::ScalarFnId -impl core::convert::From> for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::pack::Pack::is_fallible(&self, _instance: &Self::Options) -> bool -pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self +pub fn vortex_array::scalar_fn::fns::pack::Pack::is_null_sensitive(&self, _instance: &Self::Options) -> bool -impl core::convert::From> for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::pack::Pack::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self +pub fn vortex_array::scalar_fn::fns::pack::Pack::return_dtype(&self, options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -impl core::convert::From> for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::pack::Pack::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self +pub fn vortex_array::scalar_fn::fns::pack::Pack::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -impl core::convert::From>> for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::pack::Pack::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self +pub fn vortex_array::scalar_fn::fns::pack::Pack::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -impl core::convert::From> for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::pack::Pack::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::scalar::Scalar::from(value: core::option::Option) -> Self +pub fn vortex_array::scalar_fn::fns::pack::Pack::validity(&self, _options: &Self::Options, _expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -impl core::convert::From for vortex_array::scalar::Scalar +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::root::Root -pub fn vortex_array::scalar::Scalar::from(value: f32) -> Self +pub type vortex_array::scalar_fn::fns::root::Root::Options = vortex_array::scalar_fn::EmptyOptions -impl core::convert::From for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::root::Root::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity -pub fn vortex_array::scalar::Scalar::from(value: f64) -> Self +pub fn vortex_array::scalar_fn::fns::root::Root::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -impl core::convert::From for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::root::Root::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::Scalar::from(value: half::binary16::f16) -> Self +pub fn vortex_array::scalar_fn::fns::root::Root::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl core::convert::From for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::root::Root::execute(&self, _data: &Self::Options, _args: &dyn vortex_array::scalar_fn::ExecutionArgs, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar::Scalar::from(value: i16) -> Self +pub fn vortex_array::scalar_fn::fns::root::Root::fmt_sql(&self, _options: &Self::Options, _expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::convert::From for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::root::Root::id(&self) -> vortex_array::scalar_fn::ScalarFnId -pub fn vortex_array::scalar::Scalar::from(value: i32) -> Self +pub fn vortex_array::scalar_fn::fns::root::Root::is_fallible(&self, _options: &Self::Options) -> bool -impl core::convert::From for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::root::Root::is_null_sensitive(&self, _options: &Self::Options) -> bool -pub fn vortex_array::scalar::Scalar::from(value: i64) -> Self +pub fn vortex_array::scalar_fn::fns::root::Root::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -impl core::convert::From for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::root::Root::return_dtype(&self, _options: &Self::Options, _arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -pub fn vortex_array::scalar::Scalar::from(value: i8) -> Self +pub fn vortex_array::scalar_fn::fns::root::Root::serialize(&self, _instance: &Self::Options) -> vortex_error::VortexResult>> -impl core::convert::From for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::root::Root::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::Scalar::from(value: u16) -> Self +pub fn vortex_array::scalar_fn::fns::root::Root::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -impl core::convert::From for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::root::Root::stat_expression(&self, _options: &Self::Options, _expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn vortex_array::scalar::Scalar::from(value: u32) -> Self +pub fn vortex_array::scalar_fn::fns::root::Root::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -impl core::convert::From for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::root::Root::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::Scalar::from(value: u64) -> Self +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::select::Select -impl core::convert::From for vortex_array::scalar::Scalar +pub type vortex_array::scalar_fn::fns::select::Select::Options = vortex_array::scalar_fn::fns::select::FieldSelection -pub fn vortex_array::scalar::Scalar::from(value: u8) -> Self +pub fn vortex_array::scalar_fn::fns::select::Select::arity(&self, _options: &vortex_array::scalar_fn::fns::select::FieldSelection) -> vortex_array::scalar_fn::Arity -impl core::convert::From for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::select::Select::child_name(&self, _instance: &vortex_array::scalar_fn::fns::select::FieldSelection, child_idx: usize) -> vortex_array::scalar_fn::ChildName -pub fn vortex_array::scalar::Scalar::from(value: usize) -> Self +pub fn vortex_array::scalar_fn::fns::select::Select::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -impl core::convert::From> for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::select::Select::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar::Scalar::from(ds: vortex_array::scalar::DecimalScalar<'_>) -> Self +pub fn vortex_array::scalar_fn::fns::select::Select::execute(&self, selection: &vortex_array::scalar_fn::fns::select::FieldSelection, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::convert::From for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::select::Select::fmt_sql(&self, selection: &vortex_array::scalar_fn::fns::select::FieldSelection, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::scalar::Scalar::from(value: vortex_array::scalar::DecimalValue) -> Self +pub fn vortex_array::scalar_fn::fns::select::Select::id(&self) -> vortex_array::scalar_fn::ScalarFnId -impl core::convert::From> for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::select::Select::is_fallible(&self, _instance: &vortex_array::scalar_fn::fns::select::FieldSelection) -> bool -pub fn vortex_array::scalar::Scalar::from(ps: vortex_array::scalar::PrimitiveScalar<'_>) -> Self +pub fn vortex_array::scalar_fn::fns::select::Select::is_null_sensitive(&self, _instance: &vortex_array::scalar_fn::fns::select::FieldSelection) -> bool -impl core::convert::From> for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::select::Select::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::Scalar::from(value: vortex_buffer::ByteBuffer) -> Self +pub fn vortex_array::scalar_fn::fns::select::Select::return_dtype(&self, selection: &vortex_array::scalar_fn::fns::select::FieldSelection, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -impl core::convert::From for vortex_array::scalar::Scalar +pub fn vortex_array::scalar_fn::fns::select::Select::serialize(&self, instance: &vortex_array::scalar_fn::fns::select::FieldSelection) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar::Scalar::from(value: vortex_buffer::string::BufferString) -> Self +pub fn vortex_array::scalar_fn::fns::select::Select::simplify(&self, selection: &vortex_array::scalar_fn::fns::select::FieldSelection, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for alloc::sync::Arc +pub fn vortex_array::scalar_fn::fns::select::Select::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub type alloc::sync::Arc::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::select::Select::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub fn alloc::sync::Arc::try_from(value: &vortex_array::scalar::Scalar) -> core::result::Result, Self::Error> +pub fn vortex_array::scalar_fn::fns::select::Select::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for bool +pub fn vortex_array::scalar_fn::fns::select::Select::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub type bool::Error = vortex_error::VortexError +impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::zip::Zip -pub fn bool::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub type vortex_array::scalar_fn::fns::zip::Zip::Options = vortex_array::scalar_fn::EmptyOptions -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option +pub fn vortex_array::scalar_fn::fns::zip::Zip::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity -pub type core::option::Option::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::zip::Zip::child_name(&self, _options: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName -pub fn core::option::Option::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::zip::Zip::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option +pub fn vortex_array::scalar_fn::fns::zip::Zip::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type core::option::Option::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::zip::Zip::execute(&self, _options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn core::option::Option::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::zip::Zip::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option +pub fn vortex_array::scalar_fn::fns::zip::Zip::id(&self) -> vortex_array::scalar_fn::ScalarFnId -pub type core::option::Option::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::zip::Zip::is_fallible(&self, _options: &Self::Options) -> bool -pub fn core::option::Option::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::zip::Zip::is_null_sensitive(&self, _options: &Self::Options) -> bool -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option +pub fn vortex_array::scalar_fn::fns::zip::Zip::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> -pub type core::option::Option::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::zip::Zip::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult -pub fn core::option::Option::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::zip::Zip::serialize(&self, _options: &Self::Options) -> vortex_error::VortexResult>> -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option +pub fn vortex_array::scalar_fn::fns::zip::Zip::simplify(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, _ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> -pub type core::option::Option::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::zip::Zip::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn core::option::Option::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::fns::zip::Zip::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option +pub fn vortex_array::scalar_fn::fns::zip::Zip::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option -pub type core::option::Option::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::fns::zip::Zip::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> -pub fn core::option::Option::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub trait vortex_array::scalar_fn::ScalarFnVTableExt: vortex_array::scalar_fn::ScalarFnVTable -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option +pub fn vortex_array::scalar_fn::ScalarFnVTableExt::bind(&self, options: Self::Options) -> vortex_array::scalar_fn::ScalarFnRef -pub type core::option::Option::Error = vortex_error::VortexError +pub fn vortex_array::scalar_fn::ScalarFnVTableExt::new_expr(&self, options: Self::Options, children: impl core::iter::traits::collect::IntoIterator) -> vortex_array::expr::Expression -pub fn core::option::Option::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::ScalarFnVTableExt::try_new_expr(&self, options: Self::Options, children: impl core::iter::traits::collect::IntoIterator) -> vortex_error::VortexResult -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option +impl vortex_array::scalar_fn::ScalarFnVTableExt for V -pub type core::option::Option::Error = vortex_error::VortexError +pub fn V::bind(&self, options: Self::Options) -> vortex_array::scalar_fn::ScalarFnRef -pub fn core::option::Option::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn V::new_expr(&self, options: Self::Options, children: impl core::iter::traits::collect::IntoIterator) -> vortex_array::expr::Expression -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option +pub fn V::try_new_expr(&self, options: Self::Options, children: impl core::iter::traits::collect::IntoIterator) -> vortex_error::VortexResult -pub type core::option::Option::Error = vortex_error::VortexError +pub trait vortex_array::scalar_fn::SimplifyCtx -pub fn core::option::Option::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_array::scalar_fn::SimplifyCtx::return_dtype(&self, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option +pub type vortex_array::scalar_fn::ChildName = arcref::ArcRef -pub type core::option::Option::Error = vortex_error::VortexError +pub type vortex_array::scalar_fn::ReduceNodeRef = alloc::sync::Arc -pub fn core::option::Option::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub type vortex_array::scalar_fn::ScalarFnId = arcref::ArcRef -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option +pub type vortex_array::scalar_fn::ScalarFnPluginRef = alloc::sync::Arc -pub type core::option::Option::Error = vortex_error::VortexError +pub mod vortex_array::search_sorted -pub fn core::option::Option::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub enum vortex_array::search_sorted::SearchResult -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option +pub vortex_array::search_sorted::SearchResult::Found(usize) -pub type core::option::Option::Error = vortex_error::VortexError +pub vortex_array::search_sorted::SearchResult::NotFound(usize) -pub fn core::option::Option::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult +impl vortex_array::search_sorted::SearchResult -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option +pub fn vortex_array::search_sorted::SearchResult::to_ends_index(self, len: usize) -> usize -pub type core::option::Option::Error = vortex_error::VortexError +pub fn vortex_array::search_sorted::SearchResult::to_found(self) -> core::option::Option -pub fn core::option::Option::try_from(value: &vortex_array::scalar::Scalar) -> core::result::Result +pub fn vortex_array::search_sorted::SearchResult::to_index(self) -> usize -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for core::option::Option +pub fn vortex_array::search_sorted::SearchResult::to_offsets_index(self, len: usize, side: vortex_array::search_sorted::SearchSortedSide) -> usize -pub type core::option::Option::Error = vortex_error::VortexError +impl core::clone::Clone for vortex_array::search_sorted::SearchResult -pub fn core::option::Option::try_from(scalar: &vortex_array::scalar::Scalar) -> core::result::Result +pub fn vortex_array::search_sorted::SearchResult::clone(&self) -> vortex_array::search_sorted::SearchResult -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for f32 +impl core::cmp::Eq for vortex_array::search_sorted::SearchResult -pub type f32::Error = vortex_error::VortexError +impl core::cmp::PartialEq for vortex_array::search_sorted::SearchResult -pub fn f32::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_array::search_sorted::SearchResult::eq(&self, other: &vortex_array::search_sorted::SearchResult) -> bool -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for f64 +impl core::fmt::Debug for vortex_array::search_sorted::SearchResult -pub type f64::Error = vortex_error::VortexError +pub fn vortex_array::search_sorted::SearchResult::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn f64::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult +impl core::fmt::Display for vortex_array::search_sorted::SearchResult -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for half::binary16::f16 +pub fn vortex_array::search_sorted::SearchResult::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub type half::binary16::f16::Error = vortex_error::VortexError +impl core::marker::Copy for vortex_array::search_sorted::SearchResult -pub fn half::binary16::f16::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult +impl core::marker::StructuralPartialEq for vortex_array::search_sorted::SearchResult -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for i16 +pub enum vortex_array::search_sorted::SearchSortedSide -pub type i16::Error = vortex_error::VortexError +pub vortex_array::search_sorted::SearchSortedSide::Left -pub fn i16::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub vortex_array::search_sorted::SearchSortedSide::Right -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for i32 +impl core::clone::Clone for vortex_array::search_sorted::SearchSortedSide -pub type i32::Error = vortex_error::VortexError +pub fn vortex_array::search_sorted::SearchSortedSide::clone(&self) -> vortex_array::search_sorted::SearchSortedSide -pub fn i32::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult +impl core::cmp::Eq for vortex_array::search_sorted::SearchSortedSide -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for i64 +impl core::cmp::PartialEq for vortex_array::search_sorted::SearchSortedSide -pub type i64::Error = vortex_error::VortexError +pub fn vortex_array::search_sorted::SearchSortedSide::eq(&self, other: &vortex_array::search_sorted::SearchSortedSide) -> bool -pub fn i64::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult +impl core::fmt::Debug for vortex_array::search_sorted::SearchSortedSide -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for i8 +pub fn vortex_array::search_sorted::SearchSortedSide::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub type i8::Error = vortex_error::VortexError +impl core::fmt::Display for vortex_array::search_sorted::SearchSortedSide -pub fn i8::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_array::search_sorted::SearchSortedSide::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for u16 +impl core::marker::Copy for vortex_array::search_sorted::SearchSortedSide -pub type u16::Error = vortex_error::VortexError +impl core::marker::StructuralPartialEq for vortex_array::search_sorted::SearchSortedSide -pub fn u16::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub trait vortex_array::search_sorted::IndexOrd -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for u32 +pub fn vortex_array::search_sorted::IndexOrd::index_cmp(&self, idx: usize, elem: &V) -> vortex_error::VortexResult> -pub type u32::Error = vortex_error::VortexError +pub fn vortex_array::search_sorted::IndexOrd::index_ge(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub fn u32::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_array::search_sorted::IndexOrd::index_gt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for u64 +pub fn vortex_array::search_sorted::IndexOrd::index_le(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub type u64::Error = vortex_error::VortexError +pub fn vortex_array::search_sorted::IndexOrd::index_len(&self) -> usize -pub fn u64::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_array::search_sorted::IndexOrd::index_lt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for u8 +impl vortex_array::search_sorted::IndexOrd> for vortex_array::variants::PrimitiveTyped<'_> -pub type u8::Error = vortex_error::VortexError +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_cmp(&self, idx: usize, elem: &core::option::Option) -> vortex_error::VortexResult> -pub fn u8::try_from(value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_ge(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for usize +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_gt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub type usize::Error = vortex_error::VortexError +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_le(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub fn usize::try_from(value: &vortex_array::scalar::Scalar) -> core::result::Result +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_len(&self) -> usize -impl core::convert::TryFrom<&vortex_array::scalar::Scalar> for vortex_array::scalar::DecimalValue +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_lt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub type vortex_array::scalar::DecimalValue::Error = vortex_error::VortexError +impl vortex_array::search_sorted::IndexOrd for vortex_array::variants::PrimitiveTyped<'_> -pub fn vortex_array::scalar::DecimalValue::try_from(scalar: &vortex_array::scalar::Scalar) -> core::result::Result +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_cmp(&self, idx: usize, elem: &vortex_array::scalar::PValue) -> vortex_error::VortexResult> -impl core::convert::TryFrom for alloc::string::String +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_ge(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub type alloc::string::String::Error = vortex_error::VortexError +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_gt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub fn alloc::string::String::try_from(value: vortex_array::scalar::Scalar) -> core::result::Result +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_le(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -impl core::convert::TryFrom for bool +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_len(&self) -> usize -pub type bool::Error = vortex_error::VortexError +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_lt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub fn bool::try_from(value: vortex_array::scalar::Scalar) -> vortex_error::VortexResult +impl vortex_array::search_sorted::IndexOrd for vortex_array::ArrayRef -impl core::convert::TryFrom for core::option::Option +pub fn vortex_array::ArrayRef::index_cmp(&self, idx: usize, elem: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult> -pub type core::option::Option::Error = vortex_error::VortexError +pub fn vortex_array::ArrayRef::index_ge(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub fn core::option::Option::try_from(value: vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::index_gt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -impl core::convert::TryFrom for core::option::Option +pub fn vortex_array::ArrayRef::index_le(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub type core::option::Option::Error = vortex_error::VortexError +pub fn vortex_array::ArrayRef::index_len(&self) -> usize -pub fn core::option::Option::try_from(scalar: vortex_array::scalar::Scalar) -> core::result::Result +pub fn vortex_array::ArrayRef::index_lt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -impl core::convert::TryFrom for core::option::Option +impl vortex_array::search_sorted::IndexOrd for [T] -pub type core::option::Option::Error = vortex_error::VortexError +pub fn [T]::index_cmp(&self, idx: usize, elem: &T) -> vortex_error::VortexResult> -pub fn core::option::Option::try_from(scalar: vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn [T]::index_ge(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -impl core::convert::TryFrom for core::option::Option +pub fn [T]::index_gt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub type core::option::Option::Error = vortex_error::VortexError +pub fn [T]::index_le(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub fn core::option::Option::try_from(scalar: vortex_array::scalar::Scalar) -> core::result::Result +pub fn [T]::index_len(&self) -> usize -impl core::convert::TryFrom for vortex_array::scalar::DecimalValue +pub fn [T]::index_lt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub type vortex_array::scalar::DecimalValue::Error = vortex_error::VortexError +pub trait vortex_array::search_sorted::SearchSorted -pub fn vortex_array::scalar::DecimalValue::try_from(scalar: vortex_array::scalar::Scalar) -> core::result::Result +pub fn vortex_array::search_sorted::SearchSorted::search_sorted(&self, value: &T, side: vortex_array::search_sorted::SearchSortedSide) -> vortex_error::VortexResult where Self: vortex_array::search_sorted::IndexOrd -impl core::convert::TryFrom for vortex_buffer::ByteBuffer +pub fn vortex_array::search_sorted::SearchSorted::search_sorted_by vortex_error::VortexResult, N: core::ops::function::FnMut(usize) -> vortex_error::VortexResult>(&self, find: F, side_find: N, side: vortex_array::search_sorted::SearchSortedSide) -> vortex_error::VortexResult -pub type vortex_buffer::ByteBuffer::Error = vortex_error::VortexError +impl vortex_array::search_sorted::SearchSorted for S where S: vortex_array::search_sorted::IndexOrd + ?core::marker::Sized -pub fn vortex_buffer::ByteBuffer::try_from(scalar: vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn S::search_sorted(&self, value: &T, side: vortex_array::search_sorted::SearchSortedSide) -> vortex_error::VortexResult where Self: vortex_array::search_sorted::IndexOrd -impl core::convert::TryFrom for vortex_buffer::string::BufferString +pub fn S::search_sorted_by(&self, find: F, side_find: N, side: vortex_array::search_sorted::SearchSortedSide) -> core::result::Result where F: core::ops::function::FnMut(usize) -> core::result::Result, N: core::ops::function::FnMut(usize) -> core::result::Result -pub type vortex_buffer::string::BufferString::Error = vortex_error::VortexError +pub mod vortex_array::serde -pub fn vortex_buffer::string::BufferString::try_from(scalar: vortex_array::scalar::Scalar) -> core::result::Result +pub struct vortex_array::serde::ArrayNodeFlatBuffer<'a> -impl core::fmt::Debug for vortex_array::scalar::Scalar +impl<'a> vortex_array::serde::ArrayNodeFlatBuffer<'a> -pub fn vortex_array::scalar::Scalar::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::serde::ArrayNodeFlatBuffer<'a>::try_new(ctx: &'a vortex_array::ArrayContext, array: &'a vortex_array::ArrayRef) -> vortex_error::VortexResult -impl core::fmt::Display for vortex_array::scalar::Scalar +pub fn vortex_array::serde::ArrayNodeFlatBuffer<'a>::try_write_flatbuffer<'fb>(&self, fbb: &mut flatbuffers::builder::FlatBufferBuilder<'fb>) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar::Scalar::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub struct vortex_array::serde::ArrayParts -impl core::hash::Hash for vortex_array::scalar::Scalar +impl vortex_array::serde::ArrayParts -pub fn vortex_array::scalar::Scalar::hash(&self, state: &mut H) +pub fn vortex_array::serde::ArrayParts::buffer(&self, idx: usize) -> vortex_error::VortexResult -impl vortex_array::search_sorted::IndexOrd for (dyn vortex_array::DynArray + '_) +pub fn vortex_array::serde::ArrayParts::buffer_lengths(&self) -> alloc::vec::Vec -pub fn (dyn vortex_array::DynArray + '_)::index_cmp(&self, idx: usize, elem: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult> +pub fn vortex_array::serde::ArrayParts::child(&self, idx: usize) -> vortex_array::serde::ArrayParts -pub fn (dyn vortex_array::DynArray + '_)::index_ge(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::serde::ArrayParts::decode(&self, dtype: &vortex_array::dtype::DType, len: usize, ctx: &vortex_session::registry::ReadContext, session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn (dyn vortex_array::DynArray + '_)::index_gt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::serde::ArrayParts::encoding_id(&self) -> u16 -pub fn (dyn vortex_array::DynArray + '_)::index_le(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::serde::ArrayParts::from_array_tree(array_tree: impl core::convert::Into) -> vortex_error::VortexResult -pub fn (dyn vortex_array::DynArray + '_)::index_len(&self) -> usize +pub fn vortex_array::serde::ArrayParts::from_flatbuffer_and_segment(array_tree: vortex_buffer::ByteBuffer, segment: vortex_array::buffer::BufferHandle) -> vortex_error::VortexResult -pub fn (dyn vortex_array::DynArray + '_)::index_lt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::serde::ArrayParts::from_flatbuffer_and_segment_with_overrides(array_tree: vortex_buffer::ByteBuffer, segment: vortex_array::buffer::BufferHandle, buffer_overrides: &vortex_utils::aliases::hash_map::HashMap) -> vortex_error::VortexResult -impl<'a, T> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for alloc::vec::Vec where T: for<'b> core::convert::TryFrom<&'b vortex_array::scalar::Scalar, Error = vortex_error::VortexError> +pub fn vortex_array::serde::ArrayParts::from_flatbuffer_with_buffers(array_tree: impl core::convert::Into, buffers: alloc::vec::Vec) -> vortex_error::VortexResult -pub type alloc::vec::Vec::Error = vortex_error::VortexError +pub fn vortex_array::serde::ArrayParts::metadata(&self) -> &[u8] -pub fn alloc::vec::Vec::try_from(value: &'a vortex_array::scalar::Scalar) -> core::result::Result +pub fn vortex_array::serde::ArrayParts::nbuffers(&self) -> usize -impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for alloc::string::String +pub fn vortex_array::serde::ArrayParts::nchildren(&self) -> usize -pub type alloc::string::String::Error = vortex_error::VortexError +impl core::clone::Clone for vortex_array::serde::ArrayParts -pub fn alloc::string::String::try_from(value: &'a vortex_array::scalar::Scalar) -> core::result::Result +pub fn vortex_array::serde::ArrayParts::clone(&self) -> vortex_array::serde::ArrayParts -impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for core::option::Option +impl core::convert::TryFrom for vortex_array::serde::ArrayParts -pub type core::option::Option::Error = vortex_error::VortexError +pub type vortex_array::serde::ArrayParts::Error = vortex_error::VortexError -pub fn core::option::Option::try_from(scalar: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_array::serde::ArrayParts::try_from(value: vortex_array::buffer::BufferHandle) -> core::result::Result -impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for core::option::Option +impl core::convert::TryFrom> for vortex_array::serde::ArrayParts -pub type core::option::Option::Error = vortex_error::VortexError +pub type vortex_array::serde::ArrayParts::Error = vortex_error::VortexError -pub fn core::option::Option::try_from(scalar: &'a vortex_array::scalar::Scalar) -> core::result::Result +pub fn vortex_array::serde::ArrayParts::try_from(value: vortex_buffer::ByteBuffer) -> core::result::Result -impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::BinaryScalar<'a> +impl core::fmt::Debug for vortex_array::serde::ArrayParts -pub type vortex_array::scalar::BinaryScalar<'a>::Error = vortex_error::VortexError +pub fn vortex_array::serde::ArrayParts::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::scalar::BinaryScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub struct vortex_array::serde::SerializeOptions -impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::BoolScalar<'a> +pub vortex_array::serde::SerializeOptions::include_padding: bool -pub type vortex_array::scalar::BoolScalar<'a>::Error = vortex_error::VortexError +pub vortex_array::serde::SerializeOptions::offset: usize -pub fn vortex_array::scalar::BoolScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult +impl core::default::Default for vortex_array::serde::SerializeOptions -impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::DecimalScalar<'a> +pub fn vortex_array::serde::SerializeOptions::default() -> vortex_array::serde::SerializeOptions -pub type vortex_array::scalar::DecimalScalar<'a>::Error = vortex_error::VortexError +impl core::fmt::Debug for vortex_array::serde::SerializeOptions -pub fn vortex_array::scalar::DecimalScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_array::serde::SerializeOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::ExtScalar<'a> +pub trait vortex_array::serde::ArrayChildren -pub type vortex_array::scalar::ExtScalar<'a>::Error = vortex_error::VortexError +pub fn vortex_array::serde::ArrayChildren::get(&self, index: usize, dtype: &vortex_array::dtype::DType, len: usize) -> vortex_error::VortexResult -pub fn vortex_array::scalar::ExtScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_array::serde::ArrayChildren::is_empty(&self) -> bool -impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::ListScalar<'a> +pub fn vortex_array::serde::ArrayChildren::len(&self) -> usize -pub type vortex_array::scalar::ListScalar<'a>::Error = vortex_error::VortexError +impl vortex_array::serde::ArrayChildren for &[vortex_array::ArrayRef] -pub fn vortex_array::scalar::ListScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn &[vortex_array::ArrayRef]::get(&self, index: usize, dtype: &vortex_array::dtype::DType, len: usize) -> vortex_error::VortexResult -impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::PrimitiveScalar<'a> +pub fn &[vortex_array::ArrayRef]::is_empty(&self) -> bool -pub type vortex_array::scalar::PrimitiveScalar<'a>::Error = vortex_error::VortexError +pub fn &[vortex_array::ArrayRef]::len(&self) -> usize -pub fn vortex_array::scalar::PrimitiveScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub mod vortex_array::session -impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::StructScalar<'a> +pub struct vortex_array::session::ArraySession -pub type vortex_array::scalar::StructScalar<'a>::Error = vortex_error::VortexError +impl vortex_array::session::ArraySession -pub fn vortex_array::scalar::StructScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_array::session::ArraySession::empty() -> vortex_array::session::ArraySession -impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::Utf8Scalar<'a> +pub fn vortex_array::session::ArraySession::register(&self, vtable: V) -pub type vortex_array::scalar::Utf8Scalar<'a>::Error = vortex_error::VortexError +pub fn vortex_array::session::ArraySession::registry(&self) -> &vortex_array::session::ArrayRegistry -pub fn vortex_array::scalar::Utf8Scalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult +impl core::default::Default for vortex_array::session::ArraySession -impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_buffer::ByteBuffer +pub fn vortex_array::session::ArraySession::default() -> Self -pub type vortex_buffer::ByteBuffer::Error = vortex_error::VortexError +impl core::fmt::Debug for vortex_array::session::ArraySession -pub fn vortex_buffer::ByteBuffer::try_from(scalar: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_array::session::ArraySession::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_buffer::string::BufferString +pub trait vortex_array::session::ArraySessionExt: vortex_session::SessionExt -pub type vortex_buffer::string::BufferString::Error = vortex_error::VortexError +pub fn vortex_array::session::ArraySessionExt::arrays(&self) -> vortex_session::Ref<'_, vortex_array::session::ArraySession> -pub fn vortex_buffer::string::BufferString::try_from(scalar: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult +impl vortex_array::session::ArraySessionExt for S -impl core::convert::From> for vortex_array::scalar::Scalar where T: vortex_array::dtype::NativeDType, vortex_array::scalar::Scalar: core::convert::From +pub fn S::arrays(&self) -> vortex_session::Ref<'_, vortex_array::session::ArraySession> -pub fn vortex_array::scalar::Scalar::from(vec: alloc::vec::Vec) -> Self +pub type vortex_array::session::ArrayRegistry = vortex_session::registry::Registry -impl core::convert::From>> for vortex_array::scalar::Scalar where T: vortex_array::dtype::NativeDType, vortex_array::scalar::Scalar: core::convert::From +pub mod vortex_array::stats -pub fn vortex_array::scalar::Scalar::from(vec: core::option::Option>) -> Self +pub mod vortex_array::stats::flatbuffers -impl core::convert::TryFrom for alloc::vec::Vec where T: for<'b> core::convert::TryFrom<&'b vortex_array::scalar::Scalar, Error = vortex_error::VortexError> +pub struct vortex_array::stats::ArrayStats -pub type alloc::vec::Vec::Error = vortex_error::VortexError +impl vortex_array::stats::ArrayStats -pub fn alloc::vec::Vec::try_from(value: vortex_array::scalar::Scalar) -> core::result::Result +pub fn vortex_array::stats::ArrayStats::clear(&self, stat: vortex_array::expr::stats::Stat) -pub struct vortex_array::scalar::StructScalar<'a> +pub fn vortex_array::stats::ArrayStats::retain(&self, stats: &[vortex_array::expr::stats::Stat]) -impl<'a> vortex_array::scalar::StructScalar<'a> +pub fn vortex_array::stats::ArrayStats::set(&self, stat: vortex_array::expr::stats::Stat, value: vortex_array::expr::stats::Precision) -pub fn vortex_array::scalar::StructScalar<'a>::cast(&self, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult +pub fn vortex_array::stats::ArrayStats::to_ref<'a>(&'a self, array: &'a vortex_array::ArrayRef) -> vortex_array::stats::StatsSetRef<'a> -pub fn vortex_array::scalar::StructScalar<'a>::dtype(&self) -> &'a vortex_array::dtype::DType +impl core::clone::Clone for vortex_array::stats::ArrayStats -pub fn vortex_array::scalar::StructScalar<'a>::field(&self, name: impl core::convert::AsRef) -> core::option::Option +pub fn vortex_array::stats::ArrayStats::clone(&self) -> vortex_array::stats::ArrayStats -pub fn vortex_array::scalar::StructScalar<'a>::field_by_idx(&self, idx: usize) -> core::option::Option +impl core::convert::From for vortex_array::stats::StatsSet -pub fn vortex_array::scalar::StructScalar<'a>::fields_iter(&self) -> core::option::Option> +pub fn vortex_array::stats::StatsSet::from(value: vortex_array::stats::ArrayStats) -> Self -pub fn vortex_array::scalar::StructScalar<'a>::is_null(&self) -> bool +impl core::convert::From for vortex_array::stats::ArrayStats -pub fn vortex_array::scalar::StructScalar<'a>::names(&self) -> &vortex_array::dtype::FieldNames +pub fn vortex_array::stats::ArrayStats::from(value: vortex_array::stats::StatsSet) -> Self -pub fn vortex_array::scalar::StructScalar<'a>::project(&self, projection: &[vortex_array::dtype::FieldName]) -> vortex_error::VortexResult +impl core::default::Default for vortex_array::stats::ArrayStats -pub fn vortex_array::scalar::StructScalar<'a>::struct_fields(&self) -> &vortex_array::dtype::StructFields +pub fn vortex_array::stats::ArrayStats::default() -> vortex_array::stats::ArrayStats -impl core::cmp::Eq for vortex_array::scalar::StructScalar<'_> +impl core::fmt::Debug for vortex_array::stats::ArrayStats -impl core::cmp::PartialEq for vortex_array::scalar::StructScalar<'_> +pub fn vortex_array::stats::ArrayStats::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::scalar::StructScalar<'_>::eq(&self, other: &Self) -> bool +pub struct vortex_array::stats::MutTypedStatsSetRef<'a, 'b> -impl core::cmp::PartialOrd for vortex_array::scalar::StructScalar<'_> +pub vortex_array::stats::MutTypedStatsSetRef::dtype: &'b vortex_array::dtype::DType -pub fn vortex_array::scalar::StructScalar<'_>::partial_cmp(&self, other: &Self) -> core::option::Option +pub vortex_array::stats::MutTypedStatsSetRef::values: &'a mut vortex_array::stats::StatsSet -impl core::fmt::Display for vortex_array::scalar::StructScalar<'_> +impl vortex_array::stats::MutTypedStatsSetRef<'_, '_> -pub fn vortex_array::scalar::StructScalar<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::stats::MutTypedStatsSetRef<'_, '_>::clear(&mut self, stat: vortex_array::expr::stats::Stat) -impl core::hash::Hash for vortex_array::scalar::StructScalar<'_> +pub fn vortex_array::stats::MutTypedStatsSetRef<'_, '_>::set(&mut self, stat: vortex_array::expr::stats::Stat, value: vortex_array::expr::stats::Precision) -pub fn vortex_array::scalar::StructScalar<'_>::hash(&self, state: &mut H) +impl vortex_array::stats::MutTypedStatsSetRef<'_, '_> -impl<'a> core::clone::Clone for vortex_array::scalar::StructScalar<'a> +pub fn vortex_array::stats::MutTypedStatsSetRef<'_, '_>::combine_sets(&mut self, other: &vortex_array::stats::TypedStatsSetRef<'_, '_>) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar::StructScalar<'a>::clone(&self) -> vortex_array::scalar::StructScalar<'a> +pub fn vortex_array::stats::MutTypedStatsSetRef<'_, '_>::merge_ordered(self, other: &vortex_array::stats::TypedStatsSetRef<'_, '_>) -> Self -impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::StructScalar<'a> +pub fn vortex_array::stats::MutTypedStatsSetRef<'_, '_>::merge_unordered(self, other: &vortex_array::stats::TypedStatsSetRef<'_, '_>) -> Self -pub type vortex_array::scalar::StructScalar<'a>::Error = vortex_error::VortexError +impl vortex_array::expr::stats::StatsProvider for vortex_array::stats::MutTypedStatsSetRef<'_, '_> -pub fn vortex_array::scalar::StructScalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_array::stats::MutTypedStatsSetRef<'_, '_>::get(&self, stat: vortex_array::expr::stats::Stat) -> core::option::Option> -impl<'a> core::fmt::Debug for vortex_array::scalar::StructScalar<'a> +pub fn vortex_array::stats::MutTypedStatsSetRef<'_, '_>::is_empty(&self) -> bool -pub fn vortex_array::scalar::StructScalar<'a>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::stats::MutTypedStatsSetRef<'_, '_>::len(&self) -> usize -pub struct vortex_array::scalar::Utf8Scalar<'a> +pub struct vortex_array::stats::StatsSet -impl<'a> vortex_array::scalar::Utf8Scalar<'a> +impl vortex_array::stats::StatsSet -pub fn vortex_array::scalar::Utf8Scalar<'a>::dtype(&self) -> &'a vortex_array::dtype::DType +pub fn vortex_array::stats::StatsSet::as_mut_typed_ref<'a, 'b>(&'a mut self, dtype: &'b vortex_array::dtype::DType) -> vortex_array::stats::MutTypedStatsSetRef<'a, 'b> -pub fn vortex_array::scalar::Utf8Scalar<'a>::is_empty(&self) -> core::option::Option +pub fn vortex_array::stats::StatsSet::as_typed_ref<'a, 'b>(&'a self, dtype: &'b vortex_array::dtype::DType) -> vortex_array::stats::TypedStatsSetRef<'a, 'b> -pub fn vortex_array::scalar::Utf8Scalar<'a>::len(&self) -> core::option::Option +pub unsafe fn vortex_array::stats::StatsSet::new_unchecked(values: alloc::vec::Vec<(vortex_array::expr::stats::Stat, vortex_array::expr::stats::Precision)>) -> Self -pub fn vortex_array::scalar::Utf8Scalar<'a>::try_new(dtype: &'a vortex_array::dtype::DType, value: core::option::Option<&'a vortex_array::scalar::ScalarValue>) -> vortex_error::VortexResult +pub fn vortex_array::stats::StatsSet::of(stat: vortex_array::expr::stats::Stat, value: vortex_array::expr::stats::Precision) -> Self -pub fn vortex_array::scalar::Utf8Scalar<'a>::value(&self) -> core::option::Option<&'a vortex_buffer::string::BufferString> +impl vortex_array::stats::StatsSet -impl core::cmp::Ord for vortex_array::scalar::Utf8Scalar<'_> +pub fn vortex_array::stats::StatsSet::clear(&mut self, stat: vortex_array::expr::stats::Stat) -pub fn vortex_array::scalar::Utf8Scalar<'_>::cmp(&self, other: &Self) -> core::cmp::Ordering +pub fn vortex_array::stats::StatsSet::get(&self, stat: vortex_array::expr::stats::Stat) -> core::option::Option> -impl core::cmp::PartialEq for vortex_array::scalar::Utf8Scalar<'_> +pub fn vortex_array::stats::StatsSet::get_as core::convert::TryFrom<&'a vortex_array::scalar::Scalar, Error = vortex_error::VortexError>>(&self, stat: vortex_array::expr::stats::Stat, dtype: &vortex_array::dtype::DType) -> core::option::Option> -pub fn vortex_array::scalar::Utf8Scalar<'_>::eq(&self, other: &Self) -> bool +pub fn vortex_array::stats::StatsSet::is_empty(&self) -> bool -impl core::cmp::PartialOrd for vortex_array::scalar::Utf8Scalar<'_> +pub fn vortex_array::stats::StatsSet::iter(&self) -> impl core::iter::traits::iterator::Iterator)> -pub fn vortex_array::scalar::Utf8Scalar<'_>::partial_cmp(&self, other: &Self) -> core::option::Option +pub fn vortex_array::stats::StatsSet::len(&self) -> usize -impl core::fmt::Display for vortex_array::scalar::Utf8Scalar<'_> +pub fn vortex_array::stats::StatsSet::retain_only(&mut self, stats: &[vortex_array::expr::stats::Stat]) -pub fn vortex_array::scalar::Utf8Scalar<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::stats::StatsSet::set(&mut self, stat: vortex_array::expr::stats::Stat, value: vortex_array::expr::stats::Precision) -impl<'a> core::clone::Clone for vortex_array::scalar::Utf8Scalar<'a> +impl vortex_array::stats::StatsSet -pub fn vortex_array::scalar::Utf8Scalar<'a>::clone(&self) -> vortex_array::scalar::Utf8Scalar<'a> +pub fn vortex_array::stats::StatsSet::combine_sets(&mut self, other: &Self, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult<()> -impl<'a> core::cmp::Eq for vortex_array::scalar::Utf8Scalar<'a> +pub fn vortex_array::stats::StatsSet::merge_ordered(self, other: &Self, dtype: &vortex_array::dtype::DType) -> Self -impl<'a> core::convert::TryFrom<&'a vortex_array::scalar::Scalar> for vortex_array::scalar::Utf8Scalar<'a> +pub fn vortex_array::stats::StatsSet::merge_unordered(self, other: &Self, dtype: &vortex_array::dtype::DType) -> Self -pub type vortex_array::scalar::Utf8Scalar<'a>::Error = vortex_error::VortexError +impl vortex_array::stats::StatsSet -pub fn vortex_array::scalar::Utf8Scalar<'a>::try_from(value: &'a vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_array::stats::StatsSet::from_flatbuffer<'a>(fb: &vortex_flatbuffers::array::ArrayStats<'a>, array_dtype: &vortex_array::dtype::DType, session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl<'a> core::fmt::Debug for vortex_array::scalar::Utf8Scalar<'a> +impl core::clone::Clone for vortex_array::stats::StatsSet -pub fn vortex_array::scalar::Utf8Scalar<'a>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::stats::StatsSet::clone(&self) -> vortex_array::stats::StatsSet -impl<'a> core::hash::Hash for vortex_array::scalar::Utf8Scalar<'a> +impl core::convert::From for vortex_array::stats::StatsSet -pub fn vortex_array::scalar::Utf8Scalar<'a>::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::stats::StatsSet::from(value: vortex_array::stats::ArrayStats) -> Self -pub struct vortex_array::scalar::VariantScalar<'a> +impl core::convert::From for vortex_array::stats::ArrayStats -impl<'a> vortex_array::scalar::VariantScalar<'a> +pub fn vortex_array::stats::ArrayStats::from(value: vortex_array::stats::StatsSet) -> Self -pub fn vortex_array::scalar::VariantScalar<'a>::dtype(&self) -> &'a vortex_array::dtype::DType +impl core::default::Default for vortex_array::stats::StatsSet -pub fn vortex_array::scalar::VariantScalar<'a>::is_null(&self) -> bool +pub fn vortex_array::stats::StatsSet::default() -> vortex_array::stats::StatsSet -pub fn vortex_array::scalar::VariantScalar<'a>::is_variant_null(&self) -> core::option::Option +impl core::fmt::Debug for vortex_array::stats::StatsSet -pub fn vortex_array::scalar::VariantScalar<'a>::is_zero(&self) -> core::option::Option +pub fn vortex_array::stats::StatsSet::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::scalar::VariantScalar<'a>::value(&self) -> core::option::Option<&'a vortex_array::scalar::Scalar> +impl core::iter::traits::collect::Extend<(vortex_array::expr::stats::Stat, vortex_array::expr::stats::Precision)> for vortex_array::stats::StatsSet -impl core::fmt::Display for vortex_array::scalar::VariantScalar<'_> +pub fn vortex_array::stats::StatsSet::extend)>>(&mut self, iter: T) -pub fn vortex_array::scalar::VariantScalar<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl core::iter::traits::collect::FromIterator<(vortex_array::expr::stats::Stat, vortex_array::expr::stats::Precision)> for vortex_array::stats::StatsSet -impl<'a> core::clone::Clone for vortex_array::scalar::VariantScalar<'a> +pub fn vortex_array::stats::StatsSet::from_iter)>>(iter: T) -> Self -pub fn vortex_array::scalar::VariantScalar<'a>::clone(&self) -> vortex_array::scalar::VariantScalar<'a> +impl core::iter::traits::collect::IntoIterator for vortex_array::stats::StatsSet -impl<'a> core::fmt::Debug for vortex_array::scalar::VariantScalar<'a> +pub type vortex_array::stats::StatsSet::IntoIter = vortex_array::stats::StatsSetIntoIter -pub fn vortex_array::scalar::VariantScalar<'a>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::stats::StatsSet::Item = (vortex_array::expr::stats::Stat, vortex_array::expr::stats::Precision) -impl<'a> core::marker::Copy for vortex_array::scalar::VariantScalar<'a> +pub fn vortex_array::stats::StatsSet::into_iter(self) -> Self::IntoIter -pub trait vortex_array::scalar::ScalarTruncation: core::marker::Send + core::marker::Sized +impl vortex_flatbuffers::WriteFlatBuffer for vortex_array::stats::StatsSet -pub fn vortex_array::scalar::ScalarTruncation::from_scalar(value: vortex_array::scalar::Scalar) -> vortex_error::VortexResult> +pub type vortex_array::stats::StatsSet::Target<'t> = vortex_flatbuffers::array::ArrayStats<'t> -pub fn vortex_array::scalar::ScalarTruncation::into_scalar(self, nullability: vortex_array::dtype::Nullability) -> vortex_array::scalar::Scalar +pub fn vortex_array::stats::StatsSet::write_flatbuffer<'fb>(&self, fbb: &mut flatbuffers::builder::FlatBufferBuilder<'fb>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar::ScalarTruncation::len(&self) -> usize +pub struct vortex_array::stats::StatsSetIntoIter(_) -pub fn vortex_array::scalar::ScalarTruncation::lower_bound(self, max_length: usize) -> Self +impl core::iter::traits::iterator::Iterator for vortex_array::stats::StatsSetIntoIter -pub fn vortex_array::scalar::ScalarTruncation::upper_bound(self, max_length: usize) -> core::option::Option +pub type vortex_array::stats::StatsSetIntoIter::Item = (vortex_array::expr::stats::Stat, vortex_array::expr::stats::Precision) -impl vortex_array::scalar::ScalarTruncation for vortex_buffer::ByteBuffer +pub fn vortex_array::stats::StatsSetIntoIter::next(&mut self) -> core::option::Option -pub fn vortex_buffer::ByteBuffer::from_scalar(value: vortex_array::scalar::Scalar) -> vortex_error::VortexResult> +pub struct vortex_array::stats::StatsSetRef<'a> -pub fn vortex_buffer::ByteBuffer::into_scalar(self, nullability: vortex_array::dtype::Nullability) -> vortex_array::scalar::Scalar +impl vortex_array::stats::StatsSetRef<'_> -pub fn vortex_buffer::ByteBuffer::len(&self) -> usize +pub fn vortex_array::stats::StatsSetRef<'_>::clear(&self, stat: vortex_array::expr::stats::Stat) -pub fn vortex_buffer::ByteBuffer::lower_bound(self, max_length: usize) -> Self +pub fn vortex_array::stats::StatsSetRef<'_>::compute_as core::convert::TryFrom<&'a vortex_array::scalar::Scalar, Error = vortex_error::VortexError>>(&self, stat: vortex_array::expr::stats::Stat) -> core::option::Option -pub fn vortex_buffer::ByteBuffer::upper_bound(self, max_length: usize) -> core::option::Option +pub fn vortex_array::stats::StatsSetRef<'_>::compute_is_constant(&self) -> core::option::Option -impl vortex_array::scalar::ScalarTruncation for vortex_buffer::string::BufferString +pub fn vortex_array::stats::StatsSetRef<'_>::compute_is_sorted(&self) -> core::option::Option -pub fn vortex_buffer::string::BufferString::from_scalar(value: vortex_array::scalar::Scalar) -> vortex_error::VortexResult> +pub fn vortex_array::stats::StatsSetRef<'_>::compute_is_strict_sorted(&self) -> core::option::Option -pub fn vortex_buffer::string::BufferString::into_scalar(self, nullability: vortex_array::dtype::Nullability) -> vortex_array::scalar::Scalar +pub fn vortex_array::stats::StatsSetRef<'_>::compute_max core::convert::TryFrom<&'a vortex_array::scalar::Scalar, Error = vortex_error::VortexError>>(&self) -> core::option::Option -pub fn vortex_buffer::string::BufferString::len(&self) -> usize +pub fn vortex_array::stats::StatsSetRef<'_>::compute_min core::convert::TryFrom<&'a vortex_array::scalar::Scalar, Error = vortex_error::VortexError>>(&self) -> core::option::Option -pub fn vortex_buffer::string::BufferString::lower_bound(self, max_length: usize) -> Self +pub fn vortex_array::stats::StatsSetRef<'_>::compute_null_count(&self) -> core::option::Option -pub fn vortex_buffer::string::BufferString::upper_bound(self, max_length: usize) -> core::option::Option +pub fn vortex_array::stats::StatsSetRef<'_>::compute_uncompressed_size_in_bytes(&self) -> core::option::Option -pub trait vortex_array::scalar::StringLike: vortex_array::scalar::typed_view::utf8::private::Sealed + core::marker::Sized +pub fn vortex_array::stats::StatsSetRef<'_>::set(&self, stat: vortex_array::expr::stats::Stat, value: vortex_array::expr::stats::Precision) -pub fn vortex_array::scalar::StringLike::increment(self) -> core::result::Result +impl vortex_array::stats::StatsSetRef<'_> -impl vortex_array::scalar::StringLike for alloc::string::String +pub fn vortex_array::stats::StatsSetRef<'_>::compute_all(&self, stats: &[vortex_array::expr::stats::Stat]) -> vortex_error::VortexResult -pub fn alloc::string::String::increment(self) -> core::result::Result +pub fn vortex_array::stats::StatsSetRef<'_>::compute_stat(&self, stat: vortex_array::expr::stats::Stat) -> vortex_error::VortexResult> -impl vortex_array::scalar::StringLike for vortex_buffer::string::BufferString +pub fn vortex_array::stats::StatsSetRef<'_>::inherit<'a>(&self, iter: impl core::iter::traits::iterator::Iterator)>) -pub fn vortex_buffer::string::BufferString::increment(self) -> core::result::Result +pub fn vortex_array::stats::StatsSetRef<'_>::inherit_from(&self, stats: vortex_array::stats::StatsSetRef<'_>) -pub fn vortex_array::scalar::lower_bound(value: core::option::Option, max_length: usize, nullability: vortex_array::dtype::Nullability) -> core::option::Option<(vortex_array::scalar::Scalar, bool)> +pub fn vortex_array::stats::StatsSetRef<'_>::set_iter(&self, iter: vortex_array::stats::StatsSetIntoIter) -pub fn vortex_array::scalar::upper_bound(value: core::option::Option, max_length: usize, nullability: vortex_array::dtype::Nullability) -> core::option::Option<(vortex_array::scalar::Scalar, bool)> +pub fn vortex_array::stats::StatsSetRef<'_>::to_array_stats(&self) -> vortex_array::stats::ArrayStats -pub mod vortex_array::scalar_fn +pub fn vortex_array::stats::StatsSetRef<'_>::to_owned(&self) -> vortex_array::stats::StatsSet -pub mod vortex_array::scalar_fn::fns +pub fn vortex_array::stats::StatsSetRef<'_>::with_iter core::ops::function::FnOnce(&mut dyn core::iter::traits::iterator::Iterator)>) -> R, R>(&self, f: F) -> R -pub mod vortex_array::scalar_fn::fns::between +pub fn vortex_array::stats::StatsSetRef<'_>::with_mut_typed_stats_set) -> U>(&self, apply: F) -> U -pub enum vortex_array::scalar_fn::fns::between::StrictComparison +pub fn vortex_array::stats::StatsSetRef<'_>::with_typed_stats_set) -> U>(&self, apply: F) -> U -pub vortex_array::scalar_fn::fns::between::StrictComparison::NonStrict +impl vortex_array::expr::stats::StatsProvider for vortex_array::stats::StatsSetRef<'_> -pub vortex_array::scalar_fn::fns::between::StrictComparison::Strict +pub fn vortex_array::stats::StatsSetRef<'_>::get(&self, stat: vortex_array::expr::stats::Stat) -> core::option::Option> -impl vortex_array::scalar_fn::fns::between::StrictComparison +pub fn vortex_array::stats::StatsSetRef<'_>::is_empty(&self) -> bool -pub const fn vortex_array::scalar_fn::fns::between::StrictComparison::is_strict(&self) -> bool +pub fn vortex_array::stats::StatsSetRef<'_>::len(&self) -> usize -pub const fn vortex_array::scalar_fn::fns::between::StrictComparison::to_compare_operator(&self) -> vortex_array::scalar_fn::fns::operators::CompareOperator +impl vortex_flatbuffers::WriteFlatBuffer for vortex_array::stats::StatsSetRef<'_> -pub const fn vortex_array::scalar_fn::fns::between::StrictComparison::to_operator(&self) -> vortex_array::scalar_fn::fns::operators::Operator +pub type vortex_array::stats::StatsSetRef<'_>::Target<'t> = vortex_flatbuffers::array::ArrayStats<'t> -impl core::clone::Clone for vortex_array::scalar_fn::fns::between::StrictComparison +pub fn vortex_array::stats::StatsSetRef<'_>::write_flatbuffer<'fb>(&self, fbb: &mut flatbuffers::builder::FlatBufferBuilder<'fb>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::between::StrictComparison::clone(&self) -> vortex_array::scalar_fn::fns::between::StrictComparison +pub struct vortex_array::stats::TypedStatsSetRef<'a, 'b> -impl core::cmp::Eq for vortex_array::scalar_fn::fns::between::StrictComparison +pub vortex_array::stats::TypedStatsSetRef::dtype: &'b vortex_array::dtype::DType -impl core::cmp::PartialEq for vortex_array::scalar_fn::fns::between::StrictComparison +pub vortex_array::stats::TypedStatsSetRef::values: &'a vortex_array::stats::StatsSet -pub fn vortex_array::scalar_fn::fns::between::StrictComparison::eq(&self, other: &vortex_array::scalar_fn::fns::between::StrictComparison) -> bool +impl vortex_array::expr::stats::StatsProvider for vortex_array::stats::TypedStatsSetRef<'_, '_> -impl core::fmt::Debug for vortex_array::scalar_fn::fns::between::StrictComparison +pub fn vortex_array::stats::TypedStatsSetRef<'_, '_>::get(&self, stat: vortex_array::expr::stats::Stat) -> core::option::Option> -pub fn vortex_array::scalar_fn::fns::between::StrictComparison::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::stats::TypedStatsSetRef<'_, '_>::is_empty(&self) -> bool -impl core::hash::Hash for vortex_array::scalar_fn::fns::between::StrictComparison +pub fn vortex_array::stats::TypedStatsSetRef<'_, '_>::len(&self) -> usize -pub fn vortex_array::scalar_fn::fns::between::StrictComparison::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub const vortex_array::stats::PRUNING_STATS: &[vortex_array::expr::stats::Stat] -impl core::marker::Copy for vortex_array::scalar_fn::fns::between::StrictComparison +pub fn vortex_array::stats::as_stat_bitset_bytes(stats: &[vortex_array::expr::stats::Stat]) -> alloc::vec::Vec -impl core::marker::StructuralPartialEq for vortex_array::scalar_fn::fns::between::StrictComparison +pub fn vortex_array::stats::stats_from_bitset_bytes(bytes: &[u8]) -> alloc::vec::Vec -pub struct vortex_array::scalar_fn::fns::between::Between +pub mod vortex_array::stream -impl core::clone::Clone for vortex_array::scalar_fn::fns::between::Between +pub struct vortex_array::stream::ArrayStreamAdapter -pub fn vortex_array::scalar_fn::fns::between::Between::clone(&self) -> vortex_array::scalar_fn::fns::between::Between +impl vortex_array::stream::ArrayStreamAdapter where S: futures_core::stream::Stream> -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::between::Between +pub fn vortex_array::stream::ArrayStreamAdapter::new(dtype: vortex_array::dtype::DType, inner: S) -> Self -pub type vortex_array::scalar_fn::fns::between::Between::Options = vortex_array::scalar_fn::fns::between::BetweenOptions +impl<'__pin, S> core::marker::Unpin for vortex_array::stream::ArrayStreamAdapter where pin_project_lite::__private::PinnedFieldsOf<__Origin<'__pin, S>>: core::marker::Unpin -pub fn vortex_array::scalar_fn::fns::between::Between::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity +impl futures_core::stream::Stream for vortex_array::stream::ArrayStreamAdapter where S: futures_core::stream::Stream> -pub fn vortex_array::scalar_fn::fns::between::Between::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub type vortex_array::stream::ArrayStreamAdapter::Item = core::result::Result -pub fn vortex_array::scalar_fn::fns::between::Between::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::stream::ArrayStreamAdapter::poll_next(self: core::pin::Pin<&mut Self>, cx: &mut core::task::wake::Context<'_>) -> core::task::poll::Poll> -pub fn vortex_array::scalar_fn::fns::between::Between::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::stream::ArrayStreamAdapter::size_hint(&self) -> (usize, core::option::Option) -pub fn vortex_array::scalar_fn::fns::between::Between::execute(&self, options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::stream::ArrayStream for vortex_array::stream::ArrayStreamAdapter where S: futures_core::stream::Stream> -pub fn vortex_array::scalar_fn::fns::between::Between::fmt_sql(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::stream::ArrayStreamAdapter::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::between::Between::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub trait vortex_array::stream::ArrayStream: futures_core::stream::Stream> -pub fn vortex_array::scalar_fn::fns::between::Between::is_fallible(&self, _options: &Self::Options) -> bool +pub fn vortex_array::stream::ArrayStream::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::between::Between::is_null_sensitive(&self, _instance: &Self::Options) -> bool +impl vortex_array::stream::ArrayStream for vortex_array::stream::SendableArrayStream -pub fn vortex_array::scalar_fn::fns::between::Between::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::stream::SendableArrayStream::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::between::Between::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +impl vortex_array::stream::ArrayStream for vortex_array::stream::ArrayStreamAdapter where S: futures_core::stream::Stream> -pub fn vortex_array::scalar_fn::fns::between::Between::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::stream::ArrayStreamAdapter::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::between::Between::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub trait vortex_array::stream::ArrayStreamExt: vortex_array::stream::ArrayStream -pub fn vortex_array::scalar_fn::fns::between::Between::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::stream::ArrayStreamExt::boxed(self) -> vortex_array::stream::SendableArrayStream where Self: core::marker::Sized + core::marker::Send + 'static -pub fn vortex_array::scalar_fn::fns::between::Between::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::stream::ArrayStreamExt::read_all(self) -> impl core::future::future::Future> where Self: core::marker::Sized -pub fn vortex_array::scalar_fn::fns::between::Between::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +impl vortex_array::stream::ArrayStreamExt for S -pub fn vortex_array::scalar_fn::fns::between::Between::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn S::boxed(self) -> vortex_array::stream::SendableArrayStream where Self: core::marker::Sized + core::marker::Send + 'static -pub struct vortex_array::scalar_fn::fns::between::BetweenExecuteAdaptor(pub V) +pub fn S::read_all(self) -> impl core::future::future::Future> where Self: core::marker::Sized -impl core::default::Default for vortex_array::scalar_fn::fns::between::BetweenExecuteAdaptor +pub type vortex_array::stream::SendableArrayStream = core::pin::Pin> -pub fn vortex_array::scalar_fn::fns::between::BetweenExecuteAdaptor::default() -> vortex_array::scalar_fn::fns::between::BetweenExecuteAdaptor +pub mod vortex_array::validity -impl core::fmt::Debug for vortex_array::scalar_fn::fns::between::BetweenExecuteAdaptor +pub enum vortex_array::validity::Validity -pub fn vortex_array::scalar_fn::fns::between::BetweenExecuteAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub vortex_array::validity::Validity::AllInvalid -impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::between::BetweenExecuteAdaptor where V: vortex_array::scalar_fn::fns::between::BetweenKernel +pub vortex_array::validity::Validity::AllValid -pub type vortex_array::scalar_fn::fns::between::BetweenExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub vortex_array::validity::Validity::Array(vortex_array::ArrayRef) -pub fn vortex_array::scalar_fn::fns::between::BetweenExecuteAdaptor::execute_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::between::Between>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub vortex_array::validity::Validity::NonNullable -pub struct vortex_array::scalar_fn::fns::between::BetweenOptions +impl vortex_array::validity::Validity -pub vortex_array::scalar_fn::fns::between::BetweenOptions::lower_strict: vortex_array::scalar_fn::fns::between::StrictComparison +pub const vortex_array::validity::Validity::DTYPE: vortex_array::dtype::DType -pub vortex_array::scalar_fn::fns::between::BetweenOptions::upper_strict: vortex_array::scalar_fn::fns::between::StrictComparison +pub fn vortex_array::validity::Validity::and(self, rhs: vortex_array::validity::Validity) -> vortex_error::VortexResult -impl core::clone::Clone for vortex_array::scalar_fn::fns::between::BetweenOptions +pub fn vortex_array::validity::Validity::as_array(&self) -> core::option::Option<&vortex_array::ArrayRef> -pub fn vortex_array::scalar_fn::fns::between::BetweenOptions::clone(&self) -> vortex_array::scalar_fn::fns::between::BetweenOptions +pub fn vortex_array::validity::Validity::cast_nullability(self, nullability: vortex_array::dtype::Nullability, len: usize) -> vortex_error::VortexResult -impl core::cmp::Eq for vortex_array::scalar_fn::fns::between::BetweenOptions +pub fn vortex_array::validity::Validity::copy_from_array(array: &vortex_array::ArrayRef) -> vortex_error::VortexResult -impl core::cmp::PartialEq for vortex_array::scalar_fn::fns::between::BetweenOptions +pub fn vortex_array::validity::Validity::execute_mask(&self, length: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::between::BetweenOptions::eq(&self, other: &vortex_array::scalar_fn::fns::between::BetweenOptions) -> bool +pub fn vortex_array::validity::Validity::filter(&self, mask: &vortex_mask::Mask) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::scalar_fn::fns::between::BetweenOptions +pub fn vortex_array::validity::Validity::into_array(self) -> core::option::Option -pub fn vortex_array::scalar_fn::fns::between::BetweenOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::validity::Validity::into_non_nullable(self, len: usize) -> core::option::Option -impl core::fmt::Display for vortex_array::scalar_fn::fns::between::BetweenOptions +pub fn vortex_array::validity::Validity::into_nullable(self) -> vortex_array::validity::Validity -pub fn vortex_array::scalar_fn::fns::between::BetweenOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::validity::Validity::is_null(&self, index: usize) -> vortex_error::VortexResult -impl core::hash::Hash for vortex_array::scalar_fn::fns::between::BetweenOptions +pub fn vortex_array::validity::Validity::is_valid(&self, index: usize) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::between::BetweenOptions::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::validity::Validity::mask_eq(&self, other: &vortex_array::validity::Validity, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::marker::StructuralPartialEq for vortex_array::scalar_fn::fns::between::BetweenOptions +pub fn vortex_array::validity::Validity::maybe_len(&self) -> core::option::Option -pub struct vortex_array::scalar_fn::fns::between::BetweenReduceAdaptor(pub V) +pub fn vortex_array::validity::Validity::not(&self) -> vortex_error::VortexResult -impl core::default::Default for vortex_array::scalar_fn::fns::between::BetweenReduceAdaptor +pub fn vortex_array::validity::Validity::nullability(&self) -> vortex_array::dtype::Nullability -pub fn vortex_array::scalar_fn::fns::between::BetweenReduceAdaptor::default() -> vortex_array::scalar_fn::fns::between::BetweenReduceAdaptor +pub fn vortex_array::validity::Validity::patch(self, len: usize, indices_offset: usize, indices: &vortex_array::ArrayRef, patches: &vortex_array::validity::Validity, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::scalar_fn::fns::between::BetweenReduceAdaptor +pub fn vortex_array::validity::Validity::slice(&self, range: core::ops::range::Range) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::between::BetweenReduceAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::validity::Validity::take(&self, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::between::BetweenReduceAdaptor where V: vortex_array::scalar_fn::fns::between::BetweenReduce +pub fn vortex_array::validity::Validity::to_array(&self, len: usize) -> vortex_array::ArrayRef -pub type vortex_array::scalar_fn::fns::between::BetweenReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub fn vortex_array::validity::Validity::to_mask(&self, length: usize) -> vortex_mask::Mask -pub fn vortex_array::scalar_fn::fns::between::BetweenReduceAdaptor::reduce_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::between::Between>, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::validity::Validity::uncompressed_size(&self) -> usize -pub trait vortex_array::scalar_fn::fns::between::BetweenKernel: vortex_array::vtable::VTable +pub fn vortex_array::validity::Validity::union_nullability(self, nullability: vortex_array::dtype::Nullability) -> Self -pub fn vortex_array::scalar_fn::fns::between::BetweenKernel::between(array: &Self::Array, lower: &vortex_array::ArrayRef, upper: &vortex_array::ArrayRef, options: &vortex_array::scalar_fn::fns::between::BetweenOptions, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::validity::Validity -impl vortex_array::scalar_fn::fns::between::BetweenKernel for vortex_array::arrays::Decimal +pub fn vortex_array::validity::Validity::execute(self, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Decimal::between(arr: &vortex_array::arrays::DecimalArray, lower: &vortex_array::ArrayRef, upper: &vortex_array::ArrayRef, options: &vortex_array::scalar_fn::fns::between::BetweenOptions, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::validity::Validity -impl vortex_array::scalar_fn::fns::between::BetweenKernel for vortex_array::arrays::Primitive +pub fn vortex_array::validity::Validity::from_bit_buffer(buffer: vortex_buffer::bit::buf::BitBuffer, nullability: vortex_array::dtype::Nullability) -> Self -pub fn vortex_array::arrays::Primitive::between(arr: &vortex_array::arrays::PrimitiveArray, lower: &vortex_array::ArrayRef, upper: &vortex_array::ArrayRef, options: &vortex_array::scalar_fn::fns::between::BetweenOptions, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::validity::Validity::from_mask(mask: vortex_mask::Mask, nullability: vortex_array::dtype::Nullability) -> Self -pub trait vortex_array::scalar_fn::fns::between::BetweenReduce: vortex_array::vtable::VTable +impl core::clone::Clone for vortex_array::validity::Validity -pub fn vortex_array::scalar_fn::fns::between::BetweenReduce::between(array: &Self::Array, lower: &vortex_array::ArrayRef, upper: &vortex_array::ArrayRef, options: &vortex_array::scalar_fn::fns::between::BetweenOptions) -> vortex_error::VortexResult> +pub fn vortex_array::validity::Validity::clone(&self) -> vortex_array::validity::Validity -impl vortex_array::scalar_fn::fns::between::BetweenReduce for vortex_array::arrays::Constant +impl core::convert::From<&vortex_array::dtype::Nullability> for vortex_array::validity::Validity -pub fn vortex_array::arrays::Constant::between(array: &vortex_array::arrays::ConstantArray, lower: &vortex_array::ArrayRef, upper: &vortex_array::ArrayRef, options: &vortex_array::scalar_fn::fns::between::BetweenOptions) -> vortex_error::VortexResult> +pub fn vortex_array::validity::Validity::from(value: &vortex_array::dtype::Nullability) -> Self -pub mod vortex_array::scalar_fn::fns::binary +impl core::convert::From for vortex_array::validity::Validity -pub struct vortex_array::scalar_fn::fns::binary::Binary +pub fn vortex_array::validity::Validity::from(value: vortex_array::dtype::Nullability) -> Self -impl core::clone::Clone for vortex_array::scalar_fn::fns::binary::Binary +impl core::convert::From for vortex_array::validity::Validity -pub fn vortex_array::scalar_fn::fns::binary::Binary::clone(&self) -> vortex_array::scalar_fn::fns::binary::Binary +pub fn vortex_array::validity::Validity::from(value: vortex_buffer::bit::buf::BitBuffer) -> Self -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::binary::Binary +impl core::fmt::Debug for vortex_array::validity::Validity -pub type vortex_array::scalar_fn::fns::binary::Binary::Options = vortex_array::scalar_fn::fns::operators::Operator +pub fn vortex_array::validity::Validity::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::scalar_fn::fns::binary::Binary::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity +impl core::iter::traits::collect::FromIterator for vortex_array::validity::Validity -pub fn vortex_array::scalar_fn::fns::binary::Binary::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::validity::Validity::from_iter>(iter: T) -> Self -pub fn vortex_array::scalar_fn::fns::binary::Binary::coerce_args(&self, operator: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +impl core::iter::traits::collect::FromIterator for vortex_array::validity::Validity -pub fn vortex_array::scalar_fn::fns::binary::Binary::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::validity::Validity::from_iter>(iter: T) -> Self -pub fn vortex_array::scalar_fn::fns::binary::Binary::execute(&self, op: &vortex_array::scalar_fn::fns::operators::Operator, args: &dyn vortex_array::scalar_fn::ExecutionArgs, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::ArrayEq for vortex_array::validity::Validity -pub fn vortex_array::scalar_fn::fns::binary::Binary::fmt_sql(&self, operator: &vortex_array::scalar_fn::fns::operators::Operator, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::validity::Validity::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::fns::binary::Binary::id(&self) -> vortex_array::scalar_fn::ScalarFnId +impl vortex_array::ArrayHash for vortex_array::validity::Validity -pub fn vortex_array::scalar_fn::fns::binary::Binary::is_fallible(&self, operator: &vortex_array::scalar_fn::fns::operators::Operator) -> bool +pub fn vortex_array::validity::Validity::array_hash(&self, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::scalar_fn::fns::binary::Binary::is_null_sensitive(&self, _operator: &vortex_array::scalar_fn::fns::operators::Operator) -> bool +pub mod vortex_array::variants -pub fn vortex_array::scalar_fn::fns::binary::Binary::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub struct vortex_array::variants::BinaryTyped<'a>(_) -pub fn vortex_array::scalar_fn::fns::binary::Binary::return_dtype(&self, operator: &vortex_array::scalar_fn::fns::operators::Operator, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub struct vortex_array::variants::BoolTyped<'a>(_) -pub fn vortex_array::scalar_fn::fns::binary::Binary::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> +impl vortex_array::variants::BoolTyped<'_> -pub fn vortex_array::scalar_fn::fns::binary::Binary::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::variants::BoolTyped<'_>::true_count(&self) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::binary::Binary::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub struct vortex_array::variants::DecimalTyped<'a>(_) -pub fn vortex_array::scalar_fn::fns::binary::Binary::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub struct vortex_array::variants::ExtensionTyped<'a>(_) -pub fn vortex_array::scalar_fn::fns::binary::Binary::stat_falsification(&self, operator: &vortex_array::scalar_fn::fns::operators::Operator, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +impl vortex_array::variants::ExtensionTyped<'_> -pub fn vortex_array::scalar_fn::fns::binary::Binary::validity(&self, operator: &vortex_array::scalar_fn::fns::operators::Operator, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::variants::ExtensionTyped<'_>::ext_dtype(&self) -> &vortex_array::dtype::extension::ExtDTypeRef -pub struct vortex_array::scalar_fn::fns::binary::CompareExecuteAdaptor(pub V) +pub struct vortex_array::variants::ListTyped<'a>(_) -impl core::default::Default for vortex_array::scalar_fn::fns::binary::CompareExecuteAdaptor +pub struct vortex_array::variants::NullTyped<'a>(_) -pub fn vortex_array::scalar_fn::fns::binary::CompareExecuteAdaptor::default() -> vortex_array::scalar_fn::fns::binary::CompareExecuteAdaptor +pub struct vortex_array::variants::PrimitiveTyped<'a>(_) -impl core::fmt::Debug for vortex_array::scalar_fn::fns::binary::CompareExecuteAdaptor +impl vortex_array::variants::PrimitiveTyped<'_> -pub fn vortex_array::scalar_fn::fns::binary::CompareExecuteAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::variants::PrimitiveTyped<'_>::ptype(&self) -> vortex_array::dtype::PType -impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::binary::CompareExecuteAdaptor where V: vortex_array::scalar_fn::fns::binary::CompareKernel +pub fn vortex_array::variants::PrimitiveTyped<'_>::value(&self, idx: usize) -> vortex_error::VortexResult> -pub type vortex_array::scalar_fn::fns::binary::CompareExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub fn vortex_array::variants::PrimitiveTyped<'_>::value_unchecked(&self, idx: usize) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::binary::CompareExecuteAdaptor::execute_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::binary::Binary>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::search_sorted::IndexOrd> for vortex_array::variants::PrimitiveTyped<'_> -pub trait vortex_array::scalar_fn::fns::binary::CompareKernel: vortex_array::vtable::VTable +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_cmp(&self, idx: usize, elem: &core::option::Option) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::binary::CompareKernel::compare(lhs: &Self::Array, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_ge(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::fns::binary::CompareKernel for vortex_array::arrays::Extension +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_gt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Extension::compare(lhs: &vortex_array::arrays::ExtensionArray, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_le(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::fns::binary::CompareKernel for vortex_array::arrays::VarBin +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_len(&self) -> usize -pub fn vortex_array::arrays::VarBin::compare(lhs: &vortex_array::arrays::VarBinArray, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_lt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::fns::binary::CompareKernel for vortex_array::arrays::dict::Dict +impl vortex_array::search_sorted::IndexOrd for vortex_array::variants::PrimitiveTyped<'_> -pub fn vortex_array::arrays::dict::Dict::compare(lhs: &vortex_array::arrays::dict::DictArray, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_cmp(&self, idx: usize, elem: &vortex_array::scalar::PValue) -> vortex_error::VortexResult> -impl vortex_array::scalar_fn::fns::binary::CompareKernel for vortex_array::arrays::patched::Patched +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_ge(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub fn vortex_array::arrays::patched::Patched::compare(lhs: &Self::Array, rhs: &vortex_array::ArrayRef, operator: vortex_array::scalar_fn::fns::operators::CompareOperator, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_gt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::binary::and_kleene(lhs: &vortex_array::ArrayRef, rhs: &vortex_array::ArrayRef) -> vortex_error::VortexResult +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_le(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::binary::compare_nested_arrow_arrays(lhs: &dyn arrow_array::array::Array, rhs: &dyn arrow_array::array::Array, operator: vortex_array::scalar_fn::fns::operators::CompareOperator) -> vortex_error::VortexResult +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_len(&self) -> usize -pub fn vortex_array::scalar_fn::fns::binary::or_kleene(lhs: &vortex_array::ArrayRef, rhs: &vortex_array::ArrayRef) -> vortex_error::VortexResult +pub fn vortex_array::variants::PrimitiveTyped<'_>::index_lt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::binary::scalar_cmp(lhs: &vortex_array::scalar::Scalar, rhs: &vortex_array::scalar::Scalar, operator: vortex_array::scalar_fn::fns::operators::CompareOperator) -> vortex_error::VortexResult +pub struct vortex_array::variants::StructTyped<'a>(_) -pub mod vortex_array::scalar_fn::fns::case_when +impl vortex_array::variants::StructTyped<'_> -pub struct vortex_array::scalar_fn::fns::case_when::CaseWhen +pub fn vortex_array::variants::StructTyped<'_>::dtypes(&self) -> alloc::vec::Vec -impl core::clone::Clone for vortex_array::scalar_fn::fns::case_when::CaseWhen +pub fn vortex_array::variants::StructTyped<'_>::names(&self) -> &vortex_array::dtype::FieldNames -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::clone(&self) -> vortex_array::scalar_fn::fns::case_when::CaseWhen +pub fn vortex_array::variants::StructTyped<'_>::nfields(&self) -> usize -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::case_when::CaseWhen +pub struct vortex_array::variants::Utf8Typed<'a>(_) -pub type vortex_array::scalar_fn::fns::case_when::CaseWhen::Options = vortex_array::scalar_fn::fns::case_when::CaseWhenOptions +pub mod vortex_array::vtable -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::arity(&self, options: &Self::Options) -> vortex_array::scalar_fn::Arity +pub struct vortex_array::vtable::NotSupported -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::child_name(&self, options: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +impl vortex_array::OperationsVTable for vortex_array::NotSupported -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::NotSupported::scalar_at(array: vortex_array::ArrayView<'_, V>, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::deserialize(&self, metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub struct vortex_array::vtable::ValidityVTableFromChild -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::execute(&self, options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::ValidityVTable for vortex_array::ValidityVTableFromChild where V: vortex_array::ValidityChild + vortex_array::VTable -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::fmt_sql(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::ValidityVTableFromChild::validity(array: vortex_array::ArrayView<'_, V>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub struct vortex_array::vtable::ValidityVTableFromChildSliceHelper -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::is_fallible(&self, _options: &Self::Options) -> bool +impl vortex_array::ValidityVTable for vortex_array::ValidityVTableFromChildSliceHelper where ::ArrayData: vortex_array::ValidityChildSliceHelper -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::is_null_sensitive(&self, _options: &Self::Options) -> bool +pub fn vortex_array::ValidityVTableFromChildSliceHelper::validity(array: vortex_array::ArrayView<'_, V>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub struct vortex_array::vtable::ValidityVTableFromValidityHelper -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::return_dtype(&self, options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +impl vortex_array::ValidityVTable for vortex_array::ValidityVTableFromValidityHelper where ::ArrayData: vortex_array::ValidityHelper -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::serialize(&self, _options: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::ValidityVTableFromValidityHelper::validity(array: vortex_array::ArrayView<'_, V>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub struct vortex_array::vtable::ValidityVTableFromValiditySliceHelper -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +impl vortex_array::ValidityVTable for vortex_array::ValidityVTableFromValiditySliceHelper where ::ArrayData: vortex_array::ValiditySliceHelper -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::ValidityVTableFromValiditySliceHelper::validity(array: vortex_array::ArrayView<'_, V>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub trait vortex_array::vtable::ArrayVTable: 'static + core::clone::Clone + core::marker::Sized + core::marker::Send + core::marker::Sync + core::fmt::Debug -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub type vortex_array::vtable::ArrayVTable::ArrayData: 'static + core::marker::Send + core::marker::Sync + core::clone::Clone + core::fmt::Debug + vortex_array::IntoArray -pub struct vortex_array::scalar_fn::fns::case_when::CaseWhenOptions +pub type vortex_array::vtable::ArrayVTable::Metadata: core::fmt::Debug -pub vortex_array::scalar_fn::fns::case_when::CaseWhenOptions::has_else: bool +pub type vortex_array::vtable::ArrayVTable::OperationsVTable: vortex_array::OperationsVTable -pub vortex_array::scalar_fn::fns::case_when::CaseWhenOptions::num_when_then_pairs: u32 +pub type vortex_array::vtable::ArrayVTable::ValidityVTable: vortex_array::ValidityVTable -impl vortex_array::scalar_fn::fns::case_when::CaseWhenOptions +pub fn vortex_array::vtable::ArrayVTable::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhenOptions::num_children(&self) -> usize +pub fn vortex_array::vtable::ArrayVTable::array_eq(array: &Self::ArrayData, other: &Self::ArrayData, precision: vortex_array::Precision) -> bool -impl core::clone::Clone for vortex_array::scalar_fn::fns::case_when::CaseWhenOptions +pub fn vortex_array::vtable::ArrayVTable::array_hash(array: &Self::ArrayData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhenOptions::clone(&self) -> vortex_array::scalar_fn::fns::case_when::CaseWhenOptions +pub fn vortex_array::vtable::ArrayVTable::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -impl core::cmp::Eq for vortex_array::scalar_fn::fns::case_when::CaseWhenOptions +pub fn vortex_array::vtable::ArrayVTable::buffer_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -impl core::cmp::PartialEq for vortex_array::scalar_fn::fns::case_when::CaseWhenOptions +pub fn vortex_array::vtable::ArrayVTable::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhenOptions::eq(&self, other: &vortex_array::scalar_fn::fns::case_when::CaseWhenOptions) -> bool +pub fn vortex_array::vtable::ArrayVTable::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -impl core::fmt::Debug for vortex_array::scalar_fn::fns::case_when::CaseWhenOptions +pub fn vortex_array::vtable::ArrayVTable::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhenOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::vtable::ArrayVTable::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl core::fmt::Display for vortex_array::scalar_fn::fns::case_when::CaseWhenOptions +pub fn vortex_array::vtable::ArrayVTable::dtype(array: &Self::ArrayData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhenOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::vtable::ArrayVTable::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::hash::Hash for vortex_array::scalar_fn::fns::case_when::CaseWhenOptions +pub fn vortex_array::vtable::ArrayVTable::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhenOptions::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::vtable::ArrayVTable::id(&self) -> vortex_array::ArrayId -impl core::marker::Copy for vortex_array::scalar_fn::fns::case_when::CaseWhenOptions +pub fn vortex_array::vtable::ArrayVTable::len(array: &Self::ArrayData) -> usize -impl core::marker::StructuralPartialEq for vortex_array::scalar_fn::fns::case_when::CaseWhenOptions +pub fn vortex_array::vtable::ArrayVTable::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub mod vortex_array::scalar_fn::fns::cast +pub fn vortex_array::vtable::ArrayVTable::nbuffers(array: vortex_array::ArrayView<'_, Self>) -> usize -pub struct vortex_array::scalar_fn::fns::cast::Cast +pub fn vortex_array::vtable::ArrayVTable::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -impl core::clone::Clone for vortex_array::scalar_fn::fns::cast::Cast +pub fn vortex_array::vtable::ArrayVTable::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::cast::Cast::clone(&self) -> vortex_array::scalar_fn::fns::cast::Cast +pub fn vortex_array::vtable::ArrayVTable::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::cast::Cast +pub fn vortex_array::vtable::ArrayVTable::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub type vortex_array::scalar_fn::fns::cast::Cast::Options = vortex_array::dtype::DType +pub fn vortex_array::vtable::ArrayVTable::slot_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::cast::Cast::arity(&self, _options: &vortex_array::dtype::DType) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::vtable::ArrayVTable::slots<'a>(array: vortex_array::ArrayView<'a, Self>) -> &'a [core::option::Option] -pub fn vortex_array::scalar_fn::fns::cast::Cast::child_name(&self, _instance: &vortex_array::dtype::DType, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::vtable::ArrayVTable::stats(array: &Self::ArrayData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::scalar_fn::fns::cast::Cast::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::vtable::ArrayVTable::vtable(array: &Self::ArrayData) -> &Self -pub fn vortex_array::scalar_fn::fns::cast::Cast::deserialize(&self, _metadata: &[u8], session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::vtable::ArrayVTable::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::cast::Cast::execute(&self, target_dtype: &vortex_array::dtype::DType, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::VTable for vortex_array::arrays::Bool -pub fn vortex_array::scalar_fn::fns::cast::Cast::fmt_sql(&self, dtype: &vortex_array::dtype::DType, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::arrays::Bool::ArrayData = vortex_array::arrays::bool::BoolData -pub fn vortex_array::scalar_fn::fns::cast::Cast::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub type vortex_array::arrays::Bool::Metadata = vortex_array::ProstMetadata -pub fn vortex_array::scalar_fn::fns::cast::Cast::is_fallible(&self, options: &Self::Options) -> bool +pub type vortex_array::arrays::Bool::OperationsVTable = vortex_array::arrays::Bool -pub fn vortex_array::scalar_fn::fns::cast::Cast::is_null_sensitive(&self, _instance: &vortex_array::dtype::DType) -> bool +pub type vortex_array::arrays::Bool::ValidityVTable = vortex_array::arrays::Bool -pub fn vortex_array::scalar_fn::fns::cast::Cast::reduce(&self, target_dtype: &vortex_array::dtype::DType, node: &dyn vortex_array::scalar_fn::ReduceNode, _ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Bool::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::cast::Cast::return_dtype(&self, dtype: &vortex_array::dtype::DType, _arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Bool::array_eq(array: &vortex_array::arrays::bool::BoolData, other: &vortex_array::arrays::bool::BoolData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::fns::cast::Cast::serialize(&self, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Bool::array_hash(array: &vortex_array::arrays::bool::BoolData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::scalar_fn::fns::cast::Cast::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Bool::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::scalar_fn::fns::cast::Cast::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Bool::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::scalar_fn::fns::cast::Cast::stat_expression(&self, dtype: &vortex_array::dtype::DType, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Bool::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::cast::Cast::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Bool::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::scalar_fn::fns::cast::Cast::validity(&self, dtype: &vortex_array::dtype::DType, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Bool::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub struct vortex_array::scalar_fn::fns::cast::CastExecuteAdaptor(pub V) +pub fn vortex_array::arrays::Bool::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl core::default::Default for vortex_array::scalar_fn::fns::cast::CastExecuteAdaptor +pub fn vortex_array::arrays::Bool::dtype(array: &vortex_array::arrays::bool::BoolData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::cast::CastExecuteAdaptor::default() -> vortex_array::scalar_fn::fns::cast::CastExecuteAdaptor +pub fn vortex_array::arrays::Bool::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::scalar_fn::fns::cast::CastExecuteAdaptor +pub fn vortex_array::arrays::Bool::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::cast::CastExecuteAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Bool::id(&self) -> vortex_array::ArrayId -impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::cast::CastExecuteAdaptor where V: vortex_array::scalar_fn::fns::cast::CastKernel +pub fn vortex_array::arrays::Bool::len(array: &vortex_array::arrays::bool::BoolData) -> usize -pub type vortex_array::scalar_fn::fns::cast::CastExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub fn vortex_array::arrays::Bool::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::cast::CastExecuteAdaptor::execute_parent(&self, array: &::Array, parent: ::Match, _child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Bool::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub struct vortex_array::scalar_fn::fns::cast::CastReduceAdaptor(pub V) +pub fn vortex_array::arrays::Bool::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -impl core::default::Default for vortex_array::scalar_fn::fns::cast::CastReduceAdaptor +pub fn vortex_array::arrays::Bool::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::cast::CastReduceAdaptor::default() -> vortex_array::scalar_fn::fns::cast::CastReduceAdaptor +pub fn vortex_array::arrays::Bool::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -impl core::fmt::Debug for vortex_array::scalar_fn::fns::cast::CastReduceAdaptor +pub fn vortex_array::arrays::Bool::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar_fn::fns::cast::CastReduceAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Bool::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::cast::CastReduceAdaptor where V: vortex_array::scalar_fn::fns::cast::CastReduce +pub fn vortex_array::arrays::Bool::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub type vortex_array::scalar_fn::fns::cast::CastReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub fn vortex_array::arrays::Bool::stats(array: &vortex_array::arrays::bool::BoolData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::scalar_fn::fns::cast::CastReduceAdaptor::reduce_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::cast::Cast>, _child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Bool::vtable(_array: &Self::ArrayData) -> &Self -pub trait vortex_array::scalar_fn::fns::cast::CastKernel: vortex_array::vtable::VTable +pub fn vortex_array::arrays::Bool::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::cast::CastKernel::cast(array: &Self::Array, dtype: &vortex_array::dtype::DType, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::VTable for vortex_array::arrays::Chunked -impl vortex_array::scalar_fn::fns::cast::CastKernel for vortex_array::arrays::Decimal +pub type vortex_array::arrays::Chunked::ArrayData = vortex_array::arrays::chunked::ChunkedData -pub fn vortex_array::arrays::Decimal::cast(array: &vortex_array::arrays::DecimalArray, dtype: &vortex_array::dtype::DType, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Chunked::Metadata = vortex_array::EmptyMetadata -impl vortex_array::scalar_fn::fns::cast::CastKernel for vortex_array::arrays::Primitive +pub type vortex_array::arrays::Chunked::OperationsVTable = vortex_array::arrays::Chunked -pub fn vortex_array::arrays::Primitive::cast(array: &vortex_array::arrays::PrimitiveArray, dtype: &vortex_array::dtype::DType, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Chunked::ValidityVTable = vortex_array::arrays::Chunked -impl vortex_array::scalar_fn::fns::cast::CastKernel for vortex_array::arrays::Struct +pub fn vortex_array::arrays::Chunked::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Struct::cast(array: &vortex_array::arrays::StructArray, dtype: &vortex_array::dtype::DType, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Chunked::array_eq(array: &vortex_array::arrays::chunked::ChunkedData, other: &vortex_array::arrays::chunked::ChunkedData, precision: vortex_array::Precision) -> bool -pub trait vortex_array::scalar_fn::fns::cast::CastReduce: vortex_array::vtable::VTable +pub fn vortex_array::arrays::Chunked::array_hash(array: &vortex_array::arrays::chunked::ChunkedData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::scalar_fn::fns::cast::CastReduce::cast(array: &Self::Array, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Chunked::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::Bool +pub fn vortex_array::arrays::Chunked::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Bool::cast(array: &vortex_array::arrays::BoolArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Chunked::build(dtype: &vortex_array::dtype::DType, _len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::Chunked +pub fn vortex_array::arrays::Chunked::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Chunked::cast(array: &vortex_array::arrays::ChunkedArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Chunked::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::Constant +pub fn vortex_array::arrays::Chunked::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Constant::cast(array: &vortex_array::arrays::ConstantArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Chunked::dtype(array: &vortex_array::arrays::chunked::ChunkedData) -> &vortex_array::dtype::DType -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::Extension +pub fn vortex_array::arrays::Chunked::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Extension::cast(array: &vortex_array::arrays::ExtensionArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Chunked::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::FixedSizeList +pub fn vortex_array::arrays::Chunked::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::FixedSizeList::cast(array: &vortex_array::arrays::FixedSizeListArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Chunked::len(array: &vortex_array::arrays::chunked::ChunkedData) -> usize -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::List +pub fn vortex_array::arrays::Chunked::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::List::cast(array: &vortex_array::arrays::ListArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Chunked::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::ListView +pub fn vortex_array::arrays::Chunked::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::ListView::cast(array: &vortex_array::arrays::ListViewArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Chunked::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::VarBin +pub fn vortex_array::arrays::Chunked::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::VarBin::cast(array: &vortex_array::arrays::VarBinArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Chunked::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::VarBinView +pub fn vortex_array::arrays::Chunked::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::VarBinView::cast(array: &vortex_array::arrays::VarBinViewArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Chunked::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::Chunked::stats(array: &vortex_array::arrays::chunked::ChunkedData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::dict::Dict::cast(array: &vortex_array::arrays::dict::DictArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Chunked::vtable(_array: &Self::ArrayData) -> &Self -impl vortex_array::scalar_fn::fns::cast::CastReduce for vortex_array::arrays::null::Null +pub fn vortex_array::arrays::Chunked::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::null::Null::cast(array: &vortex_array::arrays::null::NullArray, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> +impl vortex_array::VTable for vortex_array::arrays::Constant -pub mod vortex_array::scalar_fn::fns::dynamic +pub type vortex_array::arrays::Constant::ArrayData = vortex_array::arrays::constant::ConstantData -pub struct vortex_array::scalar_fn::fns::dynamic::DynamicComparison +pub type vortex_array::arrays::Constant::Metadata = vortex_array::scalar::Scalar -impl core::clone::Clone for vortex_array::scalar_fn::fns::dynamic::DynamicComparison +pub type vortex_array::arrays::Constant::OperationsVTable = vortex_array::arrays::Constant -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::clone(&self) -> vortex_array::scalar_fn::fns::dynamic::DynamicComparison +pub type vortex_array::arrays::Constant::ValidityVTable = vortex_array::arrays::Constant -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::dynamic::DynamicComparison +pub fn vortex_array::arrays::Constant::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub type vortex_array::scalar_fn::fns::dynamic::DynamicComparison::Options = vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr +pub fn vortex_array::arrays::Constant::array_eq(array: &vortex_array::arrays::constant::ConstantData, other: &vortex_array::arrays::constant::ConstantData, _precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::Constant::array_hash(array: &vortex_array::arrays::constant::ConstantData, state: &mut H, _precision: vortex_array::Precision) -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::arrays::Constant::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Constant::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Constant::build(_dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], _children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::execute(&self, data: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Constant::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::fmt_sql(&self, dynamic: &vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Constant::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::Constant::deserialize(_bytes: &[u8], dtype: &vortex_array::dtype::DType, _len: usize, buffers: &[vortex_array::buffer::BufferHandle], session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::is_fallible(&self, options: &Self::Options) -> bool +pub fn vortex_array::arrays::Constant::dtype(array: &vortex_array::arrays::constant::ConstantData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::is_null_sensitive(&self, _instance: &Self::Options) -> bool +pub fn vortex_array::arrays::Constant::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Constant::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::return_dtype(&self, dynamic: &vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Constant::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::serialize(&self, options: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Constant::len(array: &vortex_array::arrays::constant::ConstantData) -> usize -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Constant::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Constant::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Constant::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::stat_falsification(&self, dynamic: &vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Constant::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Constant::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub struct vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr +pub fn vortex_array::arrays::Constant::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -impl vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr +pub fn vortex_array::arrays::Constant::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr::scalar(&self) -> core::option::Option +pub fn vortex_array::arrays::Constant::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -impl core::clone::Clone for vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr +pub fn vortex_array::arrays::Constant::stats(array: &vortex_array::arrays::constant::ConstantData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr::clone(&self) -> vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr +pub fn vortex_array::arrays::Constant::vtable(_array: &Self::ArrayData) -> &Self -impl core::cmp::Eq for vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr +pub fn vortex_array::arrays::Constant::with_slots(_array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl core::cmp::PartialEq for vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr +impl vortex_array::VTable for vortex_array::arrays::Decimal -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr::eq(&self, other: &Self) -> bool +pub type vortex_array::arrays::Decimal::ArrayData = vortex_array::arrays::decimal::DecimalData -impl core::fmt::Debug for vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr +pub type vortex_array::arrays::Decimal::Metadata = vortex_array::ProstMetadata -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::arrays::Decimal::OperationsVTable = vortex_array::arrays::Decimal -impl core::fmt::Display for vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr +pub type vortex_array::arrays::Decimal::ValidityVTable = vortex_array::arrays::Decimal -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Decimal::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl core::hash::Hash for vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr +pub fn vortex_array::arrays::Decimal::array_eq(array: &vortex_array::arrays::decimal::DecimalData, other: &vortex_array::arrays::decimal::DecimalData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr::hash(&self, state: &mut H) +pub fn vortex_array::arrays::Decimal::array_hash(array: &vortex_array::arrays::decimal::DecimalData, state: &mut H, precision: vortex_array::Precision) -pub struct vortex_array::scalar_fn::fns::dynamic::DynamicExprUpdates +pub fn vortex_array::arrays::Decimal::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -impl vortex_array::scalar_fn::fns::dynamic::DynamicExprUpdates +pub fn vortex_array::arrays::Decimal::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicExprUpdates::new(expr: &vortex_array::expr::Expression) -> core::option::Option +pub fn vortex_array::arrays::Decimal::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicExprUpdates::version(&self) -> u64 +pub fn vortex_array::arrays::Decimal::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub mod vortex_array::scalar_fn::fns::fill_null +pub fn vortex_array::arrays::Decimal::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub struct vortex_array::scalar_fn::fns::fill_null::FillNull +pub fn vortex_array::arrays::Decimal::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl core::clone::Clone for vortex_array::scalar_fn::fns::fill_null::FillNull +pub fn vortex_array::arrays::Decimal::dtype(array: &vortex_array::arrays::decimal::DecimalData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::clone(&self) -> vortex_array::scalar_fn::fns::fill_null::FillNull +pub fn vortex_array::arrays::Decimal::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::fill_null::FillNull +pub fn vortex_array::arrays::Decimal::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub type vortex_array::scalar_fn::fns::fill_null::FillNull::Options = vortex_array::scalar_fn::EmptyOptions +pub fn vortex_array::arrays::Decimal::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::Decimal::len(array: &vortex_array::arrays::decimal::DecimalData) -> usize -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::child_name(&self, _options: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::arrays::Decimal::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Decimal::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Decimal::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::execute(&self, _options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Decimal::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Decimal::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::Decimal::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::is_fallible(&self, _options: &Self::Options) -> bool +pub fn vortex_array::arrays::Decimal::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::is_null_sensitive(&self, _options: &Self::Options) -> bool +pub fn vortex_array::arrays::Decimal::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Decimal::stats(array: &vortex_array::arrays::decimal::DecimalData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Decimal::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::serialize(&self, _options: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Decimal::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::simplify(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +impl vortex_array::VTable for vortex_array::arrays::Extension -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Extension::ArrayData = vortex_array::arrays::extension::ExtensionData -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub type vortex_array::arrays::Extension::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub type vortex_array::arrays::Extension::OperationsVTable = vortex_array::arrays::Extension -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::validity(&self, _options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Extension::ValidityVTable = vortex_array::ValidityVTableFromChild -pub struct vortex_array::scalar_fn::fns::fill_null::FillNullExecuteAdaptor(pub V) +pub fn vortex_array::arrays::Extension::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl core::default::Default for vortex_array::scalar_fn::fns::fill_null::FillNullExecuteAdaptor +pub fn vortex_array::arrays::Extension::array_eq(array: &vortex_array::arrays::extension::ExtensionData, other: &vortex_array::arrays::extension::ExtensionData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::fns::fill_null::FillNullExecuteAdaptor::default() -> vortex_array::scalar_fn::fns::fill_null::FillNullExecuteAdaptor +pub fn vortex_array::arrays::Extension::array_hash(array: &vortex_array::arrays::extension::ExtensionData, state: &mut H, precision: vortex_array::Precision) -impl core::fmt::Debug for vortex_array::scalar_fn::fns::fill_null::FillNullExecuteAdaptor +pub fn vortex_array::arrays::Extension::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::scalar_fn::fns::fill_null::FillNullExecuteAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Extension::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::fill_null::FillNullExecuteAdaptor where V: vortex_array::scalar_fn::fns::fill_null::FillNullKernel +pub fn vortex_array::arrays::Extension::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub type vortex_array::scalar_fn::fns::fill_null::FillNullExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub fn vortex_array::arrays::Extension::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::scalar_fn::fns::fill_null::FillNullExecuteAdaptor::execute_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::fill_null::FillNull>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Extension::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub struct vortex_array::scalar_fn::fns::fill_null::FillNullReduceAdaptor(pub V) +pub fn vortex_array::arrays::Extension::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl core::default::Default for vortex_array::scalar_fn::fns::fill_null::FillNullReduceAdaptor +pub fn vortex_array::arrays::Extension::dtype(array: &vortex_array::arrays::extension::ExtensionData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::fill_null::FillNullReduceAdaptor::default() -> vortex_array::scalar_fn::fns::fill_null::FillNullReduceAdaptor +pub fn vortex_array::arrays::Extension::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::scalar_fn::fns::fill_null::FillNullReduceAdaptor +pub fn vortex_array::arrays::Extension::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::fill_null::FillNullReduceAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Extension::id(&self) -> vortex_array::ArrayId -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::fill_null::FillNullReduceAdaptor where V: vortex_array::scalar_fn::fns::fill_null::FillNullReduce +pub fn vortex_array::arrays::Extension::len(array: &vortex_array::arrays::extension::ExtensionData) -> usize -pub type vortex_array::scalar_fn::fns::fill_null::FillNullReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub fn vortex_array::arrays::Extension::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::fill_null::FillNullReduceAdaptor::reduce_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::fill_null::FillNull>, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Extension::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub trait vortex_array::scalar_fn::fns::fill_null::FillNullKernel: vortex_array::vtable::VTable +pub fn vortex_array::arrays::Extension::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::fill_null::FillNullKernel::fill_null(array: &Self::Array, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Extension::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -impl vortex_array::scalar_fn::fns::fill_null::FillNullKernel for vortex_array::arrays::Bool +pub fn vortex_array::arrays::Extension::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Bool::fill_null(array: &vortex_array::arrays::BoolArray, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Extension::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -impl vortex_array::scalar_fn::fns::fill_null::FillNullKernel for vortex_array::arrays::Decimal +pub fn vortex_array::arrays::Extension::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Decimal::fill_null(array: &vortex_array::arrays::DecimalArray, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Extension::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -impl vortex_array::scalar_fn::fns::fill_null::FillNullKernel for vortex_array::arrays::Primitive +pub fn vortex_array::arrays::Extension::stats(array: &vortex_array::arrays::extension::ExtensionData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Primitive::fill_null(array: &vortex_array::arrays::PrimitiveArray, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Extension::vtable(_array: &Self::ArrayData) -> &Self -impl vortex_array::scalar_fn::fns::fill_null::FillNullKernel for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::Extension::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::dict::Dict::fill_null(array: &vortex_array::arrays::dict::DictArray, fill_value: &vortex_array::scalar::Scalar, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::VTable for vortex_array::arrays::Filter -pub trait vortex_array::scalar_fn::fns::fill_null::FillNullReduce: vortex_array::vtable::VTable +pub type vortex_array::arrays::Filter::ArrayData = vortex_array::arrays::filter::FilterData -pub fn vortex_array::scalar_fn::fns::fill_null::FillNullReduce::fill_null(array: &Self::Array, fill_value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Filter::Metadata = vortex_array::arrays::filter::vtable::FilterMetadata -impl vortex_array::scalar_fn::fns::fill_null::FillNullReduce for vortex_array::arrays::Chunked +pub type vortex_array::arrays::Filter::OperationsVTable = vortex_array::arrays::Filter -pub fn vortex_array::arrays::Chunked::fill_null(array: &vortex_array::arrays::ChunkedArray, fill_value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Filter::ValidityVTable = vortex_array::arrays::Filter -impl vortex_array::scalar_fn::fns::fill_null::FillNullReduce for vortex_array::arrays::Constant +pub fn vortex_array::arrays::Filter::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Constant::fill_null(array: &vortex_array::arrays::ConstantArray, fill_value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::array_eq(array: &vortex_array::arrays::filter::FilterData, other: &vortex_array::arrays::filter::FilterData, precision: vortex_array::Precision) -> bool -pub mod vortex_array::scalar_fn::fns::get_item +pub fn vortex_array::arrays::Filter::array_hash(array: &vortex_array::arrays::filter::FilterData, state: &mut H, precision: vortex_array::Precision) -pub struct vortex_array::scalar_fn::fns::get_item::GetItem +pub fn vortex_array::arrays::Filter::buffer(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> vortex_array::buffer::BufferHandle -impl core::clone::Clone for vortex_array::scalar_fn::fns::get_item::GetItem +pub fn vortex_array::arrays::Filter::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::clone(&self) -> vortex_array::scalar_fn::fns::get_item::GetItem +pub fn vortex_array::arrays::Filter::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::filter::vtable::FilterMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::get_item::GetItem +pub fn vortex_array::arrays::Filter::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub type vortex_array::scalar_fn::fns::get_item::GetItem::Options = vortex_array::dtype::FieldName +pub fn vortex_array::arrays::Filter::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::arity(&self, _field_name: &vortex_array::dtype::FieldName) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::Filter::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::arrays::Filter::dtype(array: &vortex_array::arrays::filter::FilterData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Filter::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::execute(&self, field_name: &vortex_array::dtype::FieldName, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Filter::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::fmt_sql(&self, field_name: &vortex_array::dtype::FieldName, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Filter::len(array: &vortex_array::arrays::filter::FilterData) -> usize -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::Filter::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::is_fallible(&self, _field_name: &vortex_array::dtype::FieldName) -> bool +pub fn vortex_array::arrays::Filter::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::is_null_sensitive(&self, _field_name: &vortex_array::dtype::FieldName) -> bool +pub fn vortex_array::arrays::Filter::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::reduce(&self, field_name: &vortex_array::dtype::FieldName, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::return_dtype(&self, field_name: &vortex_array::dtype::FieldName, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Filter::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Filter::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::simplify_untyped(&self, field_name: &vortex_array::dtype::FieldName, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::stat_expression(&self, field_name: &vortex_array::dtype::FieldName, _expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Filter::stats(array: &vortex_array::arrays::filter::FilterData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Filter::vtable(_array: &vortex_array::arrays::filter::FilterData) -> &Self -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub mod vortex_array::scalar_fn::fns::is_null +impl vortex_array::VTable for vortex_array::arrays::FixedSizeList -pub struct vortex_array::scalar_fn::fns::is_null::IsNull +pub type vortex_array::arrays::FixedSizeList::ArrayData = vortex_array::arrays::fixed_size_list::FixedSizeListData -impl core::clone::Clone for vortex_array::scalar_fn::fns::is_null::IsNull +pub type vortex_array::arrays::FixedSizeList::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::clone(&self) -> vortex_array::scalar_fn::fns::is_null::IsNull +pub type vortex_array::arrays::FixedSizeList::OperationsVTable = vortex_array::arrays::FixedSizeList -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::is_null::IsNull +pub type vortex_array::arrays::FixedSizeList::ValidityVTable = vortex_array::arrays::FixedSizeList -pub type vortex_array::scalar_fn::fns::is_null::IsNull::Options = vortex_array::scalar_fn::EmptyOptions +pub fn vortex_array::arrays::FixedSizeList::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::FixedSizeList::array_eq(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData, other: &vortex_array::arrays::fixed_size_list::FixedSizeListData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::arrays::FixedSizeList::array_hash(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::FixedSizeList::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::execute(&self, _data: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::FixedSizeList::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::FixedSizeList::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::is_fallible(&self, _instance: &Self::Options) -> bool +pub fn vortex_array::arrays::FixedSizeList::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::is_null_sensitive(&self, _instance: &Self::Options) -> bool +pub fn vortex_array::arrays::FixedSizeList::dtype(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::FixedSizeList::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::return_dtype(&self, _options: &Self::Options, _arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::serialize(&self, _instance: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::FixedSizeList::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::FixedSizeList::len(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData) -> usize -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::FixedSizeList::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::FixedSizeList::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::stat_falsification(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::FixedSizeList::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::FixedSizeList::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub mod vortex_array::scalar_fn::fns::like +pub fn vortex_array::arrays::FixedSizeList::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub struct vortex_array::scalar_fn::fns::like::Like +pub fn vortex_array::arrays::FixedSizeList::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -impl core::clone::Clone for vortex_array::scalar_fn::fns::like::Like +pub fn vortex_array::arrays::FixedSizeList::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::like::Like::clone(&self) -> vortex_array::scalar_fn::fns::like::Like +pub fn vortex_array::arrays::FixedSizeList::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::like::Like +pub fn vortex_array::arrays::FixedSizeList::stats(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData) -> &vortex_array::stats::ArrayStats -pub type vortex_array::scalar_fn::fns::like::Like::Options = vortex_array::scalar_fn::fns::like::LikeOptions +pub fn vortex_array::arrays::FixedSizeList::vtable(_array: &vortex_array::arrays::fixed_size_list::FixedSizeListData) -> &Self -pub fn vortex_array::scalar_fn::fns::like::Like::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::FixedSizeList::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::like::Like::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +impl vortex_array::VTable for vortex_array::arrays::List -pub fn vortex_array::scalar_fn::fns::like::Like::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub type vortex_array::arrays::List::ArrayData = vortex_array::arrays::list::ListData -pub fn vortex_array::scalar_fn::fns::like::Like::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub type vortex_array::arrays::List::Metadata = vortex_array::ProstMetadata -pub fn vortex_array::scalar_fn::fns::like::Like::execute(&self, options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub type vortex_array::arrays::List::OperationsVTable = vortex_array::arrays::List -pub fn vortex_array::scalar_fn::fns::like::Like::fmt_sql(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::arrays::List::ValidityVTable = vortex_array::arrays::List -pub fn vortex_array::scalar_fn::fns::like::Like::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::List::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::like::Like::is_fallible(&self, options: &Self::Options) -> bool +pub fn vortex_array::arrays::List::array_eq(array: &vortex_array::arrays::list::ListData, other: &vortex_array::arrays::list::ListData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::fns::like::Like::is_null_sensitive(&self, _instance: &Self::Options) -> bool +pub fn vortex_array::arrays::List::array_hash(array: &vortex_array::arrays::list::ListData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::scalar_fn::fns::like::Like::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::List::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::scalar_fn::fns::like::Like::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::scalar_fn::fns::like::Like::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::List::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::like::Like::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::List::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::scalar_fn::fns::like::Like::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::List::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::like::Like::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::List::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::like::Like::stat_falsification(&self, like_opts: &vortex_array::scalar_fn::fns::like::LikeOptions, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::List::dtype(array: &vortex_array::arrays::list::ListData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::like::Like::validity(&self, _options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::List::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub struct vortex_array::scalar_fn::fns::like::LikeExecuteAdaptor(pub V) +pub fn vortex_array::arrays::List::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl core::default::Default for vortex_array::scalar_fn::fns::like::LikeExecuteAdaptor +pub fn vortex_array::arrays::List::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::scalar_fn::fns::like::LikeExecuteAdaptor::default() -> vortex_array::scalar_fn::fns::like::LikeExecuteAdaptor +pub fn vortex_array::arrays::List::len(array: &vortex_array::arrays::list::ListData) -> usize -impl core::fmt::Debug for vortex_array::scalar_fn::fns::like::LikeExecuteAdaptor +pub fn vortex_array::arrays::List::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::like::LikeExecuteAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::List::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::like::LikeExecuteAdaptor where V: vortex_array::scalar_fn::fns::like::LikeKernel +pub fn vortex_array::arrays::List::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub type vortex_array::scalar_fn::fns::like::LikeExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub fn vortex_array::arrays::List::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::like::LikeExecuteAdaptor::execute_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::like::Like>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::List::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub struct vortex_array::scalar_fn::fns::like::LikeOptions +pub fn vortex_array::arrays::List::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub vortex_array::scalar_fn::fns::like::LikeOptions::case_insensitive: bool +pub fn vortex_array::arrays::List::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub vortex_array::scalar_fn::fns::like::LikeOptions::negated: bool +pub fn vortex_array::arrays::List::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -impl core::clone::Clone for vortex_array::scalar_fn::fns::like::LikeOptions +pub fn vortex_array::arrays::List::stats(array: &vortex_array::arrays::list::ListData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::scalar_fn::fns::like::LikeOptions::clone(&self) -> vortex_array::scalar_fn::fns::like::LikeOptions +pub fn vortex_array::arrays::List::vtable(_array: &vortex_array::arrays::list::ListData) -> &Self -impl core::cmp::Eq for vortex_array::scalar_fn::fns::like::LikeOptions +pub fn vortex_array::arrays::List::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl core::cmp::PartialEq for vortex_array::scalar_fn::fns::like::LikeOptions +impl vortex_array::VTable for vortex_array::arrays::ListView -pub fn vortex_array::scalar_fn::fns::like::LikeOptions::eq(&self, other: &vortex_array::scalar_fn::fns::like::LikeOptions) -> bool +pub type vortex_array::arrays::ListView::ArrayData = vortex_array::arrays::listview::ListViewData -impl core::default::Default for vortex_array::scalar_fn::fns::like::LikeOptions +pub type vortex_array::arrays::ListView::Metadata = vortex_array::ProstMetadata -pub fn vortex_array::scalar_fn::fns::like::LikeOptions::default() -> vortex_array::scalar_fn::fns::like::LikeOptions +pub type vortex_array::arrays::ListView::OperationsVTable = vortex_array::arrays::ListView -impl core::fmt::Debug for vortex_array::scalar_fn::fns::like::LikeOptions +pub type vortex_array::arrays::ListView::ValidityVTable = vortex_array::arrays::ListView -pub fn vortex_array::scalar_fn::fns::like::LikeOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::ListView::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl core::fmt::Display for vortex_array::scalar_fn::fns::like::LikeOptions +pub fn vortex_array::arrays::ListView::array_eq(array: &vortex_array::arrays::listview::ListViewData, other: &vortex_array::arrays::listview::ListViewData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::fns::like::LikeOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::ListView::array_hash(array: &vortex_array::arrays::listview::ListViewData, state: &mut H, precision: vortex_array::Precision) -impl core::hash::Hash for vortex_array::scalar_fn::fns::like::LikeOptions +pub fn vortex_array::arrays::ListView::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::scalar_fn::fns::like::LikeOptions::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::arrays::ListView::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -impl core::marker::Copy for vortex_array::scalar_fn::fns::like::LikeOptions +pub fn vortex_array::arrays::ListView::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -impl core::marker::StructuralPartialEq for vortex_array::scalar_fn::fns::like::LikeOptions +pub fn vortex_array::arrays::ListView::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub struct vortex_array::scalar_fn::fns::like::LikeReduceAdaptor(pub V) +pub fn vortex_array::arrays::ListView::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl core::default::Default for vortex_array::scalar_fn::fns::like::LikeReduceAdaptor +pub fn vortex_array::arrays::ListView::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::like::LikeReduceAdaptor::default() -> vortex_array::scalar_fn::fns::like::LikeReduceAdaptor +pub fn vortex_array::arrays::ListView::dtype(array: &vortex_array::arrays::listview::ListViewData) -> &vortex_array::dtype::DType -impl core::fmt::Debug for vortex_array::scalar_fn::fns::like::LikeReduceAdaptor +pub fn vortex_array::arrays::ListView::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::like::LikeReduceAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::ListView::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::like::LikeReduceAdaptor where V: vortex_array::scalar_fn::fns::like::LikeReduce +pub fn vortex_array::arrays::ListView::id(&self) -> vortex_array::ArrayId -pub type vortex_array::scalar_fn::fns::like::LikeReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub fn vortex_array::arrays::ListView::len(array: &vortex_array::arrays::listview::ListViewData) -> usize -pub fn vortex_array::scalar_fn::fns::like::LikeReduceAdaptor::reduce_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::like::Like>, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::ListView::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub trait vortex_array::scalar_fn::fns::like::LikeKernel: vortex_array::vtable::VTable +pub fn vortex_array::arrays::ListView::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::like::LikeKernel::like(array: &Self::Array, pattern: &vortex_array::ArrayRef, options: vortex_array::scalar_fn::fns::like::LikeOptions, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::ListView::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub trait vortex_array::scalar_fn::fns::like::LikeReduce: vortex_array::vtable::VTable +pub fn vortex_array::arrays::ListView::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::like::LikeReduce::like(array: &Self::Array, pattern: &vortex_array::ArrayRef, options: vortex_array::scalar_fn::fns::like::LikeOptions) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::ListView::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -impl vortex_array::scalar_fn::fns::like::LikeReduce for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::ListView::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::dict::Dict::like(array: &vortex_array::arrays::dict::DictArray, pattern: &vortex_array::ArrayRef, options: vortex_array::scalar_fn::fns::like::LikeOptions) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::ListView::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub mod vortex_array::scalar_fn::fns::list_contains +pub fn vortex_array::arrays::ListView::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub struct vortex_array::scalar_fn::fns::list_contains::ListContains +pub fn vortex_array::arrays::ListView::stats(array: &vortex_array::arrays::listview::ListViewData) -> &vortex_array::stats::ArrayStats -impl core::clone::Clone for vortex_array::scalar_fn::fns::list_contains::ListContains +pub fn vortex_array::arrays::ListView::vtable(_array: &vortex_array::arrays::listview::ListViewData) -> &Self -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::clone(&self) -> vortex_array::scalar_fn::fns::list_contains::ListContains +pub fn vortex_array::arrays::ListView::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::list_contains::ListContains +impl vortex_array::VTable for vortex_array::arrays::Masked -pub type vortex_array::scalar_fn::fns::list_contains::ListContains::Options = vortex_array::scalar_fn::EmptyOptions +pub type vortex_array::arrays::Masked::ArrayData = vortex_array::arrays::masked::MaskedData -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity +pub type vortex_array::arrays::Masked::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub type vortex_array::arrays::Masked::OperationsVTable = vortex_array::arrays::Masked -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Masked::ValidityVTable = vortex_array::arrays::Masked -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Masked::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::execute(&self, _options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Masked::array_eq(array: &vortex_array::arrays::masked::MaskedData, other: &vortex_array::arrays::masked::MaskedData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Masked::array_hash(array: &vortex_array::arrays::masked::MaskedData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::Masked::buffer(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::is_fallible(&self, _options: &Self::Options) -> bool +pub fn vortex_array::arrays::Masked::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::is_null_sensitive(&self, _instance: &Self::Options) -> bool +pub fn vortex_array::arrays::Masked::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Masked::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Masked::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::serialize(&self, _instance: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Masked::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Masked::dtype(array: &vortex_array::arrays::masked::MaskedData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Masked::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Masked::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::stat_falsification(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Masked::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Masked::len(array: &vortex_array::arrays::masked::MaskedData) -> usize -pub struct vortex_array::scalar_fn::fns::list_contains::ListContainsElementExecuteAdaptor(pub V) +pub fn vortex_array::arrays::Masked::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -impl core::default::Default for vortex_array::scalar_fn::fns::list_contains::ListContainsElementExecuteAdaptor +pub fn vortex_array::arrays::Masked::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::list_contains::ListContainsElementExecuteAdaptor::default() -> vortex_array::scalar_fn::fns::list_contains::ListContainsElementExecuteAdaptor +pub fn vortex_array::arrays::Masked::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -impl core::fmt::Debug for vortex_array::scalar_fn::fns::list_contains::ListContainsElementExecuteAdaptor +pub fn vortex_array::arrays::Masked::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::list_contains::ListContainsElementExecuteAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Masked::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::list_contains::ListContainsElementExecuteAdaptor where V: vortex_array::scalar_fn::fns::list_contains::ListContainsElementKernel +pub fn vortex_array::arrays::Masked::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub type vortex_array::scalar_fn::fns::list_contains::ListContainsElementExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub fn vortex_array::arrays::Masked::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::list_contains::ListContainsElementExecuteAdaptor::execute_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::list_contains::ListContains>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Masked::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub struct vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduceAdaptor(pub V) +pub fn vortex_array::arrays::Masked::stats(array: &vortex_array::arrays::masked::MaskedData) -> &vortex_array::stats::ArrayStats -impl core::default::Default for vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduceAdaptor +pub fn vortex_array::arrays::Masked::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduceAdaptor::default() -> vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduceAdaptor +pub fn vortex_array::arrays::Masked::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl core::fmt::Debug for vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduceAdaptor +impl vortex_array::VTable for vortex_array::arrays::Primitive -pub fn vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduceAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::arrays::Primitive::ArrayData = vortex_array::arrays::primitive::PrimitiveData -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduceAdaptor where V: vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduce +pub type vortex_array::arrays::Primitive::Metadata = vortex_array::EmptyMetadata -pub type vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub type vortex_array::arrays::Primitive::OperationsVTable = vortex_array::arrays::Primitive -pub fn vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduceAdaptor::reduce_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::list_contains::ListContains>, child_idx: usize) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Primitive::ValidityVTable = vortex_array::arrays::Primitive -pub trait vortex_array::scalar_fn::fns::list_contains::ListContainsElementKernel: vortex_array::vtable::VTable +pub fn vortex_array::arrays::Primitive::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::list_contains::ListContainsElementKernel::list_contains(list: &vortex_array::ArrayRef, element: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Primitive::array_eq(array: &vortex_array::arrays::primitive::PrimitiveData, other: &vortex_array::arrays::primitive::PrimitiveData, precision: vortex_array::Precision) -> bool -pub trait vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduce: vortex_array::vtable::VTable +pub fn vortex_array::arrays::Primitive::array_hash(array: &vortex_array::arrays::primitive::PrimitiveData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::scalar_fn::fns::list_contains::ListContainsElementReduce::list_contains(list: &vortex_array::ArrayRef, element: &Self::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Primitive::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub mod vortex_array::scalar_fn::fns::literal +pub fn vortex_array::arrays::Primitive::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub struct vortex_array::scalar_fn::fns::literal::Literal +pub fn vortex_array::arrays::Primitive::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -impl core::clone::Clone for vortex_array::scalar_fn::fns::literal::Literal +pub fn vortex_array::arrays::Primitive::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::scalar_fn::fns::literal::Literal::clone(&self) -> vortex_array::scalar_fn::fns::literal::Literal +pub fn vortex_array::arrays::Primitive::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::literal::Literal +pub fn vortex_array::arrays::Primitive::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::scalar_fn::fns::literal::Literal::Options = vortex_array::scalar::Scalar +pub fn vortex_array::arrays::Primitive::dtype(array: &vortex_array::arrays::primitive::PrimitiveData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::literal::Literal::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::Primitive::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::literal::Literal::child_name(&self, _instance: &Self::Options, _child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::arrays::Primitive::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::literal::Literal::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Primitive::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::scalar_fn::fns::literal::Literal::deserialize(&self, _metadata: &[u8], session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Primitive::len(array: &vortex_array::arrays::primitive::PrimitiveData) -> usize -pub fn vortex_array::scalar_fn::fns::literal::Literal::execute(&self, scalar: &vortex_array::scalar::Scalar, args: &dyn vortex_array::scalar_fn::ExecutionArgs, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Primitive::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::literal::Literal::fmt_sql(&self, scalar: &vortex_array::scalar::Scalar, _expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Primitive::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::literal::Literal::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::Primitive::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::literal::Literal::is_fallible(&self, _instance: &Self::Options) -> bool +pub fn vortex_array::arrays::Primitive::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::literal::Literal::is_null_sensitive(&self, _instance: &Self::Options) -> bool +pub fn vortex_array::arrays::Primitive::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::literal::Literal::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Primitive::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar_fn::fns::literal::Literal::return_dtype(&self, options: &Self::Options, _arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Primitive::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::literal::Literal::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Primitive::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::scalar_fn::fns::literal::Literal::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Primitive::stats(array: &vortex_array::arrays::primitive::PrimitiveData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::scalar_fn::fns::literal::Literal::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Primitive::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::scalar_fn::fns::literal::Literal::stat_expression(&self, scalar: &vortex_array::scalar::Scalar, _expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, _catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Primitive::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::literal::Literal::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +impl vortex_array::VTable for vortex_array::arrays::Shared -pub fn vortex_array::scalar_fn::fns::literal::Literal::validity(&self, scalar: &vortex_array::scalar::Scalar, _expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Shared::ArrayData = vortex_array::arrays::shared::SharedData -pub mod vortex_array::scalar_fn::fns::mask +pub type vortex_array::arrays::Shared::Metadata = vortex_array::EmptyMetadata -pub struct vortex_array::scalar_fn::fns::mask::Mask +pub type vortex_array::arrays::Shared::OperationsVTable = vortex_array::arrays::Shared -impl core::clone::Clone for vortex_array::scalar_fn::fns::mask::Mask +pub type vortex_array::arrays::Shared::ValidityVTable = vortex_array::arrays::Shared -pub fn vortex_array::scalar_fn::fns::mask::Mask::clone(&self) -> vortex_array::scalar_fn::fns::mask::Mask +pub fn vortex_array::arrays::Shared::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::mask::Mask +pub fn vortex_array::arrays::Shared::array_eq(array: &vortex_array::arrays::shared::SharedData, other: &vortex_array::arrays::shared::SharedData, precision: vortex_array::Precision) -> bool -pub type vortex_array::scalar_fn::fns::mask::Mask::Options = vortex_array::scalar_fn::EmptyOptions +pub fn vortex_array::arrays::Shared::array_hash(array: &vortex_array::arrays::shared::SharedData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::scalar_fn::fns::mask::Mask::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::Shared::buffer(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::scalar_fn::fns::mask::Mask::child_name(&self, _options: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::arrays::Shared::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::scalar_fn::fns::mask::Mask::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Shared::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::mask::Mask::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Shared::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::scalar_fn::fns::mask::Mask::execute(&self, _options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Shared::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::mask::Mask::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Shared::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::mask::Mask::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::Shared::dtype(array: &vortex_array::arrays::shared::SharedData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::mask::Mask::is_fallible(&self, options: &Self::Options) -> bool +pub fn vortex_array::arrays::Shared::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::mask::Mask::is_null_sensitive(&self, options: &Self::Options) -> bool +pub fn vortex_array::arrays::Shared::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::mask::Mask::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Shared::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::scalar_fn::fns::mask::Mask::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Shared::len(array: &vortex_array::arrays::shared::SharedData) -> usize -pub fn vortex_array::scalar_fn::fns::mask::Mask::serialize(&self, _options: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Shared::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::mask::Mask::simplify(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Shared::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::mask::Mask::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Shared::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::mask::Mask::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Shared::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::mask::Mask::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Shared::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::mask::Mask::validity(&self, _options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Shared::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub struct vortex_array::scalar_fn::fns::mask::MaskExecuteAdaptor(pub V) +pub fn vortex_array::arrays::Shared::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl core::default::Default for vortex_array::scalar_fn::fns::mask::MaskExecuteAdaptor +pub fn vortex_array::arrays::Shared::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::scalar_fn::fns::mask::MaskExecuteAdaptor::default() -> vortex_array::scalar_fn::fns::mask::MaskExecuteAdaptor +pub fn vortex_array::arrays::Shared::stats(array: &vortex_array::arrays::shared::SharedData) -> &vortex_array::stats::ArrayStats -impl core::fmt::Debug for vortex_array::scalar_fn::fns::mask::MaskExecuteAdaptor +pub fn vortex_array::arrays::Shared::vtable(_array: &vortex_array::arrays::shared::SharedData) -> &Self -pub fn vortex_array::scalar_fn::fns::mask::MaskExecuteAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Shared::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::mask::MaskExecuteAdaptor where V: vortex_array::scalar_fn::fns::mask::MaskKernel +impl vortex_array::VTable for vortex_array::arrays::Struct -pub type vortex_array::scalar_fn::fns::mask::MaskExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub type vortex_array::arrays::Struct::ArrayData = vortex_array::arrays::struct_::StructData -pub fn vortex_array::scalar_fn::fns::mask::MaskExecuteAdaptor::execute_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::mask::Mask>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Struct::Metadata = vortex_array::EmptyMetadata -pub struct vortex_array::scalar_fn::fns::mask::MaskReduceAdaptor(pub V) +pub type vortex_array::arrays::Struct::OperationsVTable = vortex_array::arrays::Struct -impl core::default::Default for vortex_array::scalar_fn::fns::mask::MaskReduceAdaptor +pub type vortex_array::arrays::Struct::ValidityVTable = vortex_array::arrays::Struct -pub fn vortex_array::scalar_fn::fns::mask::MaskReduceAdaptor::default() -> vortex_array::scalar_fn::fns::mask::MaskReduceAdaptor +pub fn vortex_array::arrays::Struct::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl core::fmt::Debug for vortex_array::scalar_fn::fns::mask::MaskReduceAdaptor +pub fn vortex_array::arrays::Struct::array_eq(array: &vortex_array::arrays::struct_::StructData, other: &vortex_array::arrays::struct_::StructData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::fns::mask::MaskReduceAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Struct::array_hash(array: &vortex_array::arrays::struct_::StructData, state: &mut H, precision: vortex_array::Precision) -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::mask::MaskReduceAdaptor where V: vortex_array::scalar_fn::fns::mask::MaskReduce +pub fn vortex_array::arrays::Struct::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub type vortex_array::scalar_fn::fns::mask::MaskReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub fn vortex_array::arrays::Struct::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::scalar_fn::fns::mask::MaskReduceAdaptor::reduce_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::mask::Mask>, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub trait vortex_array::scalar_fn::fns::mask::MaskKernel: vortex_array::vtable::VTable +pub fn vortex_array::arrays::Struct::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::scalar_fn::fns::mask::MaskKernel::mask(array: &Self::Array, mask: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::scalar_fn::fns::mask::MaskKernel for vortex_array::arrays::Chunked +pub fn vortex_array::arrays::Struct::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Chunked::mask(array: &vortex_array::arrays::ChunkedArray, mask: &vortex_array::ArrayRef, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::dtype(array: &vortex_array::arrays::struct_::StructData) -> &vortex_array::dtype::DType -pub trait vortex_array::scalar_fn::fns::mask::MaskReduce: vortex_array::vtable::VTable +pub fn vortex_array::arrays::Struct::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::mask::MaskReduce::mask(array: &Self::Array, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Bool +pub fn vortex_array::arrays::Struct::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Bool::mask(array: &vortex_array::arrays::BoolArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::len(array: &vortex_array::arrays::struct_::StructData) -> usize -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Decimal +pub fn vortex_array::arrays::Struct::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Decimal::mask(array: &vortex_array::arrays::DecimalArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Extension +pub fn vortex_array::arrays::Struct::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Extension::mask(array: &vortex_array::arrays::ExtensionArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::FixedSizeList +pub fn vortex_array::arrays::Struct::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::FixedSizeList::mask(array: &vortex_array::arrays::FixedSizeListArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::List +pub fn vortex_array::arrays::Struct::slot_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::List::mask(array: &vortex_array::arrays::ListArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::ListView +pub fn vortex_array::arrays::Struct::stats(array: &vortex_array::arrays::struct_::StructData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::ListView::mask(array: &vortex_array::arrays::ListViewArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::vtable(_array: &Self::ArrayData) -> &Self -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Masked +pub fn vortex_array::arrays::Struct::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Masked::mask(array: &vortex_array::arrays::MaskedArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +impl vortex_array::VTable for vortex_array::arrays::VarBin -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Primitive +pub type vortex_array::arrays::VarBin::ArrayData = vortex_array::arrays::varbin::VarBinData -pub fn vortex_array::arrays::Primitive::mask(array: &vortex_array::arrays::PrimitiveArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub type vortex_array::arrays::VarBin::Metadata = vortex_array::ProstMetadata -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::Struct +pub type vortex_array::arrays::VarBin::OperationsVTable = vortex_array::arrays::VarBin -pub fn vortex_array::arrays::Struct::mask(array: &vortex_array::arrays::StructArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub type vortex_array::arrays::VarBin::ValidityVTable = vortex_array::arrays::VarBin -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::VarBin +pub fn vortex_array::arrays::VarBin::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::VarBin::mask(array: &vortex_array::arrays::VarBinArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::array_eq(array: &vortex_array::arrays::varbin::VarBinData, other: &vortex_array::arrays::varbin::VarBinData, precision: vortex_array::Precision) -> bool -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::VarBinView +pub fn vortex_array::arrays::VarBin::array_hash(array: &vortex_array::arrays::varbin::VarBinData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::VarBinView::mask(array: &vortex_array::arrays::VarBinViewArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::VarBin::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::dict::Dict::mask(array: &vortex_array::arrays::dict::DictArray, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::fns::mask::MaskReduce for vortex_array::arrays::null::Null +pub fn vortex_array::arrays::VarBin::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::null::Null::mask(array: &vortex_array::arrays::null::NullArray, _mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub mod vortex_array::scalar_fn::fns::merge +pub fn vortex_array::arrays::VarBin::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub enum vortex_array::scalar_fn::fns::merge::DuplicateHandling +pub fn vortex_array::arrays::VarBin::dtype(array: &vortex_array::arrays::varbin::VarBinData) -> &vortex_array::dtype::DType -pub vortex_array::scalar_fn::fns::merge::DuplicateHandling::Error +pub fn vortex_array::arrays::VarBin::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub vortex_array::scalar_fn::fns::merge::DuplicateHandling::RightMost +pub fn vortex_array::arrays::VarBin::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl core::clone::Clone for vortex_array::scalar_fn::fns::merge::DuplicateHandling +pub fn vortex_array::arrays::VarBin::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::scalar_fn::fns::merge::DuplicateHandling::clone(&self) -> vortex_array::scalar_fn::fns::merge::DuplicateHandling +pub fn vortex_array::arrays::VarBin::len(array: &vortex_array::arrays::varbin::VarBinData) -> usize -impl core::cmp::Eq for vortex_array::scalar_fn::fns::merge::DuplicateHandling +pub fn vortex_array::arrays::VarBin::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -impl core::cmp::PartialEq for vortex_array::scalar_fn::fns::merge::DuplicateHandling +pub fn vortex_array::arrays::VarBin::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::merge::DuplicateHandling::eq(&self, other: &vortex_array::scalar_fn::fns::merge::DuplicateHandling) -> bool +pub fn vortex_array::arrays::VarBin::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -impl core::default::Default for vortex_array::scalar_fn::fns::merge::DuplicateHandling +pub fn vortex_array::arrays::VarBin::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::merge::DuplicateHandling::default() -> vortex_array::scalar_fn::fns::merge::DuplicateHandling +pub fn vortex_array::arrays::VarBin::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -impl core::fmt::Debug for vortex_array::scalar_fn::fns::merge::DuplicateHandling +pub fn vortex_array::arrays::VarBin::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar_fn::fns::merge::DuplicateHandling::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::VarBin::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl core::fmt::Display for vortex_array::scalar_fn::fns::merge::DuplicateHandling +pub fn vortex_array::arrays::VarBin::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::scalar_fn::fns::merge::DuplicateHandling::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::VarBin::stats(array: &vortex_array::arrays::varbin::VarBinData) -> &vortex_array::stats::ArrayStats -impl core::hash::Hash for vortex_array::scalar_fn::fns::merge::DuplicateHandling +pub fn vortex_array::arrays::VarBin::vtable(_array: &vortex_array::arrays::varbin::VarBinData) -> &Self -pub fn vortex_array::scalar_fn::fns::merge::DuplicateHandling::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::arrays::VarBin::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl core::marker::Copy for vortex_array::scalar_fn::fns::merge::DuplicateHandling +impl vortex_array::VTable for vortex_array::arrays::VarBinView -impl core::marker::StructuralPartialEq for vortex_array::scalar_fn::fns::merge::DuplicateHandling +pub type vortex_array::arrays::VarBinView::ArrayData = vortex_array::arrays::varbinview::VarBinViewData -pub struct vortex_array::scalar_fn::fns::merge::Merge +pub type vortex_array::arrays::VarBinView::Metadata = vortex_array::EmptyMetadata -impl core::clone::Clone for vortex_array::scalar_fn::fns::merge::Merge +pub type vortex_array::arrays::VarBinView::OperationsVTable = vortex_array::arrays::VarBinView -pub fn vortex_array::scalar_fn::fns::merge::Merge::clone(&self) -> vortex_array::scalar_fn::fns::merge::Merge +pub type vortex_array::arrays::VarBinView::ValidityVTable = vortex_array::arrays::VarBinView -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::merge::Merge +pub fn vortex_array::arrays::VarBinView::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub type vortex_array::scalar_fn::fns::merge::Merge::Options = vortex_array::scalar_fn::fns::merge::DuplicateHandling +pub fn vortex_array::arrays::VarBinView::array_eq(array: &vortex_array::arrays::varbinview::VarBinViewData, other: &vortex_array::arrays::varbinview::VarBinViewData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::fns::merge::Merge::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::VarBinView::array_hash(array: &vortex_array::arrays::varbinview::VarBinViewData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::scalar_fn::fns::merge::Merge::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::arrays::VarBinView::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::scalar_fn::fns::merge::Merge::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBinView::buffer_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::scalar_fn::fns::merge::Merge::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinView::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::merge::Merge::execute(&self, options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinView::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::scalar_fn::fns::merge::Merge::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::VarBinView::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::merge::Merge::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::VarBinView::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::merge::Merge::is_fallible(&self, instance: &Self::Options) -> bool +pub fn vortex_array::arrays::VarBinView::dtype(array: &vortex_array::arrays::varbinview::VarBinViewData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::merge::Merge::is_null_sensitive(&self, _instance: &Self::Options) -> bool +pub fn vortex_array::arrays::VarBinView::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::merge::Merge::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBinView::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::merge::Merge::return_dtype(&self, options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinView::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::scalar_fn::fns::merge::Merge::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::VarBinView::len(array: &vortex_array::arrays::varbinview::VarBinViewData) -> usize -pub fn vortex_array::scalar_fn::fns::merge::Merge::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBinView::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::merge::Merge::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBinView::nbuffers(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::merge::Merge::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::VarBinView::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::merge::Merge::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::VarBinView::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::merge::Merge::validity(&self, _options: &Self::Options, _expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBinView::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub mod vortex_array::scalar_fn::fns::not +pub fn vortex_array::arrays::VarBinView::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub struct vortex_array::scalar_fn::fns::not::Not +pub fn vortex_array::arrays::VarBinView::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl core::clone::Clone for vortex_array::scalar_fn::fns::not::Not +pub fn vortex_array::arrays::VarBinView::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::scalar_fn::fns::not::Not::clone(&self) -> vortex_array::scalar_fn::fns::not::Not +pub fn vortex_array::arrays::VarBinView::stats(array: &vortex_array::arrays::varbinview::VarBinViewData) -> &vortex_array::stats::ArrayStats -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::not::Not +pub fn vortex_array::arrays::VarBinView::vtable(_array: &vortex_array::arrays::varbinview::VarBinViewData) -> &Self -pub type vortex_array::scalar_fn::fns::not::Not::Options = vortex_array::scalar_fn::EmptyOptions +pub fn vortex_array::arrays::VarBinView::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::not::Not::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity +impl vortex_array::VTable for vortex_array::arrays::Variant -pub fn vortex_array::scalar_fn::fns::not::Not::child_name(&self, _options: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub type vortex_array::arrays::Variant::ArrayData = vortex_array::arrays::variant::VariantData -pub fn vortex_array::scalar_fn::fns::not::Not::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Variant::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::scalar_fn::fns::not::Not::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub type vortex_array::arrays::Variant::OperationsVTable = vortex_array::arrays::Variant -pub fn vortex_array::scalar_fn::fns::not::Not::execute(&self, _data: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub type vortex_array::arrays::Variant::ValidityVTable = vortex_array::arrays::Variant -pub fn vortex_array::scalar_fn::fns::not::Not::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Variant::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::not::Not::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::Variant::array_eq(array: &vortex_array::arrays::variant::VariantData, other: &vortex_array::arrays::variant::VariantData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::fns::not::Not::is_fallible(&self, _options: &Self::Options) -> bool +pub fn vortex_array::arrays::Variant::array_hash(array: &vortex_array::arrays::variant::VariantData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::scalar_fn::fns::not::Not::is_null_sensitive(&self, _options: &Self::Options) -> bool +pub fn vortex_array::arrays::Variant::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::scalar_fn::fns::not::Not::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Variant::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::scalar_fn::fns::not::Not::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::not::Not::serialize(&self, _options: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Variant::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::scalar_fn::fns::not::Not::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Variant::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::not::Not::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Variant::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::not::Not::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Variant::dtype(array: &Self::ArrayData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::not::Not::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Variant::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::not::Not::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Variant::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub struct vortex_array::scalar_fn::fns::not::NotExecuteAdaptor(pub V) +pub fn vortex_array::arrays::Variant::id(&self) -> vortex_array::ArrayId -impl core::default::Default for vortex_array::scalar_fn::fns::not::NotExecuteAdaptor +pub fn vortex_array::arrays::Variant::len(array: &Self::ArrayData) -> usize -pub fn vortex_array::scalar_fn::fns::not::NotExecuteAdaptor::default() -> vortex_array::scalar_fn::fns::not::NotExecuteAdaptor +pub fn vortex_array::arrays::Variant::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::scalar_fn::fns::not::NotExecuteAdaptor +pub fn vortex_array::arrays::Variant::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::not::NotExecuteAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Variant::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::not::NotExecuteAdaptor where V: vortex_array::scalar_fn::fns::not::NotKernel +pub fn vortex_array::arrays::Variant::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub type vortex_array::scalar_fn::fns::not::NotExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub fn vortex_array::arrays::Variant::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::not::NotExecuteAdaptor::execute_parent(&self, array: &::Array, _parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::not::Not>, _child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Variant::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub struct vortex_array::scalar_fn::fns::not::NotReduceAdaptor(pub V) +pub fn vortex_array::arrays::Variant::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl core::default::Default for vortex_array::scalar_fn::fns::not::NotReduceAdaptor +pub fn vortex_array::arrays::Variant::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::scalar_fn::fns::not::NotReduceAdaptor::default() -> vortex_array::scalar_fn::fns::not::NotReduceAdaptor +pub fn vortex_array::arrays::Variant::stats(array: &Self::ArrayData) -> &vortex_array::stats::ArrayStats -impl core::fmt::Debug for vortex_array::scalar_fn::fns::not::NotReduceAdaptor +pub fn vortex_array::arrays::Variant::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::scalar_fn::fns::not::NotReduceAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Variant::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::not::NotReduceAdaptor where V: vortex_array::scalar_fn::fns::not::NotReduce +impl vortex_array::VTable for vortex_array::arrays::dict::Dict -pub type vortex_array::scalar_fn::fns::not::NotReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub type vortex_array::arrays::dict::Dict::ArrayData = vortex_array::arrays::dict::DictData -pub fn vortex_array::scalar_fn::fns::not::NotReduceAdaptor::reduce_parent(&self, array: &::Array, _parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::not::Not>, _child_idx: usize) -> vortex_error::VortexResult> +pub type vortex_array::arrays::dict::Dict::Metadata = vortex_array::ProstMetadata -pub trait vortex_array::scalar_fn::fns::not::NotKernel: vortex_array::vtable::VTable +pub type vortex_array::arrays::dict::Dict::OperationsVTable = vortex_array::arrays::dict::Dict -pub fn vortex_array::scalar_fn::fns::not::NotKernel::invert(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub type vortex_array::arrays::dict::Dict::ValidityVTable = vortex_array::arrays::dict::Dict -pub trait vortex_array::scalar_fn::fns::not::NotReduce: vortex_array::vtable::VTable +pub fn vortex_array::arrays::dict::Dict::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::not::NotReduce::invert(array: &Self::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::array_eq(array: &vortex_array::arrays::dict::DictData, other: &vortex_array::arrays::dict::DictData, precision: vortex_array::Precision) -> bool -impl vortex_array::scalar_fn::fns::not::NotReduce for vortex_array::arrays::Constant +pub fn vortex_array::arrays::dict::Dict::array_hash(array: &vortex_array::arrays::dict::DictData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::Constant::invert(array: &vortex_array::arrays::ConstantArray) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub mod vortex_array::scalar_fn::fns::operators +pub fn vortex_array::arrays::dict::Dict::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub enum vortex_array::scalar_fn::fns::operators::CompareOperator +pub fn vortex_array::arrays::dict::Dict::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub vortex_array::scalar_fn::fns::operators::CompareOperator::Eq +pub fn vortex_array::arrays::dict::Dict::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub vortex_array::scalar_fn::fns::operators::CompareOperator::Gt +pub fn vortex_array::arrays::dict::Dict::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub vortex_array::scalar_fn::fns::operators::CompareOperator::Gte +pub fn vortex_array::arrays::dict::Dict::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub vortex_array::scalar_fn::fns::operators::CompareOperator::Lt +pub fn vortex_array::arrays::dict::Dict::dtype(array: &vortex_array::arrays::dict::DictData) -> &vortex_array::dtype::DType -pub vortex_array::scalar_fn::fns::operators::CompareOperator::Lte +pub fn vortex_array::arrays::dict::Dict::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub vortex_array::scalar_fn::fns::operators::CompareOperator::NotEq +pub fn vortex_array::arrays::dict::Dict::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::scalar_fn::fns::operators::CompareOperator +pub fn vortex_array::arrays::dict::Dict::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::scalar_fn::fns::operators::CompareOperator::inverse(self) -> Self +pub fn vortex_array::arrays::dict::Dict::len(array: &vortex_array::arrays::dict::DictData) -> usize -pub fn vortex_array::scalar_fn::fns::operators::CompareOperator::swap(self) -> Self +pub fn vortex_array::arrays::dict::Dict::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -impl core::clone::Clone for vortex_array::scalar_fn::fns::operators::CompareOperator +pub fn vortex_array::arrays::dict::Dict::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::operators::CompareOperator::clone(&self) -> vortex_array::scalar_fn::fns::operators::CompareOperator +pub fn vortex_array::arrays::dict::Dict::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -impl core::cmp::Eq for vortex_array::scalar_fn::fns::operators::CompareOperator +pub fn vortex_array::arrays::dict::Dict::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -impl core::cmp::PartialEq for vortex_array::scalar_fn::fns::operators::CompareOperator +pub fn vortex_array::arrays::dict::Dict::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::operators::CompareOperator::eq(&self, other: &vortex_array::scalar_fn::fns::operators::CompareOperator) -> bool +pub fn vortex_array::arrays::dict::Dict::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -impl core::cmp::PartialOrd for vortex_array::scalar_fn::fns::operators::CompareOperator +pub fn vortex_array::arrays::dict::Dict::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::operators::CompareOperator::partial_cmp(&self, other: &vortex_array::scalar_fn::fns::operators::CompareOperator) -> core::option::Option +pub fn vortex_array::arrays::dict::Dict::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -impl core::convert::From for vortex_array::scalar_fn::fns::operators::Operator +pub fn vortex_array::arrays::dict::Dict::stats(array: &vortex_array::arrays::dict::DictData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::scalar_fn::fns::operators::Operator::from(value: vortex_array::scalar_fn::fns::operators::CompareOperator) -> Self +pub fn vortex_array::arrays::dict::Dict::vtable(_array: &Self::ArrayData) -> &Self -impl core::convert::TryFrom for vortex_array::scalar_fn::fns::operators::CompareOperator +pub fn vortex_array::arrays::dict::Dict::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub type vortex_array::scalar_fn::fns::operators::CompareOperator::Error = vortex_error::VortexError +impl vortex_array::VTable for vortex_array::arrays::null::Null -pub fn vortex_array::scalar_fn::fns::operators::CompareOperator::try_from(value: vortex_array::scalar_fn::fns::operators::Operator) -> core::result::Result +pub type vortex_array::arrays::null::Null::ArrayData = vortex_array::arrays::null::NullData -impl core::fmt::Debug for vortex_array::scalar_fn::fns::operators::CompareOperator +pub type vortex_array::arrays::null::Null::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::scalar_fn::fns::operators::CompareOperator::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::arrays::null::Null::OperationsVTable = vortex_array::arrays::null::Null -impl core::fmt::Display for vortex_array::scalar_fn::fns::operators::CompareOperator +pub type vortex_array::arrays::null::Null::ValidityVTable = vortex_array::arrays::null::Null -pub fn vortex_array::scalar_fn::fns::operators::CompareOperator::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::null::Null::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl core::hash::Hash for vortex_array::scalar_fn::fns::operators::CompareOperator +pub fn vortex_array::arrays::null::Null::array_eq(_array: &vortex_array::arrays::null::NullData, _other: &vortex_array::arrays::null::NullData, _precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::fns::operators::CompareOperator::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::arrays::null::Null::array_hash(_array: &vortex_array::arrays::null::NullData, _state: &mut H, _precision: vortex_array::Precision) -impl core::marker::Copy for vortex_array::scalar_fn::fns::operators::CompareOperator +pub fn vortex_array::arrays::null::Null::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -impl core::marker::StructuralPartialEq for vortex_array::scalar_fn::fns::operators::CompareOperator +pub fn vortex_array::arrays::null::Null::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub enum vortex_array::scalar_fn::fns::operators::Operator +pub fn vortex_array::arrays::null::Null::build(_dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], _children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub vortex_array::scalar_fn::fns::operators::Operator::Add +pub fn vortex_array::arrays::null::Null::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub vortex_array::scalar_fn::fns::operators::Operator::And +pub fn vortex_array::arrays::null::Null::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub vortex_array::scalar_fn::fns::operators::Operator::Div +pub fn vortex_array::arrays::null::Null::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub vortex_array::scalar_fn::fns::operators::Operator::Eq +pub fn vortex_array::arrays::null::Null::dtype(_array: &vortex_array::arrays::null::NullData) -> &vortex_array::dtype::DType -pub vortex_array::scalar_fn::fns::operators::Operator::Gt +pub fn vortex_array::arrays::null::Null::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub vortex_array::scalar_fn::fns::operators::Operator::Gte +pub fn vortex_array::arrays::null::Null::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub vortex_array::scalar_fn::fns::operators::Operator::Lt +pub fn vortex_array::arrays::null::Null::id(&self) -> vortex_array::ArrayId -pub vortex_array::scalar_fn::fns::operators::Operator::Lte +pub fn vortex_array::arrays::null::Null::len(array: &vortex_array::arrays::null::NullData) -> usize -pub vortex_array::scalar_fn::fns::operators::Operator::Mul +pub fn vortex_array::arrays::null::Null::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub vortex_array::scalar_fn::fns::operators::Operator::NotEq +pub fn vortex_array::arrays::null::Null::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub vortex_array::scalar_fn::fns::operators::Operator::Or +pub fn vortex_array::arrays::null::Null::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub vortex_array::scalar_fn::fns::operators::Operator::Sub +pub fn vortex_array::arrays::null::Null::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -impl vortex_array::scalar_fn::fns::operators::Operator +pub fn vortex_array::arrays::null::Null::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::operators::Operator::inverse(self) -> core::option::Option +pub fn vortex_array::arrays::null::Null::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar_fn::fns::operators::Operator::is_arithmetic(&self) -> bool +pub fn vortex_array::arrays::null::Null::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::operators::Operator::is_comparison(&self) -> bool +pub fn vortex_array::arrays::null::Null::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::scalar_fn::fns::operators::Operator::logical_inverse(self) -> core::option::Option +pub fn vortex_array::arrays::null::Null::stats(array: &vortex_array::arrays::null::NullData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::scalar_fn::fns::operators::Operator::swap(self) -> core::option::Option +pub fn vortex_array::arrays::null::Null::vtable(_array: &Self::ArrayData) -> &Self -impl core::clone::Clone for vortex_array::scalar_fn::fns::operators::Operator +pub fn vortex_array::arrays::null::Null::with_slots(_array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::operators::Operator::clone(&self) -> vortex_array::scalar_fn::fns::operators::Operator +impl vortex_array::VTable for vortex_array::arrays::patched::Patched -impl core::cmp::Eq for vortex_array::scalar_fn::fns::operators::Operator +pub type vortex_array::arrays::patched::Patched::ArrayData = vortex_array::arrays::patched::PatchedArray -impl core::cmp::PartialEq for vortex_array::scalar_fn::fns::operators::Operator +pub type vortex_array::arrays::patched::Patched::Metadata = vortex_array::ProstMetadata -pub fn vortex_array::scalar_fn::fns::operators::Operator::eq(&self, other: &vortex_array::scalar_fn::fns::operators::Operator) -> bool +pub type vortex_array::arrays::patched::Patched::OperationsVTable = vortex_array::arrays::patched::Patched -impl core::cmp::PartialOrd for vortex_array::scalar_fn::fns::operators::Operator +pub type vortex_array::arrays::patched::Patched::ValidityVTable = vortex_array::ValidityVTableFromChild -pub fn vortex_array::scalar_fn::fns::operators::Operator::partial_cmp(&self, other: &vortex_array::scalar_fn::fns::operators::Operator) -> core::option::Option +pub fn vortex_array::arrays::patched::Patched::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl core::convert::From for vortex_array::scalar_fn::fns::operators::Operator +pub fn vortex_array::arrays::patched::Patched::array_eq(array: &vortex_array::arrays::patched::PatchedArray, other: &vortex_array::arrays::patched::PatchedArray, precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::fns::operators::Operator::from(op: vortex_array::scalar::NumericOperator) -> Self +pub fn vortex_array::arrays::patched::Patched::array_hash(array: &vortex_array::arrays::patched::PatchedArray, state: &mut H, precision: vortex_array::Precision) -impl core::convert::From for vortex_array::scalar_fn::fns::operators::Operator +pub fn vortex_array::arrays::patched::Patched::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::scalar_fn::fns::operators::Operator::from(value: vortex_array::scalar_fn::fns::operators::CompareOperator) -> Self +pub fn vortex_array::arrays::patched::Patched::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -impl core::convert::From for i32 +pub fn vortex_array::arrays::patched::Patched::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn i32::from(value: vortex_array::scalar_fn::fns::operators::Operator) -> Self +pub fn vortex_array::arrays::patched::Patched::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -impl core::convert::From for vortex_proto::expr::binary_opts::BinaryOp +pub fn vortex_array::arrays::patched::Patched::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_proto::expr::binary_opts::BinaryOp::from(value: vortex_array::scalar_fn::fns::operators::Operator) -> Self +pub fn vortex_array::arrays::patched::Patched::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl core::convert::From for vortex_array::scalar_fn::fns::operators::Operator +pub fn vortex_array::arrays::patched::Patched::dtype(array: &Self::ArrayData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::operators::Operator::from(value: vortex_proto::expr::binary_opts::BinaryOp) -> Self +pub fn vortex_array::arrays::patched::Patched::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::convert::TryFrom for vortex_array::scalar_fn::fns::operators::Operator +pub fn vortex_array::arrays::patched::Patched::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub type vortex_array::scalar_fn::fns::operators::Operator::Error = vortex_error::VortexError +pub fn vortex_array::arrays::patched::Patched::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::scalar_fn::fns::operators::Operator::try_from(value: i32) -> core::result::Result +pub fn vortex_array::arrays::patched::Patched::len(array: &Self::ArrayData) -> usize -impl core::convert::TryFrom for vortex_array::scalar_fn::fns::operators::CompareOperator +pub fn vortex_array::arrays::patched::Patched::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub type vortex_array::scalar_fn::fns::operators::CompareOperator::Error = vortex_error::VortexError +pub fn vortex_array::arrays::patched::Patched::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::operators::CompareOperator::try_from(value: vortex_array::scalar_fn::fns::operators::Operator) -> core::result::Result +pub fn vortex_array::arrays::patched::Patched::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -impl core::fmt::Debug for vortex_array::scalar_fn::fns::operators::Operator +pub fn vortex_array::arrays::patched::Patched::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::operators::Operator::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::patched::Patched::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -impl core::fmt::Display for vortex_array::scalar_fn::fns::operators::Operator +pub fn vortex_array::arrays::patched::Patched::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar_fn::fns::operators::Operator::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::patched::Patched::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl core::hash::Hash for vortex_array::scalar_fn::fns::operators::Operator +pub fn vortex_array::arrays::patched::Patched::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::scalar_fn::fns::operators::Operator::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::arrays::patched::Patched::stats(array: &Self::ArrayData) -> &vortex_array::stats::ArrayStats -impl core::marker::Copy for vortex_array::scalar_fn::fns::operators::Operator +pub fn vortex_array::arrays::patched::Patched::vtable(_array: &Self::ArrayData) -> &Self -impl core::marker::StructuralPartialEq for vortex_array::scalar_fn::fns::operators::Operator +pub fn vortex_array::arrays::patched::Patched::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub mod vortex_array::scalar_fn::fns::pack +impl vortex_array::VTable for vortex_array::arrays::scalar_fn::ScalarFnVTable -pub struct vortex_array::scalar_fn::fns::pack::Pack +pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::ArrayData = vortex_array::arrays::scalar_fn::ScalarFnData -impl core::clone::Clone for vortex_array::scalar_fn::fns::pack::Pack +pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::Metadata = vortex_array::arrays::scalar_fn::metadata::ScalarFnMetadata -pub fn vortex_array::scalar_fn::fns::pack::Pack::clone(&self) -> vortex_array::scalar_fn::fns::pack::Pack +pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::OperationsVTable = vortex_array::arrays::scalar_fn::ScalarFnVTable -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::pack::Pack +pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::ValidityVTable = vortex_array::arrays::scalar_fn::ScalarFnVTable -pub type vortex_array::scalar_fn::fns::pack::Pack::Options = vortex_array::scalar_fn::fns::pack::PackOptions +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::pack::Pack::arity(&self, options: &Self::Options) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::array_eq(array: &vortex_array::arrays::scalar_fn::ScalarFnData, other: &vortex_array::arrays::scalar_fn::ScalarFnData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::fns::pack::Pack::child_name(&self, instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::array_hash(array: &vortex_array::arrays::scalar_fn::ScalarFnData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::scalar_fn::fns::pack::Pack::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::scalar_fn::fns::pack::Pack::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::scalar_fn::fns::pack::Pack::execute(&self, options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::scalar_fn::metadata::ScalarFnMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::pack::Pack::fmt_sql(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::scalar_fn::fns::pack::Pack::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::pack::Pack::is_fallible(&self, _instance: &Self::Options) -> bool +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::pack::Pack::is_null_sensitive(&self, _instance: &Self::Options) -> bool +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::dtype(array: &vortex_array::arrays::scalar_fn::ScalarFnData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::pack::Pack::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::pack::Pack::return_dtype(&self, options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::pack::Pack::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::scalar_fn::fns::pack::Pack::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::len(array: &vortex_array::arrays::scalar_fn::ScalarFnData) -> usize -pub fn vortex_array::scalar_fn::fns::pack::Pack::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::pack::Pack::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::pack::Pack::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::pack::Pack::validity(&self, _options: &Self::Options, _expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub struct vortex_array::scalar_fn::fns::pack::PackOptions +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub vortex_array::scalar_fn::fns::pack::PackOptions::names: vortex_array::dtype::FieldNames +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub vortex_array::scalar_fn::fns::pack::PackOptions::nullability: vortex_array::dtype::Nullability +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::slot_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl core::clone::Clone for vortex_array::scalar_fn::fns::pack::PackOptions +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::scalar_fn::fns::pack::PackOptions::clone(&self) -> vortex_array::scalar_fn::fns::pack::PackOptions +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::stats(array: &vortex_array::arrays::scalar_fn::ScalarFnData) -> &vortex_array::stats::ArrayStats -impl core::cmp::Eq for vortex_array::scalar_fn::fns::pack::PackOptions +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::vtable(array: &vortex_array::arrays::scalar_fn::ScalarFnData) -> &Self -impl core::cmp::PartialEq for vortex_array::scalar_fn::fns::pack::PackOptions +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::pack::PackOptions::eq(&self, other: &vortex_array::scalar_fn::fns::pack::PackOptions) -> bool +impl vortex_array::VTable for vortex_array::arrays::slice::Slice -impl core::fmt::Debug for vortex_array::scalar_fn::fns::pack::PackOptions +pub type vortex_array::arrays::slice::Slice::ArrayData = vortex_array::arrays::slice::SliceData -pub fn vortex_array::scalar_fn::fns::pack::PackOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::arrays::slice::Slice::Metadata = vortex_array::arrays::slice::SliceMetadata -impl core::fmt::Display for vortex_array::scalar_fn::fns::pack::PackOptions +pub type vortex_array::arrays::slice::Slice::OperationsVTable = vortex_array::arrays::slice::Slice -pub fn vortex_array::scalar_fn::fns::pack::PackOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::arrays::slice::Slice::ValidityVTable = vortex_array::arrays::slice::Slice -impl core::hash::Hash for vortex_array::scalar_fn::fns::pack::PackOptions +pub fn vortex_array::arrays::slice::Slice::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::pack::PackOptions::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::arrays::slice::Slice::array_eq(array: &vortex_array::arrays::slice::SliceData, other: &vortex_array::arrays::slice::SliceData, precision: vortex_array::Precision) -> bool -impl core::marker::StructuralPartialEq for vortex_array::scalar_fn::fns::pack::PackOptions +pub fn vortex_array::arrays::slice::Slice::array_hash(array: &vortex_array::arrays::slice::SliceData, state: &mut H, precision: vortex_array::Precision) -pub mod vortex_array::scalar_fn::fns::root +pub fn vortex_array::arrays::slice::Slice::buffer(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> vortex_array::buffer::BufferHandle -pub struct vortex_array::scalar_fn::fns::root::Root +pub fn vortex_array::arrays::slice::Slice::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -impl core::clone::Clone for vortex_array::scalar_fn::fns::root::Root +pub fn vortex_array::arrays::slice::Slice::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::slice::SliceMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::root::Root::clone(&self) -> vortex_array::scalar_fn::fns::root::Root +pub fn vortex_array::arrays::slice::Slice::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::root::Root +pub fn vortex_array::arrays::slice::Slice::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub type vortex_array::scalar_fn::fns::root::Root::Options = vortex_array::scalar_fn::EmptyOptions +pub fn vortex_array::arrays::slice::Slice::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::root::Root::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::slice::Slice::dtype(array: &vortex_array::arrays::slice::SliceData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::root::Root::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::arrays::slice::Slice::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::root::Root::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::slice::Slice::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::root::Root::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::slice::Slice::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::scalar_fn::fns::root::Root::execute(&self, _data: &Self::Options, _args: &dyn vortex_array::scalar_fn::ExecutionArgs, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::slice::Slice::len(array: &vortex_array::arrays::slice::SliceData) -> usize -pub fn vortex_array::scalar_fn::fns::root::Root::fmt_sql(&self, _options: &Self::Options, _expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::slice::Slice::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::root::Root::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::slice::Slice::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::root::Root::is_fallible(&self, _options: &Self::Options) -> bool +pub fn vortex_array::arrays::slice::Slice::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::root::Root::is_null_sensitive(&self, _options: &Self::Options) -> bool +pub fn vortex_array::arrays::slice::Slice::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::root::Root::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::slice::Slice::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::root::Root::return_dtype(&self, _options: &Self::Options, _arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::slice::Slice::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar_fn::fns::root::Root::serialize(&self, _instance: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::slice::Slice::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::root::Root::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::slice::Slice::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::scalar_fn::fns::root::Root::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::slice::Slice::stats(array: &vortex_array::arrays::slice::SliceData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::scalar_fn::fns::root::Root::stat_expression(&self, _options: &Self::Options, _expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::slice::Slice::vtable(_array: &vortex_array::arrays::slice::SliceData) -> &Self -pub fn vortex_array::scalar_fn::fns::root::Root::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::slice::Slice::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::root::Root::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub trait vortex_array::vtable::DynVTable: 'static + core::marker::Send + core::marker::Sync + core::fmt::Debug -pub mod vortex_array::scalar_fn::fns::select +pub fn vortex_array::vtable::DynVTable::build(&self, id: vortex_array::ArrayId, dtype: &vortex_array::dtype::DType, len: usize, metadata: &[u8], buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren, session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub enum vortex_array::scalar_fn::fns::select::FieldSelection +pub fn vortex_array::vtable::DynVTable::clone_boxed(&self) -> alloc::boxed::Box -pub vortex_array::scalar_fn::fns::select::FieldSelection::Exclude(vortex_array::dtype::FieldNames) +pub fn vortex_array::vtable::DynVTable::execute(&self, array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub vortex_array::scalar_fn::fns::select::FieldSelection::Include(vortex_array::dtype::FieldNames) +pub fn vortex_array::vtable::DynVTable::execute_parent(&self, array: &vortex_array::ArrayRef, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::scalar_fn::fns::select::FieldSelection +pub fn vortex_array::vtable::DynVTable::reduce(&self, array: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::select::FieldSelection::exclude(columns: vortex_array::dtype::FieldNames) -> Self +pub fn vortex_array::vtable::DynVTable::reduce_parent(&self, array: &vortex_array::ArrayRef, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::select::FieldSelection::field_names(&self) -> &vortex_array::dtype::FieldNames +pub fn vortex_array::vtable::DynVTable::with_slots(&self, array: vortex_array::ArrayRef, slots: alloc::vec::Vec>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::select::FieldSelection::include(columns: vortex_array::dtype::FieldNames) -> Self +impl vortex_array::DynVTable for V -pub fn vortex_array::scalar_fn::fns::select::FieldSelection::is_exclude(&self) -> bool +pub fn V::build(&self, _id: arcref::ArcRef, dtype: &vortex_array::dtype::DType, len: usize, metadata: &[u8], buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren, session: &vortex_session::VortexSession) -> core::result::Result -pub fn vortex_array::scalar_fn::fns::select::FieldSelection::is_include(&self) -> bool +pub fn V::clone_boxed(&self) -> alloc::boxed::Box -pub fn vortex_array::scalar_fn::fns::select::FieldSelection::normalize_to_included_fields(&self, available_fields: &vortex_array::dtype::FieldNames) -> vortex_error::VortexResult +pub fn V::execute(&self, array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> core::result::Result -impl core::clone::Clone for vortex_array::scalar_fn::fns::select::FieldSelection +pub fn V::execute_parent(&self, array: &vortex_array::ArrayRef, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> core::result::Result, vortex_error::VortexError> -pub fn vortex_array::scalar_fn::fns::select::FieldSelection::clone(&self) -> vortex_array::scalar_fn::fns::select::FieldSelection +pub fn V::reduce(&self, array: &vortex_array::ArrayRef) -> core::result::Result, vortex_error::VortexError> -impl core::cmp::Eq for vortex_array::scalar_fn::fns::select::FieldSelection +pub fn V::reduce_parent(&self, array: &vortex_array::ArrayRef, parent: &vortex_array::ArrayRef, child_idx: usize) -> core::result::Result, vortex_error::VortexError> -impl core::cmp::PartialEq for vortex_array::scalar_fn::fns::select::FieldSelection +pub fn V::with_slots(&self, array: vortex_array::ArrayRef, slots: alloc::vec::Vec>) -> core::result::Result -pub fn vortex_array::scalar_fn::fns::select::FieldSelection::eq(&self, other: &vortex_array::scalar_fn::fns::select::FieldSelection) -> bool +pub trait vortex_array::vtable::OperationsVTable -impl core::fmt::Debug for vortex_array::scalar_fn::fns::select::FieldSelection +pub fn vortex_array::vtable::OperationsVTable::scalar_at(array: vortex_array::ArrayView<'_, V>, index: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::select::FieldSelection::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl vortex_array::OperationsVTable for vortex_array::arrays::Bool -impl core::fmt::Display for vortex_array::scalar_fn::fns::select::FieldSelection +pub fn vortex_array::arrays::Bool::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::select::FieldSelection::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl vortex_array::OperationsVTable for vortex_array::arrays::Chunked -impl core::hash::Hash for vortex_array::scalar_fn::fns::select::FieldSelection +pub fn vortex_array::arrays::Chunked::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Chunked>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::select::FieldSelection::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +impl vortex_array::OperationsVTable for vortex_array::arrays::Constant -impl core::marker::StructuralPartialEq for vortex_array::scalar_fn::fns::select::FieldSelection +pub fn vortex_array::arrays::Constant::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Constant>, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub struct vortex_array::scalar_fn::fns::select::Select +impl vortex_array::OperationsVTable for vortex_array::arrays::Decimal -impl core::clone::Clone for vortex_array::scalar_fn::fns::select::Select +pub fn vortex_array::arrays::Decimal::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Decimal>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::select::Select::clone(&self) -> vortex_array::scalar_fn::fns::select::Select +impl vortex_array::OperationsVTable for vortex_array::arrays::Extension -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::select::Select +pub fn vortex_array::arrays::Extension::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Extension>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::scalar_fn::fns::select::Select::Options = vortex_array::scalar_fn::fns::select::FieldSelection +impl vortex_array::OperationsVTable for vortex_array::arrays::Filter -pub fn vortex_array::scalar_fn::fns::select::Select::arity(&self, _options: &vortex_array::scalar_fn::fns::select::FieldSelection) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::Filter::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Filter>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::select::Select::child_name(&self, _instance: &vortex_array::scalar_fn::fns::select::FieldSelection, child_idx: usize) -> vortex_array::scalar_fn::ChildName +impl vortex_array::OperationsVTable for vortex_array::arrays::FixedSizeList -pub fn vortex_array::scalar_fn::fns::select::Select::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::FixedSizeList::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::FixedSizeList>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::select::Select::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +impl vortex_array::OperationsVTable for vortex_array::arrays::List -pub fn vortex_array::scalar_fn::fns::select::Select::execute(&self, selection: &vortex_array::scalar_fn::fns::select::FieldSelection, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::List>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::select::Select::fmt_sql(&self, selection: &vortex_array::scalar_fn::fns::select::FieldSelection, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl vortex_array::OperationsVTable for vortex_array::arrays::ListView -pub fn vortex_array::scalar_fn::fns::select::Select::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::ListView::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::ListView>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::select::Select::is_fallible(&self, _instance: &vortex_array::scalar_fn::fns::select::FieldSelection) -> bool +impl vortex_array::OperationsVTable for vortex_array::arrays::Masked -pub fn vortex_array::scalar_fn::fns::select::Select::is_null_sensitive(&self, _instance: &vortex_array::scalar_fn::fns::select::FieldSelection) -> bool +pub fn vortex_array::arrays::Masked::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::select::Select::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +impl vortex_array::OperationsVTable for vortex_array::arrays::Primitive -pub fn vortex_array::scalar_fn::fns::select::Select::return_dtype(&self, selection: &vortex_array::scalar_fn::fns::select::FieldSelection, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Primitive::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Primitive>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::select::Select::serialize(&self, instance: &vortex_array::scalar_fn::fns::select::FieldSelection) -> vortex_error::VortexResult>> +impl vortex_array::OperationsVTable for vortex_array::arrays::Shared -pub fn vortex_array::scalar_fn::fns::select::Select::simplify(&self, selection: &vortex_array::scalar_fn::fns::select::FieldSelection, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Shared::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Shared>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::select::Select::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +impl vortex_array::OperationsVTable for vortex_array::arrays::Struct -pub fn vortex_array::scalar_fn::fns::select::Select::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Struct::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Struct>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::select::Select::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +impl vortex_array::OperationsVTable for vortex_array::arrays::VarBin -pub fn vortex_array::scalar_fn::fns::select::Select::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBin>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub mod vortex_array::scalar_fn::fns::zip +impl vortex_array::OperationsVTable for vortex_array::arrays::VarBinView -pub struct vortex_array::scalar_fn::fns::zip::Zip +pub fn vortex_array::arrays::VarBinView::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBinView>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::clone::Clone for vortex_array::scalar_fn::fns::zip::Zip +impl vortex_array::OperationsVTable for vortex_array::arrays::Variant -pub fn vortex_array::scalar_fn::fns::zip::Zip::clone(&self) -> vortex_array::scalar_fn::fns::zip::Zip +pub fn vortex_array::arrays::Variant::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Variant>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::zip::Zip +impl vortex_array::OperationsVTable for vortex_array::arrays::dict::Dict -pub type vortex_array::scalar_fn::fns::zip::Zip::Options = vortex_array::scalar_fn::EmptyOptions +pub fn vortex_array::arrays::dict::Dict::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::zip::Zip::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity +impl vortex_array::OperationsVTable for vortex_array::arrays::null::Null -pub fn vortex_array::scalar_fn::fns::zip::Zip::child_name(&self, _options: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::arrays::null::Null::scalar_at(_array: vortex_array::ArrayView<'_, vortex_array::arrays::null::Null>, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::zip::Zip::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +impl vortex_array::OperationsVTable for vortex_array::arrays::patched::Patched -pub fn vortex_array::scalar_fn::fns::zip::Zip::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::patched::Patched::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::patched::Patched>, index: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::zip::Zip::execute(&self, _options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::OperationsVTable for vortex_array::arrays::scalar_fn::ScalarFnVTable -pub fn vortex_array::scalar_fn::fns::zip::Zip::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::scalar_fn::ScalarFnVTable>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::zip::Zip::id(&self) -> vortex_array::scalar_fn::ScalarFnId +impl vortex_array::OperationsVTable for vortex_array::arrays::slice::Slice -pub fn vortex_array::scalar_fn::fns::zip::Zip::is_fallible(&self, _options: &Self::Options) -> bool +pub fn vortex_array::arrays::slice::Slice::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::slice::Slice>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::zip::Zip::is_null_sensitive(&self, _options: &Self::Options) -> bool +impl vortex_array::OperationsVTable for vortex_array::NotSupported -pub fn vortex_array::scalar_fn::fns::zip::Zip::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::NotSupported::scalar_at(array: vortex_array::ArrayView<'_, V>, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::zip::Zip::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub trait vortex_array::vtable::VTable: 'static + core::clone::Clone + core::marker::Sized + core::marker::Send + core::marker::Sync + core::fmt::Debug -pub fn vortex_array::scalar_fn::fns::zip::Zip::serialize(&self, _options: &Self::Options) -> vortex_error::VortexResult>> +pub type vortex_array::vtable::VTable::ArrayData: 'static + core::marker::Send + core::marker::Sync + core::clone::Clone + core::fmt::Debug + vortex_array::IntoArray -pub fn vortex_array::scalar_fn::fns::zip::Zip::simplify(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, _ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub type vortex_array::vtable::VTable::Metadata: core::fmt::Debug -pub fn vortex_array::scalar_fn::fns::zip::Zip::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub type vortex_array::vtable::VTable::OperationsVTable: vortex_array::OperationsVTable -pub fn vortex_array::scalar_fn::fns::zip::Zip::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub type vortex_array::vtable::VTable::ValidityVTable: vortex_array::ValidityVTable -pub fn vortex_array::scalar_fn::fns::zip::Zip::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::vtable::VTable::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::zip::Zip::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::vtable::VTable::array_eq(array: &Self::ArrayData, other: &Self::ArrayData, precision: vortex_array::Precision) -> bool -pub struct vortex_array::scalar_fn::fns::zip::ZipExecuteAdaptor(pub V) +pub fn vortex_array::vtable::VTable::array_hash(array: &Self::ArrayData, state: &mut H, precision: vortex_array::Precision) -impl core::default::Default for vortex_array::scalar_fn::fns::zip::ZipExecuteAdaptor +pub fn vortex_array::vtable::VTable::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::scalar_fn::fns::zip::ZipExecuteAdaptor::default() -> vortex_array::scalar_fn::fns::zip::ZipExecuteAdaptor +pub fn vortex_array::vtable::VTable::buffer_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -impl core::fmt::Debug for vortex_array::scalar_fn::fns::zip::ZipExecuteAdaptor +pub fn vortex_array::vtable::VTable::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::zip::ZipExecuteAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::vtable::VTable::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -impl vortex_array::kernel::ExecuteParentKernel for vortex_array::scalar_fn::fns::zip::ZipExecuteAdaptor where V: vortex_array::scalar_fn::fns::zip::ZipKernel +pub fn vortex_array::vtable::VTable::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub type vortex_array::scalar_fn::fns::zip::ZipExecuteAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub fn vortex_array::vtable::VTable::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::zip::ZipExecuteAdaptor::execute_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::zip::Zip>, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::vtable::VTable::dtype(array: &Self::ArrayData) -> &vortex_array::dtype::DType -pub struct vortex_array::scalar_fn::fns::zip::ZipReduceAdaptor(pub V) +pub fn vortex_array::vtable::VTable::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::default::Default for vortex_array::scalar_fn::fns::zip::ZipReduceAdaptor +pub fn vortex_array::vtable::VTable::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::zip::ZipReduceAdaptor::default() -> vortex_array::scalar_fn::fns::zip::ZipReduceAdaptor +pub fn vortex_array::vtable::VTable::id(&self) -> vortex_array::ArrayId -impl core::fmt::Debug for vortex_array::scalar_fn::fns::zip::ZipReduceAdaptor +pub fn vortex_array::vtable::VTable::len(array: &Self::ArrayData) -> usize -pub fn vortex_array::scalar_fn::fns::zip::ZipReduceAdaptor::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::vtable::VTable::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -impl vortex_array::optimizer::rules::ArrayParentReduceRule for vortex_array::scalar_fn::fns::zip::ZipReduceAdaptor where V: vortex_array::scalar_fn::fns::zip::ZipReduce +pub fn vortex_array::vtable::VTable::nbuffers(array: vortex_array::ArrayView<'_, Self>) -> usize -pub type vortex_array::scalar_fn::fns::zip::ZipReduceAdaptor::Parent = vortex_array::arrays::scalar_fn::ExactScalarFn +pub fn vortex_array::vtable::VTable::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::zip::ZipReduceAdaptor::reduce_parent(&self, array: &::Array, parent: vortex_array::arrays::scalar_fn::ScalarFnArrayView<'_, vortex_array::scalar_fn::fns::zip::Zip>, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::vtable::VTable::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub trait vortex_array::scalar_fn::fns::zip::ZipKernel: vortex_array::vtable::VTable +pub fn vortex_array::vtable::VTable::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::zip::ZipKernel::zip(array: &Self::Array, if_false: &vortex_array::ArrayRef, mask: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::vtable::VTable::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -impl vortex_array::scalar_fn::fns::zip::ZipKernel for vortex_array::arrays::Chunked +pub fn vortex_array::vtable::VTable::slot_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Chunked::zip(if_true: &vortex_array::arrays::ChunkedArray, if_false: &vortex_array::ArrayRef, mask: &vortex_array::ArrayRef, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::vtable::VTable::slots<'a>(array: vortex_array::ArrayView<'a, Self>) -> &'a [core::option::Option] -impl vortex_array::scalar_fn::fns::zip::ZipKernel for vortex_array::arrays::Struct +pub fn vortex_array::vtable::VTable::stats(array: &Self::ArrayData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Struct::zip(if_true: &vortex_array::arrays::StructArray, if_false: &vortex_array::ArrayRef, mask: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::vtable::VTable::vtable(array: &Self::ArrayData) -> &Self -impl vortex_array::scalar_fn::fns::zip::ZipKernel for vortex_array::arrays::VarBinView +pub fn vortex_array::vtable::VTable::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::VarBinView::zip(if_true: &vortex_array::arrays::VarBinViewArray, if_false: &vortex_array::ArrayRef, mask: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::VTable for vortex_array::arrays::Bool -pub trait vortex_array::scalar_fn::fns::zip::ZipReduce: vortex_array::vtable::VTable +pub type vortex_array::arrays::Bool::ArrayData = vortex_array::arrays::bool::BoolData -pub fn vortex_array::scalar_fn::fns::zip::ZipReduce::zip(array: &Self::Array, if_false: &vortex_array::ArrayRef, mask: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Bool::Metadata = vortex_array::ProstMetadata -pub mod vortex_array::scalar_fn::session +pub type vortex_array::arrays::Bool::OperationsVTable = vortex_array::arrays::Bool -pub struct vortex_array::scalar_fn::session::ScalarFnSession +pub type vortex_array::arrays::Bool::ValidityVTable = vortex_array::arrays::Bool -impl vortex_array::scalar_fn::session::ScalarFnSession +pub fn vortex_array::arrays::Bool::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::session::ScalarFnSession::register(&self, vtable: V) +pub fn vortex_array::arrays::Bool::array_eq(array: &vortex_array::arrays::bool::BoolData, other: &vortex_array::arrays::bool::BoolData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::session::ScalarFnSession::registry(&self) -> &vortex_array::scalar_fn::session::ScalarFnRegistry +pub fn vortex_array::arrays::Bool::array_hash(array: &vortex_array::arrays::bool::BoolData, state: &mut H, precision: vortex_array::Precision) -impl core::default::Default for vortex_array::scalar_fn::session::ScalarFnSession +pub fn vortex_array::arrays::Bool::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::scalar_fn::session::ScalarFnSession::default() -> Self +pub fn vortex_array::arrays::Bool::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -impl core::fmt::Debug for vortex_array::scalar_fn::session::ScalarFnSession +pub fn vortex_array::arrays::Bool::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::session::ScalarFnSession::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Bool::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub trait vortex_array::scalar_fn::session::ScalarFnSessionExt: vortex_session::SessionExt +pub fn vortex_array::arrays::Bool::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::session::ScalarFnSessionExt::scalar_fns(&self) -> vortex_session::Ref<'_, vortex_array::scalar_fn::session::ScalarFnSession> +pub fn vortex_array::arrays::Bool::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::session::ScalarFnSessionExt for S +pub fn vortex_array::arrays::Bool::dtype(array: &vortex_array::arrays::bool::BoolData) -> &vortex_array::dtype::DType -pub fn S::scalar_fns(&self) -> vortex_session::Ref<'_, vortex_array::scalar_fn::session::ScalarFnSession> +pub fn vortex_array::arrays::Bool::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::scalar_fn::session::ScalarFnRegistry = vortex_session::registry::Registry +pub fn vortex_array::arrays::Bool::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub enum vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::Bool::id(&self) -> vortex_array::ArrayId -pub vortex_array::scalar_fn::Arity::Exact(usize) +pub fn vortex_array::arrays::Bool::len(array: &vortex_array::arrays::bool::BoolData) -> usize -pub vortex_array::scalar_fn::Arity::Variadic +pub fn vortex_array::arrays::Bool::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub vortex_array::scalar_fn::Arity::Variadic::max: core::option::Option +pub fn vortex_array::arrays::Bool::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub vortex_array::scalar_fn::Arity::Variadic::min: usize +pub fn vortex_array::arrays::Bool::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -impl vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::Bool::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::Arity::matches(&self, arg_count: usize) -> bool +pub fn vortex_array::arrays::Bool::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -impl core::clone::Clone for vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::Bool::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar_fn::Arity::clone(&self) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::Bool::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl core::cmp::Eq for vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::Bool::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -impl core::cmp::PartialEq for vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::Bool::stats(array: &vortex_array::arrays::bool::BoolData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::scalar_fn::Arity::eq(&self, other: &vortex_array::scalar_fn::Arity) -> bool +pub fn vortex_array::arrays::Bool::vtable(_array: &Self::ArrayData) -> &Self -impl core::fmt::Debug for vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::Bool::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::Arity::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl vortex_array::VTable for vortex_array::arrays::Chunked -impl core::fmt::Display for vortex_array::scalar_fn::Arity +pub type vortex_array::arrays::Chunked::ArrayData = vortex_array::arrays::chunked::ChunkedData -pub fn vortex_array::scalar_fn::Arity::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::arrays::Chunked::Metadata = vortex_array::EmptyMetadata -impl core::marker::Copy for vortex_array::scalar_fn::Arity +pub type vortex_array::arrays::Chunked::OperationsVTable = vortex_array::arrays::Chunked -impl core::marker::StructuralPartialEq for vortex_array::scalar_fn::Arity +pub type vortex_array::arrays::Chunked::ValidityVTable = vortex_array::arrays::Chunked -pub struct vortex_array::scalar_fn::EmptyOptions +pub fn vortex_array::arrays::Chunked::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl core::clone::Clone for vortex_array::scalar_fn::EmptyOptions +pub fn vortex_array::arrays::Chunked::array_eq(array: &vortex_array::arrays::chunked::ChunkedData, other: &vortex_array::arrays::chunked::ChunkedData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::EmptyOptions::clone(&self) -> vortex_array::scalar_fn::EmptyOptions +pub fn vortex_array::arrays::Chunked::array_hash(array: &vortex_array::arrays::chunked::ChunkedData, state: &mut H, precision: vortex_array::Precision) -impl core::cmp::Eq for vortex_array::scalar_fn::EmptyOptions +pub fn vortex_array::arrays::Chunked::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -impl core::cmp::PartialEq for vortex_array::scalar_fn::EmptyOptions +pub fn vortex_array::arrays::Chunked::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::scalar_fn::EmptyOptions::eq(&self, other: &vortex_array::scalar_fn::EmptyOptions) -> bool +pub fn vortex_array::arrays::Chunked::build(dtype: &vortex_array::dtype::DType, _len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::scalar_fn::EmptyOptions +pub fn vortex_array::arrays::Chunked::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::scalar_fn::EmptyOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Chunked::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl core::fmt::Display for vortex_array::scalar_fn::EmptyOptions +pub fn vortex_array::arrays::Chunked::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::EmptyOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Chunked::dtype(array: &vortex_array::arrays::chunked::ChunkedData) -> &vortex_array::dtype::DType -impl core::hash::Hash for vortex_array::scalar_fn::EmptyOptions +pub fn vortex_array::arrays::Chunked::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::EmptyOptions::hash<__H: core::hash::Hasher>(&self, state: &mut __H) +pub fn vortex_array::arrays::Chunked::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl core::marker::StructuralPartialEq for vortex_array::scalar_fn::EmptyOptions +pub fn vortex_array::arrays::Chunked::id(&self) -> vortex_array::ArrayId -pub struct vortex_array::scalar_fn::ScalarFn +pub fn vortex_array::arrays::Chunked::len(array: &vortex_array::arrays::chunked::ChunkedData) -> usize -impl vortex_array::scalar_fn::ScalarFn +pub fn vortex_array::arrays::Chunked::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::ScalarFn::erased(self) -> vortex_array::scalar_fn::ScalarFnRef +pub fn vortex_array::arrays::Chunked::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::ScalarFn::new(vtable: V, options: ::Options) -> Self +pub fn vortex_array::arrays::Chunked::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::ScalarFn::options(&self) -> &::Options +pub fn vortex_array::arrays::Chunked::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::ScalarFn::vtable(&self) -> &V +pub fn vortex_array::arrays::Chunked::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub struct vortex_array::scalar_fn::ScalarFnOptions<'a> +pub fn vortex_array::arrays::Chunked::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -impl vortex_array::scalar_fn::ScalarFnOptions<'_> +pub fn vortex_array::arrays::Chunked::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::ScalarFnOptions<'_>::serialize(&self) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Chunked::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -impl<'a> vortex_array::scalar_fn::ScalarFnOptions<'a> +pub fn vortex_array::arrays::Chunked::stats(array: &vortex_array::arrays::chunked::ChunkedData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::scalar_fn::ScalarFnOptions<'a>::as_any(&self) -> &'a dyn core::any::Any +pub fn vortex_array::arrays::Chunked::vtable(_array: &Self::ArrayData) -> &Self -impl core::cmp::Eq for vortex_array::scalar_fn::ScalarFnOptions<'_> +pub fn vortex_array::arrays::Chunked::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl core::cmp::PartialEq for vortex_array::scalar_fn::ScalarFnOptions<'_> +impl vortex_array::VTable for vortex_array::arrays::Constant -pub fn vortex_array::scalar_fn::ScalarFnOptions<'_>::eq(&self, other: &Self) -> bool +pub type vortex_array::arrays::Constant::ArrayData = vortex_array::arrays::constant::ConstantData -impl core::fmt::Debug for vortex_array::scalar_fn::ScalarFnOptions<'_> +pub type vortex_array::arrays::Constant::Metadata = vortex_array::scalar::Scalar -pub fn vortex_array::scalar_fn::ScalarFnOptions<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::arrays::Constant::OperationsVTable = vortex_array::arrays::Constant -impl core::fmt::Display for vortex_array::scalar_fn::ScalarFnOptions<'_> +pub type vortex_array::arrays::Constant::ValidityVTable = vortex_array::arrays::Constant -pub fn vortex_array::scalar_fn::ScalarFnOptions<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Constant::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl core::hash::Hash for vortex_array::scalar_fn::ScalarFnOptions<'_> +pub fn vortex_array::arrays::Constant::array_eq(array: &vortex_array::arrays::constant::ConstantData, other: &vortex_array::arrays::constant::ConstantData, _precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::ScalarFnOptions<'_>::hash(&self, state: &mut H) +pub fn vortex_array::arrays::Constant::array_hash(array: &vortex_array::arrays::constant::ConstantData, state: &mut H, _precision: vortex_array::Precision) -pub struct vortex_array::scalar_fn::ScalarFnRef(_) +pub fn vortex_array::arrays::Constant::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -impl vortex_array::scalar_fn::ScalarFnRef +pub fn vortex_array::arrays::Constant::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::scalar_fn::ScalarFnRef::as_(&self) -> &::Options +pub fn vortex_array::arrays::Constant::build(_dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], _children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::ScalarFnRef::as_opt(&self) -> core::option::Option<&::Options> +pub fn vortex_array::arrays::Constant::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::scalar_fn::ScalarFnRef::coerce_args(&self, arg_types: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Constant::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::ScalarFnRef::downcast(self) -> alloc::sync::Arc> +pub fn vortex_array::arrays::Constant::deserialize(_bytes: &[u8], dtype: &vortex_array::dtype::DType, _len: usize, buffers: &[vortex_array::buffer::BufferHandle], session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::ScalarFnRef::downcast_ref(&self) -> core::option::Option<&vortex_array::scalar_fn::ScalarFn> +pub fn vortex_array::arrays::Constant::dtype(array: &vortex_array::arrays::constant::ConstantData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::ScalarFnRef::execute(&self, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Constant::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::ScalarFnRef::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::Constant::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::ScalarFnRef::is(&self) -> bool +pub fn vortex_array::arrays::Constant::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::scalar_fn::ScalarFnRef::options(&self) -> vortex_array::scalar_fn::ScalarFnOptions<'_> +pub fn vortex_array::arrays::Constant::len(array: &vortex_array::arrays::constant::ConstantData) -> usize -pub fn vortex_array::scalar_fn::ScalarFnRef::reduce(&self, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Constant::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::ScalarFnRef::return_dtype(&self, arg_types: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Constant::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::ScalarFnRef::signature(&self) -> vortex_array::scalar_fn::ScalarFnSignature<'_> +pub fn vortex_array::arrays::Constant::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::ScalarFnRef::try_downcast(self) -> core::result::Result>, vortex_array::scalar_fn::ScalarFnRef> +pub fn vortex_array::arrays::Constant::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::ScalarFnRef::validity(&self, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Constant::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -impl core::clone::Clone for vortex_array::scalar_fn::ScalarFnRef +pub fn vortex_array::arrays::Constant::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar_fn::ScalarFnRef::clone(&self) -> vortex_array::scalar_fn::ScalarFnRef +pub fn vortex_array::arrays::Constant::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl core::cmp::Eq for vortex_array::scalar_fn::ScalarFnRef +pub fn vortex_array::arrays::Constant::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -impl core::cmp::PartialEq for vortex_array::scalar_fn::ScalarFnRef +pub fn vortex_array::arrays::Constant::stats(array: &vortex_array::arrays::constant::ConstantData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::scalar_fn::ScalarFnRef::eq(&self, other: &Self) -> bool +pub fn vortex_array::arrays::Constant::vtable(_array: &Self::ArrayData) -> &Self -impl core::fmt::Debug for vortex_array::scalar_fn::ScalarFnRef +pub fn vortex_array::arrays::Constant::with_slots(_array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::ScalarFnRef::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl vortex_array::VTable for vortex_array::arrays::Decimal -impl core::fmt::Display for vortex_array::scalar_fn::ScalarFnRef +pub type vortex_array::arrays::Decimal::ArrayData = vortex_array::arrays::decimal::DecimalData -pub fn vortex_array::scalar_fn::ScalarFnRef::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::arrays::Decimal::Metadata = vortex_array::ProstMetadata -impl core::hash::Hash for vortex_array::scalar_fn::ScalarFnRef +pub type vortex_array::arrays::Decimal::OperationsVTable = vortex_array::arrays::Decimal -pub fn vortex_array::scalar_fn::ScalarFnRef::hash(&self, state: &mut H) +pub type vortex_array::arrays::Decimal::ValidityVTable = vortex_array::arrays::Decimal -pub struct vortex_array::scalar_fn::ScalarFnSignature<'a> +pub fn vortex_array::arrays::Decimal::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl vortex_array::scalar_fn::ScalarFnSignature<'_> +pub fn vortex_array::arrays::Decimal::array_eq(array: &vortex_array::arrays::decimal::DecimalData, other: &vortex_array::arrays::decimal::DecimalData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::ScalarFnSignature<'_>::arity(&self) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::Decimal::array_hash(array: &vortex_array::arrays::decimal::DecimalData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::scalar_fn::ScalarFnSignature<'_>::child_name(&self, index: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::arrays::Decimal::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::scalar_fn::ScalarFnSignature<'_>::is_fallible(&self) -> bool +pub fn vortex_array::arrays::Decimal::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::scalar_fn::ScalarFnSignature<'_>::is_null_sensitive(&self) -> bool +pub fn vortex_array::arrays::Decimal::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub struct vortex_array::scalar_fn::VecExecutionArgs +pub fn vortex_array::arrays::Decimal::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -impl vortex_array::scalar_fn::VecExecutionArgs +pub fn vortex_array::arrays::Decimal::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::VecExecutionArgs::new(inputs: alloc::vec::Vec, row_count: usize) -> Self +pub fn vortex_array::arrays::Decimal::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::ExecutionArgs for vortex_array::scalar_fn::VecExecutionArgs +pub fn vortex_array::arrays::Decimal::dtype(array: &vortex_array::arrays::decimal::DecimalData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::VecExecutionArgs::get(&self, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Decimal::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::VecExecutionArgs::num_inputs(&self) -> usize +pub fn vortex_array::arrays::Decimal::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::VecExecutionArgs::row_count(&self) -> usize +pub fn vortex_array::arrays::Decimal::id(&self) -> vortex_array::ArrayId -pub trait vortex_array::scalar_fn::ExecutionArgs +pub fn vortex_array::arrays::Decimal::len(array: &vortex_array::arrays::decimal::DecimalData) -> usize -pub fn vortex_array::scalar_fn::ExecutionArgs::get(&self, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Decimal::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::ExecutionArgs::num_inputs(&self) -> usize +pub fn vortex_array::arrays::Decimal::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::ExecutionArgs::row_count(&self) -> usize +pub fn vortex_array::arrays::Decimal::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -impl vortex_array::scalar_fn::ExecutionArgs for vortex_array::scalar_fn::VecExecutionArgs +pub fn vortex_array::arrays::Decimal::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::VecExecutionArgs::get(&self, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Decimal::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::VecExecutionArgs::num_inputs(&self) -> usize +pub fn vortex_array::arrays::Decimal::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar_fn::VecExecutionArgs::row_count(&self) -> usize +pub fn vortex_array::arrays::Decimal::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub trait vortex_array::scalar_fn::ReduceCtx +pub fn vortex_array::arrays::Decimal::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::scalar_fn::ReduceCtx::new_node(&self, scalar_fn: vortex_array::scalar_fn::ScalarFnRef, children: &[vortex_array::scalar_fn::ReduceNodeRef]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Decimal::stats(array: &vortex_array::arrays::decimal::DecimalData) -> &vortex_array::stats::ArrayStats -pub trait vortex_array::scalar_fn::ReduceNode +pub fn vortex_array::arrays::Decimal::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::scalar_fn::ReduceNode::as_any(&self) -> &dyn core::any::Any +pub fn vortex_array::arrays::Decimal::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::ReduceNode::child(&self, idx: usize) -> vortex_array::scalar_fn::ReduceNodeRef +impl vortex_array::VTable for vortex_array::arrays::Extension -pub fn vortex_array::scalar_fn::ReduceNode::child_count(&self) -> usize +pub type vortex_array::arrays::Extension::ArrayData = vortex_array::arrays::extension::ExtensionData -pub fn vortex_array::scalar_fn::ReduceNode::node_dtype(&self) -> vortex_error::VortexResult +pub type vortex_array::arrays::Extension::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::scalar_fn::ReduceNode::scalar_fn(&self) -> core::option::Option<&vortex_array::scalar_fn::ScalarFnRef> +pub type vortex_array::arrays::Extension::OperationsVTable = vortex_array::arrays::Extension -impl vortex_array::scalar_fn::ReduceNode for vortex_array::ArrayRef +pub type vortex_array::arrays::Extension::ValidityVTable = vortex_array::ValidityVTableFromChild -pub fn vortex_array::ArrayRef::as_any(&self) -> &dyn core::any::Any +pub fn vortex_array::arrays::Extension::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::ArrayRef::child(&self, idx: usize) -> vortex_array::scalar_fn::ReduceNodeRef +pub fn vortex_array::arrays::Extension::array_eq(array: &vortex_array::arrays::extension::ExtensionData, other: &vortex_array::arrays::extension::ExtensionData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::ArrayRef::child_count(&self) -> usize +pub fn vortex_array::arrays::Extension::array_hash(array: &vortex_array::arrays::extension::ExtensionData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::ArrayRef::node_dtype(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Extension::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::ArrayRef::scalar_fn(&self) -> core::option::Option<&vortex_array::scalar_fn::ScalarFnRef> +pub fn vortex_array::arrays::Extension::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -impl vortex_array::scalar_fn::ReduceNode for vortex_array::arrays::scalar_fn::ScalarFnArray +pub fn vortex_array::arrays::Extension::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::as_any(&self) -> &dyn core::any::Any +pub fn vortex_array::arrays::Extension::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::child(&self, idx: usize) -> vortex_array::scalar_fn::ReduceNodeRef +pub fn vortex_array::arrays::Extension::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::child_count(&self) -> usize +pub fn vortex_array::arrays::Extension::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::node_dtype(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Extension::dtype(array: &vortex_array::arrays::extension::ExtensionData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::scalar_fn(&self) -> core::option::Option<&vortex_array::scalar_fn::ScalarFnRef> +pub fn vortex_array::arrays::Extension::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::ReduceNode for vortex_array::ArrayAdapter +pub fn vortex_array::arrays::Extension::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::ArrayAdapter::as_any(&self) -> &dyn core::any::Any +pub fn vortex_array::arrays::Extension::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::ArrayAdapter::child(&self, idx: usize) -> vortex_array::scalar_fn::ReduceNodeRef +pub fn vortex_array::arrays::Extension::len(array: &vortex_array::arrays::extension::ExtensionData) -> usize -pub fn vortex_array::ArrayAdapter::child_count(&self) -> usize +pub fn vortex_array::arrays::Extension::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::ArrayAdapter::node_dtype(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Extension::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::ArrayAdapter::scalar_fn(&self) -> core::option::Option<&vortex_array::scalar_fn::ScalarFnRef> +pub fn vortex_array::arrays::Extension::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -impl vortex_array::scalar_fn::ReduceNode for vortex_array::vtable::Array +pub fn vortex_array::arrays::Extension::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::vtable::Array::as_any(&self) -> &dyn core::any::Any +pub fn vortex_array::arrays::Extension::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::vtable::Array::child(&self, idx: usize) -> vortex_array::scalar_fn::ReduceNodeRef +pub fn vortex_array::arrays::Extension::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::vtable::Array::child_count(&self) -> usize +pub fn vortex_array::arrays::Extension::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::vtable::Array::node_dtype(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Extension::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::vtable::Array::scalar_fn(&self) -> core::option::Option<&vortex_array::scalar_fn::ScalarFnRef> +pub fn vortex_array::arrays::Extension::stats(array: &vortex_array::arrays::extension::ExtensionData) -> &vortex_array::stats::ArrayStats -pub trait vortex_array::scalar_fn::ScalarFnPlugin: 'static + core::marker::Send + core::marker::Sync +pub fn vortex_array::arrays::Extension::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::scalar_fn::ScalarFnPlugin::deserialize(&self, metadata: &[u8], session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Extension::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::ScalarFnPlugin::id(&self) -> vortex_array::scalar_fn::ScalarFnId +impl vortex_array::VTable for vortex_array::arrays::Filter -impl vortex_array::scalar_fn::ScalarFnPlugin for V +pub type vortex_array::arrays::Filter::ArrayData = vortex_array::arrays::filter::FilterData -pub fn V::deserialize(&self, metadata: &[u8], session: &vortex_session::VortexSession) -> core::result::Result +pub type vortex_array::arrays::Filter::Metadata = vortex_array::arrays::filter::vtable::FilterMetadata -pub fn V::id(&self) -> arcref::ArcRef +pub type vortex_array::arrays::Filter::OperationsVTable = vortex_array::arrays::Filter -pub trait vortex_array::scalar_fn::ScalarFnVTable: 'static + core::marker::Sized + core::clone::Clone + core::marker::Send + core::marker::Sync +pub type vortex_array::arrays::Filter::ValidityVTable = vortex_array::arrays::Filter -pub type vortex_array::scalar_fn::ScalarFnVTable::Options: 'static + core::marker::Send + core::marker::Sync + core::clone::Clone + core::fmt::Debug + core::fmt::Display + core::cmp::PartialEq + core::cmp::Eq + core::hash::Hash +pub fn vortex_array::arrays::Filter::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::ScalarFnVTable::arity(&self, options: &Self::Options) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::Filter::array_eq(array: &vortex_array::arrays::filter::FilterData, other: &vortex_array::arrays::filter::FilterData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::ScalarFnVTable::child_name(&self, options: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::arrays::Filter::array_hash(array: &vortex_array::arrays::filter::FilterData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::scalar_fn::ScalarFnVTable::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::buffer(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::scalar_fn::ScalarFnVTable::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Filter::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::scalar_fn::ScalarFnVTable::execute(&self, options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Filter::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::filter::vtable::FilterMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::ScalarFnVTable::fmt_sql(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Filter::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::scalar_fn::ScalarFnVTable::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::Filter::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::ScalarFnVTable::is_fallible(&self, options: &Self::Options) -> bool +pub fn vortex_array::arrays::Filter::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::ScalarFnVTable::is_null_sensitive(&self, options: &Self::Options) -> bool +pub fn vortex_array::arrays::Filter::dtype(array: &vortex_array::arrays::filter::FilterData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::ScalarFnVTable::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::ScalarFnVTable::return_dtype(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Filter::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::ScalarFnVTable::serialize(&self, options: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Filter::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::scalar_fn::ScalarFnVTable::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::len(array: &vortex_array::arrays::filter::FilterData) -> usize -pub fn vortex_array::scalar_fn::ScalarFnVTable::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::ScalarFnVTable::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Filter::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::ScalarFnVTable::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Filter::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::ScalarFnVTable::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::between::Between +pub fn vortex_array::arrays::Filter::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub type vortex_array::scalar_fn::fns::between::Between::Options = vortex_array::scalar_fn::fns::between::BetweenOptions +pub fn vortex_array::arrays::Filter::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar_fn::fns::between::Between::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::Filter::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::between::Between::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::arrays::Filter::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::scalar_fn::fns::between::Between::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::stats(array: &vortex_array::arrays::filter::FilterData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::scalar_fn::fns::between::Between::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Filter::vtable(_array: &vortex_array::arrays::filter::FilterData) -> &Self -pub fn vortex_array::scalar_fn::fns::between::Between::execute(&self, options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Filter::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::between::Between::fmt_sql(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl vortex_array::VTable for vortex_array::arrays::FixedSizeList -pub fn vortex_array::scalar_fn::fns::between::Between::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub type vortex_array::arrays::FixedSizeList::ArrayData = vortex_array::arrays::fixed_size_list::FixedSizeListData -pub fn vortex_array::scalar_fn::fns::between::Between::is_fallible(&self, _options: &Self::Options) -> bool +pub type vortex_array::arrays::FixedSizeList::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::scalar_fn::fns::between::Between::is_null_sensitive(&self, _instance: &Self::Options) -> bool +pub type vortex_array::arrays::FixedSizeList::OperationsVTable = vortex_array::arrays::FixedSizeList -pub fn vortex_array::scalar_fn::fns::between::Between::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub type vortex_array::arrays::FixedSizeList::ValidityVTable = vortex_array::arrays::FixedSizeList -pub fn vortex_array::scalar_fn::fns::between::Between::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::between::Between::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::FixedSizeList::array_eq(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData, other: &vortex_array::arrays::fixed_size_list::FixedSizeListData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::fns::between::Between::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::FixedSizeList::array_hash(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::scalar_fn::fns::between::Between::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::FixedSizeList::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::scalar_fn::fns::between::Between::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::FixedSizeList::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::scalar_fn::fns::between::Between::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::FixedSizeList::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::between::Between::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::FixedSizeList::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::binary::Binary +pub fn vortex_array::arrays::FixedSizeList::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub type vortex_array::scalar_fn::fns::binary::Binary::Options = vortex_array::scalar_fn::fns::operators::Operator +pub fn vortex_array::arrays::FixedSizeList::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::binary::Binary::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::FixedSizeList::dtype(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::binary::Binary::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::arrays::FixedSizeList::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::binary::Binary::coerce_args(&self, operator: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::FixedSizeList::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::binary::Binary::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::scalar_fn::fns::binary::Binary::execute(&self, op: &vortex_array::scalar_fn::fns::operators::Operator, args: &dyn vortex_array::scalar_fn::ExecutionArgs, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::len(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData) -> usize -pub fn vortex_array::scalar_fn::fns::binary::Binary::fmt_sql(&self, operator: &vortex_array::scalar_fn::fns::operators::Operator, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::FixedSizeList::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::binary::Binary::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::FixedSizeList::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::binary::Binary::is_fallible(&self, operator: &vortex_array::scalar_fn::fns::operators::Operator) -> bool +pub fn vortex_array::arrays::FixedSizeList::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::binary::Binary::is_null_sensitive(&self, _operator: &vortex_array::scalar_fn::fns::operators::Operator) -> bool +pub fn vortex_array::arrays::FixedSizeList::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::binary::Binary::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::FixedSizeList::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::binary::Binary::return_dtype(&self, operator: &vortex_array::scalar_fn::fns::operators::Operator, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar_fn::fns::binary::Binary::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::FixedSizeList::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::binary::Binary::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::FixedSizeList::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::scalar_fn::fns::binary::Binary::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::FixedSizeList::stats(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::scalar_fn::fns::binary::Binary::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::FixedSizeList::vtable(_array: &vortex_array::arrays::fixed_size_list::FixedSizeListData) -> &Self -pub fn vortex_array::scalar_fn::fns::binary::Binary::stat_falsification(&self, operator: &vortex_array::scalar_fn::fns::operators::Operator, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::FixedSizeList::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::binary::Binary::validity(&self, operator: &vortex_array::scalar_fn::fns::operators::Operator, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +impl vortex_array::VTable for vortex_array::arrays::List -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::case_when::CaseWhen +pub type vortex_array::arrays::List::ArrayData = vortex_array::arrays::list::ListData -pub type vortex_array::scalar_fn::fns::case_when::CaseWhen::Options = vortex_array::scalar_fn::fns::case_when::CaseWhenOptions +pub type vortex_array::arrays::List::Metadata = vortex_array::ProstMetadata -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::arity(&self, options: &Self::Options) -> vortex_array::scalar_fn::Arity +pub type vortex_array::arrays::List::OperationsVTable = vortex_array::arrays::List -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::child_name(&self, options: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub type vortex_array::arrays::List::ValidityVTable = vortex_array::arrays::List -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::List::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::deserialize(&self, metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::array_eq(array: &vortex_array::arrays::list::ListData, other: &vortex_array::arrays::list::ListData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::execute(&self, options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::array_hash(array: &vortex_array::arrays::list::ListData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::fmt_sql(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::List::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::List::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::is_fallible(&self, _options: &Self::Options) -> bool +pub fn vortex_array::arrays::List::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::is_null_sensitive(&self, _options: &Self::Options) -> bool +pub fn vortex_array::arrays::List::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::List::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::return_dtype(&self, options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::serialize(&self, _options: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::List::dtype(array: &vortex_array::arrays::list::ListData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::List::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::List::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::List::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::List::len(array: &vortex_array::arrays::list::ListData) -> usize -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::List::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::cast::Cast +pub fn vortex_array::arrays::List::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub type vortex_array::scalar_fn::fns::cast::Cast::Options = vortex_array::dtype::DType +pub fn vortex_array::arrays::List::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::cast::Cast::arity(&self, _options: &vortex_array::dtype::DType) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::List::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::cast::Cast::child_name(&self, _instance: &vortex_array::dtype::DType, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::arrays::List::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::cast::Cast::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::List::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar_fn::fns::cast::Cast::deserialize(&self, _metadata: &[u8], session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::cast::Cast::execute(&self, target_dtype: &vortex_array::dtype::DType, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::scalar_fn::fns::cast::Cast::fmt_sql(&self, dtype: &vortex_array::dtype::DType, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::List::stats(array: &vortex_array::arrays::list::ListData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::scalar_fn::fns::cast::Cast::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::List::vtable(_array: &vortex_array::arrays::list::ListData) -> &Self -pub fn vortex_array::scalar_fn::fns::cast::Cast::is_fallible(&self, options: &Self::Options) -> bool +pub fn vortex_array::arrays::List::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::cast::Cast::is_null_sensitive(&self, _instance: &vortex_array::dtype::DType) -> bool +impl vortex_array::VTable for vortex_array::arrays::ListView -pub fn vortex_array::scalar_fn::fns::cast::Cast::reduce(&self, target_dtype: &vortex_array::dtype::DType, node: &dyn vortex_array::scalar_fn::ReduceNode, _ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub type vortex_array::arrays::ListView::ArrayData = vortex_array::arrays::listview::ListViewData -pub fn vortex_array::scalar_fn::fns::cast::Cast::return_dtype(&self, dtype: &vortex_array::dtype::DType, _arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub type vortex_array::arrays::ListView::Metadata = vortex_array::ProstMetadata -pub fn vortex_array::scalar_fn::fns::cast::Cast::serialize(&self, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult>> +pub type vortex_array::arrays::ListView::OperationsVTable = vortex_array::arrays::ListView -pub fn vortex_array::scalar_fn::fns::cast::Cast::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub type vortex_array::arrays::ListView::ValidityVTable = vortex_array::arrays::ListView -pub fn vortex_array::scalar_fn::fns::cast::Cast::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::ListView::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::cast::Cast::stat_expression(&self, dtype: &vortex_array::dtype::DType, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::ListView::array_eq(array: &vortex_array::arrays::listview::ListViewData, other: &vortex_array::arrays::listview::ListViewData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::fns::cast::Cast::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::ListView::array_hash(array: &vortex_array::arrays::listview::ListViewData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::scalar_fn::fns::cast::Cast::validity(&self, dtype: &vortex_array::dtype::DType, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::ListView::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::dynamic::DynamicComparison +pub fn vortex_array::arrays::ListView::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub type vortex_array::scalar_fn::fns::dynamic::DynamicComparison::Options = vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr +pub fn vortex_array::arrays::ListView::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::ListView::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::arrays::ListView::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::ListView::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ListView::dtype(array: &vortex_array::arrays::listview::ListViewData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::execute(&self, data: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ListView::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::fmt_sql(&self, dynamic: &vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::ListView::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::ListView::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::is_fallible(&self, options: &Self::Options) -> bool +pub fn vortex_array::arrays::ListView::len(array: &vortex_array::arrays::listview::ListViewData) -> usize -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::is_null_sensitive(&self, _instance: &Self::Options) -> bool +pub fn vortex_array::arrays::ListView::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::ListView::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::return_dtype(&self, dynamic: &vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ListView::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::serialize(&self, options: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::ListView::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::ListView::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::ListView::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::ListView::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::stat_falsification(&self, dynamic: &vortex_array::scalar_fn::fns::dynamic::DynamicComparisonExpr, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::ListView::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::scalar_fn::fns::dynamic::DynamicComparison::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::ListView::stats(array: &vortex_array::arrays::listview::ListViewData) -> &vortex_array::stats::ArrayStats -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::fill_null::FillNull +pub fn vortex_array::arrays::ListView::vtable(_array: &vortex_array::arrays::listview::ListViewData) -> &Self -pub type vortex_array::scalar_fn::fns::fill_null::FillNull::Options = vortex_array::scalar_fn::EmptyOptions +pub fn vortex_array::arrays::ListView::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity +impl vortex_array::VTable for vortex_array::arrays::Masked -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::child_name(&self, _options: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub type vortex_array::arrays::Masked::ArrayData = vortex_array::arrays::masked::MaskedData -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Masked::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub type vortex_array::arrays::Masked::OperationsVTable = vortex_array::arrays::Masked -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::execute(&self, _options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub type vortex_array::arrays::Masked::ValidityVTable = vortex_array::arrays::Masked -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Masked::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::Masked::array_eq(array: &vortex_array::arrays::masked::MaskedData, other: &vortex_array::arrays::masked::MaskedData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::is_fallible(&self, _options: &Self::Options) -> bool +pub fn vortex_array::arrays::Masked::array_hash(array: &vortex_array::arrays::masked::MaskedData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::is_null_sensitive(&self, _options: &Self::Options) -> bool +pub fn vortex_array::arrays::Masked::buffer(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Masked::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Masked::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::serialize(&self, _options: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Masked::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::simplify(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Masked::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Masked::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Masked::dtype(array: &vortex_array::arrays::masked::MaskedData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Masked::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::fill_null::FillNull::validity(&self, _options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Masked::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::get_item::GetItem +pub fn vortex_array::arrays::Masked::id(&self) -> vortex_array::ArrayId -pub type vortex_array::scalar_fn::fns::get_item::GetItem::Options = vortex_array::dtype::FieldName +pub fn vortex_array::arrays::Masked::len(array: &vortex_array::arrays::masked::MaskedData) -> usize -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::arity(&self, _field_name: &vortex_array::dtype::FieldName) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::Masked::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::arrays::Masked::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Masked::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Masked::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::execute(&self, field_name: &vortex_array::dtype::FieldName, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Masked::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::fmt_sql(&self, field_name: &vortex_array::dtype::FieldName, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Masked::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::Masked::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::is_fallible(&self, _field_name: &vortex_array::dtype::FieldName) -> bool +pub fn vortex_array::arrays::Masked::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::is_null_sensitive(&self, _field_name: &vortex_array::dtype::FieldName) -> bool +pub fn vortex_array::arrays::Masked::stats(array: &vortex_array::arrays::masked::MaskedData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::reduce(&self, field_name: &vortex_array::dtype::FieldName, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Masked::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::return_dtype(&self, field_name: &vortex_array::dtype::FieldName, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Masked::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> +impl vortex_array::VTable for vortex_array::arrays::Primitive -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Primitive::ArrayData = vortex_array::arrays::primitive::PrimitiveData -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::simplify_untyped(&self, field_name: &vortex_array::dtype::FieldName, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Primitive::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::stat_expression(&self, field_name: &vortex_array::dtype::FieldName, _expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub type vortex_array::arrays::Primitive::OperationsVTable = vortex_array::arrays::Primitive -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub type vortex_array::arrays::Primitive::ValidityVTable = vortex_array::arrays::Primitive -pub fn vortex_array::scalar_fn::fns::get_item::GetItem::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Primitive::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::is_null::IsNull +pub fn vortex_array::arrays::Primitive::array_eq(array: &vortex_array::arrays::primitive::PrimitiveData, other: &vortex_array::arrays::primitive::PrimitiveData, precision: vortex_array::Precision) -> bool -pub type vortex_array::scalar_fn::fns::is_null::IsNull::Options = vortex_array::scalar_fn::EmptyOptions +pub fn vortex_array::arrays::Primitive::array_hash(array: &vortex_array::arrays::primitive::PrimitiveData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::Primitive::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::arrays::Primitive::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Primitive::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Primitive::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::execute(&self, _data: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Primitive::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Primitive::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::Primitive::dtype(array: &vortex_array::arrays::primitive::PrimitiveData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::is_fallible(&self, _instance: &Self::Options) -> bool +pub fn vortex_array::arrays::Primitive::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::is_null_sensitive(&self, _instance: &Self::Options) -> bool +pub fn vortex_array::arrays::Primitive::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Primitive::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::return_dtype(&self, _options: &Self::Options, _arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Primitive::len(array: &vortex_array::arrays::primitive::PrimitiveData) -> usize -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::serialize(&self, _instance: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Primitive::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Primitive::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Primitive::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Primitive::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::stat_falsification(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Primitive::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::is_null::IsNull::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Primitive::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::like::Like +pub fn vortex_array::arrays::Primitive::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub type vortex_array::scalar_fn::fns::like::Like::Options = vortex_array::scalar_fn::fns::like::LikeOptions +pub fn vortex_array::arrays::Primitive::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::scalar_fn::fns::like::Like::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::Primitive::stats(array: &vortex_array::arrays::primitive::PrimitiveData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::scalar_fn::fns::like::Like::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::arrays::Primitive::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::scalar_fn::fns::like::Like::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Primitive::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::like::Like::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +impl vortex_array::VTable for vortex_array::arrays::Shared -pub fn vortex_array::scalar_fn::fns::like::Like::execute(&self, options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub type vortex_array::arrays::Shared::ArrayData = vortex_array::arrays::shared::SharedData -pub fn vortex_array::scalar_fn::fns::like::Like::fmt_sql(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::arrays::Shared::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::scalar_fn::fns::like::Like::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub type vortex_array::arrays::Shared::OperationsVTable = vortex_array::arrays::Shared -pub fn vortex_array::scalar_fn::fns::like::Like::is_fallible(&self, options: &Self::Options) -> bool +pub type vortex_array::arrays::Shared::ValidityVTable = vortex_array::arrays::Shared -pub fn vortex_array::scalar_fn::fns::like::Like::is_null_sensitive(&self, _instance: &Self::Options) -> bool +pub fn vortex_array::arrays::Shared::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::like::Like::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Shared::array_eq(array: &vortex_array::arrays::shared::SharedData, other: &vortex_array::arrays::shared::SharedData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::fns::like::Like::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Shared::array_hash(array: &vortex_array::arrays::shared::SharedData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::scalar_fn::fns::like::Like::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Shared::buffer(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::scalar_fn::fns::like::Like::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Shared::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::scalar_fn::fns::like::Like::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Shared::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::like::Like::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Shared::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::scalar_fn::fns::like::Like::stat_falsification(&self, like_opts: &vortex_array::scalar_fn::fns::like::LikeOptions, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Shared::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::like::Like::validity(&self, _options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Shared::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::list_contains::ListContains +pub fn vortex_array::arrays::Shared::dtype(array: &vortex_array::arrays::shared::SharedData) -> &vortex_array::dtype::DType -pub type vortex_array::scalar_fn::fns::list_contains::ListContains::Options = vortex_array::scalar_fn::EmptyOptions +pub fn vortex_array::arrays::Shared::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::Shared::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::arrays::Shared::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Shared::len(array: &vortex_array::arrays::shared::SharedData) -> usize -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Shared::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::execute(&self, _options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Shared::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Shared::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::Shared::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::is_fallible(&self, _options: &Self::Options) -> bool +pub fn vortex_array::arrays::Shared::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::is_null_sensitive(&self, _instance: &Self::Options) -> bool +pub fn vortex_array::arrays::Shared::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Shared::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Shared::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::serialize(&self, _instance: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Shared::stats(array: &vortex_array::arrays::shared::SharedData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Shared::vtable(_array: &vortex_array::arrays::shared::SharedData) -> &Self -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Shared::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +impl vortex_array::VTable for vortex_array::arrays::Struct -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::stat_falsification(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub type vortex_array::arrays::Struct::ArrayData = vortex_array::arrays::struct_::StructData -pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Struct::Metadata = vortex_array::EmptyMetadata -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::literal::Literal +pub type vortex_array::arrays::Struct::OperationsVTable = vortex_array::arrays::Struct -pub type vortex_array::scalar_fn::fns::literal::Literal::Options = vortex_array::scalar::Scalar +pub type vortex_array::arrays::Struct::ValidityVTable = vortex_array::arrays::Struct -pub fn vortex_array::scalar_fn::fns::literal::Literal::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::Struct::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::literal::Literal::child_name(&self, _instance: &Self::Options, _child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::arrays::Struct::array_eq(array: &vortex_array::arrays::struct_::StructData, other: &vortex_array::arrays::struct_::StructData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::fns::literal::Literal::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::array_hash(array: &vortex_array::arrays::struct_::StructData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::scalar_fn::fns::literal::Literal::deserialize(&self, _metadata: &[u8], session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Struct::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::scalar_fn::fns::literal::Literal::execute(&self, scalar: &vortex_array::scalar::Scalar, args: &dyn vortex_array::scalar_fn::ExecutionArgs, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Struct::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::scalar_fn::fns::literal::Literal::fmt_sql(&self, scalar: &vortex_array::scalar::Scalar, _expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Struct::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::literal::Literal::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::Struct::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::scalar_fn::fns::literal::Literal::is_fallible(&self, _instance: &Self::Options) -> bool +pub fn vortex_array::arrays::Struct::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::literal::Literal::is_null_sensitive(&self, _instance: &Self::Options) -> bool +pub fn vortex_array::arrays::Struct::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::literal::Literal::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::dtype(array: &vortex_array::arrays::struct_::StructData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::literal::Literal::return_dtype(&self, options: &Self::Options, _arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Struct::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::literal::Literal::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Struct::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::literal::Literal::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::scalar_fn::fns::literal::Literal::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::len(array: &vortex_array::arrays::struct_::StructData) -> usize -pub fn vortex_array::scalar_fn::fns::literal::Literal::stat_expression(&self, scalar: &vortex_array::scalar::Scalar, _expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, _catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Struct::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::literal::Literal::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Struct::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::literal::Literal::validity(&self, scalar: &vortex_array::scalar::Scalar, _expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::mask::Mask +pub fn vortex_array::arrays::Struct::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub type vortex_array::scalar_fn::fns::mask::Mask::Options = vortex_array::scalar_fn::EmptyOptions +pub fn vortex_array::arrays::Struct::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::mask::Mask::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::Struct::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar_fn::fns::mask::Mask::child_name(&self, _options: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::arrays::Struct::slot_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::mask::Mask::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::scalar_fn::fns::mask::Mask::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Struct::stats(array: &vortex_array::arrays::struct_::StructData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::scalar_fn::fns::mask::Mask::execute(&self, _options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Struct::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::scalar_fn::fns::mask::Mask::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Struct::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::mask::Mask::id(&self) -> vortex_array::scalar_fn::ScalarFnId +impl vortex_array::VTable for vortex_array::arrays::VarBin -pub fn vortex_array::scalar_fn::fns::mask::Mask::is_fallible(&self, options: &Self::Options) -> bool +pub type vortex_array::arrays::VarBin::ArrayData = vortex_array::arrays::varbin::VarBinData -pub fn vortex_array::scalar_fn::fns::mask::Mask::is_null_sensitive(&self, options: &Self::Options) -> bool +pub type vortex_array::arrays::VarBin::Metadata = vortex_array::ProstMetadata -pub fn vortex_array::scalar_fn::fns::mask::Mask::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub type vortex_array::arrays::VarBin::OperationsVTable = vortex_array::arrays::VarBin -pub fn vortex_array::scalar_fn::fns::mask::Mask::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub type vortex_array::arrays::VarBin::ValidityVTable = vortex_array::arrays::VarBin -pub fn vortex_array::scalar_fn::fns::mask::Mask::serialize(&self, _options: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::VarBin::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::mask::Mask::simplify(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::array_eq(array: &vortex_array::arrays::varbin::VarBinData, other: &vortex_array::arrays::varbin::VarBinData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::fns::mask::Mask::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::array_hash(array: &vortex_array::arrays::varbin::VarBinData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::scalar_fn::fns::mask::Mask::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::VarBin::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::scalar_fn::fns::mask::Mask::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::VarBin::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::scalar_fn::fns::mask::Mask::validity(&self, _options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::merge::Merge +pub fn vortex_array::arrays::VarBin::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub type vortex_array::scalar_fn::fns::merge::Merge::Options = vortex_array::scalar_fn::fns::merge::DuplicateHandling +pub fn vortex_array::arrays::VarBin::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::merge::Merge::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::VarBin::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::merge::Merge::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::arrays::VarBin::dtype(array: &vortex_array::arrays::varbin::VarBinData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::merge::Merge::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::merge::Merge::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBin::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::merge::Merge::execute(&self, options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBin::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::scalar_fn::fns::merge::Merge::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::VarBin::len(array: &vortex_array::arrays::varbin::VarBinData) -> usize -pub fn vortex_array::scalar_fn::fns::merge::Merge::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::VarBin::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::merge::Merge::is_fallible(&self, instance: &Self::Options) -> bool +pub fn vortex_array::arrays::VarBin::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::merge::Merge::is_null_sensitive(&self, _instance: &Self::Options) -> bool +pub fn vortex_array::arrays::VarBin::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::merge::Merge::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::merge::Merge::return_dtype(&self, options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBin::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::merge::Merge::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::VarBin::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar_fn::fns::merge::Merge::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::merge::Merge::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::scalar_fn::fns::merge::Merge::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::VarBin::stats(array: &vortex_array::arrays::varbin::VarBinData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::scalar_fn::fns::merge::Merge::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::VarBin::vtable(_array: &vortex_array::arrays::varbin::VarBinData) -> &Self -pub fn vortex_array::scalar_fn::fns::merge::Merge::validity(&self, _options: &Self::Options, _expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::not::Not +impl vortex_array::VTable for vortex_array::arrays::VarBinView -pub type vortex_array::scalar_fn::fns::not::Not::Options = vortex_array::scalar_fn::EmptyOptions +pub type vortex_array::arrays::VarBinView::ArrayData = vortex_array::arrays::varbinview::VarBinViewData -pub fn vortex_array::scalar_fn::fns::not::Not::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity +pub type vortex_array::arrays::VarBinView::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::scalar_fn::fns::not::Not::child_name(&self, _options: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub type vortex_array::arrays::VarBinView::OperationsVTable = vortex_array::arrays::VarBinView -pub fn vortex_array::scalar_fn::fns::not::Not::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub type vortex_array::arrays::VarBinView::ValidityVTable = vortex_array::arrays::VarBinView -pub fn vortex_array::scalar_fn::fns::not::Not::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinView::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::not::Not::execute(&self, _data: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinView::array_eq(array: &vortex_array::arrays::varbinview::VarBinViewData, other: &vortex_array::arrays::varbinview::VarBinViewData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::fns::not::Not::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::VarBinView::array_hash(array: &vortex_array::arrays::varbinview::VarBinViewData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::scalar_fn::fns::not::Not::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::VarBinView::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::scalar_fn::fns::not::Not::is_fallible(&self, _options: &Self::Options) -> bool +pub fn vortex_array::arrays::VarBinView::buffer_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::scalar_fn::fns::not::Not::is_null_sensitive(&self, _options: &Self::Options) -> bool +pub fn vortex_array::arrays::VarBinView::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::not::Not::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBinView::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::scalar_fn::fns::not::Not::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinView::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::not::Not::serialize(&self, _options: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::VarBinView::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::not::Not::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBinView::dtype(array: &vortex_array::arrays::varbinview::VarBinViewData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::not::Not::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBinView::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::not::Not::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::VarBinView::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::not::Not::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::VarBinView::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::scalar_fn::fns::not::Not::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBinView::len(array: &vortex_array::arrays::varbinview::VarBinViewData) -> usize -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::pack::Pack +pub fn vortex_array::arrays::VarBinView::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub type vortex_array::scalar_fn::fns::pack::Pack::Options = vortex_array::scalar_fn::fns::pack::PackOptions +pub fn vortex_array::arrays::VarBinView::nbuffers(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::pack::Pack::arity(&self, options: &Self::Options) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::VarBinView::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::pack::Pack::child_name(&self, instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::arrays::VarBinView::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::pack::Pack::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBinView::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::pack::Pack::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinView::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar_fn::fns::pack::Pack::execute(&self, options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinView::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::pack::Pack::fmt_sql(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::VarBinView::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::scalar_fn::fns::pack::Pack::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::VarBinView::stats(array: &vortex_array::arrays::varbinview::VarBinViewData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::scalar_fn::fns::pack::Pack::is_fallible(&self, _instance: &Self::Options) -> bool +pub fn vortex_array::arrays::VarBinView::vtable(_array: &vortex_array::arrays::varbinview::VarBinViewData) -> &Self -pub fn vortex_array::scalar_fn::fns::pack::Pack::is_null_sensitive(&self, _instance: &Self::Options) -> bool +pub fn vortex_array::arrays::VarBinView::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::pack::Pack::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +impl vortex_array::VTable for vortex_array::arrays::Variant -pub fn vortex_array::scalar_fn::fns::pack::Pack::return_dtype(&self, options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub type vortex_array::arrays::Variant::ArrayData = vortex_array::arrays::variant::VariantData -pub fn vortex_array::scalar_fn::fns::pack::Pack::serialize(&self, instance: &Self::Options) -> vortex_error::VortexResult>> +pub type vortex_array::arrays::Variant::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::scalar_fn::fns::pack::Pack::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Variant::OperationsVTable = vortex_array::arrays::Variant -pub fn vortex_array::scalar_fn::fns::pack::Pack::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Variant::ValidityVTable = vortex_array::arrays::Variant -pub fn vortex_array::scalar_fn::fns::pack::Pack::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Variant::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::pack::Pack::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Variant::array_eq(array: &vortex_array::arrays::variant::VariantData, other: &vortex_array::arrays::variant::VariantData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::fns::pack::Pack::validity(&self, _options: &Self::Options, _expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Variant::array_hash(array: &vortex_array::arrays::variant::VariantData, state: &mut H, precision: vortex_array::Precision) -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::root::Root +pub fn vortex_array::arrays::Variant::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub type vortex_array::scalar_fn::fns::root::Root::Options = vortex_array::scalar_fn::EmptyOptions +pub fn vortex_array::arrays::Variant::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::scalar_fn::fns::root::Root::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::Variant::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::root::Root::child_name(&self, _instance: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::arrays::Variant::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::scalar_fn::fns::root::Root::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Variant::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::root::Root::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::root::Root::execute(&self, _data: &Self::Options, _args: &dyn vortex_array::scalar_fn::ExecutionArgs, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::dtype(array: &Self::ArrayData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::root::Root::fmt_sql(&self, _options: &Self::Options, _expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Variant::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::root::Root::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::Variant::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::root::Root::is_fallible(&self, _options: &Self::Options) -> bool +pub fn vortex_array::arrays::Variant::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::scalar_fn::fns::root::Root::is_null_sensitive(&self, _options: &Self::Options) -> bool +pub fn vortex_array::arrays::Variant::len(array: &Self::ArrayData) -> usize -pub fn vortex_array::scalar_fn::fns::root::Root::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Variant::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::root::Root::return_dtype(&self, _options: &Self::Options, _arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::root::Root::serialize(&self, _instance: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Variant::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::root::Root::simplify(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Variant::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::root::Root::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Variant::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::root::Root::stat_expression(&self, _options: &Self::Options, _expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Variant::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar_fn::fns::root::Root::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::Variant::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::root::Root::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Variant::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::select::Select +pub fn vortex_array::arrays::Variant::stats(array: &Self::ArrayData) -> &vortex_array::stats::ArrayStats -pub type vortex_array::scalar_fn::fns::select::Select::Options = vortex_array::scalar_fn::fns::select::FieldSelection +pub fn vortex_array::arrays::Variant::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::scalar_fn::fns::select::Select::arity(&self, _options: &vortex_array::scalar_fn::fns::select::FieldSelection) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::Variant::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::select::Select::child_name(&self, _instance: &vortex_array::scalar_fn::fns::select::FieldSelection, child_idx: usize) -> vortex_array::scalar_fn::ChildName +impl vortex_array::VTable for vortex_array::arrays::dict::Dict -pub fn vortex_array::scalar_fn::fns::select::Select::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub type vortex_array::arrays::dict::Dict::ArrayData = vortex_array::arrays::dict::DictData -pub fn vortex_array::scalar_fn::fns::select::Select::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub type vortex_array::arrays::dict::Dict::Metadata = vortex_array::ProstMetadata -pub fn vortex_array::scalar_fn::fns::select::Select::execute(&self, selection: &vortex_array::scalar_fn::fns::select::FieldSelection, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub type vortex_array::arrays::dict::Dict::OperationsVTable = vortex_array::arrays::dict::Dict -pub fn vortex_array::scalar_fn::fns::select::Select::fmt_sql(&self, selection: &vortex_array::scalar_fn::fns::select::FieldSelection, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::arrays::dict::Dict::ValidityVTable = vortex_array::arrays::dict::Dict -pub fn vortex_array::scalar_fn::fns::select::Select::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::dict::Dict::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::select::Select::is_fallible(&self, _instance: &vortex_array::scalar_fn::fns::select::FieldSelection) -> bool +pub fn vortex_array::arrays::dict::Dict::array_eq(array: &vortex_array::arrays::dict::DictData, other: &vortex_array::arrays::dict::DictData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::fns::select::Select::is_null_sensitive(&self, _instance: &vortex_array::scalar_fn::fns::select::FieldSelection) -> bool +pub fn vortex_array::arrays::dict::Dict::array_hash(array: &vortex_array::arrays::dict::DictData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::scalar_fn::fns::select::Select::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::scalar_fn::fns::select::Select::return_dtype(&self, selection: &vortex_array::scalar_fn::fns::select::FieldSelection, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::scalar_fn::fns::select::Select::serialize(&self, instance: &vortex_array::scalar_fn::fns::select::FieldSelection) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::dict::Dict::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::select::Select::simplify(&self, selection: &vortex_array::scalar_fn::fns::select::FieldSelection, expr: &vortex_array::expr::Expression, ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::scalar_fn::fns::select::Select::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::select::Select::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::dict::Dict::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::select::Select::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub fn vortex_array::arrays::dict::Dict::dtype(array: &vortex_array::arrays::dict::DictData) -> &vortex_array::dtype::DType -pub fn vortex_array::scalar_fn::fns::select::Select::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::zip::Zip +pub fn vortex_array::arrays::dict::Dict::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub type vortex_array::scalar_fn::fns::zip::Zip::Options = vortex_array::scalar_fn::EmptyOptions +pub fn vortex_array::arrays::dict::Dict::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::scalar_fn::fns::zip::Zip::arity(&self, _options: &Self::Options) -> vortex_array::scalar_fn::Arity +pub fn vortex_array::arrays::dict::Dict::len(array: &vortex_array::arrays::dict::DictData) -> usize -pub fn vortex_array::scalar_fn::fns::zip::Zip::child_name(&self, _options: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::ChildName +pub fn vortex_array::arrays::dict::Dict::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::fns::zip::Zip::coerce_args(&self, options: &Self::Options, args: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::zip::Zip::deserialize(&self, _metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::scalar_fn::fns::zip::Zip::execute(&self, _options: &Self::Options, args: &dyn vortex_array::scalar_fn::ExecutionArgs, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::zip::Zip::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::dict::Dict::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::scalar_fn::fns::zip::Zip::id(&self) -> vortex_array::scalar_fn::ScalarFnId +pub fn vortex_array::arrays::dict::Dict::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::scalar_fn::fns::zip::Zip::is_fallible(&self, _options: &Self::Options) -> bool +pub fn vortex_array::arrays::dict::Dict::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::scalar_fn::fns::zip::Zip::is_null_sensitive(&self, _options: &Self::Options) -> bool +pub fn vortex_array::arrays::dict::Dict::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::scalar_fn::fns::zip::Zip::reduce(&self, options: &Self::Options, node: &dyn vortex_array::scalar_fn::ReduceNode, ctx: &dyn vortex_array::scalar_fn::ReduceCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::stats(array: &vortex_array::arrays::dict::DictData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::scalar_fn::fns::zip::Zip::return_dtype(&self, _options: &Self::Options, arg_dtypes: &[vortex_array::dtype::DType]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::scalar_fn::fns::zip::Zip::serialize(&self, _options: &Self::Options) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::dict::Dict::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::fns::zip::Zip::simplify(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, _ctx: &dyn vortex_array::scalar_fn::SimplifyCtx) -> vortex_error::VortexResult> +impl vortex_array::VTable for vortex_array::arrays::null::Null -pub fn vortex_array::scalar_fn::fns::zip::Zip::simplify_untyped(&self, options: &Self::Options, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub type vortex_array::arrays::null::Null::ArrayData = vortex_array::arrays::null::NullData -pub fn vortex_array::scalar_fn::fns::zip::Zip::stat_expression(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, stat: vortex_array::expr::stats::Stat, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub type vortex_array::arrays::null::Null::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::scalar_fn::fns::zip::Zip::stat_falsification(&self, options: &Self::Options, expr: &vortex_array::expr::Expression, catalog: &dyn vortex_array::expr::pruning::StatsCatalog) -> core::option::Option +pub type vortex_array::arrays::null::Null::OperationsVTable = vortex_array::arrays::null::Null -pub fn vortex_array::scalar_fn::fns::zip::Zip::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> +pub type vortex_array::arrays::null::Null::ValidityVTable = vortex_array::arrays::null::Null -pub trait vortex_array::scalar_fn::ScalarFnVTableExt: vortex_array::scalar_fn::ScalarFnVTable +pub fn vortex_array::arrays::null::Null::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::scalar_fn::ScalarFnVTableExt::bind(&self, options: Self::Options) -> vortex_array::scalar_fn::ScalarFnRef +pub fn vortex_array::arrays::null::Null::array_eq(_array: &vortex_array::arrays::null::NullData, _other: &vortex_array::arrays::null::NullData, _precision: vortex_array::Precision) -> bool -pub fn vortex_array::scalar_fn::ScalarFnVTableExt::new_expr(&self, options: Self::Options, children: impl core::iter::traits::collect::IntoIterator) -> vortex_array::expr::Expression +pub fn vortex_array::arrays::null::Null::array_hash(_array: &vortex_array::arrays::null::NullData, _state: &mut H, _precision: vortex_array::Precision) -pub fn vortex_array::scalar_fn::ScalarFnVTableExt::try_new_expr(&self, options: Self::Options, children: impl core::iter::traits::collect::IntoIterator) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -impl vortex_array::scalar_fn::ScalarFnVTableExt for V +pub fn vortex_array::arrays::null::Null::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn V::bind(&self, options: Self::Options) -> vortex_array::scalar_fn::ScalarFnRef +pub fn vortex_array::arrays::null::Null::build(_dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], _children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn V::new_expr(&self, options: Self::Options, children: impl core::iter::traits::collect::IntoIterator) -> vortex_array::expr::Expression +pub fn vortex_array::arrays::null::Null::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn V::try_new_expr(&self, options: Self::Options, children: impl core::iter::traits::collect::IntoIterator) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub trait vortex_array::scalar_fn::SimplifyCtx +pub fn vortex_array::arrays::null::Null::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::scalar_fn::SimplifyCtx::return_dtype(&self, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::dtype(_array: &vortex_array::arrays::null::NullData) -> &vortex_array::dtype::DType -pub type vortex_array::scalar_fn::ChildName = arcref::ArcRef +pub fn vortex_array::arrays::null::Null::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::scalar_fn::ReduceNodeRef = alloc::sync::Arc +pub fn vortex_array::arrays::null::Null::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub type vortex_array::scalar_fn::ScalarFnId = arcref::ArcRef +pub fn vortex_array::arrays::null::Null::id(&self) -> vortex_array::ArrayId -pub type vortex_array::scalar_fn::ScalarFnPluginRef = alloc::sync::Arc +pub fn vortex_array::arrays::null::Null::len(array: &vortex_array::arrays::null::NullData) -> usize -pub mod vortex_array::search_sorted +pub fn vortex_array::arrays::null::Null::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub enum vortex_array::search_sorted::SearchResult +pub fn vortex_array::arrays::null::Null::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub vortex_array::search_sorted::SearchResult::Found(usize) +pub fn vortex_array::arrays::null::Null::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub vortex_array::search_sorted::SearchResult::NotFound(usize) +pub fn vortex_array::arrays::null::Null::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -impl vortex_array::search_sorted::SearchResult +pub fn vortex_array::arrays::null::Null::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::search_sorted::SearchResult::to_ends_index(self, len: usize) -> usize +pub fn vortex_array::arrays::null::Null::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::search_sorted::SearchResult::to_found(self) -> core::option::Option +pub fn vortex_array::arrays::null::Null::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::search_sorted::SearchResult::to_index(self) -> usize +pub fn vortex_array::arrays::null::Null::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::search_sorted::SearchResult::to_offsets_index(self, len: usize, side: vortex_array::search_sorted::SearchSortedSide) -> usize +pub fn vortex_array::arrays::null::Null::stats(array: &vortex_array::arrays::null::NullData) -> &vortex_array::stats::ArrayStats -impl core::clone::Clone for vortex_array::search_sorted::SearchResult +pub fn vortex_array::arrays::null::Null::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::search_sorted::SearchResult::clone(&self) -> vortex_array::search_sorted::SearchResult +pub fn vortex_array::arrays::null::Null::with_slots(_array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl core::cmp::Eq for vortex_array::search_sorted::SearchResult +impl vortex_array::VTable for vortex_array::arrays::patched::Patched -impl core::cmp::PartialEq for vortex_array::search_sorted::SearchResult +pub type vortex_array::arrays::patched::Patched::ArrayData = vortex_array::arrays::patched::PatchedArray -pub fn vortex_array::search_sorted::SearchResult::eq(&self, other: &vortex_array::search_sorted::SearchResult) -> bool +pub type vortex_array::arrays::patched::Patched::Metadata = vortex_array::ProstMetadata -impl core::fmt::Debug for vortex_array::search_sorted::SearchResult +pub type vortex_array::arrays::patched::Patched::OperationsVTable = vortex_array::arrays::patched::Patched -pub fn vortex_array::search_sorted::SearchResult::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::arrays::patched::Patched::ValidityVTable = vortex_array::ValidityVTableFromChild -impl core::fmt::Display for vortex_array::search_sorted::SearchResult +pub fn vortex_array::arrays::patched::Patched::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::search_sorted::SearchResult::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::patched::Patched::array_eq(array: &vortex_array::arrays::patched::PatchedArray, other: &vortex_array::arrays::patched::PatchedArray, precision: vortex_array::Precision) -> bool -impl core::marker::Copy for vortex_array::search_sorted::SearchResult +pub fn vortex_array::arrays::patched::Patched::array_hash(array: &vortex_array::arrays::patched::PatchedArray, state: &mut H, precision: vortex_array::Precision) -impl core::marker::StructuralPartialEq for vortex_array::search_sorted::SearchResult +pub fn vortex_array::arrays::patched::Patched::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub enum vortex_array::search_sorted::SearchSortedSide +pub fn vortex_array::arrays::patched::Patched::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub vortex_array::search_sorted::SearchSortedSide::Left +pub fn vortex_array::arrays::patched::Patched::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub vortex_array::search_sorted::SearchSortedSide::Right +pub fn vortex_array::arrays::patched::Patched::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -impl core::clone::Clone for vortex_array::search_sorted::SearchSortedSide +pub fn vortex_array::arrays::patched::Patched::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::search_sorted::SearchSortedSide::clone(&self) -> vortex_array::search_sorted::SearchSortedSide +pub fn vortex_array::arrays::patched::Patched::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl core::cmp::Eq for vortex_array::search_sorted::SearchSortedSide +pub fn vortex_array::arrays::patched::Patched::dtype(array: &Self::ArrayData) -> &vortex_array::dtype::DType -impl core::cmp::PartialEq for vortex_array::search_sorted::SearchSortedSide +pub fn vortex_array::arrays::patched::Patched::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::search_sorted::SearchSortedSide::eq(&self, other: &vortex_array::search_sorted::SearchSortedSide) -> bool +pub fn vortex_array::arrays::patched::Patched::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl core::fmt::Debug for vortex_array::search_sorted::SearchSortedSide +pub fn vortex_array::arrays::patched::Patched::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::search_sorted::SearchSortedSide::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::patched::Patched::len(array: &Self::ArrayData) -> usize -impl core::fmt::Display for vortex_array::search_sorted::SearchSortedSide +pub fn vortex_array::arrays::patched::Patched::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::search_sorted::SearchSortedSide::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::patched::Patched::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -impl core::marker::Copy for vortex_array::search_sorted::SearchSortedSide +pub fn vortex_array::arrays::patched::Patched::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -impl core::marker::StructuralPartialEq for vortex_array::search_sorted::SearchSortedSide +pub fn vortex_array::arrays::patched::Patched::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub trait vortex_array::search_sorted::IndexOrd +pub fn vortex_array::arrays::patched::Patched::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::search_sorted::IndexOrd::index_cmp(&self, idx: usize, elem: &V) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::patched::Patched::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::search_sorted::IndexOrd::index_ge(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::arrays::patched::Patched::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::search_sorted::IndexOrd::index_gt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::arrays::patched::Patched::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::search_sorted::IndexOrd::index_le(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::arrays::patched::Patched::stats(array: &Self::ArrayData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::search_sorted::IndexOrd::index_len(&self) -> usize +pub fn vortex_array::arrays::patched::Patched::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::search_sorted::IndexOrd::index_lt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::arrays::patched::Patched::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl vortex_array::search_sorted::IndexOrd> for vortex_array::variants::PrimitiveTyped<'_> +impl vortex_array::VTable for vortex_array::arrays::scalar_fn::ScalarFnVTable -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_cmp(&self, idx: usize, elem: &core::option::Option) -> vortex_error::VortexResult> +pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::ArrayData = vortex_array::arrays::scalar_fn::ScalarFnData -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_ge(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::Metadata = vortex_array::arrays::scalar_fn::metadata::ScalarFnMetadata -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_gt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::OperationsVTable = vortex_array::arrays::scalar_fn::ScalarFnVTable -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_le(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::ValidityVTable = vortex_array::arrays::scalar_fn::ScalarFnVTable -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_len(&self) -> usize +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_lt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::array_eq(array: &vortex_array::arrays::scalar_fn::ScalarFnData, other: &vortex_array::arrays::scalar_fn::ScalarFnData, precision: vortex_array::Precision) -> bool -impl vortex_array::search_sorted::IndexOrd for vortex_array::variants::PrimitiveTyped<'_> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::array_hash(array: &vortex_array::arrays::scalar_fn::ScalarFnData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_cmp(&self, idx: usize, elem: &vortex_array::scalar::PValue) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_ge(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_gt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::scalar_fn::metadata::ScalarFnMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_le(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_len(&self) -> usize +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_lt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl vortex_array::search_sorted::IndexOrd for (dyn vortex_array::DynArray + '_) +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::dtype(array: &vortex_array::arrays::scalar_fn::ScalarFnData) -> &vortex_array::dtype::DType -pub fn (dyn vortex_array::DynArray + '_)::index_cmp(&self, idx: usize, elem: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn (dyn vortex_array::DynArray + '_)::index_ge(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn (dyn vortex_array::DynArray + '_)::index_gt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::id(&self) -> vortex_array::ArrayId -pub fn (dyn vortex_array::DynArray + '_)::index_le(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::len(array: &vortex_array::arrays::scalar_fn::ScalarFnData) -> usize -pub fn (dyn vortex_array::DynArray + '_)::index_len(&self) -> usize +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn (dyn vortex_array::DynArray + '_)::index_lt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -impl vortex_array::search_sorted::IndexOrd for [T] +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn [T]::index_cmp(&self, idx: usize, elem: &T) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn [T]::index_ge(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn [T]::index_gt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn [T]::index_le(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::slot_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn [T]::index_len(&self) -> usize +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn [T]::index_lt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::stats(array: &vortex_array::arrays::scalar_fn::ScalarFnData) -> &vortex_array::stats::ArrayStats -pub trait vortex_array::search_sorted::SearchSorted +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::vtable(array: &vortex_array::arrays::scalar_fn::ScalarFnData) -> &Self -pub fn vortex_array::search_sorted::SearchSorted::search_sorted(&self, value: &T, side: vortex_array::search_sorted::SearchSortedSide) -> vortex_error::VortexResult where Self: vortex_array::search_sorted::IndexOrd +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::search_sorted::SearchSorted::search_sorted_by vortex_error::VortexResult, N: core::ops::function::FnMut(usize) -> vortex_error::VortexResult>(&self, find: F, side_find: N, side: vortex_array::search_sorted::SearchSortedSide) -> vortex_error::VortexResult +impl vortex_array::VTable for vortex_array::arrays::slice::Slice -impl vortex_array::search_sorted::SearchSorted for S where S: vortex_array::search_sorted::IndexOrd + ?core::marker::Sized +pub type vortex_array::arrays::slice::Slice::ArrayData = vortex_array::arrays::slice::SliceData -pub fn S::search_sorted(&self, value: &T, side: vortex_array::search_sorted::SearchSortedSide) -> vortex_error::VortexResult where Self: vortex_array::search_sorted::IndexOrd +pub type vortex_array::arrays::slice::Slice::Metadata = vortex_array::arrays::slice::SliceMetadata -pub fn S::search_sorted_by(&self, find: F, side_find: N, side: vortex_array::search_sorted::SearchSortedSide) -> core::result::Result where F: core::ops::function::FnMut(usize) -> core::result::Result, N: core::ops::function::FnMut(usize) -> core::result::Result +pub type vortex_array::arrays::slice::Slice::OperationsVTable = vortex_array::arrays::slice::Slice -pub mod vortex_array::serde +pub type vortex_array::arrays::slice::Slice::ValidityVTable = vortex_array::arrays::slice::Slice -pub struct vortex_array::serde::ArrayNodeFlatBuffer<'a> +pub fn vortex_array::arrays::slice::Slice::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl<'a> vortex_array::serde::ArrayNodeFlatBuffer<'a> +pub fn vortex_array::arrays::slice::Slice::array_eq(array: &vortex_array::arrays::slice::SliceData, other: &vortex_array::arrays::slice::SliceData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::serde::ArrayNodeFlatBuffer<'a>::try_new(ctx: &'a vortex_array::ArrayContext, array: &'a dyn vortex_array::DynArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::slice::Slice::array_hash(array: &vortex_array::arrays::slice::SliceData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::serde::ArrayNodeFlatBuffer<'a>::try_write_flatbuffer<'fb>(&self, fbb: &mut flatbuffers::builder::FlatBufferBuilder<'fb>) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::slice::Slice::buffer(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> vortex_array::buffer::BufferHandle -pub struct vortex_array::serde::ArrayParts +pub fn vortex_array::arrays::slice::Slice::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -impl vortex_array::serde::ArrayParts +pub fn vortex_array::arrays::slice::Slice::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::slice::SliceMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::serde::ArrayParts::buffer(&self, idx: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::slice::Slice::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::serde::ArrayParts::buffer_lengths(&self) -> alloc::vec::Vec +pub fn vortex_array::arrays::slice::Slice::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::serde::ArrayParts::child(&self, idx: usize) -> vortex_array::serde::ArrayParts +pub fn vortex_array::arrays::slice::Slice::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::serde::ArrayParts::decode(&self, dtype: &vortex_array::dtype::DType, len: usize, ctx: &vortex_session::registry::ReadContext, session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::slice::Slice::dtype(array: &vortex_array::arrays::slice::SliceData) -> &vortex_array::dtype::DType -pub fn vortex_array::serde::ArrayParts::encoding_id(&self) -> u16 +pub fn vortex_array::arrays::slice::Slice::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::serde::ArrayParts::from_array_tree(array_tree: impl core::convert::Into) -> vortex_error::VortexResult +pub fn vortex_array::arrays::slice::Slice::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::serde::ArrayParts::from_flatbuffer_and_segment(array_tree: vortex_buffer::ByteBuffer, segment: vortex_array::buffer::BufferHandle) -> vortex_error::VortexResult +pub fn vortex_array::arrays::slice::Slice::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::serde::ArrayParts::from_flatbuffer_and_segment_with_overrides(array_tree: vortex_buffer::ByteBuffer, segment: vortex_array::buffer::BufferHandle, buffer_overrides: &vortex_utils::aliases::hash_map::HashMap) -> vortex_error::VortexResult +pub fn vortex_array::arrays::slice::Slice::len(array: &vortex_array::arrays::slice::SliceData) -> usize -pub fn vortex_array::serde::ArrayParts::from_flatbuffer_with_buffers(array_tree: impl core::convert::Into, buffers: alloc::vec::Vec) -> vortex_error::VortexResult +pub fn vortex_array::arrays::slice::Slice::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::serde::ArrayParts::metadata(&self) -> &[u8] +pub fn vortex_array::arrays::slice::Slice::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::serde::ArrayParts::nbuffers(&self) -> usize +pub fn vortex_array::arrays::slice::Slice::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::serde::ArrayParts::nchildren(&self) -> usize +pub fn vortex_array::arrays::slice::Slice::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -impl core::clone::Clone for vortex_array::serde::ArrayParts +pub fn vortex_array::arrays::slice::Slice::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::serde::ArrayParts::clone(&self) -> vortex_array::serde::ArrayParts +pub fn vortex_array::arrays::slice::Slice::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -impl core::convert::TryFrom for vortex_array::serde::ArrayParts +pub fn vortex_array::arrays::slice::Slice::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub type vortex_array::serde::ArrayParts::Error = vortex_error::VortexError +pub fn vortex_array::arrays::slice::Slice::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::serde::ArrayParts::try_from(value: vortex_array::buffer::BufferHandle) -> core::result::Result +pub fn vortex_array::arrays::slice::Slice::stats(array: &vortex_array::arrays::slice::SliceData) -> &vortex_array::stats::ArrayStats -impl core::convert::TryFrom> for vortex_array::serde::ArrayParts +pub fn vortex_array::arrays::slice::Slice::vtable(_array: &vortex_array::arrays::slice::SliceData) -> &Self -pub type vortex_array::serde::ArrayParts::Error = vortex_error::VortexError +pub fn vortex_array::arrays::slice::Slice::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::serde::ArrayParts::try_from(value: vortex_buffer::ByteBuffer) -> core::result::Result +pub trait vortex_array::vtable::ValidityChild -impl core::fmt::Debug for vortex_array::serde::ArrayParts +pub fn vortex_array::vtable::ValidityChild::validity_child(array: &::ArrayData) -> &vortex_array::ArrayRef -pub fn vortex_array::serde::ArrayParts::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl vortex_array::ValidityChild for vortex_array::arrays::Extension -pub struct vortex_array::serde::SerializeOptions +pub fn vortex_array::arrays::Extension::validity_child(array: &vortex_array::arrays::extension::ExtensionData) -> &vortex_array::ArrayRef -pub vortex_array::serde::SerializeOptions::include_padding: bool +impl vortex_array::ValidityChild for vortex_array::arrays::patched::Patched -pub vortex_array::serde::SerializeOptions::offset: usize +pub fn vortex_array::arrays::patched::Patched::validity_child(array: &vortex_array::arrays::patched::PatchedArray) -> &vortex_array::ArrayRef -impl core::default::Default for vortex_array::serde::SerializeOptions +pub trait vortex_array::vtable::ValidityChildSliceHelper -pub fn vortex_array::serde::SerializeOptions::default() -> vortex_array::serde::SerializeOptions +pub fn vortex_array::vtable::ValidityChildSliceHelper::sliced_child_array(&self) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::serde::SerializeOptions +pub fn vortex_array::vtable::ValidityChildSliceHelper::unsliced_child_and_slice(&self) -> (&vortex_array::ArrayRef, usize, usize) -pub fn vortex_array::serde::SerializeOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub trait vortex_array::vtable::ValidityHelper -pub trait vortex_array::serde::ArrayChildren +pub fn vortex_array::vtable::ValidityHelper::validity(&self) -> &vortex_array::validity::Validity -pub fn vortex_array::serde::ArrayChildren::get(&self, index: usize, dtype: &vortex_array::dtype::DType, len: usize) -> vortex_error::VortexResult +pub trait vortex_array::vtable::ValiditySliceHelper -pub fn vortex_array::serde::ArrayChildren::is_empty(&self) -> bool +pub fn vortex_array::vtable::ValiditySliceHelper::sliced_validity(&self) -> vortex_error::VortexResult -pub fn vortex_array::serde::ArrayChildren::len(&self) -> usize +pub fn vortex_array::vtable::ValiditySliceHelper::unsliced_validity_and_slice(&self) -> (&vortex_array::validity::Validity, usize, usize) -impl vortex_array::serde::ArrayChildren for &[vortex_array::ArrayRef] +pub trait vortex_array::vtable::ValidityVTable -pub fn &[vortex_array::ArrayRef]::get(&self, index: usize, dtype: &vortex_array::dtype::DType, len: usize) -> vortex_error::VortexResult +pub fn vortex_array::vtable::ValidityVTable::validity(array: vortex_array::ArrayView<'_, V>) -> vortex_error::VortexResult -pub fn &[vortex_array::ArrayRef]::is_empty(&self) -> bool +impl vortex_array::ValidityVTable for vortex_array::arrays::Bool -pub fn &[vortex_array::ArrayRef]::len(&self) -> usize +pub fn vortex_array::arrays::Bool::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>) -> vortex_error::VortexResult -pub mod vortex_array::session +impl vortex_array::ValidityVTable for vortex_array::arrays::Chunked -pub struct vortex_array::session::ArraySession +pub fn vortex_array::arrays::Chunked::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Chunked>) -> vortex_error::VortexResult -impl vortex_array::session::ArraySession +impl vortex_array::ValidityVTable for vortex_array::arrays::Constant -pub fn vortex_array::session::ArraySession::empty() -> vortex_array::session::ArraySession +pub fn vortex_array::arrays::Constant::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Constant>) -> vortex_error::VortexResult -pub fn vortex_array::session::ArraySession::register(&self, vtable: V) +impl vortex_array::ValidityVTable for vortex_array::arrays::Decimal -pub fn vortex_array::session::ArraySession::registry(&self) -> &vortex_array::session::ArrayRegistry +pub fn vortex_array::arrays::Decimal::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Decimal>) -> vortex_error::VortexResult -impl core::default::Default for vortex_array::session::ArraySession +impl vortex_array::ValidityVTable for vortex_array::arrays::Filter -pub fn vortex_array::session::ArraySession::default() -> Self +pub fn vortex_array::arrays::Filter::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Filter>) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::session::ArraySession +impl vortex_array::ValidityVTable for vortex_array::arrays::FixedSizeList -pub fn vortex_array::session::ArraySession::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::FixedSizeList::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::FixedSizeList>) -> vortex_error::VortexResult -pub trait vortex_array::session::ArraySessionExt: vortex_session::SessionExt +impl vortex_array::ValidityVTable for vortex_array::arrays::List -pub fn vortex_array::session::ArraySessionExt::arrays(&self) -> vortex_session::Ref<'_, vortex_array::session::ArraySession> +pub fn vortex_array::arrays::List::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::List>) -> vortex_error::VortexResult -impl vortex_array::session::ArraySessionExt for S +impl vortex_array::ValidityVTable for vortex_array::arrays::ListView -pub fn S::arrays(&self) -> vortex_session::Ref<'_, vortex_array::session::ArraySession> +pub fn vortex_array::arrays::ListView::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::ListView>) -> vortex_error::VortexResult -pub type vortex_array::session::ArrayRegistry = vortex_session::registry::Registry +impl vortex_array::ValidityVTable for vortex_array::arrays::Masked -pub mod vortex_array::stats +pub fn vortex_array::arrays::Masked::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>) -> vortex_error::VortexResult -pub mod vortex_array::stats::flatbuffers +impl vortex_array::ValidityVTable for vortex_array::arrays::Primitive -pub struct vortex_array::stats::ArrayStats +pub fn vortex_array::arrays::Primitive::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Primitive>) -> vortex_error::VortexResult -impl vortex_array::stats::ArrayStats +impl vortex_array::ValidityVTable for vortex_array::arrays::Shared -pub fn vortex_array::stats::ArrayStats::clear(&self, stat: vortex_array::expr::stats::Stat) +pub fn vortex_array::arrays::Shared::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Shared>) -> vortex_error::VortexResult -pub fn vortex_array::stats::ArrayStats::retain(&self, stats: &[vortex_array::expr::stats::Stat]) +impl vortex_array::ValidityVTable for vortex_array::arrays::Struct -pub fn vortex_array::stats::ArrayStats::set(&self, stat: vortex_array::expr::stats::Stat, value: vortex_array::expr::stats::Precision) +pub fn vortex_array::arrays::Struct::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Struct>) -> vortex_error::VortexResult -pub fn vortex_array::stats::ArrayStats::to_ref<'a>(&'a self, array: &'a dyn vortex_array::DynArray) -> vortex_array::stats::StatsSetRef<'a> +impl vortex_array::ValidityVTable for vortex_array::arrays::VarBin -impl core::clone::Clone for vortex_array::stats::ArrayStats +pub fn vortex_array::arrays::VarBin::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBin>) -> vortex_error::VortexResult -pub fn vortex_array::stats::ArrayStats::clone(&self) -> vortex_array::stats::ArrayStats +impl vortex_array::ValidityVTable for vortex_array::arrays::VarBinView -impl core::convert::From for vortex_array::stats::StatsSet +pub fn vortex_array::arrays::VarBinView::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBinView>) -> vortex_error::VortexResult -pub fn vortex_array::stats::StatsSet::from(value: vortex_array::stats::ArrayStats) -> Self +impl vortex_array::ValidityVTable for vortex_array::arrays::Variant -impl core::convert::From for vortex_array::stats::ArrayStats +pub fn vortex_array::arrays::Variant::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Variant>) -> vortex_error::VortexResult -pub fn vortex_array::stats::ArrayStats::from(value: vortex_array::stats::StatsSet) -> Self +impl vortex_array::ValidityVTable for vortex_array::arrays::dict::Dict -impl core::default::Default for vortex_array::stats::ArrayStats +pub fn vortex_array::arrays::dict::Dict::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>) -> vortex_error::VortexResult -pub fn vortex_array::stats::ArrayStats::default() -> vortex_array::stats::ArrayStats +impl vortex_array::ValidityVTable for vortex_array::arrays::null::Null -impl core::fmt::Debug for vortex_array::stats::ArrayStats +pub fn vortex_array::arrays::null::Null::validity(_array: vortex_array::ArrayView<'_, vortex_array::arrays::null::Null>) -> vortex_error::VortexResult -pub fn vortex_array::stats::ArrayStats::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl vortex_array::ValidityVTable for vortex_array::arrays::scalar_fn::ScalarFnVTable -pub struct vortex_array::stats::MutTypedStatsSetRef<'a, 'b> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::scalar_fn::ScalarFnVTable>) -> vortex_error::VortexResult -pub vortex_array::stats::MutTypedStatsSetRef::dtype: &'b vortex_array::dtype::DType +impl vortex_array::ValidityVTable for vortex_array::arrays::slice::Slice -pub vortex_array::stats::MutTypedStatsSetRef::values: &'a mut vortex_array::stats::StatsSet +pub fn vortex_array::arrays::slice::Slice::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::slice::Slice>) -> vortex_error::VortexResult -impl vortex_array::stats::MutTypedStatsSetRef<'_, '_> +impl vortex_array::ValidityVTable for vortex_array::ValidityVTableFromChildSliceHelper where ::ArrayData: vortex_array::ValidityChildSliceHelper -pub fn vortex_array::stats::MutTypedStatsSetRef<'_, '_>::clear(&mut self, stat: vortex_array::expr::stats::Stat) +pub fn vortex_array::ValidityVTableFromChildSliceHelper::validity(array: vortex_array::ArrayView<'_, V>) -> vortex_error::VortexResult -pub fn vortex_array::stats::MutTypedStatsSetRef<'_, '_>::set(&mut self, stat: vortex_array::expr::stats::Stat, value: vortex_array::expr::stats::Precision) +impl vortex_array::ValidityVTable for vortex_array::ValidityVTableFromValidityHelper where ::ArrayData: vortex_array::ValidityHelper -impl vortex_array::stats::MutTypedStatsSetRef<'_, '_> +pub fn vortex_array::ValidityVTableFromValidityHelper::validity(array: vortex_array::ArrayView<'_, V>) -> vortex_error::VortexResult -pub fn vortex_array::stats::MutTypedStatsSetRef<'_, '_>::combine_sets(&mut self, other: &vortex_array::stats::TypedStatsSetRef<'_, '_>) -> vortex_error::VortexResult<()> +impl vortex_array::ValidityVTable for vortex_array::ValidityVTableFromValiditySliceHelper where ::ArrayData: vortex_array::ValiditySliceHelper -pub fn vortex_array::stats::MutTypedStatsSetRef<'_, '_>::merge_ordered(self, other: &vortex_array::stats::TypedStatsSetRef<'_, '_>) -> Self +pub fn vortex_array::ValidityVTableFromValiditySliceHelper::validity(array: vortex_array::ArrayView<'_, V>) -> vortex_error::VortexResult -pub fn vortex_array::stats::MutTypedStatsSetRef<'_, '_>::merge_unordered(self, other: &vortex_array::stats::TypedStatsSetRef<'_, '_>) -> Self +impl vortex_array::ValidityVTable for vortex_array::ValidityVTableFromChild where V: vortex_array::ValidityChild + vortex_array::VTable -impl vortex_array::expr::stats::StatsProvider for vortex_array::stats::MutTypedStatsSetRef<'_, '_> +pub fn vortex_array::ValidityVTableFromChild::validity(array: vortex_array::ArrayView<'_, V>) -> vortex_error::VortexResult -pub fn vortex_array::stats::MutTypedStatsSetRef<'_, '_>::get(&self, stat: vortex_array::expr::stats::Stat) -> core::option::Option> +pub fn vortex_array::vtable::child_to_validity(child: &core::option::Option, nullability: vortex_array::dtype::Nullability) -> vortex_array::validity::Validity -pub fn vortex_array::stats::MutTypedStatsSetRef<'_, '_>::is_empty(&self) -> bool +pub fn vortex_array::vtable::patches_child(patches: &vortex_array::patches::Patches, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::stats::MutTypedStatsSetRef<'_, '_>::len(&self) -> usize +pub fn vortex_array::vtable::patches_child_name(idx: usize) -> &'static str -pub struct vortex_array::stats::StatsSet +pub fn vortex_array::vtable::patches_nchildren(patches: &vortex_array::patches::Patches) -> usize -impl vortex_array::stats::StatsSet +pub fn vortex_array::vtable::validity_nchildren(validity: &vortex_array::validity::Validity) -> usize -pub fn vortex_array::stats::StatsSet::as_mut_typed_ref<'a, 'b>(&'a mut self, dtype: &'b vortex_array::dtype::DType) -> vortex_array::stats::MutTypedStatsSetRef<'a, 'b> +pub fn vortex_array::vtable::validity_to_child(validity: &vortex_array::validity::Validity, len: usize) -> core::option::Option -pub fn vortex_array::stats::StatsSet::as_typed_ref<'a, 'b>(&'a self, dtype: &'b vortex_array::dtype::DType) -> vortex_array::stats::TypedStatsSetRef<'a, 'b> +pub type vortex_array::vtable::DynVTableRef = alloc::sync::Arc -pub unsafe fn vortex_array::stats::StatsSet::new_unchecked(values: alloc::vec::Vec<(vortex_array::expr::stats::Stat, vortex_array::expr::stats::Precision)>) -> Self +pub macro vortex_array::field_path! -pub fn vortex_array::stats::StatsSet::of(stat: vortex_array::expr::stats::Stat, value: vortex_array::expr::stats::Precision) -> Self +pub macro vortex_array::match_each_decimal_value! -impl vortex_array::stats::StatsSet +pub macro vortex_array::match_each_decimal_value_type! -pub fn vortex_array::stats::StatsSet::clear(&mut self, stat: vortex_array::expr::stats::Stat) +pub macro vortex_array::match_each_float_ptype! -pub fn vortex_array::stats::StatsSet::get(&self, stat: vortex_array::expr::stats::Stat) -> core::option::Option> +pub macro vortex_array::match_each_integer_ptype! -pub fn vortex_array::stats::StatsSet::get_as core::convert::TryFrom<&'a vortex_array::scalar::Scalar, Error = vortex_error::VortexError>>(&self, stat: vortex_array::expr::stats::Stat, dtype: &vortex_array::dtype::DType) -> core::option::Option> +pub macro vortex_array::match_each_native_ptype! -pub fn vortex_array::stats::StatsSet::is_empty(&self) -> bool +pub macro vortex_array::match_each_native_simd_ptype! -pub fn vortex_array::stats::StatsSet::iter(&self) -> impl core::iter::traits::iterator::Iterator)> +pub macro vortex_array::match_each_pvalue! -pub fn vortex_array::stats::StatsSet::len(&self) -> usize +pub macro vortex_array::match_each_signed_integer_ptype! -pub fn vortex_array::stats::StatsSet::retain_only(&mut self, stats: &[vortex_array::expr::stats::Stat]) +pub macro vortex_array::match_each_unsigned_integer_ptype! -pub fn vortex_array::stats::StatsSet::set(&mut self, stat: vortex_array::expr::stats::Stat, value: vortex_array::expr::stats::Precision) +pub macro vortex_array::match_smallest_offset_type! -impl vortex_array::stats::StatsSet +pub macro vortex_array::require_child! -pub fn vortex_array::stats::StatsSet::combine_sets(&mut self, other: &Self, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult<()> +pub macro vortex_array::require_opt_child! -pub fn vortex_array::stats::StatsSet::merge_ordered(self, other: &Self, dtype: &vortex_array::dtype::DType) -> Self +pub macro vortex_array::require_patches! -pub fn vortex_array::stats::StatsSet::merge_unordered(self, other: &Self, dtype: &vortex_array::dtype::DType) -> Self +pub macro vortex_array::require_validity! -impl vortex_array::stats::StatsSet +pub macro vortex_array::vtable! -pub fn vortex_array::stats::StatsSet::from_flatbuffer<'a>(fb: &vortex_flatbuffers::array::ArrayStats<'a>, array_dtype: &vortex_array::dtype::DType, session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub enum vortex_array::Canonical -impl core::clone::Clone for vortex_array::stats::StatsSet +pub vortex_array::Canonical::Bool(vortex_array::arrays::BoolArray) -pub fn vortex_array::stats::StatsSet::clone(&self) -> vortex_array::stats::StatsSet +pub vortex_array::Canonical::Decimal(vortex_array::arrays::DecimalArray) -impl core::convert::From for vortex_array::stats::StatsSet +pub vortex_array::Canonical::Extension(vortex_array::arrays::ExtensionArray) -pub fn vortex_array::stats::StatsSet::from(value: vortex_array::stats::ArrayStats) -> Self +pub vortex_array::Canonical::FixedSizeList(vortex_array::arrays::FixedSizeListArray) -impl core::convert::From for vortex_array::stats::ArrayStats +pub vortex_array::Canonical::List(vortex_array::arrays::ListViewArray) -pub fn vortex_array::stats::ArrayStats::from(value: vortex_array::stats::StatsSet) -> Self +pub vortex_array::Canonical::Null(vortex_array::arrays::null::NullArray) -impl core::default::Default for vortex_array::stats::StatsSet +pub vortex_array::Canonical::Primitive(vortex_array::arrays::PrimitiveArray) -pub fn vortex_array::stats::StatsSet::default() -> vortex_array::stats::StatsSet +pub vortex_array::Canonical::Struct(vortex_array::arrays::StructArray) -impl core::fmt::Debug for vortex_array::stats::StatsSet +pub vortex_array::Canonical::VarBinView(vortex_array::arrays::VarBinViewArray) -pub fn vortex_array::stats::StatsSet::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub vortex_array::Canonical::Variant(vortex_array::arrays::VariantArray) -impl core::iter::traits::collect::Extend<(vortex_array::expr::stats::Stat, vortex_array::expr::stats::Precision)> for vortex_array::stats::StatsSet +impl vortex_array::Canonical -pub fn vortex_array::stats::StatsSet::extend)>>(&mut self, iter: T) +pub fn vortex_array::Canonical::as_bool(&self) -> &vortex_array::arrays::BoolArray -impl core::iter::traits::collect::FromIterator<(vortex_array::expr::stats::Stat, vortex_array::expr::stats::Precision)> for vortex_array::stats::StatsSet +pub fn vortex_array::Canonical::as_decimal(&self) -> &vortex_array::arrays::DecimalArray -pub fn vortex_array::stats::StatsSet::from_iter)>>(iter: T) -> Self +pub fn vortex_array::Canonical::as_extension(&self) -> &vortex_array::arrays::ExtensionArray -impl core::iter::traits::collect::IntoIterator for vortex_array::stats::StatsSet +pub fn vortex_array::Canonical::as_fixed_size_list(&self) -> &vortex_array::arrays::FixedSizeListArray -pub type vortex_array::stats::StatsSet::IntoIter = vortex_array::stats::StatsSetIntoIter +pub fn vortex_array::Canonical::as_listview(&self) -> &vortex_array::arrays::ListViewArray -pub type vortex_array::stats::StatsSet::Item = (vortex_array::expr::stats::Stat, vortex_array::expr::stats::Precision) +pub fn vortex_array::Canonical::as_null(&self) -> &vortex_array::arrays::null::NullArray -pub fn vortex_array::stats::StatsSet::into_iter(self) -> Self::IntoIter +pub fn vortex_array::Canonical::as_primitive(&self) -> &vortex_array::arrays::PrimitiveArray -impl vortex_flatbuffers::WriteFlatBuffer for vortex_array::stats::StatsSet +pub fn vortex_array::Canonical::as_struct(&self) -> &vortex_array::arrays::StructArray -pub type vortex_array::stats::StatsSet::Target<'t> = vortex_flatbuffers::array::ArrayStats<'t> +pub fn vortex_array::Canonical::as_varbinview(&self) -> &vortex_array::arrays::VarBinViewArray -pub fn vortex_array::stats::StatsSet::write_flatbuffer<'fb>(&self, fbb: &mut flatbuffers::builder::FlatBufferBuilder<'fb>) -> vortex_error::VortexResult> +pub fn vortex_array::Canonical::into_bool(self) -> vortex_array::arrays::BoolArray -pub struct vortex_array::stats::StatsSetIntoIter(_) +pub fn vortex_array::Canonical::into_decimal(self) -> vortex_array::arrays::DecimalArray -impl core::iter::traits::iterator::Iterator for vortex_array::stats::StatsSetIntoIter +pub fn vortex_array::Canonical::into_extension(self) -> vortex_array::arrays::ExtensionArray -pub type vortex_array::stats::StatsSetIntoIter::Item = (vortex_array::expr::stats::Stat, vortex_array::expr::stats::Precision) +pub fn vortex_array::Canonical::into_fixed_size_list(self) -> vortex_array::arrays::FixedSizeListArray -pub fn vortex_array::stats::StatsSetIntoIter::next(&mut self) -> core::option::Option +pub fn vortex_array::Canonical::into_listview(self) -> vortex_array::arrays::ListViewArray -pub struct vortex_array::stats::StatsSetRef<'a> +pub fn vortex_array::Canonical::into_null(self) -> vortex_array::arrays::null::NullArray -impl vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::Canonical::into_primitive(self) -> vortex_array::arrays::PrimitiveArray -pub fn vortex_array::stats::StatsSetRef<'_>::clear(&self, stat: vortex_array::expr::stats::Stat) +pub fn vortex_array::Canonical::into_struct(self) -> vortex_array::arrays::StructArray -pub fn vortex_array::stats::StatsSetRef<'_>::compute_as core::convert::TryFrom<&'a vortex_array::scalar::Scalar, Error = vortex_error::VortexError>>(&self, stat: vortex_array::expr::stats::Stat) -> core::option::Option +pub fn vortex_array::Canonical::into_varbinview(self) -> vortex_array::arrays::VarBinViewArray -pub fn vortex_array::stats::StatsSetRef<'_>::compute_is_constant(&self) -> core::option::Option +impl vortex_array::Canonical -pub fn vortex_array::stats::StatsSetRef<'_>::compute_is_sorted(&self) -> core::option::Option +pub fn vortex_array::Canonical::compact(&self) -> vortex_error::VortexResult -pub fn vortex_array::stats::StatsSetRef<'_>::compute_is_strict_sorted(&self) -> core::option::Option +impl vortex_array::Canonical -pub fn vortex_array::stats::StatsSetRef<'_>::compute_max core::convert::TryFrom<&'a vortex_array::scalar::Scalar, Error = vortex_error::VortexError>>(&self) -> core::option::Option +pub fn vortex_array::Canonical::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::stats::StatsSetRef<'_>::compute_min core::convert::TryFrom<&'a vortex_array::scalar::Scalar, Error = vortex_error::VortexError>>(&self) -> core::option::Option +pub fn vortex_array::Canonical::empty(dtype: &vortex_array::dtype::DType) -> vortex_array::Canonical -pub fn vortex_array::stats::StatsSetRef<'_>::compute_null_count(&self) -> core::option::Option +pub fn vortex_array::Canonical::is_empty(&self) -> bool -pub fn vortex_array::stats::StatsSetRef<'_>::compute_uncompressed_size_in_bytes(&self) -> core::option::Option +pub fn vortex_array::Canonical::len(&self) -> usize -pub fn vortex_array::stats::StatsSetRef<'_>::set(&self, stat: vortex_array::expr::stats::Stat, value: vortex_array::expr::stats::Precision) +impl core::clone::Clone for vortex_array::Canonical -impl vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::Canonical::clone(&self) -> vortex_array::Canonical -pub fn vortex_array::stats::StatsSetRef<'_>::compute_all(&self, stats: &[vortex_array::expr::stats::Stat]) -> vortex_error::VortexResult +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::stats::StatsSetRef<'_>::compute_stat(&self, stat: vortex_array::expr::stats::Stat) -> vortex_error::VortexResult> +pub fn vortex_array::ArrayRef::from(value: vortex_array::Canonical) -> Self -pub fn vortex_array::stats::StatsSetRef<'_>::inherit<'a>(&self, iter: impl core::iter::traits::iterator::Iterator)>) +impl core::convert::From> for vortex_array::Canonical -pub fn vortex_array::stats::StatsSetRef<'_>::inherit_from(&self, stats: vortex_array::stats::StatsSetRef<'_>) +pub fn vortex_array::Canonical::from(value: vortex_array::CanonicalView<'_>) -> Self -pub fn vortex_array::stats::StatsSetRef<'_>::set_iter(&self, iter: vortex_array::stats::StatsSetIntoIter) +impl core::fmt::Debug for vortex_array::Canonical -pub fn vortex_array::stats::StatsSetRef<'_>::to_array_stats(&self) -> vortex_array::stats::ArrayStats +pub fn vortex_array::Canonical::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::stats::StatsSetRef<'_>::to_owned(&self) -> vortex_array::stats::StatsSet +impl vortex_array::Executable for vortex_array::Canonical -pub fn vortex_array::stats::StatsSetRef<'_>::with_iter core::ops::function::FnOnce(&mut dyn core::iter::traits::iterator::Iterator)>) -> R, R>(&self, f: F) -> R +pub fn vortex_array::Canonical::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::stats::StatsSetRef<'_>::with_mut_typed_stats_set) -> U>(&self, apply: F) -> U +impl vortex_array::IntoArray for vortex_array::Canonical -pub fn vortex_array::stats::StatsSetRef<'_>::with_typed_stats_set) -> U>(&self, apply: F) -> U +pub fn vortex_array::Canonical::into_array(self) -> vortex_array::ArrayRef -impl vortex_array::expr::stats::StatsProvider for vortex_array::stats::StatsSetRef<'_> +pub enum vortex_array::CanonicalView<'a> -pub fn vortex_array::stats::StatsSetRef<'_>::get(&self, stat: vortex_array::expr::stats::Stat) -> core::option::Option> +pub vortex_array::CanonicalView::Bool(vortex_array::ArrayView<'a, vortex_array::arrays::Bool>) -pub fn vortex_array::stats::StatsSetRef<'_>::is_empty(&self) -> bool +pub vortex_array::CanonicalView::Decimal(vortex_array::ArrayView<'a, vortex_array::arrays::Decimal>) -pub fn vortex_array::stats::StatsSetRef<'_>::len(&self) -> usize +pub vortex_array::CanonicalView::Extension(vortex_array::ArrayView<'a, vortex_array::arrays::Extension>) -impl vortex_flatbuffers::WriteFlatBuffer for vortex_array::stats::StatsSetRef<'_> +pub vortex_array::CanonicalView::FixedSizeList(vortex_array::ArrayView<'a, vortex_array::arrays::FixedSizeList>) -pub type vortex_array::stats::StatsSetRef<'_>::Target<'t> = vortex_flatbuffers::array::ArrayStats<'t> +pub vortex_array::CanonicalView::List(vortex_array::ArrayView<'a, vortex_array::arrays::ListView>) -pub fn vortex_array::stats::StatsSetRef<'_>::write_flatbuffer<'fb>(&self, fbb: &mut flatbuffers::builder::FlatBufferBuilder<'fb>) -> vortex_error::VortexResult> +pub vortex_array::CanonicalView::Null(vortex_array::ArrayView<'a, vortex_array::arrays::null::Null>) -pub struct vortex_array::stats::TypedStatsSetRef<'a, 'b> +pub vortex_array::CanonicalView::Primitive(vortex_array::ArrayView<'a, vortex_array::arrays::Primitive>) -pub vortex_array::stats::TypedStatsSetRef::dtype: &'b vortex_array::dtype::DType +pub vortex_array::CanonicalView::Struct(vortex_array::ArrayView<'a, vortex_array::arrays::Struct>) -pub vortex_array::stats::TypedStatsSetRef::values: &'a vortex_array::stats::StatsSet +pub vortex_array::CanonicalView::VarBinView(vortex_array::ArrayView<'a, vortex_array::arrays::VarBinView>) -impl vortex_array::expr::stats::StatsProvider for vortex_array::stats::TypedStatsSetRef<'_, '_> +pub vortex_array::CanonicalView::Variant(vortex_array::ArrayView<'a, vortex_array::arrays::Variant>) -pub fn vortex_array::stats::TypedStatsSetRef<'_, '_>::get(&self, stat: vortex_array::expr::stats::Stat) -> core::option::Option> +impl vortex_array::CanonicalView<'_> -pub fn vortex_array::stats::TypedStatsSetRef<'_, '_>::is_empty(&self) -> bool +pub fn vortex_array::CanonicalView<'_>::to_array_ref(&self) -> vortex_array::ArrayRef -pub fn vortex_array::stats::TypedStatsSetRef<'_, '_>::len(&self) -> usize +impl core::convert::From> for vortex_array::Canonical -pub const vortex_array::stats::PRUNING_STATS: &[vortex_array::expr::stats::Stat] +pub fn vortex_array::Canonical::from(value: vortex_array::CanonicalView<'_>) -> Self -pub fn vortex_array::stats::as_stat_bitset_bytes(stats: &[vortex_array::expr::stats::Stat]) -> alloc::vec::Vec +impl<'a> core::clone::Clone for vortex_array::CanonicalView<'a> -pub fn vortex_array::stats::stats_from_bitset_bytes(bytes: &[u8]) -> alloc::vec::Vec +pub fn vortex_array::CanonicalView<'a>::clone(&self) -> vortex_array::CanonicalView<'a> -pub mod vortex_array::stream +impl<'a> core::fmt::Debug for vortex_array::CanonicalView<'a> -pub struct vortex_array::stream::ArrayStreamAdapter +pub fn vortex_array::CanonicalView<'a>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::stream::ArrayStreamAdapter where S: futures_core::stream::Stream> +impl<'a> core::marker::Copy for vortex_array::CanonicalView<'a> -pub fn vortex_array::stream::ArrayStreamAdapter::new(dtype: vortex_array::dtype::DType, inner: S) -> Self +pub enum vortex_array::Columnar -impl<'__pin, S> core::marker::Unpin for vortex_array::stream::ArrayStreamAdapter where pin_project_lite::__private::PinnedFieldsOf<__Origin<'__pin, S>>: core::marker::Unpin +pub vortex_array::Columnar::Canonical(vortex_array::Canonical) -impl futures_core::stream::Stream for vortex_array::stream::ArrayStreamAdapter where S: futures_core::stream::Stream> +pub vortex_array::Columnar::Constant(vortex_array::arrays::ConstantArray) -pub type vortex_array::stream::ArrayStreamAdapter::Item = core::result::Result, vortex_error::VortexError> +impl vortex_array::Columnar -pub fn vortex_array::stream::ArrayStreamAdapter::poll_next(self: core::pin::Pin<&mut Self>, cx: &mut core::task::wake::Context<'_>) -> core::task::poll::Poll> +pub fn vortex_array::Columnar::constant>(scalar: S, len: usize) -> Self -pub fn vortex_array::stream::ArrayStreamAdapter::size_hint(&self) -> (usize, core::option::Option) +pub fn vortex_array::Columnar::dtype(&self) -> &vortex_array::dtype::DType -impl vortex_array::stream::ArrayStream for vortex_array::stream::ArrayStreamAdapter where S: futures_core::stream::Stream> +pub fn vortex_array::Columnar::is_empty(&self) -> bool -pub fn vortex_array::stream::ArrayStreamAdapter::dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_array::Columnar::len(&self) -> usize -pub trait vortex_array::stream::ArrayStream: futures_core::stream::Stream> +impl vortex_array::Executable for vortex_array::Columnar -pub fn vortex_array::stream::ArrayStream::dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_array::Columnar::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::stream::ArrayStream for vortex_array::stream::SendableArrayStream +impl vortex_array::IntoArray for vortex_array::Columnar -pub fn vortex_array::stream::SendableArrayStream::dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_array::Columnar::into_array(self) -> vortex_array::ArrayRef -impl vortex_array::stream::ArrayStream for vortex_array::stream::ArrayStreamAdapter where S: futures_core::stream::Stream> +pub enum vortex_array::ColumnarView<'a> -pub fn vortex_array::stream::ArrayStreamAdapter::dtype(&self) -> &vortex_array::dtype::DType +pub vortex_array::ColumnarView::Canonical(vortex_array::CanonicalView<'a>) -pub trait vortex_array::stream::ArrayStreamExt: vortex_array::stream::ArrayStream +pub vortex_array::ColumnarView::Constant(vortex_array::ArrayView<'a, vortex_array::arrays::Constant>) -pub fn vortex_array::stream::ArrayStreamExt::boxed(self) -> vortex_array::stream::SendableArrayStream where Self: core::marker::Sized + core::marker::Send + 'static +pub enum vortex_array::ExecutionStep -pub fn vortex_array::stream::ArrayStreamExt::read_all(self) -> impl core::future::future::Future> where Self: core::marker::Sized +pub vortex_array::ExecutionStep::Done -impl vortex_array::stream::ArrayStreamExt for S +pub vortex_array::ExecutionStep::ExecuteSlot(usize, vortex_array::DonePredicate) -pub fn S::boxed(self) -> vortex_array::stream::SendableArrayStream where Self: core::marker::Sized + core::marker::Send + 'static +impl core::fmt::Debug for vortex_array::ExecutionStep -pub fn S::read_all(self) -> impl core::future::future::Future> where Self: core::marker::Sized +pub fn vortex_array::ExecutionStep::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub type vortex_array::stream::SendableArrayStream = core::pin::Pin> +pub enum vortex_array::Precision -pub mod vortex_array::validity +pub vortex_array::Precision::Ptr -pub enum vortex_array::validity::Validity +pub vortex_array::Precision::Value -pub vortex_array::validity::Validity::AllInvalid +impl core::clone::Clone for vortex_array::Precision -pub vortex_array::validity::Validity::AllValid +pub fn vortex_array::Precision::clone(&self) -> vortex_array::Precision -pub vortex_array::validity::Validity::Array(vortex_array::ArrayRef) +impl core::fmt::Debug for vortex_array::Precision -pub vortex_array::validity::Validity::NonNullable +pub fn vortex_array::Precision::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::validity::Validity +impl core::marker::Copy for vortex_array::Precision -pub const vortex_array::validity::Validity::DTYPE: vortex_array::dtype::DType +pub struct vortex_array::AnyCanonical -pub fn vortex_array::validity::Validity::and(self, rhs: vortex_array::validity::Validity) -> vortex_error::VortexResult +impl vortex_array::matcher::Matcher for vortex_array::AnyCanonical -pub fn vortex_array::validity::Validity::as_array(&self) -> core::option::Option<&vortex_array::ArrayRef> +pub type vortex_array::AnyCanonical::Match<'a> = vortex_array::CanonicalView<'a> -pub fn vortex_array::validity::Validity::cast_nullability(self, nullability: vortex_array::dtype::Nullability, len: usize) -> vortex_error::VortexResult +pub fn vortex_array::AnyCanonical::matches(array: &vortex_array::ArrayRef) -> bool -pub fn vortex_array::validity::Validity::copy_from_array(array: &vortex_array::ArrayRef) -> vortex_error::VortexResult +pub fn vortex_array::AnyCanonical::try_match<'a>(array: &'a vortex_array::ArrayRef) -> core::option::Option -pub fn vortex_array::validity::Validity::execute_mask(&self, length: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub struct vortex_array::AnyColumnar -pub fn vortex_array::validity::Validity::filter(&self, mask: &vortex_mask::Mask) -> vortex_error::VortexResult +impl vortex_array::matcher::Matcher for vortex_array::AnyColumnar -pub fn vortex_array::validity::Validity::into_array(self) -> core::option::Option +pub type vortex_array::AnyColumnar::Match<'a> = vortex_array::ColumnarView<'a> -pub fn vortex_array::validity::Validity::into_non_nullable(self, len: usize) -> core::option::Option +pub fn vortex_array::AnyColumnar::matches(array: &vortex_array::ArrayRef) -> bool -pub fn vortex_array::validity::Validity::into_nullable(self) -> vortex_array::validity::Validity +pub fn vortex_array::AnyColumnar::try_match<'a>(array: &'a vortex_array::ArrayRef) -> core::option::Option -pub fn vortex_array::validity::Validity::is_null(&self, index: usize) -> vortex_error::VortexResult +pub struct vortex_array::Array -pub fn vortex_array::validity::Validity::is_valid(&self, index: usize) -> vortex_error::VortexResult +impl vortex_array::Array -pub fn vortex_array::validity::Validity::mask_eq(&self, other: &vortex_array::validity::Validity, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::Array::from_indices>(length: usize, indices: I, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::validity::Validity::maybe_len(&self) -> core::option::Option +pub fn vortex_array::Array::into_bit_buffer(self) -> vortex_buffer::bit::buf::BitBuffer -pub fn vortex_array::validity::Validity::not(&self) -> vortex_error::VortexResult +pub fn vortex_array::Array::into_parts(self) -> vortex_array::arrays::bool::BoolArrayParts -pub fn vortex_array::validity::Validity::nullability(&self) -> vortex_array::dtype::Nullability +pub fn vortex_array::Array::new(bits: vortex_buffer::bit::buf::BitBuffer, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::validity::Validity::patch(self, len: usize, indices_offset: usize, indices: &vortex_array::ArrayRef, patches: &vortex_array::validity::Validity, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::Array::new_handle(handle: vortex_array::buffer::BufferHandle, offset: usize, len: usize, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::validity::Validity::slice(&self, range: core::ops::range::Range) -> vortex_error::VortexResult +pub unsafe fn vortex_array::Array::new_unchecked(bits: vortex_buffer::bit::buf::BitBuffer, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::validity::Validity::take(&self, indices: &vortex_array::ArrayRef) -> vortex_error::VortexResult +pub fn vortex_array::Array::try_new(bits: vortex_buffer::bit::buf::BitBuffer, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult -pub fn vortex_array::validity::Validity::to_array(&self, len: usize) -> vortex_array::ArrayRef +pub fn vortex_array::Array::try_new_from_handle(bits: vortex_array::buffer::BufferHandle, offset: usize, len: usize, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult -pub fn vortex_array::validity::Validity::uncompressed_size(&self) -> usize +pub fn vortex_array::Array::validate(bits: &vortex_buffer::bit::buf::BitBuffer, validity: &vortex_array::validity::Validity) -> vortex_error::VortexResult<()> -pub fn vortex_array::validity::Validity::union_nullability(self, nullability: vortex_array::dtype::Nullability) -> Self +impl vortex_array::Array -impl vortex_array::validity::Validity +pub fn vortex_array::Array::patch(self, patches: &vortex_array::patches::Patches, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::validity::Validity::execute(self, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::Array -impl vortex_array::validity::Validity +pub unsafe fn vortex_array::Array::new_unchecked(chunks: alloc::vec::Vec, dtype: vortex_array::dtype::DType) -> Self -pub fn vortex_array::validity::Validity::from_bit_buffer(buffer: vortex_buffer::bit::buf::BitBuffer, nullability: vortex_array::dtype::Nullability) -> Self +pub fn vortex_array::Array::try_new(chunks: alloc::vec::Vec, dtype: vortex_array::dtype::DType) -> vortex_error::VortexResult -pub fn vortex_array::validity::Validity::from_mask(mask: vortex_mask::Mask, nullability: vortex_array::dtype::Nullability) -> Self +impl vortex_array::Array -impl core::clone::Clone for vortex_array::validity::Validity +pub fn vortex_array::Array::new(scalar: S, len: usize) -> Self where S: core::convert::Into -pub fn vortex_array::validity::Validity::clone(&self) -> vortex_array::validity::Validity +impl vortex_array::Array -impl core::convert::From<&vortex_array::dtype::Nullability> for vortex_array::validity::Validity +pub fn vortex_array::Array::from_iter>(iter: I, decimal_dtype: vortex_array::dtype::DecimalDType) -> Self -pub fn vortex_array::validity::Validity::from(value: &vortex_array::dtype::Nullability) -> Self +pub fn vortex_array::Array::from_option_iter>>(iter: I, decimal_dtype: vortex_array::dtype::DecimalDType) -> Self -impl core::convert::From for vortex_array::validity::Validity +pub fn vortex_array::Array::new(buffer: vortex_buffer::buffer::Buffer, decimal_dtype: vortex_array::dtype::DecimalDType, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::validity::Validity::from(value: vortex_array::dtype::Nullability) -> Self +pub fn vortex_array::Array::new_handle(values: vortex_array::buffer::BufferHandle, values_type: vortex_array::dtype::DecimalType, decimal_dtype: vortex_array::dtype::DecimalDType, validity: vortex_array::validity::Validity) -> Self -impl core::convert::From for vortex_array::validity::Validity +pub unsafe fn vortex_array::Array::new_unchecked(buffer: vortex_buffer::buffer::Buffer, decimal_dtype: vortex_array::dtype::DecimalDType, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::validity::Validity::from(value: vortex_buffer::bit::buf::BitBuffer) -> Self +pub unsafe fn vortex_array::Array::new_unchecked_handle(values: vortex_array::buffer::BufferHandle, values_type: vortex_array::dtype::DecimalType, decimal_dtype: vortex_array::dtype::DecimalDType, validity: vortex_array::validity::Validity) -> Self -impl core::fmt::Debug for vortex_array::validity::Validity +pub fn vortex_array::Array::try_new(buffer: vortex_buffer::buffer::Buffer, decimal_dtype: vortex_array::dtype::DecimalDType, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult -pub fn vortex_array::validity::Validity::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +impl vortex_array::Array -impl core::iter::traits::collect::FromIterator for vortex_array::validity::Validity +pub fn vortex_array::Array::new(ext_dtype: vortex_array::dtype::extension::ExtDTypeRef, storage_array: vortex_array::ArrayRef) -> Self -pub fn vortex_array::validity::Validity::from_iter>(iter: T) -> Self +pub fn vortex_array::Array::try_new(ext_dtype: vortex_array::dtype::extension::ExtDTypeRef, storage_array: vortex_array::ArrayRef) -> vortex_error::VortexResult -impl core::iter::traits::collect::FromIterator for vortex_array::validity::Validity +impl vortex_array::Array -pub fn vortex_array::validity::Validity::from_iter>(iter: T) -> Self +pub fn vortex_array::Array::new(array: vortex_array::ArrayRef, mask: vortex_mask::Mask) -> Self -impl vortex_array::ArrayEq for vortex_array::validity::Validity +pub fn vortex_array::Array::try_new(array: vortex_array::ArrayRef, mask: vortex_mask::Mask) -> vortex_error::VortexResult -pub fn vortex_array::validity::Validity::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool +impl vortex_array::Array -impl vortex_array::ArrayHash for vortex_array::validity::Validity +pub fn vortex_array::Array::new(elements: vortex_array::ArrayRef, list_size: u32, validity: vortex_array::validity::Validity, len: usize) -> Self -pub fn vortex_array::validity::Validity::array_hash(&self, state: &mut H, precision: vortex_array::Precision) +pub unsafe fn vortex_array::Array::new_unchecked(elements: vortex_array::ArrayRef, list_size: u32, validity: vortex_array::validity::Validity, len: usize) -> Self -pub mod vortex_array::variants +pub fn vortex_array::Array::try_new(elements: vortex_array::ArrayRef, list_size: u32, validity: vortex_array::validity::Validity, len: usize) -> vortex_error::VortexResult -pub struct vortex_array::variants::BinaryTyped<'a>(_) +impl vortex_array::Array -pub struct vortex_array::variants::BoolTyped<'a>(_) +pub fn vortex_array::Array::new(elements: vortex_array::ArrayRef, offsets: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> Self -impl vortex_array::variants::BoolTyped<'_> +pub unsafe fn vortex_array::Array::new_unchecked(elements: vortex_array::ArrayRef, offsets: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::variants::BoolTyped<'_>::true_count(&self) -> vortex_error::VortexResult +pub fn vortex_array::Array::try_new(elements: vortex_array::ArrayRef, offsets: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult -pub struct vortex_array::variants::DecimalTyped<'a>(_) +impl vortex_array::Array -pub struct vortex_array::variants::ExtensionTyped<'a>(_) +pub fn vortex_array::Array::new(elements: vortex_array::ArrayRef, offsets: vortex_array::ArrayRef, sizes: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> Self -impl vortex_array::variants::ExtensionTyped<'_> +pub unsafe fn vortex_array::Array::new_unchecked(elements: vortex_array::ArrayRef, offsets: vortex_array::ArrayRef, sizes: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::variants::ExtensionTyped<'_>::ext_dtype(&self) -> &vortex_array::dtype::extension::ExtDTypeRef +pub fn vortex_array::Array::try_new(elements: vortex_array::ArrayRef, offsets: vortex_array::ArrayRef, sizes: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult -pub struct vortex_array::variants::ListTyped<'a>(_) +pub unsafe fn vortex_array::Array::with_zero_copy_to_list(self, is_zctl: bool) -> Self -pub struct vortex_array::variants::NullTyped<'a>(_) +impl vortex_array::Array -pub struct vortex_array::variants::PrimitiveTyped<'a>(_) +pub fn vortex_array::Array::rebuild(&self, mode: vortex_array::arrays::listview::ListViewRebuildMode) -> vortex_error::VortexResult -impl vortex_array::variants::PrimitiveTyped<'_> +impl vortex_array::Array -pub fn vortex_array::variants::PrimitiveTyped<'_>::ptype(&self) -> vortex_array::dtype::PType +pub fn vortex_array::Array::try_new(child: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult -pub fn vortex_array::variants::PrimitiveTyped<'_>::value(&self, idx: usize) -> vortex_error::VortexResult> +impl vortex_array::Array -pub fn vortex_array::variants::PrimitiveTyped<'_>::value_unchecked(&self, idx: usize) -> vortex_error::VortexResult +pub fn vortex_array::Array::empty(nullability: vortex_array::dtype::Nullability) -> Self -impl vortex_array::search_sorted::IndexOrd> for vortex_array::variants::PrimitiveTyped<'_> +pub fn vortex_array::Array::from_buffer_handle(handle: vortex_array::buffer::BufferHandle, ptype: vortex_array::dtype::PType, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_cmp(&self, idx: usize, elem: &core::option::Option) -> vortex_error::VortexResult> +pub fn vortex_array::Array::from_byte_buffer(buffer: vortex_buffer::ByteBuffer, ptype: vortex_array::dtype::PType, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_ge(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::Array::from_values_byte_buffer(valid_elems_buffer: vortex_buffer::ByteBuffer, ptype: vortex_array::dtype::PType, validity: vortex_array::validity::Validity, n_rows: usize) -> Self -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_gt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::Array::new(buffer: impl core::convert::Into>, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_le(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub unsafe fn vortex_array::Array::new_unchecked(buffer: vortex_buffer::buffer::Buffer, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_len(&self) -> usize +pub unsafe fn vortex_array::Array::new_unchecked_from_handle(handle: vortex_array::buffer::BufferHandle, ptype: vortex_array::dtype::PType, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_lt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::Array::try_new(buffer: vortex_buffer::buffer::Buffer, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult -impl vortex_array::search_sorted::IndexOrd for vortex_array::variants::PrimitiveTyped<'_> +pub fn vortex_array::Array::validate(buffer: &vortex_buffer::buffer::Buffer, validity: &vortex_array::validity::Validity) -> vortex_error::VortexResult<()> -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_cmp(&self, idx: usize, elem: &vortex_array::scalar::PValue) -> vortex_error::VortexResult> +impl vortex_array::Array -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_ge(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::Array::from_option_iter>>(iter: I) -> Self -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_gt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::Array::into_buffer(self) -> vortex_buffer::buffer::Buffer -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_le(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::Array::into_buffer_mut(self) -> vortex_buffer::buffer_mut::BufferMut -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_len(&self) -> usize +pub fn vortex_array::Array::to_buffer(&self) -> vortex_buffer::buffer::Buffer -pub fn vortex_array::variants::PrimitiveTyped<'_>::index_lt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn vortex_array::Array::try_into_buffer_mut(self) -> core::result::Result, vortex_buffer::buffer::Buffer> -pub struct vortex_array::variants::StructTyped<'a>(_) +impl vortex_array::Array -impl vortex_array::variants::StructTyped<'_> +pub fn vortex_array::Array::narrow(&self) -> vortex_error::VortexResult -pub fn vortex_array::variants::StructTyped<'_>::dtypes(&self) -> alloc::vec::Vec +impl vortex_array::Array -pub fn vortex_array::variants::StructTyped<'_>::names(&self) -> &vortex_array::dtype::FieldNames +pub fn vortex_array::Array::patch(self, patches: &vortex_array::patches::Patches, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::variants::StructTyped<'_>::nfields(&self) -> usize +impl vortex_array::Array -pub struct vortex_array::variants::Utf8Typed<'a>(_) +pub fn vortex_array::Array::top_value(&self) -> vortex_error::VortexResult> -pub mod vortex_array::vtable +impl vortex_array::Array -pub struct vortex_array::vtable::Array +pub fn vortex_array::Array::new(source: vortex_array::ArrayRef) -> Self -impl vortex_array::vtable::Array +impl vortex_array::Array -pub fn vortex_array::vtable::Array::array_stats(&self) -> &vortex_array::stats::ArrayStats +pub fn vortex_array::Array::from_fields>(items: &[(N, vortex_array::ArrayRef)]) -> vortex_error::VortexResult -pub fn vortex_array::vtable::Array::dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_array::Array::into_parts(self) -> vortex_array::arrays::struct_::StructArrayParts -pub fn vortex_array::vtable::Array::encoding_id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::Array::new(names: vortex_array::dtype::FieldNames, fields: impl core::convert::Into>, length: usize, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::vtable::Array::inner(&self) -> &::Array +pub fn vortex_array::Array::new_fieldless_with_len(len: usize) -> Self -pub fn vortex_array::vtable::Array::into_inner(self) -> ::Array +pub unsafe fn vortex_array::Array::new_unchecked(fields: impl core::convert::Into>, dtype: vortex_array::dtype::StructFields, length: usize, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::vtable::Array::is_empty(&self) -> bool +pub fn vortex_array::Array::try_from_iter, A: vortex_array::IntoArray, T: core::iter::traits::collect::IntoIterator>(iter: T) -> vortex_error::VortexResult -pub fn vortex_array::vtable::Array::len(&self) -> usize +pub fn vortex_array::Array::try_from_iter_with_validity, A: vortex_array::IntoArray, T: core::iter::traits::collect::IntoIterator>(iter: T, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult -pub unsafe fn vortex_array::vtable::Array::new_unchecked(vtable: V, dtype: vortex_array::dtype::DType, len: usize, array: ::Array, stats: vortex_array::stats::ArrayStats) -> Self +pub fn vortex_array::Array::try_new(names: vortex_array::dtype::FieldNames, fields: impl core::convert::Into>, length: usize, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult -pub fn vortex_array::vtable::Array::statistics(&self) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::Array::try_new_with_dtype(fields: impl core::convert::Into>, dtype: vortex_array::dtype::StructFields, length: usize, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult -pub fn vortex_array::vtable::Array::to_array_ref(&self) -> vortex_array::ArrayRef +impl vortex_array::Array -pub fn vortex_array::vtable::Array::typed_vtable(&self) -> &V +pub fn vortex_array::Array::into_record_batch_with_schema(self, schema: impl core::convert::AsRef) -> vortex_error::VortexResult -impl core::clone::Clone for vortex_array::vtable::Array +impl vortex_array::Array -pub fn vortex_array::vtable::Array::clone(&self) -> Self +pub fn vortex_array::Array::from_bytes(value: alloc::vec::Vec<&[u8]>) -> Self -impl core::convert::From> for vortex_array::ArrayRef +pub fn vortex_array::Array::from_iter, I: core::iter::traits::collect::IntoIterator>>(iter: I, dtype: vortex_array::dtype::DType) -> Self -pub fn vortex_array::ArrayRef::from(value: vortex_array::vtable::Array) -> vortex_array::ArrayRef +pub fn vortex_array::Array::from_iter_nonnull, I: core::iter::traits::collect::IntoIterator>(iter: I, dtype: vortex_array::dtype::DType) -> Self -impl core::fmt::Debug for vortex_array::vtable::Array +pub fn vortex_array::Array::from_nullable_bytes(value: alloc::vec::Vec>) -> Self -pub fn vortex_array::vtable::Array::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::Array::from_nullable_strs(value: alloc::vec::Vec>) -> Self -impl core::ops::deref::Deref for vortex_array::vtable::Array +pub fn vortex_array::Array::from_strs(value: alloc::vec::Vec<&str>) -> Self -pub type vortex_array::vtable::Array::Target = ::Array +pub fn vortex_array::Array::from_vec>(vec: alloc::vec::Vec, dtype: vortex_array::dtype::DType) -> Self -pub fn vortex_array::vtable::Array::deref(&self) -> &::Array +impl vortex_array::Array -impl vortex_array::ArrayEq for vortex_array::vtable::Array +pub fn vortex_array::Array::new(offsets: vortex_array::ArrayRef, bytes: vortex_buffer::ByteBuffer, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::vtable::Array::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool +pub unsafe fn vortex_array::Array::new_unchecked(offsets: vortex_array::ArrayRef, bytes: vortex_buffer::ByteBuffer, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self -impl vortex_array::ArrayHash for vortex_array::vtable::Array +pub unsafe fn vortex_array::Array::new_unchecked_from_handle(offsets: vortex_array::ArrayRef, bytes: vortex_array::buffer::BufferHandle, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::vtable::Array::array_hash(&self, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::Array::try_new(offsets: vortex_array::ArrayRef, bytes: vortex_buffer::ByteBuffer, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult -impl vortex_array::ArrayVisitor for vortex_array::vtable::Array +impl vortex_array::Array -pub fn vortex_array::vtable::Array::buffer_handles(&self) -> alloc::vec::Vec +pub fn vortex_array::Array::compact_buffers(&self) -> vortex_error::VortexResult -pub fn vortex_array::vtable::Array::buffer_names(&self) -> alloc::vec::Vec +pub fn vortex_array::Array::compact_with_threshold(&self, buffer_utilization_threshold: f64) -> vortex_error::VortexResult -pub fn vortex_array::vtable::Array::buffers(&self) -> alloc::vec::Vec +impl vortex_array::Array -pub fn vortex_array::vtable::Array::children(&self) -> alloc::vec::Vec +pub fn vortex_array::Array::from_iter, I: core::iter::traits::collect::IntoIterator>>(iter: I, dtype: vortex_array::dtype::DType) -> Self -pub fn vortex_array::vtable::Array::children_names(&self) -> alloc::vec::Vec +pub fn vortex_array::Array::from_iter_bin, I: core::iter::traits::collect::IntoIterator>(iter: I) -> Self -pub fn vortex_array::vtable::Array::is_host(&self) -> bool +pub fn vortex_array::Array::from_iter_nullable_bin, I: core::iter::traits::collect::IntoIterator>>(iter: I) -> Self -pub fn vortex_array::vtable::Array::metadata(&self) -> vortex_error::VortexResult>> +pub fn vortex_array::Array::from_iter_nullable_str, I: core::iter::traits::collect::IntoIterator>>(iter: I) -> Self -pub fn vortex_array::vtable::Array::metadata_fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::Array::from_iter_str, I: core::iter::traits::collect::IntoIterator>(iter: I) -> Self -pub fn vortex_array::vtable::Array::named_buffers(&self) -> alloc::vec::Vec<(alloc::string::String, vortex_array::buffer::BufferHandle)> +pub fn vortex_array::Array::new_handle(views: vortex_array::buffer::BufferHandle, buffers: alloc::sync::Arc<[vortex_array::buffer::BufferHandle]>, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::vtable::Array::named_children(&self) -> alloc::vec::Vec<(alloc::string::String, vortex_array::ArrayRef)> +pub unsafe fn vortex_array::Array::new_handle_unchecked(views: vortex_array::buffer::BufferHandle, buffers: alloc::sync::Arc<[vortex_array::buffer::BufferHandle]>, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::vtable::Array::nbuffers(&self) -> usize +pub unsafe fn vortex_array::Array::new_unchecked(views: vortex_buffer::buffer::Buffer, buffers: alloc::sync::Arc<[vortex_buffer::ByteBuffer]>, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> Self -pub fn vortex_array::vtable::Array::nchildren(&self) -> usize +pub fn vortex_array::Array::try_new(views: vortex_buffer::buffer::Buffer, buffers: alloc::sync::Arc<[vortex_buffer::ByteBuffer]>, dtype: vortex_array::dtype::DType, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult -pub fn vortex_array::vtable::Array::nth_child(&self, idx: usize) -> core::option::Option +impl vortex_array::Array -pub fn vortex_array::vtable::Array::slots(&self) -> &[core::option::Option] +pub fn vortex_array::Array::new(child: vortex_array::ArrayRef) -> Self -impl vortex_array::DynArray for vortex_array::vtable::Array +impl vortex_array::Array -pub fn vortex_array::vtable::Array::all_invalid(&self) -> vortex_error::VortexResult +pub fn vortex_array::Array::new(codes: vortex_array::ArrayRef, values: vortex_array::ArrayRef) -> Self -pub fn vortex_array::vtable::Array::all_valid(&self) -> vortex_error::VortexResult +pub unsafe fn vortex_array::Array::new_unchecked(codes: vortex_array::ArrayRef, values: vortex_array::ArrayRef) -> Self -pub fn vortex_array::vtable::Array::append_to_builder(&self, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub unsafe fn vortex_array::Array::set_all_values_referenced(self, all_values_referenced: bool) -> Self -pub fn vortex_array::vtable::Array::as_any(&self) -> &dyn core::any::Any +pub fn vortex_array::Array::try_new(codes: vortex_array::ArrayRef, values: vortex_array::ArrayRef) -> vortex_error::VortexResult -pub fn vortex_array::vtable::Array::as_any_arc(self: alloc::sync::Arc) -> alloc::sync::Arc<(dyn core::any::Any + core::marker::Send + core::marker::Sync)> +impl vortex_array::Array -pub fn vortex_array::vtable::Array::dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_array::Array::new(len: usize) -> Self -pub fn vortex_array::vtable::Array::encoding_id(&self) -> vortex_array::vtable::ArrayId +impl vortex_array::Array -pub fn vortex_array::vtable::Array::filter(&self, mask: vortex_mask::Mask) -> vortex_error::VortexResult +pub fn vortex_array::Array::children(&self) -> alloc::vec::Vec -pub fn vortex_array::vtable::Array::invalid_count(&self) -> vortex_error::VortexResult +pub fn vortex_array::Array::scalar_fn(&self) -> &vortex_array::scalar_fn::ScalarFnRef -pub fn vortex_array::vtable::Array::is_empty(&self) -> bool +pub fn vortex_array::Array::try_new(scalar_fn: vortex_array::scalar_fn::ScalarFnRef, children: alloc::vec::Vec, len: usize) -> vortex_error::VortexResult -pub fn vortex_array::vtable::Array::is_invalid(&self, index: usize) -> vortex_error::VortexResult +impl vortex_array::Array -pub fn vortex_array::vtable::Array::is_valid(&self, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::Array::new(child: vortex_array::ArrayRef, range: core::ops::range::Range) -> Self -pub fn vortex_array::vtable::Array::len(&self) -> usize +pub fn vortex_array::Array::try_new(child: vortex_array::ArrayRef, range: core::ops::range::Range) -> vortex_error::VortexResult -pub fn vortex_array::vtable::Array::scalar_at(&self, index: usize) -> vortex_error::VortexResult +impl vortex_array::Array where ::ArrayData: vortex_array::ValidityHelper -pub fn vortex_array::vtable::Array::slice(&self, range: core::ops::range::Range) -> vortex_error::VortexResult +pub fn vortex_array::Array::validity(&self) -> &vortex_array::validity::Validity -pub fn vortex_array::vtable::Array::statistics(&self) -> vortex_array::stats::StatsSetRef<'_> +impl vortex_array::Array -pub fn vortex_array::vtable::Array::take(&self, indices: vortex_array::ArrayRef) -> vortex_error::VortexResult +pub fn vortex_array::Array::all_invalid(&self) -> vortex_error::VortexResult -pub fn vortex_array::vtable::Array::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::Array::all_valid(&self) -> vortex_error::VortexResult -pub fn vortex_array::vtable::Array::to_canonical(&self) -> vortex_error::VortexResult +pub fn vortex_array::Array::append_to_builder(&self, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::vtable::Array::valid_count(&self) -> vortex_error::VortexResult +pub fn vortex_array::Array::as_constant(&self) -> core::option::Option -pub fn vortex_array::vtable::Array::validity(&self) -> vortex_error::VortexResult +pub fn vortex_array::Array::filter(&self, mask: vortex_mask::Mask) -> vortex_error::VortexResult -pub fn vortex_array::vtable::Array::validity_mask(&self) -> vortex_error::VortexResult +pub fn vortex_array::Array::invalid_count(&self) -> vortex_error::VortexResult -pub fn vortex_array::vtable::Array::vtable(&self) -> &dyn vortex_array::vtable::DynVTable +pub fn vortex_array::Array::is_invalid(&self, index: usize) -> vortex_error::VortexResult -impl vortex_array::IntoArray for vortex_array::vtable::Array +pub fn vortex_array::Array::is_valid(&self, index: usize) -> vortex_error::VortexResult -pub fn vortex_array::vtable::Array::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::Array::nbuffers(&self) -> usize -impl vortex_array::scalar_fn::ReduceNode for vortex_array::vtable::Array +pub fn vortex_array::Array::nbytes(&self) -> u64 -pub fn vortex_array::vtable::Array::as_any(&self) -> &dyn core::any::Any +pub fn vortex_array::Array::scalar_at(&self, index: usize) -> vortex_error::VortexResult -pub fn vortex_array::vtable::Array::child(&self, idx: usize) -> vortex_array::scalar_fn::ReduceNodeRef +pub fn vortex_array::Array::slice(&self, range: core::ops::range::Range) -> vortex_error::VortexResult -pub fn vortex_array::vtable::Array::child_count(&self) -> usize +pub fn vortex_array::Array::take(&self, indices: vortex_array::ArrayRef) -> vortex_error::VortexResult -pub fn vortex_array::vtable::Array::node_dtype(&self) -> vortex_error::VortexResult +pub fn vortex_array::Array::to_canonical(&self) -> vortex_error::VortexResult -pub fn vortex_array::vtable::Array::scalar_fn(&self) -> core::option::Option<&vortex_array::scalar_fn::ScalarFnRef> +pub fn vortex_array::Array::valid_count(&self) -> vortex_error::VortexResult -pub struct vortex_array::vtable::NotSupported +pub fn vortex_array::Array::validity_mask(&self) -> vortex_error::VortexResult -impl vortex_array::vtable::OperationsVTable for vortex_array::vtable::NotSupported +impl vortex_array::Array -pub fn vortex_array::vtable::NotSupported::scalar_at(array: &::Array, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::Array::as_array(&self) -> &vortex_array::ArrayRef -pub struct vortex_array::vtable::ValidityVTableFromChild +pub fn vortex_array::Array::as_view(&self) -> vortex_array::ArrayView<'_, V> -impl vortex_array::vtable::ValidityVTable for vortex_array::vtable::ValidityVTableFromChild where V: vortex_array::vtable::ValidityChild + vortex_array::vtable::VTable +pub fn vortex_array::Array::data(&self) -> &::ArrayData -pub fn vortex_array::vtable::ValidityVTableFromChild::validity(array: &::Array) -> vortex_error::VortexResult +pub fn vortex_array::Array::dtype(&self) -> &vortex_array::dtype::DType -pub struct vortex_array::vtable::ValidityVTableFromChildSliceHelper +pub fn vortex_array::Array::encoding_id(&self) -> vortex_array::ArrayId -impl vortex_array::vtable::ValidityVTable for vortex_array::vtable::ValidityVTableFromChildSliceHelper where ::Array: vortex_array::vtable::ValidityChildSliceHelper +pub fn vortex_array::Array::into_data(self) -> ::ArrayData -pub fn vortex_array::vtable::ValidityVTableFromChildSliceHelper::validity(array: &::Array) -> vortex_error::VortexResult +pub fn vortex_array::Array::is_empty(&self) -> bool -pub struct vortex_array::vtable::ValidityVTableFromValidityHelper +pub fn vortex_array::Array::len(&self) -> usize -impl vortex_array::vtable::ValidityVTable for vortex_array::vtable::ValidityVTableFromValidityHelper where ::Array: vortex_array::vtable::ValidityHelper +pub fn vortex_array::Array::statistics(&self) -> vortex_array::stats::StatsSetRef<'_> -pub fn vortex_array::vtable::ValidityVTableFromValidityHelper::validity(array: &::Array) -> vortex_error::VortexResult +pub fn vortex_array::Array::try_from_array_ref(array: vortex_array::ArrayRef) -> core::result::Result -pub struct vortex_array::vtable::ValidityVTableFromValiditySliceHelper +pub fn vortex_array::Array::try_from_data(data: ::ArrayData) -> vortex_error::VortexResult -impl vortex_array::vtable::ValidityVTable for vortex_array::vtable::ValidityVTableFromValiditySliceHelper where ::Array: vortex_array::vtable::ValiditySliceHelper +impl core::convert::From> for vortex_array::Array -pub fn vortex_array::vtable::ValidityVTableFromValiditySliceHelper::validity(array: &::Array) -> vortex_error::VortexResult +pub fn vortex_array::Array::from(value: alloc::vec::Vec<&[u8]>) -> Self -pub trait vortex_array::vtable::ArrayVTable: 'static + core::clone::Clone + core::marker::Sized + core::marker::Send + core::marker::Sync + core::fmt::Debug +impl core::convert::From> for vortex_array::Array -pub type vortex_array::vtable::ArrayVTable::Array: 'static + core::marker::Send + core::marker::Sync + core::clone::Clone + core::fmt::Debug + core::ops::deref::Deref + vortex_array::IntoArray +pub fn vortex_array::Array::from(value: alloc::vec::Vec<&str>) -> Self -pub type vortex_array::vtable::ArrayVTable::Metadata: core::fmt::Debug +impl core::convert::From> for vortex_array::Array -pub type vortex_array::vtable::ArrayVTable::OperationsVTable: vortex_array::vtable::OperationsVTable +pub fn vortex_array::Array::from(value: alloc::vec::Vec) -> Self -pub type vortex_array::vtable::ArrayVTable::ValidityVTable: vortex_array::vtable::ValidityVTable +impl core::convert::From>> for vortex_array::Array -pub fn vortex_array::vtable::ArrayVTable::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::Array::from(value: alloc::vec::Vec>) -> Self -pub fn vortex_array::vtable::ArrayVTable::array_eq(array: &Self::Array, other: &Self::Array, precision: vortex_array::Precision) -> bool +impl core::convert::From>> for vortex_array::Array -pub fn vortex_array::vtable::ArrayVTable::array_hash(array: &Self::Array, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::Array::from(value: alloc::vec::Vec>) -> Self -pub fn vortex_array::vtable::ArrayVTable::buffer(array: &Self::Array, idx: usize) -> vortex_array::buffer::BufferHandle +impl core::convert::From>> for vortex_array::Array -pub fn vortex_array::vtable::ArrayVTable::buffer_name(array: &Self::Array, idx: usize) -> core::option::Option +pub fn vortex_array::Array::from(value: alloc::vec::Vec>) -> Self -pub fn vortex_array::vtable::ArrayVTable::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +impl core::convert::From>> for vortex_array::Array -pub fn vortex_array::vtable::ArrayVTable::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::Array::from(value: alloc::vec::Vec>) -> Self -pub fn vortex_array::vtable::ArrayVTable::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +impl core::convert::From>>> for vortex_array::Array -pub fn vortex_array::vtable::ArrayVTable::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::Array::from(value: alloc::vec::Vec>>) -> Self -pub fn vortex_array::vtable::ArrayVTable::dtype(array: &Self::Array) -> &vortex_array::dtype::DType +impl core::convert::TryFrom> for vortex_array::arrays::datetime::TemporalData -pub fn vortex_array::vtable::ArrayVTable::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub type vortex_array::arrays::datetime::TemporalData::Error = vortex_error::VortexError -pub fn vortex_array::vtable::ArrayVTable::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::datetime::TemporalData::try_from(ext: vortex_array::arrays::ExtensionArray) -> core::result::Result -pub fn vortex_array::vtable::ArrayVTable::id(&self) -> vortex_array::vtable::ArrayId +impl core::iter::traits::collect::FromIterator> for vortex_array::Array -pub fn vortex_array::vtable::ArrayVTable::len(array: &Self::Array) -> usize +pub fn vortex_array::Array::from_iter>>(iter: T) -> Self -pub fn vortex_array::vtable::ArrayVTable::metadata(array: &Self::Array) -> vortex_error::VortexResult +impl core::iter::traits::collect::FromIterator> for vortex_array::Array -pub fn vortex_array::vtable::ArrayVTable::nbuffers(array: &Self::Array) -> usize +pub fn vortex_array::Array::from_iter>>(iter: T) -> Self -pub fn vortex_array::vtable::ArrayVTable::nchildren(array: &Self::Array) -> usize +impl core::iter::traits::collect::FromIterator>> for vortex_array::Array -pub fn vortex_array::vtable::ArrayVTable::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::Array::from_iter>>>(iter: T) -> Self -pub fn vortex_array::vtable::ArrayVTable::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +impl core::iter::traits::collect::FromIterator>> for vortex_array::Array -pub fn vortex_array::vtable::ArrayVTable::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::Array::from_iter>>>(iter: T) -> Self -pub fn vortex_array::vtable::ArrayVTable::slot_name(array: &Self::Array, idx: usize) -> alloc::string::String +impl core::iter::traits::collect::FromIterator for vortex_array::Array -pub fn vortex_array::vtable::ArrayVTable::slots(array: &Self::Array) -> &[core::option::Option] +pub fn vortex_array::Array::from_iter>(iter: T) -> Self -pub fn vortex_array::vtable::ArrayVTable::stats(array: &Self::Array) -> vortex_array::stats::StatsSetRef<'_> +impl<'a> core::iter::traits::collect::FromIterator> for vortex_array::Array -pub fn vortex_array::vtable::ArrayVTable::vtable(array: &Self::Array) -> &Self +pub fn vortex_array::Array::from_iter>>(iter: T) -> Self -pub fn vortex_array::vtable::ArrayVTable::with_slots(array: &mut Self::Array, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +impl<'a> core::iter::traits::collect::FromIterator> for vortex_array::Array -impl vortex_array::vtable::VTable for vortex_array::arrays::Bool +pub fn vortex_array::Array::from_iter>>(iter: T) -> Self -pub type vortex_array::arrays::Bool::Array = vortex_array::arrays::BoolArray +impl<'a> core::iter::traits::collect::FromIterator> for vortex_array::Array -pub type vortex_array::arrays::Bool::Metadata = vortex_array::ProstMetadata +pub fn vortex_array::Array::from_iter>>(iter: T) -> Self -pub type vortex_array::arrays::Bool::OperationsVTable = vortex_array::arrays::Bool +impl<'a> core::iter::traits::collect::FromIterator> for vortex_array::Array -pub type vortex_array::arrays::Bool::ValidityVTable = vortex_array::arrays::Bool +pub fn vortex_array::Array::from_iter>>(iter: T) -> Self -pub fn vortex_array::arrays::Bool::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +impl core::clone::Clone for vortex_array::Array -pub fn vortex_array::arrays::Bool::array_eq(array: &vortex_array::arrays::BoolArray, other: &vortex_array::arrays::BoolArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::Array::clone(&self) -> Self -pub fn vortex_array::arrays::Bool::array_hash(array: &vortex_array::arrays::BoolArray, state: &mut H, precision: vortex_array::Precision) +impl core::convert::AsRef for vortex_array::Array -pub fn vortex_array::arrays::Bool::buffer(array: &vortex_array::arrays::BoolArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::Array::as_ref(&self) -> &vortex_array::ArrayRef -pub fn vortex_array::arrays::Bool::buffer_name(_array: &vortex_array::arrays::BoolArray, idx: usize) -> core::option::Option +impl core::convert::From> for vortex_array::ArrayRef -pub fn vortex_array::arrays::Bool::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::from(value: vortex_array::Array) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Bool::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +impl core::fmt::Debug for vortex_array::Array -pub fn vortex_array::arrays::Bool::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::Array::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::Bool::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +impl core::ops::deref::Deref for vortex_array::Array -pub fn vortex_array::arrays::Bool::dtype(array: &vortex_array::arrays::BoolArray) -> &vortex_array::dtype::DType +pub type vortex_array::Array::Target = ::ArrayData -pub fn vortex_array::arrays::Bool::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::Array::deref(&self) -> &::ArrayData -pub fn vortex_array::arrays::Bool::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::IntoArray for vortex_array::Array -pub fn vortex_array::arrays::Bool::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::Array::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Bool::len(array: &vortex_array::arrays::BoolArray) -> usize +pub struct vortex_array::ArrayRef(_) -pub fn vortex_array::arrays::Bool::metadata(array: &vortex_array::arrays::BoolArray) -> vortex_error::VortexResult +impl vortex_array::ArrayRef -pub fn vortex_array::arrays::Bool::nbuffers(_array: &vortex_array::arrays::BoolArray) -> usize +pub fn vortex_array::ArrayRef::all_invalid(&self) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Bool::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::ArrayRef::all_valid(&self) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Bool::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::ArrayRef::append_to_builder(&self, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Bool::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::ArrayRef::as_(&self) -> ::Match -pub fn vortex_array::arrays::Bool::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::ArrayRef::as_constant(&self) -> core::option::Option -pub fn vortex_array::arrays::Bool::slot_name(_array: &vortex_array::arrays::BoolArray, idx: usize) -> alloc::string::String +pub fn vortex_array::ArrayRef::as_opt(&self) -> core::option::Option<::Match> -pub fn vortex_array::arrays::Bool::slots(array: &vortex_array::arrays::BoolArray) -> &[core::option::Option] +pub fn vortex_array::ArrayRef::as_typed(&self) -> core::option::Option> -pub fn vortex_array::arrays::Bool::stats(array: &vortex_array::arrays::BoolArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::ArrayRef::buffer_handles(&self) -> alloc::vec::Vec -pub fn vortex_array::arrays::Bool::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::ArrayRef::buffer_names(&self) -> alloc::vec::Vec -pub fn vortex_array::arrays::Bool::with_slots(array: &mut vortex_array::arrays::BoolArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::ArrayRef::buffers(&self) -> alloc::vec::Vec -impl vortex_array::vtable::VTable for vortex_array::arrays::Chunked +pub fn vortex_array::ArrayRef::children(&self) -> alloc::vec::Vec -pub type vortex_array::arrays::Chunked::Array = vortex_array::arrays::ChunkedArray +pub fn vortex_array::ArrayRef::children_names(&self) -> alloc::vec::Vec -pub type vortex_array::arrays::Chunked::Metadata = vortex_array::EmptyMetadata +pub fn vortex_array::ArrayRef::depth_first_traversal(&self) -> vortex_array::DepthFirstArrayIterator -pub type vortex_array::arrays::Chunked::OperationsVTable = vortex_array::arrays::Chunked +pub fn vortex_array::ArrayRef::dtype(&self) -> &vortex_array::dtype::DType -pub type vortex_array::arrays::Chunked::ValidityVTable = vortex_array::arrays::Chunked +pub fn vortex_array::ArrayRef::encoding_id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Chunked::append_to_builder(array: &vortex_array::arrays::ChunkedArray, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::ArrayRef::filter(&self, mask: vortex_mask::Mask) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Chunked::array_eq(array: &vortex_array::arrays::ChunkedArray, other: &vortex_array::arrays::ChunkedArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::ArrayRef::into_canonical(self) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Chunked::array_hash(array: &vortex_array::arrays::ChunkedArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::ArrayRef::invalid_count(&self) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Chunked::buffer(_array: &vortex_array::arrays::ChunkedArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::ArrayRef::is(&self) -> bool -pub fn vortex_array::arrays::Chunked::buffer_name(_array: &vortex_array::arrays::ChunkedArray, _idx: usize) -> core::option::Option +pub fn vortex_array::ArrayRef::is_arrow(&self) -> bool -pub fn vortex_array::arrays::Chunked::build(dtype: &vortex_array::dtype::DType, _len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::is_canonical(&self) -> bool -pub fn vortex_array::arrays::Chunked::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::ArrayRef::is_empty(&self) -> bool -pub fn vortex_array::arrays::Chunked::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::ArrayRef::is_host(&self) -> bool -pub fn vortex_array::arrays::Chunked::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::is_invalid(&self, index: usize) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Chunked::dtype(array: &vortex_array::arrays::ChunkedArray) -> &vortex_array::dtype::DType +pub fn vortex_array::ArrayRef::is_valid(&self, index: usize) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Chunked::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::len(&self) -> usize -pub fn vortex_array::arrays::Chunked::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::ArrayRef::metadata(&self) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Chunked::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::ArrayRef::metadata_fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::Chunked::len(array: &vortex_array::arrays::ChunkedArray) -> usize +pub fn vortex_array::ArrayRef::named_buffers(&self) -> alloc::vec::Vec<(alloc::string::String, vortex_array::buffer::BufferHandle)> -pub fn vortex_array::arrays::Chunked::metadata(_array: &vortex_array::arrays::ChunkedArray) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::named_children(&self) -> alloc::vec::Vec<(alloc::string::String, vortex_array::ArrayRef)> -pub fn vortex_array::arrays::Chunked::nbuffers(_array: &vortex_array::arrays::ChunkedArray) -> usize +pub fn vortex_array::ArrayRef::nbuffers(&self) -> usize -pub fn vortex_array::arrays::Chunked::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::ArrayRef::nbuffers_recursive(&self) -> usize -pub fn vortex_array::arrays::Chunked::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::ArrayRef::nbytes(&self) -> u64 -pub fn vortex_array::arrays::Chunked::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::ArrayRef::nchildren(&self) -> usize -pub fn vortex_array::arrays::Chunked::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::ArrayRef::nth_child(&self, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Chunked::slot_name(_array: &vortex_array::arrays::ChunkedArray, idx: usize) -> alloc::string::String +pub fn vortex_array::ArrayRef::scalar_at(&self, index: usize) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Chunked::slots(array: &vortex_array::arrays::ChunkedArray) -> &[core::option::Option] +pub fn vortex_array::ArrayRef::slice(&self, range: core::ops::range::Range) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Chunked::stats(array: &vortex_array::arrays::ChunkedArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::ArrayRef::slot_name(&self, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Chunked::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::ArrayRef::slots(&self) -> alloc::vec::Vec> -pub fn vortex_array::arrays::Chunked::with_slots(array: &mut vortex_array::arrays::ChunkedArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::ArrayRef::statistics(&self) -> vortex_array::stats::StatsSetRef<'_> -impl vortex_array::vtable::VTable for vortex_array::arrays::Constant +pub fn vortex_array::ArrayRef::take(&self, indices: vortex_array::ArrayRef) -> vortex_error::VortexResult -pub type vortex_array::arrays::Constant::Array = vortex_array::arrays::ConstantArray +pub fn vortex_array::ArrayRef::to_canonical(&self) -> vortex_error::VortexResult -pub type vortex_array::arrays::Constant::Metadata = vortex_array::scalar::Scalar +pub fn vortex_array::ArrayRef::try_into(self) -> core::result::Result, vortex_array::ArrayRef> -pub type vortex_array::arrays::Constant::OperationsVTable = vortex_array::arrays::Constant +pub fn vortex_array::ArrayRef::valid_count(&self) -> vortex_error::VortexResult -pub type vortex_array::arrays::Constant::ValidityVTable = vortex_array::arrays::Constant +pub fn vortex_array::ArrayRef::validity(&self) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Constant::append_to_builder(array: &vortex_array::arrays::ConstantArray, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::ArrayRef::validity_mask(&self) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Constant::array_eq(array: &vortex_array::arrays::ConstantArray, other: &vortex_array::arrays::ConstantArray, _precision: vortex_array::Precision) -> bool +pub fn vortex_array::ArrayRef::vtable(&self) -> &dyn vortex_array::DynVTable -pub fn vortex_array::arrays::Constant::array_hash(array: &vortex_array::arrays::ConstantArray, state: &mut H, _precision: vortex_array::Precision) +pub fn vortex_array::ArrayRef::with_slot(self, slot_idx: usize, replacement: vortex_array::ArrayRef) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Constant::buffer(array: &vortex_array::arrays::ConstantArray, idx: usize) -> vortex_array::buffer::BufferHandle +impl vortex_array::ArrayRef -pub fn vortex_array::arrays::Constant::buffer_name(_array: &vortex_array::arrays::ConstantArray, idx: usize) -> core::option::Option +pub fn vortex_array::ArrayRef::apply(self, expr: &vortex_array::expr::Expression) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Constant::build(_dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], _children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +impl vortex_array::ArrayRef -pub fn vortex_array::arrays::Constant::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::ArrayRef::as_binary_typed(&self) -> vortex_array::variants::BinaryTyped<'_> -pub fn vortex_array::arrays::Constant::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::ArrayRef::as_bool_typed(&self) -> vortex_array::variants::BoolTyped<'_> -pub fn vortex_array::arrays::Constant::deserialize(_bytes: &[u8], dtype: &vortex_array::dtype::DType, _len: usize, buffers: &[vortex_array::buffer::BufferHandle], session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::as_decimal_typed(&self) -> vortex_array::variants::DecimalTyped<'_> -pub fn vortex_array::arrays::Constant::dtype(array: &vortex_array::arrays::ConstantArray) -> &vortex_array::dtype::DType +pub fn vortex_array::ArrayRef::as_extension_typed(&self) -> vortex_array::variants::ExtensionTyped<'_> -pub fn vortex_array::arrays::Constant::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::as_list_typed(&self) -> vortex_array::variants::ListTyped<'_> -pub fn vortex_array::arrays::Constant::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::ArrayRef::as_null_typed(&self) -> vortex_array::variants::NullTyped<'_> -pub fn vortex_array::arrays::Constant::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::ArrayRef::as_primitive_typed(&self) -> vortex_array::variants::PrimitiveTyped<'_> -pub fn vortex_array::arrays::Constant::len(array: &vortex_array::arrays::ConstantArray) -> usize +pub fn vortex_array::ArrayRef::as_struct_typed(&self) -> vortex_array::variants::StructTyped<'_> -pub fn vortex_array::arrays::Constant::metadata(array: &vortex_array::arrays::ConstantArray) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::as_utf8_typed(&self) -> vortex_array::variants::Utf8Typed<'_> -pub fn vortex_array::arrays::Constant::nbuffers(_array: &vortex_array::arrays::ConstantArray) -> usize +pub fn vortex_array::ArrayRef::try_to_mask_fill_null_false(&self, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Constant::nchildren(array: &Self::Array) -> usize +impl vortex_array::ArrayRef -pub fn vortex_array::arrays::Constant::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::ArrayRef::display_as(&self, options: vortex_array::display::DisplayOptions) -> impl core::fmt::Display -pub fn vortex_array::arrays::Constant::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::ArrayRef::display_tree(&self) -> vortex_array::display::TreeDisplay -pub fn vortex_array::arrays::Constant::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::ArrayRef::display_tree_encodings_only(&self) -> vortex_array::display::TreeDisplay -pub fn vortex_array::arrays::Constant::slot_name(_array: &vortex_array::arrays::ConstantArray, idx: usize) -> alloc::string::String +pub fn vortex_array::ArrayRef::display_values(&self) -> impl core::fmt::Display -pub fn vortex_array::arrays::Constant::slots(array: &vortex_array::arrays::ConstantArray) -> &[core::option::Option] +pub fn vortex_array::ArrayRef::tree_display(&self) -> vortex_array::display::TreeDisplay -pub fn vortex_array::arrays::Constant::stats(array: &vortex_array::arrays::ConstantArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::ArrayRef::tree_display_builder(&self) -> vortex_array::display::TreeDisplay -pub fn vortex_array::arrays::Constant::vtable(_array: &Self::Array) -> &Self +impl vortex_array::ArrayRef -pub fn vortex_array::arrays::Constant::with_slots(array: &mut vortex_array::arrays::ConstantArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::ArrayRef::execute(self, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::vtable::VTable for vortex_array::arrays::Decimal +pub fn vortex_array::ArrayRef::execute_as(self, _name: &'static str, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::arrays::Decimal::Array = vortex_array::arrays::DecimalArray +pub fn vortex_array::ArrayRef::execute_until(self, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::arrays::Decimal::Metadata = vortex_array::ProstMetadata +impl vortex_array::ArrayRef -pub type vortex_array::arrays::Decimal::OperationsVTable = vortex_array::arrays::Decimal +pub fn vortex_array::ArrayRef::normalize(self, options: &mut vortex_array::normalize::NormalizeOptions<'_>) -> vortex_error::VortexResult -pub type vortex_array::arrays::Decimal::ValidityVTable = vortex_array::arrays::Decimal +impl vortex_array::ArrayRef -pub fn vortex_array::arrays::Decimal::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::ArrayRef::ptr_eq(this: &vortex_array::ArrayRef, other: &vortex_array::ArrayRef) -> bool -pub fn vortex_array::arrays::Decimal::array_eq(array: &vortex_array::arrays::DecimalArray, other: &vortex_array::arrays::DecimalArray, precision: vortex_array::Precision) -> bool +impl vortex_array::ArrayRef -pub fn vortex_array::arrays::Decimal::array_hash(array: &vortex_array::arrays::DecimalArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::ArrayRef::serialize(&self, ctx: &vortex_array::ArrayContext, options: &vortex_array::serde::SerializeOptions) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Decimal::buffer(array: &vortex_array::arrays::DecimalArray, idx: usize) -> vortex_array::buffer::BufferHandle +impl vortex_array::ArrayRef -pub fn vortex_array::arrays::Decimal::buffer_name(_array: &vortex_array::arrays::DecimalArray, idx: usize) -> core::option::Option +pub fn vortex_array::ArrayRef::to_array_iterator(&self) -> impl vortex_array::iter::ArrayIterator + 'static -pub fn vortex_array::arrays::Decimal::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +impl vortex_array::ArrayRef -pub fn vortex_array::arrays::Decimal::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::ArrayRef::to_array_stream(&self) -> impl vortex_array::stream::ArrayStream + 'static -pub fn vortex_array::arrays::Decimal::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +impl core::clone::Clone for vortex_array::ArrayRef -pub fn vortex_array::arrays::Decimal::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::clone(&self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Decimal::dtype(array: &vortex_array::arrays::DecimalArray) -> &vortex_array::dtype::DType +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::Decimal::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::from(value: vortex_array::Canonical) -> Self -pub fn vortex_array::arrays::Decimal::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::Decimal::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::bool::BoolData) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Decimal::len(array: &vortex_array::arrays::DecimalArray) -> usize +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::Decimal::metadata(array: &vortex_array::arrays::DecimalArray) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::chunked::ChunkedData) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Decimal::nbuffers(_array: &vortex_array::arrays::DecimalArray) -> usize +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::Decimal::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::constant::ConstantData) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Decimal::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::Decimal::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::datetime::TemporalData) -> Self -pub fn vortex_array::arrays::Decimal::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::Decimal::slot_name(_array: &vortex_array::arrays::DecimalArray, idx: usize) -> alloc::string::String +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::decimal::DecimalData) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Decimal::slots(array: &vortex_array::arrays::DecimalArray) -> &[core::option::Option] +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::Decimal::stats(array: &vortex_array::arrays::DecimalArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::dict::DictData) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Decimal::vtable(_array: &Self::Array) -> &Self +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::Decimal::with_slots(array: &mut vortex_array::arrays::DecimalArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::extension::ExtensionData) -> vortex_array::ArrayRef -impl vortex_array::vtable::VTable for vortex_array::arrays::Extension +impl core::convert::From for vortex_array::ArrayRef -pub type vortex_array::arrays::Extension::Array = vortex_array::arrays::ExtensionArray +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::filter::FilterData) -> vortex_array::ArrayRef -pub type vortex_array::arrays::Extension::Metadata = vortex_array::EmptyMetadata +impl core::convert::From for vortex_array::ArrayRef -pub type vortex_array::arrays::Extension::OperationsVTable = vortex_array::arrays::Extension +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::fixed_size_list::FixedSizeListData) -> vortex_array::ArrayRef -pub type vortex_array::arrays::Extension::ValidityVTable = vortex_array::vtable::ValidityVTableFromChild +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::Extension::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::list::ListData) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Extension::array_eq(array: &vortex_array::arrays::ExtensionArray, other: &vortex_array::arrays::ExtensionArray, precision: vortex_array::Precision) -> bool +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::Extension::array_hash(array: &vortex_array::arrays::ExtensionArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::listview::ListViewData) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Extension::buffer(_array: &vortex_array::arrays::ExtensionArray, idx: usize) -> vortex_array::buffer::BufferHandle +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::Extension::buffer_name(_array: &vortex_array::arrays::ExtensionArray, _idx: usize) -> core::option::Option +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::masked::MaskedData) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Extension::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::Extension::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::null::NullData) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Extension::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::Extension::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::patched::PatchedArray) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Extension::dtype(array: &vortex_array::arrays::ExtensionArray) -> &vortex_array::dtype::DType +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::Extension::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::primitive::PrimitiveData) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Extension::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::Extension::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::scalar_fn::ScalarFnData) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Extension::len(array: &vortex_array::arrays::ExtensionArray) -> usize +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::Extension::metadata(_array: &vortex_array::arrays::ExtensionArray) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::shared::SharedData) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Extension::nbuffers(_array: &vortex_array::arrays::ExtensionArray) -> usize +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::Extension::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::slice::SliceData) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Extension::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::Extension::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::struct_::StructData) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Extension::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::Extension::slot_name(_array: &vortex_array::arrays::ExtensionArray, idx: usize) -> alloc::string::String +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::varbin::VarBinData) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Extension::slots(array: &vortex_array::arrays::ExtensionArray) -> &[core::option::Option] +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::Extension::stats(array: &vortex_array::arrays::ExtensionArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::varbinview::VarBinViewData) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Extension::vtable(_array: &Self::Array) -> &Self +impl core::convert::From for vortex_array::ArrayRef -pub fn vortex_array::arrays::Extension::with_slots(array: &mut Self::Array, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::ArrayRef::from(value: vortex_array::arrays::variant::VariantData) -> vortex_array::ArrayRef -impl vortex_array::vtable::VTable for vortex_array::arrays::Filter +impl core::convert::TryFrom<&vortex_array::ArrayRef> for arrow_array::record_batch::RecordBatch -pub type vortex_array::arrays::Filter::Array = vortex_array::arrays::FilterArray +pub type arrow_array::record_batch::RecordBatch::Error = vortex_error::VortexError -pub type vortex_array::arrays::Filter::Metadata = vortex_array::arrays::filter::vtable::FilterMetadata +pub fn arrow_array::record_batch::RecordBatch::try_from(value: &vortex_array::ArrayRef) -> vortex_error::VortexResult -pub type vortex_array::arrays::Filter::OperationsVTable = vortex_array::arrays::Filter +impl core::convert::TryFrom for vortex_array::arrays::datetime::TemporalData -pub type vortex_array::arrays::Filter::ValidityVTable = vortex_array::arrays::Filter +pub type vortex_array::arrays::datetime::TemporalData::Error = vortex_error::VortexError -pub fn vortex_array::arrays::Filter::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::datetime::TemporalData::try_from(value: vortex_array::ArrayRef) -> core::result::Result -pub fn vortex_array::arrays::Filter::array_eq(array: &vortex_array::arrays::FilterArray, other: &vortex_array::arrays::FilterArray, precision: vortex_array::Precision) -> bool +impl core::fmt::Debug for vortex_array::ArrayRef -pub fn vortex_array::arrays::Filter::array_hash(array: &vortex_array::arrays::FilterArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::ArrayRef::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::Filter::buffer(_array: &Self::Array, _idx: usize) -> vortex_array::buffer::BufferHandle +impl core::fmt::Display for vortex_array::ArrayRef -pub fn vortex_array::arrays::Filter::buffer_name(_array: &Self::Array, _idx: usize) -> core::option::Option +pub fn vortex_array::ArrayRef::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::Filter::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::filter::vtable::FilterMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +impl core::iter::traits::collect::FromIterator for vortex_array::Array -pub fn vortex_array::arrays::Filter::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::Array::from_iter>(iter: T) -> Self -pub fn vortex_array::arrays::Filter::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +impl vortex_array::ArrayEq for vortex_array::ArrayRef -pub fn vortex_array::arrays::Filter::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::Filter::dtype(array: &vortex_array::arrays::FilterArray) -> &vortex_array::dtype::DType +impl vortex_array::ArrayHash for vortex_array::ArrayRef -pub fn vortex_array::arrays::Filter::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::array_hash(&self, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::Filter::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::Executable for vortex_array::ArrayRef -pub fn vortex_array::arrays::Filter::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::ArrayRef::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Filter::len(array: &vortex_array::arrays::FilterArray) -> usize +impl vortex_array::IntoArray for vortex_array::ArrayRef -pub fn vortex_array::arrays::Filter::metadata(array: &Self::Array) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Filter::nbuffers(_array: &Self::Array) -> usize +impl vortex_array::ToCanonical for vortex_array::ArrayRef -pub fn vortex_array::arrays::Filter::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::ArrayRef::to_bool(&self) -> vortex_array::arrays::BoolArray -pub fn vortex_array::arrays::Filter::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::ArrayRef::to_decimal(&self) -> vortex_array::arrays::DecimalArray -pub fn vortex_array::arrays::Filter::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::ArrayRef::to_extension(&self) -> vortex_array::arrays::ExtensionArray -pub fn vortex_array::arrays::Filter::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::ArrayRef::to_fixed_size_list(&self) -> vortex_array::arrays::FixedSizeListArray -pub fn vortex_array::arrays::Filter::slot_name(_array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::ArrayRef::to_listview(&self) -> vortex_array::arrays::ListViewArray -pub fn vortex_array::arrays::Filter::slots(array: &Self::Array) -> &[core::option::Option] +pub fn vortex_array::ArrayRef::to_null(&self) -> vortex_array::arrays::null::NullArray -pub fn vortex_array::arrays::Filter::stats(array: &vortex_array::arrays::FilterArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::ArrayRef::to_primitive(&self) -> vortex_array::arrays::PrimitiveArray -pub fn vortex_array::arrays::Filter::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::ArrayRef::to_struct(&self) -> vortex_array::arrays::StructArray -pub fn vortex_array::arrays::Filter::with_slots(array: &mut Self::Array, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::ArrayRef::to_varbinview(&self) -> vortex_array::arrays::VarBinViewArray -impl vortex_array::vtable::VTable for vortex_array::arrays::FixedSizeList +impl vortex_array::arrow::ArrowArrayExecutor for vortex_array::ArrayRef -pub type vortex_array::arrays::FixedSizeList::Array = vortex_array::arrays::FixedSizeListArray +pub fn vortex_array::ArrayRef::execute_arrow(self, data_type: core::option::Option<&arrow_schema::datatype::DataType>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::arrays::FixedSizeList::Metadata = vortex_array::EmptyMetadata +pub fn vortex_array::ArrayRef::execute_record_batch(self, schema: &arrow_schema::schema::Schema, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::arrays::FixedSizeList::OperationsVTable = vortex_array::arrays::FixedSizeList +pub fn vortex_array::ArrayRef::execute_record_batches(self, schema: &arrow_schema::schema::Schema, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub type vortex_array::arrays::FixedSizeList::ValidityVTable = vortex_array::vtable::ValidityVTableFromValidityHelper +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::boolean_array::BooleanArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::FixedSizeList::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::boolean_array::BooleanArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::FixedSizeList::array_eq(array: &vortex_array::arrays::FixedSizeListArray, other: &vortex_array::arrays::FixedSizeListArray, precision: vortex_array::Precision) -> bool +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::fixed_size_list_array::FixedSizeListArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::FixedSizeList::array_hash(array: &vortex_array::arrays::FixedSizeListArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::ArrayRef::from_arrow(array: &arrow_array::array::fixed_size_list_array::FixedSizeListArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::FixedSizeList::buffer(_array: &vortex_array::arrays::FixedSizeListArray, idx: usize) -> vortex_array::buffer::BufferHandle +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::null_array::NullArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::FixedSizeList::buffer_name(_array: &vortex_array::arrays::FixedSizeListArray, idx: usize) -> core::option::Option +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::null_array::NullArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::FixedSizeList::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::FixedSizeList::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::FixedSizeList::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::FixedSizeList::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::FixedSizeList::dtype(array: &vortex_array::arrays::FixedSizeListArray) -> &vortex_array::dtype::DType +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::FixedSizeList::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::from_arrow(array: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::FixedSizeList::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::FixedSizeList::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::ArrayRef::from_arrow(array: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::FixedSizeList::len(array: &vortex_array::arrays::FixedSizeListArray) -> usize +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::FixedSizeList::metadata(_array: &vortex_array::arrays::FixedSizeListArray) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::from_arrow(array: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::FixedSizeList::nbuffers(_array: &vortex_array::arrays::FixedSizeListArray) -> usize +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::FixedSizeList::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::ArrayRef::from_arrow(array: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::FixedSizeList::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::FixedSizeList::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::FixedSizeList::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::FixedSizeList::slot_name(_array: &vortex_array::arrays::FixedSizeListArray, idx: usize) -> alloc::string::String +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::FixedSizeList::slots(array: &vortex_array::arrays::FixedSizeListArray) -> &[core::option::Option] +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::FixedSizeList::stats(array: &vortex_array::arrays::FixedSizeListArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::FixedSizeList::vtable(_array: &Self::Array) -> &Self +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::FixedSizeList::with_slots(array: &mut vortex_array::arrays::FixedSizeListArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -impl vortex_array::vtable::VTable for vortex_array::arrays::List +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub type vortex_array::arrays::List::Array = vortex_array::arrays::ListArray +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub type vortex_array::arrays::List::Metadata = vortex_array::ProstMetadata +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub type vortex_array::arrays::List::OperationsVTable = vortex_array::arrays::List +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub type vortex_array::arrays::List::ValidityVTable = vortex_array::vtable::ValidityVTableFromValidityHelper +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::List::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::List::array_eq(array: &vortex_array::arrays::ListArray, other: &vortex_array::arrays::ListArray, precision: vortex_array::Precision) -> bool +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::List::array_hash(array: &vortex_array::arrays::ListArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::List::buffer(_array: &vortex_array::arrays::ListArray, idx: usize) -> vortex_array::buffer::BufferHandle +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::List::buffer_name(_array: &vortex_array::arrays::ListArray, idx: usize) -> core::option::Option +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::List::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::List::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::List::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::List::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::List::dtype(array: &vortex_array::arrays::ListArray) -> &vortex_array::dtype::DType +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::List::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::List::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::List::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::List::len(array: &vortex_array::arrays::ListArray) -> usize +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::List::metadata(array: &vortex_array::arrays::ListArray) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::List::nbuffers(_array: &vortex_array::arrays::ListArray) -> usize +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::List::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::List::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::List::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::List::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::List::slot_name(_array: &vortex_array::arrays::ListArray, idx: usize) -> alloc::string::String +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::List::slots(array: &vortex_array::arrays::ListArray) -> &[core::option::Option] +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::List::stats(array: &vortex_array::arrays::ListArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::List::vtable(_array: &Self::Array) -> &Self +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::primitive_array::PrimitiveArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::List::with_slots(array: &mut vortex_array::arrays::ListArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::primitive_array::PrimitiveArray, nullable: bool) -> vortex_error::VortexResult -impl vortex_array::vtable::VTable for vortex_array::arrays::ListView +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::struct_array::StructArray> for vortex_array::ArrayRef -pub type vortex_array::arrays::ListView::Array = vortex_array::arrays::ListViewArray +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::struct_array::StructArray, nullable: bool) -> vortex_error::VortexResult -pub type vortex_array::arrays::ListView::Metadata = vortex_array::ProstMetadata +impl vortex_array::arrow::FromArrowArray<&arrow_array::record_batch::RecordBatch> for vortex_array::ArrayRef -pub type vortex_array::arrays::ListView::OperationsVTable = vortex_array::arrays::ListView +pub fn vortex_array::ArrayRef::from_arrow(array: &arrow_array::record_batch::RecordBatch, nullable: bool) -> vortex_error::VortexResult -pub type vortex_array::arrays::ListView::ValidityVTable = vortex_array::vtable::ValidityVTableFromValidityHelper +impl vortex_array::arrow::FromArrowArray<&dyn arrow_array::array::Array> for vortex_array::ArrayRef -pub fn vortex_array::arrays::ListView::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::ArrayRef::from_arrow(array: &dyn arrow_array::array::Array, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListView::array_eq(array: &vortex_array::arrays::ListViewArray, other: &vortex_array::arrays::ListViewArray, precision: vortex_array::Precision) -> bool +impl vortex_array::arrow::FromArrowArray for vortex_array::ArrayRef -pub fn vortex_array::arrays::ListView::array_hash(array: &vortex_array::arrays::ListViewArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::ArrayRef::from_arrow(array: arrow_array::record_batch::RecordBatch, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListView::buffer(_array: &vortex_array::arrays::ListViewArray, idx: usize) -> vortex_array::buffer::BufferHandle +impl vortex_array::arrow::IntoArrowArray for vortex_array::ArrayRef -pub fn vortex_array::arrays::ListView::buffer_name(_array: &vortex_array::arrays::ListViewArray, idx: usize) -> core::option::Option +pub fn vortex_array::ArrayRef::into_arrow(self, data_type: &arrow_schema::datatype::DataType) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListView::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::into_arrow_preferred(self) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListView::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +impl vortex_array::builtins::ArrayBuiltins for vortex_array::ArrayRef -pub fn vortex_array::arrays::ListView::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::ArrayRef::between(self, lower: vortex_array::ArrayRef, upper: vortex_array::ArrayRef, options: vortex_array::scalar_fn::fns::between::BetweenOptions) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListView::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::binary(&self, rhs: vortex_array::ArrayRef, op: vortex_array::scalar_fn::fns::operators::Operator) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListView::dtype(array: &vortex_array::arrays::ListViewArray) -> &vortex_array::dtype::DType +pub fn vortex_array::ArrayRef::cast(&self, dtype: vortex_array::dtype::DType) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListView::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::fill_null(&self, fill_value: impl core::convert::Into) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListView::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::ArrayRef::get_item(&self, field_name: impl core::convert::Into) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListView::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::ArrayRef::is_null(&self) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListView::len(array: &vortex_array::arrays::ListViewArray) -> usize +pub fn vortex_array::ArrayRef::list_contains(&self, value: vortex_array::ArrayRef) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListView::metadata(array: &vortex_array::arrays::ListViewArray) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::mask(self, mask: vortex_array::ArrayRef) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListView::nbuffers(_array: &vortex_array::arrays::ListViewArray) -> usize +pub fn vortex_array::ArrayRef::not(&self) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListView::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::ArrayRef::zip(&self, if_true: vortex_array::ArrayRef, if_false: vortex_array::ArrayRef) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListView::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +impl vortex_array::optimizer::ArrayOptimizer for vortex_array::ArrayRef -pub fn vortex_array::arrays::ListView::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::ArrayRef::optimize(&self) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListView::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::ArrayRef::optimize_recursive(&self) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListView::slot_name(_array: &vortex_array::arrays::ListViewArray, idx: usize) -> alloc::string::String +impl vortex_array::scalar_fn::ReduceNode for vortex_array::ArrayRef -pub fn vortex_array::arrays::ListView::slots(array: &vortex_array::arrays::ListViewArray) -> &[core::option::Option] +pub fn vortex_array::ArrayRef::as_any(&self) -> &dyn core::any::Any -pub fn vortex_array::arrays::ListView::stats(array: &vortex_array::arrays::ListViewArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::ArrayRef::child(&self, idx: usize) -> vortex_array::scalar_fn::ReduceNodeRef -pub fn vortex_array::arrays::ListView::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::ArrayRef::child_count(&self) -> usize -pub fn vortex_array::arrays::ListView::with_slots(array: &mut vortex_array::arrays::ListViewArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::ArrayRef::node_dtype(&self) -> vortex_error::VortexResult -impl vortex_array::vtable::VTable for vortex_array::arrays::Masked +pub fn vortex_array::ArrayRef::scalar_fn(&self) -> core::option::Option<&vortex_array::scalar_fn::ScalarFnRef> -pub type vortex_array::arrays::Masked::Array = vortex_array::arrays::MaskedArray +impl vortex_array::search_sorted::IndexOrd for vortex_array::ArrayRef -pub type vortex_array::arrays::Masked::Metadata = vortex_array::EmptyMetadata +pub fn vortex_array::ArrayRef::index_cmp(&self, idx: usize, elem: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult> -pub type vortex_array::arrays::Masked::OperationsVTable = vortex_array::arrays::Masked +pub fn vortex_array::ArrayRef::index_ge(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub type vortex_array::arrays::Masked::ValidityVTable = vortex_array::arrays::Masked +pub fn vortex_array::ArrayRef::index_gt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Masked::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::ArrayRef::index_le(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Masked::array_eq(array: &vortex_array::arrays::MaskedArray, other: &vortex_array::arrays::MaskedArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::ArrayRef::index_len(&self) -> usize -pub fn vortex_array::arrays::Masked::array_hash(array: &vortex_array::arrays::MaskedArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::ArrayRef::index_lt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Masked::buffer(_array: &Self::Array, _idx: usize) -> vortex_array::buffer::BufferHandle +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::list_view_array::GenericListViewArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::Masked::buffer_name(_array: &Self::Array, _idx: usize) -> core::option::Option +pub fn vortex_array::ArrayRef::from_arrow(array: &arrow_array::array::list_view_array::GenericListViewArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Masked::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::list_array::GenericListArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::Masked::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::list_array::GenericListArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Masked::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::byte_array::GenericByteArray> for vortex_array::ArrayRef where ::Offset: vortex_array::dtype::IntegerPType -pub fn vortex_array::arrays::Masked::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::byte_array::GenericByteArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Masked::dtype(array: &vortex_array::arrays::MaskedArray) -> &vortex_array::dtype::DType +impl vortex_array::arrow::FromArrowArray<&arrow_array::array::byte_view_array::GenericByteViewArray> for vortex_array::ArrayRef -pub fn vortex_array::arrays::Masked::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::ArrayRef::from_arrow(value: &arrow_array::array::byte_view_array::GenericByteViewArray, nullable: bool) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Masked::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +impl core::convert::AsRef for vortex_array::Array -pub fn vortex_array::arrays::Masked::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::Array::as_ref(&self) -> &vortex_array::ArrayRef -pub fn vortex_array::arrays::Masked::len(array: &vortex_array::arrays::MaskedArray) -> usize +impl core::convert::AsRef for vortex_array::ArrayView<'_, V> -pub fn vortex_array::arrays::Masked::metadata(_array: &vortex_array::arrays::MaskedArray) -> vortex_error::VortexResult +pub fn vortex_array::ArrayView<'_, V>::as_ref(&self) -> &vortex_array::ArrayRef -pub fn vortex_array::arrays::Masked::nbuffers(_array: &Self::Array) -> usize +impl core::convert::From> for vortex_array::ArrayRef -pub fn vortex_array::arrays::Masked::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::ArrayRef::from(value: vortex_array::Array) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Masked::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub struct vortex_array::ArrayView<'a, V: vortex_array::VTable> -pub fn vortex_array::arrays::Masked::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +impl<'a, V: vortex_array::VTable> vortex_array::ArrayView<'a, V> where ::ArrayData: vortex_array::ValidityHelper -pub fn vortex_array::arrays::Masked::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::ArrayView<'a, V>::validity(&self) -> &'a vortex_array::validity::Validity -pub fn vortex_array::arrays::Masked::slot_name(_array: &vortex_array::arrays::MaskedArray, idx: usize) -> alloc::string::String +impl<'a, V: vortex_array::VTable> vortex_array::ArrayView<'a, V> -pub fn vortex_array::arrays::Masked::slots(array: &vortex_array::arrays::MaskedArray) -> &[core::option::Option] +pub fn vortex_array::ArrayView<'a, V>::array(&self) -> &'a vortex_array::ArrayRef -pub fn vortex_array::arrays::Masked::stats(array: &vortex_array::arrays::MaskedArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::ArrayView<'a, V>::data(&self) -> &'a ::ArrayData -pub fn vortex_array::arrays::Masked::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::ArrayView<'a, V>::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::Masked::with_slots(array: &mut vortex_array::arrays::MaskedArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::ArrayView<'a, V>::encoding_id(&self) -> vortex_array::ArrayId -impl vortex_array::vtable::VTable for vortex_array::arrays::Primitive +pub fn vortex_array::ArrayView<'a, V>::into_owned(self) -> vortex_array::Array -pub type vortex_array::arrays::Primitive::Array = vortex_array::arrays::PrimitiveArray +pub fn vortex_array::ArrayView<'a, V>::is_empty(&self) -> bool -pub type vortex_array::arrays::Primitive::Metadata = vortex_array::EmptyMetadata +pub fn vortex_array::ArrayView<'a, V>::len(&self) -> usize -pub type vortex_array::arrays::Primitive::OperationsVTable = vortex_array::arrays::Primitive +pub fn vortex_array::ArrayView<'a, V>::statistics(&self) -> vortex_array::stats::StatsSetRef<'_> -pub type vortex_array::arrays::Primitive::ValidityVTable = vortex_array::arrays::Primitive +impl core::clone::Clone for vortex_array::ArrayView<'_, V> -pub fn vortex_array::arrays::Primitive::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::ArrayView<'_, V>::clone(&self) -> Self -pub fn vortex_array::arrays::Primitive::array_eq(array: &vortex_array::arrays::PrimitiveArray, other: &vortex_array::arrays::PrimitiveArray, precision: vortex_array::Precision) -> bool +impl core::convert::AsRef for vortex_array::ArrayView<'_, V> -pub fn vortex_array::arrays::Primitive::array_hash(array: &vortex_array::arrays::PrimitiveArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::ArrayView<'_, V>::as_ref(&self) -> &vortex_array::ArrayRef -pub fn vortex_array::arrays::Primitive::buffer(array: &vortex_array::arrays::PrimitiveArray, idx: usize) -> vortex_array::buffer::BufferHandle +impl core::fmt::Debug for vortex_array::ArrayView<'_, V> -pub fn vortex_array::arrays::Primitive::buffer_name(_array: &vortex_array::arrays::PrimitiveArray, idx: usize) -> core::option::Option +pub fn vortex_array::ArrayView<'_, V>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::Primitive::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +impl core::marker::Copy for vortex_array::ArrayView<'_, V> -pub fn vortex_array::arrays::Primitive::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +impl core::ops::deref::Deref for vortex_array::ArrayView<'_, V> -pub fn vortex_array::arrays::Primitive::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub type vortex_array::ArrayView<'_, V>::Target = ::ArrayData -pub fn vortex_array::arrays::Primitive::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::ArrayView<'_, V>::deref(&self) -> &::ArrayData -pub fn vortex_array::arrays::Primitive::dtype(array: &vortex_array::arrays::PrimitiveArray) -> &vortex_array::dtype::DType +pub struct vortex_array::CanonicalValidity(pub vortex_array::Canonical) -pub fn vortex_array::arrays::Primitive::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::Executable for vortex_array::CanonicalValidity -pub fn vortex_array::arrays::Primitive::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::CanonicalValidity::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Primitive::id(&self) -> vortex_array::vtable::ArrayId +pub struct vortex_array::DepthFirstArrayIterator -pub fn vortex_array::arrays::Primitive::len(array: &vortex_array::arrays::PrimitiveArray) -> usize +impl core::iter::traits::iterator::Iterator for vortex_array::DepthFirstArrayIterator -pub fn vortex_array::arrays::Primitive::metadata(_array: &vortex_array::arrays::PrimitiveArray) -> vortex_error::VortexResult +pub type vortex_array::DepthFirstArrayIterator::Item = vortex_array::ArrayRef -pub fn vortex_array::arrays::Primitive::nbuffers(_array: &vortex_array::arrays::PrimitiveArray) -> usize +pub fn vortex_array::DepthFirstArrayIterator::next(&mut self) -> core::option::Option -pub fn vortex_array::arrays::Primitive::nchildren(array: &Self::Array) -> usize +pub struct vortex_array::EmptyMetadata -pub fn vortex_array::arrays::Primitive::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +impl core::fmt::Debug for vortex_array::EmptyMetadata -pub fn vortex_array::arrays::Primitive::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::EmptyMetadata::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::Primitive::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +impl vortex_array::DeserializeMetadata for vortex_array::EmptyMetadata -pub fn vortex_array::arrays::Primitive::slot_name(_array: &vortex_array::arrays::PrimitiveArray, idx: usize) -> alloc::string::String +pub type vortex_array::EmptyMetadata::Output = vortex_array::EmptyMetadata -pub fn vortex_array::arrays::Primitive::slots(array: &vortex_array::arrays::PrimitiveArray) -> &[core::option::Option] +pub fn vortex_array::EmptyMetadata::deserialize(metadata: &[u8]) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Primitive::stats(array: &vortex_array::arrays::PrimitiveArray) -> vortex_array::stats::StatsSetRef<'_> +impl vortex_array::SerializeMetadata for vortex_array::EmptyMetadata -pub fn vortex_array::arrays::Primitive::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::EmptyMetadata::serialize(self) -> alloc::vec::Vec -pub fn vortex_array::arrays::Primitive::with_slots(array: &mut vortex_array::arrays::PrimitiveArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub struct vortex_array::ExecutionCtx -impl vortex_array::vtable::VTable for vortex_array::arrays::Shared +impl vortex_array::ExecutionCtx -pub type vortex_array::arrays::Shared::Array = vortex_array::arrays::SharedArray +pub fn vortex_array::ExecutionCtx::log(&mut self, msg: core::fmt::Arguments<'_>) -pub type vortex_array::arrays::Shared::Metadata = vortex_array::EmptyMetadata +pub fn vortex_array::ExecutionCtx::new(session: vortex_session::VortexSession) -> Self -pub type vortex_array::arrays::Shared::OperationsVTable = vortex_array::arrays::Shared +pub fn vortex_array::ExecutionCtx::session(&self) -> &vortex_session::VortexSession -pub type vortex_array::arrays::Shared::ValidityVTable = vortex_array::arrays::Shared +impl core::clone::Clone for vortex_array::ExecutionCtx -pub fn vortex_array::arrays::Shared::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::ExecutionCtx::clone(&self) -> vortex_array::ExecutionCtx -pub fn vortex_array::arrays::Shared::array_eq(array: &vortex_array::arrays::SharedArray, other: &vortex_array::arrays::SharedArray, precision: vortex_array::Precision) -> bool +impl core::fmt::Debug for vortex_array::ExecutionCtx -pub fn vortex_array::arrays::Shared::array_hash(array: &vortex_array::arrays::SharedArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::ExecutionCtx::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::Shared::buffer(_array: &Self::Array, _idx: usize) -> vortex_array::buffer::BufferHandle +impl core::fmt::Display for vortex_array::ExecutionCtx -pub fn vortex_array::arrays::Shared::buffer_name(_array: &Self::Array, _idx: usize) -> core::option::Option +pub fn vortex_array::ExecutionCtx::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::Shared::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +impl core::ops::drop::Drop for vortex_array::ExecutionCtx -pub fn vortex_array::arrays::Shared::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::ExecutionCtx::drop(&mut self) -pub fn vortex_array::arrays::Shared::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub struct vortex_array::ExecutionResult -pub fn vortex_array::arrays::Shared::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +impl vortex_array::ExecutionResult -pub fn vortex_array::arrays::Shared::dtype(array: &vortex_array::arrays::SharedArray) -> &vortex_array::dtype::DType +pub fn vortex_array::ExecutionResult::array(&self) -> &vortex_array::ArrayRef -pub fn vortex_array::arrays::Shared::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::ExecutionResult::done(result: impl vortex_array::IntoArray) -> Self -pub fn vortex_array::arrays::Shared::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::ExecutionResult::execute_slot(array: impl vortex_array::IntoArray, slot_idx: usize) -> Self -pub fn vortex_array::arrays::Shared::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::ExecutionResult::into_parts(self) -> (vortex_array::ArrayRef, vortex_array::ExecutionStep) -pub fn vortex_array::arrays::Shared::len(array: &vortex_array::arrays::SharedArray) -> usize +pub fn vortex_array::ExecutionResult::step(&self) -> &vortex_array::ExecutionStep -pub fn vortex_array::arrays::Shared::metadata(_array: &Self::Array) -> vortex_error::VortexResult +impl core::fmt::Debug for vortex_array::ExecutionResult -pub fn vortex_array::arrays::Shared::nbuffers(_array: &Self::Array) -> usize +pub fn vortex_array::ExecutionResult::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::Shared::nchildren(array: &Self::Array) -> usize +pub struct vortex_array::MaskFuture -pub fn vortex_array::arrays::Shared::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +impl vortex_array::MaskFuture -pub fn vortex_array::arrays::Shared::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::MaskFuture::inspect(self, f: impl core::ops::function::FnOnce(&vortex_error::SharedVortexResult) + 'static + core::marker::Send + core::marker::Sync) -> Self -pub fn vortex_array::arrays::Shared::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::MaskFuture::is_empty(&self) -> bool -pub fn vortex_array::arrays::Shared::slot_name(_array: &vortex_array::arrays::SharedArray, idx: usize) -> alloc::string::String +pub fn vortex_array::MaskFuture::len(&self) -> usize -pub fn vortex_array::arrays::Shared::slots(array: &vortex_array::arrays::SharedArray) -> &[core::option::Option] +pub fn vortex_array::MaskFuture::new(len: usize, fut: F) -> Self where F: core::future::future::Future> + core::marker::Send + 'static -pub fn vortex_array::arrays::Shared::stats(array: &vortex_array::arrays::SharedArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::MaskFuture::new_true(row_count: usize) -> Self -pub fn vortex_array::arrays::Shared::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::MaskFuture::ready(mask: vortex_mask::Mask) -> Self -pub fn vortex_array::arrays::Shared::with_slots(array: &mut Self::Array, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::MaskFuture::slice(&self, range: core::ops::range::Range) -> Self -impl vortex_array::vtable::VTable for vortex_array::arrays::Struct +impl core::clone::Clone for vortex_array::MaskFuture -pub type vortex_array::arrays::Struct::Array = vortex_array::arrays::StructArray +pub fn vortex_array::MaskFuture::clone(&self) -> vortex_array::MaskFuture -pub type vortex_array::arrays::Struct::Metadata = vortex_array::EmptyMetadata +impl core::future::future::Future for vortex_array::MaskFuture -pub type vortex_array::arrays::Struct::OperationsVTable = vortex_array::arrays::Struct +pub type vortex_array::MaskFuture::Output = core::result::Result -pub type vortex_array::arrays::Struct::ValidityVTable = vortex_array::arrays::Struct +pub fn vortex_array::MaskFuture::poll(self: core::pin::Pin<&mut Self>, cx: &mut core::task::wake::Context<'_>) -> core::task::poll::Poll -pub fn vortex_array::arrays::Struct::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub struct vortex_array::NotSupported -pub fn vortex_array::arrays::Struct::array_eq(array: &vortex_array::arrays::StructArray, other: &vortex_array::arrays::StructArray, precision: vortex_array::Precision) -> bool +impl vortex_array::OperationsVTable for vortex_array::NotSupported -pub fn vortex_array::arrays::Struct::array_hash(array: &vortex_array::arrays::StructArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::NotSupported::scalar_at(array: vortex_array::ArrayView<'_, V>, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Struct::buffer(_array: &vortex_array::arrays::StructArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub struct vortex_array::ProstMetadata(pub M) -pub fn vortex_array::arrays::Struct::buffer_name(_array: &vortex_array::arrays::StructArray, idx: usize) -> core::option::Option +impl core::fmt::Debug for vortex_array::ProstMetadata -pub fn vortex_array::arrays::Struct::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::ProstMetadata::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::Struct::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +impl core::ops::deref::Deref for vortex_array::ProstMetadata -pub fn vortex_array::arrays::Struct::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub type vortex_array::ProstMetadata::Target = M -pub fn vortex_array::arrays::Struct::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::ProstMetadata::deref(&self) -> &Self::Target -pub fn vortex_array::arrays::Struct::dtype(array: &vortex_array::arrays::StructArray) -> &vortex_array::dtype::DType +impl vortex_array::DeserializeMetadata for vortex_array::ProstMetadata where M: core::fmt::Debug + prost::message::Message + core::default::Default -pub fn vortex_array::arrays::Struct::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub type vortex_array::ProstMetadata::Output = M -pub fn vortex_array::arrays::Struct::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::ProstMetadata::deserialize(metadata: &[u8]) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Struct::id(&self) -> vortex_array::vtable::ArrayId +impl vortex_array::SerializeMetadata for vortex_array::ProstMetadata where M: prost::message::Message -pub fn vortex_array::arrays::Struct::len(array: &vortex_array::arrays::StructArray) -> usize +pub fn vortex_array::ProstMetadata::serialize(self) -> alloc::vec::Vec -pub fn vortex_array::arrays::Struct::metadata(_array: &vortex_array::arrays::StructArray) -> vortex_error::VortexResult +pub struct vortex_array::RawMetadata(pub alloc::vec::Vec) -pub fn vortex_array::arrays::Struct::nbuffers(_array: &vortex_array::arrays::StructArray) -> usize +impl core::fmt::Debug for vortex_array::RawMetadata -pub fn vortex_array::arrays::Struct::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::RawMetadata::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn vortex_array::arrays::Struct::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +impl vortex_array::DeserializeMetadata for vortex_array::RawMetadata -pub fn vortex_array::arrays::Struct::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub type vortex_array::RawMetadata::Output = alloc::vec::Vec -pub fn vortex_array::arrays::Struct::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::RawMetadata::deserialize(metadata: &[u8]) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Struct::slot_name(array: &vortex_array::arrays::StructArray, idx: usize) -> alloc::string::String +impl vortex_array::SerializeMetadata for vortex_array::RawMetadata -pub fn vortex_array::arrays::Struct::slots(array: &vortex_array::arrays::StructArray) -> &[core::option::Option] +pub fn vortex_array::RawMetadata::serialize(self) -> alloc::vec::Vec -pub fn vortex_array::arrays::Struct::stats(array: &vortex_array::arrays::StructArray) -> vortex_array::stats::StatsSetRef<'_> +pub struct vortex_array::RecursiveCanonical(pub vortex_array::Canonical) -pub fn vortex_array::arrays::Struct::vtable(_array: &Self::Array) -> &Self +impl vortex_array::Executable for vortex_array::RecursiveCanonical -pub fn vortex_array::arrays::Struct::with_slots(array: &mut vortex_array::arrays::StructArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::RecursiveCanonical::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::vtable::VTable for vortex_array::arrays::VarBin +pub struct vortex_array::ValidityVTableFromChild -pub type vortex_array::arrays::VarBin::Array = vortex_array::arrays::VarBinArray +impl vortex_array::ValidityVTable for vortex_array::ValidityVTableFromChild where V: vortex_array::ValidityChild + vortex_array::VTable -pub type vortex_array::arrays::VarBin::Metadata = vortex_array::ProstMetadata +pub fn vortex_array::ValidityVTableFromChild::validity(array: vortex_array::ArrayView<'_, V>) -> vortex_error::VortexResult -pub type vortex_array::arrays::VarBin::OperationsVTable = vortex_array::arrays::VarBin +pub struct vortex_array::ValidityVTableFromChildSliceHelper -pub type vortex_array::arrays::VarBin::ValidityVTable = vortex_array::arrays::VarBin +impl vortex_array::ValidityVTable for vortex_array::ValidityVTableFromChildSliceHelper where ::ArrayData: vortex_array::ValidityChildSliceHelper -pub fn vortex_array::arrays::VarBin::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::ValidityVTableFromChildSliceHelper::validity(array: vortex_array::ArrayView<'_, V>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBin::array_eq(array: &vortex_array::arrays::VarBinArray, other: &vortex_array::arrays::VarBinArray, precision: vortex_array::Precision) -> bool +pub struct vortex_array::ValidityVTableFromValidityHelper -pub fn vortex_array::arrays::VarBin::array_hash(array: &vortex_array::arrays::VarBinArray, state: &mut H, precision: vortex_array::Precision) +impl vortex_array::ValidityVTable for vortex_array::ValidityVTableFromValidityHelper where ::ArrayData: vortex_array::ValidityHelper -pub fn vortex_array::arrays::VarBin::buffer(array: &vortex_array::arrays::VarBinArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::ValidityVTableFromValidityHelper::validity(array: vortex_array::ArrayView<'_, V>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBin::buffer_name(_array: &vortex_array::arrays::VarBinArray, idx: usize) -> core::option::Option +pub struct vortex_array::ValidityVTableFromValiditySliceHelper -pub fn vortex_array::arrays::VarBin::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +impl vortex_array::ValidityVTable for vortex_array::ValidityVTableFromValiditySliceHelper where ::ArrayData: vortex_array::ValiditySliceHelper -pub fn vortex_array::arrays::VarBin::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::ValidityVTableFromValiditySliceHelper::validity(array: vortex_array::ArrayView<'_, V>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBin::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub static vortex_array::LEGACY_SESSION: std::sync::lazy_lock::LazyLock -pub fn vortex_array::arrays::VarBin::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub trait vortex_array::ArrayEq -pub fn vortex_array::arrays::VarBin::dtype(array: &vortex_array::arrays::VarBinArray) -> &vortex_array::dtype::DType +pub fn vortex_array::ArrayEq::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::VarBin::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::ArrayEq for vortex_array::ArrayRef -pub fn vortex_array::arrays::VarBin::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::ArrayRef::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::VarBin::id(&self) -> vortex_array::vtable::ArrayId +impl vortex_array::ArrayEq for vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::VarBin::len(array: &vortex_array::arrays::VarBinArray) -> usize +pub fn vortex_array::buffer::BufferHandle::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::VarBin::metadata(array: &vortex_array::arrays::VarBinArray) -> vortex_error::VortexResult +impl vortex_array::ArrayEq for vortex_array::patches::Patches -pub fn vortex_array::arrays::VarBin::nbuffers(_array: &vortex_array::arrays::VarBinArray) -> usize +pub fn vortex_array::patches::Patches::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::VarBin::nchildren(array: &Self::Array) -> usize +impl vortex_array::ArrayEq for vortex_array::validity::Validity -pub fn vortex_array::arrays::VarBin::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::validity::Validity::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::VarBin::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +impl vortex_array::ArrayEq for vortex_buffer::bit::buf::BitBuffer -pub fn vortex_array::arrays::VarBin::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_buffer::bit::buf::BitBuffer::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::VarBin::slot_name(_array: &vortex_array::arrays::VarBinArray, idx: usize) -> alloc::string::String +impl vortex_array::ArrayEq for vortex_mask::Mask -pub fn vortex_array::arrays::VarBin::slots(array: &vortex_array::arrays::VarBinArray) -> &[core::option::Option] +pub fn vortex_mask::Mask::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::VarBin::stats(array: &vortex_array::arrays::VarBinArray) -> vortex_array::stats::StatsSetRef<'_> +impl vortex_array::ArrayEq for vortex_buffer::buffer::Buffer -pub fn vortex_array::arrays::VarBin::vtable(_array: &Self::Array) -> &Self +pub fn vortex_buffer::buffer::Buffer::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::VarBin::with_slots(array: &mut vortex_array::arrays::VarBinArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +impl vortex_array::ArrayEq for core::option::Option -impl vortex_array::vtable::VTable for vortex_array::arrays::VarBinView +pub fn core::option::Option::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool -pub type vortex_array::arrays::VarBinView::Array = vortex_array::arrays::VarBinViewArray +pub trait vortex_array::ArrayHash -pub type vortex_array::arrays::VarBinView::Metadata = vortex_array::EmptyMetadata +pub fn vortex_array::ArrayHash::array_hash(&self, state: &mut H, precision: vortex_array::Precision) -pub type vortex_array::arrays::VarBinView::OperationsVTable = vortex_array::arrays::VarBinView +impl vortex_array::ArrayHash for vortex_array::ArrayRef -pub type vortex_array::arrays::VarBinView::ValidityVTable = vortex_array::arrays::VarBinView +pub fn vortex_array::ArrayRef::array_hash(&self, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::VarBinView::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +impl vortex_array::ArrayHash for vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::VarBinView::array_eq(array: &vortex_array::arrays::VarBinViewArray, other: &vortex_array::arrays::VarBinViewArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::buffer::BufferHandle::array_hash(&self, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::VarBinView::array_hash(array: &vortex_array::arrays::VarBinViewArray, state: &mut H, precision: vortex_array::Precision) +impl vortex_array::ArrayHash for vortex_array::patches::Patches -pub fn vortex_array::arrays::VarBinView::buffer(array: &vortex_array::arrays::VarBinViewArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::patches::Patches::array_hash(&self, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::VarBinView::buffer_name(array: &vortex_array::arrays::VarBinViewArray, idx: usize) -> core::option::Option +impl vortex_array::ArrayHash for vortex_array::validity::Validity -pub fn vortex_array::arrays::VarBinView::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::validity::Validity::array_hash(&self, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::VarBinView::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +impl vortex_array::ArrayHash for vortex_buffer::bit::buf::BitBuffer -pub fn vortex_array::arrays::VarBinView::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_buffer::bit::buf::BitBuffer::array_hash(&self, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::VarBinView::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +impl vortex_array::ArrayHash for vortex_mask::Mask -pub fn vortex_array::arrays::VarBinView::dtype(array: &vortex_array::arrays::VarBinViewArray) -> &vortex_array::dtype::DType +pub fn vortex_mask::Mask::array_hash(&self, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::VarBinView::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::ArrayHash for vortex_buffer::buffer::Buffer -pub fn vortex_array::arrays::VarBinView::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_buffer::buffer::Buffer::array_hash(&self, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::VarBinView::id(&self) -> vortex_array::vtable::ArrayId +impl vortex_array::ArrayHash for core::option::Option -pub fn vortex_array::arrays::VarBinView::len(array: &vortex_array::arrays::VarBinViewArray) -> usize +pub fn core::option::Option::array_hash(&self, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::VarBinView::metadata(_array: &vortex_array::arrays::VarBinViewArray) -> vortex_error::VortexResult +pub trait vortex_array::ArrayVTable: 'static + core::clone::Clone + core::marker::Sized + core::marker::Send + core::marker::Sync + core::fmt::Debug -pub fn vortex_array::arrays::VarBinView::nbuffers(array: &vortex_array::arrays::VarBinViewArray) -> usize +pub type vortex_array::ArrayVTable::ArrayData: 'static + core::marker::Send + core::marker::Sync + core::clone::Clone + core::fmt::Debug + vortex_array::IntoArray -pub fn vortex_array::arrays::VarBinView::nchildren(array: &Self::Array) -> usize +pub type vortex_array::ArrayVTable::Metadata: core::fmt::Debug -pub fn vortex_array::arrays::VarBinView::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub type vortex_array::ArrayVTable::OperationsVTable: vortex_array::OperationsVTable -pub fn vortex_array::arrays::VarBinView::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub type vortex_array::ArrayVTable::ValidityVTable: vortex_array::ValidityVTable -pub fn vortex_array::arrays::VarBinView::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::ArrayVTable::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::VarBinView::slot_name(_array: &vortex_array::arrays::VarBinViewArray, idx: usize) -> alloc::string::String +pub fn vortex_array::ArrayVTable::array_eq(array: &Self::ArrayData, other: &Self::ArrayData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::VarBinView::slots(array: &vortex_array::arrays::VarBinViewArray) -> &[core::option::Option] +pub fn vortex_array::ArrayVTable::array_hash(array: &Self::ArrayData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::VarBinView::stats(array: &vortex_array::arrays::VarBinViewArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::ArrayVTable::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::VarBinView::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::ArrayVTable::buffer_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::VarBinView::with_slots(array: &mut vortex_array::arrays::VarBinViewArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::ArrayVTable::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -impl vortex_array::vtable::VTable for vortex_array::arrays::Variant +pub fn vortex_array::ArrayVTable::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub type vortex_array::arrays::Variant::Array = vortex_array::arrays::variant::VariantArray +pub fn vortex_array::ArrayVTable::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub type vortex_array::arrays::Variant::Metadata = vortex_array::EmptyMetadata +pub fn vortex_array::ArrayVTable::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::arrays::Variant::OperationsVTable = vortex_array::arrays::Variant +pub fn vortex_array::ArrayVTable::dtype(array: &Self::ArrayData) -> &vortex_array::dtype::DType -pub type vortex_array::arrays::Variant::ValidityVTable = vortex_array::arrays::Variant +pub fn vortex_array::ArrayVTable::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Variant::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::ArrayVTable::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Variant::array_eq(array: &Self::Array, other: &Self::Array, precision: vortex_array::Precision) -> bool +pub fn vortex_array::ArrayVTable::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Variant::array_hash(array: &Self::Array, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::ArrayVTable::len(array: &Self::ArrayData) -> usize -pub fn vortex_array::arrays::Variant::buffer(_array: &Self::Array, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::ArrayVTable::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Variant::buffer_name(_array: &Self::Array, _idx: usize) -> core::option::Option +pub fn vortex_array::ArrayVTable::nbuffers(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Variant::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::ArrayVTable::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Variant::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::ArrayVTable::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Variant::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::ArrayVTable::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Variant::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::ArrayVTable::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Variant::dtype(array: &Self::Array) -> &vortex_array::dtype::DType +pub fn vortex_array::ArrayVTable::slot_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Variant::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::ArrayVTable::slots<'a>(array: vortex_array::ArrayView<'a, Self>) -> &'a [core::option::Option] -pub fn vortex_array::arrays::Variant::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::ArrayVTable::stats(array: &Self::ArrayData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Variant::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::ArrayVTable::vtable(array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::Variant::len(array: &Self::Array) -> usize +pub fn vortex_array::ArrayVTable::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Variant::metadata(_array: &Self::Array) -> vortex_error::VortexResult +impl vortex_array::VTable for vortex_array::arrays::Bool -pub fn vortex_array::arrays::Variant::nbuffers(_array: &Self::Array) -> usize +pub type vortex_array::arrays::Bool::ArrayData = vortex_array::arrays::bool::BoolData -pub fn vortex_array::arrays::Variant::nchildren(array: &Self::Array) -> usize +pub type vortex_array::arrays::Bool::Metadata = vortex_array::ProstMetadata -pub fn vortex_array::arrays::Variant::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Bool::OperationsVTable = vortex_array::arrays::Bool -pub fn vortex_array::arrays::Variant::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Bool::ValidityVTable = vortex_array::arrays::Bool -pub fn vortex_array::arrays::Variant::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Bool::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Variant::slot_name(_array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Bool::array_eq(array: &vortex_array::arrays::bool::BoolData, other: &vortex_array::arrays::bool::BoolData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::Variant::slots(array: &Self::Array) -> &[core::option::Option] +pub fn vortex_array::arrays::Bool::array_hash(array: &vortex_array::arrays::bool::BoolData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::Variant::stats(array: &Self::Array) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::Bool::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Variant::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::Bool::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Variant::with_slots(array: &mut Self::Array, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Bool::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -impl vortex_array::vtable::VTable for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::Bool::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub type vortex_array::arrays::dict::Dict::Array = vortex_array::arrays::dict::DictArray +pub fn vortex_array::arrays::Bool::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub type vortex_array::arrays::dict::Dict::Metadata = vortex_array::ProstMetadata +pub fn vortex_array::arrays::Bool::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::arrays::dict::Dict::OperationsVTable = vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::Bool::dtype(array: &vortex_array::arrays::bool::BoolData) -> &vortex_array::dtype::DType -pub type vortex_array::arrays::dict::Dict::ValidityVTable = vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::Bool::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::dict::Dict::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Bool::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::Dict::array_eq(array: &vortex_array::arrays::dict::DictArray, other: &vortex_array::arrays::dict::DictArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Bool::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::dict::Dict::array_hash(array: &vortex_array::arrays::dict::DictArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Bool::len(array: &vortex_array::arrays::bool::BoolData) -> usize -pub fn vortex_array::arrays::dict::Dict::buffer(_array: &vortex_array::arrays::dict::DictArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Bool::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::dict::Dict::buffer_name(_array: &vortex_array::arrays::dict::DictArray, _idx: usize) -> core::option::Option +pub fn vortex_array::arrays::Bool::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::dict::Dict::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Bool::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::dict::Dict::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Bool::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::Dict::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Bool::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::dict::Dict::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Bool::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::dict::Dict::dtype(array: &vortex_array::arrays::dict::DictArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::Bool::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::dict::Dict::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Bool::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::dict::Dict::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Bool::stats(array: &vortex_array::arrays::bool::BoolData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::dict::Dict::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::Bool::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::dict::Dict::len(array: &vortex_array::arrays::dict::DictArray) -> usize +pub fn vortex_array::arrays::Bool::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::dict::Dict::metadata(array: &vortex_array::arrays::dict::DictArray) -> vortex_error::VortexResult +impl vortex_array::VTable for vortex_array::arrays::Chunked -pub fn vortex_array::arrays::dict::Dict::nbuffers(_array: &vortex_array::arrays::dict::DictArray) -> usize +pub type vortex_array::arrays::Chunked::ArrayData = vortex_array::arrays::chunked::ChunkedData -pub fn vortex_array::arrays::dict::Dict::nchildren(array: &Self::Array) -> usize +pub type vortex_array::arrays::Chunked::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::arrays::dict::Dict::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Chunked::OperationsVTable = vortex_array::arrays::Chunked -pub fn vortex_array::arrays::dict::Dict::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Chunked::ValidityVTable = vortex_array::arrays::Chunked -pub fn vortex_array::arrays::dict::Dict::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Chunked::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::dict::Dict::slot_name(_array: &vortex_array::arrays::dict::DictArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Chunked::array_eq(array: &vortex_array::arrays::chunked::ChunkedData, other: &vortex_array::arrays::chunked::ChunkedData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::dict::Dict::slots(array: &vortex_array::arrays::dict::DictArray) -> &[core::option::Option] +pub fn vortex_array::arrays::Chunked::array_hash(array: &vortex_array::arrays::chunked::ChunkedData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::dict::Dict::stats(array: &vortex_array::arrays::dict::DictArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::Chunked::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::dict::Dict::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::Chunked::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::dict::Dict::with_slots(array: &mut vortex_array::arrays::dict::DictArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Chunked::build(dtype: &vortex_array::dtype::DType, _len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -impl vortex_array::vtable::VTable for vortex_array::arrays::null::Null +pub fn vortex_array::arrays::Chunked::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub type vortex_array::arrays::null::Null::Array = vortex_array::arrays::null::NullArray +pub fn vortex_array::arrays::Chunked::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub type vortex_array::arrays::null::Null::Metadata = vortex_array::EmptyMetadata +pub fn vortex_array::arrays::Chunked::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::arrays::null::Null::OperationsVTable = vortex_array::arrays::null::Null +pub fn vortex_array::arrays::Chunked::dtype(array: &vortex_array::arrays::chunked::ChunkedData) -> &vortex_array::dtype::DType -pub type vortex_array::arrays::null::Null::ValidityVTable = vortex_array::arrays::null::Null +pub fn vortex_array::arrays::Chunked::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::null::Null::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Chunked::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::null::Null::array_eq(array: &vortex_array::arrays::null::NullArray, other: &vortex_array::arrays::null::NullArray, _precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Chunked::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::null::Null::array_hash(array: &vortex_array::arrays::null::NullArray, state: &mut H, _precision: vortex_array::Precision) +pub fn vortex_array::arrays::Chunked::len(array: &vortex_array::arrays::chunked::ChunkedData) -> usize -pub fn vortex_array::arrays::null::Null::buffer(_array: &vortex_array::arrays::null::NullArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Chunked::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::null::Null::buffer_name(_array: &vortex_array::arrays::null::NullArray, _idx: usize) -> core::option::Option +pub fn vortex_array::arrays::Chunked::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::null::Null::build(_dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], _children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Chunked::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::null::Null::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Chunked::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::null::Null::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Chunked::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::null::Null::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Chunked::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::null::Null::dtype(_array: &vortex_array::arrays::null::NullArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::Chunked::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::null::Null::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Chunked::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::null::Null::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Chunked::stats(array: &vortex_array::arrays::chunked::ChunkedData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::null::Null::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::Chunked::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::null::Null::len(array: &vortex_array::arrays::null::NullArray) -> usize +pub fn vortex_array::arrays::Chunked::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::null::Null::metadata(_array: &vortex_array::arrays::null::NullArray) -> vortex_error::VortexResult +impl vortex_array::VTable for vortex_array::arrays::Constant -pub fn vortex_array::arrays::null::Null::nbuffers(_array: &vortex_array::arrays::null::NullArray) -> usize +pub type vortex_array::arrays::Constant::ArrayData = vortex_array::arrays::constant::ConstantData -pub fn vortex_array::arrays::null::Null::nchildren(array: &Self::Array) -> usize +pub type vortex_array::arrays::Constant::Metadata = vortex_array::scalar::Scalar -pub fn vortex_array::arrays::null::Null::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Constant::OperationsVTable = vortex_array::arrays::Constant -pub fn vortex_array::arrays::null::Null::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Constant::ValidityVTable = vortex_array::arrays::Constant -pub fn vortex_array::arrays::null::Null::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Constant::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::null::Null::slot_name(_array: &vortex_array::arrays::null::NullArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Constant::array_eq(array: &vortex_array::arrays::constant::ConstantData, other: &vortex_array::arrays::constant::ConstantData, _precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::null::Null::slots(array: &vortex_array::arrays::null::NullArray) -> &[core::option::Option] +pub fn vortex_array::arrays::Constant::array_hash(array: &vortex_array::arrays::constant::ConstantData, state: &mut H, _precision: vortex_array::Precision) -pub fn vortex_array::arrays::null::Null::stats(array: &vortex_array::arrays::null::NullArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::Constant::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::null::Null::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::Constant::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::null::Null::with_slots(array: &mut vortex_array::arrays::null::NullArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Constant::build(_dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], _children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -impl vortex_array::vtable::VTable for vortex_array::arrays::patched::Patched +pub fn vortex_array::arrays::Constant::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub type vortex_array::arrays::patched::Patched::Array = vortex_array::arrays::patched::PatchedArray +pub fn vortex_array::arrays::Constant::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub type vortex_array::arrays::patched::Patched::Metadata = vortex_array::ProstMetadata +pub fn vortex_array::arrays::Constant::deserialize(_bytes: &[u8], dtype: &vortex_array::dtype::DType, _len: usize, buffers: &[vortex_array::buffer::BufferHandle], session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::arrays::patched::Patched::OperationsVTable = vortex_array::arrays::patched::Patched +pub fn vortex_array::arrays::Constant::dtype(array: &vortex_array::arrays::constant::ConstantData) -> &vortex_array::dtype::DType -pub type vortex_array::arrays::patched::Patched::ValidityVTable = vortex_array::vtable::ValidityVTableFromChild +pub fn vortex_array::arrays::Constant::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::patched::Patched::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Constant::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::patched::Patched::array_eq(array: &Self::Array, other: &Self::Array, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Constant::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::patched::Patched::array_hash(array: &Self::Array, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Constant::len(array: &vortex_array::arrays::constant::ConstantData) -> usize -pub fn vortex_array::arrays::patched::Patched::buffer(_array: &Self::Array, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Constant::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::patched::Patched::buffer_name(_array: &Self::Array, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::Constant::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::patched::Patched::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Constant::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::patched::Patched::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Constant::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::patched::Patched::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Constant::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::patched::Patched::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Constant::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::patched::Patched::dtype(array: &Self::Array) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::Constant::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::patched::Patched::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Constant::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::patched::Patched::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Constant::stats(array: &vortex_array::arrays::constant::ConstantData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::patched::Patched::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::Constant::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::patched::Patched::len(array: &Self::Array) -> usize +pub fn vortex_array::arrays::Constant::with_slots(_array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::patched::Patched::metadata(array: &Self::Array) -> vortex_error::VortexResult +impl vortex_array::VTable for vortex_array::arrays::Decimal -pub fn vortex_array::arrays::patched::Patched::nbuffers(_array: &Self::Array) -> usize +pub type vortex_array::arrays::Decimal::ArrayData = vortex_array::arrays::decimal::DecimalData -pub fn vortex_array::arrays::patched::Patched::nchildren(array: &Self::Array) -> usize +pub type vortex_array::arrays::Decimal::Metadata = vortex_array::ProstMetadata -pub fn vortex_array::arrays::patched::Patched::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Decimal::OperationsVTable = vortex_array::arrays::Decimal -pub fn vortex_array::arrays::patched::Patched::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Decimal::ValidityVTable = vortex_array::arrays::Decimal -pub fn vortex_array::arrays::patched::Patched::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Decimal::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::patched::Patched::slot_name(_array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Decimal::array_eq(array: &vortex_array::arrays::decimal::DecimalData, other: &vortex_array::arrays::decimal::DecimalData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::patched::Patched::slots(array: &Self::Array) -> &[core::option::Option] +pub fn vortex_array::arrays::Decimal::array_hash(array: &vortex_array::arrays::decimal::DecimalData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::patched::Patched::stats(array: &Self::Array) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::Decimal::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::patched::Patched::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::Decimal::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::patched::Patched::with_slots(array: &mut Self::Array, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Decimal::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -impl vortex_array::vtable::VTable for vortex_array::arrays::scalar_fn::ScalarFnVTable +pub fn vortex_array::arrays::Decimal::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::Array = vortex_array::arrays::scalar_fn::ScalarFnArray +pub fn vortex_array::arrays::Decimal::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::Metadata = vortex_array::arrays::scalar_fn::metadata::ScalarFnMetadata +pub fn vortex_array::arrays::Decimal::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::OperationsVTable = vortex_array::arrays::scalar_fn::ScalarFnVTable +pub fn vortex_array::arrays::Decimal::dtype(array: &vortex_array::arrays::decimal::DecimalData) -> &vortex_array::dtype::DType -pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::ValidityVTable = vortex_array::arrays::scalar_fn::ScalarFnVTable +pub fn vortex_array::arrays::Decimal::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Decimal::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::array_eq(array: &vortex_array::arrays::scalar_fn::ScalarFnArray, other: &vortex_array::arrays::scalar_fn::ScalarFnArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Decimal::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::array_hash(array: &vortex_array::arrays::scalar_fn::ScalarFnArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Decimal::len(array: &vortex_array::arrays::decimal::DecimalData) -> usize -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::buffer(_array: &vortex_array::arrays::scalar_fn::ScalarFnArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Decimal::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::buffer_name(_array: &vortex_array::arrays::scalar_fn::ScalarFnArray, _idx: usize) -> core::option::Option +pub fn vortex_array::arrays::Decimal::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::scalar_fn::metadata::ScalarFnMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Decimal::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Decimal::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Decimal::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Decimal::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::dtype(array: &vortex_array::arrays::scalar_fn::ScalarFnArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::Decimal::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Decimal::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Decimal::stats(array: &vortex_array::arrays::decimal::DecimalData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::Decimal::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::len(array: &vortex_array::arrays::scalar_fn::ScalarFnArray) -> usize +pub fn vortex_array::arrays::Decimal::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::metadata(array: &Self::Array) -> vortex_error::VortexResult +impl vortex_array::VTable for vortex_array::arrays::Extension -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::nbuffers(_array: &vortex_array::arrays::scalar_fn::ScalarFnArray) -> usize +pub type vortex_array::arrays::Extension::ArrayData = vortex_array::arrays::extension::ExtensionData -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::nchildren(array: &Self::Array) -> usize +pub type vortex_array::arrays::Extension::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Extension::OperationsVTable = vortex_array::arrays::Extension -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Extension::ValidityVTable = vortex_array::ValidityVTableFromChild -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Extension::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::slot_name(array: &vortex_array::arrays::scalar_fn::ScalarFnArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Extension::array_eq(array: &vortex_array::arrays::extension::ExtensionData, other: &vortex_array::arrays::extension::ExtensionData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::slots(array: &vortex_array::arrays::scalar_fn::ScalarFnArray) -> &[core::option::Option] +pub fn vortex_array::arrays::Extension::array_hash(array: &vortex_array::arrays::extension::ExtensionData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::stats(array: &vortex_array::arrays::scalar_fn::ScalarFnArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::Extension::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::vtable(array: &Self::Array) -> &Self +pub fn vortex_array::arrays::Extension::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::with_slots(array: &mut vortex_array::arrays::scalar_fn::ScalarFnArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Extension::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -impl vortex_array::vtable::VTable for vortex_array::arrays::slice::Slice +pub fn vortex_array::arrays::Extension::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub type vortex_array::arrays::slice::Slice::Array = vortex_array::arrays::slice::SliceArray +pub fn vortex_array::arrays::Extension::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub type vortex_array::arrays::slice::Slice::Metadata = vortex_array::arrays::slice::SliceMetadata +pub fn vortex_array::arrays::Extension::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::arrays::slice::Slice::OperationsVTable = vortex_array::arrays::slice::Slice +pub fn vortex_array::arrays::Extension::dtype(array: &vortex_array::arrays::extension::ExtensionData) -> &vortex_array::dtype::DType -pub type vortex_array::arrays::slice::Slice::ValidityVTable = vortex_array::arrays::slice::Slice +pub fn vortex_array::arrays::Extension::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::slice::Slice::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Extension::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::slice::Slice::array_eq(array: &vortex_array::arrays::slice::SliceArray, other: &vortex_array::arrays::slice::SliceArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Extension::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::slice::Slice::array_hash(array: &vortex_array::arrays::slice::SliceArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Extension::len(array: &vortex_array::arrays::extension::ExtensionData) -> usize -pub fn vortex_array::arrays::slice::Slice::buffer(_array: &Self::Array, _idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Extension::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::slice::Slice::buffer_name(_array: &Self::Array, _idx: usize) -> core::option::Option +pub fn vortex_array::arrays::Extension::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::slice::Slice::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::slice::SliceMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Extension::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::slice::Slice::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Extension::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::slice::Slice::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Extension::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::slice::Slice::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Extension::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::slice::Slice::dtype(array: &vortex_array::arrays::slice::SliceArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::Extension::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::slice::Slice::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Extension::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::slice::Slice::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Extension::stats(array: &vortex_array::arrays::extension::ExtensionData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::slice::Slice::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::Extension::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::slice::Slice::len(array: &vortex_array::arrays::slice::SliceArray) -> usize +pub fn vortex_array::arrays::Extension::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::slice::Slice::metadata(array: &Self::Array) -> vortex_error::VortexResult +impl vortex_array::VTable for vortex_array::arrays::Filter -pub fn vortex_array::arrays::slice::Slice::nbuffers(_array: &Self::Array) -> usize +pub type vortex_array::arrays::Filter::ArrayData = vortex_array::arrays::filter::FilterData -pub fn vortex_array::arrays::slice::Slice::nchildren(array: &Self::Array) -> usize +pub type vortex_array::arrays::Filter::Metadata = vortex_array::arrays::filter::vtable::FilterMetadata -pub fn vortex_array::arrays::slice::Slice::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Filter::OperationsVTable = vortex_array::arrays::Filter -pub fn vortex_array::arrays::slice::Slice::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub type vortex_array::arrays::Filter::ValidityVTable = vortex_array::arrays::Filter -pub fn vortex_array::arrays::slice::Slice::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Filter::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::slice::Slice::slot_name(_array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Filter::array_eq(array: &vortex_array::arrays::filter::FilterData, other: &vortex_array::arrays::filter::FilterData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::slice::Slice::slots(array: &Self::Array) -> &[core::option::Option] +pub fn vortex_array::arrays::Filter::array_hash(array: &vortex_array::arrays::filter::FilterData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::slice::Slice::stats(array: &vortex_array::arrays::slice::SliceArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::Filter::buffer(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::slice::Slice::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::Filter::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::arrays::slice::Slice::with_slots(array: &mut Self::Array, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Filter::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::filter::vtable::FilterMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub trait vortex_array::vtable::DynVTable: 'static + core::marker::Send + core::marker::Sync + core::fmt::Debug +pub fn vortex_array::arrays::Filter::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::vtable::DynVTable::build(&self, id: vortex_array::vtable::ArrayId, dtype: &vortex_array::dtype::DType, len: usize, metadata: &[u8], buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren, session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Filter::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::vtable::DynVTable::clone_boxed(&self) -> alloc::boxed::Box +pub fn vortex_array::arrays::Filter::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::vtable::DynVTable::execute(&self, array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Filter::dtype(array: &vortex_array::arrays::filter::FilterData) -> &vortex_array::dtype::DType -pub fn vortex_array::vtable::DynVTable::execute_parent(&self, array: &vortex_array::ArrayRef, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::vtable::DynVTable::reduce(&self, array: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::vtable::DynVTable::reduce_parent(&self, array: &vortex_array::ArrayRef, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::vtable::DynVTable::with_slots(&self, array: vortex_array::ArrayRef, slots: alloc::vec::Vec>) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Filter::len(array: &vortex_array::arrays::filter::FilterData) -> usize -impl vortex_array::vtable::DynVTable for V +pub fn vortex_array::arrays::Filter::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn V::build(&self, _id: vortex_array::vtable::ArrayId, dtype: &vortex_array::dtype::DType, len: usize, metadata: &[u8], buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren, session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Filter::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn V::clone_boxed(&self) -> alloc::boxed::Box +pub fn vortex_array::arrays::Filter::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn V::execute(&self, array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Filter::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn V::execute_parent(&self, array: &vortex_array::ArrayRef, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn V::reduce(&self, array: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn V::reduce_parent(&self, array: &vortex_array::ArrayRef, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Filter::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn V::with_slots(&self, array: vortex_array::ArrayRef, slots: alloc::vec::Vec>) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Filter::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub trait vortex_array::vtable::OperationsVTable +pub fn vortex_array::arrays::Filter::stats(array: &vortex_array::arrays::filter::FilterData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::vtable::OperationsVTable::scalar_at(array: &::Array, index: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Filter::vtable(_array: &vortex_array::arrays::filter::FilterData) -> &Self -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Bool +pub fn vortex_array::arrays::Filter::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Bool::scalar_at(array: &vortex_array::arrays::BoolArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::VTable for vortex_array::arrays::FixedSizeList -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Chunked +pub type vortex_array::arrays::FixedSizeList::ArrayData = vortex_array::arrays::fixed_size_list::FixedSizeListData -pub fn vortex_array::arrays::Chunked::scalar_at(array: &vortex_array::arrays::ChunkedArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub type vortex_array::arrays::FixedSizeList::Metadata = vortex_array::EmptyMetadata -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Constant +pub type vortex_array::arrays::FixedSizeList::OperationsVTable = vortex_array::arrays::FixedSizeList -pub fn vortex_array::arrays::Constant::scalar_at(array: &vortex_array::arrays::ConstantArray, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub type vortex_array::arrays::FixedSizeList::ValidityVTable = vortex_array::arrays::FixedSizeList -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Decimal +pub fn vortex_array::arrays::FixedSizeList::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Decimal::scalar_at(array: &vortex_array::arrays::DecimalArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::array_eq(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData, other: &vortex_array::arrays::fixed_size_list::FixedSizeListData, precision: vortex_array::Precision) -> bool -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Extension +pub fn vortex_array::arrays::FixedSizeList::array_hash(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::Extension::scalar_at(array: &vortex_array::arrays::ExtensionArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Filter +pub fn vortex_array::arrays::FixedSizeList::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Filter::scalar_at(array: &vortex_array::arrays::FilterArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::FixedSizeList +pub fn vortex_array::arrays::FixedSizeList::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::FixedSizeList::scalar_at(array: &vortex_array::arrays::FixedSizeListArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::List +pub fn vortex_array::arrays::FixedSizeList::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::List::scalar_at(array: &vortex_array::arrays::ListArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::dtype(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData) -> &vortex_array::dtype::DType -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::ListView +pub fn vortex_array::arrays::FixedSizeList::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListView::scalar_at(array: &vortex_array::arrays::ListViewArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Masked +pub fn vortex_array::arrays::FixedSizeList::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Masked::scalar_at(array: &vortex_array::arrays::MaskedArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::len(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData) -> usize -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Primitive +pub fn vortex_array::arrays::FixedSizeList::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Primitive::scalar_at(array: &vortex_array::arrays::PrimitiveArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Shared +pub fn vortex_array::arrays::FixedSizeList::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Shared::scalar_at(array: &vortex_array::arrays::SharedArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Struct +pub fn vortex_array::arrays::FixedSizeList::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Struct::scalar_at(array: &vortex_array::arrays::StructArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::VarBin +pub fn vortex_array::arrays::FixedSizeList::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::VarBin::scalar_at(array: &vortex_array::arrays::VarBinArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::VarBinView +pub fn vortex_array::arrays::FixedSizeList::stats(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::VarBinView::scalar_at(array: &vortex_array::arrays::VarBinViewArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::vtable(_array: &vortex_array::arrays::fixed_size_list::FixedSizeListData) -> &Self -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Variant +pub fn vortex_array::arrays::FixedSizeList::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Variant::scalar_at(array: &::Array, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::VTable for vortex_array::arrays::List -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::dict::Dict +pub type vortex_array::arrays::List::ArrayData = vortex_array::arrays::list::ListData -pub fn vortex_array::arrays::dict::Dict::scalar_at(array: &vortex_array::arrays::dict::DictArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub type vortex_array::arrays::List::Metadata = vortex_array::ProstMetadata -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::null::Null +pub type vortex_array::arrays::List::OperationsVTable = vortex_array::arrays::List -pub fn vortex_array::arrays::null::Null::scalar_at(_array: &vortex_array::arrays::null::NullArray, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub type vortex_array::arrays::List::ValidityVTable = vortex_array::arrays::List -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::patched::Patched +pub fn vortex_array::arrays::List::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::patched::Patched::scalar_at(array: &vortex_array::arrays::patched::PatchedArray, index: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::array_eq(array: &vortex_array::arrays::list::ListData, other: &vortex_array::arrays::list::ListData, precision: vortex_array::Precision) -> bool -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::scalar_fn::ScalarFnVTable +pub fn vortex_array::arrays::List::array_hash(array: &vortex_array::arrays::list::ListData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::scalar_at(array: &vortex_array::arrays::scalar_fn::ScalarFnArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::slice::Slice +pub fn vortex_array::arrays::List::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::slice::Slice::scalar_at(array: &vortex_array::arrays::slice::SliceArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -impl vortex_array::vtable::OperationsVTable for vortex_array::vtable::NotSupported +pub fn vortex_array::arrays::List::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::vtable::NotSupported::scalar_at(array: &::Array, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub trait vortex_array::vtable::VTable: 'static + core::clone::Clone + core::marker::Sized + core::marker::Send + core::marker::Sync + core::fmt::Debug +pub fn vortex_array::arrays::List::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::vtable::VTable::Array: 'static + core::marker::Send + core::marker::Sync + core::clone::Clone + core::fmt::Debug + core::ops::deref::Deref + vortex_array::IntoArray +pub fn vortex_array::arrays::List::dtype(array: &vortex_array::arrays::list::ListData) -> &vortex_array::dtype::DType -pub type vortex_array::vtable::VTable::Metadata: core::fmt::Debug +pub fn vortex_array::arrays::List::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::vtable::VTable::OperationsVTable: vortex_array::vtable::OperationsVTable +pub fn vortex_array::arrays::List::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub type vortex_array::vtable::VTable::ValidityVTable: vortex_array::vtable::ValidityVTable +pub fn vortex_array::arrays::List::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::vtable::VTable::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::List::len(array: &vortex_array::arrays::list::ListData) -> usize -pub fn vortex_array::vtable::VTable::array_eq(array: &Self::Array, other: &Self::Array, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::List::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::vtable::VTable::array_hash(array: &Self::Array, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::List::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::vtable::VTable::buffer(array: &Self::Array, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::List::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::vtable::VTable::buffer_name(array: &Self::Array, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::List::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::vtable::VTable::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::vtable::VTable::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::List::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::vtable::VTable::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::List::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::vtable::VTable::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::vtable::VTable::dtype(array: &Self::Array) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::List::stats(array: &vortex_array::arrays::list::ListData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::vtable::VTable::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::vtable(_array: &vortex_array::arrays::list::ListData) -> &Self -pub fn vortex_array::vtable::VTable::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::List::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::vtable::VTable::id(&self) -> vortex_array::vtable::ArrayId +impl vortex_array::VTable for vortex_array::arrays::ListView -pub fn vortex_array::vtable::VTable::len(array: &Self::Array) -> usize +pub type vortex_array::arrays::ListView::ArrayData = vortex_array::arrays::listview::ListViewData -pub fn vortex_array::vtable::VTable::metadata(array: &Self::Array) -> vortex_error::VortexResult +pub type vortex_array::arrays::ListView::Metadata = vortex_array::ProstMetadata -pub fn vortex_array::vtable::VTable::nbuffers(array: &Self::Array) -> usize +pub type vortex_array::arrays::ListView::OperationsVTable = vortex_array::arrays::ListView -pub fn vortex_array::vtable::VTable::nchildren(array: &Self::Array) -> usize +pub type vortex_array::arrays::ListView::ValidityVTable = vortex_array::arrays::ListView -pub fn vortex_array::vtable::VTable::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::ListView::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::vtable::VTable::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::ListView::array_eq(array: &vortex_array::arrays::listview::ListViewData, other: &vortex_array::arrays::listview::ListViewData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::vtable::VTable::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::ListView::array_hash(array: &vortex_array::arrays::listview::ListViewData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::vtable::VTable::slot_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::ListView::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::vtable::VTable::slots(array: &Self::Array) -> &[core::option::Option] +pub fn vortex_array::arrays::ListView::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::vtable::VTable::stats(array: &Self::Array) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::ListView::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::vtable::VTable::vtable(array: &Self::Array) -> &Self +pub fn vortex_array::arrays::ListView::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::vtable::VTable::with_slots(array: &mut Self::Array, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::ListView::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::vtable::VTable for vortex_array::arrays::Bool +pub fn vortex_array::arrays::ListView::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::arrays::Bool::Array = vortex_array::arrays::BoolArray +pub fn vortex_array::arrays::ListView::dtype(array: &vortex_array::arrays::listview::ListViewData) -> &vortex_array::dtype::DType -pub type vortex_array::arrays::Bool::Metadata = vortex_array::ProstMetadata +pub fn vortex_array::arrays::ListView::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::arrays::Bool::OperationsVTable = vortex_array::arrays::Bool +pub fn vortex_array::arrays::ListView::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub type vortex_array::arrays::Bool::ValidityVTable = vortex_array::arrays::Bool +pub fn vortex_array::arrays::ListView::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Bool::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::ListView::len(array: &vortex_array::arrays::listview::ListViewData) -> usize -pub fn vortex_array::arrays::Bool::array_eq(array: &vortex_array::arrays::BoolArray, other: &vortex_array::arrays::BoolArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::ListView::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Bool::array_hash(array: &vortex_array::arrays::BoolArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::ListView::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Bool::buffer(array: &vortex_array::arrays::BoolArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::ListView::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Bool::buffer_name(_array: &vortex_array::arrays::BoolArray, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::ListView::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Bool::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ListView::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Bool::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::ListView::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Bool::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::ListView::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Bool::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ListView::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::Bool::dtype(array: &vortex_array::arrays::BoolArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::ListView::stats(array: &vortex_array::arrays::listview::ListViewData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Bool::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ListView::vtable(_array: &vortex_array::arrays::listview::ListViewData) -> &Self -pub fn vortex_array::arrays::Bool::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::ListView::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Bool::id(&self) -> vortex_array::vtable::ArrayId +impl vortex_array::VTable for vortex_array::arrays::Masked -pub fn vortex_array::arrays::Bool::len(array: &vortex_array::arrays::BoolArray) -> usize +pub type vortex_array::arrays::Masked::ArrayData = vortex_array::arrays::masked::MaskedData -pub fn vortex_array::arrays::Bool::metadata(array: &vortex_array::arrays::BoolArray) -> vortex_error::VortexResult +pub type vortex_array::arrays::Masked::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::arrays::Bool::nbuffers(_array: &vortex_array::arrays::BoolArray) -> usize +pub type vortex_array::arrays::Masked::OperationsVTable = vortex_array::arrays::Masked -pub fn vortex_array::arrays::Bool::nchildren(array: &Self::Array) -> usize +pub type vortex_array::arrays::Masked::ValidityVTable = vortex_array::arrays::Masked -pub fn vortex_array::arrays::Bool::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Masked::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Bool::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Masked::array_eq(array: &vortex_array::arrays::masked::MaskedData, other: &vortex_array::arrays::masked::MaskedData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::Bool::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Masked::array_hash(array: &vortex_array::arrays::masked::MaskedData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::Bool::slot_name(_array: &vortex_array::arrays::BoolArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Masked::buffer(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Bool::slots(array: &vortex_array::arrays::BoolArray) -> &[core::option::Option] +pub fn vortex_array::arrays::Masked::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Bool::stats(array: &vortex_array::arrays::BoolArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::Masked::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Bool::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::Masked::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Bool::with_slots(array: &mut vortex_array::arrays::BoolArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Masked::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::vtable::VTable for vortex_array::arrays::Chunked +pub fn vortex_array::arrays::Masked::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::arrays::Chunked::Array = vortex_array::arrays::ChunkedArray +pub fn vortex_array::arrays::Masked::dtype(array: &vortex_array::arrays::masked::MaskedData) -> &vortex_array::dtype::DType -pub type vortex_array::arrays::Chunked::Metadata = vortex_array::EmptyMetadata +pub fn vortex_array::arrays::Masked::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::arrays::Chunked::OperationsVTable = vortex_array::arrays::Chunked +pub fn vortex_array::arrays::Masked::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub type vortex_array::arrays::Chunked::ValidityVTable = vortex_array::arrays::Chunked +pub fn vortex_array::arrays::Masked::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Chunked::append_to_builder(array: &vortex_array::arrays::ChunkedArray, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Masked::len(array: &vortex_array::arrays::masked::MaskedData) -> usize -pub fn vortex_array::arrays::Chunked::array_eq(array: &vortex_array::arrays::ChunkedArray, other: &vortex_array::arrays::ChunkedArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Masked::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Chunked::array_hash(array: &vortex_array::arrays::ChunkedArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Masked::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Chunked::buffer(_array: &vortex_array::arrays::ChunkedArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Masked::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Chunked::buffer_name(_array: &vortex_array::arrays::ChunkedArray, _idx: usize) -> core::option::Option +pub fn vortex_array::arrays::Masked::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Chunked::build(dtype: &vortex_array::dtype::DType, _len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Masked::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Chunked::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Masked::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Chunked::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Masked::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Chunked::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Masked::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::Chunked::dtype(array: &vortex_array::arrays::ChunkedArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::Masked::stats(array: &vortex_array::arrays::masked::MaskedData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Chunked::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Masked::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::Chunked::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Masked::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Chunked::id(&self) -> vortex_array::vtable::ArrayId +impl vortex_array::VTable for vortex_array::arrays::Primitive -pub fn vortex_array::arrays::Chunked::len(array: &vortex_array::arrays::ChunkedArray) -> usize +pub type vortex_array::arrays::Primitive::ArrayData = vortex_array::arrays::primitive::PrimitiveData -pub fn vortex_array::arrays::Chunked::metadata(_array: &vortex_array::arrays::ChunkedArray) -> vortex_error::VortexResult +pub type vortex_array::arrays::Primitive::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::arrays::Chunked::nbuffers(_array: &vortex_array::arrays::ChunkedArray) -> usize +pub type vortex_array::arrays::Primitive::OperationsVTable = vortex_array::arrays::Primitive -pub fn vortex_array::arrays::Chunked::nchildren(array: &Self::Array) -> usize +pub type vortex_array::arrays::Primitive::ValidityVTable = vortex_array::arrays::Primitive -pub fn vortex_array::arrays::Chunked::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Primitive::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Chunked::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Primitive::array_eq(array: &vortex_array::arrays::primitive::PrimitiveData, other: &vortex_array::arrays::primitive::PrimitiveData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::Chunked::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Primitive::array_hash(array: &vortex_array::arrays::primitive::PrimitiveData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::Chunked::slot_name(_array: &vortex_array::arrays::ChunkedArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Primitive::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Chunked::slots(array: &vortex_array::arrays::ChunkedArray) -> &[core::option::Option] +pub fn vortex_array::arrays::Primitive::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Chunked::stats(array: &vortex_array::arrays::ChunkedArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::Primitive::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Chunked::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::Primitive::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Chunked::with_slots(array: &mut vortex_array::arrays::ChunkedArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Primitive::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::vtable::VTable for vortex_array::arrays::Constant +pub fn vortex_array::arrays::Primitive::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::arrays::Constant::Array = vortex_array::arrays::ConstantArray +pub fn vortex_array::arrays::Primitive::dtype(array: &vortex_array::arrays::primitive::PrimitiveData) -> &vortex_array::dtype::DType -pub type vortex_array::arrays::Constant::Metadata = vortex_array::scalar::Scalar +pub fn vortex_array::arrays::Primitive::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::arrays::Constant::OperationsVTable = vortex_array::arrays::Constant +pub fn vortex_array::arrays::Primitive::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub type vortex_array::arrays::Constant::ValidityVTable = vortex_array::arrays::Constant +pub fn vortex_array::arrays::Primitive::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Constant::append_to_builder(array: &vortex_array::arrays::ConstantArray, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Primitive::len(array: &vortex_array::arrays::primitive::PrimitiveData) -> usize -pub fn vortex_array::arrays::Constant::array_eq(array: &vortex_array::arrays::ConstantArray, other: &vortex_array::arrays::ConstantArray, _precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Primitive::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Constant::array_hash(array: &vortex_array::arrays::ConstantArray, state: &mut H, _precision: vortex_array::Precision) +pub fn vortex_array::arrays::Primitive::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Constant::buffer(array: &vortex_array::arrays::ConstantArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Primitive::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Constant::buffer_name(_array: &vortex_array::arrays::ConstantArray, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::Primitive::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Constant::build(_dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], _children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Primitive::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Constant::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Primitive::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Constant::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Primitive::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Constant::deserialize(_bytes: &[u8], dtype: &vortex_array::dtype::DType, _len: usize, buffers: &[vortex_array::buffer::BufferHandle], session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Primitive::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::Constant::dtype(array: &vortex_array::arrays::ConstantArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::Primitive::stats(array: &vortex_array::arrays::primitive::PrimitiveData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Constant::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Primitive::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::Constant::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Primitive::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Constant::id(&self) -> vortex_array::vtable::ArrayId +impl vortex_array::VTable for vortex_array::arrays::Shared -pub fn vortex_array::arrays::Constant::len(array: &vortex_array::arrays::ConstantArray) -> usize +pub type vortex_array::arrays::Shared::ArrayData = vortex_array::arrays::shared::SharedData -pub fn vortex_array::arrays::Constant::metadata(array: &vortex_array::arrays::ConstantArray) -> vortex_error::VortexResult +pub type vortex_array::arrays::Shared::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::arrays::Constant::nbuffers(_array: &vortex_array::arrays::ConstantArray) -> usize +pub type vortex_array::arrays::Shared::OperationsVTable = vortex_array::arrays::Shared -pub fn vortex_array::arrays::Constant::nchildren(array: &Self::Array) -> usize +pub type vortex_array::arrays::Shared::ValidityVTable = vortex_array::arrays::Shared -pub fn vortex_array::arrays::Constant::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Shared::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Constant::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Shared::array_eq(array: &vortex_array::arrays::shared::SharedData, other: &vortex_array::arrays::shared::SharedData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::Constant::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Shared::array_hash(array: &vortex_array::arrays::shared::SharedData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::Constant::slot_name(_array: &vortex_array::arrays::ConstantArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Shared::buffer(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Constant::slots(array: &vortex_array::arrays::ConstantArray) -> &[core::option::Option] +pub fn vortex_array::arrays::Shared::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Constant::stats(array: &vortex_array::arrays::ConstantArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::Shared::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Constant::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::Shared::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Constant::with_slots(array: &mut vortex_array::arrays::ConstantArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Shared::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::vtable::VTable for vortex_array::arrays::Decimal +pub fn vortex_array::arrays::Shared::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::arrays::Decimal::Array = vortex_array::arrays::DecimalArray +pub fn vortex_array::arrays::Shared::dtype(array: &vortex_array::arrays::shared::SharedData) -> &vortex_array::dtype::DType -pub type vortex_array::arrays::Decimal::Metadata = vortex_array::ProstMetadata +pub fn vortex_array::arrays::Shared::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::arrays::Decimal::OperationsVTable = vortex_array::arrays::Decimal +pub fn vortex_array::arrays::Shared::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub type vortex_array::arrays::Decimal::ValidityVTable = vortex_array::arrays::Decimal +pub fn vortex_array::arrays::Shared::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Decimal::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Shared::len(array: &vortex_array::arrays::shared::SharedData) -> usize -pub fn vortex_array::arrays::Decimal::array_eq(array: &vortex_array::arrays::DecimalArray, other: &vortex_array::arrays::DecimalArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Shared::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Decimal::array_hash(array: &vortex_array::arrays::DecimalArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Shared::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Decimal::buffer(array: &vortex_array::arrays::DecimalArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Shared::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Decimal::buffer_name(_array: &vortex_array::arrays::DecimalArray, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::Shared::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Decimal::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Shared::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Decimal::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Shared::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Decimal::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Shared::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Decimal::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Shared::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::Decimal::dtype(array: &vortex_array::arrays::DecimalArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::Shared::stats(array: &vortex_array::arrays::shared::SharedData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Decimal::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Shared::vtable(_array: &vortex_array::arrays::shared::SharedData) -> &Self -pub fn vortex_array::arrays::Decimal::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Shared::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Decimal::id(&self) -> vortex_array::vtable::ArrayId +impl vortex_array::VTable for vortex_array::arrays::Struct -pub fn vortex_array::arrays::Decimal::len(array: &vortex_array::arrays::DecimalArray) -> usize +pub type vortex_array::arrays::Struct::ArrayData = vortex_array::arrays::struct_::StructData -pub fn vortex_array::arrays::Decimal::metadata(array: &vortex_array::arrays::DecimalArray) -> vortex_error::VortexResult +pub type vortex_array::arrays::Struct::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::arrays::Decimal::nbuffers(_array: &vortex_array::arrays::DecimalArray) -> usize +pub type vortex_array::arrays::Struct::OperationsVTable = vortex_array::arrays::Struct -pub fn vortex_array::arrays::Decimal::nchildren(array: &Self::Array) -> usize +pub type vortex_array::arrays::Struct::ValidityVTable = vortex_array::arrays::Struct -pub fn vortex_array::arrays::Decimal::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Decimal::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::array_eq(array: &vortex_array::arrays::struct_::StructData, other: &vortex_array::arrays::struct_::StructData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::Decimal::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Struct::array_hash(array: &vortex_array::arrays::struct_::StructData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::Decimal::slot_name(_array: &vortex_array::arrays::DecimalArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Struct::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Decimal::slots(array: &vortex_array::arrays::DecimalArray) -> &[core::option::Option] +pub fn vortex_array::arrays::Struct::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Decimal::stats(array: &vortex_array::arrays::DecimalArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::Struct::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Decimal::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::Struct::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Decimal::with_slots(array: &mut vortex_array::arrays::DecimalArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Struct::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::vtable::VTable for vortex_array::arrays::Extension +pub fn vortex_array::arrays::Struct::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::arrays::Extension::Array = vortex_array::arrays::ExtensionArray +pub fn vortex_array::arrays::Struct::dtype(array: &vortex_array::arrays::struct_::StructData) -> &vortex_array::dtype::DType -pub type vortex_array::arrays::Extension::Metadata = vortex_array::EmptyMetadata +pub fn vortex_array::arrays::Struct::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::arrays::Extension::OperationsVTable = vortex_array::arrays::Extension +pub fn vortex_array::arrays::Struct::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub type vortex_array::arrays::Extension::ValidityVTable = vortex_array::vtable::ValidityVTableFromChild +pub fn vortex_array::arrays::Struct::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Extension::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Struct::len(array: &vortex_array::arrays::struct_::StructData) -> usize -pub fn vortex_array::arrays::Extension::array_eq(array: &vortex_array::arrays::ExtensionArray, other: &vortex_array::arrays::ExtensionArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Struct::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Extension::array_hash(array: &vortex_array::arrays::ExtensionArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Struct::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Extension::buffer(_array: &vortex_array::arrays::ExtensionArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Struct::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Extension::buffer_name(_array: &vortex_array::arrays::ExtensionArray, _idx: usize) -> core::option::Option +pub fn vortex_array::arrays::Struct::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Extension::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Struct::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Extension::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Struct::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Extension::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Struct::slot_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Extension::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Struct::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::Extension::dtype(array: &vortex_array::arrays::ExtensionArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::Struct::stats(array: &vortex_array::arrays::struct_::StructData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Extension::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Struct::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::Extension::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Struct::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Extension::id(&self) -> vortex_array::vtable::ArrayId +impl vortex_array::VTable for vortex_array::arrays::VarBin -pub fn vortex_array::arrays::Extension::len(array: &vortex_array::arrays::ExtensionArray) -> usize +pub type vortex_array::arrays::VarBin::ArrayData = vortex_array::arrays::varbin::VarBinData -pub fn vortex_array::arrays::Extension::metadata(_array: &vortex_array::arrays::ExtensionArray) -> vortex_error::VortexResult +pub type vortex_array::arrays::VarBin::Metadata = vortex_array::ProstMetadata -pub fn vortex_array::arrays::Extension::nbuffers(_array: &vortex_array::arrays::ExtensionArray) -> usize +pub type vortex_array::arrays::VarBin::OperationsVTable = vortex_array::arrays::VarBin -pub fn vortex_array::arrays::Extension::nchildren(array: &Self::Array) -> usize +pub type vortex_array::arrays::VarBin::ValidityVTable = vortex_array::arrays::VarBin -pub fn vortex_array::arrays::Extension::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Extension::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::array_eq(array: &vortex_array::arrays::varbin::VarBinData, other: &vortex_array::arrays::varbin::VarBinData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::Extension::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::VarBin::array_hash(array: &vortex_array::arrays::varbin::VarBinData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::Extension::slot_name(_array: &vortex_array::arrays::ExtensionArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::VarBin::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Extension::slots(array: &vortex_array::arrays::ExtensionArray) -> &[core::option::Option] +pub fn vortex_array::arrays::VarBin::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Extension::stats(array: &vortex_array::arrays::ExtensionArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::VarBin::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Extension::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::VarBin::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Extension::with_slots(array: &mut Self::Array, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::VarBin::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::vtable::VTable for vortex_array::arrays::Filter +pub fn vortex_array::arrays::VarBin::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::arrays::Filter::Array = vortex_array::arrays::FilterArray +pub fn vortex_array::arrays::VarBin::dtype(array: &vortex_array::arrays::varbin::VarBinData) -> &vortex_array::dtype::DType -pub type vortex_array::arrays::Filter::Metadata = vortex_array::arrays::filter::vtable::FilterMetadata +pub fn vortex_array::arrays::VarBin::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::arrays::Filter::OperationsVTable = vortex_array::arrays::Filter +pub fn vortex_array::arrays::VarBin::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub type vortex_array::arrays::Filter::ValidityVTable = vortex_array::arrays::Filter +pub fn vortex_array::arrays::VarBin::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Filter::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::VarBin::len(array: &vortex_array::arrays::varbin::VarBinData) -> usize -pub fn vortex_array::arrays::Filter::array_eq(array: &vortex_array::arrays::FilterArray, other: &vortex_array::arrays::FilterArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::VarBin::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Filter::array_hash(array: &vortex_array::arrays::FilterArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::VarBin::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Filter::buffer(_array: &Self::Array, _idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::VarBin::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Filter::buffer_name(_array: &Self::Array, _idx: usize) -> core::option::Option +pub fn vortex_array::arrays::VarBin::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Filter::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::filter::vtable::FilterMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBin::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Filter::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::VarBin::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Filter::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::VarBin::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Filter::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBin::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::Filter::dtype(array: &vortex_array::arrays::FilterArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::VarBin::stats(array: &vortex_array::arrays::varbin::VarBinData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Filter::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBin::vtable(_array: &vortex_array::arrays::varbin::VarBinData) -> &Self -pub fn vortex_array::arrays::Filter::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBin::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Filter::id(&self) -> vortex_array::vtable::ArrayId +impl vortex_array::VTable for vortex_array::arrays::VarBinView -pub fn vortex_array::arrays::Filter::len(array: &vortex_array::arrays::FilterArray) -> usize +pub type vortex_array::arrays::VarBinView::ArrayData = vortex_array::arrays::varbinview::VarBinViewData -pub fn vortex_array::arrays::Filter::metadata(array: &Self::Array) -> vortex_error::VortexResult +pub type vortex_array::arrays::VarBinView::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::arrays::Filter::nbuffers(_array: &Self::Array) -> usize +pub type vortex_array::arrays::VarBinView::OperationsVTable = vortex_array::arrays::VarBinView -pub fn vortex_array::arrays::Filter::nchildren(array: &Self::Array) -> usize +pub type vortex_array::arrays::VarBinView::ValidityVTable = vortex_array::arrays::VarBinView -pub fn vortex_array::arrays::Filter::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBinView::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Filter::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBinView::array_eq(array: &vortex_array::arrays::varbinview::VarBinViewData, other: &vortex_array::arrays::varbinview::VarBinViewData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::Filter::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::VarBinView::array_hash(array: &vortex_array::arrays::varbinview::VarBinViewData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::Filter::slot_name(_array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::VarBinView::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Filter::slots(array: &Self::Array) -> &[core::option::Option] +pub fn vortex_array::arrays::VarBinView::buffer_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Filter::stats(array: &vortex_array::arrays::FilterArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::VarBinView::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Filter::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::VarBinView::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Filter::with_slots(array: &mut Self::Array, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::VarBinView::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::vtable::VTable for vortex_array::arrays::FixedSizeList +pub fn vortex_array::arrays::VarBinView::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::arrays::FixedSizeList::Array = vortex_array::arrays::FixedSizeListArray +pub fn vortex_array::arrays::VarBinView::dtype(array: &vortex_array::arrays::varbinview::VarBinViewData) -> &vortex_array::dtype::DType -pub type vortex_array::arrays::FixedSizeList::Metadata = vortex_array::EmptyMetadata +pub fn vortex_array::arrays::VarBinView::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::arrays::FixedSizeList::OperationsVTable = vortex_array::arrays::FixedSizeList +pub fn vortex_array::arrays::VarBinView::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub type vortex_array::arrays::FixedSizeList::ValidityVTable = vortex_array::vtable::ValidityVTableFromValidityHelper +pub fn vortex_array::arrays::VarBinView::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::FixedSizeList::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::VarBinView::len(array: &vortex_array::arrays::varbinview::VarBinViewData) -> usize -pub fn vortex_array::arrays::FixedSizeList::array_eq(array: &vortex_array::arrays::FixedSizeListArray, other: &vortex_array::arrays::FixedSizeListArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::VarBinView::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::FixedSizeList::array_hash(array: &vortex_array::arrays::FixedSizeListArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::VarBinView::nbuffers(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::FixedSizeList::buffer(_array: &vortex_array::arrays::FixedSizeListArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::VarBinView::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::FixedSizeList::buffer_name(_array: &vortex_array::arrays::FixedSizeListArray, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::VarBinView::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::FixedSizeList::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinView::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::FixedSizeList::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::VarBinView::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::FixedSizeList::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::VarBinView::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::FixedSizeList::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinView::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::FixedSizeList::dtype(array: &vortex_array::arrays::FixedSizeListArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::VarBinView::stats(array: &vortex_array::arrays::varbinview::VarBinViewData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::FixedSizeList::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinView::vtable(_array: &vortex_array::arrays::varbinview::VarBinViewData) -> &Self -pub fn vortex_array::arrays::FixedSizeList::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBinView::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::FixedSizeList::id(&self) -> vortex_array::vtable::ArrayId +impl vortex_array::VTable for vortex_array::arrays::Variant -pub fn vortex_array::arrays::FixedSizeList::len(array: &vortex_array::arrays::FixedSizeListArray) -> usize +pub type vortex_array::arrays::Variant::ArrayData = vortex_array::arrays::variant::VariantData -pub fn vortex_array::arrays::FixedSizeList::metadata(_array: &vortex_array::arrays::FixedSizeListArray) -> vortex_error::VortexResult +pub type vortex_array::arrays::Variant::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::arrays::FixedSizeList::nbuffers(_array: &vortex_array::arrays::FixedSizeListArray) -> usize +pub type vortex_array::arrays::Variant::OperationsVTable = vortex_array::arrays::Variant -pub fn vortex_array::arrays::FixedSizeList::nchildren(array: &Self::Array) -> usize +pub type vortex_array::arrays::Variant::ValidityVTable = vortex_array::arrays::Variant -pub fn vortex_array::arrays::FixedSizeList::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Variant::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::FixedSizeList::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Variant::array_eq(array: &vortex_array::arrays::variant::VariantData, other: &vortex_array::arrays::variant::VariantData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::FixedSizeList::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Variant::array_hash(array: &vortex_array::arrays::variant::VariantData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::FixedSizeList::slot_name(_array: &vortex_array::arrays::FixedSizeListArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Variant::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::FixedSizeList::slots(array: &vortex_array::arrays::FixedSizeListArray) -> &[core::option::Option] +pub fn vortex_array::arrays::Variant::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::arrays::FixedSizeList::stats(array: &vortex_array::arrays::FixedSizeListArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::Variant::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::FixedSizeList::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::Variant::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::FixedSizeList::with_slots(array: &mut vortex_array::arrays::FixedSizeListArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Variant::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::vtable::VTable for vortex_array::arrays::List +pub fn vortex_array::arrays::Variant::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::arrays::List::Array = vortex_array::arrays::ListArray +pub fn vortex_array::arrays::Variant::dtype(array: &Self::ArrayData) -> &vortex_array::dtype::DType -pub type vortex_array::arrays::List::Metadata = vortex_array::ProstMetadata +pub fn vortex_array::arrays::Variant::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::arrays::List::OperationsVTable = vortex_array::arrays::List +pub fn vortex_array::arrays::Variant::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub type vortex_array::arrays::List::ValidityVTable = vortex_array::vtable::ValidityVTableFromValidityHelper +pub fn vortex_array::arrays::Variant::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::List::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Variant::len(array: &Self::ArrayData) -> usize -pub fn vortex_array::arrays::List::array_eq(array: &vortex_array::arrays::ListArray, other: &vortex_array::arrays::ListArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Variant::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::List::array_hash(array: &vortex_array::arrays::ListArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Variant::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::List::buffer(_array: &vortex_array::arrays::ListArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Variant::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::List::buffer_name(_array: &vortex_array::arrays::ListArray, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::Variant::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::List::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::List::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Variant::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::List::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Variant::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::List::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::List::dtype(array: &vortex_array::arrays::ListArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::Variant::stats(array: &Self::ArrayData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::List::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::List::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Variant::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::List::id(&self) -> vortex_array::vtable::ArrayId +impl vortex_array::VTable for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::List::len(array: &vortex_array::arrays::ListArray) -> usize +pub type vortex_array::arrays::dict::Dict::ArrayData = vortex_array::arrays::dict::DictData -pub fn vortex_array::arrays::List::metadata(array: &vortex_array::arrays::ListArray) -> vortex_error::VortexResult +pub type vortex_array::arrays::dict::Dict::Metadata = vortex_array::ProstMetadata -pub fn vortex_array::arrays::List::nbuffers(_array: &vortex_array::arrays::ListArray) -> usize +pub type vortex_array::arrays::dict::Dict::OperationsVTable = vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::List::nchildren(array: &Self::Array) -> usize +pub type vortex_array::arrays::dict::Dict::ValidityVTable = vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::List::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::List::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::array_eq(array: &vortex_array::arrays::dict::DictData, other: &vortex_array::arrays::dict::DictData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::List::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::dict::Dict::array_hash(array: &vortex_array::arrays::dict::DictData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::List::slot_name(_array: &vortex_array::arrays::ListArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::dict::Dict::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::List::slots(array: &vortex_array::arrays::ListArray) -> &[core::option::Option] +pub fn vortex_array::arrays::dict::Dict::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::arrays::List::stats(array: &vortex_array::arrays::ListArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::dict::Dict::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::List::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::dict::Dict::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::List::with_slots(array: &mut vortex_array::arrays::ListArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::dict::Dict::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::vtable::VTable for vortex_array::arrays::ListView +pub fn vortex_array::arrays::dict::Dict::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::arrays::ListView::Array = vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::dict::Dict::dtype(array: &vortex_array::arrays::dict::DictData) -> &vortex_array::dtype::DType -pub type vortex_array::arrays::ListView::Metadata = vortex_array::ProstMetadata +pub fn vortex_array::arrays::dict::Dict::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::arrays::ListView::OperationsVTable = vortex_array::arrays::ListView +pub fn vortex_array::arrays::dict::Dict::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub type vortex_array::arrays::ListView::ValidityVTable = vortex_array::vtable::ValidityVTableFromValidityHelper +pub fn vortex_array::arrays::dict::Dict::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::ListView::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::dict::Dict::len(array: &vortex_array::arrays::dict::DictData) -> usize -pub fn vortex_array::arrays::ListView::array_eq(array: &vortex_array::arrays::ListViewArray, other: &vortex_array::arrays::ListViewArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::dict::Dict::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListView::array_hash(array: &vortex_array::arrays::ListViewArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::dict::Dict::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::ListView::buffer(_array: &vortex_array::arrays::ListViewArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::dict::Dict::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::ListView::buffer_name(_array: &vortex_array::arrays::ListViewArray, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::dict::Dict::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ListView::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ListView::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::dict::Dict::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::ListView::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::dict::Dict::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::ListView::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::ListView::dtype(array: &vortex_array::arrays::ListViewArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::dict::Dict::stats(array: &vortex_array::arrays::dict::DictData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::ListView::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::ListView::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::dict::Dict::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::ListView::id(&self) -> vortex_array::vtable::ArrayId +impl vortex_array::VTable for vortex_array::arrays::null::Null -pub fn vortex_array::arrays::ListView::len(array: &vortex_array::arrays::ListViewArray) -> usize +pub type vortex_array::arrays::null::Null::ArrayData = vortex_array::arrays::null::NullData -pub fn vortex_array::arrays::ListView::metadata(array: &vortex_array::arrays::ListViewArray) -> vortex_error::VortexResult +pub type vortex_array::arrays::null::Null::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::arrays::ListView::nbuffers(_array: &vortex_array::arrays::ListViewArray) -> usize +pub type vortex_array::arrays::null::Null::OperationsVTable = vortex_array::arrays::null::Null -pub fn vortex_array::arrays::ListView::nchildren(array: &Self::Array) -> usize +pub type vortex_array::arrays::null::Null::ValidityVTable = vortex_array::arrays::null::Null -pub fn vortex_array::arrays::ListView::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::null::Null::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::ListView::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::null::Null::array_eq(_array: &vortex_array::arrays::null::NullData, _other: &vortex_array::arrays::null::NullData, _precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::ListView::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::null::Null::array_hash(_array: &vortex_array::arrays::null::NullData, _state: &mut H, _precision: vortex_array::Precision) -pub fn vortex_array::arrays::ListView::slot_name(_array: &vortex_array::arrays::ListViewArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::null::Null::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::ListView::slots(array: &vortex_array::arrays::ListViewArray) -> &[core::option::Option] +pub fn vortex_array::arrays::null::Null::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::arrays::ListView::stats(array: &vortex_array::arrays::ListViewArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::null::Null::build(_dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], _children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ListView::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::null::Null::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::ListView::with_slots(array: &mut vortex_array::arrays::ListViewArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::null::Null::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::vtable::VTable for vortex_array::arrays::Masked +pub fn vortex_array::arrays::null::Null::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::arrays::Masked::Array = vortex_array::arrays::MaskedArray +pub fn vortex_array::arrays::null::Null::dtype(_array: &vortex_array::arrays::null::NullData) -> &vortex_array::dtype::DType -pub type vortex_array::arrays::Masked::Metadata = vortex_array::EmptyMetadata +pub fn vortex_array::arrays::null::Null::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::arrays::Masked::OperationsVTable = vortex_array::arrays::Masked +pub fn vortex_array::arrays::null::Null::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub type vortex_array::arrays::Masked::ValidityVTable = vortex_array::arrays::Masked +pub fn vortex_array::arrays::null::Null::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Masked::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::null::Null::len(array: &vortex_array::arrays::null::NullData) -> usize -pub fn vortex_array::arrays::Masked::array_eq(array: &vortex_array::arrays::MaskedArray, other: &vortex_array::arrays::MaskedArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::null::Null::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Masked::array_hash(array: &vortex_array::arrays::MaskedArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::null::Null::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Masked::buffer(_array: &Self::Array, _idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::null::Null::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Masked::buffer_name(_array: &Self::Array, _idx: usize) -> core::option::Option +pub fn vortex_array::arrays::null::Null::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Masked::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Masked::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::null::Null::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Masked::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::null::Null::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Masked::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::Masked::dtype(array: &vortex_array::arrays::MaskedArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::null::Null::stats(array: &vortex_array::arrays::null::NullData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Masked::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::Masked::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::null::Null::with_slots(_array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Masked::id(&self) -> vortex_array::vtable::ArrayId +impl vortex_array::VTable for vortex_array::arrays::patched::Patched -pub fn vortex_array::arrays::Masked::len(array: &vortex_array::arrays::MaskedArray) -> usize +pub type vortex_array::arrays::patched::Patched::ArrayData = vortex_array::arrays::patched::PatchedArray -pub fn vortex_array::arrays::Masked::metadata(_array: &vortex_array::arrays::MaskedArray) -> vortex_error::VortexResult +pub type vortex_array::arrays::patched::Patched::Metadata = vortex_array::ProstMetadata -pub fn vortex_array::arrays::Masked::nbuffers(_array: &Self::Array) -> usize +pub type vortex_array::arrays::patched::Patched::OperationsVTable = vortex_array::arrays::patched::Patched -pub fn vortex_array::arrays::Masked::nchildren(array: &Self::Array) -> usize +pub type vortex_array::arrays::patched::Patched::ValidityVTable = vortex_array::ValidityVTableFromChild -pub fn vortex_array::arrays::Masked::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::patched::Patched::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Masked::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::patched::Patched::array_eq(array: &vortex_array::arrays::patched::PatchedArray, other: &vortex_array::arrays::patched::PatchedArray, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::Masked::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::patched::Patched::array_hash(array: &vortex_array::arrays::patched::PatchedArray, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::Masked::slot_name(_array: &vortex_array::arrays::MaskedArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::patched::Patched::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Masked::slots(array: &vortex_array::arrays::MaskedArray) -> &[core::option::Option] +pub fn vortex_array::arrays::patched::Patched::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Masked::stats(array: &vortex_array::arrays::MaskedArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::patched::Patched::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Masked::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::patched::Patched::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Masked::with_slots(array: &mut vortex_array::arrays::MaskedArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::patched::Patched::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::vtable::VTable for vortex_array::arrays::Primitive +pub fn vortex_array::arrays::patched::Patched::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::arrays::Primitive::Array = vortex_array::arrays::PrimitiveArray +pub fn vortex_array::arrays::patched::Patched::dtype(array: &Self::ArrayData) -> &vortex_array::dtype::DType -pub type vortex_array::arrays::Primitive::Metadata = vortex_array::EmptyMetadata +pub fn vortex_array::arrays::patched::Patched::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::arrays::Primitive::OperationsVTable = vortex_array::arrays::Primitive +pub fn vortex_array::arrays::patched::Patched::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub type vortex_array::arrays::Primitive::ValidityVTable = vortex_array::arrays::Primitive +pub fn vortex_array::arrays::patched::Patched::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Primitive::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::patched::Patched::len(array: &Self::ArrayData) -> usize -pub fn vortex_array::arrays::Primitive::array_eq(array: &vortex_array::arrays::PrimitiveArray, other: &vortex_array::arrays::PrimitiveArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::patched::Patched::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Primitive::array_hash(array: &vortex_array::arrays::PrimitiveArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::patched::Patched::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Primitive::buffer(array: &vortex_array::arrays::PrimitiveArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::patched::Patched::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Primitive::buffer_name(_array: &vortex_array::arrays::PrimitiveArray, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::patched::Patched::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Primitive::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::patched::Patched::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Primitive::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::patched::Patched::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Primitive::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::patched::Patched::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Primitive::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::patched::Patched::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::Primitive::dtype(array: &vortex_array::arrays::PrimitiveArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::patched::Patched::stats(array: &Self::ArrayData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Primitive::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::patched::Patched::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::Primitive::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::patched::Patched::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Primitive::id(&self) -> vortex_array::vtable::ArrayId +impl vortex_array::VTable for vortex_array::arrays::scalar_fn::ScalarFnVTable -pub fn vortex_array::arrays::Primitive::len(array: &vortex_array::arrays::PrimitiveArray) -> usize +pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::ArrayData = vortex_array::arrays::scalar_fn::ScalarFnData -pub fn vortex_array::arrays::Primitive::metadata(_array: &vortex_array::arrays::PrimitiveArray) -> vortex_error::VortexResult +pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::Metadata = vortex_array::arrays::scalar_fn::metadata::ScalarFnMetadata -pub fn vortex_array::arrays::Primitive::nbuffers(_array: &vortex_array::arrays::PrimitiveArray) -> usize +pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::OperationsVTable = vortex_array::arrays::scalar_fn::ScalarFnVTable -pub fn vortex_array::arrays::Primitive::nchildren(array: &Self::Array) -> usize +pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::ValidityVTable = vortex_array::arrays::scalar_fn::ScalarFnVTable -pub fn vortex_array::arrays::Primitive::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Primitive::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::array_eq(array: &vortex_array::arrays::scalar_fn::ScalarFnData, other: &vortex_array::arrays::scalar_fn::ScalarFnData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::Primitive::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::array_hash(array: &vortex_array::arrays::scalar_fn::ScalarFnData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::Primitive::slot_name(_array: &vortex_array::arrays::PrimitiveArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Primitive::slots(array: &vortex_array::arrays::PrimitiveArray) -> &[core::option::Option] +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Primitive::stats(array: &vortex_array::arrays::PrimitiveArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::scalar_fn::metadata::ScalarFnMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Primitive::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Primitive::with_slots(array: &mut vortex_array::arrays::PrimitiveArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::vtable::VTable for vortex_array::arrays::Shared +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::arrays::Shared::Array = vortex_array::arrays::SharedArray +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::dtype(array: &vortex_array::arrays::scalar_fn::ScalarFnData) -> &vortex_array::dtype::DType -pub type vortex_array::arrays::Shared::Metadata = vortex_array::EmptyMetadata +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::arrays::Shared::OperationsVTable = vortex_array::arrays::Shared +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub type vortex_array::arrays::Shared::ValidityVTable = vortex_array::arrays::Shared +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Shared::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::len(array: &vortex_array::arrays::scalar_fn::ScalarFnData) -> usize -pub fn vortex_array::arrays::Shared::array_eq(array: &vortex_array::arrays::SharedArray, other: &vortex_array::arrays::SharedArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Shared::array_hash(array: &vortex_array::arrays::SharedArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Shared::buffer(_array: &Self::Array, _idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Shared::buffer_name(_array: &Self::Array, _idx: usize) -> core::option::Option +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Shared::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Shared::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Shared::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::slot_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Shared::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::Shared::dtype(array: &vortex_array::arrays::SharedArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::stats(array: &vortex_array::arrays::scalar_fn::ScalarFnData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Shared::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::vtable(array: &vortex_array::arrays::scalar_fn::ScalarFnData) -> &Self -pub fn vortex_array::arrays::Shared::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Shared::id(&self) -> vortex_array::vtable::ArrayId +impl vortex_array::VTable for vortex_array::arrays::slice::Slice -pub fn vortex_array::arrays::Shared::len(array: &vortex_array::arrays::SharedArray) -> usize +pub type vortex_array::arrays::slice::Slice::ArrayData = vortex_array::arrays::slice::SliceData -pub fn vortex_array::arrays::Shared::metadata(_array: &Self::Array) -> vortex_error::VortexResult +pub type vortex_array::arrays::slice::Slice::Metadata = vortex_array::arrays::slice::SliceMetadata -pub fn vortex_array::arrays::Shared::nbuffers(_array: &Self::Array) -> usize +pub type vortex_array::arrays::slice::Slice::OperationsVTable = vortex_array::arrays::slice::Slice -pub fn vortex_array::arrays::Shared::nchildren(array: &Self::Array) -> usize +pub type vortex_array::arrays::slice::Slice::ValidityVTable = vortex_array::arrays::slice::Slice -pub fn vortex_array::arrays::Shared::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::slice::Slice::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Shared::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::slice::Slice::array_eq(array: &vortex_array::arrays::slice::SliceData, other: &vortex_array::arrays::slice::SliceData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::Shared::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::slice::Slice::array_hash(array: &vortex_array::arrays::slice::SliceData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::Shared::slot_name(_array: &vortex_array::arrays::SharedArray, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::slice::Slice::buffer(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::Shared::slots(array: &vortex_array::arrays::SharedArray) -> &[core::option::Option] +pub fn vortex_array::arrays::slice::Slice::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Shared::stats(array: &vortex_array::arrays::SharedArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::slice::Slice::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::slice::SliceMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Shared::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::slice::Slice::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Shared::with_slots(array: &mut Self::Array, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::slice::Slice::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::vtable::VTable for vortex_array::arrays::Struct +pub fn vortex_array::arrays::slice::Slice::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::arrays::Struct::Array = vortex_array::arrays::StructArray +pub fn vortex_array::arrays::slice::Slice::dtype(array: &vortex_array::arrays::slice::SliceData) -> &vortex_array::dtype::DType -pub type vortex_array::arrays::Struct::Metadata = vortex_array::EmptyMetadata +pub fn vortex_array::arrays::slice::Slice::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::arrays::Struct::OperationsVTable = vortex_array::arrays::Struct +pub fn vortex_array::arrays::slice::Slice::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub type vortex_array::arrays::Struct::ValidityVTable = vortex_array::arrays::Struct +pub fn vortex_array::arrays::slice::Slice::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::Struct::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::slice::Slice::len(array: &vortex_array::arrays::slice::SliceData) -> usize -pub fn vortex_array::arrays::Struct::array_eq(array: &vortex_array::arrays::StructArray, other: &vortex_array::arrays::StructArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::slice::Slice::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Struct::array_hash(array: &vortex_array::arrays::StructArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::slice::Slice::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Struct::buffer(_array: &vortex_array::arrays::StructArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::slice::Slice::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::Struct::buffer_name(_array: &vortex_array::arrays::StructArray, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::slice::Slice::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Struct::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::slice::Slice::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Struct::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::slice::Slice::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::Struct::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::slice::Slice::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Struct::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::arrays::slice::Slice::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::Struct::dtype(array: &vortex_array::arrays::StructArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::slice::Slice::stats(array: &vortex_array::arrays::slice::SliceData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Struct::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::slice::Slice::vtable(_array: &vortex_array::arrays::slice::SliceData) -> &Self -pub fn vortex_array::arrays::Struct::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::slice::Slice::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Struct::id(&self) -> vortex_array::vtable::ArrayId +pub trait vortex_array::DeserializeMetadata where Self: core::marker::Sized -pub fn vortex_array::arrays::Struct::len(array: &vortex_array::arrays::StructArray) -> usize +pub type vortex_array::DeserializeMetadata::Output -pub fn vortex_array::arrays::Struct::metadata(_array: &vortex_array::arrays::StructArray) -> vortex_error::VortexResult +pub fn vortex_array::DeserializeMetadata::deserialize(metadata: &[u8]) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Struct::nbuffers(_array: &vortex_array::arrays::StructArray) -> usize +impl vortex_array::DeserializeMetadata for vortex_array::EmptyMetadata -pub fn vortex_array::arrays::Struct::nchildren(array: &Self::Array) -> usize +pub type vortex_array::EmptyMetadata::Output = vortex_array::EmptyMetadata -pub fn vortex_array::arrays::Struct::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::EmptyMetadata::deserialize(metadata: &[u8]) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Struct::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +impl vortex_array::DeserializeMetadata for vortex_array::RawMetadata -pub fn vortex_array::arrays::Struct::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub type vortex_array::RawMetadata::Output = alloc::vec::Vec -pub fn vortex_array::arrays::Struct::slot_name(array: &vortex_array::arrays::StructArray, idx: usize) -> alloc::string::String +pub fn vortex_array::RawMetadata::deserialize(metadata: &[u8]) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Struct::slots(array: &vortex_array::arrays::StructArray) -> &[core::option::Option] +impl vortex_array::DeserializeMetadata for vortex_array::ProstMetadata where M: core::fmt::Debug + prost::message::Message + core::default::Default -pub fn vortex_array::arrays::Struct::stats(array: &vortex_array::arrays::StructArray) -> vortex_array::stats::StatsSetRef<'_> +pub type vortex_array::ProstMetadata::Output = M -pub fn vortex_array::arrays::Struct::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::ProstMetadata::deserialize(metadata: &[u8]) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Struct::with_slots(array: &mut vortex_array::arrays::StructArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub trait vortex_array::DynArrayEq: vortex_array::hash::private::SealedEq -impl vortex_array::vtable::VTable for vortex_array::arrays::VarBin +pub fn vortex_array::DynArrayEq::dyn_array_eq(&self, other: &dyn core::any::Any, precision: vortex_array::Precision) -> bool -pub type vortex_array::arrays::VarBin::Array = vortex_array::arrays::VarBinArray +impl vortex_array::DynArrayEq for T -pub type vortex_array::arrays::VarBin::Metadata = vortex_array::ProstMetadata +pub fn T::dyn_array_eq(&self, other: &(dyn core::any::Any + 'static), precision: vortex_array::Precision) -> bool -pub type vortex_array::arrays::VarBin::OperationsVTable = vortex_array::arrays::VarBin +pub trait vortex_array::DynArrayHash: vortex_array::hash::private::SealedHash -pub type vortex_array::arrays::VarBin::ValidityVTable = vortex_array::arrays::VarBin +pub fn vortex_array::DynArrayHash::dyn_array_hash(&self, state: &mut dyn core::hash::Hasher, precision: vortex_array::Precision) -pub fn vortex_array::arrays::VarBin::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +impl vortex_array::DynArrayHash for T -pub fn vortex_array::arrays::VarBin::array_eq(array: &vortex_array::arrays::VarBinArray, other: &vortex_array::arrays::VarBinArray, precision: vortex_array::Precision) -> bool +pub fn T::dyn_array_hash(&self, state: &mut dyn core::hash::Hasher, precision: vortex_array::Precision) -pub fn vortex_array::arrays::VarBin::array_hash(array: &vortex_array::arrays::VarBinArray, state: &mut H, precision: vortex_array::Precision) +pub trait vortex_array::DynVTable: 'static + core::marker::Send + core::marker::Sync + core::fmt::Debug -pub fn vortex_array::arrays::VarBin::buffer(array: &vortex_array::arrays::VarBinArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::DynVTable::build(&self, id: vortex_array::ArrayId, dtype: &vortex_array::dtype::DType, len: usize, metadata: &[u8], buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren, session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBin::buffer_name(_array: &vortex_array::arrays::VarBinArray, idx: usize) -> core::option::Option +pub fn vortex_array::DynVTable::clone_boxed(&self) -> alloc::boxed::Box -pub fn vortex_array::arrays::VarBin::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::DynVTable::execute(&self, array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBin::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::DynVTable::execute_parent(&self, array: &vortex_array::ArrayRef, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::VarBin::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::DynVTable::reduce(&self, array: &vortex_array::ArrayRef) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::VarBin::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::DynVTable::reduce_parent(&self, array: &vortex_array::ArrayRef, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::VarBin::dtype(array: &vortex_array::arrays::VarBinArray) -> &vortex_array::dtype::DType +pub fn vortex_array::DynVTable::with_slots(&self, array: vortex_array::ArrayRef, slots: alloc::vec::Vec>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBin::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::DynVTable for V -pub fn vortex_array::arrays::VarBin::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn V::build(&self, _id: arcref::ArcRef, dtype: &vortex_array::dtype::DType, len: usize, metadata: &[u8], buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren, session: &vortex_session::VortexSession) -> core::result::Result -pub fn vortex_array::arrays::VarBin::id(&self) -> vortex_array::vtable::ArrayId +pub fn V::clone_boxed(&self) -> alloc::boxed::Box -pub fn vortex_array::arrays::VarBin::len(array: &vortex_array::arrays::VarBinArray) -> usize +pub fn V::execute(&self, array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> core::result::Result -pub fn vortex_array::arrays::VarBin::metadata(array: &vortex_array::arrays::VarBinArray) -> vortex_error::VortexResult +pub fn V::execute_parent(&self, array: &vortex_array::ArrayRef, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> core::result::Result, vortex_error::VortexError> -pub fn vortex_array::arrays::VarBin::nbuffers(_array: &vortex_array::arrays::VarBinArray) -> usize +pub fn V::reduce(&self, array: &vortex_array::ArrayRef) -> core::result::Result, vortex_error::VortexError> -pub fn vortex_array::arrays::VarBin::nchildren(array: &Self::Array) -> usize +pub fn V::reduce_parent(&self, array: &vortex_array::ArrayRef, parent: &vortex_array::ArrayRef, child_idx: usize) -> core::result::Result, vortex_error::VortexError> -pub fn vortex_array::arrays::VarBin::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn V::with_slots(&self, array: vortex_array::ArrayRef, slots: alloc::vec::Vec>) -> core::result::Result -pub fn vortex_array::arrays::VarBin::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub trait vortex_array::Executable: core::marker::Sized -pub fn vortex_array::arrays::VarBin::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::Executable::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBin::slot_name(_array: &vortex_array::arrays::VarBinArray, idx: usize) -> alloc::string::String +impl vortex_array::Executable for vortex_array::ArrayRef -pub fn vortex_array::arrays::VarBin::slots(array: &vortex_array::arrays::VarBinArray) -> &[core::option::Option] +pub fn vortex_array::ArrayRef::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBin::stats(array: &vortex_array::arrays::VarBinArray) -> vortex_array::stats::StatsSetRef<'_> +impl vortex_array::Executable for vortex_array::Canonical -pub fn vortex_array::arrays::VarBin::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::Canonical::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBin::with_slots(array: &mut vortex_array::arrays::VarBinArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +impl vortex_array::Executable for vortex_array::CanonicalValidity -impl vortex_array::vtable::VTable for vortex_array::arrays::VarBinView +pub fn vortex_array::CanonicalValidity::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::arrays::VarBinView::Array = vortex_array::arrays::VarBinViewArray +impl vortex_array::Executable for vortex_array::Columnar -pub type vortex_array::arrays::VarBinView::Metadata = vortex_array::EmptyMetadata +pub fn vortex_array::Columnar::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::arrays::VarBinView::OperationsVTable = vortex_array::arrays::VarBinView +impl vortex_array::Executable for vortex_array::RecursiveCanonical -pub type vortex_array::arrays::VarBinView::ValidityVTable = vortex_array::arrays::VarBinView +pub fn vortex_array::RecursiveCanonical::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBinView::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +impl vortex_array::Executable for vortex_array::arrays::BoolArray -pub fn vortex_array::arrays::VarBinView::array_eq(array: &vortex_array::arrays::VarBinViewArray, other: &vortex_array::arrays::VarBinViewArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::BoolArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBinView::array_hash(array: &vortex_array::arrays::VarBinViewArray, state: &mut H, precision: vortex_array::Precision) +impl vortex_array::Executable for vortex_array::arrays::DecimalArray -pub fn vortex_array::arrays::VarBinView::buffer(array: &vortex_array::arrays::VarBinViewArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::DecimalArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBinView::buffer_name(array: &vortex_array::arrays::VarBinViewArray, idx: usize) -> core::option::Option +impl vortex_array::Executable for vortex_array::arrays::ExtensionArray -pub fn vortex_array::arrays::VarBinView::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ExtensionArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBinView::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +impl vortex_array::Executable for vortex_array::arrays::FixedSizeListArray -pub fn vortex_array::arrays::VarBinView::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::FixedSizeListArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBinView::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +impl vortex_array::Executable for vortex_array::arrays::ListViewArray -pub fn vortex_array::arrays::VarBinView::dtype(array: &vortex_array::arrays::VarBinViewArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::ListViewArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBinView::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::Executable for vortex_array::arrays::PrimitiveArray -pub fn vortex_array::arrays::VarBinView::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::PrimitiveArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBinView::id(&self) -> vortex_array::vtable::ArrayId +impl vortex_array::Executable for vortex_array::arrays::StructArray -pub fn vortex_array::arrays::VarBinView::len(array: &vortex_array::arrays::VarBinViewArray) -> usize +pub fn vortex_array::arrays::StructArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBinView::metadata(_array: &vortex_array::arrays::VarBinViewArray) -> vortex_error::VortexResult +impl vortex_array::Executable for vortex_array::arrays::VarBinViewArray -pub fn vortex_array::arrays::VarBinView::nbuffers(array: &vortex_array::arrays::VarBinViewArray) -> usize +pub fn vortex_array::arrays::VarBinViewArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBinView::nchildren(array: &Self::Array) -> usize +impl vortex_array::Executable for vortex_array::arrays::null::NullArray -pub fn vortex_array::arrays::VarBinView::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::null::NullArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBinView::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +impl vortex_array::Executable for vortex_buffer::bit::buf::BitBuffer -pub fn vortex_array::arrays::VarBinView::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_buffer::bit::buf::BitBuffer::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBinView::slot_name(_array: &vortex_array::arrays::VarBinViewArray, idx: usize) -> alloc::string::String +impl vortex_array::Executable for vortex_mask::Mask -pub fn vortex_array::arrays::VarBinView::slots(array: &vortex_array::arrays::VarBinViewArray) -> &[core::option::Option] +pub fn vortex_mask::Mask::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBinView::stats(array: &vortex_array::arrays::VarBinViewArray) -> vortex_array::stats::StatsSetRef<'_> +impl vortex_array::Executable for vortex_buffer::buffer::Buffer -pub fn vortex_array::arrays::VarBinView::vtable(_array: &Self::Array) -> &Self +pub fn vortex_buffer::buffer::Buffer::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBinView::with_slots(array: &mut vortex_array::arrays::VarBinViewArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub trait vortex_array::IntoArray -impl vortex_array::vtable::VTable for vortex_array::arrays::Variant +pub fn vortex_array::IntoArray::into_array(self) -> vortex_array::ArrayRef -pub type vortex_array::arrays::Variant::Array = vortex_array::arrays::variant::VariantArray +impl vortex_array::IntoArray for &vortex_mask::MaskValues -pub type vortex_array::arrays::Variant::Metadata = vortex_array::EmptyMetadata +pub fn &vortex_mask::MaskValues::into_array(self) -> vortex_array::ArrayRef -pub type vortex_array::arrays::Variant::OperationsVTable = vortex_array::arrays::Variant +impl vortex_array::IntoArray for arrow_buffer::buffer::boolean::BooleanBuffer -pub type vortex_array::arrays::Variant::ValidityVTable = vortex_array::arrays::Variant +pub fn arrow_buffer::buffer::boolean::BooleanBuffer::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Variant::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +impl vortex_array::IntoArray for arrow_buffer::buffer::immutable::Buffer -pub fn vortex_array::arrays::Variant::array_eq(array: &Self::Array, other: &Self::Array, precision: vortex_array::Precision) -> bool +pub fn arrow_buffer::buffer::immutable::Buffer::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Variant::array_hash(array: &Self::Array, state: &mut H, precision: vortex_array::Precision) +impl vortex_array::IntoArray for vortex_array::ArrayRef -pub fn vortex_array::arrays::Variant::buffer(_array: &Self::Array, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::ArrayRef::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Variant::buffer_name(_array: &Self::Array, _idx: usize) -> core::option::Option +impl vortex_array::IntoArray for vortex_array::Canonical -pub fn vortex_array::arrays::Variant::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::Canonical::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Variant::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +impl vortex_array::IntoArray for vortex_array::Columnar -pub fn vortex_array::arrays::Variant::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::Columnar::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Variant::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +impl vortex_array::IntoArray for vortex_array::arrays::bool::BoolData -pub fn vortex_array::arrays::Variant::dtype(array: &Self::Array) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::bool::BoolData::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Variant::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::IntoArray for vortex_array::arrays::chunked::ChunkedData -pub fn vortex_array::arrays::Variant::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::chunked::ChunkedData::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Variant::id(&self) -> vortex_array::vtable::ArrayId +impl vortex_array::IntoArray for vortex_array::arrays::constant::ConstantData -pub fn vortex_array::arrays::Variant::len(array: &Self::Array) -> usize +pub fn vortex_array::arrays::constant::ConstantData::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Variant::metadata(_array: &Self::Array) -> vortex_error::VortexResult +impl vortex_array::IntoArray for vortex_array::arrays::datetime::TemporalData -pub fn vortex_array::arrays::Variant::nbuffers(_array: &Self::Array) -> usize +pub fn vortex_array::arrays::datetime::TemporalData::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Variant::nchildren(array: &Self::Array) -> usize +impl vortex_array::IntoArray for vortex_array::arrays::decimal::DecimalData -pub fn vortex_array::arrays::Variant::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::decimal::DecimalData::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Variant::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +impl vortex_array::IntoArray for vortex_array::arrays::dict::DictData -pub fn vortex_array::arrays::Variant::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::dict::DictData::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Variant::slot_name(_array: &Self::Array, idx: usize) -> alloc::string::String +impl vortex_array::IntoArray for vortex_array::arrays::extension::ExtensionData -pub fn vortex_array::arrays::Variant::slots(array: &Self::Array) -> &[core::option::Option] +pub fn vortex_array::arrays::extension::ExtensionData::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Variant::stats(array: &Self::Array) -> vortex_array::stats::StatsSetRef<'_> +impl vortex_array::IntoArray for vortex_array::arrays::filter::FilterData -pub fn vortex_array::arrays::Variant::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::filter::FilterData::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::Variant::with_slots(array: &mut Self::Array, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +impl vortex_array::IntoArray for vortex_array::arrays::fixed_size_list::FixedSizeListData -impl vortex_array::vtable::VTable for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::fixed_size_list::FixedSizeListData::into_array(self) -> vortex_array::ArrayRef -pub type vortex_array::arrays::dict::Dict::Array = vortex_array::arrays::dict::DictArray +impl vortex_array::IntoArray for vortex_array::arrays::list::ListData -pub type vortex_array::arrays::dict::Dict::Metadata = vortex_array::ProstMetadata +pub fn vortex_array::arrays::list::ListData::into_array(self) -> vortex_array::ArrayRef -pub type vortex_array::arrays::dict::Dict::OperationsVTable = vortex_array::arrays::dict::Dict +impl vortex_array::IntoArray for vortex_array::arrays::listview::ListViewData -pub type vortex_array::arrays::dict::Dict::ValidityVTable = vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::listview::ListViewData::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::dict::Dict::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +impl vortex_array::IntoArray for vortex_array::arrays::masked::MaskedData -pub fn vortex_array::arrays::dict::Dict::array_eq(array: &vortex_array::arrays::dict::DictArray, other: &vortex_array::arrays::dict::DictArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::masked::MaskedData::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::dict::Dict::array_hash(array: &vortex_array::arrays::dict::DictArray, state: &mut H, precision: vortex_array::Precision) +impl vortex_array::IntoArray for vortex_array::arrays::null::NullData -pub fn vortex_array::arrays::dict::Dict::buffer(_array: &vortex_array::arrays::dict::DictArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::null::NullData::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::dict::Dict::buffer_name(_array: &vortex_array::arrays::dict::DictArray, _idx: usize) -> core::option::Option +impl vortex_array::IntoArray for vortex_array::arrays::patched::PatchedArray -pub fn vortex_array::arrays::dict::Dict::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::patched::PatchedArray::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::dict::Dict::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +impl vortex_array::IntoArray for vortex_array::arrays::primitive::PrimitiveData -pub fn vortex_array::arrays::dict::Dict::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::primitive::PrimitiveData::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::dict::Dict::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +impl vortex_array::IntoArray for vortex_array::arrays::scalar_fn::ScalarFnData -pub fn vortex_array::arrays::dict::Dict::dtype(array: &vortex_array::arrays::dict::DictArray) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::scalar_fn::ScalarFnData::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::dict::Dict::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::IntoArray for vortex_array::arrays::shared::SharedData -pub fn vortex_array::arrays::dict::Dict::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::shared::SharedData::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::dict::Dict::id(&self) -> vortex_array::vtable::ArrayId +impl vortex_array::IntoArray for vortex_array::arrays::slice::SliceData -pub fn vortex_array::arrays::dict::Dict::len(array: &vortex_array::arrays::dict::DictArray) -> usize +pub fn vortex_array::arrays::slice::SliceData::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::dict::Dict::metadata(array: &vortex_array::arrays::dict::DictArray) -> vortex_error::VortexResult +impl vortex_array::IntoArray for vortex_array::arrays::struct_::StructData -pub fn vortex_array::arrays::dict::Dict::nbuffers(_array: &vortex_array::arrays::dict::DictArray) -> usize +pub fn vortex_array::arrays::struct_::StructData::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::dict::Dict::nchildren(array: &Self::Array) -> usize +impl vortex_array::IntoArray for vortex_array::arrays::varbin::VarBinData -pub fn vortex_array::arrays::dict::Dict::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::varbin::VarBinData::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::dict::Dict::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +impl vortex_array::IntoArray for vortex_array::arrays::varbinview::VarBinViewData -pub fn vortex_array::arrays::dict::Dict::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::varbinview::VarBinViewData::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::dict::Dict::slot_name(_array: &vortex_array::arrays::dict::DictArray, idx: usize) -> alloc::string::String +impl vortex_array::IntoArray for vortex_array::arrays::variant::VariantData -pub fn vortex_array::arrays::dict::Dict::slots(array: &vortex_array::arrays::dict::DictArray) -> &[core::option::Option] +pub fn vortex_array::arrays::variant::VariantData::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::dict::Dict::stats(array: &vortex_array::arrays::dict::DictArray) -> vortex_array::stats::StatsSetRef<'_> +impl vortex_array::IntoArray for vortex_buffer::bit::buf::BitBuffer -pub fn vortex_array::arrays::dict::Dict::vtable(_array: &Self::Array) -> &Self +pub fn vortex_buffer::bit::buf::BitBuffer::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::dict::Dict::with_slots(array: &mut vortex_array::arrays::dict::DictArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +impl vortex_array::IntoArray for vortex_buffer::bit::buf_mut::BitBufferMut -impl vortex_array::vtable::VTable for vortex_array::arrays::null::Null +pub fn vortex_buffer::bit::buf_mut::BitBufferMut::into_array(self) -> vortex_array::ArrayRef -pub type vortex_array::arrays::null::Null::Array = vortex_array::arrays::null::NullArray +impl vortex_array::IntoArray for vortex_mask::Mask -pub type vortex_array::arrays::null::Null::Metadata = vortex_array::EmptyMetadata +pub fn vortex_mask::Mask::into_array(self) -> vortex_array::ArrayRef -pub type vortex_array::arrays::null::Null::OperationsVTable = vortex_array::arrays::null::Null +impl vortex_array::IntoArray for arrow_buffer::buffer::offset::OffsetBuffer where O: vortex_array::dtype::IntegerPType + arrow_array::array::list_array::OffsetSizeTrait -pub type vortex_array::arrays::null::Null::ValidityVTable = vortex_array::arrays::null::Null +pub fn arrow_buffer::buffer::offset::OffsetBuffer::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::null::Null::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +impl vortex_array::IntoArray for vortex_buffer::buffer::Buffer -pub fn vortex_array::arrays::null::Null::array_eq(array: &vortex_array::arrays::null::NullArray, other: &vortex_array::arrays::null::NullArray, _precision: vortex_array::Precision) -> bool +pub fn vortex_buffer::buffer::Buffer::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::null::Null::array_hash(array: &vortex_array::arrays::null::NullArray, state: &mut H, _precision: vortex_array::Precision) +impl vortex_array::IntoArray for vortex_buffer::buffer_mut::BufferMut -pub fn vortex_array::arrays::null::Null::buffer(_array: &vortex_array::arrays::null::NullArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_buffer::buffer_mut::BufferMut::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::null::Null::buffer_name(_array: &vortex_array::arrays::null::NullArray, _idx: usize) -> core::option::Option +impl vortex_array::IntoArray for arrow_buffer::buffer::scalar::ScalarBuffer where T: arrow_buffer::native::ArrowNativeType + vortex_array::dtype::NativePType -pub fn vortex_array::arrays::null::Null::build(_dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], _children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn arrow_buffer::buffer::scalar::ScalarBuffer::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::null::Null::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +impl vortex_array::IntoArray for alloc::sync::Arc> -pub fn vortex_array::arrays::null::Null::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn alloc::sync::Arc>::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::null::Null::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +impl vortex_array::IntoArray for vortex_array::Array -pub fn vortex_array::arrays::null::Null::dtype(_array: &vortex_array::arrays::null::NullArray) -> &vortex_array::dtype::DType +pub fn vortex_array::Array::into_array(self) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::null::Null::execute(array: alloc::sync::Arc>, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub trait vortex_array::OperationsVTable -pub fn vortex_array::arrays::null::Null::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::OperationsVTable::scalar_at(array: vortex_array::ArrayView<'_, V>, index: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::null::Null::id(&self) -> vortex_array::vtable::ArrayId +impl vortex_array::OperationsVTable for vortex_array::arrays::Bool -pub fn vortex_array::arrays::null::Null::len(array: &vortex_array::arrays::null::NullArray) -> usize +pub fn vortex_array::arrays::Bool::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::null::Null::metadata(_array: &vortex_array::arrays::null::NullArray) -> vortex_error::VortexResult +impl vortex_array::OperationsVTable for vortex_array::arrays::Chunked -pub fn vortex_array::arrays::null::Null::nbuffers(_array: &vortex_array::arrays::null::NullArray) -> usize +pub fn vortex_array::arrays::Chunked::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Chunked>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::null::Null::nchildren(array: &Self::Array) -> usize +impl vortex_array::OperationsVTable for vortex_array::arrays::Constant -pub fn vortex_array::arrays::null::Null::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::Constant::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Constant>, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::null::Null::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +impl vortex_array::OperationsVTable for vortex_array::arrays::Decimal -pub fn vortex_array::arrays::null::Null::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Decimal::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Decimal>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::null::Null::slot_name(_array: &vortex_array::arrays::null::NullArray, idx: usize) -> alloc::string::String +impl vortex_array::OperationsVTable for vortex_array::arrays::Extension -pub fn vortex_array::arrays::null::Null::slots(array: &vortex_array::arrays::null::NullArray) -> &[core::option::Option] +pub fn vortex_array::arrays::Extension::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Extension>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::null::Null::stats(array: &vortex_array::arrays::null::NullArray) -> vortex_array::stats::StatsSetRef<'_> +impl vortex_array::OperationsVTable for vortex_array::arrays::Filter -pub fn vortex_array::arrays::null::Null::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::Filter::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Filter>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::null::Null::with_slots(array: &mut vortex_array::arrays::null::NullArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +impl vortex_array::OperationsVTable for vortex_array::arrays::FixedSizeList -impl vortex_array::vtable::VTable for vortex_array::arrays::patched::Patched +pub fn vortex_array::arrays::FixedSizeList::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::FixedSizeList>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::arrays::patched::Patched::Array = vortex_array::arrays::patched::PatchedArray +impl vortex_array::OperationsVTable for vortex_array::arrays::List -pub type vortex_array::arrays::patched::Patched::Metadata = vortex_array::ProstMetadata +pub fn vortex_array::arrays::List::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::List>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::arrays::patched::Patched::OperationsVTable = vortex_array::arrays::patched::Patched +impl vortex_array::OperationsVTable for vortex_array::arrays::ListView -pub type vortex_array::arrays::patched::Patched::ValidityVTable = vortex_array::vtable::ValidityVTableFromChild +pub fn vortex_array::arrays::ListView::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::ListView>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::patched::Patched::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +impl vortex_array::OperationsVTable for vortex_array::arrays::Masked -pub fn vortex_array::arrays::patched::Patched::array_eq(array: &Self::Array, other: &Self::Array, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Masked::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::patched::Patched::array_hash(array: &Self::Array, state: &mut H, precision: vortex_array::Precision) +impl vortex_array::OperationsVTable for vortex_array::arrays::Primitive -pub fn vortex_array::arrays::patched::Patched::buffer(_array: &Self::Array, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Primitive::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Primitive>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::patched::Patched::buffer_name(_array: &Self::Array, idx: usize) -> core::option::Option +impl vortex_array::OperationsVTable for vortex_array::arrays::Shared -pub fn vortex_array::arrays::patched::Patched::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Shared::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Shared>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::patched::Patched::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +impl vortex_array::OperationsVTable for vortex_array::arrays::Struct -pub fn vortex_array::arrays::patched::Patched::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::arrays::Struct::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Struct>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::patched::Patched::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +impl vortex_array::OperationsVTable for vortex_array::arrays::VarBin -pub fn vortex_array::arrays::patched::Patched::dtype(array: &Self::Array) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::VarBin::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBin>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::patched::Patched::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +impl vortex_array::OperationsVTable for vortex_array::arrays::VarBinView -pub fn vortex_array::arrays::patched::Patched::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::VarBinView::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBinView>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::patched::Patched::id(&self) -> vortex_array::vtable::ArrayId +impl vortex_array::OperationsVTable for vortex_array::arrays::Variant -pub fn vortex_array::arrays::patched::Patched::len(array: &Self::Array) -> usize +pub fn vortex_array::arrays::Variant::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::Variant>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::patched::Patched::metadata(array: &Self::Array) -> vortex_error::VortexResult +impl vortex_array::OperationsVTable for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::patched::Patched::nbuffers(_array: &Self::Array) -> usize +pub fn vortex_array::arrays::dict::Dict::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::patched::Patched::nchildren(array: &Self::Array) -> usize +impl vortex_array::OperationsVTable for vortex_array::arrays::null::Null -pub fn vortex_array::arrays::patched::Patched::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::arrays::null::Null::scalar_at(_array: vortex_array::ArrayView<'_, vortex_array::arrays::null::Null>, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::patched::Patched::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +impl vortex_array::OperationsVTable for vortex_array::arrays::patched::Patched -pub fn vortex_array::arrays::patched::Patched::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::patched::Patched::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::patched::Patched>, index: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::patched::Patched::slot_name(_array: &Self::Array, idx: usize) -> alloc::string::String +impl vortex_array::OperationsVTable for vortex_array::arrays::scalar_fn::ScalarFnVTable -pub fn vortex_array::arrays::patched::Patched::slots(array: &Self::Array) -> &[core::option::Option] +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::scalar_fn::ScalarFnVTable>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::patched::Patched::stats(array: &Self::Array) -> vortex_array::stats::StatsSetRef<'_> +impl vortex_array::OperationsVTable for vortex_array::arrays::slice::Slice -pub fn vortex_array::arrays::patched::Patched::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::arrays::slice::Slice::scalar_at(array: vortex_array::ArrayView<'_, vortex_array::arrays::slice::Slice>, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::patched::Patched::with_slots(array: &mut Self::Array, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +impl vortex_array::OperationsVTable for vortex_array::NotSupported -impl vortex_array::vtable::VTable for vortex_array::arrays::scalar_fn::ScalarFnVTable +pub fn vortex_array::NotSupported::scalar_at(array: vortex_array::ArrayView<'_, V>, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::Array = vortex_array::arrays::scalar_fn::ScalarFnArray +pub trait vortex_array::SerializeMetadata -pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::Metadata = vortex_array::arrays::scalar_fn::metadata::ScalarFnMetadata +pub fn vortex_array::SerializeMetadata::serialize(self) -> alloc::vec::Vec -pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::OperationsVTable = vortex_array::arrays::scalar_fn::ScalarFnVTable +impl vortex_array::SerializeMetadata for vortex_array::EmptyMetadata -pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::ValidityVTable = vortex_array::arrays::scalar_fn::ScalarFnVTable +pub fn vortex_array::EmptyMetadata::serialize(self) -> alloc::vec::Vec -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +impl vortex_array::SerializeMetadata for vortex_array::RawMetadata -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::array_eq(array: &vortex_array::arrays::scalar_fn::ScalarFnArray, other: &vortex_array::arrays::scalar_fn::ScalarFnArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::RawMetadata::serialize(self) -> alloc::vec::Vec -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::array_hash(array: &vortex_array::arrays::scalar_fn::ScalarFnArray, state: &mut H, precision: vortex_array::Precision) +impl vortex_array::SerializeMetadata for vortex_array::ProstMetadata where M: prost::message::Message -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::buffer(_array: &vortex_array::arrays::scalar_fn::ScalarFnArray, idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::ProstMetadata::serialize(self) -> alloc::vec::Vec -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::buffer_name(_array: &vortex_array::arrays::scalar_fn::ScalarFnArray, _idx: usize) -> core::option::Option +pub trait vortex_array::ToCanonical -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::scalar_fn::metadata::ScalarFnMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::ToCanonical::to_bool(&self) -> vortex_array::arrays::BoolArray -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::ToCanonical::to_decimal(&self) -> vortex_array::arrays::DecimalArray -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::ToCanonical::to_extension(&self) -> vortex_array::arrays::ExtensionArray -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::ToCanonical::to_fixed_size_list(&self) -> vortex_array::arrays::FixedSizeListArray -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::dtype(array: &vortex_array::arrays::scalar_fn::ScalarFnArray) -> &vortex_array::dtype::DType +pub fn vortex_array::ToCanonical::to_listview(&self) -> vortex_array::arrays::ListViewArray -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::ToCanonical::to_null(&self) -> vortex_array::arrays::null::NullArray -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::ToCanonical::to_primitive(&self) -> vortex_array::arrays::PrimitiveArray -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::ToCanonical::to_struct(&self) -> vortex_array::arrays::StructArray -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::len(array: &vortex_array::arrays::scalar_fn::ScalarFnArray) -> usize +pub fn vortex_array::ToCanonical::to_varbinview(&self) -> vortex_array::arrays::VarBinViewArray -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::metadata(array: &Self::Array) -> vortex_error::VortexResult +impl vortex_array::ToCanonical for vortex_array::ArrayRef -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::nbuffers(_array: &vortex_array::arrays::scalar_fn::ScalarFnArray) -> usize +pub fn vortex_array::ArrayRef::to_bool(&self) -> vortex_array::arrays::BoolArray -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::ArrayRef::to_decimal(&self) -> vortex_array::arrays::DecimalArray -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::ArrayRef::to_extension(&self) -> vortex_array::arrays::ExtensionArray -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::ArrayRef::to_fixed_size_list(&self) -> vortex_array::arrays::FixedSizeListArray -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::ArrayRef::to_listview(&self) -> vortex_array::arrays::ListViewArray -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::slot_name(array: &vortex_array::arrays::scalar_fn::ScalarFnArray, idx: usize) -> alloc::string::String +pub fn vortex_array::ArrayRef::to_null(&self) -> vortex_array::arrays::null::NullArray -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::slots(array: &vortex_array::arrays::scalar_fn::ScalarFnArray) -> &[core::option::Option] +pub fn vortex_array::ArrayRef::to_primitive(&self) -> vortex_array::arrays::PrimitiveArray -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::stats(array: &vortex_array::arrays::scalar_fn::ScalarFnArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::ArrayRef::to_struct(&self) -> vortex_array::arrays::StructArray -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::vtable(array: &Self::Array) -> &Self +pub fn vortex_array::ArrayRef::to_varbinview(&self) -> vortex_array::arrays::VarBinViewArray -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::with_slots(array: &mut vortex_array::arrays::scalar_fn::ScalarFnArray, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +pub trait vortex_array::VTable: 'static + core::clone::Clone + core::marker::Sized + core::marker::Send + core::marker::Sync + core::fmt::Debug -impl vortex_array::vtable::VTable for vortex_array::arrays::slice::Slice +pub type vortex_array::VTable::ArrayData: 'static + core::marker::Send + core::marker::Sync + core::clone::Clone + core::fmt::Debug + vortex_array::IntoArray -pub type vortex_array::arrays::slice::Slice::Array = vortex_array::arrays::slice::SliceArray +pub type vortex_array::VTable::Metadata: core::fmt::Debug -pub type vortex_array::arrays::slice::Slice::Metadata = vortex_array::arrays::slice::SliceMetadata +pub type vortex_array::VTable::OperationsVTable: vortex_array::OperationsVTable -pub type vortex_array::arrays::slice::Slice::OperationsVTable = vortex_array::arrays::slice::Slice +pub type vortex_array::VTable::ValidityVTable: vortex_array::ValidityVTable -pub type vortex_array::arrays::slice::Slice::ValidityVTable = vortex_array::arrays::slice::Slice +pub fn vortex_array::VTable::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::slice::Slice::append_to_builder(array: &Self::Array, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::VTable::array_eq(array: &Self::ArrayData, other: &Self::ArrayData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::slice::Slice::array_eq(array: &vortex_array::arrays::slice::SliceArray, other: &vortex_array::arrays::slice::SliceArray, precision: vortex_array::Precision) -> bool +pub fn vortex_array::VTable::array_hash(array: &Self::ArrayData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::slice::Slice::array_hash(array: &vortex_array::arrays::slice::SliceArray, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::VTable::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::slice::Slice::buffer(_array: &Self::Array, _idx: usize) -> vortex_array::buffer::BufferHandle +pub fn vortex_array::VTable::buffer_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::slice::Slice::buffer_name(_array: &Self::Array, _idx: usize) -> core::option::Option +pub fn vortex_array::VTable::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::slice::Slice::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::slice::SliceMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult +pub fn vortex_array::VTable::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::slice::Slice::child(array: &Self::Array, idx: usize) -> vortex_array::ArrayRef +pub fn vortex_array::VTable::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::slice::Slice::child_name(array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::VTable::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::slice::Slice::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult +pub fn vortex_array::VTable::dtype(array: &Self::ArrayData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::slice::Slice::dtype(array: &vortex_array::arrays::slice::SliceArray) -> &vortex_array::dtype::DType +pub fn vortex_array::VTable::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::slice::Slice::execute(array: alloc::sync::Arc>, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::VTable::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::slice::Slice::execute_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> +pub fn vortex_array::VTable::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::slice::Slice::id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::VTable::len(array: &Self::ArrayData) -> usize -pub fn vortex_array::arrays::slice::Slice::len(array: &vortex_array::arrays::slice::SliceArray) -> usize +pub fn vortex_array::VTable::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::slice::Slice::metadata(array: &Self::Array) -> vortex_error::VortexResult +pub fn vortex_array::VTable::nbuffers(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::slice::Slice::nbuffers(_array: &Self::Array) -> usize +pub fn vortex_array::VTable::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::slice::Slice::nchildren(array: &Self::Array) -> usize +pub fn vortex_array::VTable::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::slice::Slice::reduce(array: &vortex_array::vtable::Array) -> vortex_error::VortexResult> +pub fn vortex_array::VTable::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::slice::Slice::reduce_parent(array: &vortex_array::vtable::Array, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> +pub fn vortex_array::VTable::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::slice::Slice::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> +pub fn vortex_array::VTable::slot_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::slice::Slice::slot_name(_array: &Self::Array, idx: usize) -> alloc::string::String +pub fn vortex_array::VTable::slots<'a>(array: vortex_array::ArrayView<'a, Self>) -> &'a [core::option::Option] -pub fn vortex_array::arrays::slice::Slice::slots(array: &Self::Array) -> &[core::option::Option] +pub fn vortex_array::VTable::stats(array: &Self::ArrayData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::slice::Slice::stats(array: &vortex_array::arrays::slice::SliceArray) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::VTable::vtable(array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::slice::Slice::vtable(_array: &Self::Array) -> &Self +pub fn vortex_array::VTable::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::slice::Slice::with_slots(array: &mut Self::Array, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> +impl vortex_array::VTable for vortex_array::arrays::Bool -pub trait vortex_array::vtable::ValidityChild +pub type vortex_array::arrays::Bool::ArrayData = vortex_array::arrays::bool::BoolData -pub fn vortex_array::vtable::ValidityChild::validity_child(array: &::Array) -> &vortex_array::ArrayRef +pub type vortex_array::arrays::Bool::Metadata = vortex_array::ProstMetadata -impl vortex_array::vtable::ValidityChild for vortex_array::arrays::Extension +pub type vortex_array::arrays::Bool::OperationsVTable = vortex_array::arrays::Bool -pub fn vortex_array::arrays::Extension::validity_child(array: &vortex_array::arrays::ExtensionArray) -> &vortex_array::ArrayRef +pub type vortex_array::arrays::Bool::ValidityVTable = vortex_array::arrays::Bool -impl vortex_array::vtable::ValidityChild for vortex_array::arrays::patched::Patched +pub fn vortex_array::arrays::Bool::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::patched::Patched::validity_child(array: &vortex_array::arrays::patched::PatchedArray) -> &vortex_array::ArrayRef +pub fn vortex_array::arrays::Bool::array_eq(array: &vortex_array::arrays::bool::BoolData, other: &vortex_array::arrays::bool::BoolData, precision: vortex_array::Precision) -> bool -pub trait vortex_array::vtable::ValidityChildSliceHelper +pub fn vortex_array::arrays::Bool::array_hash(array: &vortex_array::arrays::bool::BoolData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::vtable::ValidityChildSliceHelper::sliced_child_array(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Bool::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::vtable::ValidityChildSliceHelper::unsliced_child_and_slice(&self) -> (&vortex_array::ArrayRef, usize, usize) +pub fn vortex_array::arrays::Bool::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub trait vortex_array::vtable::ValidityHelper +pub fn vortex_array::arrays::Bool::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::vtable::ValidityHelper::validity(&self) -> vortex_array::validity::Validity +pub fn vortex_array::arrays::Bool::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -impl vortex_array::vtable::ValidityHelper for vortex_array::arrays::FixedSizeListArray +pub fn vortex_array::arrays::Bool::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::FixedSizeListArray::validity(&self) -> vortex_array::validity::Validity +pub fn vortex_array::arrays::Bool::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl vortex_array::vtable::ValidityHelper for vortex_array::arrays::ListArray +pub fn vortex_array::arrays::Bool::dtype(array: &vortex_array::arrays::bool::BoolData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::ListArray::validity(&self) -> vortex_array::validity::Validity +pub fn vortex_array::arrays::Bool::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::vtable::ValidityHelper for vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::Bool::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ListViewArray::validity(&self) -> vortex_array::validity::Validity +pub fn vortex_array::arrays::Bool::id(&self) -> vortex_array::ArrayId -pub trait vortex_array::vtable::ValiditySliceHelper +pub fn vortex_array::arrays::Bool::len(array: &vortex_array::arrays::bool::BoolData) -> usize -pub fn vortex_array::vtable::ValiditySliceHelper::sliced_validity(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Bool::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::vtable::ValiditySliceHelper::unsliced_validity_and_slice(&self) -> (&vortex_array::validity::Validity, usize, usize) +pub fn vortex_array::arrays::Bool::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub trait vortex_array::vtable::ValidityVTable +pub fn vortex_array::arrays::Bool::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::vtable::ValidityVTable::validity(array: &::Array) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Bool::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Bool +pub fn vortex_array::arrays::Bool::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::Bool::validity(array: &vortex_array::arrays::BoolArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Bool::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Chunked +pub fn vortex_array::arrays::Bool::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::Chunked::validity(array: &vortex_array::arrays::ChunkedArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Bool::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Constant +pub fn vortex_array::arrays::Bool::stats(array: &vortex_array::arrays::bool::BoolData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::arrays::Constant::validity(array: &vortex_array::arrays::ConstantArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Bool::vtable(_array: &Self::ArrayData) -> &Self -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Decimal +pub fn vortex_array::arrays::Bool::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Decimal::validity(array: &vortex_array::arrays::DecimalArray) -> vortex_error::VortexResult +impl vortex_array::VTable for vortex_array::arrays::Chunked -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Filter +pub type vortex_array::arrays::Chunked::ArrayData = vortex_array::arrays::chunked::ChunkedData -pub fn vortex_array::arrays::Filter::validity(array: &vortex_array::arrays::FilterArray) -> vortex_error::VortexResult +pub type vortex_array::arrays::Chunked::Metadata = vortex_array::EmptyMetadata -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Masked +pub type vortex_array::arrays::Chunked::OperationsVTable = vortex_array::arrays::Chunked -pub fn vortex_array::arrays::Masked::validity(array: &vortex_array::arrays::MaskedArray) -> vortex_error::VortexResult +pub type vortex_array::arrays::Chunked::ValidityVTable = vortex_array::arrays::Chunked -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Primitive +pub fn vortex_array::arrays::Chunked::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::arrays::Primitive::validity(array: &vortex_array::arrays::PrimitiveArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Chunked::array_eq(array: &vortex_array::arrays::chunked::ChunkedData, other: &vortex_array::arrays::chunked::ChunkedData, precision: vortex_array::Precision) -> bool -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Shared +pub fn vortex_array::arrays::Chunked::array_hash(array: &vortex_array::arrays::chunked::ChunkedData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::arrays::Shared::validity(array: &vortex_array::arrays::SharedArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Chunked::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Struct +pub fn vortex_array::arrays::Chunked::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::Struct::validity(array: &vortex_array::arrays::StructArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Chunked::build(dtype: &vortex_array::dtype::DType, _len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::VarBin +pub fn vortex_array::arrays::Chunked::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::arrays::VarBin::validity(array: &vortex_array::arrays::VarBinArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Chunked::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::VarBinView +pub fn vortex_array::arrays::Chunked::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::arrays::VarBinView::validity(array: &vortex_array::arrays::VarBinViewArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Chunked::dtype(array: &vortex_array::arrays::chunked::ChunkedData) -> &vortex_array::dtype::DType -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::Variant +pub fn vortex_array::arrays::Chunked::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::arrays::Variant::validity(array: &::Array) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Chunked::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::dict::Dict +pub fn vortex_array::arrays::Chunked::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::arrays::dict::Dict::validity(array: &vortex_array::arrays::dict::DictArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Chunked::len(array: &vortex_array::arrays::chunked::ChunkedData) -> usize -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::null::Null +pub fn vortex_array::arrays::Chunked::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::arrays::null::Null::validity(_array: &vortex_array::arrays::null::NullArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Chunked::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::scalar_fn::ScalarFnVTable +pub fn vortex_array::arrays::Chunked::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::validity(array: &vortex_array::arrays::scalar_fn::ScalarFnArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Chunked::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -impl vortex_array::vtable::ValidityVTable for vortex_array::arrays::slice::Slice +pub fn vortex_array::arrays::Chunked::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::slice::Slice::validity(array: &vortex_array::arrays::slice::SliceArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Chunked::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -impl vortex_array::vtable::ValidityVTable for vortex_array::vtable::ValidityVTableFromChildSliceHelper where ::Array: vortex_array::vtable::ValidityChildSliceHelper +pub fn vortex_array::arrays::Chunked::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::vtable::ValidityVTableFromChildSliceHelper::validity(array: &::Array) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Chunked::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -impl vortex_array::vtable::ValidityVTable for vortex_array::vtable::ValidityVTableFromValidityHelper where ::Array: vortex_array::vtable::ValidityHelper +pub fn vortex_array::arrays::Chunked::stats(array: &vortex_array::arrays::chunked::ChunkedData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::vtable::ValidityVTableFromValidityHelper::validity(array: &::Array) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Chunked::vtable(_array: &Self::ArrayData) -> &Self -impl vortex_array::vtable::ValidityVTable for vortex_array::vtable::ValidityVTableFromValiditySliceHelper where ::Array: vortex_array::vtable::ValiditySliceHelper +pub fn vortex_array::arrays::Chunked::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::vtable::ValidityVTableFromValiditySliceHelper::validity(array: &::Array) -> vortex_error::VortexResult +impl vortex_array::VTable for vortex_array::arrays::Constant -impl vortex_array::vtable::ValidityVTable for vortex_array::vtable::ValidityVTableFromChild where V: vortex_array::vtable::ValidityChild + vortex_array::vtable::VTable +pub type vortex_array::arrays::Constant::ArrayData = vortex_array::arrays::constant::ConstantData -pub fn vortex_array::vtable::ValidityVTableFromChild::validity(array: &::Array) -> vortex_error::VortexResult +pub type vortex_array::arrays::Constant::Metadata = vortex_array::scalar::Scalar -pub fn vortex_array::vtable::child_to_validity(child: &core::option::Option, nullability: vortex_array::dtype::Nullability) -> vortex_array::validity::Validity +pub type vortex_array::arrays::Constant::OperationsVTable = vortex_array::arrays::Constant -pub fn vortex_array::vtable::patches_child(patches: &vortex_array::patches::Patches, idx: usize) -> vortex_array::ArrayRef +pub type vortex_array::arrays::Constant::ValidityVTable = vortex_array::arrays::Constant -pub fn vortex_array::vtable::patches_child_name(idx: usize) -> &'static str +pub fn vortex_array::arrays::Constant::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::vtable::patches_nchildren(patches: &vortex_array::patches::Patches) -> usize +pub fn vortex_array::arrays::Constant::array_eq(array: &vortex_array::arrays::constant::ConstantData, other: &vortex_array::arrays::constant::ConstantData, _precision: vortex_array::Precision) -> bool -pub fn vortex_array::vtable::validity_nchildren(validity: &vortex_array::validity::Validity) -> usize +pub fn vortex_array::arrays::Constant::array_hash(array: &vortex_array::arrays::constant::ConstantData, state: &mut H, _precision: vortex_array::Precision) -pub fn vortex_array::vtable::validity_to_child(validity: &vortex_array::validity::Validity, len: usize) -> core::option::Option +pub fn vortex_array::arrays::Constant::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub type vortex_array::vtable::ArrayId = arcref::ArcRef +pub fn vortex_array::arrays::Constant::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub type vortex_array::vtable::DynVTableRef = alloc::sync::Arc +pub fn vortex_array::arrays::Constant::build(_dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], _children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub macro vortex_array::field_path! +pub fn vortex_array::arrays::Constant::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub macro vortex_array::match_each_decimal_value! +pub fn vortex_array::arrays::Constant::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub macro vortex_array::match_each_decimal_value_type! +pub fn vortex_array::arrays::Constant::deserialize(_bytes: &[u8], dtype: &vortex_array::dtype::DType, _len: usize, buffers: &[vortex_array::buffer::BufferHandle], session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub macro vortex_array::match_each_float_ptype! +pub fn vortex_array::arrays::Constant::dtype(array: &vortex_array::arrays::constant::ConstantData) -> &vortex_array::dtype::DType -pub macro vortex_array::match_each_integer_ptype! +pub fn vortex_array::arrays::Constant::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub macro vortex_array::match_each_native_ptype! +pub fn vortex_array::arrays::Constant::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub macro vortex_array::match_each_native_simd_ptype! +pub fn vortex_array::arrays::Constant::id(&self) -> vortex_array::ArrayId -pub macro vortex_array::match_each_pvalue! +pub fn vortex_array::arrays::Constant::len(array: &vortex_array::arrays::constant::ConstantData) -> usize -pub macro vortex_array::match_each_signed_integer_ptype! +pub fn vortex_array::arrays::Constant::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub macro vortex_array::match_each_unsigned_integer_ptype! +pub fn vortex_array::arrays::Constant::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub macro vortex_array::match_smallest_offset_type! +pub fn vortex_array::arrays::Constant::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub macro vortex_array::require_child! +pub fn vortex_array::arrays::Constant::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub macro vortex_array::require_opt_child! +pub fn vortex_array::arrays::Constant::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub macro vortex_array::require_patches! +pub fn vortex_array::arrays::Constant::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub macro vortex_array::require_validity! +pub fn vortex_array::arrays::Constant::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub macro vortex_array::vtable! +pub fn vortex_array::arrays::Constant::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub enum vortex_array::Canonical +pub fn vortex_array::arrays::Constant::stats(array: &vortex_array::arrays::constant::ConstantData) -> &vortex_array::stats::ArrayStats -pub vortex_array::Canonical::Bool(vortex_array::arrays::BoolArray) +pub fn vortex_array::arrays::Constant::vtable(_array: &Self::ArrayData) -> &Self -pub vortex_array::Canonical::Decimal(vortex_array::arrays::DecimalArray) +pub fn vortex_array::arrays::Constant::with_slots(_array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub vortex_array::Canonical::Extension(vortex_array::arrays::ExtensionArray) +impl vortex_array::VTable for vortex_array::arrays::Decimal -pub vortex_array::Canonical::FixedSizeList(vortex_array::arrays::FixedSizeListArray) +pub type vortex_array::arrays::Decimal::ArrayData = vortex_array::arrays::decimal::DecimalData -pub vortex_array::Canonical::List(vortex_array::arrays::ListViewArray) +pub type vortex_array::arrays::Decimal::Metadata = vortex_array::ProstMetadata -pub vortex_array::Canonical::Null(vortex_array::arrays::null::NullArray) +pub type vortex_array::arrays::Decimal::OperationsVTable = vortex_array::arrays::Decimal -pub vortex_array::Canonical::Primitive(vortex_array::arrays::PrimitiveArray) +pub type vortex_array::arrays::Decimal::ValidityVTable = vortex_array::arrays::Decimal -pub vortex_array::Canonical::Struct(vortex_array::arrays::StructArray) +pub fn vortex_array::arrays::Decimal::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub vortex_array::Canonical::VarBinView(vortex_array::arrays::VarBinViewArray) +pub fn vortex_array::arrays::Decimal::array_eq(array: &vortex_array::arrays::decimal::DecimalData, other: &vortex_array::arrays::decimal::DecimalData, precision: vortex_array::Precision) -> bool -pub vortex_array::Canonical::Variant(vortex_array::arrays::variant::VariantArray) +pub fn vortex_array::arrays::Decimal::array_hash(array: &vortex_array::arrays::decimal::DecimalData, state: &mut H, precision: vortex_array::Precision) -impl vortex_array::Canonical +pub fn vortex_array::arrays::Decimal::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::Canonical::as_bool(&self) -> &vortex_array::arrays::BoolArray +pub fn vortex_array::arrays::Decimal::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::Canonical::as_decimal(&self) -> &vortex_array::arrays::DecimalArray +pub fn vortex_array::arrays::Decimal::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::Canonical::as_extension(&self) -> &vortex_array::arrays::ExtensionArray +pub fn vortex_array::arrays::Decimal::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::Canonical::as_fixed_size_list(&self) -> &vortex_array::arrays::FixedSizeListArray +pub fn vortex_array::arrays::Decimal::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::Canonical::as_listview(&self) -> &vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::Decimal::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::Canonical::as_null(&self) -> &vortex_array::arrays::null::NullArray +pub fn vortex_array::arrays::Decimal::dtype(array: &vortex_array::arrays::decimal::DecimalData) -> &vortex_array::dtype::DType -pub fn vortex_array::Canonical::as_primitive(&self) -> &vortex_array::arrays::PrimitiveArray +pub fn vortex_array::arrays::Decimal::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::Canonical::as_struct(&self) -> &vortex_array::arrays::StructArray +pub fn vortex_array::arrays::Decimal::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::Canonical::as_varbinview(&self) -> &vortex_array::arrays::VarBinViewArray +pub fn vortex_array::arrays::Decimal::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::Canonical::into_bool(self) -> vortex_array::arrays::BoolArray +pub fn vortex_array::arrays::Decimal::len(array: &vortex_array::arrays::decimal::DecimalData) -> usize -pub fn vortex_array::Canonical::into_decimal(self) -> vortex_array::arrays::DecimalArray +pub fn vortex_array::arrays::Decimal::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::Canonical::into_extension(self) -> vortex_array::arrays::ExtensionArray +pub fn vortex_array::arrays::Decimal::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::Canonical::into_fixed_size_list(self) -> vortex_array::arrays::FixedSizeListArray +pub fn vortex_array::arrays::Decimal::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::Canonical::into_listview(self) -> vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::Decimal::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::Canonical::into_null(self) -> vortex_array::arrays::null::NullArray +pub fn vortex_array::arrays::Decimal::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::Canonical::into_primitive(self) -> vortex_array::arrays::PrimitiveArray +pub fn vortex_array::arrays::Decimal::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::Canonical::into_struct(self) -> vortex_array::arrays::StructArray +pub fn vortex_array::arrays::Decimal::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::Canonical::into_varbinview(self) -> vortex_array::arrays::VarBinViewArray +pub fn vortex_array::arrays::Decimal::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -impl vortex_array::Canonical +pub fn vortex_array::arrays::Decimal::stats(array: &vortex_array::arrays::decimal::DecimalData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::Canonical::compact(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Decimal::vtable(_array: &Self::ArrayData) -> &Self -impl vortex_array::Canonical +pub fn vortex_array::arrays::Decimal::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::Canonical::dtype(&self) -> &vortex_array::dtype::DType +impl vortex_array::VTable for vortex_array::arrays::Extension -pub fn vortex_array::Canonical::empty(dtype: &vortex_array::dtype::DType) -> vortex_array::Canonical +pub type vortex_array::arrays::Extension::ArrayData = vortex_array::arrays::extension::ExtensionData -pub fn vortex_array::Canonical::is_empty(&self) -> bool +pub type vortex_array::arrays::Extension::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::Canonical::len(&self) -> usize +pub type vortex_array::arrays::Extension::OperationsVTable = vortex_array::arrays::Extension -impl core::clone::Clone for vortex_array::Canonical +pub type vortex_array::arrays::Extension::ValidityVTable = vortex_array::ValidityVTableFromChild -pub fn vortex_array::Canonical::clone(&self) -> vortex_array::Canonical +pub fn vortex_array::arrays::Extension::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl core::convert::AsRef for vortex_array::Canonical +pub fn vortex_array::arrays::Extension::array_eq(array: &vortex_array::arrays::extension::ExtensionData, other: &vortex_array::arrays::extension::ExtensionData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::Canonical::as_ref(&self) -> &(dyn vortex_array::DynArray + 'static) +pub fn vortex_array::arrays::Extension::array_hash(array: &vortex_array::arrays::extension::ExtensionData, state: &mut H, precision: vortex_array::Precision) -impl core::convert::From for vortex_array::ArrayRef +pub fn vortex_array::arrays::Extension::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::ArrayRef::from(value: vortex_array::Canonical) -> Self +pub fn vortex_array::arrays::Extension::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -impl core::convert::From> for vortex_array::Canonical +pub fn vortex_array::arrays::Extension::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::Canonical::from(value: vortex_array::CanonicalView<'_>) -> Self +pub fn vortex_array::arrays::Extension::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -impl core::fmt::Debug for vortex_array::Canonical +pub fn vortex_array::arrays::Extension::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::Canonical::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Extension::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl vortex_array::Executable for vortex_array::Canonical +pub fn vortex_array::arrays::Extension::dtype(array: &vortex_array::arrays::extension::ExtensionData) -> &vortex_array::dtype::DType -pub fn vortex_array::Canonical::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Extension::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::IntoArray for vortex_array::Canonical +pub fn vortex_array::arrays::Extension::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::Canonical::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Extension::id(&self) -> vortex_array::ArrayId -pub enum vortex_array::CanonicalView<'a> +pub fn vortex_array::arrays::Extension::len(array: &vortex_array::arrays::extension::ExtensionData) -> usize -pub vortex_array::CanonicalView::Bool(&'a vortex_array::arrays::BoolArray) +pub fn vortex_array::arrays::Extension::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub vortex_array::CanonicalView::Decimal(&'a vortex_array::arrays::DecimalArray) +pub fn vortex_array::arrays::Extension::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub vortex_array::CanonicalView::Extension(&'a vortex_array::arrays::ExtensionArray) +pub fn vortex_array::arrays::Extension::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub vortex_array::CanonicalView::FixedSizeList(&'a vortex_array::arrays::FixedSizeListArray) +pub fn vortex_array::arrays::Extension::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub vortex_array::CanonicalView::List(&'a vortex_array::arrays::ListViewArray) +pub fn vortex_array::arrays::Extension::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub vortex_array::CanonicalView::Null(&'a vortex_array::arrays::null::NullArray) +pub fn vortex_array::arrays::Extension::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub vortex_array::CanonicalView::Primitive(&'a vortex_array::arrays::PrimitiveArray) +pub fn vortex_array::arrays::Extension::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub vortex_array::CanonicalView::Struct(&'a vortex_array::arrays::StructArray) +pub fn vortex_array::arrays::Extension::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub vortex_array::CanonicalView::VarBinView(&'a vortex_array::arrays::VarBinViewArray) +pub fn vortex_array::arrays::Extension::stats(array: &vortex_array::arrays::extension::ExtensionData) -> &vortex_array::stats::ArrayStats -pub vortex_array::CanonicalView::Variant(&'a vortex_array::arrays::variant::VariantArray) +pub fn vortex_array::arrays::Extension::vtable(_array: &Self::ArrayData) -> &Self -impl core::convert::AsRef for vortex_array::CanonicalView<'_> +pub fn vortex_array::arrays::Extension::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::CanonicalView<'_>::as_ref(&self) -> &dyn vortex_array::DynArray +impl vortex_array::VTable for vortex_array::arrays::Filter -impl core::convert::From> for vortex_array::Canonical +pub type vortex_array::arrays::Filter::ArrayData = vortex_array::arrays::filter::FilterData -pub fn vortex_array::Canonical::from(value: vortex_array::CanonicalView<'_>) -> Self +pub type vortex_array::arrays::Filter::Metadata = vortex_array::arrays::filter::vtable::FilterMetadata -impl<'a> core::clone::Clone for vortex_array::CanonicalView<'a> +pub type vortex_array::arrays::Filter::OperationsVTable = vortex_array::arrays::Filter -pub fn vortex_array::CanonicalView<'a>::clone(&self) -> vortex_array::CanonicalView<'a> +pub type vortex_array::arrays::Filter::ValidityVTable = vortex_array::arrays::Filter -impl<'a> core::fmt::Debug for vortex_array::CanonicalView<'a> +pub fn vortex_array::arrays::Filter::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::CanonicalView<'a>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Filter::array_eq(array: &vortex_array::arrays::filter::FilterData, other: &vortex_array::arrays::filter::FilterData, precision: vortex_array::Precision) -> bool -pub enum vortex_array::Columnar +pub fn vortex_array::arrays::Filter::array_hash(array: &vortex_array::arrays::filter::FilterData, state: &mut H, precision: vortex_array::Precision) -pub vortex_array::Columnar::Canonical(vortex_array::Canonical) +pub fn vortex_array::arrays::Filter::buffer(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> vortex_array::buffer::BufferHandle -pub vortex_array::Columnar::Constant(vortex_array::arrays::ConstantArray) +pub fn vortex_array::arrays::Filter::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -impl vortex_array::Columnar +pub fn vortex_array::arrays::Filter::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::filter::vtable::FilterMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::Columnar::constant>(scalar: S, len: usize) -> Self +pub fn vortex_array::arrays::Filter::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::Columnar::dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::Filter::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::Columnar::is_empty(&self) -> bool +pub fn vortex_array::arrays::Filter::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::Columnar::len(&self) -> usize +pub fn vortex_array::arrays::Filter::dtype(array: &vortex_array::arrays::filter::FilterData) -> &vortex_array::dtype::DType -impl vortex_array::Executable for vortex_array::Columnar +pub fn vortex_array::arrays::Filter::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::Columnar::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Filter::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::IntoArray for vortex_array::Columnar +pub fn vortex_array::arrays::Filter::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::Columnar::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Filter::len(array: &vortex_array::arrays::filter::FilterData) -> usize -pub enum vortex_array::ColumnarView<'a> +pub fn vortex_array::arrays::Filter::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub vortex_array::ColumnarView::Canonical(vortex_array::CanonicalView<'a>) +pub fn vortex_array::arrays::Filter::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub vortex_array::ColumnarView::Constant(&'a vortex_array::arrays::ConstantArray) +pub fn vortex_array::arrays::Filter::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -impl<'a> core::convert::AsRef for vortex_array::ColumnarView<'a> +pub fn vortex_array::arrays::Filter::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::ColumnarView<'a>::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::Filter::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub enum vortex_array::ExecutionStep +pub fn vortex_array::arrays::Filter::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub vortex_array::ExecutionStep::Done +pub fn vortex_array::arrays::Filter::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub vortex_array::ExecutionStep::ExecuteSlot(usize, vortex_array::DonePredicate) +pub fn vortex_array::arrays::Filter::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -impl core::fmt::Debug for vortex_array::ExecutionStep +pub fn vortex_array::arrays::Filter::stats(array: &vortex_array::arrays::filter::FilterData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::ExecutionStep::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Filter::vtable(_array: &vortex_array::arrays::filter::FilterData) -> &Self -pub enum vortex_array::Precision +pub fn vortex_array::arrays::Filter::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub vortex_array::Precision::Ptr +impl vortex_array::VTable for vortex_array::arrays::FixedSizeList -pub vortex_array::Precision::Value +pub type vortex_array::arrays::FixedSizeList::ArrayData = vortex_array::arrays::fixed_size_list::FixedSizeListData -impl core::clone::Clone for vortex_array::Precision +pub type vortex_array::arrays::FixedSizeList::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::Precision::clone(&self) -> vortex_array::Precision +pub type vortex_array::arrays::FixedSizeList::OperationsVTable = vortex_array::arrays::FixedSizeList -impl core::fmt::Debug for vortex_array::Precision +pub type vortex_array::arrays::FixedSizeList::ValidityVTable = vortex_array::arrays::FixedSizeList -pub fn vortex_array::Precision::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::FixedSizeList::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl core::marker::Copy for vortex_array::Precision +pub fn vortex_array::arrays::FixedSizeList::array_eq(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData, other: &vortex_array::arrays::fixed_size_list::FixedSizeListData, precision: vortex_array::Precision) -> bool -pub struct vortex_array::AnyCanonical +pub fn vortex_array::arrays::FixedSizeList::array_hash(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData, state: &mut H, precision: vortex_array::Precision) -impl vortex_array::matcher::Matcher for vortex_array::AnyCanonical +pub fn vortex_array::arrays::FixedSizeList::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub type vortex_array::AnyCanonical::Match<'a> = vortex_array::CanonicalView<'a> +pub fn vortex_array::arrays::FixedSizeList::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::AnyCanonical::matches(array: &dyn vortex_array::DynArray) -> bool +pub fn vortex_array::arrays::FixedSizeList::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::AnyCanonical::try_match<'a>(array: &'a dyn vortex_array::DynArray) -> core::option::Option +pub fn vortex_array::arrays::FixedSizeList::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub struct vortex_array::AnyColumnar +pub fn vortex_array::arrays::FixedSizeList::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::matcher::Matcher for vortex_array::AnyColumnar +pub fn vortex_array::arrays::FixedSizeList::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::AnyColumnar::Match<'a> = vortex_array::ColumnarView<'a> +pub fn vortex_array::arrays::FixedSizeList::dtype(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData) -> &vortex_array::dtype::DType -pub fn vortex_array::AnyColumnar::matches(array: &dyn vortex_array::DynArray) -> bool +pub fn vortex_array::arrays::FixedSizeList::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::AnyColumnar::try_match<'a>(array: &'a dyn vortex_array::DynArray) -> core::option::Option +pub fn vortex_array::arrays::FixedSizeList::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -#[repr(transparent)] pub struct vortex_array::ArrayAdapter(_) +pub fn vortex_array::arrays::FixedSizeList::id(&self) -> vortex_array::ArrayId -impl vortex_array::ArrayAdapter +pub fn vortex_array::arrays::FixedSizeList::len(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData) -> usize -pub fn vortex_array::ArrayAdapter::as_inner(&self) -> &::Array +pub fn vortex_array::arrays::FixedSizeList::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::ArrayAdapter::into_inner(self) -> ::Array +pub fn vortex_array::arrays::FixedSizeList::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -impl core::fmt::Debug for vortex_array::ArrayAdapter +pub fn vortex_array::arrays::FixedSizeList::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::ArrayAdapter::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::FixedSizeList::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -impl vortex_array::ArrayEq for vortex_array::ArrayAdapter +pub fn vortex_array::arrays::FixedSizeList::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::ArrayAdapter::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::FixedSizeList::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -impl vortex_array::ArrayHash for vortex_array::ArrayAdapter +pub fn vortex_array::arrays::FixedSizeList::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::ArrayAdapter::array_hash(&self, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::FixedSizeList::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -impl vortex_array::ArrayVisitor for vortex_array::ArrayAdapter +pub fn vortex_array::arrays::FixedSizeList::stats(array: &vortex_array::arrays::fixed_size_list::FixedSizeListData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::ArrayAdapter::buffer_handles(&self) -> alloc::vec::Vec +pub fn vortex_array::arrays::FixedSizeList::vtable(_array: &vortex_array::arrays::fixed_size_list::FixedSizeListData) -> &Self -pub fn vortex_array::ArrayAdapter::buffer_names(&self) -> alloc::vec::Vec +pub fn vortex_array::arrays::FixedSizeList::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::ArrayAdapter::buffers(&self) -> alloc::vec::Vec +impl vortex_array::VTable for vortex_array::arrays::List -pub fn vortex_array::ArrayAdapter::children(&self) -> alloc::vec::Vec +pub type vortex_array::arrays::List::ArrayData = vortex_array::arrays::list::ListData -pub fn vortex_array::ArrayAdapter::children_names(&self) -> alloc::vec::Vec +pub type vortex_array::arrays::List::Metadata = vortex_array::ProstMetadata -pub fn vortex_array::ArrayAdapter::is_host(&self) -> bool +pub type vortex_array::arrays::List::OperationsVTable = vortex_array::arrays::List -pub fn vortex_array::ArrayAdapter::metadata(&self) -> vortex_error::VortexResult>> +pub type vortex_array::arrays::List::ValidityVTable = vortex_array::arrays::List -pub fn vortex_array::ArrayAdapter::metadata_fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::List::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::ArrayAdapter::named_buffers(&self) -> alloc::vec::Vec<(alloc::string::String, vortex_array::buffer::BufferHandle)> +pub fn vortex_array::arrays::List::array_eq(array: &vortex_array::arrays::list::ListData, other: &vortex_array::arrays::list::ListData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::ArrayAdapter::named_children(&self) -> alloc::vec::Vec<(alloc::string::String, vortex_array::ArrayRef)> +pub fn vortex_array::arrays::List::array_hash(array: &vortex_array::arrays::list::ListData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::ArrayAdapter::nbuffers(&self) -> usize +pub fn vortex_array::arrays::List::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::ArrayAdapter::nchildren(&self) -> usize +pub fn vortex_array::arrays::List::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::ArrayAdapter::nth_child(&self, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::List::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::ArrayAdapter::slots(&self) -> &[core::option::Option] +pub fn vortex_array::arrays::List::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -impl vortex_array::DynArray for vortex_array::ArrayAdapter +pub fn vortex_array::arrays::List::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::ArrayAdapter::all_invalid(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::ArrayAdapter::all_valid(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::dtype(array: &vortex_array::arrays::list::ListData) -> &vortex_array::dtype::DType -pub fn vortex_array::ArrayAdapter::append_to_builder(&self, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::List::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::ArrayAdapter::as_any(&self) -> &dyn core::any::Any +pub fn vortex_array::arrays::List::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::ArrayAdapter::as_any_arc(self: alloc::sync::Arc) -> alloc::sync::Arc<(dyn core::any::Any + core::marker::Send + core::marker::Sync)> +pub fn vortex_array::arrays::List::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::ArrayAdapter::dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::List::len(array: &vortex_array::arrays::list::ListData) -> usize -pub fn vortex_array::ArrayAdapter::encoding_id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::List::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::ArrayAdapter::filter(&self, mask: vortex_mask::Mask) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::ArrayAdapter::invalid_count(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::ArrayAdapter::is_empty(&self) -> bool +pub fn vortex_array::arrays::List::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::ArrayAdapter::is_invalid(&self, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::ArrayAdapter::is_valid(&self, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::ArrayAdapter::len(&self) -> usize +pub fn vortex_array::arrays::List::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::ArrayAdapter::scalar_at(&self, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::ArrayAdapter::slice(&self, range: core::ops::range::Range) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::stats(array: &vortex_array::arrays::list::ListData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::ArrayAdapter::statistics(&self) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::List::vtable(_array: &vortex_array::arrays::list::ListData) -> &Self -pub fn vortex_array::ArrayAdapter::take(&self, indices: vortex_array::ArrayRef) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::ArrayAdapter::to_array(&self) -> vortex_array::ArrayRef +impl vortex_array::VTable for vortex_array::arrays::ListView -pub fn vortex_array::ArrayAdapter::to_canonical(&self) -> vortex_error::VortexResult +pub type vortex_array::arrays::ListView::ArrayData = vortex_array::arrays::listview::ListViewData -pub fn vortex_array::ArrayAdapter::valid_count(&self) -> vortex_error::VortexResult +pub type vortex_array::arrays::ListView::Metadata = vortex_array::ProstMetadata -pub fn vortex_array::ArrayAdapter::validity(&self) -> vortex_error::VortexResult +pub type vortex_array::arrays::ListView::OperationsVTable = vortex_array::arrays::ListView -pub fn vortex_array::ArrayAdapter::validity_mask(&self) -> vortex_error::VortexResult +pub type vortex_array::arrays::ListView::ValidityVTable = vortex_array::arrays::ListView -pub fn vortex_array::ArrayAdapter::vtable(&self) -> &dyn vortex_array::vtable::DynVTable +pub fn vortex_array::arrays::ListView::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl vortex_array::scalar_fn::ReduceNode for vortex_array::ArrayAdapter +pub fn vortex_array::arrays::ListView::array_eq(array: &vortex_array::arrays::listview::ListViewData, other: &vortex_array::arrays::listview::ListViewData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::ArrayAdapter::as_any(&self) -> &dyn core::any::Any +pub fn vortex_array::arrays::ListView::array_hash(array: &vortex_array::arrays::listview::ListViewData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::ArrayAdapter::child(&self, idx: usize) -> vortex_array::scalar_fn::ReduceNodeRef +pub fn vortex_array::arrays::ListView::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::ArrayAdapter::child_count(&self) -> usize +pub fn vortex_array::arrays::ListView::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub fn vortex_array::ArrayAdapter::node_dtype(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ListView::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::ArrayAdapter::scalar_fn(&self) -> core::option::Option<&vortex_array::scalar_fn::ScalarFnRef> +pub fn vortex_array::arrays::ListView::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub struct vortex_array::CanonicalValidity(pub vortex_array::Canonical) +pub fn vortex_array::arrays::ListView::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::Executable for vortex_array::CanonicalValidity +pub fn vortex_array::arrays::ListView::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::CanonicalValidity::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ListView::dtype(array: &vortex_array::arrays::listview::ListViewData) -> &vortex_array::dtype::DType -pub struct vortex_array::EmptyMetadata +pub fn vortex_array::arrays::ListView::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::EmptyMetadata +pub fn vortex_array::arrays::ListView::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::EmptyMetadata::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::ListView::id(&self) -> vortex_array::ArrayId -impl vortex_array::DeserializeMetadata for vortex_array::EmptyMetadata +pub fn vortex_array::arrays::ListView::len(array: &vortex_array::arrays::listview::ListViewData) -> usize -pub type vortex_array::EmptyMetadata::Output = vortex_array::EmptyMetadata +pub fn vortex_array::arrays::ListView::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::EmptyMetadata::deserialize(metadata: &[u8]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ListView::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -impl vortex_array::SerializeMetadata for vortex_array::EmptyMetadata +pub fn vortex_array::arrays::ListView::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::EmptyMetadata::serialize(self) -> alloc::vec::Vec +pub fn vortex_array::arrays::ListView::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub struct vortex_array::ExecutionCtx +pub fn vortex_array::arrays::ListView::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -impl vortex_array::ExecutionCtx +pub fn vortex_array::arrays::ListView::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::ExecutionCtx::log(&mut self, msg: core::fmt::Arguments<'_>) +pub fn vortex_array::arrays::ListView::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::ExecutionCtx::new(session: vortex_session::VortexSession) -> Self +pub fn vortex_array::arrays::ListView::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::ExecutionCtx::session(&self) -> &vortex_session::VortexSession +pub fn vortex_array::arrays::ListView::stats(array: &vortex_array::arrays::listview::ListViewData) -> &vortex_array::stats::ArrayStats -impl core::clone::Clone for vortex_array::ExecutionCtx +pub fn vortex_array::arrays::ListView::vtable(_array: &vortex_array::arrays::listview::ListViewData) -> &Self -pub fn vortex_array::ExecutionCtx::clone(&self) -> vortex_array::ExecutionCtx +pub fn vortex_array::arrays::ListView::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl core::fmt::Debug for vortex_array::ExecutionCtx +impl vortex_array::VTable for vortex_array::arrays::Masked -pub fn vortex_array::ExecutionCtx::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::arrays::Masked::ArrayData = vortex_array::arrays::masked::MaskedData -impl core::fmt::Display for vortex_array::ExecutionCtx +pub type vortex_array::arrays::Masked::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::ExecutionCtx::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::arrays::Masked::OperationsVTable = vortex_array::arrays::Masked -impl core::ops::drop::Drop for vortex_array::ExecutionCtx +pub type vortex_array::arrays::Masked::ValidityVTable = vortex_array::arrays::Masked -pub fn vortex_array::ExecutionCtx::drop(&mut self) +pub fn vortex_array::arrays::Masked::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub struct vortex_array::ExecutionResult +pub fn vortex_array::arrays::Masked::array_eq(array: &vortex_array::arrays::masked::MaskedData, other: &vortex_array::arrays::masked::MaskedData, precision: vortex_array::Precision) -> bool -impl vortex_array::ExecutionResult +pub fn vortex_array::arrays::Masked::array_hash(array: &vortex_array::arrays::masked::MaskedData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::ExecutionResult::array(&self) -> &vortex_array::ArrayRef +pub fn vortex_array::arrays::Masked::buffer(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::ExecutionResult::done(result: impl vortex_array::IntoArray) -> Self +pub fn vortex_array::arrays::Masked::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::ExecutionResult::execute_slot(array: impl vortex_array::IntoArray, slot_idx: usize) -> Self +pub fn vortex_array::arrays::Masked::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::ExecutionResult::into_parts(self) -> (vortex_array::ArrayRef, vortex_array::ExecutionStep) +pub fn vortex_array::arrays::Masked::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::ExecutionResult::step(&self) -> &vortex_array::ExecutionStep +pub fn vortex_array::arrays::Masked::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl core::fmt::Debug for vortex_array::ExecutionResult +pub fn vortex_array::arrays::Masked::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::ExecutionResult::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Masked::dtype(array: &vortex_array::arrays::masked::MaskedData) -> &vortex_array::dtype::DType -pub struct vortex_array::MaskFuture +pub fn vortex_array::arrays::Masked::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::MaskFuture +pub fn vortex_array::arrays::Masked::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::MaskFuture::inspect(self, f: impl core::ops::function::FnOnce(&vortex_error::SharedVortexResult) + 'static + core::marker::Send + core::marker::Sync) -> Self +pub fn vortex_array::arrays::Masked::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::MaskFuture::is_empty(&self) -> bool +pub fn vortex_array::arrays::Masked::len(array: &vortex_array::arrays::masked::MaskedData) -> usize -pub fn vortex_array::MaskFuture::len(&self) -> usize +pub fn vortex_array::arrays::Masked::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::MaskFuture::new(len: usize, fut: F) -> Self where F: core::future::future::Future> + core::marker::Send + 'static +pub fn vortex_array::arrays::Masked::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::MaskFuture::new_true(row_count: usize) -> Self +pub fn vortex_array::arrays::Masked::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::MaskFuture::ready(mask: vortex_mask::Mask) -> Self +pub fn vortex_array::arrays::Masked::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::MaskFuture::slice(&self, range: core::ops::range::Range) -> Self +pub fn vortex_array::arrays::Masked::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -impl core::clone::Clone for vortex_array::MaskFuture +pub fn vortex_array::arrays::Masked::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::MaskFuture::clone(&self) -> vortex_array::MaskFuture +pub fn vortex_array::arrays::Masked::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl core::future::future::Future for vortex_array::MaskFuture +pub fn vortex_array::arrays::Masked::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub type vortex_array::MaskFuture::Output = core::result::Result +pub fn vortex_array::arrays::Masked::stats(array: &vortex_array::arrays::masked::MaskedData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::MaskFuture::poll(self: core::pin::Pin<&mut Self>, cx: &mut core::task::wake::Context<'_>) -> core::task::poll::Poll +pub fn vortex_array::arrays::Masked::vtable(_array: &Self::ArrayData) -> &Self -pub struct vortex_array::ProstMetadata(pub M) +pub fn vortex_array::arrays::Masked::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl core::fmt::Debug for vortex_array::ProstMetadata +impl vortex_array::VTable for vortex_array::arrays::Primitive -pub fn vortex_array::ProstMetadata::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::arrays::Primitive::ArrayData = vortex_array::arrays::primitive::PrimitiveData -impl core::ops::deref::Deref for vortex_array::ProstMetadata +pub type vortex_array::arrays::Primitive::Metadata = vortex_array::EmptyMetadata -pub type vortex_array::ProstMetadata::Target = M +pub type vortex_array::arrays::Primitive::OperationsVTable = vortex_array::arrays::Primitive -pub fn vortex_array::ProstMetadata::deref(&self) -> &Self::Target +pub type vortex_array::arrays::Primitive::ValidityVTable = vortex_array::arrays::Primitive -impl vortex_array::DeserializeMetadata for vortex_array::ProstMetadata where M: core::fmt::Debug + prost::message::Message + core::default::Default +pub fn vortex_array::arrays::Primitive::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub type vortex_array::ProstMetadata::Output = M +pub fn vortex_array::arrays::Primitive::array_eq(array: &vortex_array::arrays::primitive::PrimitiveData, other: &vortex_array::arrays::primitive::PrimitiveData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::ProstMetadata::deserialize(metadata: &[u8]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Primitive::array_hash(array: &vortex_array::arrays::primitive::PrimitiveData, state: &mut H, precision: vortex_array::Precision) -impl vortex_array::SerializeMetadata for vortex_array::ProstMetadata where M: prost::message::Message +pub fn vortex_array::arrays::Primitive::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::ProstMetadata::serialize(self) -> alloc::vec::Vec +pub fn vortex_array::arrays::Primitive::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub struct vortex_array::RawMetadata(pub alloc::vec::Vec) +pub fn vortex_array::arrays::Primitive::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -impl core::fmt::Debug for vortex_array::RawMetadata +pub fn vortex_array::arrays::Primitive::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::RawMetadata::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Primitive::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::DeserializeMetadata for vortex_array::RawMetadata +pub fn vortex_array::arrays::Primitive::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub type vortex_array::RawMetadata::Output = alloc::vec::Vec +pub fn vortex_array::arrays::Primitive::dtype(array: &vortex_array::arrays::primitive::PrimitiveData) -> &vortex_array::dtype::DType -pub fn vortex_array::RawMetadata::deserialize(metadata: &[u8]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Primitive::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::SerializeMetadata for vortex_array::RawMetadata +pub fn vortex_array::arrays::Primitive::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::RawMetadata::serialize(self) -> alloc::vec::Vec +pub fn vortex_array::arrays::Primitive::id(&self) -> vortex_array::ArrayId -pub struct vortex_array::RecursiveCanonical(pub vortex_array::Canonical) +pub fn vortex_array::arrays::Primitive::len(array: &vortex_array::arrays::primitive::PrimitiveData) -> usize -impl vortex_array::Executable for vortex_array::RecursiveCanonical +pub fn vortex_array::arrays::Primitive::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::RecursiveCanonical::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Primitive::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub static vortex_array::LEGACY_SESSION: std::sync::lazy_lock::LazyLock +pub fn vortex_array::arrays::Primitive::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub trait vortex_array::ArrayEq +pub fn vortex_array::arrays::Primitive::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::ArrayEq::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Primitive::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -impl vortex_array::ArrayEq for (dyn vortex_array::DynArray + '_) +pub fn vortex_array::arrays::Primitive::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn (dyn vortex_array::DynArray + '_)::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Primitive::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::ArrayEq for vortex_array::ArrayRef +pub fn vortex_array::arrays::Primitive::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::ArrayRef::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Primitive::stats(array: &vortex_array::arrays::primitive::PrimitiveData) -> &vortex_array::stats::ArrayStats -impl vortex_array::ArrayEq for vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Primitive::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::buffer::BufferHandle::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Primitive::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl vortex_array::ArrayEq for vortex_array::patches::Patches +impl vortex_array::VTable for vortex_array::arrays::Shared -pub fn vortex_array::patches::Patches::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool +pub type vortex_array::arrays::Shared::ArrayData = vortex_array::arrays::shared::SharedData -impl vortex_array::ArrayEq for vortex_array::validity::Validity +pub type vortex_array::arrays::Shared::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::validity::Validity::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool +pub type vortex_array::arrays::Shared::OperationsVTable = vortex_array::arrays::Shared -impl vortex_array::ArrayEq for vortex_buffer::bit::buf::BitBuffer +pub type vortex_array::arrays::Shared::ValidityVTable = vortex_array::arrays::Shared -pub fn vortex_buffer::bit::buf::BitBuffer::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Shared::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl vortex_array::ArrayEq for vortex_mask::Mask +pub fn vortex_array::arrays::Shared::array_eq(array: &vortex_array::arrays::shared::SharedData, other: &vortex_array::arrays::shared::SharedData, precision: vortex_array::Precision) -> bool -pub fn vortex_mask::Mask::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Shared::array_hash(array: &vortex_array::arrays::shared::SharedData, state: &mut H, precision: vortex_array::Precision) -impl vortex_array::ArrayEq for vortex_buffer::buffer::Buffer +pub fn vortex_array::arrays::Shared::buffer(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_buffer::buffer::Buffer::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Shared::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -impl vortex_array::ArrayEq for core::option::Option +pub fn vortex_array::arrays::Shared::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn core::option::Option::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Shared::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -impl vortex_array::ArrayEq for vortex_array::ArrayAdapter +pub fn vortex_array::arrays::Shared::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::ArrayAdapter::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Shared::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl vortex_array::ArrayEq for vortex_array::vtable::Array +pub fn vortex_array::arrays::Shared::dtype(array: &vortex_array::arrays::shared::SharedData) -> &vortex_array::dtype::DType -pub fn vortex_array::vtable::Array::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::Shared::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub trait vortex_array::ArrayHash +pub fn vortex_array::arrays::Shared::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::ArrayHash::array_hash(&self, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Shared::id(&self) -> vortex_array::ArrayId -impl vortex_array::ArrayHash for (dyn vortex_array::DynArray + '_) +pub fn vortex_array::arrays::Shared::len(array: &vortex_array::arrays::shared::SharedData) -> usize -pub fn (dyn vortex_array::DynArray + '_)::array_hash(&self, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Shared::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -impl vortex_array::ArrayHash for vortex_array::ArrayRef +pub fn vortex_array::arrays::Shared::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::ArrayRef::array_hash(&self, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Shared::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -impl vortex_array::ArrayHash for vortex_array::buffer::BufferHandle +pub fn vortex_array::arrays::Shared::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::buffer::BufferHandle::array_hash(&self, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Shared::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -impl vortex_array::ArrayHash for vortex_array::patches::Patches +pub fn vortex_array::arrays::Shared::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::patches::Patches::array_hash(&self, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Shared::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::ArrayHash for vortex_array::validity::Validity +pub fn vortex_array::arrays::Shared::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::validity::Validity::array_hash(&self, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Shared::stats(array: &vortex_array::arrays::shared::SharedData) -> &vortex_array::stats::ArrayStats -impl vortex_array::ArrayHash for vortex_buffer::bit::buf::BitBuffer +pub fn vortex_array::arrays::Shared::vtable(_array: &vortex_array::arrays::shared::SharedData) -> &Self -pub fn vortex_buffer::bit::buf::BitBuffer::array_hash(&self, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Shared::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl vortex_array::ArrayHash for vortex_mask::Mask +impl vortex_array::VTable for vortex_array::arrays::Struct -pub fn vortex_mask::Mask::array_hash(&self, state: &mut H, precision: vortex_array::Precision) +pub type vortex_array::arrays::Struct::ArrayData = vortex_array::arrays::struct_::StructData -impl vortex_array::ArrayHash for vortex_buffer::buffer::Buffer +pub type vortex_array::arrays::Struct::Metadata = vortex_array::EmptyMetadata -pub fn vortex_buffer::buffer::Buffer::array_hash(&self, state: &mut H, precision: vortex_array::Precision) +pub type vortex_array::arrays::Struct::OperationsVTable = vortex_array::arrays::Struct -impl vortex_array::ArrayHash for core::option::Option +pub type vortex_array::arrays::Struct::ValidityVTable = vortex_array::arrays::Struct -pub fn core::option::Option::array_hash(&self, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Struct::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl vortex_array::ArrayHash for vortex_array::ArrayAdapter +pub fn vortex_array::arrays::Struct::array_eq(array: &vortex_array::arrays::struct_::StructData, other: &vortex_array::arrays::struct_::StructData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::ArrayAdapter::array_hash(&self, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Struct::array_hash(array: &vortex_array::arrays::struct_::StructData, state: &mut H, precision: vortex_array::Precision) -impl vortex_array::ArrayHash for vortex_array::vtable::Array +pub fn vortex_array::arrays::Struct::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::vtable::Array::array_hash(&self, state: &mut H, precision: vortex_array::Precision) +pub fn vortex_array::arrays::Struct::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub trait vortex_array::ArrayVisitor +pub fn vortex_array::arrays::Struct::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::ArrayVisitor::buffer_handles(&self) -> alloc::vec::Vec +pub fn vortex_array::arrays::Struct::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::ArrayVisitor::buffer_names(&self) -> alloc::vec::Vec +pub fn vortex_array::arrays::Struct::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::ArrayVisitor::buffers(&self) -> alloc::vec::Vec +pub fn vortex_array::arrays::Struct::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::ArrayVisitor::children(&self) -> alloc::vec::Vec +pub fn vortex_array::arrays::Struct::dtype(array: &vortex_array::arrays::struct_::StructData) -> &vortex_array::dtype::DType -pub fn vortex_array::ArrayVisitor::children_names(&self) -> alloc::vec::Vec +pub fn vortex_array::arrays::Struct::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::ArrayVisitor::is_host(&self) -> bool +pub fn vortex_array::arrays::Struct::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::ArrayVisitor::metadata(&self) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::Struct::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::ArrayVisitor::metadata_fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::Struct::len(array: &vortex_array::arrays::struct_::StructData) -> usize -pub fn vortex_array::ArrayVisitor::named_buffers(&self) -> alloc::vec::Vec<(alloc::string::String, vortex_array::buffer::BufferHandle)> +pub fn vortex_array::arrays::Struct::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::ArrayVisitor::named_children(&self) -> alloc::vec::Vec<(alloc::string::String, vortex_array::ArrayRef)> +pub fn vortex_array::arrays::Struct::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::ArrayVisitor::nbuffers(&self) -> usize +pub fn vortex_array::arrays::Struct::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::ArrayVisitor::nchildren(&self) -> usize +pub fn vortex_array::arrays::Struct::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::ArrayVisitor::nth_child(&self, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::Struct::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::ArrayVisitor::slots(&self) -> &[core::option::Option] +pub fn vortex_array::arrays::Struct::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -impl vortex_array::ArrayVisitor for alloc::sync::Arc +pub fn vortex_array::arrays::Struct::slot_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn alloc::sync::Arc::buffer_handles(&self) -> alloc::vec::Vec +pub fn vortex_array::arrays::Struct::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn alloc::sync::Arc::buffer_names(&self) -> alloc::vec::Vec +pub fn vortex_array::arrays::Struct::stats(array: &vortex_array::arrays::struct_::StructData) -> &vortex_array::stats::ArrayStats -pub fn alloc::sync::Arc::buffers(&self) -> alloc::vec::Vec +pub fn vortex_array::arrays::Struct::vtable(_array: &Self::ArrayData) -> &Self -pub fn alloc::sync::Arc::children(&self) -> alloc::vec::Vec +pub fn vortex_array::arrays::Struct::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn alloc::sync::Arc::children_names(&self) -> alloc::vec::Vec +impl vortex_array::VTable for vortex_array::arrays::VarBin -pub fn alloc::sync::Arc::is_host(&self) -> bool +pub type vortex_array::arrays::VarBin::ArrayData = vortex_array::arrays::varbin::VarBinData -pub fn alloc::sync::Arc::metadata(&self) -> vortex_error::VortexResult>> +pub type vortex_array::arrays::VarBin::Metadata = vortex_array::ProstMetadata -pub fn alloc::sync::Arc::metadata_fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::arrays::VarBin::OperationsVTable = vortex_array::arrays::VarBin -pub fn alloc::sync::Arc::named_buffers(&self) -> alloc::vec::Vec<(alloc::string::String, vortex_array::buffer::BufferHandle)> +pub type vortex_array::arrays::VarBin::ValidityVTable = vortex_array::arrays::VarBin -pub fn alloc::sync::Arc::named_children(&self) -> alloc::vec::Vec<(alloc::string::String, vortex_array::ArrayRef)> +pub fn vortex_array::arrays::VarBin::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn alloc::sync::Arc::nbuffers(&self) -> usize +pub fn vortex_array::arrays::VarBin::array_eq(array: &vortex_array::arrays::varbin::VarBinData, other: &vortex_array::arrays::varbin::VarBinData, precision: vortex_array::Precision) -> bool -pub fn alloc::sync::Arc::nchildren(&self) -> usize +pub fn vortex_array::arrays::VarBin::array_hash(array: &vortex_array::arrays::varbin::VarBinData, state: &mut H, precision: vortex_array::Precision) -pub fn alloc::sync::Arc::nth_child(&self, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::VarBin::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn alloc::sync::Arc::slots(&self) -> &[core::option::Option] +pub fn vortex_array::arrays::VarBin::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -impl vortex_array::ArrayVisitor for vortex_array::ArrayAdapter +pub fn vortex_array::arrays::VarBin::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::ArrayAdapter::buffer_handles(&self) -> alloc::vec::Vec +pub fn vortex_array::arrays::VarBin::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::ArrayAdapter::buffer_names(&self) -> alloc::vec::Vec +pub fn vortex_array::arrays::VarBin::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::ArrayAdapter::buffers(&self) -> alloc::vec::Vec +pub fn vortex_array::arrays::VarBin::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::ArrayAdapter::children(&self) -> alloc::vec::Vec +pub fn vortex_array::arrays::VarBin::dtype(array: &vortex_array::arrays::varbin::VarBinData) -> &vortex_array::dtype::DType -pub fn vortex_array::ArrayAdapter::children_names(&self) -> alloc::vec::Vec +pub fn vortex_array::arrays::VarBin::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::ArrayAdapter::is_host(&self) -> bool +pub fn vortex_array::arrays::VarBin::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::ArrayAdapter::metadata(&self) -> vortex_error::VortexResult>> +pub fn vortex_array::arrays::VarBin::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::ArrayAdapter::metadata_fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn vortex_array::arrays::VarBin::len(array: &vortex_array::arrays::varbin::VarBinData) -> usize -pub fn vortex_array::ArrayAdapter::named_buffers(&self) -> alloc::vec::Vec<(alloc::string::String, vortex_array::buffer::BufferHandle)> +pub fn vortex_array::arrays::VarBin::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::ArrayAdapter::named_children(&self) -> alloc::vec::Vec<(alloc::string::String, vortex_array::ArrayRef)> +pub fn vortex_array::arrays::VarBin::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::ArrayAdapter::nbuffers(&self) -> usize +pub fn vortex_array::arrays::VarBin::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::ArrayAdapter::nchildren(&self) -> usize +pub fn vortex_array::arrays::VarBin::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::ArrayAdapter::nth_child(&self, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::VarBin::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::ArrayAdapter::slots(&self) -> &[core::option::Option] +pub fn vortex_array::arrays::VarBin::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -impl vortex_array::ArrayVisitor for vortex_array::vtable::Array +pub fn vortex_array::arrays::VarBin::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::vtable::Array::buffer_handles(&self) -> alloc::vec::Vec +pub fn vortex_array::arrays::VarBin::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::vtable::Array::buffer_names(&self) -> alloc::vec::Vec +pub fn vortex_array::arrays::VarBin::stats(array: &vortex_array::arrays::varbin::VarBinData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::vtable::Array::buffers(&self) -> alloc::vec::Vec +pub fn vortex_array::arrays::VarBin::vtable(_array: &vortex_array::arrays::varbin::VarBinData) -> &Self -pub fn vortex_array::vtable::Array::children(&self) -> alloc::vec::Vec +pub fn vortex_array::arrays::VarBin::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::vtable::Array::children_names(&self) -> alloc::vec::Vec +impl vortex_array::VTable for vortex_array::arrays::VarBinView -pub fn vortex_array::vtable::Array::is_host(&self) -> bool +pub type vortex_array::arrays::VarBinView::ArrayData = vortex_array::arrays::varbinview::VarBinViewData -pub fn vortex_array::vtable::Array::metadata(&self) -> vortex_error::VortexResult>> +pub type vortex_array::arrays::VarBinView::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::vtable::Array::metadata_fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub type vortex_array::arrays::VarBinView::OperationsVTable = vortex_array::arrays::VarBinView -pub fn vortex_array::vtable::Array::named_buffers(&self) -> alloc::vec::Vec<(alloc::string::String, vortex_array::buffer::BufferHandle)> +pub type vortex_array::arrays::VarBinView::ValidityVTable = vortex_array::arrays::VarBinView -pub fn vortex_array::vtable::Array::named_children(&self) -> alloc::vec::Vec<(alloc::string::String, vortex_array::ArrayRef)> +pub fn vortex_array::arrays::VarBinView::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::vtable::Array::nbuffers(&self) -> usize +pub fn vortex_array::arrays::VarBinView::array_eq(array: &vortex_array::arrays::varbinview::VarBinViewData, other: &vortex_array::arrays::varbinview::VarBinViewData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::vtable::Array::nchildren(&self) -> usize +pub fn vortex_array::arrays::VarBinView::array_hash(array: &vortex_array::arrays::varbinview::VarBinViewData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::vtable::Array::nth_child(&self, idx: usize) -> core::option::Option +pub fn vortex_array::arrays::VarBinView::buffer(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::vtable::Array::slots(&self) -> &[core::option::Option] +pub fn vortex_array::arrays::VarBinView::buffer_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -pub trait vortex_array::ArrayVisitorExt: vortex_array::DynArray +pub fn vortex_array::arrays::VarBinView::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::ArrayVisitorExt::depth_first_traversal(&self) -> impl core::iter::traits::iterator::Iterator +pub fn vortex_array::arrays::VarBinView::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::ArrayVisitorExt::nbuffers_recursive(&self) -> usize +pub fn vortex_array::arrays::VarBinView::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::ArrayVisitorExt for A +pub fn vortex_array::arrays::VarBinView::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn A::depth_first_traversal(&self) -> impl core::iter::traits::iterator::Iterator +pub fn vortex_array::arrays::VarBinView::dtype(array: &vortex_array::arrays::varbinview::VarBinViewData) -> &vortex_array::dtype::DType -pub fn A::nbuffers_recursive(&self) -> usize +pub fn vortex_array::arrays::VarBinView::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub trait vortex_array::DeserializeMetadata where Self: core::marker::Sized +pub fn vortex_array::arrays::VarBinView::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub type vortex_array::DeserializeMetadata::Output +pub fn vortex_array::arrays::VarBinView::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::DeserializeMetadata::deserialize(metadata: &[u8]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinView::len(array: &vortex_array::arrays::varbinview::VarBinViewData) -> usize -impl vortex_array::DeserializeMetadata for vortex_array::EmptyMetadata +pub fn vortex_array::arrays::VarBinView::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub type vortex_array::EmptyMetadata::Output = vortex_array::EmptyMetadata +pub fn vortex_array::arrays::VarBinView::nbuffers(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::EmptyMetadata::deserialize(metadata: &[u8]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinView::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -impl vortex_array::DeserializeMetadata for vortex_array::RawMetadata +pub fn vortex_array::arrays::VarBinView::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub type vortex_array::RawMetadata::Output = alloc::vec::Vec +pub fn vortex_array::arrays::VarBinView::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::RawMetadata::deserialize(metadata: &[u8]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinView::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -impl vortex_array::DeserializeMetadata for vortex_array::ProstMetadata where M: core::fmt::Debug + prost::message::Message + core::default::Default +pub fn vortex_array::arrays::VarBinView::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub type vortex_array::ProstMetadata::Output = M +pub fn vortex_array::arrays::VarBinView::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::ProstMetadata::deserialize(metadata: &[u8]) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinView::stats(array: &vortex_array::arrays::varbinview::VarBinViewData) -> &vortex_array::stats::ArrayStats -pub trait vortex_array::DynArray: 'static + vortex_array::array::private::Sealed + core::marker::Send + core::marker::Sync + core::fmt::Debug + vortex_array::DynArrayEq + vortex_array::DynArrayHash + vortex_array::ArrayVisitor + vortex_array::scalar_fn::ReduceNode +pub fn vortex_array::arrays::VarBinView::vtable(_array: &vortex_array::arrays::varbinview::VarBinViewData) -> &Self -pub fn vortex_array::DynArray::all_invalid(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinView::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::DynArray::all_valid(&self) -> vortex_error::VortexResult +impl vortex_array::VTable for vortex_array::arrays::Variant -pub fn vortex_array::DynArray::append_to_builder(&self, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub type vortex_array::arrays::Variant::ArrayData = vortex_array::arrays::variant::VariantData -pub fn vortex_array::DynArray::as_any(&self) -> &dyn core::any::Any +pub type vortex_array::arrays::Variant::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::DynArray::as_any_arc(self: alloc::sync::Arc) -> alloc::sync::Arc<(dyn core::any::Any + core::marker::Send + core::marker::Sync)> +pub type vortex_array::arrays::Variant::OperationsVTable = vortex_array::arrays::Variant -pub fn vortex_array::DynArray::dtype(&self) -> &vortex_array::dtype::DType +pub type vortex_array::arrays::Variant::ValidityVTable = vortex_array::arrays::Variant -pub fn vortex_array::DynArray::encoding_id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::Variant::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::DynArray::filter(&self, mask: vortex_mask::Mask) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::array_eq(array: &vortex_array::arrays::variant::VariantData, other: &vortex_array::arrays::variant::VariantData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::DynArray::invalid_count(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::array_hash(array: &vortex_array::arrays::variant::VariantData, state: &mut H, precision: vortex_array::Precision) -pub fn vortex_array::DynArray::is_empty(&self) -> bool +pub fn vortex_array::arrays::Variant::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::DynArray::is_invalid(&self, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn vortex_array::DynArray::is_valid(&self, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::build(dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::DynArray::len(&self) -> usize +pub fn vortex_array::arrays::Variant::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::DynArray::scalar_at(&self, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::DynArray::slice(&self, range: core::ops::range::Range) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::DynArray::statistics(&self) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::Variant::dtype(array: &Self::ArrayData) -> &vortex_array::dtype::DType -pub fn vortex_array::DynArray::take(&self, indices: vortex_array::ArrayRef) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::DynArray::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Variant::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::DynArray::to_canonical(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::DynArray::valid_count(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::len(array: &Self::ArrayData) -> usize -pub fn vortex_array::DynArray::validity(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::DynArray::validity_mask(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::DynArray::vtable(&self) -> &dyn vortex_array::vtable::DynVTable +pub fn vortex_array::arrays::Variant::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -impl vortex_array::DynArray for alloc::sync::Arc +pub fn vortex_array::arrays::Variant::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn alloc::sync::Arc::all_invalid(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn alloc::sync::Arc::all_valid(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn alloc::sync::Arc::append_to_builder(&self, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::Variant::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn alloc::sync::Arc::as_any(&self) -> &dyn core::any::Any +pub fn vortex_array::arrays::Variant::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn alloc::sync::Arc::as_any_arc(self: alloc::sync::Arc) -> alloc::sync::Arc<(dyn core::any::Any + core::marker::Send + core::marker::Sync)> +pub fn vortex_array::arrays::Variant::stats(array: &Self::ArrayData) -> &vortex_array::stats::ArrayStats -pub fn alloc::sync::Arc::dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::Variant::vtable(_array: &Self::ArrayData) -> &Self -pub fn alloc::sync::Arc::encoding_id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::Variant::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn alloc::sync::Arc::filter(&self, mask: vortex_mask::Mask) -> vortex_error::VortexResult +impl vortex_array::VTable for vortex_array::arrays::dict::Dict -pub fn alloc::sync::Arc::invalid_count(&self) -> vortex_error::VortexResult +pub type vortex_array::arrays::dict::Dict::ArrayData = vortex_array::arrays::dict::DictData -pub fn alloc::sync::Arc::is_empty(&self) -> bool +pub type vortex_array::arrays::dict::Dict::Metadata = vortex_array::ProstMetadata -pub fn alloc::sync::Arc::is_invalid(&self, index: usize) -> vortex_error::VortexResult +pub type vortex_array::arrays::dict::Dict::OperationsVTable = vortex_array::arrays::dict::Dict -pub fn alloc::sync::Arc::is_valid(&self, index: usize) -> vortex_error::VortexResult +pub type vortex_array::arrays::dict::Dict::ValidityVTable = vortex_array::arrays::dict::Dict -pub fn alloc::sync::Arc::len(&self) -> usize +pub fn vortex_array::arrays::dict::Dict::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn alloc::sync::Arc::scalar_at(&self, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::array_eq(array: &vortex_array::arrays::dict::DictData, other: &vortex_array::arrays::dict::DictData, precision: vortex_array::Precision) -> bool -pub fn alloc::sync::Arc::slice(&self, range: core::ops::range::Range) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::array_hash(array: &vortex_array::arrays::dict::DictData, state: &mut H, precision: vortex_array::Precision) -pub fn alloc::sync::Arc::statistics(&self) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::dict::Dict::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn alloc::sync::Arc::take(&self, indices: vortex_array::ArrayRef) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -pub fn alloc::sync::Arc::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::dict::Dict::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn alloc::sync::Arc::to_canonical(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn alloc::sync::Arc::valid_count(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn alloc::sync::Arc::validity(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn alloc::sync::Arc::validity_mask(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::dtype(array: &vortex_array::arrays::dict::DictData) -> &vortex_array::dtype::DType -pub fn alloc::sync::Arc::vtable(&self) -> &dyn vortex_array::vtable::DynVTable +pub fn vortex_array::arrays::dict::Dict::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::DynArray for vortex_array::ArrayAdapter +pub fn vortex_array::arrays::dict::Dict::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::ArrayAdapter::all_invalid(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::ArrayAdapter::all_valid(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::len(array: &vortex_array::arrays::dict::DictData) -> usize -pub fn vortex_array::ArrayAdapter::append_to_builder(&self, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::dict::Dict::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::ArrayAdapter::as_any(&self) -> &dyn core::any::Any +pub fn vortex_array::arrays::dict::Dict::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::ArrayAdapter::as_any_arc(self: alloc::sync::Arc) -> alloc::sync::Arc<(dyn core::any::Any + core::marker::Send + core::marker::Sync)> +pub fn vortex_array::arrays::dict::Dict::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::ArrayAdapter::dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::dict::Dict::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::ArrayAdapter::encoding_id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::dict::Dict::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::ArrayAdapter::filter(&self, mask: vortex_mask::Mask) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::ArrayAdapter::invalid_count(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::ArrayAdapter::is_empty(&self) -> bool +pub fn vortex_array::arrays::dict::Dict::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::ArrayAdapter::is_invalid(&self, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::stats(array: &vortex_array::arrays::dict::DictData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::ArrayAdapter::is_valid(&self, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::ArrayAdapter::len(&self) -> usize +pub fn vortex_array::arrays::dict::Dict::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::ArrayAdapter::scalar_at(&self, index: usize) -> vortex_error::VortexResult +impl vortex_array::VTable for vortex_array::arrays::null::Null -pub fn vortex_array::ArrayAdapter::slice(&self, range: core::ops::range::Range) -> vortex_error::VortexResult +pub type vortex_array::arrays::null::Null::ArrayData = vortex_array::arrays::null::NullData -pub fn vortex_array::ArrayAdapter::statistics(&self) -> vortex_array::stats::StatsSetRef<'_> +pub type vortex_array::arrays::null::Null::Metadata = vortex_array::EmptyMetadata -pub fn vortex_array::ArrayAdapter::take(&self, indices: vortex_array::ArrayRef) -> vortex_error::VortexResult +pub type vortex_array::arrays::null::Null::OperationsVTable = vortex_array::arrays::null::Null -pub fn vortex_array::ArrayAdapter::to_array(&self) -> vortex_array::ArrayRef +pub type vortex_array::arrays::null::Null::ValidityVTable = vortex_array::arrays::null::Null -pub fn vortex_array::ArrayAdapter::to_canonical(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -pub fn vortex_array::ArrayAdapter::valid_count(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::array_eq(_array: &vortex_array::arrays::null::NullData, _other: &vortex_array::arrays::null::NullData, _precision: vortex_array::Precision) -> bool -pub fn vortex_array::ArrayAdapter::validity(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::array_hash(_array: &vortex_array::arrays::null::NullData, _state: &mut H, _precision: vortex_array::Precision) -pub fn vortex_array::ArrayAdapter::validity_mask(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::ArrayAdapter::vtable(&self) -> &dyn vortex_array::vtable::DynVTable +pub fn vortex_array::arrays::null::Null::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -impl vortex_array::DynArray for vortex_array::vtable::Array +pub fn vortex_array::arrays::null::Null::build(_dtype: &vortex_array::dtype::DType, len: usize, _metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], _children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::vtable::Array::all_invalid(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub fn vortex_array::vtable::Array::all_valid(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::vtable::Array::append_to_builder(&self, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> +pub fn vortex_array::arrays::null::Null::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -pub fn vortex_array::vtable::Array::as_any(&self) -> &dyn core::any::Any +pub fn vortex_array::arrays::null::Null::dtype(_array: &vortex_array::arrays::null::NullData) -> &vortex_array::dtype::DType -pub fn vortex_array::vtable::Array::as_any_arc(self: alloc::sync::Arc) -> alloc::sync::Arc<(dyn core::any::Any + core::marker::Send + core::marker::Sync)> +pub fn vortex_array::arrays::null::Null::execute(array: vortex_array::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_array::vtable::Array::dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_array::arrays::null::Null::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::vtable::Array::encoding_id(&self) -> vortex_array::vtable::ArrayId +pub fn vortex_array::arrays::null::Null::id(&self) -> vortex_array::ArrayId -pub fn vortex_array::vtable::Array::filter(&self, mask: vortex_mask::Mask) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::len(array: &vortex_array::arrays::null::NullData) -> usize -pub fn vortex_array::vtable::Array::invalid_count(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::metadata(_array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -pub fn vortex_array::vtable::Array::is_empty(&self) -> bool +pub fn vortex_array::arrays::null::Null::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::vtable::Array::is_invalid(&self, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::vtable::Array::is_valid(&self, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::vtable::Array::len(&self) -> usize +pub fn vortex_array::arrays::null::Null::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -pub fn vortex_array::vtable::Array::scalar_at(&self, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::vtable::Array::slice(&self, range: core::ops::range::Range) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::vtable::Array::statistics(&self) -> vortex_array::stats::StatsSetRef<'_> +pub fn vortex_array::arrays::null::Null::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::vtable::Array::take(&self, indices: vortex_array::ArrayRef) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::stats(array: &vortex_array::arrays::null::NullData) -> &vortex_array::stats::ArrayStats -pub fn vortex_array::vtable::Array::to_array(&self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::null::Null::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::vtable::Array::to_canonical(&self) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::with_slots(_array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -pub fn vortex_array::vtable::Array::valid_count(&self) -> vortex_error::VortexResult +impl vortex_array::VTable for vortex_array::arrays::patched::Patched -pub fn vortex_array::vtable::Array::validity(&self) -> vortex_error::VortexResult +pub type vortex_array::arrays::patched::Patched::ArrayData = vortex_array::arrays::patched::PatchedArray -pub fn vortex_array::vtable::Array::validity_mask(&self) -> vortex_error::VortexResult +pub type vortex_array::arrays::patched::Patched::Metadata = vortex_array::ProstMetadata -pub fn vortex_array::vtable::Array::vtable(&self) -> &dyn vortex_array::vtable::DynVTable +pub type vortex_array::arrays::patched::Patched::OperationsVTable = vortex_array::arrays::patched::Patched -pub trait vortex_array::DynArrayEq: vortex_array::hash::private::SealedEq +pub type vortex_array::arrays::patched::Patched::ValidityVTable = vortex_array::ValidityVTableFromChild -pub fn vortex_array::DynArrayEq::dyn_array_eq(&self, other: &dyn core::any::Any, precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::patched::Patched::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl vortex_array::DynArrayEq for T +pub fn vortex_array::arrays::patched::Patched::array_eq(array: &vortex_array::arrays::patched::PatchedArray, other: &vortex_array::arrays::patched::PatchedArray, precision: vortex_array::Precision) -> bool -pub fn T::dyn_array_eq(&self, other: &(dyn core::any::Any + 'static), precision: vortex_array::Precision) -> bool +pub fn vortex_array::arrays::patched::Patched::array_hash(array: &vortex_array::arrays::patched::PatchedArray, state: &mut H, precision: vortex_array::Precision) -pub trait vortex_array::DynArrayHash: vortex_array::hash::private::SealedHash +pub fn vortex_array::arrays::patched::Patched::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::DynArrayHash::dyn_array_hash(&self, state: &mut dyn core::hash::Hasher, precision: vortex_array::Precision) +pub fn vortex_array::arrays::patched::Patched::buffer_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> core::option::Option -impl vortex_array::DynArrayHash for T +pub fn vortex_array::arrays::patched::Patched::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &Self::Metadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn T::dyn_array_hash(&self, state: &mut dyn core::hash::Hasher, precision: vortex_array::Precision) +pub fn vortex_array::arrays::patched::Patched::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -pub trait vortex_array::Executable: core::marker::Sized +pub fn vortex_array::arrays::patched::Patched::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::Executable::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::patched::Patched::deserialize(bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl vortex_array::Executable for vortex_array::ArrayRef +pub fn vortex_array::arrays::patched::Patched::dtype(array: &Self::ArrayData) -> &vortex_array::dtype::DType -pub fn vortex_array::ArrayRef::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::patched::Patched::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::Executable for vortex_array::Canonical +pub fn vortex_array::arrays::patched::Patched::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::Canonical::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::patched::Patched::id(&self) -> vortex_array::ArrayId -impl vortex_array::Executable for vortex_array::CanonicalValidity +pub fn vortex_array::arrays::patched::Patched::len(array: &Self::ArrayData) -> usize -pub fn vortex_array::CanonicalValidity::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::patched::Patched::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -impl vortex_array::Executable for vortex_array::Columnar +pub fn vortex_array::arrays::patched::Patched::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::Columnar::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::patched::Patched::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -impl vortex_array::Executable for vortex_array::RecursiveCanonical +pub fn vortex_array::arrays::patched::Patched::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::RecursiveCanonical::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::patched::Patched::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -impl vortex_array::Executable for vortex_array::arrays::BoolArray +pub fn vortex_array::arrays::patched::Patched::serialize(metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::BoolArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::patched::Patched::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::Executable for vortex_array::arrays::DecimalArray +pub fn vortex_array::arrays::patched::Patched::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::DecimalArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::patched::Patched::stats(array: &Self::ArrayData) -> &vortex_array::stats::ArrayStats -impl vortex_array::Executable for vortex_array::arrays::ExtensionArray +pub fn vortex_array::arrays::patched::Patched::vtable(_array: &Self::ArrayData) -> &Self -pub fn vortex_array::arrays::ExtensionArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::patched::Patched::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl vortex_array::Executable for vortex_array::arrays::FixedSizeListArray +impl vortex_array::VTable for vortex_array::arrays::scalar_fn::ScalarFnVTable -pub fn vortex_array::arrays::FixedSizeListArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::ArrayData = vortex_array::arrays::scalar_fn::ScalarFnData -impl vortex_array::Executable for vortex_array::arrays::ListViewArray +pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::Metadata = vortex_array::arrays::scalar_fn::metadata::ScalarFnMetadata -pub fn vortex_array::arrays::ListViewArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::OperationsVTable = vortex_array::arrays::scalar_fn::ScalarFnVTable -impl vortex_array::Executable for vortex_array::arrays::PrimitiveArray +pub type vortex_array::arrays::scalar_fn::ScalarFnVTable::ValidityVTable = vortex_array::arrays::scalar_fn::ScalarFnVTable -pub fn vortex_array::arrays::PrimitiveArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl vortex_array::Executable for vortex_array::arrays::StructArray +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::array_eq(array: &vortex_array::arrays::scalar_fn::ScalarFnData, other: &vortex_array::arrays::scalar_fn::ScalarFnData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::StructArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::array_hash(array: &vortex_array::arrays::scalar_fn::ScalarFnData, state: &mut H, precision: vortex_array::Precision) -impl vortex_array::Executable for vortex_array::arrays::VarBinViewArray +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::buffer(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::VarBinViewArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -impl vortex_array::Executable for vortex_array::arrays::null::NullArray +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::scalar_fn::metadata::ScalarFnMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::null::NullArray::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -impl vortex_array::Executable for vortex_buffer::bit::buf::BitBuffer +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_buffer::bit::buf::BitBuffer::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl vortex_array::Executable for vortex_mask::Mask +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::dtype(array: &vortex_array::arrays::scalar_fn::ScalarFnData) -> &vortex_array::dtype::DType -pub fn vortex_mask::Mask::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::Executable for vortex_buffer::buffer::Buffer +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_buffer::buffer::Buffer::execute(array: vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::id(&self) -> vortex_array::ArrayId -pub trait vortex_array::IntoArray +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::len(array: &vortex_array::arrays::scalar_fn::ScalarFnData) -> usize -pub fn vortex_array::IntoArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -impl vortex_array::IntoArray for &vortex_mask::MaskValues +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn &vortex_mask::MaskValues::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -impl vortex_array::IntoArray for arrow_buffer::buffer::boolean::BooleanBuffer +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn arrow_buffer::buffer::boolean::BooleanBuffer::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -impl vortex_array::IntoArray for arrow_buffer::buffer::immutable::Buffer +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn arrow_buffer::buffer::immutable::Buffer::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::slot_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::IntoArray for vortex_array::ArrayRef +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::ArrayRef::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::stats(array: &vortex_array::arrays::scalar_fn::ScalarFnData) -> &vortex_array::stats::ArrayStats -impl vortex_array::IntoArray for vortex_array::Canonical +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::vtable(array: &vortex_array::arrays::scalar_fn::ScalarFnData) -> &Self -pub fn vortex_array::Canonical::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl vortex_array::IntoArray for vortex_array::Columnar +impl vortex_array::VTable for vortex_array::arrays::slice::Slice -pub fn vortex_array::Columnar::into_array(self) -> vortex_array::ArrayRef +pub type vortex_array::arrays::slice::Slice::ArrayData = vortex_array::arrays::slice::SliceData -impl vortex_array::IntoArray for vortex_array::arrays::BoolArray +pub type vortex_array::arrays::slice::Slice::Metadata = vortex_array::arrays::slice::SliceMetadata -pub fn vortex_array::arrays::BoolArray::into_array(self) -> vortex_array::ArrayRef +pub type vortex_array::arrays::slice::Slice::OperationsVTable = vortex_array::arrays::slice::Slice -impl vortex_array::IntoArray for vortex_array::arrays::ChunkedArray +pub type vortex_array::arrays::slice::Slice::ValidityVTable = vortex_array::arrays::slice::Slice -pub fn vortex_array::arrays::ChunkedArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::slice::Slice::append_to_builder(array: vortex_array::ArrayView<'_, Self>, builder: &mut dyn vortex_array::builders::ArrayBuilder, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult<()> -impl vortex_array::IntoArray for vortex_array::arrays::ConstantArray +pub fn vortex_array::arrays::slice::Slice::array_eq(array: &vortex_array::arrays::slice::SliceData, other: &vortex_array::arrays::slice::SliceData, precision: vortex_array::Precision) -> bool -pub fn vortex_array::arrays::ConstantArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::slice::Slice::array_hash(array: &vortex_array::arrays::slice::SliceData, state: &mut H, precision: vortex_array::Precision) -impl vortex_array::IntoArray for vortex_array::arrays::DecimalArray +pub fn vortex_array::arrays::slice::Slice::buffer(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> vortex_array::buffer::BufferHandle -pub fn vortex_array::arrays::DecimalArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::slice::Slice::buffer_name(_array: vortex_array::ArrayView<'_, Self>, _idx: usize) -> core::option::Option -impl vortex_array::IntoArray for vortex_array::arrays::ExtensionArray +pub fn vortex_array::arrays::slice::Slice::build(dtype: &vortex_array::dtype::DType, len: usize, metadata: &vortex_array::arrays::slice::SliceMetadata, _buffers: &[vortex_array::buffer::BufferHandle], children: &dyn vortex_array::serde::ArrayChildren) -> vortex_error::VortexResult -pub fn vortex_array::arrays::ExtensionArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::slice::Slice::child(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> vortex_array::ArrayRef -impl vortex_array::IntoArray for vortex_array::arrays::FilterArray +pub fn vortex_array::arrays::slice::Slice::child_name(array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::FilterArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::slice::Slice::deserialize(_bytes: &[u8], _dtype: &vortex_array::dtype::DType, _len: usize, _buffers: &[vortex_array::buffer::BufferHandle], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult -impl vortex_array::IntoArray for vortex_array::arrays::FixedSizeListArray +pub fn vortex_array::arrays::slice::Slice::dtype(array: &vortex_array::arrays::slice::SliceData) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::FixedSizeListArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::slice::Slice::execute(array: vortex_array::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::IntoArray for vortex_array::arrays::ListArray +pub fn vortex_array::arrays::slice::Slice::execute_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::ListArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::slice::Slice::id(&self) -> vortex_array::ArrayId -impl vortex_array::IntoArray for vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::slice::Slice::len(array: &vortex_array::arrays::slice::SliceData) -> usize -pub fn vortex_array::arrays::ListViewArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::slice::Slice::metadata(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult -impl vortex_array::IntoArray for vortex_array::arrays::MaskedArray +pub fn vortex_array::arrays::slice::Slice::nbuffers(_array: vortex_array::ArrayView<'_, Self>) -> usize -pub fn vortex_array::arrays::MaskedArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::slice::Slice::nchildren(array: vortex_array::ArrayView<'_, Self>) -> usize -impl vortex_array::IntoArray for vortex_array::arrays::PrimitiveArray +pub fn vortex_array::arrays::slice::Slice::reduce(array: vortex_array::ArrayView<'_, Self>) -> vortex_error::VortexResult> -pub fn vortex_array::arrays::PrimitiveArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::slice::Slice::reduce_parent(array: vortex_array::ArrayView<'_, Self>, parent: &vortex_array::ArrayRef, child_idx: usize) -> vortex_error::VortexResult> -impl vortex_array::IntoArray for vortex_array::arrays::SharedArray +pub fn vortex_array::arrays::slice::Slice::serialize(_metadata: Self::Metadata) -> vortex_error::VortexResult>> -pub fn vortex_array::arrays::SharedArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::slice::Slice::slot_name(_array: vortex_array::ArrayView<'_, Self>, idx: usize) -> alloc::string::String -impl vortex_array::IntoArray for vortex_array::arrays::StructArray +pub fn vortex_array::arrays::slice::Slice::slots(array: vortex_array::ArrayView<'_, Self>) -> &[core::option::Option] -pub fn vortex_array::arrays::StructArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::slice::Slice::stats(array: &vortex_array::arrays::slice::SliceData) -> &vortex_array::stats::ArrayStats -impl vortex_array::IntoArray for vortex_array::arrays::VarBinArray +pub fn vortex_array::arrays::slice::Slice::vtable(_array: &vortex_array::arrays::slice::SliceData) -> &Self -pub fn vortex_array::arrays::VarBinArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::slice::Slice::with_slots(array: &mut Self::ArrayData, slots: alloc::vec::Vec>) -> vortex_error::VortexResult<()> -impl vortex_array::IntoArray for vortex_array::arrays::VarBinViewArray +pub trait vortex_array::ValidityChild -pub fn vortex_array::arrays::VarBinViewArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::ValidityChild::validity_child(array: &::ArrayData) -> &vortex_array::ArrayRef -impl vortex_array::IntoArray for vortex_array::arrays::datetime::TemporalArray +impl vortex_array::ValidityChild for vortex_array::arrays::Extension -pub fn vortex_array::arrays::datetime::TemporalArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Extension::validity_child(array: &vortex_array::arrays::extension::ExtensionData) -> &vortex_array::ArrayRef -impl vortex_array::IntoArray for vortex_array::arrays::dict::DictArray +impl vortex_array::ValidityChild for vortex_array::arrays::patched::Patched -pub fn vortex_array::arrays::dict::DictArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::patched::Patched::validity_child(array: &vortex_array::arrays::patched::PatchedArray) -> &vortex_array::ArrayRef -impl vortex_array::IntoArray for vortex_array::arrays::null::NullArray +pub trait vortex_array::ValidityChildSliceHelper -pub fn vortex_array::arrays::null::NullArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::ValidityChildSliceHelper::sliced_child_array(&self) -> vortex_error::VortexResult -impl vortex_array::IntoArray for vortex_array::arrays::patched::PatchedArray +pub fn vortex_array::ValidityChildSliceHelper::unsliced_child_and_slice(&self) -> (&vortex_array::ArrayRef, usize, usize) -pub fn vortex_array::arrays::patched::PatchedArray::into_array(self) -> vortex_array::ArrayRef +pub trait vortex_array::ValidityHelper -impl vortex_array::IntoArray for vortex_array::arrays::scalar_fn::ScalarFnArray +pub fn vortex_array::ValidityHelper::validity(&self) -> &vortex_array::validity::Validity -pub fn vortex_array::arrays::scalar_fn::ScalarFnArray::into_array(self) -> vortex_array::ArrayRef +pub trait vortex_array::ValiditySliceHelper -impl vortex_array::IntoArray for vortex_array::arrays::slice::SliceArray +pub fn vortex_array::ValiditySliceHelper::sliced_validity(&self) -> vortex_error::VortexResult -pub fn vortex_array::arrays::slice::SliceArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::ValiditySliceHelper::unsliced_validity_and_slice(&self) -> (&vortex_array::validity::Validity, usize, usize) -impl vortex_array::IntoArray for vortex_array::arrays::variant::VariantArray +pub trait vortex_array::ValidityVTable -pub fn vortex_array::arrays::variant::VariantArray::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::ValidityVTable::validity(array: vortex_array::ArrayView<'_, V>) -> vortex_error::VortexResult -impl vortex_array::IntoArray for vortex_buffer::bit::buf::BitBuffer +impl vortex_array::ValidityVTable for vortex_array::arrays::Bool -pub fn vortex_buffer::bit::buf::BitBuffer::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Bool::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Bool>) -> vortex_error::VortexResult -impl vortex_array::IntoArray for vortex_buffer::bit::buf_mut::BitBufferMut +impl vortex_array::ValidityVTable for vortex_array::arrays::Chunked -pub fn vortex_buffer::bit::buf_mut::BitBufferMut::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Chunked::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Chunked>) -> vortex_error::VortexResult -impl vortex_array::IntoArray for vortex_mask::Mask +impl vortex_array::ValidityVTable for vortex_array::arrays::Constant -pub fn vortex_mask::Mask::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Constant::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Constant>) -> vortex_error::VortexResult -impl vortex_array::IntoArray for arrow_buffer::buffer::offset::OffsetBuffer where O: vortex_array::dtype::IntegerPType + arrow_array::array::list_array::OffsetSizeTrait +impl vortex_array::ValidityVTable for vortex_array::arrays::Decimal -pub fn arrow_buffer::buffer::offset::OffsetBuffer::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Decimal::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Decimal>) -> vortex_error::VortexResult -impl vortex_array::IntoArray for vortex_buffer::buffer::Buffer +impl vortex_array::ValidityVTable for vortex_array::arrays::Filter -pub fn vortex_buffer::buffer::Buffer::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Filter::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Filter>) -> vortex_error::VortexResult -impl vortex_array::IntoArray for vortex_buffer::buffer_mut::BufferMut +impl vortex_array::ValidityVTable for vortex_array::arrays::FixedSizeList -pub fn vortex_buffer::buffer_mut::BufferMut::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::FixedSizeList::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::FixedSizeList>) -> vortex_error::VortexResult -impl vortex_array::IntoArray for arrow_buffer::buffer::scalar::ScalarBuffer where T: arrow_buffer::native::ArrowNativeType + vortex_array::dtype::NativePType +impl vortex_array::ValidityVTable for vortex_array::arrays::List -pub fn arrow_buffer::buffer::scalar::ScalarBuffer::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::List::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::List>) -> vortex_error::VortexResult -impl vortex_array::IntoArray for alloc::sync::Arc> +impl vortex_array::ValidityVTable for vortex_array::arrays::ListView -pub fn alloc::sync::Arc>::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::ListView::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::ListView>) -> vortex_error::VortexResult -impl vortex_array::IntoArray for vortex_array::vtable::Array +impl vortex_array::ValidityVTable for vortex_array::arrays::Masked -pub fn vortex_array::vtable::Array::into_array(self) -> vortex_array::ArrayRef +pub fn vortex_array::arrays::Masked::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Masked>) -> vortex_error::VortexResult -pub trait vortex_array::SerializeMetadata +impl vortex_array::ValidityVTable for vortex_array::arrays::Primitive -pub fn vortex_array::SerializeMetadata::serialize(self) -> alloc::vec::Vec +pub fn vortex_array::arrays::Primitive::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Primitive>) -> vortex_error::VortexResult -impl vortex_array::SerializeMetadata for vortex_array::EmptyMetadata +impl vortex_array::ValidityVTable for vortex_array::arrays::Shared -pub fn vortex_array::EmptyMetadata::serialize(self) -> alloc::vec::Vec +pub fn vortex_array::arrays::Shared::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Shared>) -> vortex_error::VortexResult -impl vortex_array::SerializeMetadata for vortex_array::RawMetadata +impl vortex_array::ValidityVTable for vortex_array::arrays::Struct -pub fn vortex_array::RawMetadata::serialize(self) -> alloc::vec::Vec +pub fn vortex_array::arrays::Struct::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Struct>) -> vortex_error::VortexResult -impl vortex_array::SerializeMetadata for vortex_array::ProstMetadata where M: prost::message::Message +impl vortex_array::ValidityVTable for vortex_array::arrays::VarBin -pub fn vortex_array::ProstMetadata::serialize(self) -> alloc::vec::Vec +pub fn vortex_array::arrays::VarBin::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBin>) -> vortex_error::VortexResult -pub trait vortex_array::ToCanonical +impl vortex_array::ValidityVTable for vortex_array::arrays::VarBinView -pub fn vortex_array::ToCanonical::to_bool(&self) -> vortex_array::arrays::BoolArray +pub fn vortex_array::arrays::VarBinView::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::VarBinView>) -> vortex_error::VortexResult -pub fn vortex_array::ToCanonical::to_decimal(&self) -> vortex_array::arrays::DecimalArray +impl vortex_array::ValidityVTable for vortex_array::arrays::Variant -pub fn vortex_array::ToCanonical::to_extension(&self) -> vortex_array::arrays::ExtensionArray +pub fn vortex_array::arrays::Variant::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::Variant>) -> vortex_error::VortexResult -pub fn vortex_array::ToCanonical::to_fixed_size_list(&self) -> vortex_array::arrays::FixedSizeListArray +impl vortex_array::ValidityVTable for vortex_array::arrays::dict::Dict -pub fn vortex_array::ToCanonical::to_listview(&self) -> vortex_array::arrays::ListViewArray +pub fn vortex_array::arrays::dict::Dict::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::dict::Dict>) -> vortex_error::VortexResult -pub fn vortex_array::ToCanonical::to_null(&self) -> vortex_array::arrays::null::NullArray +impl vortex_array::ValidityVTable for vortex_array::arrays::null::Null -pub fn vortex_array::ToCanonical::to_primitive(&self) -> vortex_array::arrays::PrimitiveArray +pub fn vortex_array::arrays::null::Null::validity(_array: vortex_array::ArrayView<'_, vortex_array::arrays::null::Null>) -> vortex_error::VortexResult -pub fn vortex_array::ToCanonical::to_struct(&self) -> vortex_array::arrays::StructArray +impl vortex_array::ValidityVTable for vortex_array::arrays::scalar_fn::ScalarFnVTable -pub fn vortex_array::ToCanonical::to_varbinview(&self) -> vortex_array::arrays::VarBinViewArray +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::scalar_fn::ScalarFnVTable>) -> vortex_error::VortexResult -impl vortex_array::ToCanonical for A +impl vortex_array::ValidityVTable for vortex_array::arrays::slice::Slice -pub fn A::to_bool(&self) -> vortex_array::arrays::BoolArray +pub fn vortex_array::arrays::slice::Slice::validity(array: vortex_array::ArrayView<'_, vortex_array::arrays::slice::Slice>) -> vortex_error::VortexResult -pub fn A::to_decimal(&self) -> vortex_array::arrays::DecimalArray +impl vortex_array::ValidityVTable for vortex_array::ValidityVTableFromChildSliceHelper where ::ArrayData: vortex_array::ValidityChildSliceHelper -pub fn A::to_extension(&self) -> vortex_array::arrays::ExtensionArray +pub fn vortex_array::ValidityVTableFromChildSliceHelper::validity(array: vortex_array::ArrayView<'_, V>) -> vortex_error::VortexResult -pub fn A::to_fixed_size_list(&self) -> vortex_array::arrays::FixedSizeListArray +impl vortex_array::ValidityVTable for vortex_array::ValidityVTableFromValidityHelper where ::ArrayData: vortex_array::ValidityHelper -pub fn A::to_listview(&self) -> vortex_array::arrays::ListViewArray +pub fn vortex_array::ValidityVTableFromValidityHelper::validity(array: vortex_array::ArrayView<'_, V>) -> vortex_error::VortexResult -pub fn A::to_null(&self) -> vortex_array::arrays::null::NullArray +impl vortex_array::ValidityVTable for vortex_array::ValidityVTableFromValiditySliceHelper where ::ArrayData: vortex_array::ValiditySliceHelper -pub fn A::to_primitive(&self) -> vortex_array::arrays::PrimitiveArray +pub fn vortex_array::ValidityVTableFromValiditySliceHelper::validity(array: vortex_array::ArrayView<'_, V>) -> vortex_error::VortexResult -pub fn A::to_struct(&self) -> vortex_array::arrays::StructArray +impl vortex_array::ValidityVTable for vortex_array::ValidityVTableFromChild where V: vortex_array::ValidityChild + vortex_array::VTable -pub fn A::to_varbinview(&self) -> vortex_array::arrays::VarBinViewArray +pub fn vortex_array::ValidityVTableFromChild::validity(array: vortex_array::ArrayView<'_, V>) -> vortex_error::VortexResult pub trait vortex_array::VortexSessionExecute @@ -25308,8 +27028,22 @@ impl vortex_array::VortexSessionExecute for vortex_session::VortexSession pub fn vortex_session::VortexSession::create_execution_ctx(&self) -> vortex_array::ExecutionCtx -pub type vortex_array::ArrayContext = vortex_session::registry::Context +pub fn vortex_array::child_to_validity(child: &core::option::Option, nullability: vortex_array::dtype::Nullability) -> vortex_array::validity::Validity + +pub fn vortex_array::patches_child(patches: &vortex_array::patches::Patches, idx: usize) -> vortex_array::ArrayRef + +pub fn vortex_array::patches_child_name(idx: usize) -> &'static str + +pub fn vortex_array::patches_nchildren(patches: &vortex_array::patches::Patches) -> usize + +pub fn vortex_array::validity_nchildren(validity: &vortex_array::validity::Validity) -> usize + +pub fn vortex_array::validity_to_child(validity: &vortex_array::validity::Validity, len: usize) -> core::option::Option + +pub type vortex_array::ArrayContext = vortex_session::registry::Context + +pub type vortex_array::ArrayId = arcref::ArcRef -pub type vortex_array::ArrayRef = alloc::sync::Arc +pub type vortex_array::DonePredicate = fn(&vortex_array::ArrayRef) -> bool -pub type vortex_array::DonePredicate = fn(&dyn vortex_array::DynArray) -> bool +pub type vortex_array::DynVTableRef = alloc::sync::Arc diff --git a/vortex-array/src/accessor.rs b/vortex-array/src/accessor.rs index 1eae91edb58..6460f879cb3 100644 --- a/vortex-array/src/accessor.rs +++ b/vortex-array/src/accessor.rs @@ -6,7 +6,7 @@ pub trait ArrayAccessor { /// Iterate over each element of the array, in-order. /// /// The function `f` will be passed an [`Iterator`], it can call [`Iterator::next`] on the - /// iterator [`crate::DynArray::len`] times. Iterator elements are `Option` types, + /// iterator `len` times. Iterator elements are `Option` types, /// regardless of the nullability of the underlying array data. fn with_iterator(&self, f: F) -> R where diff --git a/vortex-array/src/aggregate_fn/accumulator.rs b/vortex-array/src/aggregate_fn/accumulator.rs index 95d5268b969..9797f4b8f44 100644 --- a/vortex-array/src/aggregate_fn/accumulator.rs +++ b/vortex-array/src/aggregate_fn/accumulator.rs @@ -8,7 +8,6 @@ use vortex_error::vortex_err; use crate::AnyCanonical; use crate::ArrayRef; use crate::Columnar; -use crate::DynArray; use crate::ExecutionCtx; use crate::aggregate_fn::AggregateFn; use crate::aggregate_fn::AggregateFnRef; diff --git a/vortex-array/src/aggregate_fn/accumulator_grouped.rs b/vortex-array/src/aggregate_fn/accumulator_grouped.rs index 83b945708b2..053ca607ea1 100644 --- a/vortex-array/src/aggregate_fn/accumulator_grouped.rs +++ b/vortex-array/src/aggregate_fn/accumulator_grouped.rs @@ -15,7 +15,6 @@ use crate::AnyCanonical; use crate::ArrayRef; use crate::Canonical; use crate::Columnar; -use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; use crate::aggregate_fn::Accumulator; @@ -33,7 +32,6 @@ use crate::dtype::DType; use crate::dtype::IntegerPType; use crate::executor::MAX_ITERATIONS; use crate::match_each_integer_ptype; -use crate::vtable::ValidityHelper; /// Reference-counted type-erased grouped accumulator. pub type GroupedAccumulatorRef = Box; 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 fa4c2a501fa..c6ae93fce5a 100644 --- a/vortex-array/src/aggregate_fn/fns/is_constant/mod.rs +++ b/vortex-array/src/aggregate_fn/fns/is_constant/mod.rs @@ -26,7 +26,6 @@ use self::varbin::check_varbinview_constant; use crate::ArrayRef; use crate::Canonical; use crate::Columnar; -use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; use crate::aggregate_fn::Accumulator; diff --git a/vortex-array/src/aggregate_fn/fns/is_sorted/mod.rs b/vortex-array/src/aggregate_fn/fns/is_sorted/mod.rs index d7a7eda0b0c..8c973b940c9 100644 --- a/vortex-array/src/aggregate_fn/fns/is_sorted/mod.rs +++ b/vortex-array/src/aggregate_fn/fns/is_sorted/mod.rs @@ -23,7 +23,6 @@ use self::varbin::check_varbinview_sorted; use crate::ArrayRef; use crate::Canonical; use crate::Columnar; -use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; use crate::aggregate_fn::Accumulator; diff --git a/vortex-array/src/aggregate_fn/fns/sum/mod.rs b/vortex-array/src/aggregate_fn/fns/sum/mod.rs index 51922ae1dd7..b4a1997fbec 100644 --- a/vortex-array/src/aggregate_fn/fns/sum/mod.rs +++ b/vortex-array/src/aggregate_fn/fns/sum/mod.rs @@ -339,7 +339,6 @@ mod tests { use vortex_error::VortexResult; use crate::ArrayRef; - use crate::DynArray; use crate::IntoArray; use crate::LEGACY_SESSION; use crate::VortexSessionExecute; diff --git a/vortex-array/src/aggregate_fn/session.rs b/vortex-array/src/aggregate_fn/session.rs index 6e85ee97b6b..c5024fd4a8d 100644 --- a/vortex-array/src/aggregate_fn/session.rs +++ b/vortex-array/src/aggregate_fn/session.rs @@ -19,13 +19,13 @@ use crate::aggregate_fn::fns::nan_count::NanCount; use crate::aggregate_fn::fns::sum::Sum; use crate::aggregate_fn::kernels::DynAggregateKernel; use crate::aggregate_fn::kernels::DynGroupedAggregateKernel; +use crate::array::ArrayId; use crate::arrays::Chunked; use crate::arrays::Dict; use crate::arrays::chunked::compute::aggregate::ChunkedArrayAggregate; use crate::arrays::dict::compute::is_constant::DictIsConstantKernel; use crate::arrays::dict::compute::is_sorted::DictIsSortedKernel; use crate::arrays::dict::compute::min_max::DictMinMaxKernel; -use crate::vtable::ArrayId; /// Registry of aggregate function vtables. pub type AggregateFnRegistry = Registry; diff --git a/vortex-array/src/aggregate_fn/vtable.rs b/vortex-array/src/aggregate_fn/vtable.rs index feaebe61f56..6f5f46f2710 100644 --- a/vortex-array/src/aggregate_fn/vtable.rs +++ b/vortex-array/src/aggregate_fn/vtable.rs @@ -13,7 +13,6 @@ use vortex_session::VortexSession; use crate::ArrayRef; use crate::Columnar; -use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; use crate::aggregate_fn::AggregateFn; diff --git a/vortex-array/src/aliases/mod.rs b/vortex-array/src/aliases/mod.rs index de68213a51f..d001e0402e2 100644 --- a/vortex-array/src/aliases/mod.rs +++ b/vortex-array/src/aliases/mod.rs @@ -11,3 +11,8 @@ pub mod paste { // Re-export of [`inventory`](https://docs.rs/inventory/latest/inventory/). pub use inventory; + +pub mod vortex_error { + //! Re-export of [`vortex_error`](https://docs.rs/vortex-error/latest/vortex_error/). + pub use vortex_error::VortexExpect; +} diff --git a/vortex-array/src/array/erased.rs b/vortex-array/src/array/erased.rs new file mode 100644 index 00000000000..bdb67697c3a --- /dev/null +++ b/vortex-array/src/array/erased.rs @@ -0,0 +1,522 @@ +// SPDX-License-Identifier: Apache-2.0 +// SPDX-FileCopyrightText: Copyright the Vortex contributors + +use std::fmt::Debug; +use std::fmt::Formatter; +use std::hash::Hasher; +use std::ops::Range; +use std::sync::Arc; + +use vortex_buffer::ByteBuffer; +use vortex_error::VortexExpect; +use vortex_error::VortexResult; +use vortex_error::vortex_ensure; +use vortex_error::vortex_err; +use vortex_mask::Mask; + +use crate::AnyCanonical; +use crate::Array; +use crate::ArrayEq; +use crate::ArrayHash; +use crate::ArrayView; +use crate::Canonical; +use crate::DynVTable; +use crate::ExecutionCtx; +use crate::IntoArray; +use crate::LEGACY_SESSION; +use crate::ToCanonical; +use crate::VTable; +use crate::VortexSessionExecute; +use crate::aggregate_fn::fns::sum::sum; +use crate::array::ArrayId; +use crate::array::ArrayInner; +use crate::array::DynArray; +use crate::arrays::Bool; +use crate::arrays::Constant; +use crate::arrays::DictArray; +use crate::arrays::FilterArray; +use crate::arrays::Null; +use crate::arrays::Primitive; +use crate::arrays::SliceArray; +use crate::arrays::VarBin; +use crate::arrays::VarBinView; +use crate::buffer::BufferHandle; +use crate::builders::ArrayBuilder; +use crate::dtype::DType; +use crate::dtype::Nullability; +use crate::expr::stats::Precision; +use crate::expr::stats::Stat; +use crate::expr::stats::StatsProviderExt; +use crate::matcher::Matcher; +use crate::optimizer::ArrayOptimizer; +use crate::scalar::Scalar; +use crate::stats::StatsSetRef; +use crate::validity::Validity; + +/// A depth-first pre-order iterator over an Array. +pub struct DepthFirstArrayIterator { + stack: Vec, +} + +impl Iterator for DepthFirstArrayIterator { + type Item = ArrayRef; + + fn next(&mut self) -> Option { + let next = self.stack.pop()?; + for child in next.children().into_iter().rev() { + self.stack.push(child); + } + Some(next) + } +} + +/// A reference-counted pointer to a type-erased array. +#[derive(Clone)] +pub struct ArrayRef(Arc); + +impl ArrayRef { + /// Create from an `Arc`. + pub(crate) fn from_inner(inner: Arc) -> Self { + Self(inner) + } + + /// Returns the Arc::as_ptr().addr() of the underlying array. + /// This function is used in a couple of places, and we should migrate them to using array_eq. + #[doc(hidden)] + pub fn addr(&self) -> usize { + Arc::as_ptr(&self.0).addr() + } + + /// Returns a reference to the inner Arc. + #[inline(always)] + pub(crate) fn inner(&self) -> &Arc { + &self.0 + } + + /// Returns true if the two ArrayRefs point to the same allocation. + pub fn ptr_eq(this: &ArrayRef, other: &ArrayRef) -> bool { + Arc::ptr_eq(&this.0, &other.0) + } +} + +impl Debug for ArrayRef { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + Debug::fmt(&*self.0, f) + } +} + +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); + } +} + +impl ArrayEq for ArrayRef { + fn array_eq(&self, other: &Self, precision: crate::Precision) -> bool { + self.0.dyn_array_eq(other.0.as_any(), precision) + } +} + +#[allow(clippy::same_name_method)] +impl ArrayRef { + /// Returns the length of the array. + #[inline] + pub fn len(&self) -> usize { + self.0.len() + } + + /// Returns whether the array is empty (has zero rows). + #[inline] + pub fn is_empty(&self) -> bool { + self.0.len() == 0 + } + + /// Returns the logical Vortex [`DType`] of the array. + #[inline] + pub fn dtype(&self) -> &DType { + self.0.dtype() + } + + /// Returns the vtable of the array. + #[inline] + pub fn vtable(&self) -> &dyn DynVTable { + self.0.vtable() + } + + /// Returns the encoding ID of the array. + #[inline] + pub fn encoding_id(&self) -> ArrayId { + self.0.encoding_id() + } + + /// Performs a constant-time slice of the array. + pub fn slice(&self, range: Range) -> VortexResult { + let len = self.len(); + let start = range.start; + let stop = range.end; + + if start == 0 && stop == len { + return Ok(self.clone()); + } + + vortex_ensure!(start <= len, "OutOfBounds: start {start} > length {}", len); + vortex_ensure!(stop <= len, "OutOfBounds: stop {stop} > length {}", len); + + vortex_ensure!(start <= stop, "start ({start}) must be <= stop ({stop})"); + + if start == stop { + return Ok(Canonical::empty(self.dtype()).into_array()); + } + + let sliced = SliceArray::try_new(self.clone(), range)? + .into_array() + .optimize()?; + + // Propagate some stats from the original array to the sliced array. + if !sliced.is::() { + self.statistics().with_iter(|iter| { + sliced.statistics().inherit(iter.filter(|(stat, value)| { + matches!( + stat, + Stat::IsConstant | Stat::IsSorted | Stat::IsStrictSorted + ) && value.as_ref().as_exact().is_some_and(|v| { + Scalar::try_new(DType::Bool(Nullability::NonNullable), Some(v.clone())) + .vortex_expect("A stat that was expected to be a boolean stat was not") + .as_bool() + .value() + .unwrap_or_default() + }) + })); + }); + } + + Ok(sliced) + } + + /// Wraps the array in a [`FilterArray`] such that it is logically filtered by the given mask. + pub fn filter(&self, mask: Mask) -> VortexResult { + FilterArray::try_new(self.clone(), mask)? + .into_array() + .optimize() + } + + /// Wraps the array in a [`DictArray`] such that it is logically taken by the given indices. + pub fn take(&self, indices: ArrayRef) -> VortexResult { + DictArray::try_new(indices, self.clone())? + .into_array() + .optimize() + } + + /// Fetch the scalar at the given index. + pub fn scalar_at(&self, index: usize) -> VortexResult { + vortex_ensure!(index < self.len(), OutOfBounds: index, 0, self.len()); + if self.is_invalid(index)? { + return Ok(Scalar::null(self.dtype().clone())); + } + let scalar = self.0.scalar_at(self, index)?; + vortex_ensure!(self.dtype() == scalar.dtype(), "Scalar dtype mismatch"); + Ok(scalar) + } + + /// Returns whether the item at `index` is valid. + pub fn is_valid(&self, index: usize) -> VortexResult { + vortex_ensure!(index < self.len(), OutOfBounds: index, 0, self.len()); + match self.validity()? { + Validity::NonNullable | Validity::AllValid => Ok(true), + Validity::AllInvalid => Ok(false), + Validity::Array(a) => a + .scalar_at(index)? + .as_bool() + .value() + .ok_or_else(|| vortex_err!("validity value at index {} is null", index)), + } + } + + /// Returns whether the item at `index` is invalid. + pub fn is_invalid(&self, index: usize) -> VortexResult { + Ok(!self.is_valid(index)?) + } + + /// Returns whether all items in the array are valid. + pub fn all_valid(&self) -> VortexResult { + match self.validity()? { + Validity::NonNullable | Validity::AllValid => Ok(true), + Validity::AllInvalid => Ok(false), + Validity::Array(a) => Ok(a.statistics().compute_min::().unwrap_or(false)), + } + } + + /// Returns whether the array is all invalid. + pub fn all_invalid(&self) -> VortexResult { + match self.validity()? { + Validity::NonNullable | Validity::AllValid => Ok(false), + Validity::AllInvalid => Ok(true), + Validity::Array(a) => Ok(!a.statistics().compute_max::().unwrap_or(true)), + } + } + + /// Returns the number of valid elements in the array. + pub fn valid_count(&self) -> VortexResult { + let len = self.len(); + if let Some(Precision::Exact(invalid_count)) = + self.statistics().get_as::(Stat::NullCount) + { + return Ok(len - invalid_count); + } + + let count = match self.validity()? { + Validity::NonNullable | Validity::AllValid => len, + Validity::AllInvalid => 0, + Validity::Array(a) => { + let mut ctx = LEGACY_SESSION.create_execution_ctx(); + let array_sum = sum(&a, &mut ctx)?; + array_sum + .as_primitive() + .as_::() + .ok_or_else(|| vortex_err!("sum of validity array is null"))? + } + }; + vortex_ensure!(count <= len, "Valid count exceeds array length"); + + self.statistics() + .set(Stat::NullCount, Precision::exact(len - count)); + + Ok(count) + } + + /// Returns the number of invalid elements in the array. + pub fn invalid_count(&self) -> VortexResult { + Ok(self.len() - self.valid_count()?) + } + + /// Returns the [`Validity`] of the array. + pub fn validity(&self) -> VortexResult { + self.0.validity(self) + } + + /// Returns the canonical validity mask for the array. + pub fn validity_mask(&self) -> VortexResult { + match self.validity()? { + Validity::NonNullable | Validity::AllValid => Ok(Mask::new_true(self.len())), + Validity::AllInvalid => Ok(Mask::new_false(self.len())), + Validity::Array(a) => Ok(a.to_bool().to_mask()), + } + } + + /// Returns the canonical representation of the array. + pub fn into_canonical(self) -> VortexResult { + self.execute(&mut LEGACY_SESSION.create_execution_ctx()) + } + + /// Returns the canonical representation of the array. + pub fn to_canonical(&self) -> VortexResult { + self.clone().into_canonical() + } + + /// Writes the array into the canonical builder. + pub fn append_to_builder( + &self, + builder: &mut dyn ArrayBuilder, + ctx: &mut ExecutionCtx, + ) -> VortexResult<()> { + self.0.append_to_builder(self, builder, ctx) + } + + /// Returns the statistics of the array. + pub fn statistics(&self) -> StatsSetRef<'_> { + self.0.statistics().to_ref(self) + } + + /// Does the array match the given matcher. + pub fn is(&self) -> bool { + M::matches(self) + } + + /// Returns the array downcast by the given matcher. + pub fn as_(&self) -> M::Match<'_> { + self.as_opt::().vortex_expect("Failed to downcast") + } + + /// Returns the array downcast by the given matcher. + pub fn as_opt(&self) -> Option> { + M::try_match(self) + } + + /// Returns the array downcast to the given `Array` as an owned typed handle. + pub fn try_into(self) -> Result, ArrayRef> { + Array::::try_from_array_ref(self) + } + + /// 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::>()?; + Some(unsafe { ArrayView::new_unchecked(self, &inner.data) }) + } + + /// Returns the constant scalar if this is a constant array. + pub fn as_constant(&self) -> Option { + self.as_opt::().map(|a| a.scalar().clone()) + } + + /// Total size of the array in bytes, including all children and buffers. + pub fn nbytes(&self) -> u64 { + let mut nbytes = 0; + for array in self.depth_first_traversal() { + for buffer in array.buffers() { + nbytes += buffer.len() as u64; + } + } + nbytes + } + + /// Returns whether this array is an arrow encoding. + pub fn is_arrow(&self) -> bool { + self.is::() + || self.is::() + || self.is::() + || self.is::() + || self.is::() + } + + /// Whether the array is of a canonical encoding. + pub fn is_canonical(&self) -> bool { + self.is::() + } + + /// Returns a new array with the slot at `slot_idx` replaced by `replacement`. + /// + /// Takes ownership to allow in-place mutation when the refcount is 1. + pub fn with_slot(self, slot_idx: usize, replacement: ArrayRef) -> VortexResult { + let nslots = self.slots().len(); + vortex_ensure!( + slot_idx < nslots, + "slot index {} out of bounds for array with {} slots", + slot_idx, + nslots + ); + let mut slots = self.slots().to_vec(); + slots[slot_idx] = Some(replacement); + let vtable = self.vtable().clone_boxed(); + vtable.with_slots(self, slots) + } + + // ArrayVisitor delegation methods + + /// Returns the children of the array. + pub fn children(&self) -> Vec { + self.0.children(self) + } + + /// Returns the number of children of the array. + pub fn nchildren(&self) -> usize { + self.0.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) + } + + /// Returns the names of the children of the array. + pub fn children_names(&self) -> Vec { + self.0.children_names(self) + } + + /// Returns the array's children with their names. + pub fn named_children(&self) -> Vec<(String, ArrayRef)> { + self.0.named_children(self) + } + + /// Returns the data buffers of the array. + pub fn buffers(&self) -> Vec { + self.0.buffers(self) + } + + /// Returns the buffer handles of the array. + pub fn buffer_handles(&self) -> Vec { + self.0.buffer_handles(self) + } + + /// Returns the names of the buffers of the array. + pub fn buffer_names(&self) -> Vec { + self.0.buffer_names(self) + } + + /// Returns the array's buffers with their names. + pub fn named_buffers(&self) -> Vec<(String, BufferHandle)> { + self.0.named_buffers(self) + } + + /// Returns the number of data buffers of the array. + pub fn nbuffers(&self) -> usize { + self.0.nbuffers(self) + } + + /// Returns the slots of the array. + pub fn slots(&self) -> Vec> { + self.0.slots(self) + } + + /// Returns the name of the slot at the given index. + pub fn slot_name(&self, idx: usize) -> String { + self.0.slot_name(self, idx) + } + + /// Returns the serialized metadata of the array. + pub fn metadata(&self) -> VortexResult>> { + self.0.metadata(self) + } + + /// Formats a human-readable metadata description. + pub fn metadata_fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + self.0.metadata_fmt(self, f) + } + + /// Returns whether all buffers are host-resident. + pub fn is_host(&self) -> bool { + for array in self.depth_first_traversal() { + if !array.buffer_handles().iter().all(BufferHandle::is_on_host) { + return false; + } + } + true + } + + // ArrayVisitorExt delegation methods + + /// Count the number of buffers encoded by self and all child arrays. + pub fn nbuffers_recursive(&self) -> usize { + self.children() + .iter() + .map(|c| c.nbuffers_recursive()) + .sum::() + + self.nbuffers() + } + + /// Depth-first traversal of the array and its children. + pub fn depth_first_traversal(&self) -> DepthFirstArrayIterator { + DepthFirstArrayIterator { + stack: vec![self.clone()], + } + } +} + +impl IntoArray for ArrayRef { + #[inline(always)] + fn into_array(self) -> ArrayRef { + self + } +} + +impl Matcher for V { + type Match<'a> = ArrayView<'a, V>; + + fn matches(array: &ArrayRef) -> bool { + array.0.as_any().is::>() + } + + fn try_match<'a>(array: &'a ArrayRef) -> Option> { + let data = &array.0.as_any().downcast_ref::>()?.data; + Some(unsafe { ArrayView::new_unchecked(array, data) }) + } +} diff --git a/vortex-array/src/array/mod.rs b/vortex-array/src/array/mod.rs index 95643eff95d..842f759ace7 100644 --- a/vortex-array/src/array/mod.rs +++ b/vortex-array/src/array/mod.rs @@ -1,99 +1,53 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors -mod visitor; - use std::any::Any; use std::fmt::Debug; use std::fmt::Formatter; use std::hash::Hash; use std::hash::Hasher; -use std::ops::Deref; -use std::ops::Range; -use std::sync::Arc; -pub use visitor::*; +use arcref::ArcRef; use vortex_buffer::ByteBuffer; -use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_error::vortex_ensure; -use vortex_error::vortex_err; use vortex_error::vortex_panic; -use vortex_mask::Mask; - -use crate::AnyCanonical; -use crate::ArrayEq; -use crate::ArrayHash; -use crate::Canonical; -use crate::DynArrayEq; -use crate::DynArrayHash; + use crate::ExecutionCtx; use crate::LEGACY_SESSION; -use crate::ToCanonical; use crate::VortexSessionExecute; -use crate::aggregate_fn::fns::sum::sum; -use crate::arrays::Bool; -use crate::arrays::Constant; -use crate::arrays::DictArray; -use crate::arrays::FilterArray; -use crate::arrays::Null; -use crate::arrays::Primitive; -use crate::arrays::ScalarFnVTable; -use crate::arrays::SliceArray; -use crate::arrays::VarBin; -use crate::arrays::VarBinView; use crate::buffer::BufferHandle; use crate::builders::ArrayBuilder; use crate::dtype::DType; use crate::dtype::Nullability; -use crate::expr::stats::Precision; -use crate::expr::stats::Stat; -use crate::expr::stats::StatsProviderExt; -use crate::hash; -use crate::matcher::Matcher; -use crate::optimizer::ArrayOptimizer; use crate::scalar::Scalar; -use crate::scalar_fn::ReduceNode; -use crate::scalar_fn::ReduceNodeRef; -use crate::scalar_fn::ScalarFnRef; -use crate::stats::StatsSetRef; +use crate::stats::ArrayStats; use crate::validity::Validity; -use crate::vtable::Array; -use crate::vtable::ArrayId; -use crate::vtable::DynVTable; -use crate::vtable::OperationsVTable; -use crate::vtable::VTable; -use crate::vtable::ValidityVTable; + +mod erased; +pub use erased::*; + +mod typed; +pub use typed::*; + +pub mod vtable; +pub use vtable::*; + +mod view; +pub use view::*; /// The public API trait for all Vortex arrays. -pub trait DynArray: - 'static - + private::Sealed - + Send - + Sync - + Debug - + DynArrayEq - + DynArrayHash - + ArrayVisitor - + ReduceNode -{ +/// +/// 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 { /// Returns the array as a reference to a generic [`Any`] trait object. fn as_any(&self) -> &dyn Any; - /// Returns the array as an `Arc`. - fn as_any_arc(self: Arc) -> Arc; - - /// Returns the array as an [`ArrayRef`]. - fn to_array(&self) -> ArrayRef; - /// Returns the length of the array. fn len(&self) -> usize; - /// Returns whether the array is empty (has zero rows). - fn is_empty(&self) -> bool { - self.len() == 0 - } - /// Returns the logical Vortex [`DType`] of the array. fn dtype(&self) -> &DType; @@ -103,268 +57,79 @@ pub trait DynArray: /// Returns the encoding ID of the array. fn encoding_id(&self) -> ArrayId; - /// Performs a constant-time slice of the array. - fn slice(&self, range: Range) -> VortexResult; - - /// Wraps the array in a [`FilterArray`] such that it is logically filtered by the given mask. - fn filter(&self, mask: Mask) -> VortexResult; - - /// Wraps the array in a [`DictArray`] such that it is logically taken by the given indices. - fn take(&self, indices: ArrayRef) -> VortexResult; - /// Fetch the scalar at the given index. /// /// This method panics if the index is out of bounds for the array. - fn scalar_at(&self, index: usize) -> VortexResult; - - /// Returns whether the item at `index` is valid. - fn is_valid(&self, index: usize) -> VortexResult; - - /// Returns whether the item at `index` is invalid. - fn is_invalid(&self, index: usize) -> VortexResult; - - /// Returns whether all items in the array are valid. - /// - /// This is usually cheaper than computing a precise `valid_count`, but may return false - /// negatives. - fn all_valid(&self) -> VortexResult; - - /// Returns whether the array is all invalid. - /// - /// This is usually cheaper than computing a precise `invalid_count`, but may return false - /// negatives. - fn all_invalid(&self) -> VortexResult; - - /// Returns the number of valid elements in the array. - fn valid_count(&self) -> VortexResult; - - /// Returns the number of invalid elements in the array. - fn invalid_count(&self) -> VortexResult; + fn scalar_at(&self, this: &ArrayRef, index: usize) -> VortexResult; /// Returns the [`Validity`] of the array. - fn validity(&self) -> VortexResult; - - /// Returns the canonical validity mask for the array. - fn validity_mask(&self) -> VortexResult; - - /// Returns the canonical representation of the array. - fn to_canonical(&self) -> VortexResult; + fn validity(&self, this: &ArrayRef) -> VortexResult; /// Writes the array into the canonical builder. /// /// The [`DType`] of the builder must match that of the array. fn append_to_builder( &self, + this: &ArrayRef, builder: &mut dyn ArrayBuilder, ctx: &mut ExecutionCtx, ) -> VortexResult<()>; /// Returns the statistics of the array. - // TODO(ngates): change how this works. It's weird. - fn statistics(&self) -> StatsSetRef<'_>; -} - -impl DynArray for Arc { - #[inline] - fn as_any(&self) -> &dyn Any { - DynArray::as_any(self.as_ref()) - } - - fn as_any_arc(self: Arc) -> Arc { - self - } - - #[inline] - fn to_array(&self) -> ArrayRef { - self.clone() - } - - #[inline] - fn len(&self) -> usize { - self.as_ref().len() - } - - #[inline] - fn dtype(&self) -> &DType { - self.as_ref().dtype() - } - - fn vtable(&self) -> &dyn DynVTable { - self.as_ref().vtable() - } - - #[inline] - fn encoding_id(&self) -> ArrayId { - self.as_ref().encoding_id() - } - - #[inline] - fn slice(&self, range: Range) -> VortexResult { - self.as_ref().slice(range) - } - - fn filter(&self, mask: Mask) -> VortexResult { - self.as_ref().filter(mask) - } - - fn take(&self, indices: ArrayRef) -> VortexResult { - self.as_ref().take(indices) - } - - #[inline] - fn scalar_at(&self, index: usize) -> VortexResult { - self.as_ref().scalar_at(index) - } - - #[inline] - fn is_valid(&self, index: usize) -> VortexResult { - self.as_ref().is_valid(index) - } - - #[inline] - fn is_invalid(&self, index: usize) -> VortexResult { - self.as_ref().is_invalid(index) - } + fn statistics(&self) -> &ArrayStats; - #[inline] - fn all_valid(&self) -> VortexResult { - self.as_ref().all_valid() - } + // --- Visitor methods (formerly in ArrayVisitor) --- - #[inline] - fn all_invalid(&self) -> VortexResult { - self.as_ref().all_invalid() - } + /// Returns the children of the array. + fn children(&self, this: &ArrayRef) -> Vec; - #[inline] - fn valid_count(&self) -> VortexResult { - self.as_ref().valid_count() - } + /// Returns the number of children of the array. + fn nchildren(&self, this: &ArrayRef) -> usize; - #[inline] - fn invalid_count(&self) -> VortexResult { - self.as_ref().invalid_count() - } - - #[inline] - fn validity(&self) -> VortexResult { - self.as_ref().validity() - } - - #[inline] - fn validity_mask(&self) -> VortexResult { - self.as_ref().validity_mask() - } + /// Returns the nth child of the array without allocating a Vec. + /// + /// Returns `None` if the index is out of bounds. + fn nth_child(&self, this: &ArrayRef, idx: usize) -> Option; - fn to_canonical(&self) -> VortexResult { - self.as_ref().to_canonical() - } + /// Returns the names of the children of the array. + fn children_names(&self, this: &ArrayRef) -> Vec; - fn append_to_builder( - &self, - builder: &mut dyn ArrayBuilder, - ctx: &mut ExecutionCtx, - ) -> VortexResult<()> { - self.as_ref().append_to_builder(builder, ctx) - } + /// Returns the array's children with their names. + fn named_children(&self, this: &ArrayRef) -> Vec<(String, ArrayRef)>; - fn statistics(&self) -> StatsSetRef<'_> { - self.as_ref().statistics() - } -} + /// Returns the buffers of the array. + fn buffers(&self, this: &ArrayRef) -> Vec; -/// A reference counted pointer to a dynamic [`DynArray`] trait object. -pub type ArrayRef = Arc; + /// Returns the buffer handles of the array. + fn buffer_handles(&self, this: &ArrayRef) -> Vec; -impl ToOwned for dyn DynArray { - type Owned = ArrayRef; + /// Returns the names of the buffers of the array. + fn buffer_names(&self, this: &ArrayRef) -> Vec; - fn to_owned(&self) -> Self::Owned { - self.to_array() - } -} - -impl dyn DynArray + '_ { - /// Does the array match the given matcher. - pub fn is(&self) -> bool { - M::matches(self) - } - - /// Returns the array downcast by the given matcher. - pub fn as_(&self) -> M::Match<'_> { - self.as_opt::().vortex_expect("Failed to downcast") - } + /// Returns the array's buffers with their names. + fn named_buffers(&self, this: &ArrayRef) -> Vec<(String, BufferHandle)>; - /// Returns the array downcast by the given matcher. - pub fn as_opt(&self) -> Option> { - M::try_match(self) - } + /// Returns the number of buffers of the array. + fn nbuffers(&self, this: &ArrayRef) -> usize; - /// Returns the array downcast to the given `V::Array` as an owned object. - pub fn try_into(self: Arc) -> Result> { - if !self.is::() { - return Err(self); - } - let any_arc = self.as_any_arc(); - let typed: Arc> = any_arc - .downcast::>() - .map_err(|_| vortex_err!("failed to downcast")) - .vortex_expect("Failed to downcast"); - Ok(match Arc::try_unwrap(typed) { - Ok(array) => array.into_inner(), - Err(arc) => arc.deref().inner().clone(), - }) - } + /// Returns the slots of the array. + fn slots(&self, this: &ArrayRef) -> Vec>; - pub fn as_constant(&self) -> Option { - self.as_opt::().map(|a| a.scalar().clone()) - } + /// Returns the name of the slot at the given index. + fn slot_name(&self, this: &ArrayRef, idx: usize) -> String; - /// Total size of the array in bytes, including all children and buffers. - pub fn nbytes(&self) -> u64 { - let mut nbytes = 0; - for array in self.depth_first_traversal() { - for buffer in array.buffers() { - nbytes += buffer.len() as u64; - } - } - nbytes - } + /// Returns the serialized metadata of the array, or `None` if the array does not + /// support serialization. + fn metadata(&self, this: &ArrayRef) -> VortexResult>>; - /// Returns whether this array is an arrow encoding. - pub fn is_arrow(&self) -> bool { - self.is::() - || self.is::() - || self.is::() - || self.is::() - || self.is::() - } + /// Formats a human-readable metadata description. + fn metadata_fmt(&self, this: &ArrayRef, f: &mut Formatter<'_>) -> std::fmt::Result; - /// Whether the array is of a canonical encoding. - pub fn is_canonical(&self) -> bool { - self.is::() - } + /// Hashes the array contents including len, dtype, and encoding id. + fn dyn_array_hash(&self, state: &mut dyn Hasher, precision: crate::Precision); - /// Returns a new array with the slot at `slot_idx` replaced by `replacement`. - /// - /// Takes ownership to allow in-place mutation when the refcount is 1. - pub fn with_slot( - self: ArrayRef, - slot_idx: usize, - replacement: ArrayRef, - ) -> VortexResult { - let nslots = self.slots().len(); - vortex_ensure!( - slot_idx < nslots, - "slot index {} out of bounds for array with {} slots", - slot_idx, - nslots - ); - let mut slots = self.slots().to_vec(); - slots[slot_idx] = Some(replacement); - let vtable = self.vtable().clone_boxed(); - vtable.with_slots(self, slots) - } + /// Compares two arrays of the same concrete type for equality. + fn dyn_array_eq(&self, other: &dyn Any, precision: crate::Precision) -> bool; } /// Trait for converting a type into a Vortex [`ArrayRef`]. @@ -372,43 +137,27 @@ pub trait IntoArray { fn into_array(self) -> ArrayRef; } -impl IntoArray for ArrayRef { - fn into_array(self) -> ArrayRef { - self - } -} - mod private { use super::*; pub trait Sealed {} - impl Sealed for Array {} - impl Sealed for ArrayAdapter {} - impl Sealed for Arc {} + impl Sealed for ArrayInner {} } // ============================================================================= -// New path: DynArray and supporting trait impls for Array +// New path: DynArray and supporting trait impls for ArrayInner // ============================================================================= -/// DynArray implementation for [`Array`]. +/// DynArray implementation for [`ArrayInner`]. /// -/// This is self-contained: identity methods use `Array`'s own fields (dtype, len, stats), -/// while data-access methods delegate to VTable methods on the inner `V::Array`. -impl DynArray for Array { +/// 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 { fn as_any(&self) -> &dyn Any { self } - fn as_any_arc(self: Arc) -> Arc { - self - } - - fn to_array(&self) -> ArrayRef { - Arc::new(self.clone()) - } - fn len(&self) -> usize { self.len } @@ -418,162 +167,32 @@ impl DynArray for Array { } fn vtable(&self) -> &dyn DynVTable { - self.typed_vtable() + &self.vtable } fn encoding_id(&self) -> ArrayId { - self.typed_vtable().id() + self.vtable.id() } - fn slice(&self, range: Range) -> VortexResult { - let start = range.start; - let stop = range.end; - - if start == 0 && stop == self.len { - return Ok(self.to_array()); - } - - vortex_ensure!( - start <= self.len, - "OutOfBounds: start {start} > length {}", - self.len - ); - vortex_ensure!( - stop <= self.len, - "OutOfBounds: stop {stop} > length {}", - self.len - ); - - vortex_ensure!(start <= stop, "start ({start}) must be <= stop ({stop})"); - - if start == stop { - return Ok(Canonical::empty(&self.dtype).into_array()); - } - - let sliced = SliceArray::try_new(self.to_array(), range)? - .into_array() - .optimize()?; - - // Propagate some stats from the original array to the sliced array. - if !sliced.is::() { - self.statistics().with_iter(|iter| { - sliced.statistics().inherit(iter.filter(|(stat, value)| { - matches!( - stat, - Stat::IsConstant | Stat::IsSorted | Stat::IsStrictSorted - ) && value.as_ref().as_exact().is_some_and(|v| { - Scalar::try_new(DType::Bool(Nullability::NonNullable), Some(v.clone())) - .vortex_expect("A stat that was expected to be a boolean stat was not") - .as_bool() - .value() - .unwrap_or_default() - }) - })); - }); - } - - Ok(sliced) - } - - fn filter(&self, mask: Mask) -> VortexResult { - FilterArray::try_new(self.to_array(), mask)? - .into_array() - .optimize() - } - - fn take(&self, indices: ArrayRef) -> VortexResult { - DictArray::try_new(indices, self.to_array())? - .into_array() - .optimize() - } - - fn scalar_at(&self, index: usize) -> VortexResult { - vortex_ensure!(index < self.len, OutOfBounds: index, 0, self.len); - if self.is_invalid(index)? { - return Ok(Scalar::null(self.dtype.clone())); - } - let scalar = >::scalar_at( - &self.array, + fn scalar_at(&self, this: &ArrayRef, index: usize) -> VortexResult { + let view = unsafe { ArrayView::new_unchecked(this, &self.data) }; + >::scalar_at( + view, index, &mut LEGACY_SESSION.create_execution_ctx(), - )?; - vortex_ensure!(&self.dtype == scalar.dtype(), "Scalar dtype mismatch"); - Ok(scalar) - } - - fn is_valid(&self, index: usize) -> VortexResult { - vortex_ensure!(index < self.len, OutOfBounds: index, 0, self.len); - match self.validity()? { - Validity::NonNullable | Validity::AllValid => Ok(true), - Validity::AllInvalid => Ok(false), - Validity::Array(a) => a - .scalar_at(index)? - .as_bool() - .value() - .ok_or_else(|| vortex_err!("validity value at index {} is null", index)), - } - } - - fn is_invalid(&self, index: usize) -> VortexResult { - Ok(!self.is_valid(index)?) - } - - fn all_valid(&self) -> VortexResult { - match self.validity()? { - Validity::NonNullable | Validity::AllValid => Ok(true), - Validity::AllInvalid => Ok(false), - Validity::Array(a) => Ok(a.statistics().compute_min::().unwrap_or(false)), - } + ) } - fn all_invalid(&self) -> VortexResult { - match self.validity()? { - Validity::NonNullable | Validity::AllValid => Ok(false), - Validity::AllInvalid => Ok(true), - Validity::Array(a) => Ok(!a.statistics().compute_max::().unwrap_or(true)), - } - } - - fn valid_count(&self) -> VortexResult { - if let Some(Precision::Exact(invalid_count)) = - self.statistics().get_as::(Stat::NullCount) - { - return Ok(self.len - invalid_count); - } - - let count = match self.validity()? { - Validity::NonNullable | Validity::AllValid => self.len, - Validity::AllInvalid => 0, - Validity::Array(a) => { - let mut ctx = LEGACY_SESSION.create_execution_ctx(); - let array_sum = sum(&a, &mut ctx)?; - array_sum - .as_primitive() - .as_::() - .ok_or_else(|| vortex_err!("sum of validity array is null"))? - } - }; - vortex_ensure!(count <= self.len, "Valid count exceeds array length"); - - self.statistics() - .set(Stat::NullCount, Precision::exact(self.len - count)); - - Ok(count) - } - - fn invalid_count(&self) -> VortexResult { - Ok(self.len - self.valid_count()?) - } - - fn validity(&self) -> VortexResult { + fn validity(&self, this: &ArrayRef) -> VortexResult { if self.dtype.is_nullable() { - let validity = >::validity(&self.array)?; + 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!( matches!(array.dtype(), DType::Bool(Nullability::NonNullable)), "Validity array is not non-nullable boolean: {}", - self.typed_vtable().id(), + self.vtable.id(), ); } Ok(validity) @@ -582,21 +201,9 @@ impl DynArray for Array { } } - fn validity_mask(&self) -> VortexResult { - match self.validity()? { - Validity::NonNullable | Validity::AllValid => Ok(Mask::new_true(self.len)), - Validity::AllInvalid => Ok(Mask::new_false(self.len)), - Validity::Array(a) => Ok(a.to_bool().to_mask()), - } - } - - fn to_canonical(&self) -> VortexResult { - self.to_array() - .execute(&mut LEGACY_SESSION.create_execution_ctx()) - } - fn append_to_builder( &self, + this: &ArrayRef, builder: &mut dyn ArrayBuilder, ctx: &mut ExecutionCtx, ) -> VortexResult<()> { @@ -609,538 +216,135 @@ impl DynArray for Array { } let len = builder.len(); - V::append_to_builder(&self.array, builder, ctx)?; + let view = unsafe { ArrayView::new_unchecked(this, &self.data) }; + V::append_to_builder(view, builder, ctx)?; assert_eq!( len + self.len, builder.len(), "Builder length mismatch after writing array for encoding {}", - self.typed_vtable().id(), + self.vtable.id(), ); Ok(()) } - fn statistics(&self) -> StatsSetRef<'_> { - self.stats.to_ref(self) + fn statistics(&self) -> &ArrayStats { + &self.stats } -} -impl ArrayHash for Array { - fn array_hash(&self, state: &mut H, precision: hash::Precision) { - self.typed_vtable().id().hash(state); - V::array_hash(&self.array, state, precision); + 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() } -} -impl ArrayEq for Array { - fn array_eq(&self, other: &Self, precision: hash::Precision) -> bool { - V::array_eq(&self.array, &other.array, precision) + fn nchildren(&self, this: &ArrayRef) -> usize { + let view = unsafe { ArrayView::new_unchecked(this, &self.data) }; + V::nchildren(view) } -} -impl ArrayVisitor for Array { - fn children(&self) -> Vec { - (0..V::nchildren(&self.array)) - .map(|i| V::child(&self.array, i)) - .collect() + fn nth_child(&self, this: &ArrayRef, idx: usize) -> Option { + let view = unsafe { ArrayView::new_unchecked(this, &self.data) }; + (idx < V::nchildren(view)).then(|| V::child(view, idx)) } - fn nchildren(&self) -> usize { - V::nchildren(&self.array) - } - - fn nth_child(&self, idx: usize) -> Option { - (idx < V::nchildren(&self.array)).then(|| V::child(&self.array, idx)) + fn children_names(&self, this: &ArrayRef) -> Vec { + let view = unsafe { ArrayView::new_unchecked(this, &self.data) }; + (0..V::nchildren(view)) + .map(|i| V::child_name(view, i)) + .collect() } - fn children_names(&self) -> Vec { - (0..V::nchildren(&self.array)) - .map(|i| V::child_name(&self.array, i)) + fn named_children(&self, this: &ArrayRef) -> Vec<(String, ArrayRef)> { + let view = unsafe { ArrayView::new_unchecked(this, &self.data) }; + (0..V::nchildren(view)) + .map(|i| (V::child_name(view, i), V::child(view, i))) .collect() } - fn slots(&self) -> &[Option] { - V::slots(&self.array) + fn slots(&self, this: &ArrayRef) -> Vec> { + let view = unsafe { ArrayView::new_unchecked(this, &self.data) }; + V::slots(view).to_vec() } - fn named_children(&self) -> Vec<(String, ArrayRef)> { - (0..V::nchildren(&self.array)) - .map(|i| (V::child_name(&self.array, i), V::child(&self.array, i))) - .collect() + fn slot_name(&self, this: &ArrayRef, idx: usize) -> String { + let view = unsafe { ArrayView::new_unchecked(this, &self.data) }; + V::slot_name(view, idx) } - fn buffers(&self) -> Vec { - (0..V::nbuffers(&self.array)) - .map(|i| V::buffer(&self.array, i).to_host_sync()) + fn buffers(&self, this: &ArrayRef) -> Vec { + let view = unsafe { ArrayView::new_unchecked(this, &self.data) }; + (0..V::nbuffers(view)) + .map(|i| V::buffer(view, i).to_host_sync()) .collect() } - fn buffer_handles(&self) -> Vec { - (0..V::nbuffers(&self.array)) - .map(|i| V::buffer(&self.array, i)) - .collect() + fn buffer_handles(&self, this: &ArrayRef) -> Vec { + let view = unsafe { ArrayView::new_unchecked(this, &self.data) }; + (0..V::nbuffers(view)).map(|i| V::buffer(view, i)).collect() } - fn buffer_names(&self) -> Vec { - (0..V::nbuffers(&self.array)) - .filter_map(|i| V::buffer_name(&self.array, i)) + fn buffer_names(&self, this: &ArrayRef) -> Vec { + let view = unsafe { ArrayView::new_unchecked(this, &self.data) }; + (0..V::nbuffers(view)) + .filter_map(|i| V::buffer_name(view, i)) .collect() } - fn named_buffers(&self) -> Vec<(String, BufferHandle)> { - (0..V::nbuffers(&self.array)) - .filter_map(|i| { - V::buffer_name(&self.array, i).map(|name| (name, V::buffer(&self.array, i))) - }) + fn named_buffers(&self, this: &ArrayRef) -> Vec<(String, BufferHandle)> { + let view = unsafe { ArrayView::new_unchecked(this, &self.data) }; + (0..V::nbuffers(view)) + .filter_map(|i| V::buffer_name(view, i).map(|name| (name, V::buffer(view, i)))) .collect() } - fn nbuffers(&self) -> usize { - V::nbuffers(&self.array) + fn nbuffers(&self, this: &ArrayRef) -> usize { + let view = unsafe { ArrayView::new_unchecked(this, &self.data) }; + V::nbuffers(view) } - fn metadata(&self) -> VortexResult>> { - V::serialize(V::metadata(&self.array)?) + fn metadata(&self, this: &ArrayRef) -> VortexResult>> { + let view = unsafe { ArrayView::new_unchecked(this, &self.data) }; + V::serialize(V::metadata(view)?) } - fn metadata_fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - match V::metadata(&self.array) { + fn metadata_fmt(&self, this: &ArrayRef, f: &mut Formatter<'_>) -> std::fmt::Result { + let view = unsafe { ArrayView::new_unchecked(this, &self.data) }; + match V::metadata(view) { Err(e) => write!(f, ""), Ok(metadata) => Debug::fmt(&metadata, f), } } - fn is_host(&self) -> bool { - for array in self.depth_first_traversal() { - if !array.buffer_handles().iter().all(BufferHandle::is_on_host) { - return false; - } - } - true - } -} - -impl ReduceNode for Array { - fn as_any(&self) -> &dyn Any { - self - } - - fn node_dtype(&self) -> VortexResult { - Ok(self.dtype.clone()) - } - - fn scalar_fn(&self) -> Option<&ScalarFnRef> { - // Access as_opt via inner's Deref to dyn DynArray. - (*self.array) - .as_opt::() - .map(|a| a.scalar_fn()) - } - - fn child(&self, idx: usize) -> ReduceNodeRef { - ArrayVisitor::nth_child(self, idx) - .unwrap_or_else(|| vortex_panic!("Child index out of bounds: {}", idx)) - } - - fn child_count(&self) -> usize { - ArrayVisitor::nchildren(self) - } -} - -// ============================================================================= -// Legacy path: ArrayAdapter -// ============================================================================= - -/// Adapter struct used to lift the [`VTable`] trait into an object-safe [`DynArray`] -/// implementation. -/// -/// Since this is a unit struct with `repr(transparent)`, we are able to turn un-adapted array -/// structs into [`dyn Array`] using some cheeky casting inside [`std::ops::Deref`] and -/// [`AsRef`]. See the `vtable!` macro for more details. -#[repr(transparent)] -pub struct ArrayAdapter(V::Array); - -impl ArrayAdapter { - /// Provide a reference to the underlying array held within the adapter. - pub fn as_inner(&self) -> &V::Array { - &self.0 - } - - /// Consume the adapter and return the underlying array. - pub fn into_inner(self) -> V::Array { - self.0 - } -} - -impl Debug for ArrayAdapter { - fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - self.0.fmt(f) - } -} - -impl ReduceNode for ArrayAdapter { - fn as_any(&self) -> &dyn Any { - self - } - - fn node_dtype(&self) -> VortexResult { - Ok(V::dtype(&self.0).clone()) - } - - fn scalar_fn(&self) -> Option<&ScalarFnRef> { - self.0.as_opt::().map(|a| a.scalar_fn()) - } - - fn child(&self, idx: usize) -> ReduceNodeRef { - self.nth_child(idx) - .unwrap_or_else(|| vortex_panic!("Child index out of bounds: {}", idx)) - } - - fn child_count(&self) -> usize { - self.nchildren() - } -} - -impl DynArray for ArrayAdapter { - fn as_any(&self) -> &dyn Any { - self - } - - fn as_any_arc(self: Arc) -> Arc { - self - } - - fn to_array(&self) -> ArrayRef { - self.0.clone().into_array() - } - - fn len(&self) -> usize { - V::len(&self.0) - } - - fn dtype(&self) -> &DType { - V::dtype(&self.0) - } - - fn vtable(&self) -> &dyn DynVTable { - V::vtable(self.as_inner()) - } - - fn encoding_id(&self) -> ArrayId { - V::vtable(&self.0).id() - } - - fn slice(&self, range: Range) -> VortexResult { - let start = range.start; - let stop = range.end; - - if start == 0 && stop == self.len() { - return Ok(self.to_array()); - } - - vortex_ensure!( - start <= self.len(), - "OutOfBounds: start {start} > length {}", - self.len() - ); - vortex_ensure!( - stop <= self.len(), - "OutOfBounds: stop {stop} > length {}", - self.len() - ); - - vortex_ensure!(start <= stop, "start ({start}) must be <= stop ({stop})"); - - if start == stop { - return Ok(Canonical::empty(self.dtype()).into_array()); - } - - let sliced = SliceArray::try_new(self.to_array(), range)? - .into_array() - .optimize()?; - - // Propagate some stats from the original array to the sliced array. - if !sliced.is::() { - self.statistics().with_iter(|iter| { - sliced.statistics().inherit(iter.filter(|(stat, value)| { - matches!( - stat, - Stat::IsConstant | Stat::IsSorted | Stat::IsStrictSorted - ) && value.as_ref().as_exact().is_some_and(|v| { - Scalar::try_new(DType::Bool(Nullability::NonNullable), Some(v.clone())) - .vortex_expect("A stat that was expected to be a boolean stat was not") - .as_bool() - .value() - .unwrap_or_default() - }) - })); - }); - } - - Ok(sliced) - } - - fn filter(&self, mask: Mask) -> VortexResult { - FilterArray::try_new(self.to_array(), mask)? - .into_array() - .optimize() - } - - fn take(&self, indices: ArrayRef) -> VortexResult { - DictArray::try_new(indices, self.to_array())? - .into_array() - .optimize() - } - - fn scalar_at(&self, index: usize) -> VortexResult { - vortex_ensure!(index < self.len(), OutOfBounds: index, 0, self.len()); - if self.is_invalid(index)? { - return Ok(Scalar::null(self.dtype().clone())); - } - let mut ctx = LEGACY_SESSION.create_execution_ctx(); - let scalar = - >::scalar_at(&self.0, index, &mut ctx)?; - vortex_ensure!(self.dtype() == scalar.dtype(), "Scalar dtype mismatch"); - Ok(scalar) - } - - fn is_valid(&self, index: usize) -> VortexResult { - vortex_ensure!(index < self.len(), OutOfBounds: index, 0, self.len()); - match self.validity()? { - Validity::NonNullable | Validity::AllValid => Ok(true), - Validity::AllInvalid => Ok(false), - Validity::Array(a) => a - .scalar_at(index)? - .as_bool() - .value() - .ok_or_else(|| vortex_err!("validity value at index {} is null", index)), - } - } - - fn is_invalid(&self, index: usize) -> VortexResult { - Ok(!self.is_valid(index)?) - } - - fn all_valid(&self) -> VortexResult { - match self.validity()? { - Validity::NonNullable | Validity::AllValid => Ok(true), - Validity::AllInvalid => Ok(false), - Validity::Array(a) => Ok(a.statistics().compute_min::().unwrap_or(false)), - } - } - - fn all_invalid(&self) -> VortexResult { - match self.validity()? { - Validity::NonNullable | Validity::AllValid => Ok(false), - Validity::AllInvalid => Ok(true), - Validity::Array(a) => Ok(!a.statistics().compute_max::().unwrap_or(true)), - } - } - - // TODO(ngates): deprecate this function since it requires compute. - fn valid_count(&self) -> VortexResult { - if let Some(Precision::Exact(invalid_count)) = - self.statistics().get_as::(Stat::NullCount) - { - return Ok(self.len() - invalid_count); - } - - let count = match self.validity()? { - Validity::NonNullable | Validity::AllValid => self.len(), - Validity::AllInvalid => 0, - Validity::Array(a) => { - let mut ctx = LEGACY_SESSION.create_execution_ctx(); - let array_sum = sum(&a, &mut ctx)?; - array_sum - .as_primitive() - .as_::() - .ok_or_else(|| vortex_err!("sum of validity array is null"))? - } - }; - vortex_ensure!(count <= self.len(), "Valid count exceeds array length"); - - self.statistics() - .set(Stat::NullCount, Precision::exact(self.len() - count)); - - Ok(count) - } - - fn invalid_count(&self) -> VortexResult { - Ok(self.len() - self.valid_count()?) - } - - fn validity(&self) -> VortexResult { - if self.dtype().is_nullable() { - let validity = >::validity(&self.0)?; - if let Validity::Array(array) = &validity { - vortex_ensure!(array.len() == self.len(), "Validity array length mismatch"); - vortex_ensure!( - matches!(array.dtype(), DType::Bool(Nullability::NonNullable)), - "Validity array is not non-nullable boolean: {}", - self.encoding_id(), - ); - } - Ok(validity) - } else { - Ok(Validity::NonNullable) - } - } - - fn validity_mask(&self) -> VortexResult { - match self.validity()? { - Validity::NonNullable | Validity::AllValid => Ok(Mask::new_true(self.len())), - Validity::AllInvalid => Ok(Mask::new_false(self.len())), - Validity::Array(a) => Ok(a.to_bool().to_mask()), - } - } - - fn to_canonical(&self) -> VortexResult { - self.to_array() - .execute(&mut LEGACY_SESSION.create_execution_ctx()) + 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); + V::array_hash(&self.data, &mut wrapper, precision); } - fn append_to_builder( - &self, - builder: &mut dyn ArrayBuilder, - ctx: &mut ExecutionCtx, - ) -> VortexResult<()> { - if builder.dtype() != self.dtype() { - vortex_panic!( - "Builder dtype mismatch: expected {}, got {}", - self.dtype(), - builder.dtype(), - ); - } - let len = builder.len(); - - V::append_to_builder(&self.0, builder, ctx)?; - - assert_eq!( - len + self.len(), - builder.len(), - "Builder length mismatch after writing array for encoding {}", - self.encoding_id(), - ); - Ok(()) - } - - fn statistics(&self) -> StatsSetRef<'_> { - V::stats(&self.0) - } -} - -impl ArrayHash for ArrayAdapter { - fn array_hash(&self, state: &mut H, precision: hash::Precision) { - self.0.encoding_id().hash(state); - V::array_hash(&self.0, state, precision); - } -} - -impl ArrayEq for ArrayAdapter { - fn array_eq(&self, other: &Self, precision: hash::Precision) -> bool { - V::array_eq(&self.0, &other.0, precision) + fn dyn_array_eq(&self, other: &dyn Any, precision: crate::Precision) -> bool { + other.downcast_ref::().is_some_and(|other| { + self.len == other.len + && self.dtype == other.dtype + && self.vtable.id() == other.vtable.id() + && V::array_eq(&self.data, &other.data, precision) + }) } } -impl ArrayVisitor for ArrayAdapter { - fn children(&self) -> Vec { - (0..V::nchildren(&self.0)) - .map(|i| V::child(&self.0, i)) - .collect() - } - - fn nchildren(&self) -> usize { - V::nchildren(&self.0) - } - - fn nth_child(&self, idx: usize) -> Option { - (idx < V::nchildren(&self.0)).then(|| V::child(&self.0, idx)) - } - - fn children_names(&self) -> Vec { - (0..V::nchildren(&self.0)) - .map(|i| V::child_name(&self.0, i)) - .collect() - } - - fn named_children(&self) -> Vec<(String, ArrayRef)> { - (0..V::nchildren(&self.0)) - .map(|i| (V::child_name(&self.0, i), V::child(&self.0, i))) - .collect() - } - - fn buffers(&self) -> Vec { - (0..V::nbuffers(&self.0)) - .map(|i| V::buffer(&self.0, i).to_host_sync()) - .collect() - } +/// Wrapper around `&mut dyn Hasher` that implements `Hasher` (and is `Sized`). +struct HasherWrapper<'a>(&'a mut dyn Hasher); - fn buffer_handles(&self) -> Vec { - (0..V::nbuffers(&self.0)) - .map(|i| V::buffer(&self.0, i)) - .collect() - } - - fn buffer_names(&self) -> Vec { - (0..V::nbuffers(&self.0)) - .filter_map(|i| V::buffer_name(&self.0, i)) - .collect() - } - - fn named_buffers(&self) -> Vec<(String, BufferHandle)> { - (0..V::nbuffers(&self.0)) - .filter_map(|i| V::buffer_name(&self.0, i).map(|name| (name, V::buffer(&self.0, i)))) - .collect() +impl Hasher for HasherWrapper<'_> { + fn finish(&self) -> u64 { + self.0.finish() } - fn nbuffers(&self) -> usize { - V::nbuffers(&self.0) - } - - fn slots(&self) -> &[Option] { - V::slots(&self.0) - } - - fn metadata(&self) -> VortexResult>> { - V::serialize(V::metadata(&self.0)?) - } - - fn metadata_fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - match V::metadata(&self.0) { - Err(e) => write!(f, ""), - Ok(metadata) => Debug::fmt(&metadata, f), - } - } - - fn is_host(&self) -> bool { - for array in self.depth_first_traversal() { - if !array.buffer_handles().iter().all(BufferHandle::is_on_host) { - return false; - } - } - - true + fn write(&mut self, bytes: &[u8]) { + self.0.write(bytes); } } -/// Implement a matcher for a specific VTable type. -/// -/// During the migration, this tries both `Array` (new path) and `ArrayAdapter` -/// (legacy path). Returns `&V::Array` for backward compatibility. -impl Matcher for V { - type Match<'a> = &'a V::Array; - - fn matches(array: &dyn DynArray) -> bool { - DynArray::as_any(array).is::>() || DynArray::as_any(array).is::>() - } - - fn try_match<'a>(array: &'a dyn DynArray) -> Option> { - // Try new Array first. - if let Some(typed) = DynArray::as_any(array).downcast_ref::>() { - return Some(typed.inner()); - } - // Fall back to legacy ArrayAdapter. - DynArray::as_any(array) - .downcast_ref::>() - .map(|adapter| adapter.as_inner()) - } -} +/// ArrayId is a globally unique name for the array's vtable. +pub type ArrayId = ArcRef; diff --git a/vortex-array/src/array/typed.rs b/vortex-array/src/array/typed.rs new file mode 100644 index 00000000000..e635a98227d --- /dev/null +++ b/vortex-array/src/array/typed.rs @@ -0,0 +1,384 @@ +// SPDX-License-Identifier: Apache-2.0 +// SPDX-FileCopyrightText: Copyright the Vortex contributors + +//! Typed array wrappers: [`ArrayInner`] (heap-allocated), [`Array`] (typed handle), +//! and [`ArrayView`] (lightweight borrow). + +use std::any::Any; +use std::fmt::Debug; +use std::fmt::Formatter; +use std::marker::PhantomData; +use std::ops::Deref; +use std::ops::DerefMut; +use std::sync::Arc; + +use vortex_error::VortexResult; + +use crate::ArrayRef; +use crate::IntoArray; +use crate::ValidityHelper; +use crate::array::ArrayId; +use crate::array::ArrayView; +use crate::array::VTable; +use crate::dtype::DType; +use crate::stats::ArrayStats; +use crate::stats::StatsSetRef; +use crate::validity::Validity; +// ============================================================================= +// ArrayInner — the concrete type stored inside Arc +// ============================================================================= + +/// The concrete array type that lives inside an `Arc` behind [`ArrayRef`]. +/// +/// 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. +#[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) stats: ArrayStats, +} + +impl ArrayInner { + /// Create a new inner array from encoding-specific data. + #[doc(hidden)] + pub fn try_from_data(data: V::ArrayData) -> VortexResult { + let vtable = V::vtable(&data).clone(); + let dtype = V::dtype(&data).clone(); + let len = V::len(&data); + let stats = V::stats(&data).clone(); + Ok(unsafe { Self::from_data_unchecked(vtable, dtype, len, data, stats) }) + } + + /// Create without validation. + /// + /// # Safety + /// Caller must ensure dtype and len match the data. + pub(crate) unsafe fn from_data_unchecked( + vtable: V, + dtype: DType, + len: usize, + data: V::ArrayData, + stats: ArrayStats, + ) -> Self { + Self { + vtable, + dtype, + len, + data, + stats, + } + } +} + +impl Deref for ArrayInner { + type Target = V::ArrayData; + fn deref(&self) -> &V::ArrayData { + &self.data + } +} + +impl DerefMut for ArrayInner { + fn deref_mut(&mut self) -> &mut V::ArrayData { + &mut self.data + } +} + +impl Clone for ArrayInner { + fn clone(&self) -> Self { + Self { + vtable: self.vtable.clone(), + dtype: self.dtype.clone(), + len: self.len, + data: self.data.clone(), + stats: self.stats.clone(), + } + } +} + +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) + .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 +// ============================================================================= + +/// 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`. +/// +/// This is the primary type for working with typed arrays. Convert to [`ArrayRef`] +/// via [`into_array()`](IntoArray::into_array) or [`AsRef`]. +pub struct Array { + inner: ArrayRef, + _phantom: PhantomData, +} + +#[allow(clippy::same_name_method)] +impl Array { + /// Create a typed array from encoding-specific data. + pub fn try_from_data(data: V::ArrayData) -> VortexResult { + let inner = ArrayRef::from_inner(Arc::new(ArrayInner::::try_from_data(data)?)); + Ok(Self { + inner, + _phantom: PhantomData, + }) + } + + /// Create from an existing `ArrayRef`, trusting that it contains `ArrayInner`. + /// + /// # Safety + /// Caller must ensure the `ArrayRef` contains an `ArrayInner`. + #[allow(dead_code)] + pub(crate) unsafe fn from_array_ref_unchecked(array: ArrayRef) -> Self { + Self { + inner: array, + _phantom: PhantomData, + } + } + + /// Try to create from an `ArrayRef`, returning `Err` if the type doesn't match. + pub fn try_from_array_ref(array: ArrayRef) -> Result { + if array.is::() { + Ok(Self { + inner: array, + _phantom: PhantomData, + }) + } else { + Err(array) + } + } + + /// Returns the dtype. + pub fn dtype(&self) -> &DType { + self.inner.dtype() + } + + /// Returns the length. + pub fn len(&self) -> usize { + self.inner.len() + } + + /// Returns whether this array is empty. + pub fn is_empty(&self) -> bool { + self.inner.len() == 0 + } + + /// Returns the encoding ID. + pub fn encoding_id(&self) -> ArrayId { + self.inner.encoding_id() + } + + /// Returns the statistics. + pub fn statistics(&self) -> StatsSetRef<'_> { + self.inner.statistics() + } + + /// Returns a reference to the encoding-specific data. + pub fn data(&self) -> &V::ArrayData { + &self.downcast_inner().data + } + + /// Returns a clone of the inner encoding-specific data. + pub fn into_data(self) -> V::ArrayData { + self.downcast_inner().data.clone() + } + + /// Returns the internal [`ArrayRef`]. + #[inline(always)] + pub fn as_array(&self) -> &ArrayRef { + &self.inner + } + + /// 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`. + unsafe { ArrayView::new_unchecked(&self.inner, &inner.data) } + } + + /// Downcast the inner `ArrayRef` to `&ArrayInner`. + #[inline(always)] + fn downcast_inner(&self) -> &ArrayInner { + let any = self.inner.inner().as_any(); + // NOTE(ngates): use downcast_unchecked when it becomes stable + debug_assert!(any.is::>()); + // SAFETY: caller guarantees that T is the correct type + unsafe { &*(any as *const dyn Any as *const ArrayInner) } + } +} + +impl Array +where + V::ArrayData: ValidityHelper, +{ + /// Returns a reference to the validity. + #[allow(clippy::same_name_method)] + pub fn validity(&self) -> &Validity { + ValidityHelper::validity(self.data()) + } +} + +/// Public API methods that shadow `DynArray` / `ArrayRef` methods. +impl Array { + #[allow(clippy::same_name_method)] + pub fn slice(&self, range: std::ops::Range) -> VortexResult { + self.inner.slice(range) + } + + #[allow(clippy::same_name_method)] + pub fn scalar_at(&self, index: usize) -> VortexResult { + self.inner.scalar_at(index) + } + + #[allow(clippy::same_name_method)] + pub fn filter(&self, mask: vortex_mask::Mask) -> VortexResult { + self.inner.filter(mask) + } + + #[allow(clippy::same_name_method)] + pub fn take(&self, indices: ArrayRef) -> VortexResult { + self.inner.take(indices) + } + + #[allow(clippy::same_name_method)] + pub fn is_valid(&self, index: usize) -> VortexResult { + self.inner.is_valid(index) + } + + #[allow(clippy::same_name_method)] + pub fn is_invalid(&self, index: usize) -> VortexResult { + self.inner.is_invalid(index) + } + + #[allow(clippy::same_name_method)] + pub fn all_valid(&self) -> VortexResult { + self.inner.all_valid() + } + + #[allow(clippy::same_name_method)] + pub fn all_invalid(&self) -> VortexResult { + self.inner.all_invalid() + } + + #[allow(clippy::same_name_method)] + pub fn to_canonical(&self) -> VortexResult { + self.inner.to_canonical() + } + + pub fn nbytes(&self) -> u64 { + self.inner.nbytes() + } + + #[allow(clippy::same_name_method)] + pub fn nbuffers(&self) -> usize { + self.inner.nbuffers() + } + + pub fn as_constant(&self) -> Option { + self.inner.as_constant() + } + + #[allow(clippy::same_name_method)] + pub fn valid_count(&self) -> VortexResult { + self.inner.valid_count() + } + + #[allow(clippy::same_name_method)] + pub fn invalid_count(&self) -> VortexResult { + self.inner.invalid_count() + } + + #[allow(clippy::same_name_method)] + pub fn append_to_builder( + &self, + builder: &mut dyn crate::builders::ArrayBuilder, + ctx: &mut crate::ExecutionCtx, + ) -> VortexResult<()> { + self.inner.append_to_builder(builder, ctx) + } + + #[allow(clippy::same_name_method)] + pub fn validity_mask(&self) -> VortexResult { + self.inner.validity_mask() + } +} + +impl Deref for Array { + type Target = V::ArrayData; + + fn deref(&self) -> &V::ArrayData { + self.data() + } +} + +impl Clone for Array { + fn clone(&self) -> Self { + Self { + inner: self.inner.clone(), + _phantom: PhantomData, + } + } +} + +impl Debug for Array { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + f.debug_struct("Array") + .field("encoding", &self.inner.encoding_id()) + .field("dtype", self.inner.dtype()) + .field("len", &self.inner.len()) + .finish() + } +} + +impl AsRef for Array { + fn as_ref(&self) -> &ArrayRef { + &self.inner + } +} + +impl IntoArray for Array { + #[inline(always)] + fn into_array(self) -> ArrayRef { + self.inner + } +} + +impl IntoArray for Arc> { + fn into_array(self) -> ArrayRef { + match Arc::try_unwrap(self) { + Ok(array) => array.inner, + Err(arc) => arc.inner.clone(), + } + } +} + +impl From> for ArrayRef { + fn from(value: Array) -> ArrayRef { + value.inner + } +} diff --git a/vortex-array/src/array/view.rs b/vortex-array/src/array/view.rs new file mode 100644 index 00000000000..e879e2c98dd --- /dev/null +++ b/vortex-array/src/array/view.rs @@ -0,0 +1,104 @@ +// SPDX-License-Identifier: Apache-2.0 +// SPDX-FileCopyrightText: Copyright the Vortex contributors + +use std::fmt::Debug; +use std::fmt::Formatter; +use std::ops::Deref; + +use crate::ArrayRef; +use crate::array::Array; +use crate::array::ArrayId; +use crate::array::VTable; +use crate::dtype::DType; +use crate::stats::StatsSetRef; + +/// A lightweight, `Copy`-able typed view into an [`ArrayRef`]. +pub struct ArrayView<'a, V: VTable> { + array: &'a ArrayRef, + data: &'a V::ArrayData, +} + +impl Copy for ArrayView<'_, V> {} + +impl Clone for ArrayView<'_, V> { + fn clone(&self) -> Self { + *self + } +} + +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 { + debug_assert!(array.is::()); + Self { array, data } + } + + pub fn array(&self) -> &'a ArrayRef { + self.array + } + + pub fn data(&self) -> &'a V::ArrayData { + self.data + } + + pub fn dtype(&self) -> &DType { + self.array.dtype() + } + + pub fn len(&self) -> usize { + self.array.len() + } + + pub fn is_empty(&self) -> bool { + self.array.len() == 0 + } + + pub fn encoding_id(&self) -> ArrayId { + self.array.encoding_id() + } + + pub fn statistics(&self) -> StatsSetRef<'_> { + self.array.statistics() + } + + pub fn into_owned(self) -> Array { + // SAFETY: we are ourselves type checked as 'V' + unsafe { Array::::from_array_ref_unchecked(self.array.clone()) } + } +} + +impl<'a, V: VTable> ArrayView<'a, V> +where + V::ArrayData: crate::vtable::ValidityHelper, +{ + /// Returns a reference to the validity. + #[allow(clippy::same_name_method)] + pub fn validity(&self) -> &'a crate::validity::Validity { + crate::vtable::ValidityHelper::validity(self.data) + } +} + +impl AsRef for ArrayView<'_, V> { + fn as_ref(&self) -> &ArrayRef { + self.array + } +} + +impl Deref for ArrayView<'_, V> { + type Target = V::ArrayData; + + fn deref(&self) -> &V::ArrayData { + self.data + } +} + +impl Debug for ArrayView<'_, V> { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + f.debug_struct("ArrayView") + .field("encoding", &self.array.encoding_id()) + .field("dtype", self.array.dtype()) + .field("len", &self.array.len()) + .finish() + } +} diff --git a/vortex-array/src/array/visitor.rs b/vortex-array/src/array/visitor.rs deleted file mode 100644 index 012bb1924bc..00000000000 --- a/vortex-array/src/array/visitor.rs +++ /dev/null @@ -1,156 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// SPDX-FileCopyrightText: Copyright the Vortex contributors - -use std::fmt::Formatter; -use std::sync::Arc; - -use vortex_buffer::ByteBuffer; -use vortex_error::VortexResult; - -use crate::ArrayRef; -use crate::DynArray; -use crate::buffer::BufferHandle; - -pub trait ArrayVisitor { - /// Returns the children of the array. - fn children(&self) -> Vec; - - /// Returns the number of children of the array. - fn nchildren(&self) -> usize; - - /// Returns the nth child of the array without allocating a Vec. - /// - /// Returns `None` if the index is out of bounds. - fn nth_child(&self, idx: usize) -> Option; - - /// Returns the names of the children of the array. - fn children_names(&self) -> Vec; - - /// Returns the slots of the array as a slice. - fn slots(&self) -> &[Option]; - - /// Returns the array's children with their names. - fn named_children(&self) -> Vec<(String, ArrayRef)>; - - /// Returns the buffers of the array. - fn buffers(&self) -> Vec; - - /// Returns the buffer handles of the array. - fn buffer_handles(&self) -> Vec; - - /// Returns the names of the buffers of the array. - fn buffer_names(&self) -> Vec; - - /// Returns the array's buffers with their names. - fn named_buffers(&self) -> Vec<(String, BufferHandle)>; - - /// Returns the number of buffers of the array. - fn nbuffers(&self) -> usize; - - /// Returns the serialized metadata of the array, or `None` if the array does not - /// support serialization. - fn metadata(&self) -> VortexResult>>; - - /// Formats a human-readable metadata description. - fn metadata_fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result; - - /// Checks if all buffers in the array tree are host-resident. - /// - /// This will fail if any buffers of self or child arrays are GPU-resident. - fn is_host(&self) -> bool; -} - -impl ArrayVisitor for Arc { - fn children(&self) -> Vec { - self.as_ref().children() - } - - fn nchildren(&self) -> usize { - self.as_ref().nchildren() - } - - fn nth_child(&self, idx: usize) -> Option { - self.as_ref().nth_child(idx) - } - - fn children_names(&self) -> Vec { - self.as_ref().children_names() - } - - fn slots(&self) -> &[Option] { - self.as_ref().slots() - } - - fn named_children(&self) -> Vec<(String, ArrayRef)> { - self.as_ref().named_children() - } - - fn buffers(&self) -> Vec { - self.as_ref().buffers() - } - - fn buffer_handles(&self) -> Vec { - self.as_ref().buffer_handles() - } - - fn buffer_names(&self) -> Vec { - self.as_ref().buffer_names() - } - - fn named_buffers(&self) -> Vec<(String, BufferHandle)> { - self.as_ref().named_buffers() - } - - fn nbuffers(&self) -> usize { - self.as_ref().nbuffers() - } - - fn metadata(&self) -> VortexResult>> { - self.as_ref().metadata() - } - - fn metadata_fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - self.as_ref().metadata_fmt(f) - } - - fn is_host(&self) -> bool { - self.as_ref().is_host() - } -} - -pub trait ArrayVisitorExt: DynArray { - /// Count the number of buffers encoded by self and all child arrays. - fn nbuffers_recursive(&self) -> usize { - self.children() - .iter() - .map(ArrayVisitorExt::nbuffers_recursive) - .sum::() - + self.nbuffers() - } - - /// Depth-first traversal of the array and its children. - fn depth_first_traversal(&self) -> impl Iterator { - /// A depth-first pre-order iterator over an Array. - struct ArrayChildrenIterator { - stack: Vec, - } - - impl Iterator for ArrayChildrenIterator { - type Item = ArrayRef; - - fn next(&mut self) -> Option { - let next = self.stack.pop()?; - for child in next.children().into_iter().rev() { - self.stack.push(child); - } - Some(next) - } - } - - ArrayChildrenIterator { - stack: vec![self.to_array()], - } - } -} - -impl ArrayVisitorExt for A {} diff --git a/vortex-array/src/vtable/dyn_.rs b/vortex-array/src/array/vtable/dyn_.rs similarity index 78% rename from vortex-array/src/vtable/dyn_.rs rename to vortex-array/src/array/vtable/dyn_.rs index 67fd8d529cf..ca6cbaf0cb4 100644 --- a/vortex-array/src/vtable/dyn_.rs +++ b/vortex-array/src/array/vtable/dyn_.rs @@ -4,35 +4,30 @@ use std::fmt::Debug; use std::sync::Arc; -use arcref::ArcRef; use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_error::vortex_ensure; +use vortex_error::vortex_err; use vortex_session::VortexSession; use crate::ArrayRef; -use crate::DynArray; use crate::ExecutionResult; use crate::ExecutionStep; use crate::IntoArray; +use crate::array::Array; +use crate::array::ArrayId; +use crate::array::ArrayInner; +use crate::array::VTable; use crate::buffer::BufferHandle; use crate::dtype::DType; use crate::executor::ExecutionCtx; use crate::serde::ArrayChildren; use crate::stats::ArrayStats; -use crate::vtable::Array; -use crate::vtable::VTable; - -/// ArrayId is a globally unique name for the array's vtable. -pub type ArrayId = ArcRef; /// Reference-counted DynVTable pub type DynVTableRef = Arc; /// Dynamically typed vtable trait. -/// -/// This trait contains the implementation API for Vortex arrays, allowing us to keep the public -/// [`DynArray`] trait API to a minimum. pub trait DynVTable: 'static + Send + Sync + Debug { /// Clone this vtable into a `Box`. fn clone_boxed(&self) -> Box; @@ -99,10 +94,10 @@ impl DynVTable for V { dtype, "Array dtype mismatch after building" ); - // Wrap in Array for safe downcasting. + // Wrap in ArrayInner for safe downcasting. // SAFETY: We just validated that V::len(&inner) == len and V::dtype(&inner) == dtype. let array = unsafe { - Array::new_unchecked( + ArrayInner::from_data_unchecked( self.clone(), dtype.clone(), len, @@ -114,14 +109,16 @@ impl DynVTable for V { } fn with_slots(&self, array: ArrayRef, slots: Vec>) -> VortexResult { - let arc = downcast_owned::(array); - let mut inner = Arc::try_unwrap(arc).unwrap_or_else(|arc| arc.as_ref().clone()); - V::with_slots(&mut inner.array, slots)?; - Ok(inner.into_array()) + let typed = array + .as_opt::() + .vortex_expect("Failed to downcast array"); + let mut data = typed.data().clone(); + V::with_slots(&mut data, slots)?; + Ok(Array::::try_from_data(data)?.into_array()) } fn reduce(&self, array: &ArrayRef) -> VortexResult> { - let Some(reduced) = V::reduce(downcast::(array))? else { + let Some(reduced) = V::reduce(array.as_::())? else { return Ok(None); }; vortex_ensure!( @@ -145,7 +142,7 @@ impl DynVTable for V { parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { - let Some(reduced) = V::reduce_parent(downcast::(array), parent, child_idx)? else { + let Some(reduced) = V::reduce_parent(array.as_::(), parent, child_idx)? else { return Ok(None); }; @@ -171,8 +168,10 @@ impl DynVTable for V { let dtype = array.dtype().clone(); let stats = array.statistics().to_owned(); - let owned = downcast_owned::(array); - let result = V::execute(owned, ctx)?; + let typed = Array::::try_from_array_ref(array) + .map_err(|_| vortex_err!("Failed to downcast array for execute")) + .vortex_expect("Failed to downcast array for execute"); + let result = V::execute(typed, ctx)?; if matches!(result.step(), ExecutionStep::Done) { if cfg!(debug_assertions) { @@ -202,17 +201,17 @@ impl DynVTable for V { child_idx: usize, ctx: &mut ExecutionCtx, ) -> VortexResult> { - let Some(result) = V::execute_parent(downcast::(array), parent, child_idx, ctx)? else { + let Some(result) = V::execute_parent(array.as_::(), parent, child_idx, ctx)? else { return Ok(None); }; if cfg!(debug_assertions) { vortex_ensure!( - result.as_ref().len() == parent.len(), + result.len() == parent.len(), "Executed parent canonical length mismatch" ); vortex_ensure!( - result.as_ref().dtype() == parent.dtype(), + result.dtype() == parent.dtype(), "Executed parent canonical dtype mismatch" ); } @@ -220,20 +219,3 @@ impl DynVTable for V { Ok(Some(result)) } } - -/// Borrow-downcast an `ArrayRef` to `&Array`. -fn downcast(array: &ArrayRef) -> &Array { - array - .as_any() - .downcast_ref::>() - .vortex_expect("Failed to downcast array to expected encoding type") -} - -/// Downcast an `ArrayRef` into an `Arc>`. -fn downcast_owned(array: ArrayRef) -> Arc> { - let any_arc = array.as_any_arc(); - any_arc - .downcast::>() - .ok() - .vortex_expect("Failed to downcast array to expected encoding type") -} diff --git a/vortex-array/src/vtable/mod.rs b/vortex-array/src/array/vtable/mod.rs similarity index 77% rename from vortex-array/src/vtable/mod.rs rename to vortex-array/src/array/vtable/mod.rs index 514d4ac2add..7f233b72f5d 100644 --- a/vortex-array/src/vtable/mod.rs +++ b/vortex-array/src/array/vtable/mod.rs @@ -5,26 +5,23 @@ mod dyn_; mod operations; -mod typed; mod validity; use std::fmt::Debug; use std::hash::Hasher; -use std::ops::Deref; -use std::sync::Arc; pub use dyn_::*; pub use operations::*; -pub use typed::*; pub use validity::*; use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_error::vortex_panic; use vortex_session::VortexSession; +use crate::Array; use crate::ArrayRef; +use crate::ArrayView; use crate::Canonical; -use crate::DynArray; use crate::ExecutionResult; use crate::IntoArray; use crate::Precision; @@ -38,7 +35,7 @@ use crate::executor::ExecutionCtx; use crate::patches::Patches; use crate::scalar::ScalarValue; use crate::serde::ArrayChildren; -use crate::stats::StatsSetRef; +use crate::stats::ArrayStats; use crate::validity::Validity; /// The array [`VTable`] encapsulates logic for an Array type within Vortex. @@ -46,16 +43,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`] and [`DynVTable`] +/// From this [`VTable`] trait, we derive implementations for the sealed `DynArray` and [`DynVTable`] /// traits. /// /// The functions defined in these vtable traits will typically document their pre- and -/// post-conditions. The pre-conditions are validated inside the [`DynArray`] and [`DynVTable`] +/// post-conditions. The pre-conditions are validated inside the `DynArray` and [`DynVTable`] /// 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 Array: 'static + Send + Sync + Clone + Debug + Deref + IntoArray; + type ArrayData: 'static + Send + Sync + Clone + Debug + IntoArray; type Metadata: Debug; type OperationsVTable: OperationsVTable; @@ -64,42 +61,42 @@ pub trait VTable: 'static + Clone + Sized + Send + Sync + Debug { /// Returns the VTable from the array instance. /// // NOTE(ngates): this function is temporary while we migrate Arrays over to the unified vtable - fn vtable(array: &Self::Array) -> &Self; + fn vtable(array: &Self::ArrayData) -> &Self; /// Returns the ID of the array. fn id(&self) -> ArrayId; /// Returns the length of the array. - fn len(array: &Self::Array) -> usize; + fn len(array: &Self::ArrayData) -> usize; /// Returns the DType of the array. - fn dtype(array: &Self::Array) -> &DType; + fn dtype(array: &Self::ArrayData) -> &DType; /// Returns the stats set for the array. - fn stats(array: &Self::Array) -> StatsSetRef<'_>; + fn stats(array: &Self::ArrayData) -> &ArrayStats; /// Hashes the array contents. - fn array_hash(array: &Self::Array, state: &mut H, precision: Precision); + fn array_hash(array: &Self::ArrayData, state: &mut H, precision: Precision); /// Compares two arrays of the same type for equality. - fn array_eq(array: &Self::Array, other: &Self::Array, precision: Precision) -> bool; + fn array_eq(array: &Self::ArrayData, other: &Self::ArrayData, precision: Precision) -> bool; /// Returns the number of buffers in the array. - fn nbuffers(array: &Self::Array) -> usize; + fn nbuffers(array: ArrayView<'_, Self>) -> usize; /// Returns the buffer at the given index. /// /// # Panics /// Panics if `idx >= nbuffers(array)`. - fn buffer(array: &Self::Array, idx: usize) -> BufferHandle; + fn buffer(array: ArrayView<'_, Self>, idx: usize) -> BufferHandle; /// Returns the name of the buffer at the given index, or `None` if unnamed. - fn buffer_name(array: &Self::Array, idx: usize) -> Option; + fn buffer_name(array: ArrayView<'_, Self>, idx: usize) -> Option; /// Returns the number of children in the array. /// /// The default counts non-None slots. - fn nchildren(array: &Self::Array) -> usize { + fn nchildren(array: ArrayView<'_, Self>) -> usize { Self::slots(array).iter().filter(|s| s.is_some()).count() } @@ -109,7 +106,7 @@ pub trait VTable: 'static + Clone + Sized + Send + Sync + Debug { /// /// # Panics /// Panics if `idx >= nchildren(array)`. - fn child(array: &Self::Array, idx: usize) -> ArrayRef { + fn child(array: ArrayView<'_, Self>, idx: usize) -> ArrayRef { Self::slots(array) .iter() .filter_map(|s| s.clone()) @@ -123,7 +120,7 @@ pub trait VTable: 'static + Clone + Sized + Send + Sync + Debug { /// /// # Panics /// Panics if `idx >= nchildren(array)`. - fn child_name(array: &Self::Array, idx: usize) -> String { + fn child_name(array: ArrayView<'_, Self>, idx: usize) -> String { Self::slots(array) .iter() .enumerate() @@ -134,7 +131,7 @@ pub trait VTable: 'static + Clone + Sized + Send + Sync + Debug { } /// Exports metadata for an array. - fn metadata(array: &Self::Array) -> VortexResult; + fn metadata(array: ArrayView<'_, Self>) -> VortexResult; /// Serialize metadata into a byte buffer for IPC or file storage. /// Return `None` if the array cannot be serialized. @@ -151,11 +148,15 @@ pub trait VTable: 'static + Clone + Sized + Send + Sync + Debug { /// Writes the array into a canonical builder. fn append_to_builder( - array: &Self::Array, + array: ArrayView<'_, Self>, builder: &mut dyn ArrayBuilder, ctx: &mut ExecutionCtx, ) -> VortexResult<()> { - let canonical = array.to_array().execute::(ctx)?.into_array(); + let canonical = array + .array() + .clone() + .execute::(ctx)? + .into_array(); builder.extend_from_array(&canonical); Ok(()) } @@ -167,7 +168,7 @@ pub trait VTable: 'static + Clone + Sized + Send + Sync + Debug { metadata: &Self::Metadata, buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult; + ) -> VortexResult; /// Returns the slots of the array as a slice. /// @@ -185,19 +186,19 @@ pub trait VTable: 'static + Clone + Sized + Send + Sync + Debug { /// /// TODO: once no encodings rely on side-effects in [`Self::with_slots`], replace the /// `slots`/`with_slots` pair with a single `slots_mut` returning `&mut [Option]`. - fn slots(array: &Self::Array) -> &[Option]; + fn slots<'a>(array: ArrayView<'a, Self>) -> &'a [Option]; /// Returns the name of the slot at the given index. /// /// # Panics /// Panics if `idx >= slots(array).len()`. - fn slot_name(array: &Self::Array, idx: usize) -> String; + fn slot_name(array: ArrayView<'_, Self>, idx: usize) -> String; /// Replaces the slots in `array` with the given `slots` vec. /// /// Some encodings use this to perform side-effects (e.g. cache invalidation) when /// slots change. Once those are removed, this will be replaced by `slots_mut`. - fn with_slots(array: &mut Self::Array, slots: Vec>) -> VortexResult<()>; + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()>; /// Execute this array by returning an [`ExecutionResult`]. /// @@ -214,11 +215,11 @@ pub trait VTable: 'static + Clone + Sized + Send + Sync + Debug { /// /// Debug builds will panic if the returned array is of the wrong type, wrong length, or /// incorrectly contains null values. - fn execute(array: Arc>, ctx: &mut ExecutionCtx) -> VortexResult; + fn execute(array: Array, ctx: &mut ExecutionCtx) -> VortexResult; /// Attempt to execute the parent of this array. fn execute_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, @@ -228,14 +229,14 @@ pub trait VTable: 'static + Clone + Sized + Send + Sync + Debug { } /// Attempt to reduce the array to a simpler representation. - fn reduce(array: &Array) -> VortexResult> { + fn reduce(array: ArrayView<'_, Self>) -> VortexResult> { _ = array; Ok(None) } /// Attempt to perform a reduction of the parent of this array. fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { @@ -247,6 +248,8 @@ pub trait VTable: 'static + Clone + Sized + Send + Sync + Debug { /// Alias for migration — downstream code can start using `ArrayVTable`. pub use VTable as ArrayVTable; +use crate::array::ArrayId; + /// Placeholder type used to indicate when a particular vtable is not supported by the encoding. pub struct NotSupported; @@ -325,44 +328,25 @@ pub fn patches_child_name(idx: usize) -> &'static str { } } -/// vtable! macro — generates IntoArray, From, Deref, AsRef for inner array types. +/// vtable! macro — generates IntoArray, From, and type alias for array types. /// -/// During the migration, IntoArray creates [`Array`] (the new typed wrapper) while -/// Deref/AsRef go through AlsoArrayAdapter for backward-compatible DynArray access. +/// Three forms: +/// - `vtable!(Foo)` — short for `vtable!(Foo, Foo)` (legacy form) +/// - `vtable!(Foo, FooVT)` — legacy form where `FooArray` is the inner struct name +/// - `vtable!(Foo, FooVT, FooData)` — new form where `FooData` is the inner struct, +/// and `FooArray` is generated as a type alias for `Array` #[macro_export] macro_rules! vtable { ($V:ident) => { $crate::vtable!($V, $V); }; + // Legacy form: FooArray is the inner struct name, no type alias generated. ($Base:ident, $VT:ident) => { $crate::aliases::paste::paste! { - impl AsRef for [<$Base Array>] { - fn as_ref(&self) -> &dyn $crate::DynArray { - // We can unsafe cast ourselves to an ArrayAdapter. - unsafe { &*(self as *const [<$Base Array>] as *const $crate::ArrayAdapter<$VT>) } - } - } - - impl std::ops::Deref for [<$Base Array>] { - type Target = dyn $crate::DynArray; - - fn deref(&self) -> &Self::Target { - // We can unsafe cast ourselves to an ArrayAdapter. - unsafe { &*(self as *const [<$Base Array>] as *const $crate::ArrayAdapter<$VT>) } - } - } - impl $crate::IntoArray for [<$Base Array>] { fn into_array(self) -> $crate::ArrayRef { - use $crate::vtable::VTable; - let vtable = $VT::vtable(&self).clone(); - let dtype = $VT::dtype(&self).clone(); - let len = $VT::len(&self); - let stats = $VT::stats(&self).to_array_stats(); - // SAFETY: dtype and len are extracted from `self` via VTable methods. - std::sync::Arc::new(unsafe { - $crate::vtable::Array::new_unchecked(vtable, dtype, len, self, stats) - }) + use $crate::aliases::vortex_error::VortexExpect; + $crate::ArrayRef::from($crate::Array::<$VT>::try_from_data(self).vortex_expect("data is always valid")) } } @@ -382,4 +366,25 @@ macro_rules! vtable { } } }; + // New form: Data is the inner struct, FooArray is a type alias for Array. + ($Base:ident, $VT:ident, $Data:ident) => { + $crate::aliases::paste::paste! { + /// Type alias: `FooArray = Array`. + pub type [<$Base Array>] = $crate::Array<$VT>; + + impl $crate::IntoArray for $Data { + fn into_array(self) -> $crate::ArrayRef { + use $crate::aliases::vortex_error::VortexExpect; + $crate::Array::<$VT>::try_from_data(self).vortex_expect("data is always valid").into_array() + } + } + + impl From<$Data> for $crate::ArrayRef { + fn from(value: $Data) -> $crate::ArrayRef { + use $crate::IntoArray; + value.into_array() + } + } + } + }; } diff --git a/vortex-array/src/vtable/operations.rs b/vortex-array/src/array/vtable/operations.rs similarity index 68% rename from vortex-array/src/vtable/operations.rs rename to vortex-array/src/array/vtable/operations.rs index bdda1b3675a..a002bc488fa 100644 --- a/vortex-array/src/vtable/operations.rs +++ b/vortex-array/src/array/vtable/operations.rs @@ -5,9 +5,10 @@ use vortex_error::VortexResult; use vortex_error::vortex_bail; use crate::ExecutionCtx; +use crate::array::ArrayView; +use crate::array::VTable; use crate::scalar::Scalar; use crate::vtable::NotSupported; -use crate::vtable::VTable; pub trait OperationsVTable { /// Fetch the scalar at the given index. @@ -16,11 +17,19 @@ pub trait OperationsVTable { /// /// Bounds-checking has already been performed by the time this function is called, /// and the index is guaranteed to be non-null. - fn scalar_at(array: &V::Array, index: usize, ctx: &mut ExecutionCtx) -> VortexResult; + fn scalar_at( + array: ArrayView<'_, V>, + index: usize, + ctx: &mut ExecutionCtx, + ) -> VortexResult; } impl OperationsVTable for NotSupported { - fn scalar_at(array: &V::Array, _index: usize, _ctx: &mut ExecutionCtx) -> VortexResult { + fn scalar_at( + array: ArrayView<'_, V>, + _index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { vortex_bail!( "Legacy scalar_at operation is not supported for {} arrays", array.encoding_id() diff --git a/vortex-array/src/vtable/validity.rs b/vortex-array/src/array/vtable/validity.rs similarity index 72% rename from vortex-array/src/vtable/validity.rs rename to vortex-array/src/array/vtable/validity.rs index e39ddac53be..ab707c550f9 100644 --- a/vortex-array/src/vtable/validity.rs +++ b/vortex-array/src/array/vtable/validity.rs @@ -4,9 +4,9 @@ use vortex_error::VortexResult; use crate::ArrayRef; -use crate::DynArray; +use crate::array::ArrayView; +use crate::array::VTable; use crate::validity::Validity; -use crate::vtable::VTable; pub trait ValidityVTable { /// Returns the [`Validity`] of the array. @@ -14,7 +14,7 @@ pub trait ValidityVTable { /// ## Pre-conditions /// /// - The array DType is nullable. - fn validity(array: &V::Array) -> VortexResult; + fn validity(array: ArrayView<'_, V>) -> VortexResult; } /// An implementation of the [`ValidityVTable`] for arrays that hold validity as a child array. @@ -22,15 +22,15 @@ pub struct ValidityVTableFromValidityHelper; /// Expose validity held as a child array. pub trait ValidityHelper { - fn validity(&self) -> Validity; + fn validity(&self) -> &Validity; } impl ValidityVTable for ValidityVTableFromValidityHelper where - V::Array: ValidityHelper, + V::ArrayData: ValidityHelper, { - fn validity(array: &V::Array) -> VortexResult { - Ok(array.validity()) + fn validity(array: ArrayView<'_, V>) -> VortexResult { + Ok(array.data().validity().clone()) } } @@ -49,10 +49,10 @@ pub trait ValiditySliceHelper { impl ValidityVTable for ValidityVTableFromValiditySliceHelper where - V::Array: ValiditySliceHelper, + V::ArrayData: ValiditySliceHelper, { - fn validity(array: &V::Array) -> VortexResult { - array.sliced_validity() + fn validity(array: ArrayView<'_, V>) -> VortexResult { + array.data().sliced_validity() } } @@ -61,15 +61,15 @@ where pub struct ValidityVTableFromChild; pub trait ValidityChild { - fn validity_child(array: &V::Array) -> &ArrayRef; + fn validity_child(array: &V::ArrayData) -> &ArrayRef; } impl ValidityVTable for ValidityVTableFromChild where V: ValidityChild, { - fn validity(array: &V::Array) -> VortexResult { - V::validity_child(array).validity() + fn validity(array: ArrayView<'_, V>) -> VortexResult { + V::validity_child(array.data()).validity() } } @@ -88,9 +88,9 @@ pub trait ValidityChildSliceHelper { impl ValidityVTable for ValidityVTableFromChildSliceHelper where - V::Array: ValidityChildSliceHelper, + V::ArrayData: ValidityChildSliceHelper, { - fn validity(array: &V::Array) -> VortexResult { - array.sliced_child_array()?.validity() + fn validity(array: ArrayView<'_, V>) -> VortexResult { + array.data().sliced_child_array()?.validity() } } diff --git a/vortex-array/src/arrays/arbitrary.rs b/vortex-array/src/arrays/arbitrary.rs index 4ec802e8670..4cd7fccfba8 100644 --- a/vortex-array/src/arrays/arbitrary.rs +++ b/vortex-array/src/arrays/arbitrary.rs @@ -12,7 +12,6 @@ use vortex_buffer::Buffer; use vortex_error::VortexExpect; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; use crate::ToCanonical; use crate::arrays::BoolArray; diff --git a/vortex-array/src/arrays/assertions.rs b/vortex-array/src/arrays/assertions.rs index 9be7a8c16c6..990dde4b37d 100644 --- a/vortex-array/src/arrays/assertions.rs +++ b/vortex-array/src/arrays/assertions.rs @@ -7,7 +7,6 @@ use itertools::Itertools; use vortex_error::VortexExpect; use crate::ArrayRef; -use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; use crate::LEGACY_SESSION; @@ -48,9 +47,14 @@ fn find_mismatched_indices(left: &ArrayRef, right: &ArrayRef) -> Vec { /// ``` #[macro_export] macro_rules! assert_nth_scalar { - ($arr:expr, $n:expr, $expected:expr) => { - assert_eq!($arr.scalar_at($n).unwrap(), $expected.try_into().unwrap()); - }; + ($arr:expr, $n:expr, $expected:expr) => {{ + use $crate::IntoArray as _; + let arr_ref: $crate::ArrayRef = $crate::IntoArray::into_array($arr.clone()); + assert_eq!( + arr_ref.scalar_at($n).unwrap(), + $expected.try_into().unwrap() + ); + }}; } /// Asserts that the scalar at position `$n` in array `$arr` is null. @@ -63,30 +67,33 @@ macro_rules! assert_nth_scalar { /// ``` #[macro_export] macro_rules! assert_nth_scalar_is_null { - ($arr:expr, $n:expr) => { + ($arr:expr, $n:expr) => {{ + let arr_ref: $crate::ArrayRef = $crate::IntoArray::into_array($arr.clone()); assert!( - $arr.scalar_at($n).unwrap().is_null(), + arr_ref.scalar_at($n).unwrap().is_null(), "expected scalar at index {} to be null, but was {:?}", $n, - $arr.scalar_at($n).unwrap() + arr_ref.scalar_at($n).unwrap() ); - }; + }}; } #[macro_export] macro_rules! assert_arrays_eq { ($left:expr, $right:expr) => {{ - let left = $left.clone(); - let right = $right.clone(); - assert_eq!( - left.dtype(), - right.dtype(), - "assertion left == right failed: arrays differ in type: {} != {}.\n left: {}\n right: {}", - left.dtype(), - right.dtype(), - left.display_values(), - right.display_values() - ); + + + let left: $crate::ArrayRef = $crate::IntoArray::into_array($left.clone()); + let right: $crate::ArrayRef = $crate::IntoArray::into_array($right.clone()); + if left.dtype() != right.dtype() { + panic!( + "assertion left == right failed: arrays differ in type: {} != {}.\n left: {}\n right: {}", + left.dtype(), + right.dtype(), + left.display_values(), + right.display_values() + ) + } assert_eq!( left.len(), @@ -99,9 +106,9 @@ macro_rules! assert_arrays_eq { ); #[allow(deprecated)] - let left = left.to_array(); + let left = left.clone(); #[allow(deprecated)] - let right = right.to_array(); + let right = right.clone(); $crate::arrays::assert_arrays_eq_impl(&left, &right); }}; } diff --git a/vortex-array/src/arrays/bool/array.rs b/vortex-array/src/arrays/bool/array.rs index 22be8b6bdf3..4c654a44081 100644 --- a/vortex-array/src/arrays/bool/array.rs +++ b/vortex-array/src/arrays/bool/array.rs @@ -11,19 +11,22 @@ use vortex_mask::Mask; use crate::ArrayRef; use crate::IntoArray; +use crate::array::Array; +use crate::array::child_to_validity; +use crate::array::validity_to_child; +use crate::arrays::Bool; +use crate::arrays::BoolArray; use crate::buffer::BufferHandle; use crate::dtype::DType; use crate::stats::ArrayStats; use crate::validity::Validity; -use crate::vtable::child_to_validity; -use crate::vtable::validity_to_child; /// The validity bitmap indicating which elements are non-null. pub(super) const VALIDITY_SLOT: usize = 0; pub(super) const NUM_SLOTS: usize = 1; pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["validity"]; -/// A boolean array that stores true/false values in a compact bit-packed format. +/// Inner data for a boolean array that stores true/false values in a compact bit-packed format. /// /// This mirrors the Apache Arrow Boolean array encoding, where each boolean value /// is stored as a single bit rather than a full byte. @@ -56,7 +59,7 @@ pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["validity"]; /// # } /// ``` #[derive(Clone, Debug)] -pub struct BoolArray { +pub struct BoolData { /// Child arrays stored as slots. See [`VTable::slots`] for design rationale. pub(super) slots: Vec>, pub(super) dtype: DType, @@ -73,11 +76,91 @@ pub struct BoolArrayParts { pub validity: Validity, } -impl BoolArray { +/// Field accessors and non-consuming methods on the inner bool data. +impl BoolData { + /// Returns the length of this array. + pub fn len(&self) -> usize { + self.len + } + + /// Returns the [`DType`] of this array. + pub fn dtype(&self) -> &DType { + &self.dtype + } + + /// Returns `true` if this array is empty. + pub fn is_empty(&self) -> bool { + self.len() == 0 + } + + /// Returns the [`Validity`] of this array. + #[allow(clippy::same_name_method)] + pub fn validity(&self) -> Validity { + child_to_validity(&self.slots[VALIDITY_SLOT], self.dtype.nullability()) + } + + /// Returns the validity as a [`Mask`]. + pub fn validity_mask(&self) -> Mask { + self.validity().to_mask(self.len()) + } + + /// Returns the underlying [`BitBuffer`] of the array. + pub fn to_bit_buffer(&self) -> BitBuffer { + let buffer = self.bits.as_host().clone(); + BitBuffer::new_with_offset(buffer, self.len, self.offset) + } + + /// Returns the underlying [`BitBuffer`] of the array + pub fn into_bit_buffer(self) -> BitBuffer { + let buffer = self.bits.unwrap_host(); + BitBuffer::new_with_offset(buffer, self.len, self.offset) + } + + /// Splits into owned parts + #[inline] + pub fn into_parts(self) -> BoolArrayParts { + let validity = self.validity(); + BoolArrayParts { + bits: self.bits, + offset: self.offset, + len: self.len, + validity, + } + } + + pub fn to_mask(&self) -> Mask { + self.maybe_to_mask() + .vortex_expect("failed to check validity") + .vortex_expect("cannot convert nullable boolean array to mask") + } + + pub fn maybe_to_mask(&self) -> VortexResult> { + let validity = self.validity(); + let all_valid = match &validity { + Validity::NonNullable | Validity::AllValid => true, + Validity::AllInvalid => false, + Validity::Array(a) => a.statistics().compute_min::().unwrap_or(false), + }; + Ok(all_valid.then(|| Mask::from_buffer(self.to_bit_buffer()))) + } + + pub fn to_mask_fill_null_false(&self) -> Mask { + let validity_mask = self.validity_mask(); + let buffer = match validity_mask { + Mask::AllTrue(_) => self.to_bit_buffer(), + Mask::AllFalse(_) => return Mask::new_false(self.len()), + Mask::Values(validity) => validity.bit_buffer() & self.to_bit_buffer(), + }; + Mask::from_buffer(buffer) + } + fn make_slots(validity: &Validity, len: usize) -> Vec> { vec![validity_to_child(validity, len)] } +} +/// Constructors and consuming methods for `BoolArray` (`Array`). +impl Array { /// Constructs a new `BoolArray`. /// /// # Panics @@ -99,21 +182,79 @@ impl BoolArray { /// Constructs a new `BoolArray`. /// - /// See [`BoolArray::new_unchecked`] for more information. - /// /// # Errors /// - /// Returns an error if the provided components do not satisfy the invariants documented in - /// [`BoolArray::new_unchecked`]. + /// Returns an error if the provided components do not satisfy the invariants. pub fn try_new(bits: BitBuffer, validity: Validity) -> VortexResult { + Array::try_from_data(BoolData::try_new(bits, validity)?) + } + + /// Build a new bool array from a `BufferHandle`, returning an error if the offset is + /// too large or the buffer is not large enough to hold the values. + pub fn try_new_from_handle( + bits: BufferHandle, + offset: usize, + len: usize, + validity: Validity, + ) -> VortexResult { + Array::try_from_data(BoolData::try_new_from_handle(bits, offset, len, validity)?) + } + + /// Creates a new [`BoolArray`] without validation. + /// + /// # Safety + /// + /// The caller must ensure that the validity length is equal to the bit buffer length. + pub unsafe fn new_unchecked(bits: BitBuffer, validity: Validity) -> Self { + // SAFETY: caller guarantees validity length equals bit buffer length. + Array::try_from_data(unsafe { BoolData::new_unchecked(bits, validity) }) + .vortex_expect("BoolData is always valid") + } + + /// Validates the components that would be used to create a [`BoolArray`]. + pub fn validate(bits: &BitBuffer, validity: &Validity) -> VortexResult<()> { + BoolData::validate(bits, validity) + } + + /// Create a new BoolArray from a set of indices and a length. + /// + /// All indices must be less than the length. + pub fn from_indices>( + length: usize, + indices: I, + validity: Validity, + ) -> Self { + let mut buffer = BitBufferMut::new_unset(length); + indices.into_iter().for_each(|idx| buffer.set(idx)); + Self::new(buffer.freeze(), validity) + } + + /// Returns the underlying [`BitBuffer`] of the array, consuming self. + pub fn into_bit_buffer(self) -> BitBuffer { + self.into_data().into_bit_buffer() + } + + /// Splits into owned parts, consuming self. + #[inline] + pub fn into_parts(self) -> BoolArrayParts { + self.into_data().into_parts() + } +} + +/// Internal constructors on BoolData (used by Array constructors and VTable::build). +impl BoolData { + pub(super) fn try_new(bits: BitBuffer, validity: Validity) -> VortexResult { let bits = bits.shrink_offset(); Self::validate(&bits, &validity)?; let (offset, len, buffer) = bits.into_inner(); + let slots = Self::make_slots(&validity, len); + let dtype = DType::Bool(validity.nullability()); + Ok(Self { - slots: Self::make_slots(&validity, len), - dtype: DType::Bool(validity.nullability()), + slots, + dtype, bits: BufferHandle::new_host(buffer), offset, len, @@ -121,13 +262,7 @@ impl BoolArray { }) } - /// Build a new bool array from a `BufferHandle`, returning an error if the offset is - /// too large or the buffer is not large enough to hold the values. - /// - /// # Error - /// - /// Error if the inputs fail validation. See also `try_new`. - pub fn try_new_from_handle( + pub(super) fn try_new_from_handle( bits: BufferHandle, offset: usize, len: usize, @@ -148,9 +283,12 @@ impl BoolArray { bits.len() * 8, ); + let slots = Self::make_slots(&validity, len); + let dtype = DType::Bool(validity.nullability()); + Ok(Self { - slots: Self::make_slots(&validity, len), - dtype: DType::Bool(validity.nullability()), + slots, + dtype, bits, offset, len, @@ -158,20 +296,17 @@ impl BoolArray { }) } - /// Creates a new [`BoolArray`] without validation from these components: - /// - /// # Safety - /// - /// The caller must ensure that the validity length is equal to the bit buffer length. - pub unsafe fn new_unchecked(bits: BitBuffer, validity: Validity) -> Self { + pub(super) unsafe fn new_unchecked(bits: BitBuffer, validity: Validity) -> Self { if cfg!(debug_assertions) { - Self::new(bits, validity) + Self::try_new(bits, validity).vortex_expect("Failed to create BoolData") } else { let (offset, len, buffer) = bits.into_inner(); + let slots = Self::make_slots(&validity, len); + let dtype = DType::Bool(validity.nullability()); Self { - slots: Self::make_slots(&validity, len), - dtype: DType::Bool(validity.nullability()), + slots, + dtype, bits: BufferHandle::new_host(buffer), offset, len, @@ -180,17 +315,13 @@ impl BoolArray { } } - /// Validates the components that would be used to create a [`BoolArray`]. - /// - /// This function checks all the invariants required by [`BoolArray::new_unchecked`]. - pub fn validate(bits: &BitBuffer, validity: &Validity) -> VortexResult<()> { + pub(super) fn validate(bits: &BitBuffer, validity: &Validity) -> VortexResult<()> { vortex_ensure!( bits.offset() < 8, "BitBuffer offset must be <8, got {}", bits.offset() ); - // Validate validity if let Some(validity_len) = validity.maybe_len() { vortex_ensure!( validity_len == bits.len(), @@ -201,94 +332,17 @@ impl BoolArray { Ok(()) } - - /// Reconstructs the validity from the slot state. - pub fn validity(&self) -> Validity { - child_to_validity(&self.slots[VALIDITY_SLOT], self.dtype.nullability()) - } - - /// Splits into owned parts - #[inline] - pub fn into_parts(self) -> BoolArrayParts { - let validity = self.validity(); - BoolArrayParts { - bits: self.bits, - offset: self.offset, - len: self.len, - validity, - } - } - - /// Create a new BoolArray from a set of indices and a length. - /// - /// All indices must be less than the length. - pub fn from_indices>( - length: usize, - indices: I, - validity: Validity, - ) -> Self { - let mut buffer = BitBufferMut::new_unset(length); - indices.into_iter().for_each(|idx| buffer.set(idx)); - Self::new(buffer.freeze(), validity) - } - - /// Returns the underlying [`BitBuffer`] of the array. - pub fn to_bit_buffer(&self) -> BitBuffer { - let buffer = self.bits.as_host().clone(); - - BitBuffer::new_with_offset(buffer, self.len, self.offset) - } - - /// Returns the underlying [`BitBuffer`] of the array - pub fn into_bit_buffer(self) -> BitBuffer { - let buffer = self.bits.unwrap_host(); - - BitBuffer::new_with_offset(buffer, self.len, self.offset) - } - - pub fn to_mask(&self) -> Mask { - self.maybe_to_mask() - .vortex_expect("failed to check validity") - .vortex_expect("cannot convert nullable boolean array to mask") - } - - pub fn maybe_to_mask(&self) -> VortexResult> { - Ok(self - .all_valid()? - .then(|| Mask::from_buffer(self.to_bit_buffer()))) - } - - pub fn to_mask_fill_null_false(&self) -> Mask { - if let Some(constant) = self.as_constant() { - let bool_constant = constant.as_bool(); - if bool_constant.value().unwrap_or(false) { - return Mask::new_true(self.len()); - } else { - return Mask::new_false(self.len()); - } - } - // Extract a boolean buffer, treating null values to false - let buffer = match self - .validity_mask() - .unwrap_or_else(|_| Mask::new_true(self.len())) - { - Mask::AllTrue(_) => self.to_bit_buffer(), - Mask::AllFalse(_) => return Mask::new_false(self.len()), - Mask::Values(validity) => validity.bit_buffer() & self.to_bit_buffer(), - }; - Mask::from_buffer(buffer) - } } impl From for BoolArray { fn from(value: BitBuffer) -> Self { - Self::new(value, Validity::NonNullable) + BoolArray::new(value, Validity::NonNullable) } } impl FromIterator for BoolArray { fn from_iter>(iter: T) -> Self { - Self::from(BitBuffer::from_iter(iter)) + BoolArray::from(BitBuffer::from_iter(iter)) } } @@ -296,7 +350,7 @@ impl FromIterator> for BoolArray { fn from_iter>>(iter: I) -> Self { let (buffer, nulls) = BooleanArray::from_iter(iter).into_parts(); - Self::new( + BoolArray::new( BitBuffer::from(buffer), nulls .map(|n| Validity::from(BitBuffer::from(n.into_inner()))) @@ -326,7 +380,6 @@ mod tests { use vortex_buffer::BitBufferMut; use vortex_buffer::buffer; - use crate::DynArray; use crate::IntoArray; use crate::LEGACY_SESSION; use crate::VortexSessionExecute; diff --git a/vortex-array/src/arrays/bool/compute/cast.rs b/vortex-array/src/arrays/bool/compute/cast.rs index 6f1f575aaeb..a00457f1b6b 100644 --- a/vortex-array/src/arrays/bool/compute/cast.rs +++ b/vortex-array/src/arrays/bool/compute/cast.rs @@ -3,15 +3,16 @@ use vortex_error::VortexResult; +use crate::ArrayRef; use crate::IntoArray; -use crate::array::ArrayRef; +use crate::array::ArrayView; use crate::arrays::Bool; use crate::arrays::BoolArray; use crate::dtype::DType; use crate::scalar_fn::fns::cast::CastReduce; impl CastReduce for Bool { - fn cast(array: &BoolArray, dtype: &DType) -> VortexResult> { + fn cast(array: ArrayView<'_, Bool>, dtype: &DType) -> VortexResult> { if !matches!(dtype, DType::Bool(_)) { return Ok(None); } diff --git a/vortex-array/src/arrays/bool/compute/fill_null.rs b/vortex-array/src/arrays/bool/compute/fill_null.rs index d3ea9231e51..32bf557d10b 100644 --- a/vortex-array/src/arrays/bool/compute/fill_null.rs +++ b/vortex-array/src/arrays/bool/compute/fill_null.rs @@ -7,6 +7,7 @@ use vortex_error::vortex_err; use crate::ArrayRef; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Bool; use crate::arrays::BoolArray; use crate::scalar::Scalar; @@ -15,7 +16,7 @@ use crate::validity::Validity; impl FillNullKernel for Bool { fn fill_null( - array: &BoolArray, + array: ArrayView<'_, Bool>, fill_value: &Scalar, ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -26,7 +27,7 @@ impl FillNullKernel for Bool { Ok(Some(match array.validity() { Validity::Array(v) => { - let v_bool = v.clone().execute::(ctx)?; + let v_bool = v.execute::(ctx)?; let bool_buffer = if fill { array.to_bit_buffer() | &!v_bool.to_bit_buffer() } else { diff --git a/vortex-array/src/arrays/bool/compute/filter.rs b/vortex-array/src/arrays/bool/compute/filter.rs index 82962013ec7..808672e4a37 100644 --- a/vortex-array/src/arrays/bool/compute/filter.rs +++ b/vortex-array/src/arrays/bool/compute/filter.rs @@ -11,6 +11,7 @@ use vortex_mask::MaskIter; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Bool; use crate::arrays::BoolArray; use crate::arrays::filter::FilterReduce; @@ -19,7 +20,7 @@ use crate::arrays::filter::FilterReduce; const FILTER_SLICES_DENSITY_THRESHOLD: f64 = 0.8; impl FilterReduce for Bool { - fn filter(array: &BoolArray, mask: &Mask) -> VortexResult> { + fn filter(array: ArrayView<'_, Bool>, mask: &Mask) -> VortexResult> { let validity = array.validity().filter(mask)?; let mask_values = mask diff --git a/vortex-array/src/arrays/bool/compute/mask.rs b/vortex-array/src/arrays/bool/compute/mask.rs index 2570045c981..9fc07001b8c 100644 --- a/vortex-array/src/arrays/bool/compute/mask.rs +++ b/vortex-array/src/arrays/bool/compute/mask.rs @@ -5,13 +5,14 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Bool; use crate::arrays::BoolArray; use crate::scalar_fn::fns::mask::MaskReduce; use crate::validity::Validity; impl MaskReduce for Bool { - fn mask(array: &BoolArray, mask: &ArrayRef) -> VortexResult> { + fn mask(array: ArrayView<'_, Bool>, mask: &ArrayRef) -> VortexResult> { Ok(Some( BoolArray::new( array.to_bit_buffer(), diff --git a/vortex-array/src/arrays/bool/compute/rules.rs b/vortex-array/src/arrays/bool/compute/rules.rs index 0a36a8981ae..8fa5d7a2a7f 100644 --- a/vortex-array/src/arrays/bool/compute/rules.rs +++ b/vortex-array/src/arrays/bool/compute/rules.rs @@ -5,10 +5,10 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Bool; use crate::arrays::BoolArray; use crate::arrays::Masked; -use crate::arrays::MaskedArray; use crate::arrays::filter::FilterReduceAdaptor; use crate::arrays::slice::SliceReduceAdaptor; use crate::optimizer::rules::ArrayParentReduceRule; @@ -36,8 +36,8 @@ impl ArrayParentReduceRule for BoolMaskedValidityRule { fn reduce_parent( &self, - array: &BoolArray, - parent: &MaskedArray, + array: ArrayView<'_, Bool>, + parent: ArrayView<'_, Masked>, child_idx: usize, ) -> VortexResult> { if child_idx > 0 { diff --git a/vortex-array/src/arrays/bool/compute/slice.rs b/vortex-array/src/arrays/bool/compute/slice.rs index b6d9a8469f2..93042c0a4fa 100644 --- a/vortex-array/src/arrays/bool/compute/slice.rs +++ b/vortex-array/src/arrays/bool/compute/slice.rs @@ -7,12 +7,13 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Bool; use crate::arrays::BoolArray; use crate::arrays::slice::SliceReduce; impl SliceReduce for Bool { - fn slice(array: &Self::Array, range: Range) -> VortexResult> { + fn slice(array: ArrayView<'_, Bool>, range: Range) -> VortexResult> { Ok(Some( BoolArray::new( array.to_bit_buffer().slice(range.clone()), diff --git a/vortex-array/src/arrays/bool/compute/take.rs b/vortex-array/src/arrays/bool/compute/take.rs index 75233a1b4e3..05e1d6f8f68 100644 --- a/vortex-array/src/arrays/bool/compute/take.rs +++ b/vortex-array/src/arrays/bool/compute/take.rs @@ -9,8 +9,8 @@ use vortex_error::VortexResult; use vortex_mask::Mask; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Bool; use crate::arrays::BoolArray; use crate::arrays::ConstantArray; @@ -23,12 +23,12 @@ use crate::scalar::Scalar; impl TakeExecute for Bool { fn take( - array: &BoolArray, + array: ArrayView<'_, Bool>, indices: &ArrayRef, ctx: &mut ExecutionCtx, ) -> VortexResult> { let indices_nulls_zeroed = match indices.validity_mask()? { - Mask::AllTrue(_) => indices.to_array(), + Mask::AllTrue(_) => indices.clone(), Mask::AllFalse(_) => { return Ok(Some( ConstantArray::new(Scalar::null(array.dtype().as_nullable()), indices.len()) @@ -36,7 +36,7 @@ impl TakeExecute for Bool { )); } Mask::Values(_) => indices - .to_array() + .clone() .fill_null(Scalar::from(0).cast(indices.dtype())?)?, }; let indices_nulls_zeroed = indices_nulls_zeroed.execute::(ctx)?; @@ -82,7 +82,6 @@ mod test { use rstest::rstest; use vortex_buffer::buffer; - use crate::DynArray; use crate::IntoArray as _; use crate::ToCanonical; use crate::arrays::BoolArray; diff --git a/vortex-array/src/arrays/bool/mod.rs b/vortex-array/src/arrays/bool/mod.rs index 9b95ddc5d3c..9378983286f 100644 --- a/vortex-array/src/arrays/bool/mod.rs +++ b/vortex-array/src/arrays/bool/mod.rs @@ -4,14 +4,15 @@ mod array; mod patch; -pub use array::BoolArray; pub use array::BoolArrayParts; +pub use array::BoolData; pub(crate) mod compute; mod vtable; pub use compute::rules::BoolMaskedValidityRule; pub use vtable::Bool; +pub use vtable::BoolArray; #[cfg(feature = "_test-harness")] mod test_harness; diff --git a/vortex-array/src/arrays/bool/patch.rs b/vortex-array/src/arrays/bool/patch.rs index 4d16a0e77e2..98528c0cbca 100644 --- a/vortex-array/src/arrays/bool/patch.rs +++ b/vortex-array/src/arrays/bool/patch.rs @@ -45,13 +45,14 @@ impl BoolArray { mod tests { use vortex_buffer::BitBuffer; + use crate::IntoArray; use crate::arrays::BoolArray; use crate::assert_arrays_eq; #[test] fn patch_sliced_bools() { let arr = BoolArray::from(BitBuffer::new_set(12)); - let sliced = arr.slice(4..12).unwrap(); + let sliced = arr.into_array().slice(4..12).unwrap(); let expected = BoolArray::from_iter([true; 8]); assert_arrays_eq!(sliced, expected); } @@ -59,7 +60,7 @@ mod tests { #[test] fn patch_sliced_bools_offset() { let arr = BoolArray::from(BitBuffer::new_set(15)); - let sliced = arr.slice(4..15).unwrap(); + let sliced = arr.into_array().slice(4..15).unwrap(); let expected = BoolArray::from_iter([true; 11]); assert_arrays_eq!(sliced, expected); } diff --git a/vortex-array/src/arrays/bool/test_harness.rs b/vortex-array/src/arrays/bool/test_harness.rs index 286c0f98110..4adc53b89ac 100644 --- a/vortex-array/src/arrays/bool/test_harness.rs +++ b/vortex-array/src/arrays/bool/test_harness.rs @@ -9,7 +9,7 @@ use crate::arrays::BoolArray; impl BoolArray { pub fn opt_bool_vec(&self) -> Vec> { self.validity_mask() - .vortex_expect("Failed to get validity mask") + .vortex_expect("validity_mask") .to_bit_buffer() .iter() .zip(self.to_bit_buffer().iter()) @@ -19,7 +19,7 @@ impl BoolArray { pub fn bool_vec(&self) -> Vec { self.validity_mask() - .vortex_expect("Failed to get validity mask") + .vortex_expect("validity_mask") .to_bit_buffer() .iter() .zip(self.to_bit_buffer().iter()) diff --git a/vortex-array/src/arrays/bool/vtable/mod.rs b/vortex-array/src/arrays/bool/vtable/mod.rs index 5fa24c02778..17a87a92cbe 100644 --- a/vortex-array/src/arrays/bool/vtable/mod.rs +++ b/vortex-array/src/arrays/bool/vtable/mod.rs @@ -1,8 +1,6 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors -use std::sync::Arc; - use kernel::PARENT_KERNELS; use vortex_error::VortexExpect; use vortex_error::VortexResult; @@ -17,7 +15,10 @@ use crate::ExecutionCtx; use crate::ExecutionResult; use crate::ProstMetadata; use crate::SerializeMetadata; -use crate::arrays::BoolArray; +use crate::array::Array; +use crate::array::ArrayView; +use crate::array::VTable; +use crate::arrays::bool::BoolData; use crate::arrays::bool::array::NUM_SLOTS; use crate::arrays::bool::array::SLOT_NAMES; use crate::buffer::BufferHandle; @@ -25,23 +26,19 @@ use crate::dtype::DType; use crate::serde::ArrayChildren; use crate::validity::Validity; use crate::vtable; -use crate::vtable::Array; -use crate::vtable::VTable; mod canonical; mod kernel; mod operations; mod validity; -use std::hash::Hash; - use crate::Precision; +use crate::array::ArrayId; use crate::arrays::bool::compute::rules::RULES; use crate::hash::ArrayEq; use crate::hash::ArrayHash; -use crate::stats::StatsSetRef; -use crate::vtable::ArrayId; +use crate::stats::ArrayStats; -vtable!(Bool); +vtable!(Bool, Bool, BoolData); #[derive(prost::Message)] pub struct BoolMetadata { @@ -51,13 +48,13 @@ pub struct BoolMetadata { } impl VTable for Bool { - type Array = BoolArray; + type ArrayData = BoolData; type Metadata = ProstMetadata; type OperationsVTable = Self; type ValidityVTable = Self; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &Self::ArrayData) -> &Self { &Bool } @@ -65,53 +62,49 @@ impl VTable for Bool { Self::ID } - fn len(array: &BoolArray) -> usize { + fn len(array: &BoolData) -> usize { array.len } - fn dtype(array: &BoolArray) -> &DType { + fn dtype(array: &BoolData) -> &DType { &array.dtype } - fn stats(array: &BoolArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &BoolData) -> &ArrayStats { + &array.stats_set } - fn array_hash(array: &BoolArray, state: &mut H, precision: Precision) { - array.dtype.hash(state); + fn array_hash(array: &BoolData, state: &mut H, precision: Precision) { array.to_bit_buffer().array_hash(state, precision); array.validity().array_hash(state, precision); } - fn array_eq(array: &BoolArray, other: &BoolArray, precision: Precision) -> bool { - if array.dtype != other.dtype { - return false; - } + fn array_eq(array: &BoolData, other: &BoolData, precision: Precision) -> bool { array .to_bit_buffer() .array_eq(&other.to_bit_buffer(), precision) && array.validity().array_eq(&other.validity(), precision) } - fn nbuffers(_array: &BoolArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 1 } - fn buffer(array: &BoolArray, idx: usize) -> BufferHandle { + fn buffer(array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { match idx { 0 => array.bits.clone(), _ => vortex_panic!("BoolArray buffer index {idx} out of bounds"), } } - fn buffer_name(_array: &BoolArray, idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, idx: usize) -> Option { match idx { 0 => Some("bits".to_string()), _ => None, } } - fn metadata(array: &BoolArray) -> VortexResult { + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { assert!(array.offset < 8, "Offset must be <8, got {}", array.offset); Ok(ProstMetadata(BoolMetadata { offset: u32::try_from(array.offset).vortex_expect("checked"), @@ -139,7 +132,7 @@ impl VTable for Bool { metadata: &Self::Metadata, buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { if buffers.len() != 1 { vortex_bail!("Expected 1 buffer, got {}", buffers.len()); } @@ -155,18 +148,18 @@ impl VTable for Bool { let buffer = buffers[0].clone(); - BoolArray::try_new_from_handle(buffer, metadata.offset as usize, len, validity) + BoolData::try_new_from_handle(buffer, metadata.offset as usize, len, validity) } - fn slots(array: &BoolArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &BoolArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn with_slots(array: &mut BoolArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "BoolArray expects {} slots, got {}", @@ -177,12 +170,12 @@ impl VTable for Bool { Ok(()) } - fn execute(array: Arc>, _ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, _ctx: &mut ExecutionCtx) -> VortexResult { Ok(ExecutionResult::done(array)) } fn execute_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, @@ -191,7 +184,7 @@ impl VTable for Bool { } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { diff --git a/vortex-array/src/arrays/bool/vtable/operations.rs b/vortex-array/src/arrays/bool/vtable/operations.rs index 7688d90bab5..dbcb025fe08 100644 --- a/vortex-array/src/arrays/bool/vtable/operations.rs +++ b/vortex-array/src/arrays/bool/vtable/operations.rs @@ -4,13 +4,17 @@ use vortex_error::VortexResult; use crate::ExecutionCtx; +use crate::array::ArrayView; +use crate::array::OperationsVTable; use crate::arrays::Bool; -use crate::arrays::bool::vtable::BoolArray; use crate::scalar::Scalar; -use crate::vtable::OperationsVTable; impl OperationsVTable for Bool { - fn scalar_at(array: &BoolArray, index: usize, _ctx: &mut ExecutionCtx) -> VortexResult { + fn scalar_at( + array: ArrayView<'_, Bool>, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { Ok(Scalar::bool( array.to_bit_buffer().value(index), array.dtype().nullability(), @@ -22,14 +26,15 @@ impl OperationsVTable for Bool { mod tests { use std::iter; - use super::*; + use crate::IntoArray; use crate::ToCanonical; + use crate::arrays::BoolArray; use crate::assert_arrays_eq; #[test] fn test_slice_hundred_elements() { let arr = BoolArray::from_iter(iter::repeat_n(Some(true), 100)); - let sliced_arr = arr.slice(8..16).unwrap().to_bool(); + let sliced_arr = arr.into_array().slice(8..16).unwrap().to_bool(); assert_eq!(sliced_arr.len(), 8); assert_eq!(sliced_arr.to_bit_buffer().len(), 8); assert_eq!(sliced_arr.to_bit_buffer().offset(), 0); @@ -38,7 +43,7 @@ mod tests { #[test] fn test_slice() { let arr = BoolArray::from_iter([Some(true), Some(true), None, Some(false), None]); - let sliced_arr = arr.slice(1..4).unwrap().to_bool(); + let sliced_arr = arr.into_array().slice(1..4).unwrap().to_bool(); assert_arrays_eq!( sliced_arr, diff --git a/vortex-array/src/arrays/bool/vtable/validity.rs b/vortex-array/src/arrays/bool/vtable/validity.rs index c49ba1343dc..d0f3c3eeec5 100644 --- a/vortex-array/src/arrays/bool/vtable/validity.rs +++ b/vortex-array/src/arrays/bool/vtable/validity.rs @@ -3,13 +3,13 @@ use vortex_error::VortexResult; +use crate::array::ArrayView; +use crate::array::ValidityVTable; use crate::arrays::bool::vtable::Bool; -use crate::arrays::bool::vtable::BoolArray; use crate::validity::Validity; -use crate::vtable::ValidityVTable; impl ValidityVTable for Bool { - fn validity(array: &BoolArray) -> VortexResult { - Ok(array.validity()) + fn validity(array: ArrayView<'_, Bool>) -> VortexResult { + Ok(array.data().validity()) } } diff --git a/vortex-array/src/arrays/chunked/array.rs b/vortex-array/src/arrays/chunked/array.rs index f787b9aa82f..5aa15ce6d57 100644 --- a/vortex-array/src/arrays/chunked/array.rs +++ b/vortex-array/src/arrays/chunked/array.rs @@ -15,10 +15,10 @@ use vortex_error::VortexResult; use vortex_error::vortex_bail; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; -use crate::ToCanonical; -use crate::arrays::PrimitiveArray; +use crate::array::Array; +use crate::arrays::Chunked; +use crate::arrays::primitive::PrimitiveData; use crate::dtype::DType; use crate::iter::ArrayIterator; use crate::iter::ArrayIteratorAdapter; @@ -29,27 +29,39 @@ use crate::stream::ArrayStream; use crate::stream::ArrayStreamAdapter; use crate::validity::Validity; -// ChunkedArray has a variable number of slots: -// slots[0] = chunk_offsets -// slots[1..] = chunks +pub(super) const CHUNK_OFFSETS_SLOT: usize = 0; +pub(super) const CHUNKS_OFFSET: usize = 1; #[derive(Clone, Debug)] -pub struct ChunkedArray { +pub struct ChunkedData { pub(super) dtype: DType, pub(super) len: usize, + pub(super) chunk_offsets: PrimitiveData, + pub(super) chunks: Vec, pub(super) slots: Vec>, pub(super) stats_set: ArrayStats, } -impl ChunkedArray { +impl ChunkedData { + /// Builds the slots vector from chunk_offsets and chunks. + pub(super) fn make_slots( + chunk_offsets: &PrimitiveData, + chunks: &[ArrayRef], + ) -> Vec> { + let mut slots = Vec::with_capacity(1 + chunks.len()); + slots.push(Some(chunk_offsets.clone().into_array())); + slots.extend(chunks.iter().map(|c| Some(c.clone()))); + slots + } + /// Constructs a new `ChunkedArray`. /// - /// See [`ChunkedArray::new_unchecked`] for more information. + /// See `ChunkedArray::new_unchecked` for more information. /// /// # Errors /// /// Returns an error if the provided components do not satisfy the invariants documented in - /// [`ChunkedArray::new_unchecked`]. + /// `ChunkedArray::new_unchecked`. pub fn try_new(chunks: Vec, dtype: DType) -> VortexResult { Self::validate(&chunks, &dtype)?; @@ -57,7 +69,7 @@ impl ChunkedArray { unsafe { Ok(Self::new_unchecked(chunks, dtype)) } } - /// Creates a new [`ChunkedArray`] without validation from these components: + /// Creates a new `ChunkedArray` without validation from these components: /// /// * `chunks` is a vector of arrays to be concatenated logically. /// * `dtype` is the common data type of all chunks. @@ -82,26 +94,24 @@ impl ChunkedArray { unsafe { chunk_offsets_buf.push_unchecked(curr_offset) } } - let chunk_offsets = - PrimitiveArray::new(chunk_offsets_buf.freeze(), Validity::NonNullable).into_array(); - - let mut slots = Vec::with_capacity(1 + nchunks); - slots.push(Some(chunk_offsets)); - slots.extend(chunks.into_iter().map(Some)); + let chunk_offsets = PrimitiveData::new(chunk_offsets_buf.freeze(), Validity::NonNullable); + let slots = Self::make_slots(&chunk_offsets, &chunks); Self { dtype, len: curr_offset .try_into() .vortex_expect("chunk offset must fit in usize"), + chunk_offsets, + chunks, slots, stats_set: Default::default(), } } - /// Validates the components that would be used to create a [`ChunkedArray`]. + /// Validates the components that would be used to create a `ChunkedArray`. /// - /// This function checks all the invariants required by [`ChunkedArray::new_unchecked`]. + /// This function checks all the invariants required by `ChunkedArray::new_unchecked`. pub fn validate(chunks: &[ArrayRef], dtype: &DType) -> VortexResult<()> { for chunk in chunks { if chunk.dtype() != dtype { @@ -112,29 +122,39 @@ impl ChunkedArray { Ok(()) } + /// Returns the length of this array. + pub fn len(&self) -> usize { + self.len + } + + /// Returns the [`DType`] of this array. + pub fn dtype(&self) -> &DType { + &self.dtype + } + + /// Returns `true` if this array is empty. + pub fn is_empty(&self) -> bool { + self.len() == 0 + } + #[inline] pub fn chunk(&self, idx: usize) -> &ArrayRef { assert!(idx < self.nchunks(), "chunk index {idx} out of bounds"); - self.slots[idx + 1] - .as_ref() - .vortex_expect("ChunkedArray chunk slot") + &self.chunks[idx] } pub fn nchunks(&self) -> usize { - self.slots.len().saturating_sub(1) + self.chunks.len() } - /// Returns the chunk offsets as a primitive array. - pub(crate) fn chunk_offsets_array(&self) -> PrimitiveArray { - self.slots[0] - .as_ref() - .vortex_expect("ChunkedArray chunk_offsets slot") - .to_primitive() + /// Returns the chunk offsets as a `PrimitiveData`. + pub(crate) fn chunk_offsets_data(&self) -> &PrimitiveData { + &self.chunk_offsets } #[inline] pub fn chunk_offsets(&self) -> Buffer { - self.chunk_offsets_array().to_buffer() + self.chunk_offsets_data().to_buffer() } pub(crate) fn find_chunk_idx(&self, index: usize) -> VortexResult<(usize, usize)> { @@ -157,40 +177,29 @@ impl ChunkedArray { /// Returns an iterator over chunk references without allocation. pub fn iter_chunks(&self) -> impl Iterator + '_ { - self.slots[1..] - .iter() - .map(|s| s.as_ref().vortex_expect("ChunkedArray chunk slot")) + self.chunks.iter() } /// Returns the chunks as a vector of owned references. pub fn chunks(&self) -> Vec { - self.iter_chunks().cloned().collect() + self.chunks.clone() } pub fn non_empty_chunks(&self) -> impl Iterator + '_ { - self.slots[1..] - .iter() - .filter_map(|s| s.as_ref()) - .filter(|c| !c.is_empty()) + self.chunks.iter().filter(|c| !c.is_empty()) } pub fn array_iterator(&self) -> impl ArrayIterator + '_ { ArrayIteratorAdapter::new( self.dtype().clone(), - self.slots[1..] - .iter() - .map(|s| Ok(s.as_ref().vortex_expect("ChunkedArray chunk slot").clone())), + self.chunks.iter().map(|c| Ok(c.clone())), ) } pub fn array_stream(&self) -> impl ArrayStream + '_ { ArrayStreamAdapter::new( self.dtype().clone(), - stream::iter( - self.slots[1..] - .iter() - .map(|s| Ok(s.as_ref().vortex_expect("ChunkedArray chunk slot").clone())), - ), + stream::iter(self.chunks.iter().map(|c| Ok(c.clone()))), ) } @@ -210,11 +219,10 @@ impl ChunkedArray { new_chunks.push( // SAFETY: chunks_to_combine contains valid chunks of the same dtype as self. // All chunks are guaranteed to be valid arrays matching self.dtype(). - unsafe { - ChunkedArray::new_unchecked(chunks_to_combine, self.dtype().clone()) - .to_canonical()? - .into_array() - }, + unsafe { ChunkedData::new_unchecked(chunks_to_combine, self.dtype().clone()) } + .into_array() + .to_canonical()? + .into_array(), ); new_chunk_n_bytes = 0; @@ -232,13 +240,14 @@ impl ChunkedArray { } if !chunks_to_combine.is_empty() { - new_chunks.push(unsafe { + new_chunks.push( // SAFETY: chunks_to_combine contains valid chunks of the same dtype as self. // All chunks are guaranteed to be valid arrays matching self.dtype(). - ChunkedArray::new_unchecked(chunks_to_combine, self.dtype().clone()) - .to_canonical()? + unsafe { ChunkedData::new_unchecked(chunks_to_combine, self.dtype().clone()) } .into_array() - }); + .to_canonical()? + .into_array(), + ); } // SAFETY: new_chunks contains valid arrays of the same dtype as self. @@ -247,14 +256,32 @@ impl ChunkedArray { } } -impl FromIterator for ChunkedArray { +impl Array { + /// Constructs a new `ChunkedArray`. + pub fn try_new(chunks: Vec, dtype: DType) -> VortexResult { + Array::try_from_data(ChunkedData::try_new(chunks, dtype)?) + } + + /// Creates a new `ChunkedArray` without validation. + /// + /// # Safety + /// + /// See [`ChunkedData::new_unchecked`]. + pub unsafe fn new_unchecked(chunks: Vec, dtype: DType) -> Self { + Array::try_from_data(unsafe { ChunkedData::new_unchecked(chunks, dtype) }) + .vortex_expect("ChunkedData is always valid") + } +} + +impl FromIterator for Array { fn from_iter>(iter: T) -> Self { let chunks: Vec = iter.into_iter().collect(); let dtype = chunks .first() .map(|c| c.dtype().clone()) .vortex_expect("Cannot infer DType from an empty iterator"); - Self::try_new(chunks, dtype).vortex_expect("Failed to create chunked array from iterator") + Array::::try_new(chunks, dtype) + .vortex_expect("Failed to create chunked array from iterator") } } @@ -264,7 +291,6 @@ mod test { use vortex_error::VortexResult; use crate::IntoArray; - use crate::array::DynArray; use crate::arrays::ChunkedArray; use crate::arrays::PrimitiveArray; use crate::assert_arrays_eq; @@ -354,7 +380,7 @@ mod test { // Should be all_valid since all non-empty chunks are all_valid assert!(chunked.all_valid().unwrap()); - assert!(!chunked.all_invalid().unwrap()); + assert!(!chunked.into_array().all_invalid().unwrap()); Ok(()) } @@ -374,7 +400,7 @@ mod test { // Should be all_invalid since all non-empty chunks are all_invalid assert!(!chunked.all_valid().unwrap()); - assert!(chunked.all_invalid().unwrap()); + assert!(chunked.into_array().all_invalid().unwrap()); Ok(()) } @@ -394,7 +420,7 @@ mod test { // Should be neither all_valid nor all_invalid assert!(!chunked.all_valid().unwrap()); - assert!(!chunked.all_invalid().unwrap()); + assert!(!chunked.into_array().all_invalid().unwrap()); Ok(()) } diff --git a/vortex-array/src/arrays/chunked/compute/cast.rs b/vortex-array/src/arrays/chunked/compute/cast.rs index 8464ce0fc4d..63a432fd34e 100644 --- a/vortex-array/src/arrays/chunked/compute/cast.rs +++ b/vortex-array/src/arrays/chunked/compute/cast.rs @@ -5,6 +5,7 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Chunked; use crate::arrays::ChunkedArray; use crate::builtins::ArrayBuiltins; @@ -12,7 +13,7 @@ use crate::dtype::DType; use crate::scalar_fn::fns::cast::CastReduce; impl CastReduce for Chunked { - fn cast(array: &ChunkedArray, dtype: &DType) -> VortexResult> { + fn cast(array: ArrayView<'_, Chunked>, dtype: &DType) -> VortexResult> { let mut cast_chunks = Vec::new(); for chunk in array.iter_chunks() { cast_chunks.push(chunk.cast(dtype.clone())?); diff --git a/vortex-array/src/arrays/chunked/compute/fill_null.rs b/vortex-array/src/arrays/chunked/compute/fill_null.rs index 110bf171fc9..977d89b1dba 100644 --- a/vortex-array/src/arrays/chunked/compute/fill_null.rs +++ b/vortex-array/src/arrays/chunked/compute/fill_null.rs @@ -5,6 +5,7 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Chunked; use crate::arrays::ChunkedArray; use crate::builtins::ArrayBuiltins; @@ -12,7 +13,10 @@ use crate::scalar::Scalar; use crate::scalar_fn::fns::fill_null::FillNullReduce; impl FillNullReduce for Chunked { - fn fill_null(array: &ChunkedArray, fill_value: &Scalar) -> VortexResult> { + fn fill_null( + array: ArrayView<'_, Chunked>, + fill_value: &Scalar, + ) -> VortexResult> { let new_chunks = array .iter_chunks() .map(|c| c.fill_null(fill_value.clone())) @@ -31,7 +35,6 @@ mod tests { use vortex_buffer::BitBuffer; use crate::IntoArray; - use crate::array::DynArray; use crate::arrays::BoolArray; use crate::arrays::ChunkedArray; use crate::builtins::ArrayBuiltins; diff --git a/vortex-array/src/arrays/chunked/compute/filter.rs b/vortex-array/src/arrays/chunked/compute/filter.rs index 48c81821fb6..aaeec137f60 100644 --- a/vortex-array/src/arrays/chunked/compute/filter.rs +++ b/vortex-array/src/arrays/chunked/compute/filter.rs @@ -8,9 +8,9 @@ use vortex_mask::Mask; use vortex_mask::MaskIter; use crate::ArrayRef; -use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Chunked; use crate::arrays::ChunkedArray; use crate::arrays::PrimitiveArray; @@ -24,7 +24,7 @@ pub(crate) const FILTER_SLICES_SELECTIVITY_THRESHOLD: f64 = 0.8; impl FilterKernel for Chunked { fn filter( - array: &ChunkedArray, + array: ArrayView<'_, Chunked>, mask: &Mask, _ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -62,7 +62,7 @@ pub(crate) enum ChunkFilter { /// Filter the chunks using slice ranges. fn filter_slices( - array: &ChunkedArray, + array: ArrayView<'_, Chunked>, slices: impl Iterator, ) -> VortexResult> { let mut result = Vec::with_capacity(array.nchunks()); @@ -87,7 +87,7 @@ fn filter_slices( } pub(crate) fn chunk_filters( - array: &ChunkedArray, + array: ArrayView<'_, Chunked>, slices: impl Iterator, ) -> VortexResult> { let chunk_offsets = array.chunk_offsets(); @@ -146,7 +146,7 @@ pub(crate) fn chunk_filters( /// Filter the chunks using indices. fn filter_indices( - array: &ChunkedArray, + array: ArrayView<'_, Chunked>, indices: impl Iterator, ) -> VortexResult> { let mut result = Vec::with_capacity(array.nchunks()); @@ -205,7 +205,6 @@ mod test { use vortex_mask::Mask; use crate::IntoArray; - use crate::array::DynArray; use crate::arrays::ChunkedArray; use crate::arrays::PrimitiveArray; use crate::compute::conformance::filter::test_filter_conformance; diff --git a/vortex-array/src/arrays/chunked/compute/mask.rs b/vortex-array/src/arrays/chunked/compute/mask.rs index 9217e5627f0..31ddfcc496f 100644 --- a/vortex-array/src/arrays/chunked/compute/mask.rs +++ b/vortex-array/src/arrays/chunked/compute/mask.rs @@ -6,6 +6,7 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Chunked; use crate::arrays::ChunkedArray; use crate::arrays::scalar_fn::ScalarFnArrayExt; @@ -15,7 +16,7 @@ use crate::scalar_fn::fns::mask::MaskKernel; impl MaskKernel for Chunked { fn mask( - array: &ChunkedArray, + array: ArrayView<'_, Chunked>, mask: &ArrayRef, _ctx: &mut ExecutionCtx, ) -> VortexResult> { diff --git a/vortex-array/src/arrays/chunked/compute/rules.rs b/vortex-array/src/arrays/chunked/compute/rules.rs index d20c96d6a3b..8bbd61889ef 100644 --- a/vortex-array/src/arrays/chunked/compute/rules.rs +++ b/vortex-array/src/arrays/chunked/compute/rules.rs @@ -6,11 +6,13 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Chunked; use crate::arrays::ChunkedArray; use crate::arrays::Constant; use crate::arrays::ConstantArray; use crate::arrays::ScalarFnArray; +use crate::arrays::ScalarFnVTable; use crate::arrays::scalar_fn::AnyScalarFn; use crate::optimizer::ArrayOptimizer; use crate::optimizer::rules::ArrayParentReduceRule; @@ -33,8 +35,8 @@ impl ArrayParentReduceRule for ChunkedUnaryScalarFnPushDownRule { fn reduce_parent( &self, - array: &ChunkedArray, - parent: &ScalarFnArray, + array: ArrayView<'_, Chunked>, + parent: ArrayView<'_, ScalarFnVTable>, _child_idx: usize, ) -> VortexResult> { if parent.nchildren() != 1 { @@ -68,8 +70,8 @@ impl ArrayParentReduceRule for ChunkedConstantScalarFnPushDownRule { fn reduce_parent( &self, - array: &ChunkedArray, - parent: &ScalarFnArray, + array: ArrayView<'_, Chunked>, + parent: ArrayView<'_, ScalarFnVTable>, child_idx: usize, ) -> VortexResult> { for (idx, child) in parent.iter_children().enumerate() { diff --git a/vortex-array/src/arrays/chunked/compute/slice.rs b/vortex-array/src/arrays/chunked/compute/slice.rs index d582387b372..d8d2917801c 100644 --- a/vortex-array/src/arrays/chunked/compute/slice.rs +++ b/vortex-array/src/arrays/chunked/compute/slice.rs @@ -9,13 +9,14 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Chunked; use crate::arrays::ChunkedArray; use crate::arrays::slice::SliceKernel; impl SliceKernel for Chunked { fn slice( - array: &Self::Array, + array: ArrayView<'_, Self>, range: Range, _ctx: &mut ExecutionCtx, ) -> VortexResult> { diff --git a/vortex-array/src/arrays/chunked/compute/take.rs b/vortex-array/src/arrays/chunked/compute/take.rs index ac29808fc6a..9e936eaf2d3 100644 --- a/vortex-array/src/arrays/chunked/compute/take.rs +++ b/vortex-array/src/arrays/chunked/compute/take.rs @@ -7,8 +7,8 @@ use vortex_mask::Mask; use crate::ArrayRef; use crate::Canonical; -use crate::DynArray; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Chunked; use crate::arrays::ChunkedArray; use crate::arrays::PrimitiveArray; @@ -22,12 +22,11 @@ use crate::validity::Validity; // TODO(joe): this is pretty unoptimized but better than before. We want canonical using a builder // we also want to return a chunked array ideally. fn take_chunked( - array: &ChunkedArray, + array: ArrayView<'_, Chunked>, indices: &ArrayRef, ctx: &mut ExecutionCtx, ) -> VortexResult { let indices = indices - .to_array() .cast(DType::Primitive(PType::U64, indices.dtype().nullability()))? .execute::(ctx)?; @@ -95,13 +94,14 @@ fn take_chunked( // 4. Single take to restore original order and expand duplicates. // Carry the original index validity so null indices produce null outputs. - let take_validity = Validity::from_mask(indices_mask, indices.dtype().nullability()); + let take_validity = + Validity::from_mask(indices.validity_mask()?, indices.dtype().nullability()); flat.take(PrimitiveArray::new(final_take.freeze(), take_validity).into_array()) } impl TakeExecute for Chunked { fn take( - array: &ChunkedArray, + array: ArrayView<'_, Chunked>, indices: &ArrayRef, ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -117,7 +117,6 @@ mod test { use crate::IntoArray; use crate::ToCanonical; - use crate::array::DynArray; use crate::arrays::BoolArray; use crate::arrays::ChunkedArray; use crate::arrays::PrimitiveArray; @@ -137,7 +136,7 @@ mod test { assert_eq!(arr.len(), 9); let indices = buffer![0u64, 0, 6, 4].into_array(); - let result = arr.take(indices.to_array()).unwrap(); + let result = arr.take(indices).unwrap(); assert_arrays_eq!(result, PrimitiveArray::from_iter([1i32, 1, 1, 2])); } @@ -234,7 +233,7 @@ mod test { // Fully shuffled indices that cross every chunk boundary. let indices = buffer![8u64, 0, 5, 3, 2, 7, 1, 6, 4].into_array(); - let result = arr.take(indices.to_array())?; + let result = arr.take(indices)?; assert_arrays_eq!( result, diff --git a/vortex-array/src/arrays/chunked/compute/zip.rs b/vortex-array/src/arrays/chunked/compute/zip.rs index bcb9fbe58d6..31642475033 100644 --- a/vortex-array/src/arrays/chunked/compute/zip.rs +++ b/vortex-array/src/arrays/chunked/compute/zip.rs @@ -6,6 +6,7 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Chunked; use crate::arrays::ChunkedArray; use crate::builtins::ArrayBuiltins; @@ -16,7 +17,7 @@ use crate::scalar_fn::fns::zip::ZipKernel; // then zips once. impl ZipKernel for Chunked { fn zip( - if_true: &ChunkedArray, + if_true: ArrayView<'_, Chunked>, if_false: &ArrayRef, mask: &ArrayRef, _ctx: &mut ExecutionCtx, @@ -29,7 +30,7 @@ impl ZipKernel for Chunked { .union_nullability(if_false.dtype().nullability()); let mut out_chunks = Vec::with_capacity(if_true.nchunks() + if_false.nchunks()); - for pair in if_true.paired_chunks(if_false) { + for pair in if_true.paired_chunks(&if_false) { let pair = pair?; let mask_slice = mask.slice(pair.pos)?; out_chunks.push(mask_slice.zip(pair.left, pair.right)?); diff --git a/vortex-array/src/arrays/chunked/mod.rs b/vortex-array/src/arrays/chunked/mod.rs index b9a24da320e..e48c3488ecc 100644 --- a/vortex-array/src/arrays/chunked/mod.rs +++ b/vortex-array/src/arrays/chunked/mod.rs @@ -2,7 +2,8 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors mod array; -pub use array::ChunkedArray; +pub use array::ChunkedData; +pub use vtable::ChunkedArray; pub(crate) mod compute; mod paired_chunks; diff --git a/vortex-array/src/arrays/chunked/paired_chunks.rs b/vortex-array/src/arrays/chunked/paired_chunks.rs index fcc4eae0e05..5adfd6b4059 100644 --- a/vortex-array/src/arrays/chunked/paired_chunks.rs +++ b/vortex-array/src/arrays/chunked/paired_chunks.rs @@ -6,7 +6,7 @@ use std::ops::Range; use vortex_error::VortexResult; use crate::ArrayRef; -use crate::arrays::ChunkedArray; +use crate::arrays::chunked::ChunkedData; pub(crate) struct AlignedPair { pub left: ArrayRef, @@ -67,8 +67,8 @@ pub(crate) struct PairedChunks { total_len: usize, } -impl ChunkedArray { - pub(crate) fn paired_chunks(&self, other: &ChunkedArray) -> PairedChunks { +impl ChunkedData { + pub(crate) fn paired_chunks(&self, other: &ChunkedData) -> PairedChunks { assert_eq!( self.len(), other.len(), diff --git a/vortex-array/src/arrays/chunked/tests.rs b/vortex-array/src/arrays/chunked/tests.rs index a4c169ad474..8eefe189a29 100644 --- a/vortex-array/src/arrays/chunked/tests.rs +++ b/vortex-array/src/arrays/chunked/tests.rs @@ -8,6 +8,7 @@ use vortex_buffer::buffer; use crate::IntoArray; use crate::accessor::ArrayAccessor; +use crate::array::VTable; use crate::arrays::Chunked; use crate::arrays::ChunkedArray; use crate::arrays::ListArray; @@ -21,7 +22,6 @@ use crate::dtype::Nullability; use crate::dtype::PType; use crate::dtype::PType::I32; use crate::validity::Validity; -use crate::vtable::VTable; fn chunked_array() -> ChunkedArray { ChunkedArray::try_new( @@ -191,7 +191,7 @@ pub fn pack_nested_lists() { ), ); - let canon_values = chunked_list.unwrap().to_listview(); + let canon_values = chunked_list.unwrap().as_array().to_listview(); assert_eq!(l1.scalar_at(0).unwrap(), canon_values.scalar_at(0).unwrap()); assert_eq!(l2.scalar_at(0).unwrap(), canon_values.scalar_at(1).unwrap()); @@ -199,16 +199,18 @@ pub fn pack_nested_lists() { #[test] fn with_slots_updates_nchunks_len_and_offsets() { - let mut array = chunked_array(); + let orig = chunked_array(); let slots = vec![ Some(buffer![0u64, 4, 9].into_array()), Some(buffer![10u64, 11, 12, 13].into_array()), Some(buffer![14u64, 15, 16, 17, 18].into_array()), ]; let expected_nchunks = slots.len() - 1; - let expected_len = array.len(); + let expected_len = orig.len(); - ::with_slots(&mut array, slots).unwrap(); + let mut data = orig.into_data(); + ::with_slots(&mut data, slots).unwrap(); + let array = ChunkedArray::try_from_data(data).unwrap(); assert_eq!(array.nchunks(), expected_nchunks); assert_eq!(array.len(), expected_len); diff --git a/vortex-array/src/arrays/chunked/vtable/canonical.rs b/vortex-array/src/arrays/chunked/vtable/canonical.rs index 05b8bdfd42b..2c6ba131e84 100644 --- a/vortex-array/src/arrays/chunked/vtable/canonical.rs +++ b/vortex-array/src/arrays/chunked/vtable/canonical.rs @@ -7,13 +7,14 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::Canonical; -use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; +use crate::arrays::Chunked; +use crate::arrays::ChunkedArray; use crate::arrays::ListViewArray; use crate::arrays::PrimitiveArray; use crate::arrays::StructArray; -use crate::arrays::chunked::vtable::ChunkedArray; use crate::arrays::listview::ListViewRebuildMode; use crate::builders::builder_with_capacity; use crate::builtins::ArrayBuiltins; @@ -24,7 +25,7 @@ use crate::dtype::StructFields; use crate::validity::Validity; pub(super) fn _canonicalize( - array: &ChunkedArray, + array: ArrayView<'_, Chunked>, ctx: &mut ExecutionCtx, ) -> VortexResult { if array.nchunks() == 0 { @@ -39,7 +40,7 @@ pub(super) fn _canonicalize( DType::Struct(struct_dtype, _) => { let struct_array = pack_struct_chunks( &owned_chunks, - Validity::copy_from_array(&array.clone().into_array())?, + Validity::copy_from_array(array.array())?, struct_dtype, ctx, )?; @@ -47,13 +48,13 @@ pub(super) fn _canonicalize( } DType::List(elem_dtype, _) => Canonical::List(swizzle_list_chunks( &owned_chunks, - Validity::copy_from_array(&array.clone().into_array())?, + Validity::copy_from_array(array.array())?, elem_dtype, ctx, )?), _ => { let mut builder = builder_with_capacity(array.dtype(), array.len()); - array.append_to_builder(builder.as_mut(), ctx)?; + array.array().append_to_builder(builder.as_mut(), ctx)?; builder.finish_into_canonical() } }) @@ -80,7 +81,7 @@ fn pack_struct_chunks( for (field_idx, field_dtype) in struct_dtype.fields().enumerate() { let mut field_chunks = Vec::with_capacity(chunks.len()); for struct_array in &executed_chunks { - let field = struct_array.unmasked_field(field_idx).to_array(); + let field = struct_array.unmasked_field(field_idx).clone(); field_chunks.push(field); } @@ -142,14 +143,14 @@ fn swizzle_list_chunks( // Cast offsets and sizes to `u64`. let offsets_arr = chunk_array .offsets() - .to_array() + .clone() .cast(DType::Primitive(PType::U64, Nullability::NonNullable)) .vortex_expect("Must be able to fit array offsets in u64") .execute::(ctx)?; let sizes_arr = chunk_array .sizes() - .to_array() + .clone() .cast(DType::Primitive(PType::U64, Nullability::NonNullable)) .vortex_expect("Must be able to fit array offsets in u64") .execute::(ctx)?; @@ -255,7 +256,7 @@ mod tests { List(Arc::new(Primitive(I32, NonNullable)), NonNullable), ); - let canon_values = chunked_list.unwrap().to_listview(); + let canon_values = chunked_list.unwrap().as_array().to_listview(); assert_eq!(l1.scalar_at(0).unwrap(), canon_values.scalar_at(0).unwrap()); assert_eq!(l2.scalar_at(0).unwrap(), canon_values.scalar_at(1).unwrap()); diff --git a/vortex-array/src/arrays/chunked/vtable/mod.rs b/vortex-array/src/arrays/chunked/vtable/mod.rs index e110d2542cf..3f20f9d56ea 100644 --- a/vortex-array/src/arrays/chunked/vtable/mod.rs +++ b/vortex-array/src/arrays/chunked/vtable/mod.rs @@ -1,9 +1,6 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors -use std::hash::Hash; -use std::sync::Arc; - use itertools::Itertools; use vortex_error::VortexResult; use vortex_error::vortex_bail; @@ -20,11 +17,17 @@ use crate::ExecutionResult; use crate::IntoArray; use crate::Precision; use crate::ToCanonical; -use crate::arrays::ChunkedArray; -use crate::arrays::PrimitiveArray; +use crate::array::Array; +use crate::array::ArrayId; +use crate::array::ArrayView; +use crate::array::VTable; +use crate::arrays::chunked::ChunkedData; +use crate::arrays::chunked::array::CHUNK_OFFSETS_SLOT; +use crate::arrays::chunked::array::CHUNKS_OFFSET; use crate::arrays::chunked::compute::kernel::PARENT_KERNELS; use crate::arrays::chunked::compute::rules::PARENT_RULES; use crate::arrays::chunked::vtable::canonical::_canonicalize; +use crate::arrays::primitive::PrimitiveData; use crate::buffer::BufferHandle; use crate::builders::ArrayBuilder; use crate::dtype::DType; @@ -33,16 +36,13 @@ use crate::dtype::PType; use crate::hash::ArrayEq; use crate::hash::ArrayHash; use crate::serde::ArrayChildren; -use crate::stats::StatsSetRef; +use crate::stats::ArrayStats; use crate::validity::Validity; use crate::vtable; -use crate::vtable::Array; -use crate::vtable::ArrayId; -use crate::vtable::VTable; mod canonical; mod operations; mod validity; -vtable!(Chunked); +vtable!(Chunked, Chunked, ChunkedData); #[derive(Clone, Debug)] pub struct Chunked; @@ -52,12 +52,12 @@ impl Chunked { } impl VTable for Chunked { - type Array = ChunkedArray; + type ArrayData = ChunkedData; type Metadata = EmptyMetadata; type OperationsVTable = Self; type ValidityVTable = Self; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &Self::ArrayData) -> &Self { &Chunked } @@ -65,57 +65,55 @@ impl VTable for Chunked { Self::ID } - fn len(array: &ChunkedArray) -> usize { + fn len(array: &ChunkedData) -> usize { array.len } - fn dtype(array: &ChunkedArray) -> &DType { + fn dtype(array: &ChunkedData) -> &DType { &array.dtype } - fn stats(array: &ChunkedArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &ChunkedData) -> &ArrayStats { + &array.stats_set } - fn array_hash(array: &ChunkedArray, state: &mut H, precision: Precision) { - array.dtype.hash(state); - array.len.hash(state); + fn array_hash(array: &ChunkedData, state: &mut H, precision: Precision) { array - .chunk_offsets_array() - .as_ref() + .chunk_offsets + .clone() + .into_array() .array_hash(state, precision); - for chunk in array.iter_chunks() { + for chunk in &array.chunks { chunk.array_hash(state, precision); } } - fn array_eq(array: &ChunkedArray, other: &ChunkedArray, precision: Precision) -> bool { - array.dtype == other.dtype - && array.len == other.len - && array - .chunk_offsets_array() - .as_ref() - .array_eq(other.chunk_offsets_array().as_ref(), precision) - && array.nchunks() == other.nchunks() + fn array_eq(array: &ChunkedData, other: &ChunkedData, precision: Precision) -> bool { + array + .chunk_offsets + .clone() + .into_array() + .array_eq(&other.chunk_offsets.clone().into_array(), precision) + && array.chunks.len() == other.chunks.len() && array .iter_chunks() .zip(other.iter_chunks()) .all(|(a, b)| a.array_eq(b, precision)) } - fn nbuffers(_array: &ChunkedArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 0 } - fn buffer(_array: &ChunkedArray, idx: usize) -> BufferHandle { + fn buffer(_array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { vortex_panic!("ChunkedArray buffer index {idx} out of bounds") } - fn buffer_name(_array: &ChunkedArray, _idx: usize) -> Option { - None + fn buffer_name(_array: ArrayView<'_, Self>, idx: usize) -> Option { + vortex_panic!("ChunkedArray buffer_name index {idx} out of bounds") } - fn metadata(_array: &ChunkedArray) -> VortexResult { + fn metadata(_array: ArrayView<'_, Self>) -> VortexResult { Ok(EmptyMetadata) } @@ -139,7 +137,7 @@ impl VTable for Chunked { _metadata: &Self::Metadata, _buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { if children.is_empty() { vortex_bail!("Chunked array needs at least one child"); } @@ -170,7 +168,7 @@ impl VTable for Chunked { }) .try_collect()?; - let chunk_offsets = PrimitiveArray::new(chunk_offsets_buf.clone(), Validity::NonNullable); + let chunk_offsets = PrimitiveData::new(chunk_offsets_buf.clone(), Validity::NonNullable); let total_len = chunk_offsets_buf .last() @@ -178,113 +176,83 @@ impl VTable for Chunked { let len = usize::try_from(*total_len) .map_err(|_| vortex_err!("total length {} exceeds usize range", total_len))?; - // Construct directly using slots to avoid recomputing chunk_offsets - let mut slots = Vec::with_capacity(1 + chunks.len()); - slots.push(Some(chunk_offsets.into_array())); - slots.extend(chunks.into_iter().map(Some)); - Ok(ChunkedArray { + let slots = ChunkedData::make_slots(&chunk_offsets, &chunks); + // Construct directly using the struct fields to avoid recomputing chunk_offsets + Ok(ChunkedData { dtype: dtype.clone(), len, + chunk_offsets, + chunks, slots, stats_set: Default::default(), }) } - fn append_to_builder( - array: &ChunkedArray, - builder: &mut dyn ArrayBuilder, - ctx: &mut ExecutionCtx, - ) -> VortexResult<()> { - for chunk in array.iter_chunks() { - chunk.append_to_builder(builder, ctx)?; - } - Ok(()) - } - - fn execute(array: Arc>, ctx: &mut ExecutionCtx) -> VortexResult { - Ok(ExecutionResult::done( - _canonicalize(&array, ctx)?.into_array(), - )) - } - - fn slots(array: &ChunkedArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &ChunkedArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { match idx { - 0 => "chunk_offsets".to_string(), - n => format!("chunks[{}]", n - 1), + CHUNK_OFFSETS_SLOT => "chunk_offsets".to_string(), + n => format!("chunks[{}]", n - CHUNKS_OFFSET), } } - fn with_slots(array: &mut ChunkedArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { + // Slots: chunk_offsets, then chunks... vortex_ensure!(!slots.is_empty(), "Chunked array needs at least one slot"); - let chunk_offsets = slots[0] + let nchunks = slots.len() - CHUNKS_OFFSET; + let chunk_offsets_ref = slots[CHUNK_OFFSETS_SLOT] .as_ref() - .ok_or_else(|| vortex_err!("Chunked array chunk_offsets slot must be present"))?; - let chunk_offsets_dtype = DType::Primitive(PType::U64, Nullability::NonNullable); + .ok_or_else(|| vortex_err!("chunk_offsets slot must not be None"))?; + let chunk_offsets_buf = chunk_offsets_ref.to_primitive().to_buffer::(); + vortex_ensure!( - chunk_offsets.dtype() == &chunk_offsets_dtype, - MismatchedTypes: &chunk_offsets_dtype, - chunk_offsets.dtype() + chunk_offsets_buf.len() == nchunks + 1, + "Expected {} chunk offsets, found {}", + nchunks + 1, + chunk_offsets_buf.len() ); - #[cfg(debug_assertions)] - { - let chunk_offsets = chunk_offsets - .as_opt::() - .unwrap_or_else(|| { - vortex_panic!("Chunked array chunk_offsets slot must be primitive") - }); - let chunk_offsets_buf = chunk_offsets.to_buffer::(); - debug_assert_eq!( - chunk_offsets_buf.len(), - slots.len(), - "Expected {} chunk offsets, found {}", - slots.len(), - chunk_offsets_buf.len(), - ); - debug_assert_eq!( - chunk_offsets_buf.last().copied().unwrap_or_default(), - array.len as u64, - "Chunked array replacement changed logical len: expected {}, got {}", - array.len, - chunk_offsets_buf.last().copied().unwrap_or_default(), - ); - - let mut total_len = 0usize; - - for (idx, chunk_slot) in slots[1..].iter().enumerate() { - let chunk = chunk_slot.as_ref().unwrap_or_else(|| { - vortex_panic!("Chunked array chunk slot {idx} must be present") - }); - debug_assert!( - chunk.dtype() == array.dtype(), - "Chunked array chunk slot {} has dtype {:?}, expected {:?}", - idx, - chunk.dtype(), - array.dtype(), - ); - total_len = total_len.checked_add(chunk.len()).unwrap_or_else(|| { - vortex_panic!("Chunked array chunk lengths exceed usize range") - }); - } - - debug_assert_eq!( - total_len, array.len, - "Chunked array replacement changed logical len: expected {}, got {}", - array.len, total_len, - ); - } - + let chunks: Vec = slots[CHUNKS_OFFSET..] + .iter() + .map(|s| { + s.clone() + .ok_or_else(|| vortex_err!("chunk slot must not be None")) + }) + .try_collect()?; + array.chunk_offsets = PrimitiveData::new(chunk_offsets_buf.clone(), Validity::NonNullable); + array.chunks = chunks; array.slots = slots; + + let total_len = chunk_offsets_buf + .last() + .ok_or_else(|| vortex_err!("chunk_offsets must not be empty"))?; + array.len = usize::try_from(*total_len) + .map_err(|_| vortex_err!("total length {} exceeds usize range", total_len))?; + + Ok(()) + } + + fn append_to_builder( + array: ArrayView<'_, Self>, + builder: &mut dyn ArrayBuilder, + ctx: &mut ExecutionCtx, + ) -> VortexResult<()> { + for chunk in array.iter_chunks() { + chunk.append_to_builder(builder, ctx)?; + } Ok(()) } - fn reduce(array: &Array) -> VortexResult> { - Ok(match array.nchunks() { + fn execute(array: Array, ctx: &mut ExecutionCtx) -> VortexResult { + Ok(ExecutionResult::done(_canonicalize(array.as_view(), ctx)?)) + } + + fn reduce(array: ArrayView<'_, Self>) -> VortexResult> { + Ok(match array.chunks.len() { 0 => Some(Canonical::empty(array.dtype()).into_array()), 1 => Some(array.chunk(0).clone()), _ => None, @@ -292,7 +260,7 @@ impl VTable for Chunked { } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { @@ -300,7 +268,7 @@ impl VTable for Chunked { } fn execute_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, diff --git a/vortex-array/src/arrays/chunked/vtable/operations.rs b/vortex-array/src/arrays/chunked/vtable/operations.rs index d5362013790..f27b4e6a9a6 100644 --- a/vortex-array/src/arrays/chunked/vtable/operations.rs +++ b/vortex-array/src/arrays/chunked/vtable/operations.rs @@ -3,16 +3,15 @@ use vortex_error::VortexResult; -use crate::DynArray; use crate::ExecutionCtx; +use crate::array::ArrayView; +use crate::array::OperationsVTable; use crate::arrays::Chunked; -use crate::arrays::chunked::vtable::ChunkedArray; use crate::scalar::Scalar; -use crate::vtable::OperationsVTable; impl OperationsVTable for Chunked { fn scalar_at( - array: &ChunkedArray, + array: ArrayView<'_, Chunked>, index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { diff --git a/vortex-array/src/arrays/chunked/vtable/validity.rs b/vortex-array/src/arrays/chunked/vtable/validity.rs index 961339a7be0..18e429b46b0 100644 --- a/vortex-array/src/arrays/chunked/vtable/validity.rs +++ b/vortex-array/src/arrays/chunked/vtable/validity.rs @@ -4,18 +4,19 @@ use itertools::Itertools; use vortex_error::VortexResult; -use crate::DynArray; use crate::IntoArray; +use crate::array::ArrayView; +use crate::array::ValidityVTable; use crate::arrays::Chunked; -use crate::arrays::chunked::vtable::ChunkedArray; +use crate::arrays::chunked::ChunkedData; use crate::dtype::DType; use crate::dtype::Nullability; use crate::validity::Validity; -use crate::vtable::ValidityVTable; impl ValidityVTable for Chunked { - fn validity(array: &ChunkedArray) -> VortexResult { - let validities: Vec = array.iter_chunks().map(|c| c.validity()).try_collect()?; + fn validity(array: ArrayView<'_, Chunked>) -> VortexResult { + let validities: Vec = + array.chunks().iter().map(|c| c.validity()).try_collect()?; match validities.first() { // If there are no chunks, return the array's dtype nullability @@ -38,7 +39,7 @@ impl ValidityVTable for Chunked { Ok(Validity::Array( unsafe { - ChunkedArray::new_unchecked( + ChunkedData::new_unchecked( validities .into_iter() .zip(array.iter_chunks()) diff --git a/vortex-array/src/arrays/constant/array.rs b/vortex-array/src/arrays/constant/array.rs index b6c29077374..ff32124210a 100644 --- a/vortex-array/src/arrays/constant/array.rs +++ b/vortex-array/src/arrays/constant/array.rs @@ -1,21 +1,26 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_error::VortexExpect; + use crate::ArrayRef; +use crate::array::Array; +use crate::arrays::Constant; +use crate::dtype::DType; use crate::scalar::Scalar; use crate::stats::ArrayStats; pub(super) const NUM_SLOTS: usize = 0; #[derive(Clone, Debug)] -pub struct ConstantArray { +pub struct ConstantData { pub(super) scalar: Scalar, pub(super) len: usize, pub(super) slots: Vec>, pub(super) stats_set: ArrayStats, } -impl ConstantArray { +impl ConstantData { pub fn new(scalar: S, len: usize) -> Self where S: Into, @@ -29,6 +34,21 @@ impl ConstantArray { } } + /// Returns the length of this array. + pub fn len(&self) -> usize { + self.len + } + + /// Returns the [`DType`] of this array. + pub fn dtype(&self) -> &DType { + self.scalar.dtype() + } + + /// Returns `true` if this array is empty. + pub fn is_empty(&self) -> bool { + self.len() == 0 + } + /// Returns the [`Scalar`] value of this constant array. pub fn scalar(&self) -> &Scalar { &self.scalar @@ -38,3 +58,13 @@ impl ConstantArray { self.scalar } } + +impl Array { + pub fn new(scalar: S, len: usize) -> Self + where + S: Into, + { + Array::try_from_data(ConstantData::new(scalar, len)) + .vortex_expect("ConstantData is always valid") + } +} diff --git a/vortex-array/src/arrays/constant/compute/between.rs b/vortex-array/src/arrays/constant/compute/between.rs index a90254dab10..00794569d72 100644 --- a/vortex-array/src/arrays/constant/compute/between.rs +++ b/vortex-array/src/arrays/constant/compute/between.rs @@ -5,6 +5,7 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Constant; use crate::arrays::ConstantArray; use crate::scalar::Scalar; @@ -13,14 +14,13 @@ use crate::scalar_fn::fns::between::BetweenReduce; impl BetweenReduce for Constant { fn between( - array: &ConstantArray, + array: ArrayView<'_, Constant>, lower: &ArrayRef, upper: &ArrayRef, options: &BetweenOptions, ) -> VortexResult> { // Can reduce if everything is constant - if let Some(((constant, lower), upper)) = array - .as_constant() + if let Some(((constant, lower), upper)) = Some(array.scalar().clone()) .zip(lower.as_constant()) .zip(upper.as_constant()) { diff --git a/vortex-array/src/arrays/constant/compute/cast.rs b/vortex-array/src/arrays/constant/compute/cast.rs index ad44492c618..68c6dbeb758 100644 --- a/vortex-array/src/arrays/constant/compute/cast.rs +++ b/vortex-array/src/arrays/constant/compute/cast.rs @@ -5,13 +5,14 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Constant; use crate::arrays::ConstantArray; use crate::dtype::DType; use crate::scalar_fn::fns::cast::CastReduce; impl CastReduce for Constant { - fn cast(array: &ConstantArray, dtype: &DType) -> VortexResult> { + fn cast(array: ArrayView<'_, Constant>, dtype: &DType) -> VortexResult> { match array.scalar().cast(dtype) { Ok(scalar) => Ok(Some(ConstantArray::new(scalar, array.len()).into_array())), Err(_e) => Ok(None), diff --git a/vortex-array/src/arrays/constant/compute/fill_null.rs b/vortex-array/src/arrays/constant/compute/fill_null.rs index 9854e184f0b..22fe70c246d 100644 --- a/vortex-array/src/arrays/constant/compute/fill_null.rs +++ b/vortex-array/src/arrays/constant/compute/fill_null.rs @@ -4,14 +4,17 @@ use vortex_error::VortexResult; use crate::ArrayRef; +use crate::array::ArrayView; use crate::arrays::Constant; -use crate::arrays::ConstantArray; use crate::scalar::Scalar; use crate::scalar_fn::fns::fill_null::FillNullReduce; use crate::scalar_fn::fns::fill_null::fill_null_constant; impl FillNullReduce for Constant { - fn fill_null(array: &ConstantArray, fill_value: &Scalar) -> VortexResult> { + fn fill_null( + array: ArrayView<'_, Constant>, + fill_value: &Scalar, + ) -> VortexResult> { fill_null_constant(array, fill_value).map(Some) } } diff --git a/vortex-array/src/arrays/constant/compute/filter.rs b/vortex-array/src/arrays/constant/compute/filter.rs index 40f181fb2a0..e078d2a585c 100644 --- a/vortex-array/src/arrays/constant/compute/filter.rs +++ b/vortex-array/src/arrays/constant/compute/filter.rs @@ -6,12 +6,13 @@ use vortex_mask::Mask; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Constant; use crate::arrays::ConstantArray; use crate::arrays::filter::FilterReduce; impl FilterReduce for Constant { - fn filter(array: &ConstantArray, mask: &Mask) -> VortexResult> { + fn filter(array: ArrayView<'_, Constant>, mask: &Mask) -> VortexResult> { Ok(Some( ConstantArray::new(array.scalar().clone(), mask.true_count()).into_array(), )) diff --git a/vortex-array/src/arrays/constant/compute/not.rs b/vortex-array/src/arrays/constant/compute/not.rs index 4f3e9cc0355..1eb912d0a91 100644 --- a/vortex-array/src/arrays/constant/compute/not.rs +++ b/vortex-array/src/arrays/constant/compute/not.rs @@ -5,13 +5,14 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Constant; use crate::arrays::ConstantArray; use crate::scalar::Scalar; use crate::scalar_fn::fns::not::NotReduce; impl NotReduce for Constant { - fn invert(array: &ConstantArray) -> VortexResult> { + fn invert(array: ArrayView<'_, Constant>) -> VortexResult> { let value = match array.scalar().as_bool().value() { Some(b) => Scalar::bool(!b, array.dtype().nullability()), None => Scalar::null(array.dtype().clone()), diff --git a/vortex-array/src/arrays/constant/compute/rules.rs b/vortex-array/src/arrays/constant/compute/rules.rs index 9e4bfb59fa2..f97e6c596c7 100644 --- a/vortex-array/src/arrays/constant/compute/rules.rs +++ b/vortex-array/src/arrays/constant/compute/rules.rs @@ -5,10 +5,10 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Constant; use crate::arrays::ConstantArray; use crate::arrays::Filter; -use crate::arrays::FilterArray; use crate::arrays::dict::TakeReduceAdaptor; use crate::arrays::filter::FilterReduceAdaptor; use crate::arrays::slice::SliceReduceAdaptor; @@ -38,8 +38,8 @@ impl ArrayParentReduceRule for ConstantFilterRule { fn reduce_parent( &self, - child: &ConstantArray, - parent: &FilterArray, + child: ArrayView<'_, Constant>, + parent: ArrayView<'_, Filter>, _child_idx: usize, ) -> VortexResult> { Ok(Some( diff --git a/vortex-array/src/arrays/constant/compute/slice.rs b/vortex-array/src/arrays/constant/compute/slice.rs index 9c5ddac1784..c5f25672076 100644 --- a/vortex-array/src/arrays/constant/compute/slice.rs +++ b/vortex-array/src/arrays/constant/compute/slice.rs @@ -7,12 +7,13 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Constant; use crate::arrays::ConstantArray; use crate::arrays::slice::SliceReduce; impl SliceReduce for Constant { - fn slice(array: &Self::Array, range: Range) -> VortexResult> { + fn slice(array: ArrayView<'_, Self>, range: Range) -> VortexResult> { Ok(Some( ConstantArray::new(array.scalar.clone(), range.len()).into_array(), )) diff --git a/vortex-array/src/arrays/constant/compute/take.rs b/vortex-array/src/arrays/constant/compute/take.rs index 535e7bcbc10..4bbd44132e1 100644 --- a/vortex-array/src/arrays/constant/compute/take.rs +++ b/vortex-array/src/arrays/constant/compute/take.rs @@ -5,19 +5,19 @@ use vortex_error::VortexResult; use vortex_mask::AllOr; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Constant; use crate::arrays::ConstantArray; -use crate::arrays::MaskedArray; use crate::arrays::dict::TakeReduce; use crate::arrays::dict::TakeReduceAdaptor; +use crate::arrays::masked::MaskedData; use crate::optimizer::rules::ParentRuleSet; use crate::scalar::Scalar; use crate::validity::Validity; impl TakeReduce for Constant { - fn take(array: &ConstantArray, indices: &ArrayRef) -> VortexResult> { + fn take(array: ArrayView<'_, Constant>, indices: &ArrayRef) -> VortexResult> { let result = match indices.validity_mask()?.bit_buffer() { AllOr::All => { let scalar = Scalar::try_new( @@ -45,7 +45,7 @@ impl TakeReduce for Constant { return Ok(Some(arr)); } - MaskedArray::try_new(arr, Validity::from(v.clone()))?.into_array() + MaskedData::try_new(arr, Validity::from(v.clone()))?.into_array() } }; Ok(Some(result)) @@ -63,7 +63,6 @@ mod tests { use vortex_buffer::buffer; use vortex_mask::AllOr; - use crate::DynArray; use crate::IntoArray; use crate::ToCanonical; use crate::arrays::ConstantArray; diff --git a/vortex-array/src/arrays/constant/mod.rs b/vortex-array/src/arrays/constant/mod.rs index f8361bae704..36df554d4c3 100644 --- a/vortex-array/src/arrays/constant/mod.rs +++ b/vortex-array/src/arrays/constant/mod.rs @@ -7,7 +7,8 @@ mod arbitrary; pub use arbitrary::ArbitraryConstantArray; mod array; -pub use array::ConstantArray; +pub use array::ConstantData; +pub use vtable::ConstantArray; pub(crate) mod compute; diff --git a/vortex-array/src/arrays/constant/vtable/canonical.rs b/vortex-array/src/arrays/constant/vtable/canonical.rs index 1b17c76054b..a257a4c9b8d 100644 --- a/vortex-array/src/arrays/constant/vtable/canonical.rs +++ b/vortex-array/src/arrays/constant/vtable/canonical.rs @@ -11,7 +11,9 @@ use vortex_error::VortexResult; use crate::Canonical; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::BoolArray; +use crate::arrays::Constant; use crate::arrays::ConstantArray; use crate::arrays::DecimalArray; use crate::arrays::ExtensionArray; @@ -34,7 +36,7 @@ use crate::scalar::Scalar; use crate::validity::Validity; /// Shared implementation for both `canonicalize` and `execute` methods. -pub(crate) fn constant_canonicalize(array: &ConstantArray) -> VortexResult { +pub(crate) fn constant_canonicalize(array: ArrayView<'_, Constant>) -> VortexResult { let scalar = array.scalar(); let validity = match array.dtype().nullability() { @@ -319,7 +321,6 @@ mod tests { use itertools::Itertools; use vortex_error::VortexResult; - use crate::DynArray; use crate::IntoArray; use crate::arrays::ConstantArray; use crate::arrays::PrimitiveArray; @@ -335,12 +336,11 @@ mod tests { use crate::expr::stats::StatsProvider; use crate::scalar::Scalar; use crate::validity::Validity; - use crate::vtable::ValidityHelper; #[test] fn test_canonicalize_null() { let const_null = ConstantArray::new(Scalar::null(DType::Null), 42); - let actual = const_null.to_null(); + let actual = const_null.as_array().to_null(); assert_eq!(actual.len(), 42); assert_eq!(actual.scalar_at(33).unwrap(), Scalar::null(DType::Null)); } @@ -361,13 +361,13 @@ mod tests { .statistics() .compute_all(&all::().collect_vec()) .unwrap(); - let canonical = const_array.to_canonical()?; - let canonical_stats = canonical.as_ref().statistics(); + let canonical = const_array.to_canonical()?.into_array(); + let canonical_stats = canonical.statistics(); - let stats_ref = stats.as_typed_ref(canonical.as_ref().dtype()); + let stats_ref = stats.as_typed_ref(canonical.dtype()); for stat in all::() { - if stat.dtype(canonical.as_ref().dtype()).is_none() { + if stat.dtype(canonical.dtype()).is_none() { continue; } assert_eq!( @@ -469,7 +469,7 @@ mod tests { 3, ); - let struct_array = array.to_struct(); + let struct_array = array.as_array().to_struct(); assert_eq!(struct_array.len(), 3); assert_eq!(struct_array.valid_count().unwrap(), 0); diff --git a/vortex-array/src/arrays/constant/vtable/mod.rs b/vortex-array/src/arrays/constant/vtable/mod.rs index 11c9e9b96b7..d6fd4407635 100644 --- a/vortex-array/src/arrays/constant/vtable/mod.rs +++ b/vortex-array/src/arrays/constant/vtable/mod.rs @@ -3,7 +3,6 @@ use std::fmt::Debug; use std::hash::Hash; -use std::sync::Arc; use vortex_buffer::ByteBufferMut; use vortex_error::VortexExpect; @@ -17,7 +16,11 @@ use crate::ExecutionCtx; use crate::ExecutionResult; use crate::IntoArray; use crate::Precision; -use crate::arrays::ConstantArray; +use crate::array::Array; +use crate::array::ArrayId; +use crate::array::ArrayView; +use crate::array::VTable; +use crate::arrays::constant::ConstantData; use crate::arrays::constant::array::NUM_SLOTS; use crate::arrays::constant::compute::rules::PARENT_RULES; use crate::arrays::constant::vtable::canonical::constant_canonicalize; @@ -36,16 +39,13 @@ use crate::scalar::DecimalValue; use crate::scalar::Scalar; use crate::scalar::ScalarValue; use crate::serde::ArrayChildren; -use crate::stats::StatsSetRef; +use crate::stats::ArrayStats; use crate::vtable; -use crate::vtable::Array; -use crate::vtable::ArrayId; -use crate::vtable::VTable; pub(crate) mod canonical; mod operations; mod validity; -vtable!(Constant); +vtable!(Constant, Constant, ConstantData); #[derive(Clone, Debug)] pub struct Constant; @@ -55,13 +55,13 @@ impl Constant { } impl VTable for Constant { - type Array = ConstantArray; + type ArrayData = ConstantData; type Metadata = Scalar; type OperationsVTable = Self; type ValidityVTable = Self; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &Self::ArrayData) -> &Self { &Constant } @@ -69,36 +69,35 @@ impl VTable for Constant { Self::ID } - fn len(array: &ConstantArray) -> usize { + fn len(array: &ConstantData) -> usize { array.len } - fn dtype(array: &ConstantArray) -> &DType { + fn dtype(array: &ConstantData) -> &DType { array.scalar.dtype() } - fn stats(array: &ConstantArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &ConstantData) -> &ArrayStats { + &array.stats_set } fn array_hash( - array: &ConstantArray, + array: &ConstantData, state: &mut H, _precision: Precision, ) { array.scalar.hash(state); - array.len.hash(state); } - fn array_eq(array: &ConstantArray, other: &ConstantArray, _precision: Precision) -> bool { - array.scalar == other.scalar && array.len == other.len + fn array_eq(array: &ConstantData, other: &ConstantData, _precision: Precision) -> bool { + array.scalar == other.scalar } - fn nbuffers(_array: &ConstantArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 1 } - fn buffer(array: &ConstantArray, idx: usize) -> BufferHandle { + fn buffer(array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { match idx { 0 => BufferHandle::new_host( ScalarValue::to_proto_bytes::(array.scalar.value()).freeze(), @@ -107,33 +106,32 @@ impl VTable for Constant { } } - fn buffer_name(_array: &ConstantArray, idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, idx: usize) -> Option { match idx { 0 => Some("scalar".to_string()), _ => None, } } - fn slots(array: &ConstantArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &ConstantArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { vortex_panic!("ConstantArray slot_name index {idx} out of bounds") } - fn with_slots(array: &mut ConstantArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(_array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "ConstantArray expects exactly {} slots, got {}", NUM_SLOTS, slots.len() ); - array.slots = slots; Ok(()) } - fn metadata(array: &ConstantArray) -> VortexResult { + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { Ok(array.scalar().clone()) } @@ -171,26 +169,26 @@ impl VTable for Constant { metadata: &Self::Metadata, _buffers: &[BufferHandle], _children: &dyn ArrayChildren, - ) -> VortexResult { - Ok(ConstantArray::new(metadata.clone(), len)) + ) -> VortexResult { + Ok(ConstantData::new(metadata.clone(), len)) } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { PARENT_RULES.evaluate(array, parent, child_idx) } - fn execute(array: Arc>, _ctx: &mut ExecutionCtx) -> VortexResult { - Ok(ExecutionResult::done( - constant_canonicalize(&array)?.into_array(), - )) + fn execute(array: Array, _ctx: &mut ExecutionCtx) -> VortexResult { + Ok(ExecutionResult::done(constant_canonicalize( + array.as_view(), + )?)) } fn append_to_builder( - array: &ConstantArray, + array: ArrayView<'_, Self>, builder: &mut dyn ArrayBuilder, ctx: &mut ExecutionCtx, ) -> VortexResult<()> { @@ -254,8 +252,8 @@ impl VTable for Constant { // TODO: add fast paths for DType::Struct, DType::List, DType::FixedSizeList, DType::Extension. _ => { let canonical = array + .array() .clone() - .into_array() .execute::(ctx)? .into_array(); builder.extend_from_array(&canonical); @@ -311,7 +309,7 @@ mod tests { /// Appends `array` into a fresh builder and asserts the result matches `constant_canonicalize`. fn assert_append_matches_canonical(array: ConstantArray) -> vortex_error::VortexResult<()> { - let expected = constant_canonicalize(&array)?.into_array(); + let expected = constant_canonicalize(array.as_view())?.into_array(); let mut builder = builder_with_capacity(array.dtype(), array.len()); array .into_array() diff --git a/vortex-array/src/arrays/constant/vtable/operations.rs b/vortex-array/src/arrays/constant/vtable/operations.rs index 7e0c1c939a4..fdd2dd67345 100644 --- a/vortex-array/src/arrays/constant/vtable/operations.rs +++ b/vortex-array/src/arrays/constant/vtable/operations.rs @@ -4,14 +4,14 @@ use vortex_error::VortexResult; use crate::ExecutionCtx; +use crate::array::ArrayView; +use crate::array::OperationsVTable; use crate::arrays::Constant; -use crate::arrays::constant::vtable::ConstantArray; use crate::scalar::Scalar; -use crate::vtable::OperationsVTable; impl OperationsVTable for Constant { fn scalar_at( - array: &ConstantArray, + array: ArrayView<'_, Constant>, _index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { diff --git a/vortex-array/src/arrays/constant/vtable/validity.rs b/vortex-array/src/arrays/constant/vtable/validity.rs index 709be371625..bff15b1d95e 100644 --- a/vortex-array/src/arrays/constant/vtable/validity.rs +++ b/vortex-array/src/arrays/constant/vtable/validity.rs @@ -3,13 +3,13 @@ use vortex_error::VortexResult; +use crate::array::ArrayView; +use crate::array::ValidityVTable; use crate::arrays::Constant; -use crate::arrays::constant::vtable::ConstantArray; use crate::validity::Validity; -use crate::vtable::ValidityVTable; impl ValidityVTable for Constant { - fn validity(array: &ConstantArray) -> VortexResult { + fn validity(array: ArrayView<'_, Constant>) -> VortexResult { debug_assert!(array.dtype().is_nullable()); Ok(if array.scalar().is_null() { Validity::AllInvalid diff --git a/vortex-array/src/arrays/datetime/mod.rs b/vortex-array/src/arrays/datetime/mod.rs index eb0524c4ce4..abb3c18e68c 100644 --- a/vortex-array/src/arrays/datetime/mod.rs +++ b/vortex-array/src/arrays/datetime/mod.rs @@ -11,7 +11,6 @@ use vortex_error::vortex_bail; use vortex_error::vortex_err; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; use crate::arrays::Extension; use crate::arrays::ExtensionArray; @@ -31,23 +30,26 @@ use crate::extension::datetime::Timestamp; /// /// ## Arrow compatibility /// -/// TemporalArray can be created from Arrow arrays containing the following datatypes: +/// TemporalData can be created from Arrow arrays containing the following datatypes: /// * `Time32` /// * `Time64` /// * `Timestamp` /// * `Date32` /// * `Date64` /// -/// Anything that can be constructed and held in a `TemporalArray` can also be zero-copy converted +/// Anything that can be constructed and held in a `TemporalData` can also be zero-copy converted /// back to the relevant Arrow datatype. #[derive(Clone, Debug)] -pub struct TemporalArray { +pub struct TemporalData { /// The underlying Vortex extension array holding all the numeric values. ext: ExtensionArray, } -impl TemporalArray { - /// Create a new `TemporalArray` holding either i32 day offsets, or i64 millisecond offsets +/// Type alias for backward compatibility. +pub type TemporalArray = TemporalData; + +impl TemporalData { + /// Create a new `TemporalData` holding either i32 day offsets, or i64 millisecond offsets /// that are evenly divisible by the number of 86,400,000. /// /// This is equivalent to the data described by either of the `Date32` or `Date64` data types @@ -69,7 +71,7 @@ impl TemporalArray { } } - /// Create a new `TemporalArray` holding one of the following values: + /// Create a new `TemporalData` holding one of the following values: /// /// * `i32` values representing seconds since midnight /// * `i32` values representing milliseconds since midnight @@ -97,7 +99,7 @@ impl TemporalArray { } } - /// Create a new `TemporalArray` holding Arrow spec compliant Timestamp data, with an + /// Create a new `TemporalData` holding Arrow spec compliant Timestamp data, with an /// optional timezone. /// /// # Panics @@ -119,7 +121,7 @@ impl TemporalArray { } } -impl TemporalArray { +impl TemporalData { /// Access the underlying temporal values in the underlying ExtensionArray storage. /// /// These values are to be interpreted based on the time unit and optional time-zone stored @@ -147,28 +149,22 @@ impl TemporalArray { } } -impl AsRef for TemporalArray { - fn as_ref(&self) -> &dyn DynArray { - self.ext.as_ref() - } -} - -impl From for ArrayRef { - fn from(value: TemporalArray) -> Self { +impl From for ArrayRef { + fn from(value: TemporalData) -> Self { value.ext.into_array() } } -impl IntoArray for TemporalArray { +impl IntoArray for TemporalData { fn into_array(self) -> ArrayRef { self.into() } } -impl TryFrom for TemporalArray { +impl TryFrom for TemporalData { type Error = VortexError; - /// Try to specialize a generic Vortex array as a TemporalArray. + /// Try to specialize a generic Vortex array as a TemporalData. /// /// # Errors /// @@ -186,24 +182,26 @@ impl TryFrom for TemporalArray { ext.ext_dtype() ); } - Ok(Self { ext: ext.clone() }) + Ok(Self { + ext: ext.into_owned(), + }) } } // Conversions to/from ExtensionArray -impl From<&TemporalArray> for ExtensionArray { - fn from(value: &TemporalArray) -> Self { +impl From<&TemporalData> for ExtensionArray { + fn from(value: &TemporalData) -> Self { value.ext.clone() } } -impl From for ExtensionArray { - fn from(value: TemporalArray) -> Self { +impl From for ExtensionArray { + fn from(value: TemporalData) -> Self { value.ext } } -impl TryFrom for TemporalArray { +impl TryFrom for TemporalData { type Error = VortexError; fn try_from(ext: ExtensionArray) -> Result { diff --git a/vortex-array/src/arrays/datetime/test.rs b/vortex-array/src/arrays/datetime/test.rs index 538d713d55a..8bf0b3d8989 100644 --- a/vortex-array/src/arrays/datetime/test.rs +++ b/vortex-array/src/arrays/datetime/test.rs @@ -8,9 +8,8 @@ use vortex_error::VortexResult; use crate::IntoArray; use crate::Precision; use crate::ToCanonical; -use crate::array::DynArray; use crate::arrays::PrimitiveArray; -use crate::arrays::TemporalArray; +use crate::arrays::datetime::TemporalData; use crate::assert_arrays_eq; use crate::expr::gt; use crate::expr::lit; @@ -26,7 +25,7 @@ use crate::validity::Validity; macro_rules! test_temporal_roundtrip { ($prim:ty, $constructor:expr, $unit:expr) => {{ let array = buffer![100 as $prim].into_array(); - let temporal: TemporalArray = $constructor(array, $unit); + let temporal: TemporalData = $constructor(array, $unit); assert_arrays_eq!( temporal.temporal_values(), @@ -59,25 +58,25 @@ macro_rules! test_fail_case { test_success_case!( test_roundtrip_time32_second, i32, - TemporalArray::new_time, + TemporalData::new_time, TimeUnit::Seconds ); test_success_case!( test_roundtrip_time32_millisecond, i32, - TemporalArray::new_time, + TemporalData::new_time, TimeUnit::Milliseconds ); test_fail_case!( test_fail_time32_micro, i32, - TemporalArray::new_time, + TemporalData::new_time, TimeUnit::Microseconds ); test_fail_case!( test_fail_time32_nano, i32, - TemporalArray::new_time, + TemporalData::new_time, TimeUnit::Nanoseconds ); @@ -85,31 +84,31 @@ test_fail_case!( test_success_case!( test_roundtrip_time64_us, i64, - TemporalArray::new_time, + TemporalData::new_time, TimeUnit::Microseconds ); test_success_case!( test_roundtrip_time64_ns, i64, - TemporalArray::new_time, + TemporalData::new_time, TimeUnit::Nanoseconds ); test_fail_case!( test_fail_time64_ms, i64, - TemporalArray::new_time, + TemporalData::new_time, TimeUnit::Milliseconds ); test_fail_case!( test_fail_time64_s, i64, - TemporalArray::new_time, + TemporalData::new_time, TimeUnit::Seconds ); test_fail_case!( test_fail_time64_i32, i32, - TemporalArray::new_time, + TemporalData::new_time, TimeUnit::Nanoseconds ); @@ -117,13 +116,13 @@ test_fail_case!( test_success_case!( test_roundtrip_date32, i32, - TemporalArray::new_date, + TemporalData::new_date, TimeUnit::Days ); test_fail_case!( test_fail_date32, i64, - TemporalArray::new_date, + TemporalData::new_date, TimeUnit::Days ); @@ -131,13 +130,13 @@ test_fail_case!( test_success_case!( test_roundtrip_date64, i64, - TemporalArray::new_date, + TemporalData::new_date, TimeUnit::Milliseconds ); test_fail_case!( test_fail_date64, i32, - TemporalArray::new_date, + TemporalData::new_date, TimeUnit::Milliseconds ); @@ -154,8 +153,7 @@ fn test_timestamp() { TimeUnit::Nanoseconds, ] { for tz in [Some("UTC".into()), None] { - let temporal_array = - TemporalArray::new_timestamp(ts_array.to_array(), unit, tz.clone()); + let temporal_array = TemporalData::new_timestamp(ts_array.clone(), unit, tz.clone()); assert_arrays_eq!( temporal_array.temporal_values(), @@ -175,7 +173,7 @@ fn test_timestamp_fails_i32() { let ts = buffer![100i32].into_array(); let ts_array = ts.into_array(); - TemporalArray::new_timestamp(ts_array, TimeUnit::Seconds, None); + TemporalData::new_timestamp(ts_array, TimeUnit::Seconds, None); } #[rstest] @@ -194,7 +192,7 @@ fn test_validity_preservation(#[case] validity: Validity) { ) .into_array(); let temporal_array = - TemporalArray::new_timestamp(milliseconds, TimeUnit::Milliseconds, Some("UTC".into())); + TemporalData::new_timestamp(milliseconds, TimeUnit::Milliseconds, Some("UTC".into())); assert!( temporal_array @@ -210,7 +208,7 @@ fn test222() -> VortexResult<()> { // Write file with MILLISECONDS timestamps let ts_array = PrimitiveArray::from_iter(vec![1704067200000i64, 1704153600000, 1704240000000]) .into_array(); - let temporal = TemporalArray::new_timestamp(ts_array, TimeUnit::Milliseconds, None); + let temporal = TemporalData::new_timestamp(ts_array, TimeUnit::Milliseconds, None); // Read with SECONDS filter scalar let filter_expr = gt( diff --git a/vortex-array/src/arrays/decimal/array.rs b/vortex-array/src/arrays/decimal/array.rs index b0252b71abd..f8e3ce0c976 100644 --- a/vortex-array/src/arrays/decimal/array.rs +++ b/vortex-array/src/arrays/decimal/array.rs @@ -14,6 +14,11 @@ use vortex_error::vortex_panic; use crate::ArrayRef; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::Array; +use crate::array::child_to_validity; +use crate::array::validity_to_child; +use crate::arrays::Decimal; +use crate::arrays::DecimalArray; use crate::arrays::PrimitiveArray; use crate::buffer::BufferHandle; use crate::dtype::BigCast; @@ -27,8 +32,6 @@ use crate::match_each_integer_ptype; use crate::patches::Patches; use crate::stats::ArrayStats; use crate::validity::Validity; -use crate::vtable::child_to_validity; -use crate::vtable::validity_to_child; /// The validity bitmap indicating which elements are non-null. pub(super) const VALIDITY_SLOT: usize = 0; @@ -93,7 +96,7 @@ pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["validity"]; /// assert_eq!(array.len(), 3); /// ``` #[derive(Clone, Debug)] -pub struct DecimalArray { +pub struct DecimalData { pub(super) slots: Vec>, pub(super) dtype: DType, pub(super) values: BufferHandle, @@ -108,8 +111,9 @@ pub struct DecimalArrayParts { pub validity: Validity, } -impl DecimalArray { - fn make_slots(validity: &Validity, len: usize) -> Vec> { +impl DecimalData { + /// Build the slots vector for this array. + pub(super) fn make_slots(validity: &Validity, len: usize) -> Vec> { vec![validity_to_child(validity, len)] } @@ -290,6 +294,21 @@ impl DecimalArray { } } + /// Returns the length of this array. + pub fn len(&self) -> usize { + self.values.len() / self.values_type.byte_width() + } + + /// Returns the [`DType`] of this array. + pub fn dtype(&self) -> &DType { + &self.dtype + } + + /// Returns `true` if this array is empty. + pub fn is_empty(&self) -> bool { + self.len() == 0 + } + /// Reconstructs the validity from the slot state. pub fn validity(&self) -> Validity { child_to_validity(&self.slots[VALIDITY_SLOT], self.dtype.nullability()) @@ -394,11 +413,12 @@ impl DecimalArray { let patch_indices = patches.indices().clone().execute::(ctx)?; let patch_values = patches.values().clone().execute::(ctx)?; + let patch_validity = patch_values.validity(); let patched_validity = self.validity().patch( self.len(), offset, &patch_indices.clone().into_array(), - &patch_values.validity(), + &patch_validity, ctx, )?; assert_eq!(self.decimal_dtype(), patch_values.decimal_dtype()); @@ -423,6 +443,96 @@ impl DecimalArray { } } +impl Array { + /// Creates a new [`DecimalArray`] using a host-native buffer. + pub fn new( + buffer: Buffer, + decimal_dtype: DecimalDType, + validity: Validity, + ) -> Self { + Array::try_from_data(DecimalData::new(buffer, decimal_dtype, validity)) + .vortex_expect("DecimalData is always valid") + } + + /// Creates a new [`DecimalArray`] without validation. + /// + /// # Safety + /// + /// See [`DecimalData::new_unchecked`]. + pub unsafe fn new_unchecked( + buffer: Buffer, + decimal_dtype: DecimalDType, + validity: Validity, + ) -> Self { + Array::try_from_data(unsafe { DecimalData::new_unchecked(buffer, decimal_dtype, validity) }) + .vortex_expect("DecimalData is always valid") + } + + /// Creates a new [`DecimalArray`] from a host-native buffer with validation. + pub fn try_new( + buffer: Buffer, + decimal_dtype: DecimalDType, + validity: Validity, + ) -> VortexResult { + Array::try_from_data(DecimalData::try_new(buffer, decimal_dtype, validity)?) + } + + /// Creates a new [`DecimalArray`] from an iterator of values. + #[expect( + clippy::same_name_method, + reason = "intentionally named from_iter like Iterator::from_iter" + )] + pub fn from_iter>( + iter: I, + decimal_dtype: DecimalDType, + ) -> Self { + Array::try_from_data(DecimalData::from_iter(iter, decimal_dtype)) + .vortex_expect("DecimalData is always valid") + } + + /// Creates a new [`DecimalArray`] from an iterator of optional values. + pub fn from_option_iter>>( + iter: I, + decimal_dtype: DecimalDType, + ) -> Self { + Array::try_from_data(DecimalData::from_option_iter(iter, decimal_dtype)) + .vortex_expect("DecimalData is always valid") + } + + /// Creates a new [`DecimalArray`] from a [`BufferHandle`]. + pub fn new_handle( + values: BufferHandle, + values_type: DecimalType, + decimal_dtype: DecimalDType, + validity: Validity, + ) -> Self { + Array::try_from_data(DecimalData::new_handle( + values, + values_type, + decimal_dtype, + validity, + )) + .vortex_expect("DecimalData is always valid") + } + + /// Creates a new [`DecimalArray`] without validation from a [`BufferHandle`]. + /// + /// # Safety + /// + /// See [`DecimalData::new_unchecked_handle`]. + pub unsafe fn new_unchecked_handle( + values: BufferHandle, + values_type: DecimalType, + decimal_dtype: DecimalDType, + validity: Validity, + ) -> Self { + Array::try_from_data(unsafe { + DecimalData::new_unchecked_handle(values, values_type, decimal_dtype, validity) + }) + .vortex_expect("DecimalData is always valid") + } +} + fn patch_typed( mut buffer: BufferMut, decimal_dtype: DecimalDType, @@ -430,7 +540,7 @@ fn patch_typed( patch_indices_offset: usize, patch_values: Buffer, patched_validity: Validity, -) -> DecimalArray +) -> DecimalData where I: IntegerPType, PatchDVT: NativeDecimalType, @@ -450,5 +560,5 @@ where ); } - DecimalArray::new(buffer.freeze(), decimal_dtype, patched_validity) + DecimalData::new(buffer.freeze(), decimal_dtype, patched_validity) } diff --git a/vortex-array/src/arrays/decimal/compute/between.rs b/vortex-array/src/arrays/decimal/compute/between.rs index 6bb3db961b6..fd8627c898c 100644 --- a/vortex-array/src/arrays/decimal/compute/between.rs +++ b/vortex-array/src/arrays/decimal/compute/between.rs @@ -8,9 +8,9 @@ use vortex_error::vortex_bail; use crate::ArrayRef; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::BoolArray; use crate::arrays::Decimal; -use crate::arrays::DecimalArray; use crate::dtype::NativeDecimalType; use crate::dtype::Nullability; use crate::match_each_decimal_value_type; @@ -21,7 +21,7 @@ use crate::scalar_fn::fns::between::StrictComparison; impl BetweenKernel for Decimal { fn between( - arr: &DecimalArray, + arr: ArrayView<'_, Decimal>, lower: &ArrayRef, upper: &ArrayRef, options: &BetweenOptions, @@ -45,7 +45,7 @@ impl BetweenKernel for Decimal { } fn between_unpack( - arr: &DecimalArray, + arr: ArrayView<'_, Decimal>, lower: Scalar, upper: Scalar, nullability: Nullability, @@ -93,7 +93,7 @@ fn between_unpack( } fn between_impl( - arr: &DecimalArray, + arr: ArrayView<'_, Decimal>, lower: T, upper: T, nullability: Nullability, diff --git a/vortex-array/src/arrays/decimal/compute/cast.rs b/vortex-array/src/arrays/decimal/compute/cast.rs index 9f613898926..2ca8b54c944 100644 --- a/vortex-array/src/arrays/decimal/compute/cast.rs +++ b/vortex-array/src/arrays/decimal/compute/cast.rs @@ -10,6 +10,7 @@ use vortex_error::vortex_panic; use crate::ArrayRef; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Decimal; use crate::arrays::DecimalArray; use crate::dtype::DType; @@ -20,7 +21,7 @@ use crate::scalar_fn::fns::cast::CastKernel; impl CastKernel for Decimal { fn cast( - array: &DecimalArray, + array: ArrayView<'_, Decimal>, dtype: &DType, _ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -55,7 +56,7 @@ impl CastKernel for Decimal { // If the dtype is exactly the same, return self if array.dtype() == dtype { - return Ok(Some(array.clone().into_array())); + return Ok(Some(array.array().clone())); } // Cast the validity to the new nullability @@ -68,7 +69,7 @@ impl CastKernel for Decimal { let array = if target_values_type > array.values_type() { upcast_decimal_values(array, target_values_type)? } else { - array.clone() + array.array().as_::().into_owned() }; // SAFETY: new_validity same length as previous validity, just cast @@ -98,14 +99,14 @@ impl CastKernel for Decimal { /// Returns an error if `to_values_type` is narrower than the array's current values type. /// Only upcasting (widening) is supported. pub fn upcast_decimal_values( - array: &DecimalArray, + array: ArrayView<'_, Decimal>, to_values_type: DecimalType, ) -> VortexResult { let from_values_type = array.values_type(); // If already the target type, just clone if from_values_type == to_values_type { - return Ok(array.clone()); + return Ok(array.array().as_::().into_owned()); } // Only allow upcasting (widening) @@ -323,7 +324,8 @@ mod tests { assert_eq!(array.values_type(), DecimalType::I32); - let casted = upcast_decimal_values(&array, DecimalType::I64).unwrap(); + let array = array.as_view(); + let casted = upcast_decimal_values(array, DecimalType::I64).unwrap(); assert_eq!(casted.values_type(), DecimalType::I64); assert_eq!(casted.decimal_dtype(), decimal_dtype); @@ -343,7 +345,8 @@ mod tests { Validity::NonNullable, ); - let casted = upcast_decimal_values(&array, DecimalType::I128).unwrap(); + let array = array.as_view(); + let casted = upcast_decimal_values(array, DecimalType::I128).unwrap(); assert_eq!(casted.values_type(), DecimalType::I128); assert_eq!(casted.decimal_dtype(), decimal_dtype); @@ -361,7 +364,8 @@ mod tests { Validity::NonNullable, ); - let casted = upcast_decimal_values(&array, DecimalType::I32).unwrap(); + let array = array.as_view(); + let casted = upcast_decimal_values(array, DecimalType::I32).unwrap(); assert_eq!(casted.values_type(), DecimalType::I32); assert_eq!(casted.decimal_dtype(), decimal_dtype); @@ -372,7 +376,8 @@ mod tests { let decimal_dtype = DecimalDType::new(10, 2); let array = DecimalArray::from_option_iter([Some(100i32), None, Some(300)], decimal_dtype); - let casted = upcast_decimal_values(&array, DecimalType::I64).unwrap(); + let array = array.as_view(); + let casted = upcast_decimal_values(array, DecimalType::I64).unwrap(); assert_eq!(casted.values_type(), DecimalType::I64); assert_eq!(casted.len(), 3); @@ -399,7 +404,8 @@ mod tests { ); // Attempt to downcast from i64 to i32 should fail - let result = upcast_decimal_values(&array, DecimalType::I32); + let array = array.as_view(); + let result = upcast_decimal_values(array, DecimalType::I32); assert!(result.is_err()); assert!( result diff --git a/vortex-array/src/arrays/decimal/compute/fill_null.rs b/vortex-array/src/arrays/decimal/compute/fill_null.rs index 89e001ed2d1..7200d35b113 100644 --- a/vortex-array/src/arrays/decimal/compute/fill_null.rs +++ b/vortex-array/src/arrays/decimal/compute/fill_null.rs @@ -12,6 +12,7 @@ use super::cast::upcast_decimal_values; use crate::ArrayRef; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::BoolArray; use crate::arrays::Decimal; use crate::arrays::DecimalArray; @@ -24,7 +25,7 @@ use crate::validity::Validity; impl FillNullKernel for Decimal { fn fill_null( - array: &DecimalArray, + array: ArrayView<'_, Decimal>, fill_value: &Scalar, ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -32,11 +33,7 @@ impl FillNullKernel for Decimal { Ok(Some(match array.validity() { Validity::Array(is_valid) => { - let is_invalid = is_valid - .clone() - .execute::(ctx)? - .into_bit_buffer() - .not(); + let is_invalid = is_valid.execute::(ctx)?.into_bit_buffer().not(); let decimal_scalar = fill_value.as_decimal(); let decimal_value = decimal_scalar .decimal_value() @@ -56,7 +53,7 @@ impl FillNullKernel for Decimal { } fn fill_invalid_positions( - array: &DecimalArray, + array: ArrayView<'_, Decimal>, is_invalid: &BitBuffer, decimal_value: &DecimalValue, result_validity: Validity, @@ -67,14 +64,15 @@ fn fill_invalid_positions( let target = max(array.values_type(), decimal_value.decimal_type()); let upcasted = upcast_decimal_values(array, target)?; match_each_decimal_value_type!(upcasted.values_type(), |U| { - fill_invalid_positions::(&upcasted, is_invalid, decimal_value, result_validity) + let upcasted = upcasted.as_view(); + fill_invalid_positions::(upcasted, is_invalid, decimal_value, result_validity) }) } } } fn fill_buffer( - array: &DecimalArray, + array: ArrayView<'_, Decimal>, is_invalid: &BitBuffer, fill_val: T, result_validity: Validity, diff --git a/vortex-array/src/arrays/decimal/compute/mask.rs b/vortex-array/src/arrays/decimal/compute/mask.rs index be5d1854524..aeb39a144fd 100644 --- a/vortex-array/src/arrays/decimal/compute/mask.rs +++ b/vortex-array/src/arrays/decimal/compute/mask.rs @@ -5,6 +5,7 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Decimal; use crate::arrays::DecimalArray; use crate::match_each_decimal_value_type; @@ -12,7 +13,7 @@ use crate::scalar_fn::fns::mask::MaskReduce; use crate::validity::Validity; impl MaskReduce for Decimal { - fn mask(array: &DecimalArray, mask: &ArrayRef) -> VortexResult> { + fn mask(array: ArrayView<'_, Decimal>, mask: &ArrayRef) -> VortexResult> { Ok(Some(match_each_decimal_value_type!( array.values_type(), |D| { diff --git a/vortex-array/src/arrays/decimal/compute/rules.rs b/vortex-array/src/arrays/decimal/compute/rules.rs index 8f99937d9f6..4542749ebb5 100644 --- a/vortex-array/src/arrays/decimal/compute/rules.rs +++ b/vortex-array/src/arrays/decimal/compute/rules.rs @@ -7,10 +7,10 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Decimal; use crate::arrays::DecimalArray; use crate::arrays::Masked; -use crate::arrays::MaskedArray; use crate::arrays::slice::SliceReduce; use crate::arrays::slice::SliceReduceAdaptor; use crate::match_each_decimal_value_type; @@ -36,8 +36,8 @@ impl ArrayParentReduceRule for DecimalMaskedValidityRule { fn reduce_parent( &self, - array: &DecimalArray, - parent: &MaskedArray, + array: ArrayView<'_, Decimal>, + parent: ArrayView<'_, Masked>, _child_idx: usize, ) -> VortexResult> { // Merge the parent's validity mask into the child's validity @@ -60,7 +60,7 @@ impl ArrayParentReduceRule for DecimalMaskedValidityRule { } impl SliceReduce for Decimal { - fn slice(array: &Self::Array, range: Range) -> VortexResult> { + fn slice(array: ArrayView<'_, Self>, range: Range) -> VortexResult> { let result = match_each_decimal_value_type!(array.values_type(), |D| { let sliced = array.buffer::().slice(range.clone()); let validity = array.validity().slice(range)?; diff --git a/vortex-array/src/arrays/decimal/compute/take.rs b/vortex-array/src/arrays/decimal/compute/take.rs index 4718d8ebe4e..87a507681b9 100644 --- a/vortex-array/src/arrays/decimal/compute/take.rs +++ b/vortex-array/src/arrays/decimal/compute/take.rs @@ -6,6 +6,7 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Decimal; use crate::arrays::DecimalArray; use crate::arrays::PrimitiveArray; @@ -18,11 +19,11 @@ use crate::match_each_integer_ptype; impl TakeExecute for Decimal { fn take( - array: &DecimalArray, + array: ArrayView<'_, Decimal>, indices: &ArrayRef, ctx: &mut ExecutionCtx, ) -> VortexResult> { - let indices = indices.to_array().execute::(ctx)?; + let indices = indices.clone().execute::(ctx)?; let validity = array.validity().take(&indices.clone().into_array())?; // TODO(joe): if the true count of take indices validity is low, only take array values with @@ -69,7 +70,7 @@ mod tests { ); let indices = buffer![0, 2, 3].into_array(); - let taken = array.take(indices.to_array()).unwrap(); + let taken = array.take(indices).unwrap(); let expected = DecimalArray::from_iter([10i128, 12, 13], ddtype); assert_arrays_eq!(expected, taken); @@ -85,7 +86,7 @@ mod tests { ); let indices = PrimitiveArray::from_option_iter([None, Some(2), Some(3)]).into_array(); - let taken = array.take(indices.to_array()).unwrap(); + let taken = array.take(indices).unwrap(); let expected = DecimalArray::from_option_iter([None, Some(12i128), Some(13)], ddtype); assert_arrays_eq!(expected, taken); diff --git a/vortex-array/src/arrays/decimal/mod.rs b/vortex-array/src/arrays/decimal/mod.rs index d58ce9f13ab..137331a492f 100644 --- a/vortex-array/src/arrays/decimal/mod.rs +++ b/vortex-array/src/arrays/decimal/mod.rs @@ -2,8 +2,9 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors mod array; -pub use array::DecimalArray; pub use array::DecimalArrayParts; +pub use array::DecimalData; +pub use vtable::DecimalArray; pub(crate) mod compute; diff --git a/vortex-array/src/arrays/decimal/utils.rs b/vortex-array/src/arrays/decimal/utils.rs index da505387d7e..8cb0f8dd22a 100644 --- a/vortex-array/src/arrays/decimal/utils.rs +++ b/vortex-array/src/arrays/decimal/utils.rs @@ -28,7 +28,7 @@ macro_rules! try_downcast { .map(|v| <$dst as BigCast>::from(v).vortex_expect("decimal conversion failure")) .collect(), $array.decimal_dtype(), - $array.validity(), + $array.validity().clone(), ); } )* diff --git a/vortex-array/src/arrays/decimal/vtable/mod.rs b/vortex-array/src/arrays/decimal/vtable/mod.rs index 8125dd85ea9..922b1b80fe2 100644 --- a/vortex-array/src/arrays/decimal/vtable/mod.rs +++ b/vortex-array/src/arrays/decimal/vtable/mod.rs @@ -1,8 +1,6 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors -use std::sync::Arc; - use kernel::PARENT_KERNELS; use vortex_buffer::Alignment; use vortex_error::VortexResult; @@ -17,9 +15,10 @@ use crate::ExecutionCtx; use crate::ExecutionResult; use crate::ProstMetadata; use crate::SerializeMetadata; -use crate::arrays::DecimalArray; -use crate::arrays::decimal::array::NUM_SLOTS; -use crate::arrays::decimal::array::SLOT_NAMES; +use crate::array::Array; +use crate::array::ArrayView; +use crate::array::VTable; +use crate::arrays::decimal::DecimalData; use crate::buffer::BufferHandle; use crate::dtype::DType; use crate::dtype::DecimalType; @@ -28,8 +27,6 @@ use crate::match_each_decimal_value_type; use crate::serde::ArrayChildren; use crate::validity::Validity; use crate::vtable; -use crate::vtable::Array; -use crate::vtable::VTable; mod kernel; mod operations; mod validity; @@ -37,12 +34,14 @@ mod validity; use std::hash::Hash; use crate::Precision; +use crate::array::ArrayId; +use crate::arrays::decimal::array::NUM_SLOTS; +use crate::arrays::decimal::array::SLOT_NAMES; use crate::arrays::decimal::compute::rules::RULES; use crate::hash::ArrayEq; use crate::hash::ArrayHash; -use crate::stats::StatsSetRef; -use crate::vtable::ArrayId; -vtable!(Decimal); +use crate::stats::ArrayStats; +vtable!(Decimal, Decimal, DecimalData); // The type of the values can be determined by looking at the type info...right? #[derive(prost::Message)] @@ -52,13 +51,13 @@ pub struct DecimalMetadata { } impl VTable for Decimal { - type Array = DecimalArray; + type ArrayData = DecimalData; type Metadata = ProstMetadata; type OperationsVTable = Self; type ValidityVTable = Self; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &Self::ArrayData) -> &Self { &Decimal } @@ -66,7 +65,7 @@ impl VTable for Decimal { Self::ID } - fn len(array: &DecimalArray) -> usize { + fn len(array: &DecimalData) -> usize { let divisor = match array.values_type { DecimalType::I8 => 1, DecimalType::I16 => 2, @@ -78,47 +77,45 @@ impl VTable for Decimal { array.values.len() / divisor } - fn dtype(array: &DecimalArray) -> &DType { + fn dtype(array: &DecimalData) -> &DType { &array.dtype } - fn stats(array: &DecimalArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &DecimalData) -> &ArrayStats { + &array.stats_set } - fn array_hash(array: &DecimalArray, state: &mut H, precision: Precision) { - array.dtype.hash(state); + fn array_hash(array: &DecimalData, state: &mut H, precision: Precision) { array.values.array_hash(state, precision); std::mem::discriminant(&array.values_type).hash(state); array.validity().array_hash(state, precision); } - fn array_eq(array: &DecimalArray, other: &DecimalArray, precision: Precision) -> bool { - array.dtype == other.dtype - && array.values.array_eq(&other.values, precision) + fn array_eq(array: &DecimalData, other: &DecimalData, precision: Precision) -> bool { + array.values.array_eq(&other.values, precision) && array.values_type == other.values_type && array.validity().array_eq(&other.validity(), precision) } - fn nbuffers(_array: &DecimalArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 1 } - fn buffer(array: &DecimalArray, idx: usize) -> BufferHandle { + fn buffer(array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { match idx { 0 => array.values.clone(), _ => vortex_panic!("DecimalArray buffer index {idx} out of bounds"), } } - fn buffer_name(_array: &DecimalArray, idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, idx: usize) -> Option { match idx { 0 => Some("values".to_string()), _ => None, } } - fn metadata(array: &DecimalArray) -> VortexResult { + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { Ok(ProstMetadata(DecimalMetadata { values_type: array.values_type() as i32, })) @@ -145,7 +142,7 @@ impl VTable for Decimal { metadata: &Self::Metadata, buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { if buffers.len() != 1 { vortex_bail!("Expected 1 buffer, got {}", buffers.len()); } @@ -171,19 +168,19 @@ impl VTable for Decimal { "DecimalArray buffer not aligned for values type {:?}", D::DECIMAL_TYPE ); - DecimalArray::try_new_handle(values, metadata.values_type(), *decimal_dtype, validity) + DecimalData::try_new_handle(values, metadata.values_type(), *decimal_dtype, validity) }) } - fn slots(array: &DecimalArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &DecimalArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn with_slots(array: &mut DecimalArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "DecimalArray expects {} slots, got {}", @@ -194,12 +191,12 @@ impl VTable for Decimal { Ok(()) } - fn execute(array: Arc>, _ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, _ctx: &mut ExecutionCtx) -> VortexResult { Ok(ExecutionResult::done(array)) } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { @@ -207,7 +204,7 @@ impl VTable for Decimal { } fn execute_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, diff --git a/vortex-array/src/arrays/decimal/vtable/operations.rs b/vortex-array/src/arrays/decimal/vtable/operations.rs index a64be6bd393..cfd14d95d63 100644 --- a/vortex-array/src/arrays/decimal/vtable/operations.rs +++ b/vortex-array/src/arrays/decimal/vtable/operations.rs @@ -4,16 +4,16 @@ use vortex_error::VortexResult; use crate::ExecutionCtx; +use crate::array::ArrayView; +use crate::array::OperationsVTable; use crate::arrays::Decimal; -use crate::arrays::decimal::vtable::DecimalArray; use crate::match_each_decimal_value_type; use crate::scalar::DecimalValue; use crate::scalar::Scalar; -use crate::vtable::OperationsVTable; impl OperationsVTable for Decimal { fn scalar_at( - array: &DecimalArray, + array: ArrayView<'_, Decimal>, index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { @@ -31,7 +31,6 @@ impl OperationsVTable for Decimal { mod tests { use vortex_buffer::buffer; - use crate::DynArray; use crate::IntoArray; use crate::arrays::Decimal; use crate::arrays::DecimalArray; diff --git a/vortex-array/src/arrays/decimal/vtable/validity.rs b/vortex-array/src/arrays/decimal/vtable/validity.rs index da05b4aec58..5479ac890f3 100644 --- a/vortex-array/src/arrays/decimal/vtable/validity.rs +++ b/vortex-array/src/arrays/decimal/vtable/validity.rs @@ -3,13 +3,13 @@ use vortex_error::VortexResult; +use crate::array::ArrayView; +use crate::array::ValidityVTable; use crate::arrays::decimal::vtable::Decimal; -use crate::arrays::decimal::vtable::DecimalArray; use crate::validity::Validity; -use crate::vtable::ValidityVTable; impl ValidityVTable for Decimal { - fn validity(array: &DecimalArray) -> VortexResult { - Ok(array.validity()) + fn validity(array: ArrayView<'_, Decimal>) -> VortexResult { + Ok(array.data().validity()) } } diff --git a/vortex-array/src/arrays/dict/array.rs b/vortex-array/src/arrays/dict/array.rs index 91d03949599..ceff69fa242 100644 --- a/vortex-array/src/arrays/dict/array.rs +++ b/vortex-array/src/arrays/dict/array.rs @@ -10,6 +10,8 @@ use vortex_mask::AllOr; use crate::ArrayRef; use crate::ToCanonical; +use crate::array::Array; +use crate::arrays::Dict; use crate::dtype::DType; use crate::dtype::PType; use crate::match_each_integer_ptype; @@ -39,7 +41,7 @@ pub(super) const NUM_SLOTS: usize = 2; pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["codes", "values"]; #[derive(Debug, Clone)] -pub struct DictArray { +pub struct DictData { pub(super) slots: Vec>, pub(super) stats_set: ArrayStats, pub(super) dtype: DType, @@ -57,12 +59,12 @@ pub struct DictArrayParts { pub dtype: DType, } -impl DictArray { +impl DictData { /// Build a new `DictArray` without validating the codes or values. /// /// # Safety /// This should be called only when you can guarantee the invariants checked - /// by the safe [`DictArray::try_new`] constructor are valid, for example when + /// by the safe `DictArray::try_new` constructor are valid, for example when /// you are filtering or slicing an existing valid `DictArray`. pub unsafe fn new_unchecked(codes: ArrayRef, values: ArrayRef) -> Self { let dtype = values @@ -101,7 +103,7 @@ impl DictArray { /// Build a new `DictArray` from its components, `codes` and `values`. /// /// This constructor will panic if `codes` or `values` do not pass validation for building - /// a new `DictArray`. See [`DictArray::try_new`] for a description of the error conditions. + /// a new `DictArray`. See `DictArray::try_new` for a description of the error conditions. pub fn new(codes: ArrayRef, values: ArrayRef) -> Self { Self::try_new(codes, values).vortex_expect("DictArray new") } @@ -125,6 +127,21 @@ impl DictArray { Ok(unsafe { Self::new_unchecked(codes, values) }) } + /// Returns the length of this array. + pub fn len(&self) -> usize { + self.codes().len() + } + + /// Returns the [`DType`] of this array. + pub fn dtype(&self) -> &DType { + &self.dtype + } + + /// Returns `true` if this array is empty. + pub fn is_empty(&self) -> bool { + self.len() == 0 + } + pub fn into_parts(mut self) -> DictArrayParts { DictArrayParts { codes: self.slots[CODES_SLOT] @@ -182,17 +199,44 @@ impl DictArray { Ok(()) } +} - /// Compute a mask indicating which values in the dictionary are referenced by at least one code. +impl Array { + /// Build a new `DictArray` from its components, `codes` and `values`. + pub fn new(codes: ArrayRef, values: ArrayRef) -> Self { + Array::try_from_data(DictData::new(codes, values)).vortex_expect("DictData is always valid") + } + + /// Build a new `DictArray` from its components, `codes` and `values`. + pub fn try_new(codes: ArrayRef, values: ArrayRef) -> VortexResult { + Array::try_from_data(DictData::try_new(codes, values)?) + } + + /// Build a new `DictArray` without validating the codes or values. /// - /// When `referenced = true`, returns a `BitBuffer` where set bits (true) correspond to - /// referenced values, and unset bits (false) correspond to unreferenced values. + /// # Safety + /// + /// See [`DictData::new_unchecked`]. + pub unsafe fn new_unchecked(codes: ArrayRef, values: ArrayRef) -> Self { + Array::try_from_data(unsafe { DictData::new_unchecked(codes, values) }) + .vortex_expect("DictData is always valid") + } + + /// Set whether all values in the dictionary are referenced by at least one code. /// - /// When `referenced = false` (default for unreferenced values), returns the inverse: - /// set bits (true) correspond to unreferenced values, and unset bits (false) correspond - /// to referenced values. + /// # Safety /// - /// This is useful for operations like min/max that need to ignore unreferenced values. + /// See [`DictData::set_all_values_referenced`]. + pub unsafe fn set_all_values_referenced(self, all_values_referenced: bool) -> Self { + Array::try_from_data(unsafe { + self.into_data() + .set_all_values_referenced(all_values_referenced) + }) + .vortex_expect("data is always valid") + } +} + +impl DictData { pub fn compute_referenced_values_mask(&self, referenced: bool) -> VortexResult { let codes_validity = self.codes().validity_mask()?; let codes_primitive = self.codes().to_primitive(); @@ -255,7 +299,6 @@ mod test { use vortex_mask::AllOr; use crate::ArrayRef; - use crate::DynArray; use crate::IntoArray; use crate::LEGACY_SESSION; use crate::ToCanonical; @@ -387,9 +430,7 @@ mod test { &DType::Primitive(PType::U64, NonNullable), len * chunk_count, ); - array - .clone() - .append_to_builder(builder.as_mut(), &mut LEGACY_SESSION.create_execution_ctx())?; + array.append_to_builder(builder.as_mut(), &mut LEGACY_SESSION.create_execution_ctx())?; let into_prim = array.to_primitive(); let prim_into = builder.finish_into_canonical().into_primitive(); diff --git a/vortex-array/src/arrays/dict/compute/cast.rs b/vortex-array/src/arrays/dict/compute/cast.rs index 22457e875b2..a7895c9844b 100644 --- a/vortex-array/src/arrays/dict/compute/cast.rs +++ b/vortex-array/src/arrays/dict/compute/cast.rs @@ -6,14 +6,14 @@ use vortex_error::VortexResult; use super::Dict; use super::DictArray; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; +use crate::array::ArrayView; use crate::builtins::ArrayBuiltins; use crate::dtype::DType; use crate::scalar_fn::fns::cast::CastReduce; impl CastReduce for Dict { - fn cast(array: &DictArray, dtype: &DType) -> VortexResult> { + fn cast(array: ArrayView<'_, Dict>, dtype: &DType) -> VortexResult> { // Can have un-reference null values making the cast of values fail without a possible mask. // TODO(joe): optimize this, could look at accessible values and fill_null not those? if !dtype.is_nullable() @@ -172,8 +172,8 @@ mod tests { ); // Verify values are unchanged - let original_values = dict.to_primitive(); - let final_values = back_dict.to_primitive(); + let original_values = dict.as_array().to_primitive(); + let final_values = back_dict.array().to_primitive(); assert_arrays_eq!(original_values, final_values); } diff --git a/vortex-array/src/arrays/dict/compute/compare.rs b/vortex-array/src/arrays/dict/compute/compare.rs index 3dadc7d98e6..9e2c119ca7e 100644 --- a/vortex-array/src/arrays/dict/compute/compare.rs +++ b/vortex-array/src/arrays/dict/compute/compare.rs @@ -7,9 +7,9 @@ use super::Dict; use super::DictArray; use crate::ArrayRef; use crate::Canonical; -use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::ConstantArray; use crate::builtins::ArrayBuiltins; use crate::scalar_fn::fns::binary::CompareKernel; @@ -18,7 +18,7 @@ use crate::scalar_fn::fns::operators::Operator; impl CompareKernel for Dict { fn compare( - lhs: &DictArray, + lhs: ArrayView<'_, Dict>, rhs: &ArrayRef, operator: CompareOperator, ctx: &mut ExecutionCtx, @@ -30,7 +30,7 @@ impl CompareKernel for Dict { // If the RHS is constant, then we just need to compare against our encoded values. if let Some(rhs) = rhs.as_constant() { - let compare_result = lhs.values().to_array().binary( + let compare_result = lhs.values().clone().binary( ConstantArray::new(rhs, lhs.values().len()).into_array(), Operator::from(operator), )?; diff --git a/vortex-array/src/arrays/dict/compute/fill_null.rs b/vortex-array/src/arrays/dict/compute/fill_null.rs index cb5d9d528a6..36dad87b911 100644 --- a/vortex-array/src/arrays/dict/compute/fill_null.rs +++ b/vortex-array/src/arrays/dict/compute/fill_null.rs @@ -7,9 +7,9 @@ use super::Dict; use super::DictArray; use crate::ArrayRef; use crate::Canonical; -use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::BoolArray; use crate::arrays::ConstantArray; use crate::builtins::ArrayBuiltins; @@ -21,7 +21,7 @@ use crate::scalar_fn::fns::operators::Operator; impl FillNullKernel for Dict { fn fill_null( - array: &DictArray, + array: ArrayView<'_, Dict>, fill_value: &Scalar, ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -29,7 +29,7 @@ impl FillNullKernel for Dict { // to point to the value. let found_fill_values = array .values() - .to_array() + .clone() .binary( ConstantArray::new(fill_value.clone(), array.values().len()).into_array(), Operator::Eq, @@ -43,8 +43,8 @@ impl FillNullKernel for Dict { // No fill values found, so we must canonicalize and fill_null. return Ok(Some( array + .array() .clone() - .into_array() .execute::(ctx)? .into_array() .fill_null(fill_value.clone())?, @@ -67,11 +67,11 @@ impl FillNullKernel for Dict { // Fill nulls in both the codes and the values. Note that the precondition of this function // states that the fill value is non-null, so we do not have to worry about the nullability. - let codes = codes.to_array().fill_null(Scalar::try_new( + let codes = codes.clone().fill_null(Scalar::try_new( codes.dtype().as_nonnullable(), Some(fill_scalar_value), )?)?; - let values = array.values().to_array().fill_null(fill_value.clone())?; + let values = array.values().clone().fill_null(fill_value.clone())?; // SAFETY: invariants are still satisfied after patching nulls. unsafe { diff --git a/vortex-array/src/arrays/dict/compute/like.rs b/vortex-array/src/arrays/dict/compute/like.rs index fc2cb3681f5..0d7113acd64 100644 --- a/vortex-array/src/arrays/dict/compute/like.rs +++ b/vortex-array/src/arrays/dict/compute/like.rs @@ -6,8 +6,8 @@ use vortex_error::VortexResult; use super::Dict; use super::DictArray; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::ConstantArray; use crate::arrays::scalar_fn::ScalarFnArrayExt; use crate::optimizer::ArrayOptimizer; @@ -17,7 +17,7 @@ use crate::scalar_fn::fns::like::LikeReduce; impl LikeReduce for Dict { fn like( - array: &DictArray, + array: ArrayView<'_, Dict>, pattern: &ArrayRef, options: LikeOptions, ) -> VortexResult> { diff --git a/vortex-array/src/arrays/dict/compute/mask.rs b/vortex-array/src/arrays/dict/compute/mask.rs index 6986a8c343a..3d098f046bc 100644 --- a/vortex-array/src/arrays/dict/compute/mask.rs +++ b/vortex-array/src/arrays/dict/compute/mask.rs @@ -5,6 +5,7 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Dict; use crate::arrays::DictArray; use crate::arrays::scalar_fn::ScalarFnArrayExt; @@ -13,7 +14,7 @@ use crate::scalar_fn::fns::mask::Mask as MaskExpr; use crate::scalar_fn::fns::mask::MaskReduce; impl MaskReduce for Dict { - fn mask(array: &DictArray, mask: &ArrayRef) -> VortexResult> { + fn mask(array: ArrayView<'_, Dict>, mask: &ArrayRef) -> VortexResult> { let masked_codes = MaskExpr.try_new_array( array.codes().len(), EmptyOptions, diff --git a/vortex-array/src/arrays/dict/compute/mod.rs b/vortex-array/src/arrays/dict/compute/mod.rs index 0aa1586d29f..dc0bf9ac47f 100644 --- a/vortex-array/src/arrays/dict/compute/mod.rs +++ b/vortex-array/src/arrays/dict/compute/mod.rs @@ -19,18 +19,18 @@ use super::Dict; use super::DictArray; use super::TakeExecute; use crate::ArrayRef; -use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::filter::FilterReduce; impl TakeExecute for Dict { fn take( - array: &DictArray, + array: ArrayView<'_, Dict>, indices: &ArrayRef, _ctx: &mut ExecutionCtx, ) -> VortexResult> { - let codes = array.codes().take(indices.to_array())?; + let codes = array.codes().take(indices.clone())?; // SAFETY: selecting codes doesn't change the invariants of DictArray // Preserve all_values_referenced since taking codes doesn't affect which values are referenced Ok(Some(unsafe { @@ -40,7 +40,7 @@ impl TakeExecute for Dict { } impl FilterReduce for Dict { - fn filter(array: &DictArray, mask: &Mask) -> VortexResult> { + fn filter(array: ArrayView<'_, Dict>, mask: &Mask) -> VortexResult> { let codes = array.codes().filter(mask.clone())?; // SAFETY: filtering codes doesn't change invariants @@ -58,7 +58,6 @@ mod test { use vortex_buffer::buffer; use crate::ArrayRef; - use crate::DynArray; use crate::IntoArray; use crate::ToCanonical; use crate::accessor::ArrayAccessor; @@ -89,7 +88,7 @@ mod test { let dict = dict_encode(&PrimitiveArray::from_option_iter(values.clone()).into_array()).unwrap(); - let actual = dict.to_primitive(); + let actual = dict.as_array().to_primitive(); let expected = PrimitiveArray::from_option_iter(values); @@ -102,7 +101,7 @@ mod test { let expected = PrimitiveArray::from_iter((0..1000).map(|i| unique_values[i % 32])); let dict = dict_encode(&expected.clone().into_array()).unwrap(); - let actual = dict.to_primitive(); + let actual = dict.as_array().to_primitive(); assert_arrays_eq!(actual, expected); } @@ -113,7 +112,7 @@ mod test { let expected = PrimitiveArray::from_iter((0..1000).map(|i| unique_values[i % 100])); let dict = dict_encode(&expected.clone().into_array()).unwrap(); - let actual = dict.to_primitive(); + let actual = dict.as_array().to_primitive(); assert_arrays_eq!(actual, expected); } @@ -126,7 +125,7 @@ mod test { ); assert_eq!(reference.len(), 6); let dict = dict_encode(&reference.clone().into_array()).unwrap(); - let flattened_dict = dict.to_varbinview(); + let flattened_dict = dict.as_array().to_varbinview(); assert_eq!( flattened_dict.with_iterator(|iter| iter .map(|slice| slice.map(|s| s.to_vec())) diff --git a/vortex-array/src/arrays/dict/compute/rules.rs b/vortex-array/src/arrays/dict/compute/rules.rs index 939b2e16bce..1bd638e168f 100644 --- a/vortex-array/src/arrays/dict/compute/rules.rs +++ b/vortex-array/src/arrays/dict/compute/rules.rs @@ -5,14 +5,15 @@ use vortex_error::VortexResult; use crate::ArrayEq; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; use crate::Precision; +use crate::array::ArrayView; use crate::arrays::Constant; use crate::arrays::ConstantArray; use crate::arrays::Dict; use crate::arrays::DictArray; use crate::arrays::ScalarFnArray; +use crate::arrays::ScalarFnVTable; use crate::arrays::filter::FilterReduceAdaptor; use crate::arrays::scalar_fn::AnyScalarFn; use crate::arrays::slice::SliceReduceAdaptor; @@ -45,8 +46,8 @@ impl ArrayParentReduceRule for DictionaryScalarFnValuesPushDownRule { fn reduce_parent( &self, - array: &DictArray, - parent: &ScalarFnArray, + array: ArrayView<'_, Dict>, + parent: ArrayView<'_, ScalarFnVTable>, child_idx: usize, ) -> VortexResult> { // Check that the scalar function can actually be pushed down. @@ -77,7 +78,7 @@ impl ArrayParentReduceRule for DictionaryScalarFnValuesPushDownRule { tracing::trace!( "Not pushing down fallible scalar function {} over dictionary with sparse codes {}", parent.scalar_fn(), - array.encoding_id(), + Dict::ID, ); return Ok(None); } @@ -101,7 +102,7 @@ impl ArrayParentReduceRule for DictionaryScalarFnValuesPushDownRule { tracing::trace!( "Not pushing down null-sensitive scalar function {} over dictionary with null codes {}", parent.scalar_fn(), - array.encoding_id(), + Dict::ID, ); return Ok(None); } @@ -147,8 +148,8 @@ impl ArrayParentReduceRule for DictionaryScalarFnCodesPullUpRule { fn reduce_parent( &self, - array: &DictArray, - parent: &ScalarFnArray, + array: ArrayView<'_, Dict>, + parent: ArrayView<'_, ScalarFnVTable>, child_idx: usize, ) -> VortexResult> { // Don't attempt to pull up if there are less than 2 siblings. diff --git a/vortex-array/src/arrays/dict/compute/slice.rs b/vortex-array/src/arrays/dict/compute/slice.rs index dd01c585a67..c4e8b798d2b 100644 --- a/vortex-array/src/arrays/dict/compute/slice.rs +++ b/vortex-array/src/arrays/dict/compute/slice.rs @@ -7,6 +7,7 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Constant; use crate::arrays::ConstantArray; use crate::arrays::Dict; @@ -15,7 +16,7 @@ use crate::arrays::slice::SliceReduce; use crate::scalar::Scalar; impl SliceReduce for Dict { - fn slice(array: &Self::Array, range: Range) -> VortexResult> { + fn slice(array: ArrayView<'_, Self>, range: Range) -> VortexResult> { let sliced_code = array.codes().slice(range)?; // TODO(joe): if the range is size 1 replace with a constant array if let Some(code) = sliced_code.as_opt::() { @@ -48,7 +49,6 @@ mod tests { use vortex_buffer::buffer; use vortex_error::VortexResult; - use crate::DynArray; use crate::IntoArray; use crate::arrays::DictArray; use crate::arrays::PrimitiveArray; diff --git a/vortex-array/src/arrays/dict/execute.rs b/vortex-array/src/arrays/dict/execute.rs index d7ccced91b0..da2f549c62c 100644 --- a/vortex-array/src/arrays/dict/execute.rs +++ b/vortex-array/src/arrays/dict/execute.rs @@ -72,12 +72,12 @@ fn take_bool( codes: &PrimitiveArray, ctx: &mut ExecutionCtx, ) -> VortexResult { - Ok( - ::take(array, &codes.clone().into_array(), ctx)? - .vortex_expect("take bool should not return None") - .as_::() - .clone(), - ) + let codes_ref = codes.clone().into_array(); + let array = array.as_view(); + Ok(::take(array, &codes_ref, ctx)? + .vortex_expect("take bool should not return None") + .as_::() + .into_owned()) } fn take_primitive( @@ -85,11 +85,13 @@ fn take_primitive( codes: &PrimitiveArray, ctx: &mut ExecutionCtx, ) -> PrimitiveArray { - ::take(array, &codes.clone().into_array(), ctx) + let codes_ref = codes.clone().into_array(); + let array = array.as_view(); + ::take(array, &codes_ref, ctx) .vortex_expect("take primitive array") .vortex_expect("take primitive should not return None") .as_::() - .clone() + .into_owned() } fn take_decimal( @@ -97,11 +99,13 @@ fn take_decimal( codes: &PrimitiveArray, ctx: &mut ExecutionCtx, ) -> DecimalArray { - ::take(array, &codes.clone().into_array(), ctx) + let codes_ref = codes.clone().into_array(); + let array = array.as_view(); + ::take(array, &codes_ref, ctx) .vortex_expect("take decimal array") .vortex_expect("take decimal should not return None") .as_::() - .clone() + .into_owned() } fn take_varbinview( @@ -109,19 +113,23 @@ fn take_varbinview( codes: &PrimitiveArray, ctx: &mut ExecutionCtx, ) -> VarBinViewArray { - ::take(array, &codes.clone().into_array(), ctx) + let codes_ref = codes.clone().into_array(); + let array = array.as_view(); + ::take(array, &codes_ref, ctx) .vortex_expect("take varbinview array") .vortex_expect("take varbinview should not return None") .as_::() - .clone() + .into_owned() } fn take_listview(array: &ListViewArray, codes: &PrimitiveArray) -> ListViewArray { - ::take(array, &codes.clone().into_array()) + let codes_ref = codes.clone().into_array(); + let array = array.as_view(); + ::take(array, &codes_ref) .vortex_expect("take listview array") .vortex_expect("take listview should not return None") .as_::() - .clone() + .into_owned() } fn take_fixed_size_list( @@ -129,19 +137,23 @@ fn take_fixed_size_list( codes: &PrimitiveArray, ctx: &mut ExecutionCtx, ) -> FixedSizeListArray { - ::take(array, &codes.clone().into_array(), ctx) + let codes_ref = codes.clone().into_array(); + let array = array.as_view(); + ::take(array, &codes_ref, ctx) .vortex_expect("take fixed size list array") .vortex_expect("take fixed size list should not return None") .as_::() - .clone() + .into_owned() } fn take_struct(array: &StructArray, codes: &PrimitiveArray) -> StructArray { - ::take(array, &codes.clone().into_array()) + let codes_ref = codes.clone().into_array(); + let array = array.as_view(); + ::take(array, &codes_ref) .vortex_expect("take struct array") .vortex_expect("take struct should not return None") .as_::() - .clone() + .into_owned() } fn take_extension( @@ -149,9 +161,11 @@ fn take_extension( codes: &PrimitiveArray, ctx: &mut ExecutionCtx, ) -> ExtensionArray { - ::take(array, &codes.clone().into_array(), ctx) + let codes_ref = codes.clone().into_array(); + let array = array.as_view(); + ::take(array, &codes_ref, ctx) .vortex_expect("take extension storage") .vortex_expect("take extension should not return None") .as_::() - .clone() + .into_owned() } diff --git a/vortex-array/src/arrays/dict/take.rs b/vortex-array/src/arrays/dict/take.rs index e3323323ae6..b3e18f6a9a1 100644 --- a/vortex-array/src/arrays/dict/take.rs +++ b/vortex-array/src/arrays/dict/take.rs @@ -4,12 +4,12 @@ use vortex_error::VortexResult; use super::Dict; -use super::DictArray; use crate::ArrayRef; use crate::Canonical; -use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; +use crate::array::VTable; use crate::arrays::ConstantArray; use crate::expr::stats::Precision; use crate::expr::stats::Stat; @@ -20,7 +20,6 @@ use crate::matcher::Matcher; use crate::optimizer::rules::ArrayParentReduceRule; use crate::scalar::Scalar; use crate::stats::StatsSet; -use crate::vtable::VTable; pub trait TakeReduce: VTable { /// Take elements from an array at the given indices without reading buffers. @@ -32,7 +31,7 @@ pub trait TakeReduce: VTable { /// # Preconditions /// /// The indices are guaranteed to be non-empty. - fn take(array: &Self::Array, indices: &ArrayRef) -> VortexResult>; + fn take(array: ArrayView<'_, Self>, indices: &ArrayRef) -> VortexResult>; } pub trait TakeExecute: VTable { @@ -45,7 +44,7 @@ pub trait TakeExecute: VTable { /// /// The indices are guaranteed to be non-empty. fn take( - array: &Self::Array, + array: ArrayView<'_, Self>, indices: &ArrayRef, ctx: &mut ExecutionCtx, ) -> VortexResult>; @@ -55,7 +54,7 @@ pub trait TakeExecute: VTable { /// /// Returns `Some(result)` if the precondition short-circuits the take operation, /// or `None` if the take should proceed normally. -fn precondition(array: &V::Array, indices: &ArrayRef) -> Option { +fn precondition(array: ArrayView<'_, V>, indices: &ArrayRef) -> Option { // Fast-path for empty indices. if indices.is_empty() { let result_dtype = array @@ -87,8 +86,8 @@ where fn reduce_parent( &self, - array: &V::Array, - parent: &DictArray, + array: ArrayView<'_, V>, + parent: ArrayView<'_, Dict>, child_idx: usize, ) -> VortexResult> { // Only handle the values child (index 1), not the codes child (index 0). @@ -100,7 +99,7 @@ where } let result = ::take(array, parent.codes())?; if let Some(ref taken) = result { - propagate_take_stats(&array.to_array(), taken, parent.codes())?; + propagate_take_stats(array.array(), taken, parent.codes())?; } Ok(result) } @@ -117,7 +116,7 @@ where fn execute_parent( &self, - array: &V::Array, + array: ArrayView<'_, V>, parent: ::Match<'_>, child_idx: usize, ctx: &mut ExecutionCtx, @@ -131,7 +130,7 @@ where } let result = ::take(array, parent.codes(), ctx)?; if let Some(ref taken) = result { - propagate_take_stats(&array.to_array(), taken, parent.codes())?; + propagate_take_stats(array.array(), taken, parent.codes())?; } Ok(result) } diff --git a/vortex-array/src/arrays/dict/tests.rs b/vortex-array/src/arrays/dict/tests.rs index a404e9ef06d..bc69998b0de 100644 --- a/vortex-array/src/arrays/dict/tests.rs +++ b/vortex-array/src/arrays/dict/tests.rs @@ -4,7 +4,6 @@ use vortex_buffer::buffer; use super::DictArray; -use crate::DynArray; use crate::IntoArray; use crate::arrays::BoolArray; use crate::arrays::ListArray; diff --git a/vortex-array/src/arrays/dict/vtable/mod.rs b/vortex-array/src/arrays/dict/vtable/mod.rs index d9bfdcefc8c..f65e2d43412 100644 --- a/vortex-array/src/arrays/dict/vtable/mod.rs +++ b/vortex-array/src/arrays/dict/vtable/mod.rs @@ -1,9 +1,6 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors -use std::hash::Hash; -use std::sync::Arc; - use kernel::PARENT_KERNELS; use vortex_error::VortexExpect; use vortex_error::VortexResult; @@ -13,8 +10,8 @@ use vortex_error::vortex_err; use vortex_error::vortex_panic; use vortex_session::VortexSession; -use super::DictArray; use super::DictArrayParts; +use super::DictData; use super::DictMetadata; use super::array::NUM_SLOTS; use super::array::SLOT_NAMES; @@ -23,13 +20,15 @@ use crate::AnyCanonical; use crate::ArrayRef; use crate::Canonical; use crate::DeserializeMetadata; -use crate::DynArray; -use crate::IntoArray; use crate::Precision; use crate::ProstMetadata; use crate::SerializeMetadata; -use crate::arrays::ConstantArray; +use crate::array::Array; +use crate::array::ArrayId; +use crate::array::ArrayView; +use crate::array::VTable; use crate::arrays::Primitive; +use crate::arrays::constant::ConstantData; use crate::arrays::dict::compute::rules::PARENT_RULES; use crate::buffer::BufferHandle; use crate::dtype::DType; @@ -42,16 +41,13 @@ use crate::hash::ArrayHash; use crate::require_child; use crate::scalar::Scalar; use crate::serde::ArrayChildren; -use crate::stats::StatsSetRef; +use crate::stats::ArrayStats; use crate::vtable; -use crate::vtable::Array; -use crate::vtable::ArrayId; -use crate::vtable::VTable; mod kernel; mod operations; mod validity; -vtable!(Dict); +vtable!(Dict, Dict, DictData); #[derive(Clone, Debug)] pub struct Dict; @@ -61,13 +57,13 @@ impl Dict { } impl VTable for Dict { - type Array = DictArray; + type ArrayData = DictData; type Metadata = ProstMetadata; type OperationsVTable = Self; type ValidityVTable = Self; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &Self::ArrayData) -> &Self { &Dict } @@ -75,43 +71,41 @@ impl VTable for Dict { Self::ID } - fn len(array: &DictArray) -> usize { + fn len(array: &DictData) -> usize { array.codes().len() } - fn dtype(array: &DictArray) -> &DType { + fn dtype(array: &DictData) -> &DType { &array.dtype } - fn stats(array: &DictArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &DictData) -> &ArrayStats { + &array.stats_set } - fn array_hash(array: &DictArray, state: &mut H, precision: Precision) { - array.dtype.hash(state); + fn array_hash(array: &DictData, state: &mut H, precision: Precision) { array.codes().array_hash(state, precision); array.values().array_hash(state, precision); } - fn array_eq(array: &DictArray, other: &DictArray, precision: Precision) -> bool { - array.dtype == other.dtype - && array.codes().array_eq(other.codes(), precision) + fn array_eq(array: &DictData, other: &DictData, precision: Precision) -> bool { + array.codes().array_eq(other.codes(), precision) && array.values().array_eq(other.values(), precision) } - fn nbuffers(_array: &DictArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 0 } - fn buffer(_array: &DictArray, idx: usize) -> BufferHandle { + fn buffer(_array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { vortex_panic!("DictArray buffer index {idx} out of bounds") } - fn buffer_name(_array: &DictArray, _idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, _idx: usize) -> Option { None } - fn metadata(array: &DictArray) -> VortexResult { + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { Ok(ProstMetadata(DictMetadata { codes_ptype: PType::try_from(array.codes().dtype())? as i32, values_len: u32::try_from(array.values().len()).map_err(|_| { @@ -146,7 +140,7 @@ impl VTable for Dict { metadata: &Self::Metadata, _buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { if children.len() != 2 { vortex_bail!( "Expected 2 children for dict encoding, found {}", @@ -166,19 +160,19 @@ impl VTable for Dict { // SAFETY: We've validated the metadata and children. Ok(unsafe { - DictArray::new_unchecked(codes, values).set_all_values_referenced(all_values_referenced) + DictData::new_unchecked(codes, values).set_all_values_referenced(all_values_referenced) }) } - fn slots(array: &DictArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &DictArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn with_slots(array: &mut DictArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "DictArray expects exactly {} slots, got {}", @@ -189,7 +183,7 @@ impl VTable for Dict { Ok(()) } - fn execute(array: Arc>, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, ctx: &mut ExecutionCtx) -> VortexResult { if array.is_empty() { let result_dtype = array .dtype() @@ -203,19 +197,15 @@ impl VTable for Dict { // Also not the check to do here it take value validity using code validity, but this approx // is correct. if array.codes().all_invalid()? { - return Ok(ExecutionResult::done( - ConstantArray::new( - Scalar::null(array.dtype().as_nullable()), - array.codes().len(), - ) - .into_array(), - )); + return Ok(ExecutionResult::done(ConstantData::new( + Scalar::null(array.dtype().as_nullable()), + array.codes().len(), + ))); } let array = require_child!(array, array.values(), 1 => AnyCanonical); - let DictArrayParts { codes, values, .. } = - Arc::unwrap_or_clone(array).into_inner().into_parts(); + let DictArrayParts { codes, values, .. } = array.into_data().into_parts(); let codes = codes .try_into::() @@ -225,13 +215,11 @@ impl VTable for Dict { // TODO: add canonical owned cast. let values = values.to_canonical()?; - Ok(ExecutionResult::done( - take_canonical(values, &codes, ctx)?.into_array(), - )) + Ok(ExecutionResult::done(take_canonical(values, &codes, ctx)?)) } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { @@ -239,7 +227,7 @@ impl VTable for Dict { } fn execute_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, diff --git a/vortex-array/src/arrays/dict/vtable/operations.rs b/vortex-array/src/arrays/dict/vtable/operations.rs index 9fe33e8b9a3..af8eff0cbe5 100644 --- a/vortex-array/src/arrays/dict/vtable/operations.rs +++ b/vortex-array/src/arrays/dict/vtable/operations.rs @@ -5,14 +5,17 @@ use vortex_error::VortexExpect; use vortex_error::VortexResult; use super::Dict; -use crate::DynArray; use crate::ExecutionCtx; -use crate::arrays::DictArray; +use crate::array::ArrayView; +use crate::array::OperationsVTable; use crate::scalar::Scalar; -use crate::vtable::OperationsVTable; impl OperationsVTable for Dict { - fn scalar_at(array: &DictArray, index: usize, _ctx: &mut ExecutionCtx) -> VortexResult { + fn scalar_at( + array: ArrayView<'_, Dict>, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { let Some(dict_index) = array .codes() .scalar_at(index)? diff --git a/vortex-array/src/arrays/dict/vtable/validity.rs b/vortex-array/src/arrays/dict/vtable/validity.rs index 95204c0d5b5..cdaeb4a08d5 100644 --- a/vortex-array/src/arrays/dict/vtable/validity.rs +++ b/vortex-array/src/arrays/dict/vtable/validity.rs @@ -4,17 +4,17 @@ use vortex_error::VortexResult; use super::Dict; -use crate::DynArray; use crate::IntoArray; -use crate::arrays::DictArray; +use crate::array::ArrayView; +use crate::array::ValidityVTable; +use crate::arrays::dict::DictData; use crate::builtins::ArrayBuiltins; use crate::dtype::Nullability; use crate::scalar::Scalar; use crate::validity::Validity; -use crate::vtable::ValidityVTable; impl ValidityVTable for Dict { - fn validity(array: &DictArray) -> VortexResult { + fn validity(array: ArrayView<'_, Dict>) -> VortexResult { Ok( match (array.codes().validity()?, array.values().validity()?) { ( @@ -32,13 +32,13 @@ impl ValidityVTable for Dict { // We know codes are all valid, so the cast is free. let codes = array.codes().cast(array.codes().dtype().as_nonnullable())?; Validity::Array( - unsafe { DictArray::new_unchecked(codes, values_validity) }.into_array(), + unsafe { DictData::new_unchecked(codes, values_validity) }.into_array(), ) } (Validity::Array(_codes_validity), Validity::Array(values_validity)) => { // Create a mask representing "is the value at codes[i] valid?" let values_valid_mask = - unsafe { DictArray::new_unchecked(array.codes().clone(), values_validity) } + unsafe { DictData::new_unchecked(array.codes().clone(), values_validity) } .into_array(); let values_valid_mask = values_valid_mask .fill_null(Scalar::bool(false, Nullability::NonNullable))?; diff --git a/vortex-array/src/arrays/extension/array.rs b/vortex-array/src/arrays/extension/array.rs index fff2dec92e3..f641b1202d4 100644 --- a/vortex-array/src/arrays/extension/array.rs +++ b/vortex-array/src/arrays/extension/array.rs @@ -5,6 +5,8 @@ use vortex_error::VortexExpect; use vortex_error::VortexResult; use crate::ArrayRef; +use crate::array::Array; +use crate::arrays::Extension; use crate::dtype::DType; use crate::dtype::extension::ExtDTypeRef; use crate::stats::ArrayStats; @@ -53,14 +55,14 @@ pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["storage"]; /// - Slicing preserves the extension type /// - Scalar access wraps storage scalars with extension metadata #[derive(Clone, Debug)] -pub struct ExtensionArray { +pub struct ExtensionData { /// The storage dtype. This **must** be a [`Extension::DType`] variant. pub(super) dtype: DType, pub(super) slots: Vec>, pub(super) stats_set: ArrayStats, } -impl ExtensionArray { +impl ExtensionData { /// Constructs a new `ExtensionArray`. /// /// # Panics @@ -114,6 +116,21 @@ impl ExtensionArray { } } + /// Returns the length of this array. + pub fn len(&self) -> usize { + self.storage_array().len() + } + + /// Returns the [`DType`] of this array. + pub fn dtype(&self) -> &DType { + &self.dtype + } + + /// Returns `true` if this array is empty. + pub fn is_empty(&self) -> bool { + self.len() == 0 + } + /// The extension dtype of this array. pub fn ext_dtype(&self) -> &ExtDTypeRef { let DType::Extension(ext) = &self.dtype else { @@ -129,3 +146,20 @@ impl ExtensionArray { .vortex_expect("ExtensionArray storage slot") } } + +impl Array { + /// Constructs a new `ExtensionArray`. + /// + /// # Panics + /// + /// Panics if the storage array is not compatible with the extension dtype. + pub fn new(ext_dtype: ExtDTypeRef, storage_array: ArrayRef) -> Self { + Array::try_from_data(ExtensionData::new(ext_dtype, storage_array)) + .vortex_expect("ExtensionData is always valid") + } + + /// Tries to construct a new `ExtensionArray`. + pub fn try_new(ext_dtype: ExtDTypeRef, storage_array: ArrayRef) -> VortexResult { + Array::try_from_data(ExtensionData::try_new(ext_dtype, storage_array)?) + } +} diff --git a/vortex-array/src/arrays/extension/compute/cast.rs b/vortex-array/src/arrays/extension/compute/cast.rs index 1b02b479438..161592ad264 100644 --- a/vortex-array/src/arrays/extension/compute/cast.rs +++ b/vortex-array/src/arrays/extension/compute/cast.rs @@ -3,6 +3,7 @@ use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Extension; use crate::arrays::ExtensionArray; use crate::builtins::ArrayBuiltins; @@ -10,7 +11,10 @@ use crate::dtype::DType; use crate::scalar_fn::fns::cast::CastReduce; impl CastReduce for Extension { - fn cast(array: &ExtensionArray, dtype: &DType) -> vortex_error::VortexResult> { + fn cast( + array: ArrayView<'_, Extension>, + dtype: &DType, + ) -> vortex_error::VortexResult> { if !array.dtype().eq_ignore_nullability(dtype) { return Ok(None); } diff --git a/vortex-array/src/arrays/extension/compute/compare.rs b/vortex-array/src/arrays/extension/compute/compare.rs index 2e097b4f60a..60fc1430b76 100644 --- a/vortex-array/src/arrays/extension/compute/compare.rs +++ b/vortex-array/src/arrays/extension/compute/compare.rs @@ -4,12 +4,11 @@ use vortex_error::VortexResult; use crate::ArrayRef; -use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::ConstantArray; use crate::arrays::Extension; -use crate::arrays::ExtensionArray; use crate::builtins::ArrayBuiltins; use crate::scalar_fn::fns::binary::CompareKernel; use crate::scalar_fn::fns::operators::CompareOperator; @@ -17,7 +16,7 @@ use crate::scalar_fn::fns::operators::Operator; impl CompareKernel for Extension { fn compare( - lhs: &ExtensionArray, + lhs: ArrayView<'_, Extension>, rhs: &ArrayRef, operator: CompareOperator, _ctx: &mut ExecutionCtx, @@ -27,7 +26,7 @@ impl CompareKernel for Extension { let storage_scalar = const_ext.as_extension().to_storage_scalar(); return lhs .storage_array() - .to_array() + .clone() .binary( ConstantArray::new(storage_scalar, lhs.len()).into_array(), Operator::from(operator), @@ -39,8 +38,8 @@ impl CompareKernel for Extension { if let Some(rhs_ext) = rhs.as_opt::() { return lhs .storage_array() - .to_array() - .binary(rhs_ext.storage_array().to_array(), Operator::from(operator)) + .clone() + .binary(rhs_ext.storage_array().clone(), Operator::from(operator)) .map(Some); } diff --git a/vortex-array/src/arrays/extension/compute/filter.rs b/vortex-array/src/arrays/extension/compute/filter.rs index 3dd03a8a4a0..274c838859a 100644 --- a/vortex-array/src/arrays/extension/compute/filter.rs +++ b/vortex-array/src/arrays/extension/compute/filter.rs @@ -6,12 +6,13 @@ use vortex_mask::Mask; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Extension; use crate::arrays::ExtensionArray; use crate::arrays::filter::FilterReduce; impl FilterReduce for Extension { - fn filter(array: &ExtensionArray, mask: &Mask) -> VortexResult> { + fn filter(array: ArrayView<'_, Extension>, mask: &Mask) -> VortexResult> { Ok(Some( ExtensionArray::new( array.ext_dtype().clone(), diff --git a/vortex-array/src/arrays/extension/compute/mask.rs b/vortex-array/src/arrays/extension/compute/mask.rs index af7770ee0ca..95c70ddb78f 100644 --- a/vortex-array/src/arrays/extension/compute/mask.rs +++ b/vortex-array/src/arrays/extension/compute/mask.rs @@ -5,6 +5,7 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Extension; use crate::arrays::ExtensionArray; use crate::arrays::scalar_fn::ScalarFnArrayExt; @@ -13,7 +14,7 @@ use crate::scalar_fn::fns::mask::Mask as MaskExpr; use crate::scalar_fn::fns::mask::MaskReduce; impl MaskReduce for Extension { - fn mask(array: &ExtensionArray, mask: &ArrayRef) -> VortexResult> { + fn mask(array: ArrayView<'_, Extension>, mask: &ArrayRef) -> VortexResult> { let masked_storage = MaskExpr.try_new_array( array.storage_array().len(), EmptyOptions, diff --git a/vortex-array/src/arrays/extension/compute/rules.rs b/vortex-array/src/arrays/extension/compute/rules.rs index 0703af6414a..50512fa184b 100644 --- a/vortex-array/src/arrays/extension/compute/rules.rs +++ b/vortex-array/src/arrays/extension/compute/rules.rs @@ -5,10 +5,10 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Extension; use crate::arrays::ExtensionArray; use crate::arrays::Filter; -use crate::arrays::FilterArray; use crate::arrays::filter::FilterReduceAdaptor; use crate::arrays::slice::SliceReduceAdaptor; use crate::optimizer::rules::ArrayParentReduceRule; @@ -33,8 +33,8 @@ impl ArrayParentReduceRule for ExtensionFilterPushDownRule { fn reduce_parent( &self, - child: &ExtensionArray, - parent: &FilterArray, + child: ArrayView<'_, Extension>, + parent: ArrayView<'_, Filter>, child_idx: usize, ) -> VortexResult> { debug_assert_eq!(child_idx, 0); @@ -54,7 +54,6 @@ mod tests { use vortex_error::VortexResult; use vortex_mask::Mask; - use crate::DynArray; use crate::IntoArray; use crate::ToCanonical; use crate::arrays::ConstantArray; @@ -218,7 +217,7 @@ mod tests { let const_array = ConstantArray::new(const_scalar, 3).into_array(); let scalar_fn_array = Binary - .try_new_array(3, Operator::Lt, [ext_array.clone(), const_array]) + .try_new_array(3, Operator::Lt, [ext_array, const_array]) .unwrap(); let optimized = scalar_fn_array.optimize().unwrap(); @@ -243,7 +242,7 @@ mod tests { // Both children are extension arrays (not constants) let scalar_fn_array = Binary - .try_new_array(3, Operator::Lt, [ext_array1.clone(), ext_array2]) + .try_new_array(3, Operator::Lt, [ext_array1, ext_array2]) .unwrap(); let optimized = scalar_fn_array.optimize().unwrap(); @@ -266,7 +265,7 @@ mod tests { let const_array = ConstantArray::new(Scalar::from(25i64), 3).into_array(); let scalar_fn_array = Binary - .try_new_array(3, Operator::Lt, [ext_array.clone(), const_array]) + .try_new_array(3, Operator::Lt, [ext_array, const_array]) .unwrap(); let optimized = scalar_fn_array.optimize().unwrap(); diff --git a/vortex-array/src/arrays/extension/compute/slice.rs b/vortex-array/src/arrays/extension/compute/slice.rs index 96d00e332bd..d0ac8edddf6 100644 --- a/vortex-array/src/arrays/extension/compute/slice.rs +++ b/vortex-array/src/arrays/extension/compute/slice.rs @@ -7,12 +7,13 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Extension; use crate::arrays::ExtensionArray; use crate::arrays::slice::SliceReduce; impl SliceReduce for Extension { - fn slice(array: &Self::Array, range: Range) -> VortexResult> { + fn slice(array: ArrayView<'_, Self>, range: Range) -> VortexResult> { Ok(Some( ExtensionArray::new( array.ext_dtype().clone(), diff --git a/vortex-array/src/arrays/extension/compute/take.rs b/vortex-array/src/arrays/extension/compute/take.rs index bf8b24c6fe4..49d41c8181d 100644 --- a/vortex-array/src/arrays/extension/compute/take.rs +++ b/vortex-array/src/arrays/extension/compute/take.rs @@ -4,20 +4,20 @@ use vortex_error::VortexResult; use crate::ArrayRef; -use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Extension; use crate::arrays::ExtensionArray; use crate::arrays::dict::TakeExecute; impl TakeExecute for Extension { fn take( - array: &ExtensionArray, + array: ArrayView<'_, Extension>, indices: &ArrayRef, _ctx: &mut ExecutionCtx, ) -> VortexResult> { - let taken_storage = array.storage_array().take(indices.to_array())?; + let taken_storage = array.storage_array().take(indices.clone())?; Ok(Some( ExtensionArray::new( array diff --git a/vortex-array/src/arrays/extension/mod.rs b/vortex-array/src/arrays/extension/mod.rs index 703871bf311..3e4502cc522 100644 --- a/vortex-array/src/arrays/extension/mod.rs +++ b/vortex-array/src/arrays/extension/mod.rs @@ -2,7 +2,8 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors mod array; -pub use array::ExtensionArray; +pub use array::ExtensionData; +pub use vtable::ExtensionArray; pub(crate) mod compute; diff --git a/vortex-array/src/arrays/extension/vtable/mod.rs b/vortex-array/src/arrays/extension/vtable/mod.rs index 15fa12aae2e..7eb48c10228 100644 --- a/vortex-array/src/arrays/extension/vtable/mod.rs +++ b/vortex-array/src/arrays/extension/vtable/mod.rs @@ -5,9 +5,6 @@ mod kernel; mod operations; mod validity; -use std::hash::Hash; -use std::sync::Arc; - use kernel::PARENT_KERNELS; use vortex_error::VortexResult; use vortex_error::vortex_bail; @@ -20,7 +17,12 @@ use crate::EmptyMetadata; use crate::ExecutionCtx; use crate::ExecutionResult; use crate::Precision; -use crate::arrays::ExtensionArray; +use crate::array::Array; +use crate::array::ArrayId; +use crate::array::ArrayView; +use crate::array::VTable; +use crate::array::ValidityVTableFromChild; +use crate::arrays::extension::ExtensionData; use crate::arrays::extension::array::NUM_SLOTS; use crate::arrays::extension::array::SLOT_NAMES; use crate::arrays::extension::compute::rules::PARENT_RULES; @@ -29,23 +31,19 @@ use crate::dtype::DType; use crate::hash::ArrayEq; use crate::hash::ArrayHash; use crate::serde::ArrayChildren; -use crate::stats::StatsSetRef; +use crate::stats::ArrayStats; use crate::vtable; -use crate::vtable::Array; -use crate::vtable::ArrayId; -use crate::vtable::VTable; -use crate::vtable::ValidityVTableFromChild; -vtable!(Extension); +vtable!(Extension, Extension, ExtensionData); impl VTable for Extension { - type Array = ExtensionArray; + type ArrayData = ExtensionData; type Metadata = EmptyMetadata; type OperationsVTable = Self; type ValidityVTable = ValidityVTableFromChild; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &Self::ArrayData) -> &Self { &Extension } @@ -53,55 +51,53 @@ impl VTable for Extension { Self::ID } - fn len(array: &ExtensionArray) -> usize { + fn len(array: &ExtensionData) -> usize { array.storage_array().len() } - fn dtype(array: &ExtensionArray) -> &DType { + fn dtype(array: &ExtensionData) -> &DType { &array.dtype } - fn stats(array: &ExtensionArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &ExtensionData) -> &ArrayStats { + &array.stats_set } fn array_hash( - array: &ExtensionArray, + array: &ExtensionData, state: &mut H, precision: Precision, ) { - array.dtype.hash(state); array.storage_array().array_hash(state, precision); } - fn array_eq(array: &ExtensionArray, other: &ExtensionArray, precision: Precision) -> bool { - array.dtype == other.dtype - && array - .storage_array() - .array_eq(other.storage_array(), precision) + fn array_eq(array: &ExtensionData, other: &ExtensionData, precision: Precision) -> bool { + array + .storage_array() + .array_eq(other.storage_array(), precision) } - fn nbuffers(_array: &ExtensionArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 0 } - fn buffer(_array: &ExtensionArray, idx: usize) -> BufferHandle { + fn buffer(_array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { vortex_panic!("ExtensionArray buffer index {idx} out of bounds") } - fn buffer_name(_array: &ExtensionArray, _idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, _idx: usize) -> Option { None } - fn slots(array: &ExtensionArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &ExtensionArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn metadata(_array: &ExtensionArray) -> VortexResult { + fn metadata(_array: ArrayView<'_, Self>) -> VortexResult { Ok(EmptyMetadata) } @@ -125,7 +121,7 @@ impl VTable for Extension { _metadata: &Self::Metadata, _buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { let DType::Extension(ext_dtype) = dtype else { vortex_bail!("Not an extension DType"); }; @@ -133,10 +129,10 @@ impl VTable for Extension { vortex_bail!("Expected 1 child, got {}", children.len()); } let storage = children.get(0, ext_dtype.storage_dtype(), len)?; - Ok(ExtensionArray::new(ext_dtype.clone(), storage)) + Ok(ExtensionData::new(ext_dtype.clone(), storage)) } - fn with_slots(array: &mut Self::Array, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "ExtensionArray expects exactly {} slots, got {}", @@ -147,12 +143,12 @@ impl VTable for Extension { Ok(()) } - fn execute(array: Arc>, _ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, _ctx: &mut ExecutionCtx) -> VortexResult { Ok(ExecutionResult::done(array)) } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { @@ -160,7 +156,7 @@ impl VTable for Extension { } fn execute_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, diff --git a/vortex-array/src/arrays/extension/vtable/operations.rs b/vortex-array/src/arrays/extension/vtable/operations.rs index eb5dd056633..d53772a64e9 100644 --- a/vortex-array/src/arrays/extension/vtable/operations.rs +++ b/vortex-array/src/arrays/extension/vtable/operations.rs @@ -3,16 +3,15 @@ use vortex_error::VortexResult; -use crate::DynArray; use crate::ExecutionCtx; +use crate::array::ArrayView; +use crate::array::OperationsVTable; use crate::arrays::Extension; -use crate::arrays::ExtensionArray; use crate::scalar::Scalar; -use crate::vtable::OperationsVTable; impl OperationsVTable for Extension { fn scalar_at( - array: &ExtensionArray, + array: ArrayView<'_, Extension>, index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { diff --git a/vortex-array/src/arrays/extension/vtable/validity.rs b/vortex-array/src/arrays/extension/vtable/validity.rs index 0e1429b6d10..a264f9133aa 100644 --- a/vortex-array/src/arrays/extension/vtable/validity.rs +++ b/vortex-array/src/arrays/extension/vtable/validity.rs @@ -2,12 +2,12 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use crate::ArrayRef; +use crate::array::ValidityChild; use crate::arrays::Extension; -use crate::arrays::ExtensionArray; -use crate::vtable::ValidityChild; +use crate::arrays::extension::ExtensionData; impl ValidityChild for Extension { - fn validity_child(array: &ExtensionArray) -> &ArrayRef { + fn validity_child(array: &ExtensionData) -> &ArrayRef { array.storage_array() } } diff --git a/vortex-array/src/arrays/filter/array.rs b/vortex-array/src/arrays/filter/array.rs index 5cabbf62db7..04f4312ca1f 100644 --- a/vortex-array/src/arrays/filter/array.rs +++ b/vortex-array/src/arrays/filter/array.rs @@ -7,6 +7,9 @@ use vortex_error::vortex_ensure_eq; use vortex_mask::Mask; use crate::ArrayRef; +use crate::array::Array; +use crate::arrays::Filter; +use crate::dtype::DType; use crate::stats::ArrayStats; /// The source array being filtered. @@ -28,8 +31,7 @@ pub struct FilterArrayParts { /// /// The resulting array contains only the elements where the mask is true. #[derive(Clone, Debug)] -pub struct FilterArray { - /// The slots holding child arrays. +pub struct FilterData { pub(super) slots: Vec>, /// The boolean mask selecting which elements to keep. @@ -39,7 +41,7 @@ pub struct FilterArray { pub(super) stats: ArrayStats, } -impl FilterArray { +impl FilterData { pub fn new(array: ArrayRef, mask: Mask) -> Self { Self::try_new(array, mask).vortex_expect("FilterArray construction failed") } @@ -60,6 +62,21 @@ impl FilterArray { }) } + /// Returns the length of this array (number of elements after filtering). + pub fn len(&self) -> usize { + self.mask.true_count() + } + + /// Returns the [`DType`] of this array. + pub fn dtype(&self) -> &DType { + self.child().dtype() + } + + /// Returns `true` if this array is empty. + pub fn is_empty(&self) -> bool { + self.len() == 0 + } + /// The child array being filtered. pub fn child(&self) -> &ArrayRef { self.slots[CHILD_SLOT] @@ -71,7 +88,22 @@ impl FilterArray { pub fn filter_mask(&self) -> &Mask { &self.mask } +} + +impl Array { + /// Creates a new `FilterArray`. + pub fn new(array: ArrayRef, mask: Mask) -> Self { + Array::try_from_data(FilterData::new(array, mask)) + .vortex_expect("FilterData is always valid") + } + + /// Constructs a new `FilterArray`. + pub fn try_new(array: ArrayRef, mask: Mask) -> VortexResult { + Array::try_from_data(FilterData::try_new(array, mask)?) + } +} +impl FilterData { /// Consume the array and return its individual components. pub fn into_parts(mut self) -> FilterArrayParts { FilterArrayParts { diff --git a/vortex-array/src/arrays/filter/execute/fixed_size_list.rs b/vortex-array/src/arrays/filter/execute/fixed_size_list.rs index aede1ae550b..0d50f7b6e6a 100644 --- a/vortex-array/src/arrays/filter/execute/fixed_size_list.rs +++ b/vortex-array/src/arrays/filter/execute/fixed_size_list.rs @@ -10,7 +10,6 @@ use vortex_mask::MaskValues; use crate::arrays::FixedSizeListArray; use crate::arrays::filter::execute::filter_validity; -use crate::vtable::ValidityHelper; /// Density threshold for choosing between indices and slices representation when expanding masks. /// diff --git a/vortex-array/src/arrays/filter/execute/listview.rs b/vortex-array/src/arrays/filter/execute/listview.rs index 9459b710a72..c9c0d7d447e 100644 --- a/vortex-array/src/arrays/filter/execute/listview.rs +++ b/vortex-array/src/arrays/filter/execute/listview.rs @@ -10,7 +10,6 @@ use crate::arrays::ListViewArray; use crate::arrays::filter::execute::filter_validity; use crate::arrays::filter::execute::values_to_mask; use crate::arrays::listview::ListViewRebuildMode; -use crate::vtable::ValidityHelper; // TODO(connor)[ListView]: Make use of this threshold after we start migrating operators. /// The threshold for triggering a rebuild of the [`ListViewArray`]. @@ -182,8 +181,8 @@ mod test { let offsets = buffer![5u32, 2, 8, 0, 1].into_array(); let sizes = buffer![3u32, 2, 2, 2, 4].into_array(); - let listview = ListViewArray::new(elements.clone(), offsets, sizes, Validity::NonNullable) - .into_array(); + let listview = + ListViewArray::new(elements, offsets, sizes, Validity::NonNullable).into_array(); // Filter to keep only 2 lists. let mask = Mask::from_iter([true, false, false, true, false]); @@ -214,8 +213,8 @@ mod test { let offsets = buffer![0u32, 6, 10, 1, 7].into_array(); let sizes = buffer![3u32, 3, 2, 2, 2].into_array(); - let listview = ListViewArray::new(elements.clone(), offsets, sizes, Validity::NonNullable) - .into_array(); + let listview = + ListViewArray::new(elements, offsets, sizes, Validity::NonNullable).into_array(); // Filter to keep lists with gaps and overlaps. let mask = Mask::from_iter([false, true, true, true, false]); @@ -306,8 +305,8 @@ mod test { let offsets = buffer![0u32, 4999, 9995, 2500, 7500].into_array(); let sizes = buffer![5u32, 2, 5, 3, 4].into_array(); - let listview = ListViewArray::new(elements.clone(), offsets, sizes, Validity::NonNullable) - .into_array(); + let listview = + ListViewArray::new(elements, offsets, sizes, Validity::NonNullable).into_array(); // Filter to keep only 2 lists, demonstrating we keep all 10000 elements. let mask = Mask::from_iter([false, true, false, false, true]); diff --git a/vortex-array/src/arrays/filter/execute/mod.rs b/vortex-array/src/arrays/filter/execute/mod.rs index df7098507ed..a27a56906b7 100644 --- a/vortex-array/src/arrays/filter/execute/mod.rs +++ b/vortex-array/src/arrays/filter/execute/mod.rs @@ -16,9 +16,10 @@ use crate::ArrayRef; use crate::Canonical; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::ConstantArray; use crate::arrays::ExtensionArray; -use crate::arrays::FilterArray; +use crate::arrays::Filter; use crate::arrays::NullArray; use crate::arrays::VariantArray; use crate::scalar::Scalar; @@ -49,7 +50,7 @@ fn filter_validity(validity: Validity, mask: &Arc) -> Validity { /// Check for some fast-path execution conditions before calling [`execute_filter`]. pub(super) fn execute_filter_fast_paths( - array: &FilterArray, + array: ArrayView<'_, Filter>, _ctx: &mut ExecutionCtx, ) -> VortexResult> { let true_count = array.mask.true_count(); @@ -66,7 +67,7 @@ pub(super) fn execute_filter_fast_paths( // Also check if the array itself is completely null, in which case we only care about the total // number of nulls, not the values. - if array.validity_mask()?.true_count() == 0 { + if array.array().validity_mask()?.true_count() == 0 { return Ok(Some( ConstantArray::new(Scalar::null(array.dtype().clone()), true_count).into_array(), )); diff --git a/vortex-array/src/arrays/filter/execute/varbinview.rs b/vortex-array/src/arrays/filter/execute/varbinview.rs index 5937d0c737f..b757baa7c77 100644 --- a/vortex-array/src/arrays/filter/execute/varbinview.rs +++ b/vortex-array/src/arrays/filter/execute/varbinview.rs @@ -9,7 +9,6 @@ use vortex_mask::Mask; use vortex_mask::MaskValues; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; use crate::arrays::VarBinView; use crate::arrays::VarBinViewArray; @@ -22,7 +21,7 @@ pub fn filter_varbinview(array: &VarBinViewArray, mask: &Arc) -> Var arrow_filter_fn(&array.clone().into_array(), &values_to_mask(mask)) .vortex_expect("VarBinViewArray is Arrow-compatible and supports arrow_filter_fn") .as_::() - .clone() + .into_owned() } fn arrow_filter_fn(array: &ArrayRef, mask: &Mask) -> vortex_error::VortexResult { @@ -31,7 +30,7 @@ fn arrow_filter_fn(array: &ArrayRef, mask: &Mask) -> vortex_error::VortexResult< Mask::AllTrue(_) | Mask::AllFalse(_) => unreachable!("check in filter invoke"), }; - let array_ref = array.to_array().into_arrow_preferred()?; + let array_ref = array.clone().into_arrow_preferred()?; let mask_array = BooleanArray::new(values.bit_buffer().clone().into(), None); let filtered = arrow_select::filter::filter(array_ref.as_ref(), &mask_array)?; diff --git a/vortex-array/src/arrays/filter/kernel.rs b/vortex-array/src/arrays/filter/kernel.rs index 6b50ab98559..ef8f8671eda 100644 --- a/vortex-array/src/arrays/filter/kernel.rs +++ b/vortex-array/src/arrays/filter/kernel.rs @@ -15,12 +15,12 @@ use crate::ArrayRef; use crate::Canonical; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; +use crate::array::VTable; use crate::arrays::Filter; -use crate::arrays::FilterArray; use crate::kernel::ExecuteParentKernel; use crate::matcher::Matcher; use crate::optimizer::rules::ArrayParentReduceRule; -use crate::vtable::VTable; pub trait FilterReduce: VTable { /// Filter an array with the provided mask without reading buffers. @@ -35,7 +35,7 @@ pub trait FilterReduce: VTable { /// /// Additionally, the mask is guaranteed to be a `Mask::Values` variant (i.e., neither /// `Mask::AllTrue` nor `Mask::AllFalse`). - fn filter(array: &Self::Array, mask: &Mask) -> VortexResult>; + fn filter(array: ArrayView<'_, Self>, mask: &Mask) -> VortexResult>; } pub trait FilterKernel: VTable { @@ -51,7 +51,7 @@ pub trait FilterKernel: VTable { /// Additionally, the mask is guaranteed to be a `Mask::Values` variant (i.e., neither /// `Mask::AllTrue` nor `Mask::AllFalse`). fn filter( - array: &Self::Array, + array: ArrayView<'_, Self>, mask: &Mask, ctx: &mut ExecutionCtx, ) -> VortexResult>; @@ -61,7 +61,7 @@ pub trait FilterKernel: VTable { /// /// Returns `Some(result)` if the precondition short-circuits the filter operation, /// or `None` if the filter should proceed normally. -fn precondition(array: &V::Array, mask: &Mask) -> Option { +fn precondition(array: ArrayView<'_, V>, mask: &Mask) -> Option { let true_count = mask.true_count(); // Fast-path for empty mask (all false). @@ -71,7 +71,7 @@ fn precondition(array: &V::Array, mask: &Mask) -> Option { // Fast-path for full mask (all true). if true_count == mask.len() { - return Some(array.to_array()); + return Some(array.array().clone()); } None @@ -89,8 +89,8 @@ where fn reduce_parent( &self, - array: &V::Array, - parent: &FilterArray, + array: ArrayView<'_, V>, + parent: ArrayView<'_, Filter>, child_idx: usize, ) -> VortexResult> { assert_eq!(child_idx, 0); @@ -113,7 +113,7 @@ where fn execute_parent( &self, - array: &V::Array, + array: ArrayView<'_, V>, parent: ::Match<'_>, child_idx: usize, ctx: &mut ExecutionCtx, diff --git a/vortex-array/src/arrays/filter/mod.rs b/vortex-array/src/arrays/filter/mod.rs index 33729d44f73..d10cae11e41 100644 --- a/vortex-array/src/arrays/filter/mod.rs +++ b/vortex-array/src/arrays/filter/mod.rs @@ -2,8 +2,9 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors mod array; -pub use array::FilterArray; pub use array::FilterArrayParts; +pub use array::FilterData; +pub use vtable::FilterArray; mod execute; diff --git a/vortex-array/src/arrays/filter/rules.rs b/vortex-array/src/arrays/filter/rules.rs index d54f0c0de8f..402a7b14585 100644 --- a/vortex-array/src/arrays/filter/rules.rs +++ b/vortex-array/src/arrays/filter/rules.rs @@ -6,10 +6,9 @@ use vortex_mask::Mask; use crate::ArrayRef; use crate::Canonical; -use crate::DynArray; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Filter; -use crate::arrays::FilterArray; use crate::arrays::Struct; use crate::arrays::StructArray; use crate::arrays::struct_::StructArrayParts; @@ -34,14 +33,14 @@ impl ArrayParentReduceRule for FilterFilterRule { fn reduce_parent( &self, - child: &FilterArray, - parent: &FilterArray, + child: ArrayView<'_, Filter>, + parent: ArrayView<'_, Filter>, _child_idx: usize, ) -> VortexResult> { let combined_mask = child.mask.intersect_by_rank(&parent.mask); let new_array = child.child().filter(combined_mask)?; - Ok(Some(new_array.into_array())) + Ok(Some(new_array)) } } @@ -49,7 +48,7 @@ impl ArrayParentReduceRule for FilterFilterRule { struct TrivialFilterRule; impl ArrayReduceRule for TrivialFilterRule { - fn reduce(&self, array: &FilterArray) -> VortexResult> { + fn reduce(&self, array: ArrayView<'_, Filter>) -> VortexResult> { match array.filter_mask() { Mask::AllTrue(_) => Ok(Some(array.child().clone())), Mask::AllFalse(_) => Ok(Some(Canonical::empty(array.dtype()).into_array())), @@ -63,7 +62,7 @@ impl ArrayReduceRule for TrivialFilterRule { struct FilterStructRule; impl ArrayReduceRule for FilterStructRule { - fn reduce(&self, array: &FilterArray) -> VortexResult> { + fn reduce(&self, array: ArrayView<'_, Filter>) -> VortexResult> { let mask = array.filter_mask(); let Some(struct_array) = array.child().as_opt::() else { return Ok(None); @@ -75,7 +74,7 @@ impl ArrayReduceRule for FilterStructRule { struct_fields, validity, .. - } = struct_array.clone().into_parts(); + } = struct_array.into_owned().into_data().into_parts(); let filtered_validity = validity.filter(mask)?; diff --git a/vortex-array/src/arrays/filter/vtable.rs b/vortex-array/src/arrays/filter/vtable.rs index 618908b7301..42448d7ddd9 100644 --- a/vortex-array/src/arrays/filter/vtable.rs +++ b/vortex-array/src/arrays/filter/vtable.rs @@ -4,7 +4,6 @@ use std::fmt::Debug; use std::fmt::Formatter; use std::hash::Hasher; -use std::sync::Arc; use vortex_error::VortexResult; use vortex_error::vortex_bail; @@ -16,10 +15,15 @@ use vortex_session::VortexSession; use crate::ArrayEq; use crate::ArrayHash; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; use crate::Precision; -use crate::arrays::filter::array::FilterArray; +use crate::array::Array; +use crate::array::ArrayId; +use crate::array::ArrayView; +use crate::array::OperationsVTable; +use crate::array::VTable; +use crate::array::ValidityVTable; +use crate::arrays::filter::array::FilterData; use crate::arrays::filter::array::NUM_SLOTS; use crate::arrays::filter::array::SLOT_NAMES; use crate::arrays::filter::execute::execute_filter; @@ -32,16 +36,11 @@ use crate::executor::ExecutionCtx; use crate::executor::ExecutionResult; use crate::scalar::Scalar; use crate::serde::ArrayChildren; -use crate::stats::StatsSetRef; +use crate::stats::ArrayStats; use crate::validity::Validity; use crate::vtable; -use crate::vtable::Array; -use crate::vtable::ArrayId; -use crate::vtable::OperationsVTable; -use crate::vtable::VTable; -use crate::vtable::ValidityVTable; -vtable!(Filter); +vtable!(Filter, Filter, FilterData); #[derive(Clone, Debug)] pub struct Filter; @@ -51,11 +50,11 @@ impl Filter { } impl VTable for Filter { - type Array = FilterArray; + type ArrayData = FilterData; type Metadata = FilterMetadata; type OperationsVTable = Self; type ValidityVTable = Self; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &FilterData) -> &Self { &Filter } @@ -63,49 +62,49 @@ impl VTable for Filter { Self::ID } - fn len(array: &FilterArray) -> usize { + fn len(array: &FilterData) -> usize { array.mask.true_count() } - fn dtype(array: &FilterArray) -> &DType { + fn dtype(array: &FilterData) -> &DType { array.child().dtype() } - fn stats(array: &FilterArray) -> StatsSetRef<'_> { - array.stats.to_ref(array.as_ref()) + fn stats(array: &FilterData) -> &ArrayStats { + &array.stats } - fn array_hash(array: &FilterArray, state: &mut H, precision: Precision) { + fn array_hash(array: &FilterData, state: &mut H, precision: Precision) { array.child().array_hash(state, precision); array.mask.array_hash(state, precision); } - fn array_eq(array: &FilterArray, other: &FilterArray, precision: Precision) -> bool { + fn array_eq(array: &FilterData, other: &FilterData, precision: Precision) -> bool { array.child().array_eq(other.child(), precision) && array.mask.array_eq(&other.mask, precision) } - fn nbuffers(_array: &Self::Array) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 0 } - fn buffer(_array: &Self::Array, _idx: usize) -> BufferHandle { + fn buffer(_array: ArrayView<'_, Self>, _idx: usize) -> BufferHandle { vortex_panic!("FilterArray has no buffers") } - fn buffer_name(_array: &Self::Array, _idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, _idx: usize) -> Option { None } - fn slots(array: &Self::Array) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &Self::Array, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn metadata(array: &Self::Array) -> VortexResult { + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { Ok(FilterMetadata(array.mask.clone())) } @@ -130,13 +129,13 @@ impl VTable for Filter { metadata: &FilterMetadata, _buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { assert_eq!(len, metadata.0.true_count()); let child = children.get(0, dtype, metadata.0.len())?; - FilterArray::try_new(child, metadata.0.clone()) + FilterData::try_new(child, metadata.0.clone()) } - fn with_slots(array: &mut Self::Array, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "FilterArray expects exactly {} slots, got {}", @@ -147,8 +146,8 @@ impl VTable for Filter { Ok(()) } - fn execute(array: Arc>, ctx: &mut ExecutionCtx) -> VortexResult { - if let Some(canonical) = execute_filter_fast_paths(&array, ctx)? { + fn execute(array: Array, ctx: &mut ExecutionCtx) -> VortexResult { + if let Some(canonical) = execute_filter_fast_paths(array.as_view(), ctx)? { return Ok(ExecutionResult::done(canonical)); } let Mask::Values(mask_values) = &array.mask else { @@ -163,20 +162,20 @@ impl VTable for Filter { } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { PARENT_RULES.evaluate(array, parent, child_idx) } - fn reduce(array: &Array) -> VortexResult> { + fn reduce(array: ArrayView<'_, Self>) -> VortexResult> { RULES.evaluate(array) } } impl OperationsVTable for Filter { fn scalar_at( - array: &FilterArray, + array: ArrayView<'_, Filter>, index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { @@ -186,7 +185,7 @@ impl OperationsVTable for Filter { } impl ValidityVTable for Filter { - fn validity(array: &FilterArray) -> VortexResult { + fn validity(array: ArrayView<'_, Filter>) -> VortexResult { array.child().validity()?.filter(&array.mask) } } diff --git a/vortex-array/src/arrays/fixed_size_list/array.rs b/vortex-array/src/arrays/fixed_size_list/array.rs index ff3a8d73db3..9d5dda32f1b 100644 --- a/vortex-array/src/arrays/fixed_size_list/array.rs +++ b/vortex-array/src/arrays/fixed_size_list/array.rs @@ -8,11 +8,13 @@ use vortex_error::VortexResult; use vortex_error::vortex_ensure; use crate::ArrayRef; -use crate::DynArray; +use crate::array::Array; +use crate::array::child_to_validity; +use crate::array::validity_to_child; +use crate::arrays::FixedSizeList; use crate::dtype::DType; use crate::stats::ArrayStats; use crate::validity::Validity; -use crate::vtable::validity_to_child; /// The `elements` data array, where each fixed-size list scalar is a _slice_ of the `elements` /// array, and each inner list element is a _scalar_ of the `elements` array. @@ -77,7 +79,7 @@ pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["elements", "validity"]; /// # } /// ``` #[derive(Clone, Debug)] -pub struct FixedSizeListArray { +pub struct FixedSizeListData { /// The [`DType`] of the fixed-size list. /// /// This type **must** be the variant [`DType::FixedSizeList`]. @@ -91,13 +93,6 @@ pub struct FixedSizeListArray { /// We store the size of each fixed-size list in the array as a field for convenience. list_size: u32, - /// The validity / null map of the array. - /// - /// Note that this null map refers to which fixed-size list scalars are null, **not** which - /// sub-elements of fixed-size list scalars are null. The `elements` array will track individual - /// value nullability. - pub(super) validity: Validity, - /// The length of the array. /// /// Note that this is different from the size of each fixed-size list scalar (`list_size`). @@ -111,13 +106,13 @@ pub struct FixedSizeListArray { pub(super) stats_set: ArrayStats, } -impl FixedSizeListArray { - /// Creates a new [`FixedSizeListArray`]. +impl FixedSizeListData { + /// Creates a new `FixedSizeListArray`. /// /// # Panics /// /// Panics if the provided components do not satisfy the invariants documented - /// in [`FixedSizeListArray::new_unchecked`]. + /// in `FixedSizeListArray::new_unchecked`. pub fn new(elements: ArrayRef, list_size: u32, validity: Validity, len: usize) -> Self { Self::try_new(elements, list_size, validity, len) .vortex_expect("FixedSizeListArray construction failed") @@ -125,12 +120,12 @@ impl FixedSizeListArray { /// Constructs a new `FixedSizeListArray`. /// - /// See [`FixedSizeListArray::new_unchecked`] for more information. + /// See `FixedSizeListArray::new_unchecked` for more information. /// /// # Errors /// /// Returns an error if the provided components do not satisfy the invariants documented - /// in [`FixedSizeListArray::new_unchecked`]. + /// in `FixedSizeListArray::new_unchecked`. pub fn try_new( elements: ArrayRef, list_size: u32, @@ -143,7 +138,7 @@ impl FixedSizeListArray { Ok(unsafe { Self::new_unchecked(elements, list_size, validity, len) }) } - /// Creates a new [`FixedSizeListArray`] without validation from these components: + /// Creates a new `FixedSizeListArray` without validation from these components: /// /// * `elements` is the data array where each fixed-size list is a slice. /// * `list_size` is the fixed number of elements in each list. @@ -176,25 +171,25 @@ impl FixedSizeListArray { dtype: DType::FixedSizeList(Arc::new(elements.dtype().clone()), list_size, nullability), slots: vec![Some(elements), validity_slot], list_size, - validity, len, stats_set: Default::default(), } } pub fn into_parts(mut self) -> (ArrayRef, Validity, DType) { + let validity = self.validity(); ( self.slots[ELEMENTS_SLOT] .take() .vortex_expect("FixedSizeListArray elements slot"), - self.validity, + validity, self.dtype, ) } - /// Validates the components that would be used to create a [`FixedSizeListArray`]. + /// Validates the components that would be used to create a `FixedSizeListArray`. /// - /// This function checks all the invariants required by [`FixedSizeListArray::new_unchecked`]. + /// This function checks all the invariants required by `FixedSizeListArray::new_unchecked`. pub fn validate( elements: &ArrayRef, len: usize, @@ -228,6 +223,32 @@ impl FixedSizeListArray { Ok(()) } + /// Returns the dtype of the array. + pub fn dtype(&self) -> &DType { + &self.dtype + } + + /// Returns the length of the array. + pub fn len(&self) -> usize { + self.len + } + + /// Returns `true` if the array is empty. + pub fn is_empty(&self) -> bool { + self.len() == 0 + } + + /// Returns the validity of the array. + #[allow(clippy::same_name_method)] + pub fn validity(&self) -> Validity { + child_to_validity(&self.slots[VALIDITY_SLOT], self.dtype.nullability()) + } + + /// Returns the validity as a [`Mask`](vortex_mask::Mask). + pub fn validity_mask(&self) -> vortex_mask::Mask { + self.validity().to_mask(self.len()) + } + /// Returns the elements array. pub fn elements(&self) -> &ArrayRef { self.slots[ELEMENTS_SLOT] @@ -239,12 +260,46 @@ impl FixedSizeListArray { pub const fn list_size(&self) -> u32 { self.list_size } +} + +impl Array { + /// Creates a new `FixedSizeListArray`. + pub fn new(elements: ArrayRef, list_size: u32, validity: Validity, len: usize) -> Self { + Array::try_from_data(FixedSizeListData::new(elements, list_size, validity, len)) + .vortex_expect("FixedSizeListData is always valid") + } + + /// Constructs a new `FixedSizeListArray`. + pub fn try_new( + elements: ArrayRef, + list_size: u32, + validity: Validity, + len: usize, + ) -> VortexResult { + Array::try_from_data(FixedSizeListData::try_new( + elements, list_size, validity, len, + )?) + } - /// Returns the elements of the fixed-size list scalar at the given index of the list array. + /// Creates a new `FixedSizeListArray` without validation. /// - /// # Errors + /// # Safety /// - /// Returns an error if the index is out of bounds or the slice operation fails. + /// See [`FixedSizeListData::new_unchecked`]. + pub unsafe fn new_unchecked( + elements: ArrayRef, + list_size: u32, + validity: Validity, + len: usize, + ) -> Self { + Array::try_from_data(unsafe { + FixedSizeListData::new_unchecked(elements, list_size, validity, len) + }) + .vortex_expect("FixedSizeListData is always valid") + } +} + +impl FixedSizeListData { pub fn fixed_size_list_elements_at(&self, index: usize) -> VortexResult { debug_assert!( index < self.len, @@ -252,7 +307,7 @@ impl FixedSizeListArray { index, self.len, ); - debug_assert!(self.validity.is_valid(index).unwrap_or(false)); + debug_assert!(self.validity().is_valid(index).unwrap_or(false)); let start = self.list_size as usize * index; let end = self.list_size as usize * (index + 1); diff --git a/vortex-array/src/arrays/fixed_size_list/compute/cast.rs b/vortex-array/src/arrays/fixed_size_list/compute/cast.rs index 1fce99ad918..9f006288edf 100644 --- a/vortex-array/src/arrays/fixed_size_list/compute/cast.rs +++ b/vortex-array/src/arrays/fixed_size_list/compute/cast.rs @@ -5,19 +5,19 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::FixedSizeList; use crate::arrays::FixedSizeListArray; use crate::builtins::ArrayBuiltins; use crate::dtype::DType; use crate::scalar_fn::fns::cast::CastReduce; -use crate::vtable::ValidityHelper; /// Cast implementation for [`FixedSizeListArray`]. /// /// Recursively casts the inner elements array to the target element type while preserving the list /// structure. impl CastReduce for FixedSizeList { - fn cast(array: &FixedSizeListArray, dtype: &DType) -> VortexResult> { + fn cast(array: ArrayView<'_, FixedSizeList>, dtype: &DType) -> VortexResult> { let Some(target_element_type) = dtype.as_fixed_size_list_element_opt() else { return Ok(None); }; diff --git a/vortex-array/src/arrays/fixed_size_list/compute/mask.rs b/vortex-array/src/arrays/fixed_size_list/compute/mask.rs index bc4f44f75de..204d5192670 100644 --- a/vortex-array/src/arrays/fixed_size_list/compute/mask.rs +++ b/vortex-array/src/arrays/fixed_size_list/compute/mask.rs @@ -5,14 +5,17 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::FixedSizeList; use crate::arrays::FixedSizeListArray; use crate::scalar_fn::fns::mask::MaskReduce; use crate::validity::Validity; -use crate::vtable::ValidityHelper; impl MaskReduce for FixedSizeList { - fn mask(array: &FixedSizeListArray, mask: &ArrayRef) -> VortexResult> { + fn mask( + array: ArrayView<'_, FixedSizeList>, + mask: &ArrayRef, + ) -> VortexResult> { // SAFETY: masking the validity does not affect the invariants Ok(Some( unsafe { diff --git a/vortex-array/src/arrays/fixed_size_list/compute/slice.rs b/vortex-array/src/arrays/fixed_size_list/compute/slice.rs index 9db5d8a7c08..4bbbc5f7fc3 100644 --- a/vortex-array/src/arrays/fixed_size_list/compute/slice.rs +++ b/vortex-array/src/arrays/fixed_size_list/compute/slice.rs @@ -7,13 +7,13 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::FixedSizeList; use crate::arrays::FixedSizeListArray; use crate::arrays::slice::SliceReduce; -use crate::vtable::ValidityHelper; impl SliceReduce for FixedSizeList { - fn slice(array: &Self::Array, range: Range) -> VortexResult> { + fn slice(array: ArrayView<'_, Self>, range: Range) -> VortexResult> { let new_len = range.len(); let list_size = array.list_size() as usize; diff --git a/vortex-array/src/arrays/fixed_size_list/compute/take.rs b/vortex-array/src/arrays/fixed_size_list/compute/take.rs index b38d10fc2bb..2d1a8c9a37b 100644 --- a/vortex-array/src/arrays/fixed_size_list/compute/take.rs +++ b/vortex-array/src/arrays/fixed_size_list/compute/take.rs @@ -8,10 +8,11 @@ use vortex_error::VortexResult; use vortex_error::vortex_panic; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::FixedSizeList; use crate::arrays::FixedSizeListArray; +use crate::arrays::Primitive; use crate::arrays::PrimitiveArray; use crate::arrays::dict::TakeExecute; use crate::dtype::IntegerPType; @@ -19,7 +20,6 @@ use crate::executor::ExecutionCtx; use crate::match_each_integer_ptype; use crate::match_smallest_offset_type; use crate::validity::Validity; -use crate::vtable::ValidityHelper; /// Take implementation for [`FixedSizeListArray`]. /// @@ -29,7 +29,7 @@ use crate::vtable::ValidityHelper; impl TakeExecute for FixedSizeList { #[expect(clippy::cognitive_complexity)] fn take( - array: &FixedSizeListArray, + array: ArrayView<'_, FixedSizeList>, indices: &ArrayRef, ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -45,13 +45,13 @@ impl TakeExecute for FixedSizeList { /// Dispatches to the appropriate take implementation based on list size and nullability. fn take_with_indices( - array: &FixedSizeListArray, + array: ArrayView<'_, FixedSizeList>, indices: &ArrayRef, ctx: &mut ExecutionCtx, ) -> VortexResult { let list_size = array.list_size() as usize; - let indices_array = indices.to_array().execute::(ctx)?; + let indices_array = indices.clone().execute::(ctx)?; // Make sure to handle degenerate case where lists have size 0 (these can take fast paths). if list_size == 0 { @@ -79,17 +79,19 @@ fn take_with_indices( } else { // The result's nullability is the union of the input nullabilities. if array.dtype().is_nullable() || indices_array.dtype().is_nullable() { - take_nullable_fsl::(array, &indices_array) + let indices_array = indices_array.as_view(); + take_nullable_fsl::(array, indices_array) } else { - take_non_nullable_fsl::(array, &indices_array) + let indices_array = indices_array.as_view(); + take_non_nullable_fsl::(array, indices_array) } } } /// Takes from an array when both the array and indices are non-nullable. fn take_non_nullable_fsl( - array: &FixedSizeListArray, - indices_array: &PrimitiveArray, + array: ArrayView<'_, FixedSizeList>, + indices_array: ArrayView<'_, Primitive>, ) -> VortexResult { let list_size = array.list_size() as usize; let indices: &[I] = indices_array.as_slice::(); @@ -137,15 +139,15 @@ fn take_non_nullable_fsl( /// Takes from an array when either the array or indices are nullable. fn take_nullable_fsl( - array: &FixedSizeListArray, - indices_array: &PrimitiveArray, + array: ArrayView<'_, FixedSizeList>, + indices_array: ArrayView<'_, Primitive>, ) -> VortexResult { let list_size = array.list_size() as usize; let indices: &[I] = indices_array.as_slice::(); let new_len = indices.len(); - let array_validity = array.validity_mask()?; - let indices_validity = indices_array.validity_mask()?; + let array_validity = array.validity_mask(); + let indices_validity = indices_array.validity_mask(); // We must use placeholder zeros for null lists to maintain the array length without // propagating nullability to the element array's take operation. diff --git a/vortex-array/src/arrays/fixed_size_list/mod.rs b/vortex-array/src/arrays/fixed_size_list/mod.rs index 3df8099d24c..875ee8ba393 100644 --- a/vortex-array/src/arrays/fixed_size_list/mod.rs +++ b/vortex-array/src/arrays/fixed_size_list/mod.rs @@ -2,7 +2,8 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors mod array; -pub use array::FixedSizeListArray; +pub use array::FixedSizeListData; +pub use vtable::FixedSizeListArray; pub(crate) mod compute; diff --git a/vortex-array/src/arrays/fixed_size_list/tests/basic.rs b/vortex-array/src/arrays/fixed_size_list/tests/basic.rs index e3cdc9b2789..6e465477233 100644 --- a/vortex-array/src/arrays/fixed_size_list/tests/basic.rs +++ b/vortex-array/src/arrays/fixed_size_list/tests/basic.rs @@ -5,7 +5,6 @@ use std::sync::Arc; use vortex_buffer::buffer; -use crate::DynArray; use crate::IntoArray; use crate::arrays::FixedSizeListArray; use crate::dtype::DType; diff --git a/vortex-array/src/arrays/fixed_size_list/tests/degenerate.rs b/vortex-array/src/arrays/fixed_size_list/tests/degenerate.rs index d1b08fb0d04..3f2fb51dca2 100644 --- a/vortex-array/src/arrays/fixed_size_list/tests/degenerate.rs +++ b/vortex-array/src/arrays/fixed_size_list/tests/degenerate.rs @@ -5,7 +5,6 @@ use std::sync::Arc; use vortex_buffer::buffer; -use crate::DynArray; use crate::IntoArray; use crate::arrays::FixedSizeListArray; use crate::arrays::PrimitiveArray; diff --git a/vortex-array/src/arrays/fixed_size_list/tests/filter.rs b/vortex-array/src/arrays/fixed_size_list/tests/filter.rs index c58e97bc719..7efa87eedee 100644 --- a/vortex-array/src/arrays/fixed_size_list/tests/filter.rs +++ b/vortex-array/src/arrays/fixed_size_list/tests/filter.rs @@ -7,7 +7,6 @@ use vortex_buffer::buffer; use vortex_mask::Mask; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; use crate::arrays::FixedSizeListArray; use crate::arrays::PrimitiveArray; diff --git a/vortex-array/src/arrays/fixed_size_list/tests/nested.rs b/vortex-array/src/arrays/fixed_size_list/tests/nested.rs index f49cdd7f2b0..37f57180803 100644 --- a/vortex-array/src/arrays/fixed_size_list/tests/nested.rs +++ b/vortex-array/src/arrays/fixed_size_list/tests/nested.rs @@ -5,7 +5,6 @@ use std::sync::Arc; use vortex_buffer::buffer; -use crate::DynArray; use crate::IntoArray; use crate::ToCanonical; use crate::arrays::FixedSizeListArray; diff --git a/vortex-array/src/arrays/fixed_size_list/tests/take.rs b/vortex-array/src/arrays/fixed_size_list/tests/take.rs index f404320ed33..53b959d22a6 100644 --- a/vortex-array/src/arrays/fixed_size_list/tests/take.rs +++ b/vortex-array/src/arrays/fixed_size_list/tests/take.rs @@ -10,7 +10,6 @@ use super::common::create_large_fsl; use super::common::create_nullable_fsl; use super::common::create_single_element_fsl; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; use crate::arrays::FixedSizeListArray; use crate::arrays::PrimitiveArray; @@ -43,7 +42,7 @@ fn test_take_basic_smoke_test() { let fsl = FixedSizeListArray::new(elements.into_array(), 2, Validity::NonNullable, 3); let indices = buffer![2u32, 0, 1].into_array(); - let result = fsl.take(indices.to_array()).unwrap(); + let result = fsl.take(indices).unwrap(); // Expected: [[5,6], [1,2], [3,4]] let expected = FixedSizeListArray::new( @@ -104,7 +103,7 @@ fn test_take_large_list_size() { let fsl = FixedSizeListArray::new(elements, 100, Validity::NonNullable, 3); let indices = buffer![2u16, 0].into_array(); - let result = fsl.take(indices.to_array()).unwrap(); + let result = fsl.take(indices).unwrap(); // Expected: [[200..300], [0..100]] let expected_elems = PrimitiveArray::from_iter((200i32..300).chain(0..100)).into_array(); 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 c8b7030505d..31fa5342185 100644 --- a/vortex-array/src/arrays/fixed_size_list/vtable/mod.rs +++ b/vortex-array/src/arrays/fixed_size_list/vtable/mod.rs @@ -2,7 +2,6 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use std::hash::Hash; -use std::sync::Arc; use vortex_error::VortexResult; use vortex_error::vortex_bail; @@ -15,28 +14,27 @@ use crate::EmptyMetadata; use crate::ExecutionCtx; use crate::ExecutionResult; use crate::Precision; -use crate::arrays::FixedSizeListArray; +use crate::array::Array; +use crate::array::ArrayId; +use crate::array::ArrayView; +use crate::array::VTable; +use crate::arrays::fixed_size_list::FixedSizeListData; use crate::arrays::fixed_size_list::array::NUM_SLOTS; use crate::arrays::fixed_size_list::array::SLOT_NAMES; -use crate::arrays::fixed_size_list::array::VALIDITY_SLOT; use crate::arrays::fixed_size_list::compute::rules::PARENT_RULES; use crate::buffer::BufferHandle; use crate::dtype::DType; use crate::hash::ArrayEq; use crate::hash::ArrayHash; use crate::serde::ArrayChildren; -use crate::stats::StatsSetRef; +use crate::stats::ArrayStats; use crate::validity::Validity; use crate::vtable; -use crate::vtable::Array; -use crate::vtable::ArrayId; -use crate::vtable::VTable; -use crate::vtable::ValidityVTableFromValidityHelper; mod kernel; mod operations; mod validity; -vtable!(FixedSizeList); +vtable!(FixedSizeList, FixedSizeList, FixedSizeListData); #[derive(Clone, Debug)] pub struct FixedSizeList; @@ -46,12 +44,12 @@ impl FixedSizeList { } impl VTable for FixedSizeList { - type Array = FixedSizeListArray; + type ArrayData = FixedSizeListData; type Metadata = EmptyMetadata; type OperationsVTable = Self; - type ValidityVTable = ValidityVTableFromValidityHelper; - fn vtable(_array: &Self::Array) -> &Self { + type ValidityVTable = Self; + fn vtable(_array: &FixedSizeListData) -> &Self { &FixedSizeList } @@ -59,56 +57,52 @@ impl VTable for FixedSizeList { Self::ID } - fn len(array: &FixedSizeListArray) -> usize { + fn len(array: &FixedSizeListData) -> usize { array.len } - fn dtype(array: &FixedSizeListArray) -> &DType { + fn dtype(array: &FixedSizeListData) -> &DType { &array.dtype } - fn stats(array: &FixedSizeListArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &FixedSizeListData) -> &ArrayStats { + &array.stats_set } fn array_hash( - array: &FixedSizeListArray, + array: &FixedSizeListData, state: &mut H, precision: Precision, ) { - array.dtype.hash(state); array.elements().array_hash(state, precision); array.list_size().hash(state); - array.validity.array_hash(state, precision); - array.len.hash(state); + array.validity().array_hash(state, precision); } fn array_eq( - array: &FixedSizeListArray, - other: &FixedSizeListArray, + array: &FixedSizeListData, + other: &FixedSizeListData, precision: Precision, ) -> bool { - array.dtype == other.dtype - && array.elements().array_eq(other.elements(), precision) + array.elements().array_eq(other.elements(), precision) && array.list_size() == other.list_size() - && array.validity.array_eq(&other.validity, precision) - && array.len == other.len + && array.validity().array_eq(&other.validity(), precision) } - fn nbuffers(_array: &FixedSizeListArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 0 } - fn buffer(_array: &FixedSizeListArray, idx: usize) -> BufferHandle { + fn buffer(_array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { vortex_panic!("FixedSizeListArray buffer index {idx} out of bounds") } - fn buffer_name(_array: &FixedSizeListArray, idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, idx: usize) -> Option { vortex_panic!("FixedSizeListArray buffer_name index {idx} out of bounds") } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { @@ -116,7 +110,7 @@ impl VTable for FixedSizeList { } fn execute_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, @@ -124,7 +118,7 @@ impl VTable for FixedSizeList { Self::PARENT_KERNELS.execute(array, parent, child_idx, ctx) } - fn metadata(_array: &FixedSizeListArray) -> VortexResult { + fn metadata(_array: ArrayView<'_, Self>) -> VortexResult { Ok(EmptyMetadata) } @@ -151,7 +145,7 @@ impl VTable for FixedSizeList { _metadata: &Self::Metadata, buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { vortex_ensure!( buffers.is_empty(), "`FixedSizeList::build` expects no buffers" @@ -178,36 +172,29 @@ impl VTable for FixedSizeList { let num_elements = len * (*list_size as usize); let elements = children.get(0, element_dtype.as_ref(), num_elements)?; - FixedSizeListArray::try_new(elements, *list_size, validity, len) + FixedSizeListData::try_new(elements, *list_size, validity, len) } - fn slots(array: &FixedSizeListArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &FixedSizeListArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn with_slots( - array: &mut FixedSizeListArray, - slots: Vec>, - ) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "FixedSizeListArray expects exactly {} slots, got {}", NUM_SLOTS, slots.len() ); - array.validity = match &slots[VALIDITY_SLOT] { - Some(arr) => Validity::Array(arr.clone()), - None => Validity::from(array.dtype.nullability()), - }; array.slots = slots; Ok(()) } - fn execute(array: Arc>, _ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, _ctx: &mut ExecutionCtx) -> VortexResult { Ok(ExecutionResult::done(array)) } } diff --git a/vortex-array/src/arrays/fixed_size_list/vtable/operations.rs b/vortex-array/src/arrays/fixed_size_list/vtable/operations.rs index 9b7a66349bd..10cebb6a786 100644 --- a/vortex-array/src/arrays/fixed_size_list/vtable/operations.rs +++ b/vortex-array/src/arrays/fixed_size_list/vtable/operations.rs @@ -4,14 +4,14 @@ use vortex_error::VortexResult; use crate::ExecutionCtx; +use crate::array::ArrayView; +use crate::array::OperationsVTable; use crate::arrays::FixedSizeList; -use crate::arrays::fixed_size_list::vtable::FixedSizeListArray; use crate::scalar::Scalar; -use crate::vtable::OperationsVTable; impl OperationsVTable for FixedSizeList { fn scalar_at( - array: &FixedSizeListArray, + array: ArrayView<'_, FixedSizeList>, index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { diff --git a/vortex-array/src/arrays/fixed_size_list/vtable/validity.rs b/vortex-array/src/arrays/fixed_size_list/vtable/validity.rs index 75f84728eac..5be93a4cc97 100644 --- a/vortex-array/src/arrays/fixed_size_list/vtable/validity.rs +++ b/vortex-array/src/arrays/fixed_size_list/vtable/validity.rs @@ -1,12 +1,15 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors -use crate::arrays::fixed_size_list::vtable::FixedSizeListArray; +use vortex_error::VortexResult; + +use crate::array::ArrayView; +use crate::array::ValidityVTable; +use crate::arrays::fixed_size_list::vtable::FixedSizeList; use crate::validity::Validity; -use crate::vtable::ValidityHelper; -impl ValidityHelper for FixedSizeListArray { - fn validity(&self) -> Validity { - self.validity.clone() +impl ValidityVTable for FixedSizeList { + fn validity(array: ArrayView<'_, FixedSizeList>) -> VortexResult { + Ok(array.data().validity()) } } diff --git a/vortex-array/src/arrays/list/array.rs b/vortex-array/src/arrays/list/array.rs index c9bed8c7012..2678ab551e2 100644 --- a/vortex-array/src/arrays/list/array.rs +++ b/vortex-array/src/arrays/list/array.rs @@ -11,11 +11,13 @@ use vortex_error::vortex_ensure; use vortex_error::vortex_panic; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; use crate::LEGACY_SESSION; use crate::VortexSessionExecute; use crate::aggregate_fn::fns::min_max::min_max; +use crate::array::Array; +use crate::array::child_to_validity; +use crate::array::validity_to_child; use crate::arrays::ConstantArray; use crate::arrays::List; use crate::arrays::Primitive; @@ -27,7 +29,6 @@ use crate::match_each_native_ptype; use crate::scalar_fn::fns::operators::Operator; use crate::stats::ArrayStats; use crate::validity::Validity; -use crate::vtable::validity_to_child; /// The elements data array containing all list elements concatenated together. pub(super) const ELEMENTS_SLOT: usize = 0; @@ -91,10 +92,9 @@ pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["elements", "offsets", "validi /// assert!(third_list.is_empty()); // [] /// ``` #[derive(Clone, Debug)] -pub struct ListArray { +pub struct ListData { pub(super) dtype: DType, pub(super) slots: Vec>, - pub(super) validity: Validity, pub(super) stats_set: ArrayStats, } @@ -105,25 +105,25 @@ pub struct ListArrayParts { pub validity: Validity, } -impl ListArray { - /// Creates a new [`ListArray`]. +impl ListData { + /// Creates a new `ListArray`. /// /// # Panics /// /// Panics if the provided components do not satisfy the invariants documented - /// in [`ListArray::new_unchecked`]. + /// in `ListArray::new_unchecked`. pub fn new(elements: ArrayRef, offsets: ArrayRef, validity: Validity) -> Self { Self::try_new(elements, offsets, validity).vortex_expect("ListArray new") } /// Constructs a new `ListArray`. /// - /// See [`ListArray::new_unchecked`] for more information. + /// See `ListArray::new_unchecked` for more information. /// /// # Errors /// /// Returns an error if the provided components do not satisfy the invariants documented in - /// [`ListArray::new_unchecked`]. + /// `ListArray::new_unchecked`. pub fn try_new( elements: ArrayRef, offsets: ArrayRef, @@ -135,7 +135,7 @@ impl ListArray { Ok(unsafe { Self::new_unchecked(elements, offsets, validity) }) } - /// Creates a new [`ListArray`] without validation from these components: + /// Creates a new `ListArray` without validation from these components: /// /// * `elements` is a flat array containing all list elements concatenated. /// * `offsets` is an integer array where `offsets[i]` is the start index for list `i`. @@ -162,14 +162,13 @@ impl ListArray { Self { dtype: DType::List(Arc::new(elements.dtype().clone()), validity.nullability()), slots: vec![Some(elements), Some(offsets), validity_slot], - validity, stats_set: Default::default(), } } - /// Validates the components that would be used to create a [`ListArray`]. + /// Validates the components that would be used to create a `ListArray`. /// - /// This function checks all the invariants required by [`ListArray::new_unchecked`]. + /// This function checks all the invariants required by `ListArray::new_unchecked`. pub fn validate( elements: &ArrayRef, offsets: &ArrayRef, @@ -254,6 +253,7 @@ impl ListArray { /// Splits an array into its parts pub fn into_parts(mut self) -> ListArrayParts { + let validity = self.validity(); ListArrayParts { dtype: self.dtype, elements: self.slots[ELEMENTS_SLOT] @@ -262,10 +262,36 @@ impl ListArray { offsets: self.slots[OFFSETS_SLOT] .take() .vortex_expect("ListArray offsets slot"), - validity: self.validity, + validity, } } + /// Returns the dtype of the array. + pub fn dtype(&self) -> &DType { + &self.dtype + } + + /// Returns the length of the array. + pub fn len(&self) -> usize { + self.offsets().len().saturating_sub(1) + } + + /// Returns `true` if the array is empty. + pub fn is_empty(&self) -> bool { + self.len() == 0 + } + + /// Returns the validity of the array. + #[allow(clippy::same_name_method)] + pub fn validity(&self) -> Validity { + child_to_validity(&self.slots[VALIDITY_SLOT], self.dtype.nullability()) + } + + /// Returns the validity as a [`Mask`](vortex_mask::Mask). + pub fn validity_mask(&self) -> vortex_mask::Mask { + self.validity().to_mask(self.len()) + } + /// Returns the offset at the given index from the list array. /// /// Returns an error if the index is out of bounds or scalar_at fails. @@ -332,9 +358,36 @@ impl ListArray { // where `reset_offsets` is infallible. // Also, `reset_offsets` can be made more efficient by replacing `sub_scalar` with a match on // the offset type and manual subtraction and fast path where `offsets[0] == 0`. +} + +impl Array { + /// Creates a new `ListArray`. + pub fn new(elements: ArrayRef, offsets: ArrayRef, validity: Validity) -> Self { + Array::try_from_data(ListData::new(elements, offsets, validity)) + .vortex_expect("ListData is always valid") + } + + /// Constructs a new `ListArray`. + pub fn try_new( + elements: ArrayRef, + offsets: ArrayRef, + validity: Validity, + ) -> VortexResult { + Array::try_from_data(ListData::try_new(elements, offsets, validity)?) + } + + /// Creates a new `ListArray` without validation. + /// + /// # Safety + /// + /// See [`ListData::new_unchecked`]. + pub unsafe fn new_unchecked(elements: ArrayRef, offsets: ArrayRef, validity: Validity) -> Self { + Array::try_from_data(unsafe { ListData::new_unchecked(elements, offsets, validity) }) + .vortex_expect("ListData is always valid") + } +} - /// Create a copy of this array by adjusting `offsets` to start at `0` and removing elements not - /// referenced by the `offsets`. +impl ListData { pub fn reset_offsets(&self, recurse: bool) -> VortexResult { let mut elements = self.sliced_elements()?; if recurse && elements.is_canonical() { @@ -345,11 +398,11 @@ impl ListArray { let offsets = self.offsets(); let first_offset = offsets.scalar_at(0)?; - let adjusted_offsets = offsets.to_array().binary( + let adjusted_offsets = offsets.clone().binary( ConstantArray::new(first_offset, offsets.len()).into_array(), Operator::Sub, )?; - Self::try_new(elements, adjusted_offsets, self.validity.clone()) + Self::try_new(elements, adjusted_offsets, self.validity()) } } diff --git a/vortex-array/src/arrays/list/compute/cast.rs b/vortex-array/src/arrays/list/compute/cast.rs index e0879c2e906..ff8b5ac3731 100644 --- a/vortex-array/src/arrays/list/compute/cast.rs +++ b/vortex-array/src/arrays/list/compute/cast.rs @@ -5,15 +5,15 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::List; use crate::arrays::ListArray; use crate::builtins::ArrayBuiltins; use crate::dtype::DType; use crate::scalar_fn::fns::cast::CastReduce; -use crate::vtable::ValidityHelper; impl CastReduce for List { - fn cast(array: &ListArray, dtype: &DType) -> VortexResult> { + fn cast(array: ArrayView<'_, List>, dtype: &DType) -> VortexResult> { let Some(target_element_type) = dtype.as_list_element_opt() else { return Ok(None); }; @@ -54,8 +54,8 @@ mod tests { #[test] fn test_cast_list_success() { let list = ListArray::try_new( - buffer![1i32, 2, 3, 4].into_array().to_array(), - buffer![0, 2, 3].into_array().to_array(), + buffer![1i32, 2, 3, 4].into_array(), + buffer![0, 2, 3].into_array(), Validity::NonNullable, ) .unwrap(); @@ -77,8 +77,8 @@ mod tests { #[test] fn test_cast_to_wrong_type() { let list = ListArray::try_new( - buffer![0i32, 2, 3, 4].into_array().to_array(), - buffer![0, 2, 3].into_array().to_array(), + buffer![0i32, 2, 3, 4].into_array(), + buffer![0, 2, 3].into_array(), Validity::NonNullable, ) .unwrap(); @@ -99,8 +99,8 @@ mod tests { // Nulls in the list itself let list = ListArray::try_new( - buffer![0i32, 2, 3, 4].into_array().to_array(), - buffer![0, 2, 3].into_array().to_array(), + buffer![0i32, 2, 3, 4].into_array(), + buffer![0, 2, 3].into_array(), Validity::Array(BoolArray::from_iter(vec![false, true]).into_array()), ) .unwrap(); @@ -120,7 +120,7 @@ mod tests { // the elements are executed. let list = ListArray::try_new( PrimitiveArray::from_option_iter([Some(0i32), Some(2), None, None]).into_array(), - buffer![0, 2, 3].into_array().to_array(), + buffer![0, 2, 3].into_array(), Validity::NonNullable, ) .unwrap(); diff --git a/vortex-array/src/arrays/list/compute/filter.rs b/vortex-array/src/arrays/list/compute/filter.rs index e2691c0e82e..f09460cbe54 100644 --- a/vortex-array/src/arrays/list/compute/filter.rs +++ b/vortex-array/src/arrays/list/compute/filter.rs @@ -16,6 +16,7 @@ use crate::ArrayRef; use crate::Canonical; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::ConstantArray; use crate::arrays::List; use crate::arrays::ListArray; @@ -23,7 +24,6 @@ use crate::arrays::filter::FilterKernel; use crate::dtype::IntegerPType; use crate::match_each_integer_ptype; use crate::validity::Validity; -use crate::vtable::ValidityHelper; /// Density threshold for choosing between indices and slices representation when expanding masks. /// @@ -94,7 +94,7 @@ fn process_element_range( impl FilterKernel for List { fn filter( - array: &ListArray, + array: ArrayView<'_, List>, mask: &Mask, ctx: &mut ExecutionCtx, ) -> VortexResult> { diff --git a/vortex-array/src/arrays/list/compute/mask.rs b/vortex-array/src/arrays/list/compute/mask.rs index 565540dd7db..bf8b5b028e8 100644 --- a/vortex-array/src/arrays/list/compute/mask.rs +++ b/vortex-array/src/arrays/list/compute/mask.rs @@ -5,14 +5,14 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::List; use crate::arrays::ListArray; use crate::scalar_fn::fns::mask::MaskReduce; use crate::validity::Validity; -use crate::vtable::ValidityHelper; impl MaskReduce for List { - fn mask(array: &ListArray, mask: &ArrayRef) -> VortexResult> { + fn mask(array: ArrayView<'_, List>, mask: &ArrayRef) -> VortexResult> { ListArray::try_new( array.elements().clone(), array.offsets().clone(), diff --git a/vortex-array/src/arrays/list/compute/slice.rs b/vortex-array/src/arrays/list/compute/slice.rs index 46c571773ef..97707d6eb02 100644 --- a/vortex-array/src/arrays/list/compute/slice.rs +++ b/vortex-array/src/arrays/list/compute/slice.rs @@ -7,13 +7,13 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::List; use crate::arrays::ListArray; use crate::arrays::slice::SliceReduce; -use crate::vtable::ValidityHelper; impl SliceReduce for List { - fn slice(array: &Self::Array, range: Range) -> VortexResult> { + fn slice(array: ArrayView<'_, Self>, range: Range) -> VortexResult> { Ok(Some( ListArray::new( array.elements().clone(), diff --git a/vortex-array/src/arrays/list/compute/take.rs b/vortex-array/src/arrays/list/compute/take.rs index e6094bd4ef3..cb609164e35 100644 --- a/vortex-array/src/arrays/list/compute/take.rs +++ b/vortex-array/src/arrays/list/compute/take.rs @@ -5,10 +5,11 @@ use vortex_error::VortexExpect; use vortex_error::VortexResult; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::List; use crate::arrays::ListArray; +use crate::arrays::Primitive; use crate::arrays::PrimitiveArray; use crate::arrays::dict::TakeExecute; use crate::builders::ArrayBuilder; @@ -18,7 +19,6 @@ use crate::dtype::Nullability; use crate::executor::ExecutionCtx; use crate::match_each_integer_ptype; use crate::match_smallest_offset_type; -use crate::vtable::ValidityHelper; // TODO(connor)[ListView]: Re-revert to the version where we simply convert to a `ListView` and call // the `ListView::take` compute function once `ListView` is more stable. @@ -31,18 +31,21 @@ impl TakeExecute for List { /// non-contiguous indices would violate this requirement. #[expect(clippy::cognitive_complexity)] fn take( - array: &ListArray, + array: ArrayView<'_, List>, indices: &ArrayRef, ctx: &mut ExecutionCtx, ) -> VortexResult> { - let indices = indices.to_array().execute::(ctx)?; + let indices = indices.clone().execute::(ctx)?; // This is an over-approximation of the total number of elements in the resulting array. let total_approx = array.elements().len().saturating_mul(indices.len()); match_each_integer_ptype!(array.offsets().dtype().as_ptype(), |O| { match_each_integer_ptype!(indices.ptype(), |I| { match_smallest_offset_type!(total_approx, |OutputOffsetType| { - _take::(array, &indices, ctx).map(Some) + { + let indices = indices.as_view(); + _take::(array, indices, ctx).map(Some) + } }) }) }) @@ -50,18 +53,18 @@ impl TakeExecute for List { } fn _take( - array: &ListArray, - indices_array: &PrimitiveArray, + array: ArrayView<'_, List>, + indices_array: ArrayView<'_, Primitive>, ctx: &mut ExecutionCtx, ) -> VortexResult { - let data_validity = array.validity_mask()?; - let indices_validity = indices_array.validity_mask()?; + let data_validity = array.validity_mask(); + let indices_validity = indices_array.validity_mask(); if !indices_validity.all_true() || !data_validity.all_true() { return _take_nullable::(array, indices_array, ctx); } - let offsets_array = array.offsets().to_array().execute::(ctx)?; + let offsets_array = array.offsets().clone().execute::(ctx)?; let offsets: &[O] = offsets_array.as_slice(); let indices: &[I] = indices_array.as_slice(); @@ -101,26 +104,26 @@ fn _take( let elements_to_take = elements_to_take.finish(); let new_offsets = new_offsets.finish(); - let new_elements = array.elements().take(elements_to_take.to_array())?; + let new_elements = array.elements().take(elements_to_take)?; Ok(ListArray::try_new( new_elements, new_offsets, - array.validity().take(&indices_array.clone().into_array())?, + array.validity().take(indices_array.array())?, )? .into_array()) } fn _take_nullable( - array: &ListArray, - indices_array: &PrimitiveArray, + array: ArrayView<'_, List>, + indices_array: ArrayView<'_, Primitive>, ctx: &mut ExecutionCtx, ) -> VortexResult { - let offsets_array = array.offsets().to_array().execute::(ctx)?; + let offsets_array = array.offsets().clone().execute::(ctx)?; let offsets: &[O] = offsets_array.as_slice(); let indices: &[I] = indices_array.as_slice(); - let data_validity = array.validity_mask()?; - let indices_validity = indices_array.validity_mask()?; + let data_validity = array.validity_mask(); + let indices_validity = indices_array.validity_mask(); let mut new_offsets = PrimitiveBuilder::::with_capacity( Nullability::NonNullable, @@ -170,12 +173,12 @@ fn _take_nullable(Nullability::Nullable).into_array(); - let result = list.take(idx.to_array()).unwrap(); + let result = list.take(idx).unwrap(); assert_eq!( result.dtype(), &DType::List( @@ -411,7 +413,7 @@ mod test { // Take the same large list twice - would overflow u8 but works with u64. let idx = buffer![0u8, 0].into_array(); - let result = list.take(idx.to_array()).unwrap(); + let result = list.take(idx).unwrap(); assert_eq!(result.len(), 2); @@ -432,7 +434,7 @@ mod test { // Take the same large list twice - would overflow u8 but works with u64. let idx = PrimitiveArray::from_option_iter(vec![Some(0u8), None, Some(0u8)]).into_array(); - let result = list.take(idx.to_array()).unwrap(); + let result = list.take(idx).unwrap(); assert_eq!(result.len(), 3); @@ -462,7 +464,7 @@ mod test { let idx = buffer![0u32, 1, 0, 1].into_array(); // This should not panic - result should have length 4. - let result = list.take(idx.to_array()).unwrap(); + let result = list.take(idx).unwrap(); assert_eq!(result.len(), 4); } } diff --git a/vortex-array/src/arrays/list/mod.rs b/vortex-array/src/arrays/list/mod.rs index 19dac621dbf..753a2a35758 100644 --- a/vortex-array/src/arrays/list/mod.rs +++ b/vortex-array/src/arrays/list/mod.rs @@ -2,8 +2,9 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors mod array; -pub use array::ListArray; pub use array::ListArrayParts; +pub use array::ListData; +pub use vtable::ListArray; pub(crate) mod compute; diff --git a/vortex-array/src/arrays/list/tests.rs b/vortex-array/src/arrays/list/tests.rs index c6b6b99246c..874be33275b 100644 --- a/vortex-array/src/arrays/list/tests.rs +++ b/vortex-array/src/arrays/list/tests.rs @@ -727,7 +727,7 @@ fn test_list_of_lists_nullable_inner() { assert_eq!(first_list.len(), 3); // Check that second inner list is null. - let second_inner = first_list.scalar_at(1).unwrap(); + let second_inner = first_list.array().scalar_at(1).unwrap(); assert!(second_inner.is_null()); } @@ -766,7 +766,7 @@ fn test_list_of_lists_both_nullable() { assert_eq!(first_inner.len(), 2); // Second inner list should be null. - let second_inner = first_list.scalar_at(1).unwrap(); + let second_inner = first_list.array().scalar_at(1).unwrap(); assert!(second_inner.is_null()); // Second outer list should be null. @@ -784,7 +784,7 @@ fn test_list_of_lists_both_nullable() { let fourth_outer = list_of_lists.list_elements_at(3).unwrap(); let fourth_list = fourth_outer.as_::(); assert_eq!(fourth_list.len(), 1); - let inner = fourth_list.scalar_at(0).unwrap(); + let inner = fourth_list.array().scalar_at(0).unwrap(); assert!(inner.is_null()); } @@ -901,8 +901,10 @@ fn test_recursive_compact_list_of_lists() { assert_eq!(recursive.len(), 2); // Check the flattened elements - this shows the actual compaction difference - let non_recursive_flat_elements = non_recursive.elements().as_::().elements(); - let recursive_flat_elements = recursive.elements().as_::().elements(); + let non_recursive_inner = non_recursive.elements().as_::(); + let non_recursive_flat_elements = non_recursive_inner.elements(); + let recursive_inner = recursive.elements().as_::(); + let recursive_flat_elements = recursive_inner.elements(); // Non-recursive should still have all original elements [1,2,3,4,5,6,7,8,9,10,11,12] assert_eq!(non_recursive_flat_elements.len(), 12); @@ -912,8 +914,8 @@ fn test_recursive_compact_list_of_lists() { // Verify data integrity is preserved assert_eq!( - non_recursive.scalar_at(0).unwrap(), - recursive.scalar_at(0).unwrap() + non_recursive.clone().into_array().scalar_at(0).unwrap(), + recursive.clone().into_array().scalar_at(0).unwrap() ); } diff --git a/vortex-array/src/arrays/list/vtable/mod.rs b/vortex-array/src/arrays/list/vtable/mod.rs index 114579a4bab..051ee80d2d0 100644 --- a/vortex-array/src/arrays/list/vtable/mod.rs +++ b/vortex-array/src/arrays/list/vtable/mod.rs @@ -1,9 +1,6 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors -use std::hash::Hash; -use std::sync::Arc; - use vortex_error::VortexResult; use vortex_error::vortex_bail; use vortex_error::vortex_ensure; @@ -11,16 +8,18 @@ use vortex_error::vortex_panic; use vortex_session::VortexSession; use crate::ArrayRef; -use crate::DynArray; use crate::ExecutionCtx; use crate::ExecutionResult; use crate::IntoArray; use crate::Precision; use crate::ProstMetadata; -use crate::arrays::ListArray; +use crate::array::Array; +use crate::array::ArrayId; +use crate::array::ArrayView; +use crate::array::VTable; +use crate::arrays::list::ListData; use crate::arrays::list::array::NUM_SLOTS; use crate::arrays::list::array::SLOT_NAMES; -use crate::arrays::list::array::VALIDITY_SLOT; use crate::arrays::list::compute::PARENT_KERNELS; use crate::arrays::list::compute::rules::PARENT_RULES; use crate::arrays::listview::list_view_from_list; @@ -33,16 +32,12 @@ use crate::hash::ArrayHash; use crate::metadata::DeserializeMetadata; use crate::metadata::SerializeMetadata; use crate::serde::ArrayChildren; -use crate::stats::StatsSetRef; +use crate::stats::ArrayStats; use crate::validity::Validity; use crate::vtable; -use crate::vtable::Array; -use crate::vtable::ArrayId; -use crate::vtable::VTable; -use crate::vtable::ValidityVTableFromValidityHelper; mod operations; mod validity; -vtable!(List); +vtable!(List, List, ListData); #[derive(Clone, prost::Message)] pub struct ListMetadata { @@ -53,12 +48,12 @@ pub struct ListMetadata { } impl VTable for List { - type Array = ListArray; + type ArrayData = ListData; type Metadata = ProstMetadata; type OperationsVTable = Self; - type ValidityVTable = ValidityVTableFromValidityHelper; - fn vtable(_array: &Self::Array) -> &Self { + type ValidityVTable = Self; + fn vtable(_array: &ListData) -> &Self { &List } @@ -66,53 +61,51 @@ impl VTable for List { Self::ID } - fn len(array: &ListArray) -> usize { + fn len(array: &ListData) -> usize { array.offsets().len().saturating_sub(1) } - fn dtype(array: &ListArray) -> &DType { + fn dtype(array: &ListData) -> &DType { &array.dtype } - fn stats(array: &ListArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &ListData) -> &ArrayStats { + &array.stats_set } - fn array_hash(array: &ListArray, state: &mut H, precision: Precision) { - array.dtype.hash(state); + fn array_hash(array: &ListData, state: &mut H, precision: Precision) { array.elements().array_hash(state, precision); array.offsets().array_hash(state, precision); - array.validity.array_hash(state, precision); + array.validity().array_hash(state, precision); } - fn array_eq(array: &ListArray, other: &ListArray, precision: Precision) -> bool { - array.dtype == other.dtype - && array.elements().array_eq(other.elements(), precision) + fn array_eq(array: &ListData, other: &ListData, precision: Precision) -> bool { + array.elements().array_eq(other.elements(), precision) && array.offsets().array_eq(other.offsets(), precision) - && array.validity.array_eq(&other.validity, precision) + && array.validity().array_eq(&other.validity(), precision) } - fn nbuffers(_array: &ListArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 0 } - fn buffer(_array: &ListArray, idx: usize) -> BufferHandle { + fn buffer(_array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { vortex_panic!("ListArray buffer index {idx} out of bounds") } - fn buffer_name(_array: &ListArray, idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, idx: usize) -> Option { vortex_panic!("ListArray buffer_name index {idx} out of bounds") } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { PARENT_RULES.evaluate(array, parent, child_idx) } - fn metadata(array: &ListArray) -> VortexResult { + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { Ok(ProstMetadata(ListMetadata { elements_len: array.elements().len() as u64, offset_ptype: PType::try_from(array.offsets().dtype())? as i32, @@ -141,7 +134,7 @@ impl VTable for List { metadata: &Self::Metadata, _buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { let validity = if children.len() == 2 { Validity::from(dtype.nullability()) } else if children.len() == 3 { @@ -166,40 +159,36 @@ impl VTable for List { len + 1, )?; - ListArray::try_new(elements, offsets, validity) + ListData::try_new(elements, offsets, validity) } - fn slots(array: &ListArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &ListArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn with_slots(array: &mut ListArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "ListArray expects exactly {} slots, got {}", NUM_SLOTS, slots.len() ); - array.validity = match &slots[VALIDITY_SLOT] { - Some(arr) => Validity::Array(arr.clone()), - None => Validity::from(array.dtype.nullability()), - }; array.slots = slots; Ok(()) } - fn execute(array: Arc>, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, ctx: &mut ExecutionCtx) -> VortexResult { Ok(ExecutionResult::done( - list_view_from_list(ListArray::clone(&array), ctx)?.into_array(), + list_view_from_list(array, ctx)?.into_array(), )) } fn execute_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, diff --git a/vortex-array/src/arrays/list/vtable/operations.rs b/vortex-array/src/arrays/list/vtable/operations.rs index dd938a36c4d..6530248d3ac 100644 --- a/vortex-array/src/arrays/list/vtable/operations.rs +++ b/vortex-array/src/arrays/list/vtable/operations.rs @@ -6,13 +6,17 @@ use std::sync::Arc; use vortex_error::VortexResult; use crate::ExecutionCtx; +use crate::array::ArrayView; +use crate::array::OperationsVTable; use crate::arrays::List; -use crate::arrays::list::vtable::ListArray; use crate::scalar::Scalar; -use crate::vtable::OperationsVTable; impl OperationsVTable for List { - fn scalar_at(array: &ListArray, index: usize, _ctx: &mut ExecutionCtx) -> VortexResult { + fn scalar_at( + array: ArrayView<'_, List>, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { // By the preconditions we know that the list scalar is not null. let elems = array.list_elements_at(index)?; let scalars: Vec = (0..elems.len()) diff --git a/vortex-array/src/arrays/list/vtable/validity.rs b/vortex-array/src/arrays/list/vtable/validity.rs index c258cdb9d26..5d6b6c14d4f 100644 --- a/vortex-array/src/arrays/list/vtable/validity.rs +++ b/vortex-array/src/arrays/list/vtable/validity.rs @@ -1,12 +1,15 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors -use crate::arrays::list::vtable::ListArray; +use vortex_error::VortexResult; + +use crate::array::ArrayView; +use crate::array::ValidityVTable; +use crate::arrays::list::vtable::List; use crate::validity::Validity; -use crate::vtable::ValidityHelper; -impl ValidityHelper for ListArray { - fn validity(&self) -> Validity { - self.validity.clone() +impl ValidityVTable for List { + fn validity(array: ArrayView<'_, List>) -> VortexResult { + Ok(array.data().validity()) } } diff --git a/vortex-array/src/arrays/listview/array.rs b/vortex-array/src/arrays/listview/array.rs index 9e785135c8c..7a8c7122d4c 100644 --- a/vortex-array/src/arrays/listview/array.rs +++ b/vortex-array/src/arrays/listview/array.rs @@ -11,8 +11,11 @@ use vortex_error::vortex_ensure; use vortex_error::vortex_err; use crate::ArrayRef; -use crate::DynArray; use crate::ToCanonical; +use crate::array::Array; +use crate::array::child_to_validity; +use crate::array::validity_to_child; +use crate::arrays::ListView; use crate::arrays::Primitive; use crate::arrays::PrimitiveArray; use crate::arrays::bool; @@ -21,7 +24,6 @@ use crate::dtype::IntegerPType; use crate::match_each_integer_ptype; use crate::stats::ArrayStats; use crate::validity::Validity; -use crate::vtable::validity_to_child; /// The `elements` data array, where each list scalar is a _slice_ of the `elements` array, and /// each inner list element is a _scalar_ of the `elements` array. @@ -104,7 +106,7 @@ pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["elements", "offsets", "sizes" /// /// [`ListArray`]: crate::arrays::ListArray #[derive(Clone, Debug)] -pub struct ListViewArray { +pub struct ListViewData { /// The [`DType`] of the list array. /// /// This type **must** be the variant [`DType::List`]. @@ -123,12 +125,6 @@ pub struct ListViewArray { /// process which must rebuild the array from scratch. is_zero_copy_to_list: bool, - /// The validity / null map of the array. - /// - /// Note that this null map refers to which list scalars are null, **not** which sub-elements of - /// list scalars are null. The `elements` array will track individual value nullability. - pub(super) validity: Validity, - /// The stats for this array. pub(super) stats_set: ArrayStats, } @@ -149,13 +145,13 @@ pub struct ListViewArrayParts { pub validity: Validity, } -impl ListViewArray { - /// Creates a new [`ListViewArray`]. +impl ListViewData { + /// Creates a new `ListViewArray`. /// /// # Panics /// /// Panics if the provided components do not satisfy the invariants documented - /// in [`ListViewArray::new_unchecked`]. + /// in `ListViewArray::new_unchecked`. pub fn new(elements: ArrayRef, offsets: ArrayRef, sizes: ArrayRef, validity: Validity) -> Self { Self::try_new(elements, offsets, sizes, validity) .vortex_expect("`ListViewArray` construction failed") @@ -166,7 +162,7 @@ impl ListViewArray { /// # Errors /// /// Returns an error if the provided components do not satisfy the invariants documented - /// in [`ListViewArray::new_unchecked`]. + /// in `ListViewArray::new_unchecked`. pub fn try_new( elements: ArrayRef, offsets: ArrayRef, @@ -181,13 +177,12 @@ impl ListViewArray { Ok(Self { dtype: DType::List(Arc::new(elements.dtype().clone()), validity.nullability()), slots: vec![Some(elements), Some(offsets), Some(sizes), validity_slot], - validity, is_zero_copy_to_list: false, stats_set: Default::default(), }) } - /// Creates a new [`ListViewArray`] without validation. + /// Creates a new `ListViewArray` without validation. /// /// This unsafe function does not check the validity of the data. Prefer calling [`new()`] or /// [`try_new()`] over this function, as they will check the validity of the data. @@ -223,13 +218,12 @@ impl ListViewArray { Self { dtype: DType::List(Arc::new(elements.dtype().clone()), validity.nullability()), slots: vec![Some(elements), Some(offsets), Some(sizes), validity_slot], - validity, is_zero_copy_to_list: false, stats_set: Default::default(), } } - /// Validates the components that would be used to create a [`ListViewArray`]. + /// Validates the components that would be used to create a `ListViewArray`. pub fn validate( elements: &ArrayRef, offsets: &ArrayRef, @@ -292,7 +286,7 @@ impl ListViewArray { Ok(()) } - /// Sets whether this [`ListViewArray`] is zero-copyable to a [`ListArray`]. + /// Sets whether this `ListViewArray` is zero-copyable to a [`ListArray`]. /// /// This is an optimization flag that enables more efficient conversion to [`ListArray`] without /// needing to copy or reorganize the data. @@ -301,7 +295,7 @@ impl ListViewArray { /// /// # Safety /// - /// When setting `is_zctl` to `true`, the caller must ensure that the [`ListViewArray`] is + /// When setting `is_zctl` to `true`, the caller must ensure that the `ListViewArray` is /// actually zero-copyable to a [`ListArray`]. This means: /// /// - Offsets must be sorted (but not strictly sorted, zero-length lists are allowed). @@ -350,6 +344,7 @@ impl ListViewArray { } pub fn into_parts(mut self) -> ListViewArrayParts { + let validity = self.validity(); let dtype = self.dtype.into_list_element_opt().vortex_expect("is list"); ListViewArrayParts { elements_dtype: dtype, @@ -362,15 +357,42 @@ impl ListViewArray { sizes: self.slots[SIZES_SLOT] .take() .vortex_expect("ListViewArray sizes slot"), - validity: self.validity, + validity, } } + /// Returns the dtype of the array. + pub fn dtype(&self) -> &DType { + &self.dtype + } + + /// Returns the length of the array. + pub fn len(&self) -> usize { + debug_assert_eq!(self.offsets().len(), self.sizes().len()); + self.offsets().len() + } + + /// Returns `true` if the array is empty. + pub fn is_empty(&self) -> bool { + self.len() == 0 + } + + /// Returns the validity of the array. + #[allow(clippy::same_name_method)] + pub fn validity(&self) -> Validity { + child_to_validity(&self.slots[VALIDITY_SLOT], self.dtype.nullability()) + } + + /// Returns the validity as a [`Mask`](vortex_mask::Mask). + pub fn validity_mask(&self) -> vortex_mask::Mask { + self.validity().to_mask(self.len()) + } + /// Returns the offset at the given index. /// /// Note that it is possible the corresponding list view is null (which is only defined by the /// validity map). Regardless, we are still guaranteed that this offset is valid by the - /// invariants of [`ListViewArray`]. + /// invariants of `ListViewArray`. pub fn offset_at(&self, index: usize) -> usize { assert!( index < self.len(), @@ -397,7 +419,7 @@ impl ListViewArray { /// /// Note that it is possible the corresponding list view is null (which is only defined by the /// validity map). Regardless, we are still guaranteed that this size is valid by the invariants - /// of [`ListViewArray`]. + /// of `ListViewArray`. pub fn size_at(&self, index: usize) -> usize { assert!( index < self.len(), @@ -460,6 +482,51 @@ impl ListViewArray { } } +impl Array { + /// Creates a new `ListViewArray`. + pub fn new(elements: ArrayRef, offsets: ArrayRef, sizes: ArrayRef, validity: Validity) -> Self { + Array::try_from_data(ListViewData::new(elements, offsets, sizes, validity)) + .vortex_expect("ListViewData is always valid") + } + + /// Constructs a new `ListViewArray`. + pub fn try_new( + elements: ArrayRef, + offsets: ArrayRef, + sizes: ArrayRef, + validity: Validity, + ) -> VortexResult { + Array::try_from_data(ListViewData::try_new(elements, offsets, sizes, validity)?) + } + + /// Creates a new `ListViewArray` without validation. + /// + /// # Safety + /// + /// See [`ListViewData::new_unchecked`]. + pub unsafe fn new_unchecked( + elements: ArrayRef, + offsets: ArrayRef, + sizes: ArrayRef, + validity: Validity, + ) -> Self { + Array::try_from_data(unsafe { + ListViewData::new_unchecked(elements, offsets, sizes, validity) + }) + .vortex_expect("ListViewData is always valid") + } + + /// Mark whether this list view can be zero-copy converted to a list. + /// + /// # Safety + /// + /// See [`ListViewData::with_zero_copy_to_list`]. + pub unsafe fn with_zero_copy_to_list(self, is_zctl: bool) -> Self { + Array::try_from_data(unsafe { self.into_data().with_zero_copy_to_list(is_zctl) }) + .vortex_expect("data is always valid") + } +} + /// Helper function to validate `offsets` and `sizes` with specific types. fn validate_offsets_and_sizes( offsets_slice: &[O], @@ -511,7 +578,7 @@ where Ok(()) } -/// Helper function to validate if the [`ListViewArray`] components are actually zero-copyable to +/// Helper function to validate if the `ListViewArray` components are actually zero-copyable to /// [`ListArray`](crate::arrays::ListArray). fn validate_zctl( elements: &ArrayRef, diff --git a/vortex-array/src/arrays/listview/compute/cast.rs b/vortex-array/src/arrays/listview/compute/cast.rs index 6b662827220..637e6b4459e 100644 --- a/vortex-array/src/arrays/listview/compute/cast.rs +++ b/vortex-array/src/arrays/listview/compute/cast.rs @@ -5,15 +5,15 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::ListView; use crate::arrays::ListViewArray; use crate::builtins::ArrayBuiltins; use crate::dtype::DType; use crate::scalar_fn::fns::cast::CastReduce; -use crate::vtable::ValidityHelper; impl CastReduce for ListView { - fn cast(array: &ListViewArray, dtype: &DType) -> VortexResult> { + fn cast(array: ArrayView<'_, ListView>, dtype: &DType) -> VortexResult> { // Check if we're casting to a `List` type. let Some(target_element_type) = dtype.as_list_element_opt() else { return Ok(None); diff --git a/vortex-array/src/arrays/listview/compute/mask.rs b/vortex-array/src/arrays/listview/compute/mask.rs index 6732fc25f66..22207ad83cf 100644 --- a/vortex-array/src/arrays/listview/compute/mask.rs +++ b/vortex-array/src/arrays/listview/compute/mask.rs @@ -5,14 +5,14 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::ListView; use crate::arrays::ListViewArray; use crate::scalar_fn::fns::mask::MaskReduce; use crate::validity::Validity; -use crate::vtable::ValidityHelper; impl MaskReduce for ListView { - fn mask(array: &ListViewArray, mask: &ArrayRef) -> VortexResult> { + fn mask(array: ArrayView<'_, ListView>, mask: &ArrayRef) -> VortexResult> { // SAFETY: masking the validity does not affect the invariants Ok(Some( unsafe { diff --git a/vortex-array/src/arrays/listview/compute/rules.rs b/vortex-array/src/arrays/listview/compute/rules.rs index 6eedee9d8f9..0ebc465be1b 100644 --- a/vortex-array/src/arrays/listview/compute/rules.rs +++ b/vortex-array/src/arrays/listview/compute/rules.rs @@ -4,10 +4,9 @@ use vortex_error::VortexResult; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Filter; -use crate::arrays::FilterArray; use crate::arrays::ListView; use crate::arrays::ListViewArray; use crate::arrays::dict::TakeReduceAdaptor; @@ -16,7 +15,6 @@ use crate::optimizer::rules::ArrayParentReduceRule; use crate::optimizer::rules::ParentRuleSet; use crate::scalar_fn::fns::cast::CastReduceAdaptor; use crate::scalar_fn::fns::mask::MaskReduceAdaptor; -use crate::vtable::ValidityHelper; pub(crate) const PARENT_RULES: ParentRuleSet = ParentRuleSet::new(&[ ParentRuleSet::lift(&ListViewFilterPushDown), @@ -34,8 +32,8 @@ impl ArrayParentReduceRule for ListViewFilterPushDown { fn reduce_parent( &self, - array: &ListViewArray, - parent: &FilterArray, + array: ArrayView<'_, ListView>, + parent: ArrayView<'_, Filter>, _child_idx: usize, ) -> VortexResult> { // NOTE(ngates): if the filter is super selective, we maybe ought to consider masking diff --git a/vortex-array/src/arrays/listview/compute/slice.rs b/vortex-array/src/arrays/listview/compute/slice.rs index be5855ce473..3c42a815fbf 100644 --- a/vortex-array/src/arrays/listview/compute/slice.rs +++ b/vortex-array/src/arrays/listview/compute/slice.rs @@ -7,19 +7,20 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::ListView; use crate::arrays::ListViewArray; use crate::arrays::slice::SliceReduce; impl SliceReduce for ListView { - fn slice(array: &Self::Array, range: Range) -> VortexResult> { + fn slice(array: ArrayView<'_, Self>, range: Range) -> VortexResult> { Ok(Some( unsafe { ListViewArray::new_unchecked( array.elements().clone(), array.offsets().slice(range.clone())?, array.sizes().slice(range.clone())?, - array.validity()?.slice(range)?, + array.validity().slice(range)?, ) .with_zero_copy_to_list(array.is_zero_copy_to_list()) } diff --git a/vortex-array/src/arrays/listview/compute/take.rs b/vortex-array/src/arrays/listview/compute/take.rs index 0e6e7289579..804f4dc05d9 100644 --- a/vortex-array/src/arrays/listview/compute/take.rs +++ b/vortex-array/src/arrays/listview/compute/take.rs @@ -5,8 +5,8 @@ use num_traits::Zero; use vortex_error::VortexResult; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::ListView; use crate::arrays::ListViewArray; use crate::arrays::dict::TakeReduce; @@ -15,7 +15,6 @@ use crate::builtins::ArrayBuiltins; use crate::dtype::Nullability; use crate::match_each_integer_ptype; use crate::scalar::Scalar; -use crate::vtable::ValidityHelper; // TODO(connor)[ListView]: Make use of this threshold after we start migrating operators. /// The threshold for triggering a rebuild of the [`ListViewArray`]. @@ -42,7 +41,7 @@ const REBUILD_DENSITY_THRESHOLD: f64 = 0.1; /// The trade-off is that we may keep unreferenced elements in memory, but this is acceptable since /// we're optimizing for read performance and the data isn't being copied. impl TakeReduce for ListView { - fn take(array: &ListViewArray, indices: &ArrayRef) -> VortexResult> { + fn take(array: ArrayView<'_, ListView>, indices: &ArrayRef) -> VortexResult> { let elements = array.elements(); let offsets = array.offsets(); let sizes = array.sizes(); @@ -53,8 +52,8 @@ impl TakeReduce for ListView { // Take the offsets and sizes arrays at the requested indices. // Take can reorder offsets, create gaps, and may introduce overlaps if the `indices` // contain duplicates. - let nullable_new_offsets = offsets.take(indices.to_array())?; - let nullable_new_sizes = sizes.take(indices.to_array())?; + let nullable_new_offsets = offsets.take(indices.clone())?; + let nullable_new_sizes = sizes.take(indices.clone())?; // Since `take` returns nullable arrays, we simply cast it back to non-nullable (filled with // zeros to represent null lists). diff --git a/vortex-array/src/arrays/listview/conversion.rs b/vortex-array/src/arrays/listview/conversion.rs index fb34d9b45e8..be4ac64ab41 100644 --- a/vortex-array/src/arrays/listview/conversion.rs +++ b/vortex-array/src/arrays/listview/conversion.rs @@ -1,17 +1,15 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors -use std::sync::Arc; - use vortex_error::VortexExpect; use vortex_error::VortexResult; use crate::ArrayRef; use crate::Canonical; -use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; use crate::ToCanonical; +use crate::array::Array; use crate::arrays::ExtensionArray; use crate::arrays::FixedSizeListArray; use crate::arrays::ListArray; @@ -23,11 +21,10 @@ use crate::builders::PrimitiveBuilder; use crate::dtype::IntegerPType; use crate::dtype::Nullability; use crate::match_each_integer_ptype; -use crate::vtable::ValidityHelper; -/// Creates a [`ListViewArray`] from a [`ListArray`] by computing `sizes` from `offsets`. +/// Creates a `ListViewArray` from a `ListArray` by computing `sizes` from `offsets`. /// -/// The output [`ListViewArray`] will be zero-copyable back to a [`ListArray`], and additionally it +/// The output `ListViewArray` will be zero-copyable back to a `ListArray`, and additionally it /// will not have any leading or trailing garbage data. pub fn list_view_from_list(list: ListArray, ctx: &mut ExecutionCtx) -> VortexResult { // If the list is empty, create an empty `ListViewArray` with the same offset `DType` as the @@ -39,7 +36,8 @@ pub fn list_view_from_list(list: ListArray, ctx: &mut ExecutionCtx) -> VortexRes // We reset the offsets here because mostly for convenience, and also because callers of this // function might not expect the output `ListViewArray` to have a bunch of leading and trailing // garbage data when they turn it back into a `ListArray`. - let list = list.reset_offsets(false).vortex_expect("This can't fail"); + let list: ListArray = + Array::try_from_data(list.reset_offsets(false).vortex_expect("This can't fail"))?; let list_offsets = list.offsets().clone(); @@ -67,7 +65,7 @@ pub fn list_view_from_list(list: ListArray, ctx: &mut ExecutionCtx) -> VortexRes }) } -/// Builds a sizes array from a [`ListArray`] by computing differences between consecutive offsets. +/// Builds a sizes array from a `ListArray` by computing differences between consecutive offsets. fn build_sizes_from_offsets( list: &ListArray, ctx: &mut ExecutionCtx, @@ -99,13 +97,13 @@ fn build_sizes_from_offsets( // TODO(connor)[ListView]: Note that it is not exactly zero-copy because we have to add a single // offset at the end, but it is fast enough. -/// Creates a [`ListArray`] from a [`ListViewArray`]. The resulting [`ListArray`] will not have any +/// Creates a `ListArray` from a `ListViewArray`. The resulting `ListArray` will not have any /// leading or trailing garbage data. /// -/// If [`ListViewArray::is_zero_copy_to_list`] is `true`, then this operation is fast +/// If `ListViewArray::is_zero_copy_to_list` is `true`, then this operation is fast /// /// Otherwise, this function fall back to the (very) expensive path and will rebuild the -/// [`ListArray`] from scratch. +/// `ListArray` from scratch. pub fn list_from_list_view(list_view: ListViewArray) -> VortexResult { // Rebuild as zero-copyable to list array and also trim all leading and trailing elements. let zctl_array = list_view.rebuild(ListViewRebuildMode::MakeExact)?; @@ -131,12 +129,12 @@ pub fn list_from_list_view(list_view: ListViewArray) -> VortexResult // TODO(connor)[ListView]: We can optimize this by always keeping extra memory in `ListViewArray` // offsets for an `n+1`th offset. -/// Builds a [`ListArray`] offsets array from a [`ListViewArray`] by constructing `n+1` offsets. +/// Builds a `ListArray` offsets array from a `ListViewArray` by constructing `n+1` offsets. /// The last offset is computed as `last_offset + last_size`. /// /// # Safety /// -/// The [`ListViewArray`] must have offsets that are sorted, and every size must be equal to the gap +/// The `ListViewArray` must have offsets that are sorted, and every size must be equal to the gap /// between `offset[i]` and `offset[i + 1]`. unsafe fn build_list_offsets_from_list_view( list_view: &ListViewArray, @@ -178,7 +176,7 @@ unsafe fn build_list_offsets_from_list_view( offsets_builder.finish_into_primitive().into_array() } -/// Recursively converts all [`ListViewArray`]s to [`ListArray`]s in a nested array structure. +/// Recursively converts all `ListViewArray`s to `ListArray`s in a nested array structure. /// /// The conversion happens bottom-up, processing children before parents. pub fn recursive_list_from_list_view(array: ArrayRef) -> VortexResult { @@ -195,7 +193,7 @@ pub fn recursive_list_from_list_view(array: ArrayRef) -> VortexResult // Avoid cloning if elements didn't change. let listview_with_converted_elements = - if !Arc::ptr_eq(&converted_elements, listview.elements()) { + if !ArrayRef::ptr_eq(&converted_elements, listview.elements()) { // SAFETY: We are effectively just replacing the child elements array, which // must have the same length, so all invariants are maintained. unsafe { @@ -220,7 +218,7 @@ pub fn recursive_list_from_list_view(array: ArrayRef) -> VortexResult recursive_list_from_list_view(fixed_size_list.elements().clone())?; // Avoid cloning if elements didn't change. - if !Arc::ptr_eq(&converted_elements, fixed_size_list.elements()) { + if !ArrayRef::ptr_eq(&converted_elements, fixed_size_list.elements()) { FixedSizeListArray::try_new( converted_elements, fixed_size_list.list_size(), @@ -243,7 +241,7 @@ pub fn recursive_list_from_list_view(array: ArrayRef) -> VortexResult for field in fields.iter() { let converted_field = recursive_list_from_list_view(field.clone())?; // Avoid cloning if elements didn't change. - any_changed |= !Arc::ptr_eq(&converted_field, field); + any_changed |= !ArrayRef::ptr_eq(&converted_field, field); converted_fields.push(converted_field); } @@ -265,7 +263,7 @@ pub fn recursive_list_from_list_view(array: ArrayRef) -> VortexResult recursive_list_from_list_view(ext_array.storage_array().clone())?; // Avoid cloning if elements didn't change. - if !Arc::ptr_eq(&converted_storage, ext_array.storage_array()) { + if !ArrayRef::ptr_eq(&converted_storage, ext_array.storage_array()) { ExtensionArray::new(ext_array.ext_dtype().clone(), converted_storage).into_array() } else { ext_array.into_array() @@ -277,7 +275,6 @@ pub fn recursive_list_from_list_view(array: ArrayRef) -> VortexResult #[cfg(test)] mod tests { - use std::sync::Arc; use vortex_buffer::buffer; use vortex_error::VortexResult; @@ -288,6 +285,7 @@ mod tests { use super::super::tests::common::create_overlapping_listview; use super::recursive_list_from_list_view; use crate::ArrayEq; + use crate::ArrayRef; use crate::IntoArray; use crate::LEGACY_SESSION; use crate::Precision; @@ -304,15 +302,13 @@ mod tests { use crate::assert_arrays_eq; use crate::dtype::FieldNames; use crate::validity::Validity; - use crate::vtable::ValidityHelper; #[test] fn test_list_to_listview_basic() -> VortexResult<()> { // Create a basic ListArray: [[0,1,2], [3,4], [5,6], [7,8,9]]. let elements = buffer![0i32, 1, 2, 3, 4, 5, 6, 7, 8, 9].into_array(); let offsets = buffer![0u32, 3, 5, 7, 10].into_array(); - let list_array = - ListArray::try_new(elements.clone(), offsets.clone(), Validity::NonNullable)?; + let list_array = ListArray::try_new(elements.clone(), offsets, Validity::NonNullable)?; let mut ctx = LEGACY_SESSION.create_execution_ctx(); let list_view = list_view_from_list(list_array.clone(), &mut ctx)?; @@ -357,8 +353,7 @@ mod tests { // Empty ListArray to ListViewArray. let empty_elements = PrimitiveArray::from_iter::<[i32; 0]>([]).into_array(); let empty_offsets = buffer![0u32].into_array(); - let empty_list = - ListArray::try_new(empty_elements.clone(), empty_offsets, Validity::NonNullable)?; + let empty_list = ListArray::try_new(empty_elements, empty_offsets, Validity::NonNullable)?; // This conversion will create an empty ListViewArray. // Note: list_view_from_list handles the empty case specially. @@ -381,8 +376,7 @@ mod tests { let elements = buffer![10i32, 20, 30, 40, 50].into_array(); let offsets = buffer![0u32, 2, 4, 5].into_array(); let validity = Validity::Array(BoolArray::from_iter(vec![true, false, true]).into_array()); - let nullable_list = - ListArray::try_new(elements.clone(), offsets.clone(), validity.clone())?; + let nullable_list = ListArray::try_new(elements, offsets, validity.clone())?; let mut ctx = LEGACY_SESSION.create_execution_ctx(); let nullable_list_view = list_view_from_list(nullable_list.clone(), &mut ctx)?; @@ -454,8 +448,7 @@ mod tests { // Test with i64 offsets. let i64_offsets = buffer![0i64, 2, 5].into_array(); - let list_i64 = - ListArray::try_new(elements.clone(), i64_offsets.clone(), Validity::NonNullable)?; + let list_i64 = ListArray::try_new(elements, i64_offsets.clone(), Validity::NonNullable)?; let list_view_i64 = list_view_from_list(list_i64.clone(), &mut ctx)?; assert_eq!(list_view_i64.offsets().dtype(), i64_offsets.dtype()); @@ -497,8 +490,7 @@ mod tests { // Create lists with single elements: [[100], [200], [300]]. let elements = buffer![100i32, 200, 300].into_array(); let offsets = buffer![0u32, 1, 2, 3].into_array(); - let single_elem_list = - ListArray::try_new(elements.clone(), offsets, Validity::NonNullable)?; + let single_elem_list = ListArray::try_new(elements, offsets, Validity::NonNullable)?; let mut ctx = LEGACY_SESSION.create_execution_ctx(); let list_view = list_view_from_list(single_elem_list.clone(), &mut ctx)?; @@ -519,8 +511,7 @@ mod tests { // Create: [[1,2], [], [3], [], [4,5,6]]. let elements = buffer![1i32, 2, 3, 4, 5, 6].into_array(); let offsets = buffer![0u32, 2, 2, 3, 3, 6].into_array(); - let mixed_list = - ListArray::try_new(elements.clone(), offsets.clone(), Validity::NonNullable)?; + let mixed_list = ListArray::try_new(elements, offsets, Validity::NonNullable)?; let mut ctx = LEGACY_SESSION.create_execution_ctx(); let list_view = list_view_from_list(mixed_list.clone(), &mut ctx)?; @@ -688,7 +679,7 @@ mod tests { let prim_clone = prim.clone(); let result = recursive_list_from_list_view(prim)?; - assert!(Arc::ptr_eq(&result, &prim_clone)); + assert!(ArrayRef::ptr_eq(&result, &prim_clone)); Ok(()) } diff --git a/vortex-array/src/arrays/listview/mod.rs b/vortex-array/src/arrays/listview/mod.rs index dec40e6769d..4ca62ef0820 100644 --- a/vortex-array/src/arrays/listview/mod.rs +++ b/vortex-array/src/arrays/listview/mod.rs @@ -2,8 +2,9 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors mod array; -pub use array::ListViewArray; pub use array::ListViewArrayParts; +pub use array::ListViewData; +pub use vtable::ListViewArray; pub(crate) mod compute; diff --git a/vortex-array/src/arrays/listview/rebuild.rs b/vortex-array/src/arrays/listview/rebuild.rs index cf2725e5c68..3333d96fdcf 100644 --- a/vortex-array/src/arrays/listview/rebuild.rs +++ b/vortex-array/src/arrays/listview/rebuild.rs @@ -6,7 +6,6 @@ use vortex_buffer::BufferMut; use vortex_error::VortexExpect; use vortex_error::VortexResult; -use crate::DynArray; use crate::IntoArray; use crate::LEGACY_SESSION; use crate::ToCanonical; @@ -23,7 +22,6 @@ use crate::dtype::PType; use crate::match_each_integer_ptype; use crate::scalar::Scalar; use crate::scalar_fn::fns::operators::Operator; -use crate::vtable::ValidityHelper; /// Modes for rebuilding a [`ListViewArray`]. pub enum ListViewRebuildMode { @@ -163,7 +161,7 @@ impl ListViewArray { let mut n_elements = NewOffset::zero(); for index in 0..len { - if !self.is_valid(index)? { + if !self.validity().is_valid(index)? { new_offsets.push(n_elements); new_sizes.push(S::zero()); continue; @@ -188,7 +186,7 @@ impl ListViewArray { // non-overlapping, all (offset, size) pairs reference valid elements, and the validity // array is preserved from the original. Ok(unsafe { - ListViewArray::new_unchecked(elements, offsets, sizes, self.validity.clone()) + ListViewArray::new_unchecked(elements, offsets, sizes, self.validity()) .with_zero_copy_to_list(true) }) } @@ -231,7 +229,7 @@ impl ListViewArray { let mut n_elements = NewOffset::zero(); for index in 0..len { - if !self.is_valid(index)? { + if !self.validity().is_valid(index)? { // For NULL lists, place them after the previous item's data to maintain the // no-overlap invariant for zero-copy to `ListArray` arrays. new_offsets.push(n_elements); @@ -271,7 +269,7 @@ impl ListViewArray { // - The array satisfies the zero-copy-to-list property by having sorted offsets, no gaps, // and no overlaps. Ok(unsafe { - ListViewArray::new_unchecked(elements, offsets, sizes, self.validity.clone()) + ListViewArray::new_unchecked(elements, offsets, sizes, self.validity()) .with_zero_copy_to_list(true) }) } @@ -332,7 +330,7 @@ impl ListViewArray { let scalar = Scalar::primitive(offset, Nullability::NonNullable); self.offsets() - .to_array() + .clone() .binary( ConstantArray::new(scalar, self.offsets().len()).into_array(), Operator::Sub, @@ -382,7 +380,6 @@ mod tests { use crate::assert_arrays_eq; use crate::dtype::Nullability; use crate::validity::Validity; - use crate::vtable::ValidityHelper; #[test] fn test_rebuild_flatten_removes_overlaps() -> VortexResult<()> { diff --git a/vortex-array/src/arrays/listview/tests/basic.rs b/vortex-array/src/arrays/listview/tests/basic.rs index 5548a2bbbb5..62e162f1677 100644 --- a/vortex-array/src/arrays/listview/tests/basic.rs +++ b/vortex-array/src/arrays/listview/tests/basic.rs @@ -7,7 +7,6 @@ use rstest::rstest; use vortex_buffer::buffer; use vortex_error::VortexResult; -use crate::DynArray; use crate::IntoArray; use crate::LEGACY_SESSION; use crate::VortexSessionExecute; diff --git a/vortex-array/src/arrays/listview/tests/filter.rs b/vortex-array/src/arrays/listview/tests/filter.rs index 8fad7569534..b63ceed1430 100644 --- a/vortex-array/src/arrays/listview/tests/filter.rs +++ b/vortex-array/src/arrays/listview/tests/filter.rs @@ -10,7 +10,6 @@ use super::common::create_empty_lists_listview; use super::common::create_large_listview; use super::common::create_nullable_listview; use super::common::create_overlapping_listview; -use crate::DynArray; use crate::IntoArray; use crate::ToCanonical; use crate::arrays::ConstantArray; @@ -42,8 +41,7 @@ fn test_filter_preserves_unreferenced_elements() { let offsets = buffer![5u32, 2, 8, 0, 1].into_array(); let sizes = buffer![3u32, 2, 2, 2, 4].into_array(); - let listview = - ListViewArray::new(elements.clone(), offsets, sizes, Validity::NonNullable).into_array(); + let listview = ListViewArray::new(elements, offsets, sizes, Validity::NonNullable).into_array(); // Filter to keep only 2 lists. let mask = Mask::from_iter([true, false, false, true, false]); @@ -74,8 +72,7 @@ fn test_filter_with_gaps() { let offsets = buffer![0u32, 6, 10, 1, 7].into_array(); let sizes = buffer![3u32, 3, 2, 2, 2].into_array(); - let listview = - ListViewArray::new(elements.clone(), offsets, sizes, Validity::NonNullable).into_array(); + let listview = ListViewArray::new(elements, offsets, sizes, Validity::NonNullable).into_array(); // Filter to keep lists with gaps and overlaps. let mask = Mask::from_iter([false, true, true, true, false]); @@ -166,8 +163,7 @@ fn test_filter_extreme_offsets() { let offsets = buffer![0u32, 4999, 9995, 2500, 7500].into_array(); let sizes = buffer![5u32, 2, 5, 3, 4].into_array(); - let listview = - ListViewArray::new(elements.clone(), offsets, sizes, Validity::NonNullable).into_array(); + let listview = ListViewArray::new(elements, offsets, sizes, Validity::NonNullable).into_array(); // Filter to keep only 2 lists, demonstrating we keep all 10000 elements. let mask = Mask::from_iter([false, true, false, false, true]); diff --git a/vortex-array/src/arrays/listview/tests/nested.rs b/vortex-array/src/arrays/listview/tests/nested.rs index c10e30838f0..d99c3aa55f5 100644 --- a/vortex-array/src/arrays/listview/tests/nested.rs +++ b/vortex-array/src/arrays/listview/tests/nested.rs @@ -3,7 +3,6 @@ use vortex_buffer::buffer; -use crate::DynArray; use crate::IntoArray; use crate::arrays::ListView; use crate::arrays::ListViewArray; @@ -200,12 +199,8 @@ fn test_mixed_offset_size_types() { let inner_offsets = buffer![0u32, 10, 20, 30, 40, 50, 100, 150, 200].into_array(); let inner_sizes = buffer![5u16, 8, 10, 7, 15, 20, 25, 30, 50].into_array(); - let inner_listview = ListViewArray::new( - elements, - inner_offsets.clone(), - inner_sizes.clone(), - Validity::NonNullable, - ); + let inner_listview = + ListViewArray::new(elements, inner_offsets, inner_sizes, Validity::NonNullable); // Outer ListView with u64 offsets and u8 sizes. // Using small sizes that fit in u8 to test the type difference. diff --git a/vortex-array/src/arrays/listview/tests/operations.rs b/vortex-array/src/arrays/listview/tests/operations.rs index c22a21954d5..f1972e67c28 100644 --- a/vortex-array/src/arrays/listview/tests/operations.rs +++ b/vortex-array/src/arrays/listview/tests/operations.rs @@ -10,7 +10,6 @@ use vortex_mask::Mask; use super::common::create_basic_listview; use super::common::create_large_listview; use super::common::create_nullable_listview; -use crate::DynArray; use crate::IntoArray; use crate::LEGACY_SESSION; use crate::ToCanonical; @@ -59,7 +58,7 @@ fn test_slice_comprehensive() { for i in 0..4 { // Compare the sliced elements assert_eq!( - full_list.scalar_at(i).unwrap(), + full_list.array().scalar_at(i).unwrap(), listview.scalar_at(i).unwrap(), "Mismatch at index {}", i @@ -148,8 +147,8 @@ fn test_slice_with_nulls() { let sliced_list = sliced.as_::(); assert_eq!(sliced_list.len(), 2); - assert!(sliced_list.is_invalid(0).unwrap()); // Original index 1 was null. - assert!(sliced_list.is_valid(1).unwrap()); // Original index 2 was valid. + assert!(sliced_list.array().is_invalid(0).unwrap()); // Original index 1 was null. + assert!(sliced_list.array().is_valid(1).unwrap()); // Original index 2 was valid. // Verify offsets and sizes are preserved. assert_eq!(sliced_list.offset_at(0), 2); @@ -459,13 +458,8 @@ fn test_constant_with_nulls() { // Case 2: All nulls - should be constant. let validity_all_null = Validity::AllInvalid; let listview_all_null = unsafe { - ListViewArray::new_unchecked( - elements.clone(), - offsets.clone(), - sizes.clone(), - validity_all_null, - ) - .with_zero_copy_to_list(true) + ListViewArray::new_unchecked(elements, offsets, sizes, validity_all_null) + .with_zero_copy_to_list(true) } .into_array(); let mut ctx2 = LEGACY_SESSION.create_execution_ctx(); @@ -516,7 +510,7 @@ fn test_mask_preserves_structure() { // Mask sets elements to null where true. let selection = Mask::from_iter([true, false, true, true]); - let result = listview.clone().mask((!&selection).into_array()).unwrap(); + let result = listview.mask((!&selection).into_array()).unwrap(); assert_eq!(result.len(), 4); // Length is preserved. let result_list = result.to_listview(); @@ -555,7 +549,7 @@ fn test_mask_with_existing_nulls() { // Mask additional elements. let selection = Mask::from_iter([false, true, true]); - let result = listview.clone().mask((!&selection).into_array()).unwrap(); + let result = listview.mask((!&selection).into_array()).unwrap(); let result_list = result.to_listview(); // Check combined validity: @@ -575,7 +569,7 @@ fn test_mask_with_gaps() { let listview = ListViewArray::new(elements, offsets, sizes, Validity::NonNullable).into_array(); let selection = Mask::from_iter([true, false, false]); - let result = listview.clone().mask((!&selection).into_array()).unwrap(); + let result = listview.mask((!&selection).into_array()).unwrap(); let result_list = result.to_listview(); assert_eq!(result_list.len(), 3); @@ -607,7 +601,7 @@ fn test_mask_constant_arrays() { .into_array(); let selection = Mask::from_iter([false, true, false]); - let result = const_list.clone().mask((!&selection).into_array()).unwrap(); + let result = const_list.mask((!&selection).into_array()).unwrap(); let result_list = result.to_listview(); assert_eq!(result_list.len(), 3); diff --git a/vortex-array/src/arrays/listview/tests/take.rs b/vortex-array/src/arrays/listview/tests/take.rs index a2c0aa52d87..c002d7be140 100644 --- a/vortex-array/src/arrays/listview/tests/take.rs +++ b/vortex-array/src/arrays/listview/tests/take.rs @@ -9,7 +9,6 @@ use super::common::create_empty_lists_listview; use super::common::create_large_listview; use super::common::create_nullable_listview; use super::common::create_overlapping_listview; -use crate::DynArray; use crate::IntoArray; use crate::ToCanonical; use crate::arrays::ConstantArray; @@ -41,12 +40,11 @@ fn test_take_preserves_unreferenced_elements() { let offsets = buffer![5u32, 2, 8, 0, 1].into_array(); let sizes = buffer![3u32, 2, 2, 2, 4].into_array(); - let listview = - ListViewArray::new(elements.clone(), offsets, sizes, Validity::NonNullable).into_array(); + let listview = ListViewArray::new(elements, offsets, sizes, Validity::NonNullable).into_array(); // Take only 2 lists. let indices = buffer![1u32, 3].into_array(); - let result = listview.take(indices.to_array()).unwrap(); + let result = listview.take(indices).unwrap(); let result_list = result.to_listview(); assert_eq!(result_list.len(), 2); @@ -71,11 +69,10 @@ fn test_take_with_gaps() { let offsets = buffer![0u32, 6, 10, 1, 7].into_array(); let sizes = buffer![3u32, 3, 2, 2, 2].into_array(); - let listview = - ListViewArray::new(elements.clone(), offsets, sizes, Validity::NonNullable).into_array(); + let listview = ListViewArray::new(elements, offsets, sizes, Validity::NonNullable).into_array(); let indices = buffer![1u32, 3, 4, 2].into_array(); - let result = listview.take(indices.to_array()).unwrap(); + let result = listview.take(indices).unwrap(); let result_list = result.to_listview(); // Verify the entire elements array is preserved including gaps. @@ -110,7 +107,7 @@ fn test_take_constant_arrays() { .into_array(); let indices = buffer![3u32, 0, 2].into_array(); - let result = const_offset_list.take(indices.to_array()).unwrap(); + let result = const_offset_list.take(indices).unwrap(); let result_list = result.to_listview(); assert_eq!(result_list.len(), 3); @@ -134,7 +131,7 @@ fn test_take_constant_arrays() { .into_array(); let indices2 = buffer![2u32, 0].into_array(); - let result2 = both_const_list.take(indices2.to_array()).unwrap(); + let result2 = both_const_list.take(indices2).unwrap(); let result2_list = result2.to_listview(); assert_eq!(result2_list.len(), 2); @@ -155,12 +152,11 @@ fn test_take_extreme_offsets() { let offsets = buffer![0u32, 4999, 9995, 2500, 7500].into_array(); let sizes = buffer![5u32, 2, 5, 3, 4].into_array(); - let listview = - ListViewArray::new(elements.clone(), offsets, sizes, Validity::NonNullable).into_array(); + let listview = ListViewArray::new(elements, offsets, sizes, Validity::NonNullable).into_array(); // Take only 2 lists, demonstrating we keep all 10000 elements. let indices = buffer![1u32, 4].into_array(); - let result = listview.take(indices.to_array()).unwrap(); + let result = listview.take(indices).unwrap(); let result_list = result.to_listview(); assert_eq!(result_list.len(), 2); diff --git a/vortex-array/src/arrays/listview/vtable/mod.rs b/vortex-array/src/arrays/listview/vtable/mod.rs index d69d1ce8f18..e8fab2f9d82 100644 --- a/vortex-array/src/arrays/listview/vtable/mod.rs +++ b/vortex-array/src/arrays/listview/vtable/mod.rs @@ -1,9 +1,6 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors -use std::hash::Hash; -use std::sync::Arc; - use vortex_error::VortexResult; use vortex_error::vortex_bail; use vortex_error::vortex_ensure; @@ -17,10 +14,13 @@ use crate::ExecutionResult; use crate::Precision; use crate::ProstMetadata; use crate::SerializeMetadata; -use crate::arrays::ListViewArray; +use crate::array::Array; +use crate::array::ArrayId; +use crate::array::ArrayView; +use crate::array::VTable; +use crate::arrays::listview::ListViewData; use crate::arrays::listview::array::NUM_SLOTS; use crate::arrays::listview::array::SLOT_NAMES; -use crate::arrays::listview::array::VALIDITY_SLOT; use crate::arrays::listview::compute::rules::PARENT_RULES; use crate::buffer::BufferHandle; use crate::dtype::DType; @@ -29,16 +29,12 @@ use crate::dtype::PType; use crate::hash::ArrayEq; use crate::hash::ArrayHash; use crate::serde::ArrayChildren; -use crate::stats::StatsSetRef; +use crate::stats::ArrayStats; use crate::validity::Validity; use crate::vtable; -use crate::vtable::Array; -use crate::vtable::ArrayId; -use crate::vtable::VTable; -use crate::vtable::ValidityVTableFromValidityHelper; mod operations; mod validity; -vtable!(ListView); +vtable!(ListView, ListView, ListViewData); #[derive(Clone, Debug)] pub struct ListView; @@ -58,12 +54,12 @@ pub struct ListViewMetadata { } impl VTable for ListView { - type Array = ListViewArray; + type ArrayData = ListViewData; type Metadata = ProstMetadata; type OperationsVTable = Self; - type ValidityVTable = ValidityVTableFromValidityHelper; - fn vtable(_array: &Self::Array) -> &Self { + type ValidityVTable = Self; + fn vtable(_array: &ListViewData) -> &Self { &ListView } @@ -71,52 +67,46 @@ impl VTable for ListView { Self::ID } - fn len(array: &ListViewArray) -> usize { + fn len(array: &ListViewData) -> usize { debug_assert_eq!(array.offsets().len(), array.sizes().len()); array.offsets().len() } - fn dtype(array: &ListViewArray) -> &DType { + fn dtype(array: &ListViewData) -> &DType { &array.dtype } - fn stats(array: &ListViewArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &ListViewData) -> &ArrayStats { + &array.stats_set } - fn array_hash( - array: &ListViewArray, - state: &mut H, - precision: Precision, - ) { - array.dtype.hash(state); + fn array_hash(array: &ListViewData, state: &mut H, precision: Precision) { array.elements().array_hash(state, precision); array.offsets().array_hash(state, precision); array.sizes().array_hash(state, precision); - array.validity.array_hash(state, precision); + array.validity().array_hash(state, precision); } - fn array_eq(array: &ListViewArray, other: &ListViewArray, precision: Precision) -> bool { - array.dtype == other.dtype - && array.elements().array_eq(other.elements(), precision) + fn array_eq(array: &ListViewData, other: &ListViewData, precision: Precision) -> bool { + array.elements().array_eq(other.elements(), precision) && array.offsets().array_eq(other.offsets(), precision) && array.sizes().array_eq(other.sizes(), precision) - && array.validity.array_eq(&other.validity, precision) + && array.validity().array_eq(&other.validity(), precision) } - fn nbuffers(_array: &ListViewArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 0 } - fn buffer(_array: &ListViewArray, idx: usize) -> BufferHandle { + fn buffer(_array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { vortex_panic!("ListViewArray buffer index {idx} out of bounds") } - fn buffer_name(_array: &ListViewArray, idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, idx: usize) -> Option { vortex_panic!("ListViewArray buffer_name index {idx} out of bounds") } - fn metadata(array: &ListViewArray) -> VortexResult { + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { Ok(ProstMetadata(ListViewMetadata { elements_len: array.elements().len() as u64, offset_ptype: PType::try_from(array.offsets().dtype())? as i32, @@ -145,7 +135,7 @@ impl VTable for ListView { metadata: &Self::Metadata, buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { vortex_ensure!( buffers.is_empty(), "`ListViewArray::build` expects no buffers" @@ -188,38 +178,34 @@ impl VTable for ListView { len, )?; - ListViewArray::try_new(elements, offsets, sizes, validity) + ListViewData::try_new(elements, offsets, sizes, validity) } - fn slots(array: &ListViewArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &ListViewArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn with_slots(array: &mut ListViewArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "ListViewArray expects exactly {} slots, got {}", NUM_SLOTS, slots.len() ); - array.validity = match &slots[VALIDITY_SLOT] { - Some(arr) => Validity::Array(arr.clone()), - None => Validity::from(array.dtype.nullability()), - }; array.slots = slots; Ok(()) } - fn execute(array: Arc>, _ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, _ctx: &mut ExecutionCtx) -> VortexResult { Ok(ExecutionResult::done(array)) } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { diff --git a/vortex-array/src/arrays/listview/vtable/operations.rs b/vortex-array/src/arrays/listview/vtable/operations.rs index 340a5ff5f06..4a15c3dd8d0 100644 --- a/vortex-array/src/arrays/listview/vtable/operations.rs +++ b/vortex-array/src/arrays/listview/vtable/operations.rs @@ -6,14 +6,14 @@ use std::sync::Arc; use vortex_error::VortexResult; use crate::ExecutionCtx; +use crate::array::ArrayView; +use crate::array::OperationsVTable; use crate::arrays::ListView; -use crate::arrays::listview::vtable::ListViewArray; use crate::scalar::Scalar; -use crate::vtable::OperationsVTable; impl OperationsVTable for ListView { fn scalar_at( - array: &ListViewArray, + array: ArrayView<'_, ListView>, index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { diff --git a/vortex-array/src/arrays/listview/vtable/validity.rs b/vortex-array/src/arrays/listview/vtable/validity.rs index b0ed6ec6a1a..02be6bcedfd 100644 --- a/vortex-array/src/arrays/listview/vtable/validity.rs +++ b/vortex-array/src/arrays/listview/vtable/validity.rs @@ -1,12 +1,15 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors -use crate::arrays::listview::vtable::ListViewArray; +use vortex_error::VortexResult; + +use crate::array::ArrayView; +use crate::array::ValidityVTable; +use crate::arrays::listview::vtable::ListView; use crate::validity::Validity; -use crate::vtable::ValidityHelper; -impl ValidityHelper for ListViewArray { - fn validity(&self) -> Validity { - self.validity.clone() +impl ValidityVTable for ListView { + fn validity(array: ArrayView<'_, ListView>) -> VortexResult { + Ok(array.data().validity()) } } diff --git a/vortex-array/src/arrays/masked/array.rs b/vortex-array/src/arrays/masked/array.rs index 563c94a7e03..0c2bc773817 100644 --- a/vortex-array/src/arrays/masked/array.rs +++ b/vortex-array/src/arrays/masked/array.rs @@ -6,11 +6,13 @@ use vortex_error::VortexResult; use vortex_error::vortex_bail; use crate::ArrayRef; +use crate::array::Array; +use crate::array::child_to_validity; +use crate::array::validity_to_child; +use crate::arrays::Masked; use crate::dtype::DType; use crate::stats::ArrayStats; use crate::validity::Validity; -use crate::vtable::child_to_validity; -use crate::vtable::validity_to_child; /// The underlying child array being masked. pub(super) const CHILD_SLOT: usize = 0; @@ -20,13 +22,13 @@ pub(super) const NUM_SLOTS: usize = 2; pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["child", "validity"]; #[derive(Clone, Debug)] -pub struct MaskedArray { +pub struct MaskedData { pub(super) slots: Vec>, pub(super) dtype: DType, pub(super) stats: ArrayStats, } -impl MaskedArray { +impl MaskedData { pub fn try_new(child: ArrayRef, validity: Validity) -> VortexResult { if matches!(validity, Validity::NonNullable) { vortex_bail!("MaskedArray must have nullable validity, got {validity:?}") @@ -55,14 +57,42 @@ impl MaskedArray { }) } - /// Reconstructs the validity from the slots. + /// Returns the dtype of the array. + pub fn dtype(&self) -> &DType { + &self.dtype + } + + /// Returns the length of the array. + pub fn len(&self) -> usize { + self.child().len() + } + + /// Returns `true` if the array is empty. + pub fn is_empty(&self) -> bool { + self.len() == 0 + } + + /// Returns the validity of the array. + #[allow(clippy::same_name_method)] pub fn validity(&self) -> Validity { child_to_validity(&self.slots[VALIDITY_SLOT], self.dtype.nullability()) } + /// Returns the validity as a [`Mask`](vortex_mask::Mask). + pub fn validity_mask(&self) -> vortex_mask::Mask { + self.validity().to_mask(self.len()) + } + pub fn child(&self) -> &ArrayRef { self.slots[CHILD_SLOT] .as_ref() .vortex_expect("MaskedArray child slot") } } + +impl Array { + /// Constructs a new `MaskedArray`. + pub fn try_new(child: ArrayRef, validity: Validity) -> VortexResult { + Array::try_from_data(MaskedData::try_new(child, validity)?) + } +} diff --git a/vortex-array/src/arrays/masked/compute/filter.rs b/vortex-array/src/arrays/masked/compute/filter.rs index 8cf9b423f4f..a96c57feb1f 100644 --- a/vortex-array/src/arrays/masked/compute/filter.rs +++ b/vortex-array/src/arrays/masked/compute/filter.rs @@ -6,12 +6,13 @@ use vortex_mask::Mask; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Masked; -use crate::arrays::MaskedArray; use crate::arrays::filter::FilterReduce; +use crate::arrays::masked::MaskedData; impl FilterReduce for Masked { - fn filter(array: &MaskedArray, mask: &Mask) -> VortexResult> { + fn filter(array: ArrayView<'_, Masked>, mask: &Mask) -> VortexResult> { // Filter the validity to get the new validity let filtered_validity = array.validity().filter(mask)?; @@ -21,7 +22,7 @@ impl FilterReduce for Masked { // Construct new MaskedArray Ok(Some( - MaskedArray::try_new(filtered_child, filtered_validity)?.into_array(), + MaskedData::try_new(filtered_child, filtered_validity)?.into_array(), )) } } diff --git a/vortex-array/src/arrays/masked/compute/mask.rs b/vortex-array/src/arrays/masked/compute/mask.rs index c23f499d71a..a092b8f69b0 100644 --- a/vortex-array/src/arrays/masked/compute/mask.rs +++ b/vortex-array/src/arrays/masked/compute/mask.rs @@ -4,8 +4,8 @@ use vortex_error::VortexResult; use crate::ArrayRef; +use crate::array::ArrayView; use crate::arrays::Masked; -use crate::arrays::MaskedArray; use crate::arrays::scalar_fn::ScalarFnArrayExt; use crate::scalar_fn::EmptyOptions; use crate::scalar_fn::fns::mask::Mask as MaskExpr; @@ -13,7 +13,7 @@ use crate::scalar_fn::fns::mask::MaskReduce; use crate::validity::Validity; impl MaskReduce for Masked { - fn mask(array: &MaskedArray, mask: &ArrayRef) -> VortexResult> { + fn mask(array: ArrayView<'_, Masked>, mask: &ArrayRef) -> VortexResult> { // AND the existing validity mask with the new mask and push into child. let combined_mask = array .validity() diff --git a/vortex-array/src/arrays/masked/compute/slice.rs b/vortex-array/src/arrays/masked/compute/slice.rs index 19044da35c1..afa9b73a6e6 100644 --- a/vortex-array/src/arrays/masked/compute/slice.rs +++ b/vortex-array/src/arrays/masked/compute/slice.rs @@ -7,15 +7,16 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Masked; -use crate::arrays::MaskedArray; +use crate::arrays::masked::MaskedData; use crate::arrays::slice::SliceReduce; impl SliceReduce for Masked { - fn slice(array: &Self::Array, range: Range) -> VortexResult> { + fn slice(array: ArrayView<'_, Self>, range: Range) -> VortexResult> { let child = array.child().slice(range.clone())?; let validity = array.validity().slice(range)?; - Ok(Some(MaskedArray::try_new(child, validity)?.into_array())) + Ok(Some(MaskedData::try_new(child, validity)?.into_array())) } } diff --git a/vortex-array/src/arrays/masked/compute/take.rs b/vortex-array/src/arrays/masked/compute/take.rs index 98d4862e189..bd9a45b4711 100644 --- a/vortex-array/src/arrays/masked/compute/take.rs +++ b/vortex-array/src/arrays/masked/compute/take.rs @@ -4,23 +4,23 @@ use vortex_error::VortexResult; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Masked; -use crate::arrays::MaskedArray; use crate::arrays::dict::TakeReduce; +use crate::arrays::masked::MaskedData; use crate::builtins::ArrayBuiltins; use crate::scalar::Scalar; impl TakeReduce for Masked { - fn take(array: &MaskedArray, indices: &ArrayRef) -> VortexResult> { + fn take(array: ArrayView<'_, Masked>, indices: &ArrayRef) -> VortexResult> { let taken_child = if !indices.all_valid()? { // This is safe because we'll mask out these positions in the validity. let fill_scalar = Scalar::zero_value(indices.dtype()); - let filled_take_indices = indices.to_array().fill_null(fill_scalar)?; + let filled_take_indices = indices.clone().fill_null(fill_scalar)?; array.child().take(filled_take_indices)? } else { - array.child().take(indices.to_array())? + array.child().take(indices.clone())? }; // Compute the new validity by taking from array's validity and merging with indices validity @@ -28,7 +28,7 @@ impl TakeReduce for Masked { // Construct new MaskedArray Ok(Some( - MaskedArray::try_new(taken_child, taken_validity)?.into_array(), + MaskedData::try_new(taken_child, taken_validity)?.into_array(), )) } } diff --git a/vortex-array/src/arrays/masked/execute.rs b/vortex-array/src/arrays/masked/execute.rs index 3d100338895..bbf5b7fcb87 100644 --- a/vortex-array/src/arrays/masked/execute.rs +++ b/vortex-array/src/arrays/masked/execute.rs @@ -130,7 +130,7 @@ fn mask_validity_varbinview( Ok(unsafe { VarBinViewArray::new_handle_unchecked( array.views_handle().clone(), - array.buffers().clone(), + array.data_buffers().clone(), dtype, new_validity, ) @@ -143,7 +143,7 @@ fn mask_validity_listview( ctx: &mut ExecutionCtx, ) -> VortexResult { let len = array.len(); - let new_validity = combine_validity(&array.validity()?, mask, len, ctx)?; + let new_validity = combine_validity(&array.validity(), mask, len, ctx)?; // SAFETY: We're only changing validity, not the data structure Ok(unsafe { ListViewArray::new_unchecked( @@ -162,7 +162,7 @@ fn mask_validity_fixed_size_list( ) -> VortexResult { let len = array.len(); let list_size = array.list_size(); - let new_validity = combine_validity(&array.validity()?, mask, len, ctx)?; + let new_validity = combine_validity(&array.validity(), mask, len, ctx)?; // SAFETY: We're only changing validity, not the data structure Ok(unsafe { FixedSizeListArray::new_unchecked(array.elements().clone(), list_size, new_validity, len) @@ -176,7 +176,7 @@ fn mask_validity_struct( ) -> VortexResult { let len = array.len(); let new_validity = combine_validity(&array.validity(), mask, len, ctx)?; - let fields = array.unmasked_fields().clone(); + let fields = array.unmasked_fields(); let struct_fields = array.struct_fields().clone(); // SAFETY: We're only changing validity, not the data structure Ok(unsafe { StructArray::new_unchecked(fields, struct_fields, len, new_validity) }) diff --git a/vortex-array/src/arrays/masked/mod.rs b/vortex-array/src/arrays/masked/mod.rs index 36de8fd05b0..3343468e593 100644 --- a/vortex-array/src/arrays/masked/mod.rs +++ b/vortex-array/src/arrays/masked/mod.rs @@ -2,7 +2,8 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors mod array; -pub use array::MaskedArray; +pub use array::MaskedData; +pub use vtable::MaskedArray; pub(crate) mod compute; mod execute; diff --git a/vortex-array/src/arrays/masked/tests.rs b/vortex-array/src/arrays/masked/tests.rs index 2046ce691f1..23acae85e0d 100644 --- a/vortex-array/src/arrays/masked/tests.rs +++ b/vortex-array/src/arrays/masked/tests.rs @@ -5,7 +5,6 @@ use rstest::rstest; use vortex_error::VortexResult; use super::*; -use crate::DynArray; use crate::IntoArray; use crate::LEGACY_SESSION; use crate::ToCanonical as _; @@ -47,7 +46,7 @@ fn test_canonical_dtype_matches_array_dtype() -> VortexResult<()> { let array = MaskedArray::try_new(child, Validity::AllValid).unwrap(); let canonical = array.to_canonical()?; - assert_eq!(canonical.as_ref().dtype(), array.dtype()); + assert_eq!(canonical.dtype(), array.dtype()); Ok(()) } @@ -58,7 +57,7 @@ fn test_masked_child_with_validity() { let array = MaskedArray::try_new(child, Validity::from_iter([true, false, true, false, true])).unwrap(); - let prim = array.to_primitive(); + let prim = array.as_array().to_primitive(); // Positions where validity is false should be null in masked_child. assert_eq!(prim.valid_count().unwrap(), 3); @@ -73,7 +72,7 @@ fn test_masked_child_with_validity() { fn test_masked_child_all_valid() { // When validity is AllValid, masked_child should invert to AllInvalid. let child = PrimitiveArray::from_iter([10i32, 20, 30]).into_array(); - let array = MaskedArray::try_new(child.clone(), Validity::AllValid).unwrap(); + let array = MaskedArray::try_new(child, Validity::AllValid).unwrap(); assert_eq!(array.len(), 3); assert_eq!(array.valid_count().unwrap(), 3); diff --git a/vortex-array/src/arrays/masked/vtable/canonical.rs b/vortex-array/src/arrays/masked/vtable/canonical.rs index 429af6f83ae..c612f522ef8 100644 --- a/vortex-array/src/arrays/masked/vtable/canonical.rs +++ b/vortex-array/src/arrays/masked/vtable/canonical.rs @@ -7,7 +7,6 @@ mod tests { use vortex_error::VortexResult; use crate::IntoArray; - use crate::ToCanonical; use crate::arrays::MaskedArray; use crate::arrays::PrimitiveArray; use crate::dtype::Nullability; @@ -33,11 +32,8 @@ mod tests { #[case] expected_nullability: Nullability, ) -> VortexResult<()> { let canonical = array.to_canonical()?; - assert_eq!( - canonical.as_ref().dtype().nullability(), - expected_nullability - ); - assert_eq!(canonical.as_ref().dtype(), array.dtype()); + assert_eq!(canonical.dtype().nullability(), expected_nullability); + assert_eq!(canonical.dtype(), array.dtype()); Ok(()) } @@ -50,7 +46,7 @@ mod tests { .unwrap(); let canonical = array.to_canonical()?; - let prim = canonical.as_ref().to_primitive(); + let prim = canonical.into_primitive(); // Check that null positions match validity. assert_eq!(prim.valid_count().unwrap(), 3); @@ -71,11 +67,8 @@ mod tests { .unwrap(); let canonical = array.to_canonical()?; - assert_eq!(canonical.as_ref().valid_count().unwrap(), 3); - assert_eq!( - canonical.as_ref().dtype().nullability(), - Nullability::Nullable - ); + assert_eq!(canonical.dtype().nullability(), Nullability::Nullable); + assert_eq!(canonical.into_array().valid_count().unwrap(), 3); Ok(()) } } diff --git a/vortex-array/src/arrays/masked/vtable/mod.rs b/vortex-array/src/arrays/masked/vtable/mod.rs index 3b8b3b792f8..b7069998f99 100644 --- a/vortex-array/src/arrays/masked/vtable/mod.rs +++ b/vortex-array/src/arrays/masked/vtable/mod.rs @@ -4,9 +4,6 @@ mod canonical; mod operations; mod validity; -use std::hash::Hash; -use std::sync::Arc; - use vortex_error::VortexResult; use vortex_error::vortex_bail; use vortex_error::vortex_ensure; @@ -18,8 +15,12 @@ use crate::Canonical; use crate::EmptyMetadata; use crate::IntoArray; use crate::Precision; -use crate::arrays::ConstantArray; -use crate::arrays::MaskedArray; +use crate::array::Array; +use crate::array::ArrayId; +use crate::array::ArrayView; +use crate::array::VTable; +use crate::arrays::constant::ConstantData; +use crate::arrays::masked::MaskedData; use crate::arrays::masked::array::NUM_SLOTS; use crate::arrays::masked::array::SLOT_NAMES; use crate::arrays::masked::compute::rules::PARENT_RULES; @@ -32,13 +33,10 @@ use crate::hash::ArrayEq; use crate::hash::ArrayHash; use crate::scalar::Scalar; use crate::serde::ArrayChildren; -use crate::stats::StatsSetRef; +use crate::stats::ArrayStats; use crate::validity::Validity; use crate::vtable; -use crate::vtable::Array; -use crate::vtable::ArrayId; -use crate::vtable::VTable; -vtable!(Masked); +vtable!(Masked, Masked, MaskedData); #[derive(Clone, Debug)] pub struct Masked; @@ -48,13 +46,13 @@ impl Masked { } impl VTable for Masked { - type Array = MaskedArray; + type ArrayData = MaskedData; type Metadata = EmptyMetadata; type OperationsVTable = Self; type ValidityVTable = Self; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &Self::ArrayData) -> &Self { &Masked } @@ -62,43 +60,41 @@ impl VTable for Masked { Self::ID } - fn len(array: &MaskedArray) -> usize { + fn len(array: &MaskedData) -> usize { array.child().len() } - fn dtype(array: &MaskedArray) -> &DType { + fn dtype(array: &MaskedData) -> &DType { &array.dtype } - fn stats(array: &MaskedArray) -> StatsSetRef<'_> { - array.stats.to_ref(array.as_ref()) + fn stats(array: &MaskedData) -> &ArrayStats { + &array.stats } - fn array_hash(array: &MaskedArray, state: &mut H, precision: Precision) { + fn array_hash(array: &MaskedData, state: &mut H, precision: Precision) { array.child().array_hash(state, precision); array.validity().array_hash(state, precision); - array.dtype.hash(state); } - fn array_eq(array: &MaskedArray, other: &MaskedArray, precision: Precision) -> bool { + fn array_eq(array: &MaskedData, other: &MaskedData, precision: Precision) -> bool { array.child().array_eq(other.child(), precision) && array.validity().array_eq(&other.validity(), precision) - && array.dtype == other.dtype } - fn nbuffers(_array: &Self::Array) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 0 } - fn buffer(_array: &Self::Array, _idx: usize) -> BufferHandle { + fn buffer(_array: ArrayView<'_, Self>, _idx: usize) -> BufferHandle { vortex_panic!("MaskedArray has no buffers") } - fn buffer_name(_array: &Self::Array, _idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, _idx: usize) -> Option { None } - fn metadata(_array: &MaskedArray) -> VortexResult { + fn metadata(_array: ArrayView<'_, Self>) -> VortexResult { Ok(EmptyMetadata) } @@ -122,7 +118,7 @@ impl VTable for Masked { _metadata: &Self::Metadata, buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { if !buffers.is_empty() { vortex_bail!("Expected 0 buffer, got {}", buffers.len()); } @@ -142,16 +138,16 @@ impl VTable for Masked { Validity::from(dtype.nullability()) }; - MaskedArray::try_new(child, validity) + MaskedData::try_new(child, validity) } - fn execute(array: Arc>, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, ctx: &mut ExecutionCtx) -> VortexResult { let validity_mask = array.validity_mask()?; // Fast path: all masked means result is all nulls. if validity_mask.all_false() { return Ok(ExecutionResult::done( - ConstantArray::new(Scalar::null(array.dtype().as_nullable()), array.len()) + ConstantData::new(Scalar::null(array.dtype().as_nullable()), array.len()) .into_array(), )); } @@ -169,22 +165,22 @@ impl VTable for Masked { } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { PARENT_RULES.evaluate(array, parent, child_idx) } - fn slots(array: &MaskedArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &MaskedArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn with_slots(array: &mut MaskedArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "MaskedArray expects exactly {} slots, got {}", @@ -291,7 +287,7 @@ mod tests { let result: Canonical = array.into_array().execute(&mut ctx)?; assert_eq!( - result.as_ref().dtype().nullability(), + result.dtype().nullability(), Nullability::Nullable, "MaskedArray execute should produce Nullable dtype" ); diff --git a/vortex-array/src/arrays/masked/vtable/operations.rs b/vortex-array/src/arrays/masked/vtable/operations.rs index a9f2f7f9ac3..e90b65f5315 100644 --- a/vortex-array/src/arrays/masked/vtable/operations.rs +++ b/vortex-array/src/arrays/masked/vtable/operations.rs @@ -3,16 +3,15 @@ use vortex_error::VortexResult; -use crate::DynArray; use crate::ExecutionCtx; +use crate::array::ArrayView; +use crate::array::OperationsVTable; use crate::arrays::Masked; -use crate::arrays::MaskedArray; use crate::scalar::Scalar; -use crate::vtable::OperationsVTable; impl OperationsVTable for Masked { fn scalar_at( - array: &MaskedArray, + array: ArrayView<'_, Masked>, index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { diff --git a/vortex-array/src/arrays/masked/vtable/validity.rs b/vortex-array/src/arrays/masked/vtable/validity.rs index 5f020d6708a..6386d23dbb5 100644 --- a/vortex-array/src/arrays/masked/vtable/validity.rs +++ b/vortex-array/src/arrays/masked/vtable/validity.rs @@ -3,13 +3,13 @@ use vortex_error::VortexResult; -use crate::arrays::MaskedArray; +use crate::array::ArrayView; +use crate::array::ValidityVTable; use crate::arrays::masked::vtable::Masked; use crate::validity::Validity; -use crate::vtable::ValidityVTable; impl ValidityVTable for Masked { - fn validity(array: &MaskedArray) -> VortexResult { - Ok(array.validity()) + fn validity(array: ArrayView<'_, Masked>) -> VortexResult { + Ok(array.data().validity()) } } diff --git a/vortex-array/src/arrays/null/compute/cast.rs b/vortex-array/src/arrays/null/compute/cast.rs index 15989cbe95e..b39dea5988b 100644 --- a/vortex-array/src/arrays/null/compute/cast.rs +++ b/vortex-array/src/arrays/null/compute/cast.rs @@ -6,20 +6,20 @@ use vortex_error::vortex_bail; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::ConstantArray; use crate::arrays::Null; -use crate::arrays::NullArray; use crate::dtype::DType; use crate::scalar::Scalar; use crate::scalar_fn::fns::cast::CastReduce; impl CastReduce for Null { - fn cast(array: &NullArray, dtype: &DType) -> VortexResult> { + fn cast(array: ArrayView<'_, Null>, dtype: &DType) -> VortexResult> { if !dtype.is_nullable() { vortex_bail!("Cannot cast Null to {}", dtype); } if dtype == &DType::Null { - return Ok(Some(array.clone().into_array())); + return Ok(Some(array.array().clone())); } let scalar = Scalar::null(dtype.clone()); diff --git a/vortex-array/src/arrays/null/compute/filter.rs b/vortex-array/src/arrays/null/compute/filter.rs index fa27d267aca..23e35b1fec1 100644 --- a/vortex-array/src/arrays/null/compute/filter.rs +++ b/vortex-array/src/arrays/null/compute/filter.rs @@ -6,12 +6,13 @@ use vortex_mask::Mask; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Null; use crate::arrays::NullArray; use crate::arrays::filter::FilterReduce; impl FilterReduce for Null { - fn filter(_array: &NullArray, mask: &Mask) -> VortexResult> { + fn filter(_array: ArrayView<'_, Null>, mask: &Mask) -> VortexResult> { Ok(Some(NullArray::new(mask.true_count()).into_array())) } } diff --git a/vortex-array/src/arrays/null/compute/mask.rs b/vortex-array/src/arrays/null/compute/mask.rs index 8fcbe55c6ee..dbb3afaad1c 100644 --- a/vortex-array/src/arrays/null/compute/mask.rs +++ b/vortex-array/src/arrays/null/compute/mask.rs @@ -4,14 +4,13 @@ use vortex_error::VortexResult; use crate::ArrayRef; -use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Null; -use crate::arrays::NullArray; use crate::scalar_fn::fns::mask::MaskReduce; impl MaskReduce for Null { - fn mask(array: &NullArray, _mask: &ArrayRef) -> VortexResult> { + fn mask(array: ArrayView<'_, Null>, _mask: &ArrayRef) -> VortexResult> { // Null array is already all nulls, masking has no effect. - Ok(Some(array.clone().into_array())) + Ok(Some(array.array().clone())) } } diff --git a/vortex-array/src/arrays/null/compute/mod.rs b/vortex-array/src/arrays/null/compute/mod.rs index 55fcf7b120b..ad5558a8807 100644 --- a/vortex-array/src/arrays/null/compute/mod.rs +++ b/vortex-array/src/arrays/null/compute/mod.rs @@ -29,7 +29,10 @@ mod test { let sliced = nulls.slice(0..4).unwrap().to_null(); assert_eq!(sliced.len(), 4); - assert!(matches!(sliced.validity_mask().unwrap(), Mask::AllFalse(4))); + assert!(matches!( + sliced.as_array().validity_mask().unwrap(), + Mask::AllFalse(4) + )); } #[test] @@ -41,7 +44,10 @@ mod test { .to_null(); assert_eq!(taken.len(), 5); - assert!(matches!(taken.validity_mask().unwrap(), Mask::AllFalse(5))); + assert!(matches!( + taken.as_array().validity_mask().unwrap(), + Mask::AllFalse(5) + )); } #[test] diff --git a/vortex-array/src/arrays/null/compute/slice.rs b/vortex-array/src/arrays/null/compute/slice.rs index bcc7b13e953..19e46dd652d 100644 --- a/vortex-array/src/arrays/null/compute/slice.rs +++ b/vortex-array/src/arrays/null/compute/slice.rs @@ -7,12 +7,13 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Null; use crate::arrays::NullArray; use crate::arrays::slice::SliceReduce; impl SliceReduce for Null { - fn slice(_array: &Self::Array, range: Range) -> VortexResult> { + fn slice(_array: ArrayView<'_, Self>, range: Range) -> VortexResult> { Ok(Some(NullArray::new(range.len()).into_array())) } } diff --git a/vortex-array/src/arrays/null/compute/take.rs b/vortex-array/src/arrays/null/compute/take.rs index 73d16d0442c..f24b89aea45 100644 --- a/vortex-array/src/arrays/null/compute/take.rs +++ b/vortex-array/src/arrays/null/compute/take.rs @@ -7,6 +7,7 @@ use vortex_error::vortex_bail; use crate::ArrayRef; use crate::IntoArray; use crate::ToCanonical; +use crate::array::ArrayView; use crate::arrays::Null; use crate::arrays::NullArray; use crate::arrays::dict::TakeReduce; @@ -16,7 +17,7 @@ use crate::optimizer::rules::ParentRuleSet; impl TakeReduce for Null { #[allow(clippy::cast_possible_truncation)] - fn take(array: &NullArray, indices: &ArrayRef) -> VortexResult> { + fn take(array: ArrayView<'_, Null>, indices: &ArrayRef) -> VortexResult> { let indices = indices.to_primitive(); // Enforce all indices are valid diff --git a/vortex-array/src/arrays/null/mod.rs b/vortex-array/src/arrays/null/mod.rs index 2728f519c4d..2643a9ae4cf 100644 --- a/vortex-array/src/arrays/null/mod.rs +++ b/vortex-array/src/arrays/null/mod.rs @@ -1,9 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors -use std::hash::Hash; -use std::sync::Arc; - +use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_error::vortex_ensure; use vortex_error::vortex_panic; @@ -14,35 +12,35 @@ use crate::EmptyMetadata; use crate::ExecutionCtx; use crate::ExecutionResult; use crate::Precision; +use crate::array::Array; +use crate::array::ArrayId; +use crate::array::ArrayView; +use crate::array::OperationsVTable; +use crate::array::VTable; +use crate::array::ValidityVTable; use crate::arrays::null::compute::rules::PARENT_RULES; use crate::buffer::BufferHandle; use crate::dtype::DType; use crate::scalar::Scalar; use crate::serde::ArrayChildren; use crate::stats::ArrayStats; -use crate::stats::StatsSetRef; use crate::validity::Validity; use crate::vtable; -use crate::vtable::Array; -use crate::vtable::ArrayId; -use crate::vtable::OperationsVTable; -use crate::vtable::VTable; -use crate::vtable::ValidityVTable; const NUM_SLOTS: usize = 0; pub(crate) mod compute; -vtable!(Null); +vtable!(Null, Null, NullData); impl VTable for Null { - type Array = NullArray; + type ArrayData = NullData; type Metadata = EmptyMetadata; type OperationsVTable = Self; type ValidityVTable = Self; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &Self::ArrayData) -> &Self { &Null } @@ -50,58 +48,58 @@ impl VTable for Null { Self::ID } - fn len(array: &NullArray) -> usize { + fn len(array: &NullData) -> usize { array.len } - fn dtype(_array: &NullArray) -> &DType { + fn dtype(_array: &NullData) -> &DType { &DType::Null } - fn stats(array: &NullArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &NullData) -> &ArrayStats { + &array.stats_set } - fn array_hash(array: &NullArray, state: &mut H, _precision: Precision) { - array.len.hash(state); + fn array_hash(_array: &NullData, _state: &mut H, _precision: Precision) { + // len and dtype are hashed by ArrayInner; NullData has no additional fields. } - fn array_eq(array: &NullArray, other: &NullArray, _precision: Precision) -> bool { - array.len == other.len + fn array_eq(_array: &NullData, _other: &NullData, _precision: Precision) -> bool { + // len and dtype are compared by ArrayInner; NullData has no additional fields. + true } - fn nbuffers(_array: &NullArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 0 } - fn buffer(_array: &NullArray, idx: usize) -> BufferHandle { + fn buffer(_array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { vortex_panic!("NullArray buffer index {idx} out of bounds") } - fn buffer_name(_array: &NullArray, _idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, _idx: usize) -> Option { None } - fn slots(array: &NullArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &NullArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { vortex_panic!("NullArray slot_name index {idx} out of bounds") } - fn with_slots(array: &mut NullArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(_array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "NullArray expects exactly {} slots, got {}", NUM_SLOTS, slots.len() ); - array.slots = slots; Ok(()) } - fn metadata(_array: &NullArray) -> VortexResult { + fn metadata(_array: ArrayView<'_, Self>) -> VortexResult { Ok(EmptyMetadata) } @@ -125,19 +123,19 @@ impl VTable for Null { _metadata: &Self::Metadata, _buffers: &[BufferHandle], _children: &dyn ArrayChildren, - ) -> VortexResult { - Ok(NullArray::new(len)) + ) -> VortexResult { + Ok(NullData::new(len)) } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { PARENT_RULES.evaluate(array, parent, child_idx) } - fn execute(array: Arc>, _ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, _ctx: &mut ExecutionCtx) -> VortexResult { Ok(ExecutionResult::done(array)) } } @@ -170,7 +168,7 @@ impl VTable for Null { /// # } /// ``` #[derive(Clone, Debug)] -pub struct NullArray { +pub struct NullData { len: usize, slots: Vec>, stats_set: ArrayStats, @@ -183,7 +181,13 @@ impl Null { pub const ID: ArrayId = ArrayId::new_ref("vortex.null"); } -impl NullArray { +impl Array { + pub fn new(len: usize) -> Self { + Array::try_from_data(NullData::new(len)).vortex_expect("NullData is always valid") + } +} + +impl NullData { pub fn new(len: usize) -> Self { Self { len, @@ -191,10 +195,25 @@ impl NullArray { stats_set: Default::default(), } } + + /// Returns the dtype of the array (always [`DType::Null`]). + pub fn dtype(&self) -> &DType { + &DType::Null + } + + /// Returns the length of the array. + pub fn len(&self) -> usize { + self.len + } + + /// Returns `true` if the array is empty. + pub fn is_empty(&self) -> bool { + self.len() == 0 + } } impl OperationsVTable for Null { fn scalar_at( - _array: &NullArray, + _array: ArrayView<'_, Null>, _index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { @@ -203,7 +222,7 @@ impl OperationsVTable for Null { } impl ValidityVTable for Null { - fn validity(_array: &NullArray) -> VortexResult { + fn validity(_array: ArrayView<'_, Null>) -> VortexResult { Ok(Validity::AllInvalid) } } diff --git a/vortex-array/src/arrays/patched/array.rs b/vortex-array/src/arrays/patched/array.rs index 6a7b9a28e21..9c0d541f5db 100644 --- a/vortex-array/src/arrays/patched/array.rs +++ b/vortex-array/src/arrays/patched/array.rs @@ -12,7 +12,6 @@ use vortex_error::vortex_err; use crate::ArrayRef; use crate::Canonical; -use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; use crate::arrays::PrimitiveArray; diff --git a/vortex-array/src/arrays/patched/compute/compare.rs b/vortex-array/src/arrays/patched/compute/compare.rs index 43279501cdb..0ec4448da37 100644 --- a/vortex-array/src/arrays/patched/compute/compare.rs +++ b/vortex-array/src/arrays/patched/compute/compare.rs @@ -9,6 +9,7 @@ use crate::ArrayRef; use crate::Canonical; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::BoolArray; use crate::arrays::ConstantArray; use crate::arrays::Patched; @@ -23,7 +24,7 @@ use crate::scalar_fn::fns::operators::CompareOperator; impl CompareKernel for Patched { fn compare( - lhs: &Self::Array, + lhs: ArrayView<'_, Self>, rhs: &ArrayRef, operator: CompareOperator, ctx: &mut ExecutionCtx, @@ -160,10 +161,10 @@ mod tests { use vortex_buffer::buffer; use vortex_error::VortexResult; - use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; use crate::LEGACY_SESSION; + use crate::array::Array; use crate::arrays::BoolArray; use crate::arrays::ConstantArray; use crate::arrays::Patched; @@ -190,13 +191,17 @@ mod tests { let mut ctx = ExecutionCtx::new(LEGACY_SESSION.clone()); - let lhs = PatchedArray::from_array_and_patches(lhs, &patches, &mut ctx).unwrap(); + let lhs = Array::::try_from_data( + PatchedArray::from_array_and_patches(lhs, &patches, &mut ctx).unwrap(), + ) + .unwrap(); let rhs = ConstantArray::new(u32::MAX, 512).into_array(); - let result = ::compare(&lhs, &rhs, CompareOperator::Eq, &mut ctx) - .unwrap() - .unwrap(); + let result = + ::compare(lhs.as_view(), &rhs, CompareOperator::Eq, &mut ctx) + .unwrap() + .unwrap(); let expected = BoolArray::from_indices(512, [509, 510, 511], Validity::NonNullable).into_array(); @@ -220,21 +225,17 @@ mod tests { let lhs = PatchedArray::from_array_and_patches(lhs, &patches, &mut ctx).unwrap(); // Slice the array so that the first patch should be skipped. - let lhs = lhs - .slice(10..lhs.len()) - .unwrap() - .optimize() - .unwrap() - .try_into::() - .unwrap(); + let lhs_ref = lhs.into_array().slice(10..512).unwrap().optimize().unwrap(); + let lhs = lhs_ref.try_into::().unwrap(); assert_eq!(lhs.len(), 502); let rhs = ConstantArray::new(u32::MAX, lhs.len()).into_array(); - let result = ::compare(&lhs, &rhs, CompareOperator::Eq, &mut ctx) - .unwrap() - .unwrap(); + let result = + ::compare(lhs.as_view(), &rhs, CompareOperator::Eq, &mut ctx) + .unwrap() + .unwrap(); let expected = BoolArray::from_indices(502, [500, 501], Validity::NonNullable).into_array(); @@ -258,13 +259,19 @@ mod tests { )?; let mut ctx = ExecutionCtx::new(LEGACY_SESSION.clone()); - let lhs = PatchedArray::from_array_and_patches(lhs, &patches, &mut ctx)?; + let lhs = Array::::try_from_data(PatchedArray::from_array_and_patches( + lhs, &patches, &mut ctx, + )?)?; let rhs = ConstantArray::new(subnormal, 512).into_array(); - let result = - ::compare(&lhs, &rhs, CompareOperator::Eq, &mut ctx)? - .unwrap(); + let result = ::compare( + lhs.as_view(), + &rhs, + CompareOperator::Eq, + &mut ctx, + )? + .unwrap(); let expected = BoolArray::from_indices(512, [510], Validity::NonNullable).into_array(); @@ -285,13 +292,19 @@ mod tests { )?; let mut ctx = ExecutionCtx::new(LEGACY_SESSION.clone()); - let lhs = PatchedArray::from_array_and_patches(lhs, &patches, &mut ctx)?; + let lhs = Array::::try_from_data(PatchedArray::from_array_and_patches( + lhs, &patches, &mut ctx, + )?)?; let rhs = ConstantArray::new(0.0f32, 10).into_array(); - let result = - ::compare(&lhs, &rhs, CompareOperator::Eq, &mut ctx)? - .unwrap(); + let result = ::compare( + lhs.as_view(), + &rhs, + CompareOperator::Eq, + &mut ctx, + )? + .unwrap(); let expected = BoolArray::from_indices(10, [7], Validity::NonNullable).into_array(); diff --git a/vortex-array/src/arrays/patched/compute/filter.rs b/vortex-array/src/arrays/patched/compute/filter.rs index baf4e027aae..71aee0238ee 100644 --- a/vortex-array/src/arrays/patched/compute/filter.rs +++ b/vortex-array/src/arrays/patched/compute/filter.rs @@ -7,12 +7,13 @@ use vortex_mask::Mask; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::FilterArray; use crate::arrays::Patched; use crate::arrays::filter::FilterReduce; impl FilterReduce for Patched { - fn filter(array: &Self::Array, mask: &Mask) -> VortexResult> { + fn filter(array: ArrayView<'_, Self>, mask: &Mask) -> VortexResult> { // Find the contiguous chunk range that the mask covers. We use this to slice the inner // components, then wrap the rest up with another FilterArray. // @@ -65,7 +66,6 @@ mod tests { use vortex_error::VortexResult; use vortex_mask::Mask; - use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; use crate::LEGACY_SESSION; @@ -202,7 +202,7 @@ mod tests { // Slice at chunk boundary to create offset > 0. After slicing [1024..5120], // we have 4096 elements and patches are at relative indices 1024 and 1025. - let sliced = patched.slice(1024..5120)?.into_array(); + let sliced = patched.into_array().slice(1024..5120)?; assert_eq!(sliced.len(), 4096); // Filter that only touches the middle 2 chunks (chunks 1 and 2). @@ -277,7 +277,7 @@ mod tests { // Slice at chunk boundary to create offset > 0. // Slice [1024..6144] gives us 5120 elements (5 chunks). // Original patches at 5000 and 6000 become relative indices 3976 and 4976. - let sliced = patched.slice(1024..6144)?.optimize()?; + let sliced = patched.into_array().slice(1024..6144)?.optimize()?; assert_eq!(sliced.len(), 5120); // Filter that touches only the last 2 chunks (chunks 3 and 4). diff --git a/vortex-array/src/arrays/patched/compute/take.rs b/vortex-array/src/arrays/patched/compute/take.rs index ec2a66d87dd..6fac5826537 100644 --- a/vortex-array/src/arrays/patched/compute/take.rs +++ b/vortex-array/src/arrays/patched/compute/take.rs @@ -6,9 +6,9 @@ use vortex_buffer::Buffer; use vortex_error::VortexResult; use crate::ArrayRef; -use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Patched; use crate::arrays::PrimitiveArray; use crate::arrays::dict::TakeExecute; @@ -20,7 +20,7 @@ use crate::match_each_unsigned_integer_ptype; impl TakeExecute for Patched { fn take( - array: &Self::Array, + array: ArrayView<'_, Self>, indices: &ArrayRef, ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -39,7 +39,7 @@ impl TakeExecute for Patched { buffer, validity, ptype, - } = inner.into_parts(); + } = inner.into_data().into_parts(); let indices_ptype = indices.dtype().as_ptype(); @@ -134,7 +134,6 @@ mod tests { use vortex_session::VortexSession; use crate::ArrayRef; - use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; use crate::arrays::PatchedArray; @@ -160,7 +159,9 @@ mod tests { let session = VortexSession::empty(); let mut ctx = ExecutionCtx::new(session); - PatchedArray::from_array_and_patches(values, &patches, &mut ctx)?.slice(slice) + PatchedArray::from_array_and_patches(values, &patches, &mut ctx)? + .into_array() + .slice(slice) } #[test] diff --git a/vortex-array/src/arrays/patched/vtable/mod.rs b/vortex-array/src/arrays/patched/vtable/mod.rs index e015af1b352..eb5c887772a 100644 --- a/vortex-array/src/arrays/patched/vtable/mod.rs +++ b/vortex-array/src/arrays/patched/vtable/mod.rs @@ -7,7 +7,6 @@ mod slice; use std::hash::Hash; use std::hash::Hasher; -use std::sync::Arc; use vortex_buffer::Buffer; use vortex_error::VortexExpect; @@ -21,13 +20,18 @@ use crate::ArrayHash; use crate::ArrayRef; use crate::Canonical; use crate::DeserializeMetadata; -use crate::DynArray; use crate::ExecutionCtx; use crate::ExecutionResult; use crate::IntoArray; use crate::Precision; use crate::ProstMetadata; use crate::SerializeMetadata; +use crate::array::Array; +use crate::array::ArrayId; +use crate::array::ArrayView; +use crate::array::VTable; +use crate::array::ValidityChild; +use crate::array::ValidityVTableFromChild; use crate::arrays::PrimitiveArray; use crate::arrays::patched::PatchedArray; use crate::arrays::patched::array::NUM_SLOTS; @@ -44,13 +48,7 @@ use crate::dtype::PType; use crate::match_each_native_ptype; use crate::serde::ArrayChildren; use crate::stats::ArrayStats; -use crate::stats::StatsSetRef; use crate::vtable; -use crate::vtable::Array; -use crate::vtable::ArrayId; -use crate::vtable::VTable; -use crate::vtable::ValidityChild; -use crate::vtable::ValidityVTableFromChild; vtable!(Patched); @@ -81,12 +79,12 @@ pub struct PatchedMetadata { } impl VTable for Patched { - type Array = PatchedArray; + type ArrayData = PatchedArray; type Metadata = ProstMetadata; type OperationsVTable = Self; type ValidityVTable = ValidityVTableFromChild; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &Self::ArrayData) -> &Self { &Patched } @@ -94,20 +92,19 @@ impl VTable for Patched { ArrayId::new_ref("vortex.patched") } - fn len(array: &Self::Array) -> usize { + fn len(array: &Self::ArrayData) -> usize { array.len } - fn dtype(array: &Self::Array) -> &DType { + fn dtype(array: &Self::ArrayData) -> &DType { array.base_array().dtype() } - fn stats(array: &Self::Array) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &Self::ArrayData) -> &ArrayStats { + &array.stats_set } - fn array_hash(array: &Self::Array, state: &mut H, precision: Precision) { - array.len.hash(state); + fn array_hash(array: &PatchedArray, state: &mut H, precision: Precision) { array.offset.hash(state); array.n_lanes.hash(state); array.base_array().array_hash(state, precision); @@ -116,9 +113,8 @@ impl VTable for Patched { array.patch_values().array_hash(state, precision); } - fn array_eq(array: &Self::Array, other: &Self::Array, precision: Precision) -> bool { - array.len == other.len - && array.offset == other.offset + fn array_eq(array: &PatchedArray, other: &PatchedArray, precision: Precision) -> bool { + array.offset == other.offset && array.n_lanes == other.n_lanes && array.base_array().array_eq(other.base_array(), precision) && array @@ -132,19 +128,19 @@ impl VTable for Patched { .array_eq(other.patch_values(), precision) } - fn nbuffers(_array: &Self::Array) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 0 } - fn buffer(_array: &Self::Array, idx: usize) -> BufferHandle { + fn buffer(_array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { vortex_panic!("invalid buffer index for PatchedArray: {idx}"); } - fn buffer_name(_array: &Self::Array, idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, idx: usize) -> Option { vortex_panic!("invalid buffer index for PatchedArray: {idx}"); } - fn child(array: &Self::Array, idx: usize) -> ArrayRef { + fn child(array: ArrayView<'_, Self>, idx: usize) -> ArrayRef { match idx { 0 => array.base_array().clone(), 1 => array.lane_offsets().clone(), @@ -154,7 +150,7 @@ impl VTable for Patched { } } - fn metadata(array: &Self::Array) -> VortexResult { + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { Ok(ProstMetadata(PatchedMetadata { n_patches: u32::try_from(array.patch_indices().len())?, n_lanes: u32::try_from(array.n_lanes)?, @@ -178,17 +174,17 @@ impl VTable for Patched { } fn append_to_builder( - array: &Self::Array, + array: ArrayView<'_, Self>, builder: &mut dyn ArrayBuilder, ctx: &mut ExecutionCtx, ) -> VortexResult<()> { - let dtype = array.dtype(); + let dtype = array.array().dtype(); if !dtype.is_primitive() { // Default pathway: canonicalize and propagate. let canonical = array + .array() .clone() - .into_array() .execute::(ctx)? .into_array(); builder.extend_from_array(&canonical); @@ -269,15 +265,15 @@ impl VTable for Patched { }) } - fn slots(array: &Self::Array) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &Self::Array, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn with_slots(array: &mut Self::Array, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "PatchedArray expects exactly {} slots, got {}", @@ -288,7 +284,7 @@ impl VTable for Patched { Ok(()) } - fn execute(array: Arc>, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, ctx: &mut ExecutionCtx) -> VortexResult { let inner = array .base_array() .clone() @@ -299,7 +295,7 @@ impl VTable for Patched { buffer, ptype, validity, - } = inner.into_parts(); + } = inner.into_data().into_parts(); let lane_offsets = array .lane_offsets() @@ -341,7 +337,7 @@ impl VTable for Patched { } fn execute_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, @@ -350,7 +346,7 @@ impl VTable for Patched { } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { @@ -399,7 +395,6 @@ mod tests { use crate::ArrayContext; use crate::Canonical; - use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; use crate::LEGACY_SESSION; @@ -463,6 +458,7 @@ mod tests { let array = PatchedArray::from_array_and_patches(values, &patches, &mut ctx) .unwrap() + .into_array() .slice(3..1024) .unwrap(); @@ -528,6 +524,7 @@ mod tests { let array = PatchedArray::from_array_and_patches(values, &patches, &mut ctx) .unwrap() + .into_array() .slice(3..1024) .unwrap(); @@ -618,17 +615,14 @@ mod tests { )] #[case::sliced({ let arr = make_patched_array(vec![0u16; 1024], &[1, 2, 3], &[10, 20, 30]).unwrap(); - arr.slice(2..1024).unwrap() + arr.into_array().slice(2..1024).unwrap() })] fn test_serde_roundtrip(#[case] array: crate::ArrayRef) { let dtype = array.dtype().clone(); let len = array.len(); let ctx = ArrayContext::empty(); - let serialized = array - .clone() - .serialize(&ctx, &SerializeOptions::default()) - .unwrap(); + let serialized = array.serialize(&ctx, &SerializeOptions::default()).unwrap(); // Concat into a single buffer. let mut concat = ByteBufferMut::empty(); @@ -665,23 +659,20 @@ mod tests { let values = array.patch_values().clone(); // Create new PatchedArray with same children using with_slots - let array_ref = array.clone().into_array(); + let array_ref = array.into_array(); let vtable = array_ref.vtable().clone_boxed(); let new_array = vtable.with_slots( - array_ref, + array_ref.clone(), vec![Some(inner), Some(lane_offsets), Some(indices), Some(values)], )?; assert!(new_array.is::()); - assert_eq!(array.len(), new_array.len()); - assert_eq!(array.dtype(), new_array.dtype()); + assert_eq!(array_ref.len(), new_array.len()); + assert_eq!(array_ref.dtype(), new_array.dtype()); // Execute both and compare results let mut ctx = ExecutionCtx::new(VortexSession::empty()); - let original_executed = array - .into_array() - .execute::(&mut ctx)? - .into_primitive(); + let original_executed = array_ref.execute::(&mut ctx)?.into_primitive(); let new_executed = new_array.execute::(&mut ctx)?.into_primitive(); assert_arrays_eq!(original_executed, new_executed); diff --git a/vortex-array/src/arrays/patched/vtable/operations.rs b/vortex-array/src/arrays/patched/vtable/operations.rs index 3bef1d2cb06..87b29392cb7 100644 --- a/vortex-array/src/arrays/patched/vtable/operations.rs +++ b/vortex-array/src/arrays/patched/vtable/operations.rs @@ -3,18 +3,17 @@ use vortex_error::VortexResult; -use crate::DynArray; use crate::ExecutionCtx; +use crate::array::ArrayView; +use crate::array::OperationsVTable; use crate::arrays::PrimitiveArray; use crate::arrays::patched::Patched; -use crate::arrays::patched::PatchedArray; use crate::optimizer::ArrayOptimizer; use crate::scalar::Scalar; -use crate::vtable::OperationsVTable; impl OperationsVTable for Patched { fn scalar_at( - array: &PatchedArray, + array: ArrayView<'_, Patched>, index: usize, ctx: &mut ExecutionCtx, ) -> VortexResult { @@ -56,7 +55,6 @@ mod tests { use vortex_buffer::buffer; use vortex_session::VortexSession; - use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; use crate::arrays::Patched; diff --git a/vortex-array/src/arrays/patched/vtable/slice.rs b/vortex-array/src/arrays/patched/vtable/slice.rs index 543f6378426..71d68585ebe 100644 --- a/vortex-array/src/arrays/patched/vtable/slice.rs +++ b/vortex-array/src/arrays/patched/vtable/slice.rs @@ -6,15 +6,15 @@ use std::ops::Range; use vortex_error::VortexResult; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Patched; use crate::arrays::PatchedArray; use crate::arrays::slice::SliceReduce; use crate::stats::ArrayStats; impl SliceReduce for Patched { - fn slice(array: &Self::Array, range: Range) -> VortexResult> { + fn slice(array: ArrayView<'_, Self>, range: Range) -> VortexResult> { // We **always** slice the patches at 1024-element chunk boundaries. We keep the offset + len // around so that when we execute we know how much to chop off. let new_offset = (range.start + array.offset) % 1024; @@ -60,7 +60,6 @@ mod tests { use vortex_error::VortexResult; use crate::Canonical; - use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; use crate::LEGACY_SESSION; @@ -81,7 +80,7 @@ mod tests { let patched_array = PatchedArray::from_array_and_patches(values, &patches, &mut ctx)?; - let sliced = patched_array.slice(1..10)?; + let sliced = patched_array.into_array().slice(1..10)?; insta::assert_snapshot!( sliced.display_tree_encodings_only(), @@ -126,7 +125,9 @@ mod tests { let mut ctx = ExecutionCtx::new(LEGACY_SESSION.clone()); let patched_array = - PatchedArray::from_array_and_patches(inner.into_array(), &patches, &mut ctx).unwrap(); + PatchedArray::from_array_and_patches(inner.into_array(), &patches, &mut ctx) + .unwrap() + .into_array(); // Verify that applying slice first yields same result as applying slice at end. let slice_first = patched_array @@ -137,7 +138,6 @@ mod tests { .into_array(); let slice_last = patched_array - .into_array() .execute::(&mut ctx) .unwrap() .into_primitive() @@ -157,8 +157,9 @@ mod tests { let patches = Patches::new(10_000, 0, patched_indices, patched_values, None).unwrap(); let mut ctx = ExecutionCtx::new(LEGACY_SESSION.clone()); - let patched_array = - PatchedArray::from_array_and_patches(values, &patches, &mut ctx).unwrap(); + let patched_array = PatchedArray::from_array_and_patches(values, &patches, &mut ctx) + .unwrap() + .into_array(); let sliced = patched_array .slice(1024..5000) diff --git a/vortex-array/src/arrays/primitive/array/cast.rs b/vortex-array/src/arrays/primitive/array/cast.rs index feb31aed8e9..c92977616ff 100644 --- a/vortex-array/src/arrays/primitive/array/cast.rs +++ b/vortex-array/src/arrays/primitive/array/cast.rs @@ -6,6 +6,7 @@ use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_error::vortex_panic; +use super::PrimitiveData; use crate::IntoArray; use crate::LEGACY_SESSION; use crate::ToCanonical; @@ -17,7 +18,7 @@ use crate::dtype::DType; use crate::dtype::NativePType; use crate::dtype::PType; -impl PrimitiveArray { +impl PrimitiveData { /// Return a slice of the array's buffer. /// /// NOTE: these values may be nonsense if the validity buffer indicates that the value is null. @@ -55,9 +56,11 @@ impl PrimitiveArray { "can't reinterpret cast between integers of two different widths" ); - PrimitiveArray::from_buffer_handle(self.buffer_handle().clone(), ptype, self.validity()) + PrimitiveData::from_buffer_handle(self.buffer_handle().clone(), ptype, self.validity()) } +} +impl PrimitiveArray { /// Narrow the array to the smallest possible integer type that can represent all values. pub fn narrow(&self) -> VortexResult { if !self.ptype().is_int() { diff --git a/vortex-array/src/arrays/primitive/array/conversion.rs b/vortex-array/src/arrays/primitive/array/conversion.rs index b01988674c4..444b79dfe41 100644 --- a/vortex-array/src/arrays/primitive/array/conversion.rs +++ b/vortex-array/src/arrays/primitive/array/conversion.rs @@ -54,35 +54,18 @@ impl PrimitiveArray { /// Consume the array and get a host Buffer containing the data values. pub fn into_buffer(self) -> Buffer { - if T::PTYPE != self.ptype() { - vortex_panic!( - "Attempted to get buffer of type {} from array of type {}", - T::PTYPE, - self.ptype() - ) - } - - Buffer::from_byte_buffer(self.buffer.into_host_sync()) + self.into_data().into_buffer() } /// Extract a mutable buffer from the PrimitiveArray. Attempts to do this with zero-copy /// if the buffer is uniquely owned, otherwise will make a copy. pub fn into_buffer_mut(self) -> BufferMut { - self.try_into_buffer_mut() - .unwrap_or_else(|buffer| BufferMut::::copy_from(&buffer)) + self.into_data().into_buffer_mut() } /// Try to extract a mutable buffer from the PrimitiveArray with zero copy. pub fn try_into_buffer_mut(self) -> Result, Buffer> { - if T::PTYPE != self.ptype() { - vortex_panic!( - "Attempted to get buffer_mut of type {} from array of type {}", - T::PTYPE, - self.ptype() - ) - } - let buffer = Buffer::::from_byte_buffer(self.buffer.into_host_sync()); - buffer.try_into_mut() + self.into_data().try_into_buffer_mut() } } diff --git a/vortex-array/src/arrays/primitive/array/mod.rs b/vortex-array/src/arrays/primitive/array/mod.rs index 2c06494b9c0..1a7a9a0efdd 100644 --- a/vortex-array/src/arrays/primitive/array/mod.rs +++ b/vortex-array/src/arrays/primitive/array/mod.rs @@ -11,8 +11,11 @@ use vortex_buffer::ByteBufferMut; use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_error::vortex_err; +use vortex_error::vortex_panic; use crate::ToCanonical; +use crate::array::Array; +use crate::arrays::Primitive; use crate::dtype::DType; use crate::dtype::NativePType; use crate::dtype::Nullability; @@ -31,9 +34,9 @@ pub use patch::chunk_range; pub use patch::patch_chunk; use crate::ArrayRef; +use crate::array::child_to_validity; +use crate::array::validity_to_child; use crate::buffer::BufferHandle; -use crate::vtable::child_to_validity; -use crate::vtable::validity_to_child; /// The validity bitmap indicating which elements are non-null. pub(super) const VALIDITY_SLOT: usize = 0; @@ -71,7 +74,7 @@ pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["validity"]; /// # } /// ``` #[derive(Clone, Debug)] -pub struct PrimitiveArray { +pub struct PrimitiveData { pub(super) slots: Vec>, pub(super) dtype: DType, pub(super) buffer: BufferHandle, @@ -85,8 +88,9 @@ pub struct PrimitiveArrayParts { } // TODO(connor): There are a lot of places where we could be using `new_unchecked` in the codebase. -impl PrimitiveArray { - fn make_slots(validity: &Validity, len: usize) -> Vec> { +impl PrimitiveData { + /// Build the slots vector for this array. + pub(super) fn make_slots(validity: &Validity, len: usize) -> Vec> { vec![validity_to_child(validity, len)] } @@ -102,20 +106,22 @@ impl PrimitiveArray { validity: Validity, ) -> Self { let len = handle.len() / ptype.byte_width(); + let slots = Self::make_slots(&validity, len); + let dtype = DType::Primitive(ptype, validity.nullability()); Self { - slots: Self::make_slots(&validity, len), + slots, buffer: handle, - dtype: DType::Primitive(ptype, validity.nullability()), + dtype, stats_set: ArrayStats::default(), } } - /// Creates a new [`PrimitiveArray`]. + /// Creates a new `PrimitiveArray`. /// /// # Panics /// /// Panics if the provided components do not satisfy the invariants documented - /// in [`PrimitiveArray::new_unchecked`]. + /// in `PrimitiveArray::new_unchecked`. pub fn new(buffer: impl Into>, validity: Validity) -> Self { let buffer = buffer.into(); Self::try_new(buffer, validity).vortex_expect("PrimitiveArray construction failed") @@ -123,12 +129,12 @@ impl PrimitiveArray { /// Constructs a new `PrimitiveArray`. /// - /// See [`PrimitiveArray::new_unchecked`] for more information. + /// See `PrimitiveArray::new_unchecked` for more information. /// /// # Errors /// /// Returns an error if the provided components do not satisfy the invariants documented in - /// [`PrimitiveArray::new_unchecked`]. + /// `PrimitiveArray::new_unchecked`. #[inline] pub fn try_new(buffer: Buffer, validity: Validity) -> VortexResult { Self::validate(&buffer, &validity)?; @@ -137,7 +143,7 @@ impl PrimitiveArray { Ok(unsafe { Self::new_unchecked(buffer, validity) }) } - /// Creates a new [`PrimitiveArray`] without validation from these components: + /// Creates a new `PrimitiveArray` without validation from these components: /// /// * `buffer` is a typed buffer containing the primitive values. /// * `validity` holds the null values. @@ -156,17 +162,19 @@ impl PrimitiveArray { .vortex_expect("[Debug Assertion]: Invalid `PrimitiveArray` parameters"); let len = buffer.len(); + let slots = Self::make_slots(&validity, len); + let dtype = DType::Primitive(T::PTYPE, validity.nullability()); Self { - slots: Self::make_slots(&validity, len), - dtype: DType::Primitive(T::PTYPE, validity.nullability()), + slots, + dtype, buffer: BufferHandle::new_host(buffer.into_byte_buffer()), stats_set: Default::default(), } } - /// Validates the components that would be used to create a [`PrimitiveArray`]. + /// Validates the components that would be used to create a `PrimitiveArray`. /// - /// This function checks all the invariants required by [`PrimitiveArray::new_unchecked`]. + /// This function checks all the invariants required by `PrimitiveArray::new_unchecked`. #[inline] pub fn validate(buffer: &Buffer, validity: &Validity) -> VortexResult<()> { if let Some(len) = validity.maybe_len() @@ -187,12 +195,88 @@ impl PrimitiveArray { } } -impl PrimitiveArray { - /// Reconstructs the validity from the slot state. - pub fn validity(&self) -> Validity { - child_to_validity(&self.slots[VALIDITY_SLOT], self.dtype.nullability()) +impl Array { + pub fn empty(nullability: Nullability) -> Self { + Array::try_from_data(PrimitiveData::empty::(nullability)) + .vortex_expect("PrimitiveData is always valid") + } + + /// Creates a new `PrimitiveArray`. + /// + /// # Panics + /// + /// Panics if the provided components do not satisfy the invariants. + pub fn new(buffer: impl Into>, validity: Validity) -> Self { + Array::try_from_data(PrimitiveData::new(buffer, validity)) + .vortex_expect("PrimitiveData is always valid") + } + + /// Constructs a new `PrimitiveArray`. + pub fn try_new(buffer: Buffer, validity: Validity) -> VortexResult { + Array::try_from_data(PrimitiveData::try_new(buffer, validity)?) + } + + /// Creates a new `PrimitiveArray` without validation. + /// + /// # Safety + /// + /// See [`PrimitiveData::new_unchecked`]. + pub unsafe fn new_unchecked(buffer: Buffer, validity: Validity) -> Self { + Array::try_from_data(unsafe { PrimitiveData::new_unchecked(buffer, validity) }) + .vortex_expect("PrimitiveData is always valid") + } + + /// Create a new array from a buffer handle. + /// + /// # Safety + /// + /// See [`PrimitiveData::new_unchecked_from_handle`]. + pub unsafe fn new_unchecked_from_handle( + handle: BufferHandle, + ptype: PType, + validity: Validity, + ) -> Self { + Array::try_from_data(unsafe { + PrimitiveData::new_unchecked_from_handle(handle, ptype, validity) + }) + .vortex_expect("PrimitiveData is always valid") + } + + /// Creates a new `PrimitiveArray` from a [`BufferHandle`]. + pub fn from_buffer_handle(handle: BufferHandle, ptype: PType, validity: Validity) -> Self { + Array::try_from_data(PrimitiveData::from_buffer_handle(handle, ptype, validity)) + .vortex_expect("PrimitiveData is always valid") + } + + /// Creates a new `PrimitiveArray` from a [`ByteBuffer`]. + pub fn from_byte_buffer(buffer: ByteBuffer, ptype: PType, validity: Validity) -> Self { + Array::try_from_data(PrimitiveData::from_byte_buffer(buffer, ptype, validity)) + .vortex_expect("PrimitiveData is always valid") } + /// Create a PrimitiveArray from a byte buffer containing only the valid elements. + pub fn from_values_byte_buffer( + valid_elems_buffer: ByteBuffer, + ptype: PType, + validity: Validity, + n_rows: usize, + ) -> Self { + Array::try_from_data(PrimitiveData::from_values_byte_buffer( + valid_elems_buffer, + ptype, + validity, + n_rows, + )) + .vortex_expect("PrimitiveData is always valid") + } + + /// Validates the components that would be used to create a `PrimitiveArray`. + pub fn validate(buffer: &Buffer, validity: &Validity) -> VortexResult<()> { + PrimitiveData::validate(buffer, validity) + } +} + +impl PrimitiveData { /// Consume the primitive array and returns its component parts. pub fn into_parts(self) -> PrimitiveArrayParts { let ptype = self.ptype(); @@ -205,7 +289,33 @@ impl PrimitiveArray { } } -impl PrimitiveArray { +impl PrimitiveData { + /// Returns the dtype of the array. + pub fn dtype(&self) -> &DType { + &self.dtype + } + + /// Returns the length of the array. + pub fn len(&self) -> usize { + self.buffer.len() / self.ptype().byte_width() + } + + /// Returns `true` if the array is empty. + pub fn is_empty(&self) -> bool { + self.len() == 0 + } + + /// Reconstructs the validity from the slot state. + #[allow(clippy::same_name_method)] + pub fn validity(&self) -> Validity { + child_to_validity(&self.slots[VALIDITY_SLOT], self.dtype.nullability()) + } + + /// Returns the validity as a [`Mask`](vortex_mask::Mask). + pub fn validity_mask(&self) -> vortex_mask::Mask { + self.validity().to_mask(self.len()) + } + pub fn ptype(&self) -> PType { self.dtype().as_ptype() } @@ -218,8 +328,9 @@ impl PrimitiveArray { pub fn from_buffer_handle(handle: BufferHandle, ptype: PType, validity: Validity) -> Self { let dtype = DType::Primitive(ptype, validity.nullability()); let len = handle.len() / ptype.byte_width(); + let slots = Self::make_slots(&validity, len); Self { - slots: Self::make_slots(&validity, len), + slots, buffer: handle, dtype, stats_set: ArrayStats::default(), @@ -259,13 +370,27 @@ impl PrimitiveArray { Self::from_byte_buffer(buffer, ptype, validity) } + /// Get a buffer in host memory holding all the values. + /// + /// NOTE: some values may be nonsense if the validity buffer indicates that the value is null. + pub fn to_buffer(&self) -> Buffer { + if T::PTYPE != self.ptype() { + vortex_panic!( + "Attempted to get buffer of type {} from array of type {}", + T::PTYPE, + self.ptype() + ) + } + Buffer::from_byte_buffer(self.buffer_handle().to_host_sync()) + } + /// Map each element in the array to a new value. /// /// This ignores validity and maps over all maybe-null elements. /// /// TODO(ngates): we could be smarter here if validity is sparse and only run the function /// over the valid elements. - pub fn map_each(self, f: F) -> PrimitiveArray + pub fn map_each(self, f: F) -> Self where T: NativePType, R: NativePType, @@ -276,14 +401,14 @@ impl PrimitiveArray { Ok(buffer_mut) => buffer_mut.map_each_in_place(f), Err(buffer) => BufferMut::from_iter(buffer.iter().copied().map(f)), }; - PrimitiveArray::new(buffer.freeze(), validity) + PrimitiveData::new(buffer.freeze(), validity) } /// Map each element in the array to a new value. /// /// This doesn't ignore validity and maps over all maybe-null elements, with a bool true if /// valid and false otherwise. - pub fn map_each_with_validity(self, f: F) -> VortexResult + pub fn map_each_with_validity(self, f: F) -> VortexResult where T: NativePType, R: NativePType, @@ -305,6 +430,38 @@ impl PrimitiveArray { BufferMut::::from_iter(buf_iter.zip(val.iter()).map(f)) } }; - Ok(PrimitiveArray::new(buffer.freeze(), validity)) + Ok(PrimitiveData::new(buffer.freeze(), validity)) + } + + /// Consume the array and get a host Buffer containing the data values. + pub fn into_buffer(self) -> Buffer { + if T::PTYPE != self.ptype() { + vortex_panic!( + "Attempted to get buffer of type {} from array of type {}", + T::PTYPE, + self.ptype() + ) + } + Buffer::from_byte_buffer(self.buffer.into_host_sync()) + } + + /// Extract a mutable buffer from the PrimitiveData. Attempts to do this with zero-copy + /// if the buffer is uniquely owned, otherwise will make a copy. + pub fn into_buffer_mut(self) -> BufferMut { + self.try_into_buffer_mut() + .unwrap_or_else(|buffer| BufferMut::::copy_from(&buffer)) + } + + /// Try to extract a mutable buffer from the PrimitiveData with zero copy. + pub fn try_into_buffer_mut(self) -> Result, Buffer> { + if T::PTYPE != self.ptype() { + vortex_panic!( + "Attempted to get buffer_mut of type {} from array of type {}", + T::PTYPE, + self.ptype() + ) + } + let buffer = Buffer::::from_byte_buffer(self.buffer.into_host_sync()); + buffer.try_into_mut() } } diff --git a/vortex-array/src/arrays/primitive/array/patch.rs b/vortex-array/src/arrays/primitive/array/patch.rs index a8b1479ed80..5ea2ba5caa3 100644 --- a/vortex-array/src/arrays/primitive/array/patch.rs +++ b/vortex-array/src/arrays/primitive/array/patch.rs @@ -22,11 +22,12 @@ impl PrimitiveArray { let patch_indices = patches.indices().clone().execute::(ctx)?; let patch_values = patches.values().clone().execute::(ctx)?; + let patch_validity = patch_values.validity(); let patched_validity = self.validity().patch( self.len(), patches.offset(), &patch_indices.clone().into_array(), - &patch_values.validity(), + &patch_validity, ctx, )?; Ok(match_each_integer_ptype!(patch_indices.ptype(), |I| { diff --git a/vortex-array/src/arrays/primitive/array/top_value.rs b/vortex-array/src/arrays/primitive/array/top_value.rs index 85e967383df..2f325bbd8a7 100644 --- a/vortex-array/src/arrays/primitive/array/top_value.rs +++ b/vortex-array/src/arrays/primitive/array/top_value.rs @@ -15,6 +15,7 @@ use crate::arrays::primitive::NativeValue; use crate::dtype::NativePType; use crate::match_each_native_ptype; use crate::scalar::PValue; +use crate::validity::Validity; impl PrimitiveArray { /// Compute most common present value of this array @@ -23,7 +24,7 @@ impl PrimitiveArray { return Ok(None); } - if self.all_invalid()? { + if matches!(self.validity(), Validity::AllInvalid) { return Ok(None); } diff --git a/vortex-array/src/arrays/primitive/compute/between.rs b/vortex-array/src/arrays/primitive/compute/between.rs index 29688af3056..09ea69e6d16 100644 --- a/vortex-array/src/arrays/primitive/compute/between.rs +++ b/vortex-array/src/arrays/primitive/compute/between.rs @@ -7,9 +7,9 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::BoolArray; use crate::arrays::Primitive; -use crate::arrays::PrimitiveArray; use crate::dtype::NativePType; use crate::dtype::Nullability; use crate::match_each_native_ptype; @@ -19,7 +19,7 @@ use crate::scalar_fn::fns::between::StrictComparison; impl BetweenKernel for Primitive { fn between( - arr: &PrimitiveArray, + arr: ArrayView<'_, Primitive>, lower: &ArrayRef, upper: &ArrayRef, options: &BetweenOptions, @@ -48,7 +48,7 @@ impl BetweenKernel for Primitive { } fn between_impl( - arr: &PrimitiveArray, + arr: ArrayView<'_, Primitive>, lower: T, upper: T, nullability: Nullability, @@ -92,7 +92,7 @@ fn between_impl( } fn between_impl_( - arr: &PrimitiveArray, + arr: ArrayView<'_, Primitive>, lower: T, lower_fn: impl Fn(T, T) -> bool, upper: T, diff --git a/vortex-array/src/arrays/primitive/compute/cast.rs b/vortex-array/src/arrays/primitive/compute/cast.rs index 4893ba01f65..28c33117a8a 100644 --- a/vortex-array/src/arrays/primitive/compute/cast.rs +++ b/vortex-array/src/arrays/primitive/compute/cast.rs @@ -13,6 +13,7 @@ use crate::ArrayRef; use crate::ExecutionCtx; use crate::IntoArray; use crate::aggregate_fn; +use crate::array::ArrayView; use crate::arrays::Primitive; use crate::arrays::PrimitiveArray; use crate::dtype::DType; @@ -24,7 +25,7 @@ use crate::scalar_fn::fns::cast::CastKernel; impl CastKernel for Primitive { fn cast( - array: &PrimitiveArray, + array: ArrayView<'_, Primitive>, dtype: &DType, ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -77,7 +78,7 @@ impl CastKernel for Primitive { })); } - let mask = array.validity_mask()?; + let mask = array.validity_mask(); // Otherwise, we need to cast the values one-by-one. Ok(Some(match_each_native_ptype!(new_ptype, |T| { @@ -90,9 +91,13 @@ impl CastKernel for Primitive { } /// Returns `true` if all valid values in `array` are representable as `target_ptype`. -fn values_fit_in(array: &PrimitiveArray, target_ptype: PType, ctx: &mut ExecutionCtx) -> bool { +fn values_fit_in( + array: ArrayView<'_, Primitive>, + target_ptype: PType, + ctx: &mut ExecutionCtx, +) -> bool { let target_dtype = DType::Primitive(target_ptype, Nullability::NonNullable); - aggregate_fn::fns::min_max::min_max(&array.clone().into_array(), ctx) + aggregate_fn::fns::min_max::min_max(array.array(), ctx) .ok() .flatten() .is_none_or(|mm| mm.min.cast(&target_dtype).is_ok() && mm.max.cast(&target_dtype).is_ok()) diff --git a/vortex-array/src/arrays/primitive/compute/fill_null.rs b/vortex-array/src/arrays/primitive/compute/fill_null.rs index 088e88f8b07..a24c0133067 100644 --- a/vortex-array/src/arrays/primitive/compute/fill_null.rs +++ b/vortex-array/src/arrays/primitive/compute/fill_null.rs @@ -9,6 +9,7 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::BoolArray; use crate::arrays::Primitive; use crate::arrays::PrimitiveArray; @@ -19,7 +20,7 @@ use crate::validity::Validity; impl FillNullKernel for Primitive { fn fill_null( - array: &PrimitiveArray, + array: ArrayView<'_, Primitive>, fill_value: &Scalar, ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -27,11 +28,7 @@ impl FillNullKernel for Primitive { Ok(Some(match array.validity() { Validity::Array(is_valid) => { - let is_invalid = is_valid - .clone() - .execute::(ctx)? - .into_bit_buffer() - .not(); + let is_invalid = is_valid.execute::(ctx)?.into_bit_buffer().not(); match_each_native_ptype!(array.ptype(), |T| { let mut buffer = array.to_buffer::().into_mut(); let fill_value = fill_value diff --git a/vortex-array/src/arrays/primitive/compute/mask.rs b/vortex-array/src/arrays/primitive/compute/mask.rs index 1fb20d696ba..d7460b406e3 100644 --- a/vortex-array/src/arrays/primitive/compute/mask.rs +++ b/vortex-array/src/arrays/primitive/compute/mask.rs @@ -5,13 +5,14 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Primitive; use crate::arrays::PrimitiveArray; use crate::scalar_fn::fns::mask::MaskReduce; use crate::validity::Validity; impl MaskReduce for Primitive { - fn mask(array: &PrimitiveArray, mask: &ArrayRef) -> VortexResult> { + fn mask(array: ArrayView<'_, Primitive>, mask: &ArrayRef) -> VortexResult> { // SAFETY: validity and data buffer still have same length Ok(Some(unsafe { PrimitiveArray::new_unchecked_from_handle( diff --git a/vortex-array/src/arrays/primitive/compute/rules.rs b/vortex-array/src/arrays/primitive/compute/rules.rs index 42c0aea06fc..46fb8f62eb2 100644 --- a/vortex-array/src/arrays/primitive/compute/rules.rs +++ b/vortex-array/src/arrays/primitive/compute/rules.rs @@ -5,8 +5,8 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Masked; -use crate::arrays::MaskedArray; use crate::arrays::Primitive; use crate::arrays::PrimitiveArray; use crate::arrays::slice::SliceReduceAdaptor; @@ -32,8 +32,8 @@ impl ArrayParentReduceRule for PrimitiveMaskedValidityRule { fn reduce_parent( &self, - array: &PrimitiveArray, - parent: &MaskedArray, + array: ArrayView<'_, Primitive>, + parent: ArrayView<'_, Masked>, _child_idx: usize, ) -> VortexResult> { // TODO(joe): make this lazy diff --git a/vortex-array/src/arrays/primitive/compute/slice.rs b/vortex-array/src/arrays/primitive/compute/slice.rs index 0db4308701a..b3870ace24d 100644 --- a/vortex-array/src/arrays/primitive/compute/slice.rs +++ b/vortex-array/src/arrays/primitive/compute/slice.rs @@ -7,6 +7,7 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Primitive; use crate::arrays::PrimitiveArray; use crate::arrays::slice::SliceReduce; @@ -14,7 +15,7 @@ use crate::dtype::NativePType; use crate::match_each_native_ptype; impl SliceReduce for Primitive { - fn slice(array: &Self::Array, range: Range) -> VortexResult> { + fn slice(array: ArrayView<'_, Self>, range: Range) -> VortexResult> { let result = match_each_native_ptype!(array.ptype(), |T| { PrimitiveArray::from_buffer_handle( array.buffer_handle().slice_typed::(range.clone()), diff --git a/vortex-array/src/arrays/primitive/compute/take/avx2.rs b/vortex-array/src/arrays/primitive/compute/take/avx2.rs index 22823807009..7a48a5671ec 100644 --- a/vortex-array/src/arrays/primitive/compute/take/avx2.rs +++ b/vortex-array/src/arrays/primitive/compute/take/avx2.rs @@ -39,9 +39,11 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::PrimitiveArray; use crate::arrays::primitive::compute::take::TakeImpl; use crate::arrays::primitive::compute::take::take_primitive_scalar; +use crate::arrays::primitive::vtable::Primitive; use crate::dtype::NativePType; use crate::dtype::PType; use crate::dtype::UnsignedPType; @@ -56,8 +58,8 @@ impl TakeImpl for TakeKernelAVX2 { #[inline(always)] fn take( &self, - values: &PrimitiveArray, - indices: &PrimitiveArray, + values: ArrayView<'_, Primitive>, + indices: ArrayView<'_, Primitive>, validity: Validity, ) -> VortexResult { assert!(indices.ptype().is_unsigned_int()); diff --git a/vortex-array/src/arrays/primitive/compute/take/mod.rs b/vortex-array/src/arrays/primitive/compute/take/mod.rs index 787278069c0..20cf0f9a355 100644 --- a/vortex-array/src/arrays/primitive/compute/take/mod.rs +++ b/vortex-array/src/arrays/primitive/compute/take/mod.rs @@ -15,8 +15,8 @@ use vortex_error::VortexResult; use vortex_error::vortex_bail; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Primitive; use crate::arrays::PrimitiveArray; use crate::arrays::dict::TakeExecute; @@ -54,8 +54,8 @@ static PRIMITIVE_TAKE_KERNEL: LazyLock<&'static dyn TakeImpl> = LazyLock::new(|| trait TakeImpl: Send + Sync { fn take( &self, - array: &PrimitiveArray, - indices: &PrimitiveArray, + array: ArrayView<'_, Primitive>, + indices: ArrayView<'_, Primitive>, validity: Validity, ) -> VortexResult; } @@ -66,8 +66,8 @@ struct TakeKernelScalar; impl TakeImpl for TakeKernelScalar { fn take( &self, - array: &PrimitiveArray, - indices: &PrimitiveArray, + array: ArrayView<'_, Primitive>, + indices: ArrayView<'_, Primitive>, validity: Validity, ) -> VortexResult { match_each_native_ptype!(array.ptype(), |T| { @@ -81,7 +81,7 @@ impl TakeImpl for TakeKernelScalar { impl TakeExecute for Primitive { fn take( - array: &PrimitiveArray, + array: ArrayView<'_, Primitive>, indices: &ArrayRef, ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -90,11 +90,11 @@ impl TakeExecute for Primitive { }; let unsigned_indices = if ptype.is_unsigned_int() { - indices.to_array().execute::(ctx)? + indices.clone().execute::(ctx)? } else { // This will fail if all values cannot be converted to unsigned indices - .to_array() + .clone() .cast(DType::Primitive(ptype.to_unsigned(), *null))? .execute::(ctx)? }; @@ -103,9 +103,12 @@ impl TakeExecute for Primitive { .validity() .take(&unsigned_indices.clone().into_array())?; // Delegate to the best kernel based on the target CPU - PRIMITIVE_TAKE_KERNEL - .take(array, &unsigned_indices, validity) - .map(Some) + { + let unsigned_indices = unsigned_indices.as_view(); + PRIMITIVE_TAKE_KERNEL + .take(array, unsigned_indices, validity) + .map(Some) + } } } @@ -141,7 +144,6 @@ mod test { use vortex_buffer::buffer; use vortex_error::VortexExpect; - use crate::DynArray; use crate::IntoArray; use crate::arrays::BoolArray; use crate::arrays::PrimitiveArray; diff --git a/vortex-array/src/arrays/primitive/compute/take/portable.rs b/vortex-array/src/arrays/primitive/compute/take/portable.rs index 75d15bbc4d5..29c36ec3cc4 100644 --- a/vortex-array/src/arrays/primitive/compute/take/portable.rs +++ b/vortex-array/src/arrays/primitive/compute/take/portable.rs @@ -23,8 +23,10 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::PrimitiveArray; use crate::arrays::primitive::compute::take::TakeImpl; +use crate::arrays::primitive::vtable::Primitive; use crate::dtype::NativePType; use crate::dtype::PType; use crate::dtype::UnsignedPType; @@ -38,8 +40,8 @@ pub(super) struct TakeKernelPortableSimd; impl TakeImpl for TakeKernelPortableSimd { fn take( &self, - array: &PrimitiveArray, - unsigned_indices: &PrimitiveArray, + array: ArrayView<'_, Primitive>, + unsigned_indices: ArrayView<'_, Primitive>, validity: Validity, ) -> VortexResult { if array.ptype() == PType::F16 { diff --git a/vortex-array/src/arrays/primitive/mod.rs b/vortex-array/src/arrays/primitive/mod.rs index 14092475a18..522a03afc86 100644 --- a/vortex-array/src/arrays/primitive/mod.rs +++ b/vortex-array/src/arrays/primitive/mod.rs @@ -2,10 +2,11 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors mod array; -pub use array::PrimitiveArray; pub use array::PrimitiveArrayParts; +pub use array::PrimitiveData; pub use array::chunk_range; pub use array::patch_chunk; +pub use vtable::PrimitiveArray; pub(crate) mod compute; diff --git a/vortex-array/src/arrays/primitive/vtable/mod.rs b/vortex-array/src/arrays/primitive/vtable/mod.rs index 0fed78614e2..db8bd8c5258 100644 --- a/vortex-array/src/arrays/primitive/vtable/mod.rs +++ b/vortex-array/src/arrays/primitive/vtable/mod.rs @@ -1,8 +1,6 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors -use std::sync::Arc; - use kernel::PARENT_KERNELS; use vortex_error::VortexResult; use vortex_error::vortex_bail; @@ -13,44 +11,44 @@ use crate::ArrayRef; use crate::EmptyMetadata; use crate::ExecutionCtx; use crate::ExecutionResult; -use crate::arrays::PrimitiveArray; -use crate::arrays::primitive::array::NUM_SLOTS; -use crate::arrays::primitive::array::SLOT_NAMES; +use crate::array::Array; +use crate::array::ArrayView; +use crate::array::VTable; +use crate::arrays::primitive::PrimitiveData; use crate::buffer::BufferHandle; use crate::dtype::DType; use crate::dtype::PType; use crate::serde::ArrayChildren; use crate::validity::Validity; use crate::vtable; -use crate::vtable::Array; -use crate::vtable::VTable; mod kernel; mod operations; mod validity; -use std::hash::Hash; use std::hash::Hasher; use vortex_buffer::Alignment; use vortex_session::VortexSession; use crate::Precision; +use crate::array::ArrayId; +use crate::arrays::primitive::array::NUM_SLOTS; +use crate::arrays::primitive::array::SLOT_NAMES; use crate::arrays::primitive::compute::rules::RULES; use crate::hash::ArrayEq; use crate::hash::ArrayHash; -use crate::stats::StatsSetRef; -use crate::vtable::ArrayId; +use crate::stats::ArrayStats; -vtable!(Primitive); +vtable!(Primitive, Primitive, PrimitiveData); impl VTable for Primitive { - type Array = PrimitiveArray; + type ArrayData = PrimitiveData; type Metadata = EmptyMetadata; type OperationsVTable = Self; type ValidityVTable = Self; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &Self::ArrayData) -> &Self { &Primitive } @@ -58,49 +56,47 @@ impl VTable for Primitive { Self::ID } - fn len(array: &PrimitiveArray) -> usize { + fn len(array: &PrimitiveData) -> usize { array.buffer_handle().len() / array.ptype().byte_width() } - fn dtype(array: &PrimitiveArray) -> &DType { + fn dtype(array: &PrimitiveData) -> &DType { &array.dtype } - fn stats(array: &PrimitiveArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &PrimitiveData) -> &ArrayStats { + &array.stats_set } - fn array_hash(array: &PrimitiveArray, state: &mut H, precision: Precision) { - array.dtype.hash(state); + fn array_hash(array: &PrimitiveData, state: &mut H, precision: Precision) { array.buffer.array_hash(state, precision); array.validity().array_hash(state, precision); } - fn array_eq(array: &PrimitiveArray, other: &PrimitiveArray, precision: Precision) -> bool { - array.dtype == other.dtype - && array.buffer.array_eq(&other.buffer, precision) + fn array_eq(array: &PrimitiveData, other: &PrimitiveData, precision: Precision) -> bool { + array.buffer.array_eq(&other.buffer, precision) && array.validity().array_eq(&other.validity(), precision) } - fn nbuffers(_array: &PrimitiveArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 1 } - fn buffer(array: &PrimitiveArray, idx: usize) -> BufferHandle { + fn buffer(array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { match idx { 0 => array.buffer_handle().clone(), _ => vortex_panic!("PrimitiveArray buffer index {idx} out of bounds"), } } - fn buffer_name(_array: &PrimitiveArray, idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, idx: usize) -> Option { match idx { 0 => Some("values".to_string()), _ => None, } } - fn metadata(_array: &PrimitiveArray) -> VortexResult { + fn metadata(_array: ArrayView<'_, Self>) -> VortexResult { Ok(EmptyMetadata) } @@ -124,7 +120,7 @@ impl VTable for Primitive { _metadata: &Self::Metadata, buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { if buffers.len() != 1 { vortex_bail!("Expected 1 buffer, got {}", buffers.len()); } @@ -165,37 +161,38 @@ impl VTable for Primitive { // SAFETY: checked ahead of time unsafe { - Ok(PrimitiveArray::new_unchecked_from_handle( + Ok(PrimitiveData::new_unchecked_from_handle( buffer, ptype, validity, )) } } - fn slots(array: &PrimitiveArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &PrimitiveArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn with_slots(array: &mut PrimitiveArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "PrimitiveArray expects {} slots, got {}", NUM_SLOTS, slots.len() ); + array.slots = slots; Ok(()) } - fn execute(array: Arc>, _ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, _ctx: &mut ExecutionCtx) -> VortexResult { Ok(ExecutionResult::done(array)) } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { @@ -203,7 +200,7 @@ impl VTable for Primitive { } fn execute_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, diff --git a/vortex-array/src/arrays/primitive/vtable/operations.rs b/vortex-array/src/arrays/primitive/vtable/operations.rs index 89e6ce7acf9..ddeaa386485 100644 --- a/vortex-array/src/arrays/primitive/vtable/operations.rs +++ b/vortex-array/src/arrays/primitive/vtable/operations.rs @@ -4,15 +4,15 @@ use vortex_error::VortexResult; use crate::ExecutionCtx; +use crate::array::ArrayView; +use crate::array::OperationsVTable; use crate::arrays::Primitive; -use crate::arrays::primitive::vtable::PrimitiveArray; use crate::match_each_native_ptype; use crate::scalar::Scalar; -use crate::vtable::OperationsVTable; impl OperationsVTable for Primitive { fn scalar_at( - array: &PrimitiveArray, + array: ArrayView<'_, Primitive>, index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { diff --git a/vortex-array/src/arrays/primitive/vtable/validity.rs b/vortex-array/src/arrays/primitive/vtable/validity.rs index bccfdab660e..87659128064 100644 --- a/vortex-array/src/arrays/primitive/vtable/validity.rs +++ b/vortex-array/src/arrays/primitive/vtable/validity.rs @@ -3,13 +3,13 @@ use vortex_error::VortexResult; -use crate::arrays::PrimitiveArray; +use crate::array::ArrayView; +use crate::array::ValidityVTable; use crate::arrays::primitive::vtable::Primitive; use crate::validity::Validity; -use crate::vtable::ValidityVTable; impl ValidityVTable for Primitive { - fn validity(array: &PrimitiveArray) -> VortexResult { - Ok(array.validity()) + fn validity(array: ArrayView<'_, Primitive>) -> VortexResult { + Ok(array.data().validity()) } } diff --git a/vortex-array/src/arrays/scalar_fn/array.rs b/vortex-array/src/arrays/scalar_fn/array.rs index 436fbcb24ce..029ff0802fa 100644 --- a/vortex-array/src/arrays/scalar_fn/array.rs +++ b/vortex-array/src/arrays/scalar_fn/array.rs @@ -6,7 +6,7 @@ use vortex_error::VortexResult; use vortex_error::vortex_ensure; use crate::ArrayRef; -use crate::DynArray; +use crate::array::Array; use crate::arrays::ScalarFnVTable; use crate::dtype::DType; use crate::scalar_fn::ScalarFnRef; @@ -15,7 +15,7 @@ use crate::stats::ArrayStats; // ScalarFnArray has a variable number of slots (one per child) #[derive(Clone, Debug)] -pub struct ScalarFnArray { +pub struct ScalarFnData { pub(super) vtable: ScalarFnVTable, pub(super) dtype: DType, pub(super) len: usize, @@ -23,7 +23,7 @@ pub struct ScalarFnArray { pub(super) stats: ArrayStats, } -impl ScalarFnArray { +impl ScalarFnData { /// Create a new ScalarFnArray from a scalar function and its children. pub fn try_new( scalar_fn: ScalarFnRef, @@ -49,6 +49,21 @@ impl ScalarFnArray { }) } + /// Returns the dtype of the array. + pub fn dtype(&self) -> &DType { + &self.dtype + } + + /// Returns the length of the array. + pub fn len(&self) -> usize { + self.len + } + + /// Returns `true` if the array is empty. + pub fn is_empty(&self) -> bool { + self.len() == 0 + } + /// Get the scalar function bound to this array. #[allow(clippy::same_name_method)] #[inline(always)] @@ -80,3 +95,27 @@ impl ScalarFnArray { self.iter_children().cloned().collect() } } + +impl Array { + /// Get the scalar function bound to this array. + #[allow(clippy::same_name_method)] + #[inline(always)] + pub fn scalar_fn(&self) -> &ScalarFnRef { + self.data().scalar_fn() + } + + /// Get the children arrays of this scalar function array. + #[allow(clippy::same_name_method)] + pub fn children(&self) -> Vec { + self.data().children() + } + + /// Create a new ScalarFnArray from a scalar function and its children. + pub fn try_new( + scalar_fn: ScalarFnRef, + children: Vec, + len: usize, + ) -> VortexResult { + Array::try_from_data(ScalarFnData::try_new(scalar_fn, children, len)?) + } +} diff --git a/vortex-array/src/arrays/scalar_fn/mod.rs b/vortex-array/src/arrays/scalar_fn/mod.rs index 4e8e31222c7..d19d1157d0b 100644 --- a/vortex-array/src/arrays/scalar_fn/mod.rs +++ b/vortex-array/src/arrays/scalar_fn/mod.rs @@ -6,5 +6,5 @@ mod metadata; mod rules; mod vtable; -pub use array::*; +pub use array::ScalarFnData; pub use vtable::*; diff --git a/vortex-array/src/arrays/scalar_fn/rules.rs b/vortex-array/src/arrays/scalar_fn/rules.rs index 7b69d8f2431..40fec2594cf 100644 --- a/vortex-array/src/arrays/scalar_fn/rules.rs +++ b/vortex-array/src/arrays/scalar_fn/rules.rs @@ -10,17 +10,16 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::Canonical; -use crate::DynArray; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Constant; use crate::arrays::ConstantArray; use crate::arrays::Filter; -use crate::arrays::FilterArray; use crate::arrays::ScalarFnArray; use crate::arrays::ScalarFnVTable; use crate::arrays::Slice; -use crate::arrays::SliceArray; use crate::arrays::StructArray; +use crate::arrays::scalar_fn::ScalarFnData; use crate::dtype::DType; use crate::optimizer::rules::ArrayParentReduceRule; use crate::optimizer::rules::ArrayReduceRule; @@ -48,7 +47,7 @@ pub(super) const PARENT_RULES: ParentRuleSet = ParentRuleSet::ne #[derive(Debug)] struct ScalarFnPackToStructRule; impl ArrayReduceRule for ScalarFnPackToStructRule { - fn reduce(&self, array: &ScalarFnArray) -> VortexResult> { + fn reduce(&self, array: ArrayView<'_, ScalarFnVTable>) -> VortexResult> { let Some(pack_options) = array.scalar_fn().as_opt::() else { return Ok(None); }; @@ -73,14 +72,14 @@ impl ArrayReduceRule for ScalarFnPackToStructRule { #[derive(Debug)] struct ScalarFnConstantRule; impl ArrayReduceRule for ScalarFnConstantRule { - fn reduce(&self, array: &ScalarFnArray) -> VortexResult> { - if !array.iter_children().all(|c| c.is::()) { + fn reduce(&self, array: ArrayView<'_, ScalarFnVTable>) -> VortexResult> { + if !array.children().iter().all(|c| c.is::()) { return Ok(None); } if array.is_empty() { Ok(Some(Canonical::empty(array.dtype()).into_array())) } else { - let result = array.scalar_at(0)?; + let result = array.array().scalar_at(0)?; Ok(Some(ConstantArray::new(result, array.len).into_array())) } } @@ -93,8 +92,8 @@ impl ArrayParentReduceRule for ScalarFnSliceReduceRule { fn reduce_parent( &self, - array: &ScalarFnArray, - parent: &SliceArray, + array: ArrayView<'_, ScalarFnVTable>, + parent: ArrayView<'_, Slice>, _child_idx: usize, ) -> VortexResult> { let range = parent.slice_range(); @@ -105,7 +104,7 @@ impl ArrayParentReduceRule for ScalarFnSliceReduceRule { .collect::>()?; Ok(Some( - ScalarFnArray::try_new(array.scalar_fn().clone(), children, range.len())?.into_array(), + ScalarFnData::try_new(array.scalar_fn().clone(), children, range.len())?.into_array(), )) } } @@ -113,10 +112,10 @@ impl ArrayParentReduceRule for ScalarFnSliceReduceRule { #[derive(Debug)] struct ScalarFnAbstractReduceRule; impl ArrayReduceRule for ScalarFnAbstractReduceRule { - fn reduce(&self, array: &ScalarFnArray) -> VortexResult> { + fn reduce(&self, array: ArrayView<'_, ScalarFnVTable>) -> VortexResult> { if let Some(reduced) = array .scalar_fn() - .reduce(array, &ArrayReduceCtx { len: array.len })? + .reduce(array.as_ref(), &ArrayReduceCtx { len: array.len })? { return Ok(Some( reduced @@ -130,7 +129,7 @@ impl ArrayReduceRule for ScalarFnAbstractReduceRule { } } -impl ReduceNode for ScalarFnArray { +impl ReduceNode for ArrayRef { fn as_any(&self) -> &dyn Any { self } @@ -139,13 +138,13 @@ impl ReduceNode for ScalarFnArray { Ok(self.dtype().clone()) } - #[allow(clippy::same_name_method)] fn scalar_fn(&self) -> Option<&ScalarFnRef> { - Some(ScalarFnArray::scalar_fn(self)) + self.as_opt::() + .map(|a| a.data().scalar_fn()) } fn child(&self, idx: usize) -> ReduceNodeRef { - Arc::new(self.get_child(idx).clone()) + Arc::new(self.nth_child(idx).vortex_expect("child idx out of bounds")) } fn child_count(&self) -> usize { @@ -153,28 +152,6 @@ impl ReduceNode for ScalarFnArray { } } -impl ReduceNode for ArrayRef { - fn as_any(&self) -> &dyn Any { - self - } - - fn node_dtype(&self) -> VortexResult { - self.as_ref().node_dtype() - } - - fn scalar_fn(&self) -> Option<&ScalarFnRef> { - self.as_ref().scalar_fn() - } - - fn child(&self, idx: usize) -> ReduceNodeRef { - self.as_ref().child(idx) - } - - fn child_count(&self) -> usize { - self.as_ref().child_count() - } -} - struct ArrayReduceCtx { // The length of the array being reduced len: usize, @@ -212,8 +189,8 @@ impl ArrayParentReduceRule for ScalarFnUnaryFilterPushDownRule { fn reduce_parent( &self, - child: &ScalarFnArray, - parent: &FilterArray, + child: ArrayView<'_, ScalarFnVTable>, + parent: ArrayView<'_, Filter>, _child_idx: usize, ) -> VortexResult> { // If we only have one non-constant child, then it is _always_ cheaper to push down the diff --git a/vortex-array/src/arrays/scalar_fn/vtable/mod.rs b/vortex-array/src/arrays/scalar_fn/vtable/mod.rs index d6eb44f9e65..5f4d3e2835a 100644 --- a/vortex-array/src/arrays/scalar_fn/vtable/mod.rs +++ b/vortex-array/src/arrays/scalar_fn/vtable/mod.rs @@ -8,7 +8,6 @@ use std::hash::Hash; use std::hash::Hasher; use std::marker::PhantomData; use std::ops::Deref; -use std::sync::Arc; use itertools::Itertools; use vortex_error::VortexResult; @@ -20,10 +19,13 @@ use vortex_session::VortexSession; use crate::ArrayEq; use crate::ArrayHash; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; use crate::Precision; -use crate::arrays::scalar_fn::array::ScalarFnArray; +use crate::array::Array; +use crate::array::ArrayId; +use crate::array::ArrayView; +use crate::array::VTable; +use crate::arrays::scalar_fn::array::ScalarFnData; use crate::arrays::scalar_fn::metadata::ScalarFnMetadata; use crate::arrays::scalar_fn::rules::PARENT_RULES; use crate::arrays::scalar_fn::rules::RULES; @@ -42,13 +44,10 @@ use crate::scalar_fn::ScalarFnRef; use crate::scalar_fn::ScalarFnVTableExt; use crate::scalar_fn::VecExecutionArgs; use crate::serde::ArrayChildren; -use crate::stats::StatsSetRef; +use crate::stats::ArrayStats; use crate::vtable; -use crate::vtable::Array; -use crate::vtable::ArrayId; -use crate::vtable::VTable; -vtable!(ScalarFn, ScalarFnVTable); +vtable!(ScalarFn, ScalarFnVTable, ScalarFnData); #[derive(Clone, Debug)] pub struct ScalarFnVTable { @@ -56,12 +55,12 @@ pub struct ScalarFnVTable { } impl VTable for ScalarFnVTable { - type Array = ScalarFnArray; + type ArrayData = ScalarFnData; type Metadata = ScalarFnMetadata; type OperationsVTable = Self; type ValidityVTable = Self; - fn vtable(array: &Self::Array) -> &Self { + fn vtable(array: &ScalarFnData) -> &Self { &array.vtable } @@ -69,34 +68,26 @@ impl VTable for ScalarFnVTable { self.scalar_fn.id() } - fn len(array: &ScalarFnArray) -> usize { + fn len(array: &ScalarFnData) -> usize { array.len } - fn dtype(array: &ScalarFnArray) -> &DType { + fn dtype(array: &ScalarFnData) -> &DType { &array.dtype } - fn stats(array: &ScalarFnArray) -> StatsSetRef<'_> { - array.stats.to_ref(array.as_ref()) + fn stats(array: &ScalarFnData) -> &ArrayStats { + &array.stats } - fn array_hash(array: &ScalarFnArray, state: &mut H, precision: Precision) { - array.len.hash(state); - array.dtype.hash(state); + fn array_hash(array: &ScalarFnData, state: &mut H, precision: Precision) { array.scalar_fn().hash(state); for child in array.iter_children() { child.array_hash(state, precision); } } - fn array_eq(array: &ScalarFnArray, other: &ScalarFnArray, precision: Precision) -> bool { - if array.len != other.len { - return false; - } - if array.dtype != other.dtype { - return false; - } + fn array_eq(array: &ScalarFnData, other: &ScalarFnData, precision: Precision) -> bool { if array.scalar_fn() != other.scalar_fn() { return false; } @@ -108,19 +99,19 @@ impl VTable for ScalarFnVTable { true } - fn nbuffers(_array: &ScalarFnArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 0 } - fn buffer(_array: &ScalarFnArray, idx: usize) -> BufferHandle { + fn buffer(_array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { vortex_panic!("ScalarFnArray buffer index {idx} out of bounds") } - fn buffer_name(_array: &ScalarFnArray, _idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, _idx: usize) -> Option { None } - fn metadata(array: &Self::Array) -> VortexResult { + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { let child_dtypes = array.iter_children().map(|c| c.dtype().clone()).collect(); Ok(ScalarFnMetadata { scalar_fn: array.scalar_fn().clone(), @@ -149,7 +140,7 @@ impl VTable for ScalarFnVTable { metadata: &ScalarFnMetadata, _buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { let children: Vec<_> = metadata .child_dtypes .iter() @@ -166,7 +157,7 @@ impl VTable for ScalarFnVTable { ); } - Ok(ScalarFnArray { + Ok(ScalarFnData { vtable: ScalarFnVTable { scalar_fn: metadata.scalar_fn.clone(), }, @@ -177,11 +168,11 @@ impl VTable for ScalarFnVTable { }) } - fn slots(array: &ScalarFnArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(array: &ScalarFnArray, idx: usize) -> String { + fn slot_name(array: ArrayView<'_, Self>, idx: usize) -> String { array .scalar_fn() .signature() @@ -190,26 +181,26 @@ impl VTable for ScalarFnVTable { .to_string() } - fn with_slots(array: &mut ScalarFnArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { array.slots = slots; Ok(()) } - fn execute(array: Arc>, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, ctx: &mut ExecutionCtx) -> VortexResult { ctx.log(format_args!("scalar_fn({}): executing", array.scalar_fn())); - let args = VecExecutionArgs::new(array.children(), array.len); + let args = VecExecutionArgs::new(array.children(), array.len()); array .scalar_fn() .execute(&args, ctx) .map(ExecutionResult::done) } - fn reduce(array: &Array) -> VortexResult> { + fn reduce(array: ArrayView<'_, Self>) -> VortexResult> { RULES.evaluate(array) } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { @@ -236,7 +227,7 @@ pub trait ScalarFnArrayExt: scalar_fn::ScalarFnVTable { let child_dtypes = children.iter().map(|c| c.dtype().clone()).collect_vec(); let dtype = scalar_fn.return_dtype(&child_dtypes)?; - Ok(ScalarFnArray { + Ok(ScalarFnData { vtable: ScalarFnVTable { scalar_fn }, dtype, len, @@ -252,9 +243,13 @@ impl ScalarFnArrayExt for V {} #[derive(Debug)] pub struct AnyScalarFn; impl Matcher for AnyScalarFn { - type Match<'a> = &'a ScalarFnArray; + type Match<'a> = ArrayView<'a, ScalarFnVTable>; + + fn matches(array: &ArrayRef) -> bool { + array.is::() + } - fn try_match(array: &dyn DynArray) -> Option> { + fn try_match(array: &ArrayRef) -> Option> { array.as_opt::() } } @@ -266,17 +261,18 @@ pub struct ExactScalarFn(PhantomData); impl Matcher for ExactScalarFn { type Match<'a> = ScalarFnArrayView<'a, F>; - fn matches(array: &dyn DynArray) -> bool { + fn matches(array: &ArrayRef) -> bool { if let Some(scalar_fn_array) = array.as_opt::() { - scalar_fn_array.scalar_fn().is::() + scalar_fn_array.data().scalar_fn().is::() } else { false } } - fn try_match(array: &dyn DynArray) -> Option> { + fn try_match(array: &ArrayRef) -> Option> { let scalar_fn_array = array.as_opt::()?; - let scalar_fn = scalar_fn_array.scalar_fn().downcast_ref::()?; + let scalar_fn_data = scalar_fn_array.data(); + let scalar_fn = scalar_fn_data.scalar_fn().downcast_ref::()?; Some(ScalarFnArrayView { array, vtable: scalar_fn.vtable(), @@ -286,13 +282,13 @@ impl Matcher for ExactScalarFn { } pub struct ScalarFnArrayView<'a, F: scalar_fn::ScalarFnVTable> { - array: &'a dyn DynArray, + array: &'a ArrayRef, pub vtable: &'a F, pub options: &'a F::Options, } impl Deref for ScalarFnArrayView<'_, F> { - type Target = dyn DynArray; + type Target = ArrayRef; fn deref(&self) -> &Self::Target { self.array diff --git a/vortex-array/src/arrays/scalar_fn/vtable/operations.rs b/vortex-array/src/arrays/scalar_fn/vtable/operations.rs index 94998096489..f02f0b7f9bf 100644 --- a/vortex-array/src/arrays/scalar_fn/vtable/operations.rs +++ b/vortex-array/src/arrays/scalar_fn/vtable/operations.rs @@ -3,22 +3,21 @@ use vortex_error::VortexResult; -use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; use crate::LEGACY_SESSION; use crate::VortexSessionExecute; +use crate::array::ArrayView; +use crate::array::OperationsVTable; use crate::arrays::ConstantArray; -use crate::arrays::scalar_fn::array::ScalarFnArray; use crate::arrays::scalar_fn::vtable::ScalarFnVTable; use crate::columnar::Columnar; use crate::scalar::Scalar; use crate::scalar_fn::VecExecutionArgs; -use crate::vtable::OperationsVTable; impl OperationsVTable for ScalarFnVTable { fn scalar_at( - array: &ScalarFnArray, + array: ArrayView<'_, ScalarFnVTable>, index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { @@ -38,7 +37,7 @@ impl OperationsVTable for ScalarFnVTable { "Scalar function {} returned non-constant array from execution over all scalar inputs", array.scalar_fn(), ); - arr.as_ref().scalar_at(0)? + arr.into_array().scalar_at(0)? } Columnar::Constant(constant) => constant.scalar().clone(), }; @@ -64,7 +63,7 @@ mod tests { use crate::IntoArray; use crate::arrays::BoolArray; use crate::arrays::PrimitiveArray; - use crate::arrays::scalar_fn::array::ScalarFnArray; + use crate::arrays::ScalarFnArray; use crate::assert_arrays_eq; use crate::scalar_fn::ScalarFn; use crate::scalar_fn::fns::binary::Binary; diff --git a/vortex-array/src/arrays/scalar_fn/vtable/validity.rs b/vortex-array/src/arrays/scalar_fn/vtable/validity.rs index 3bf356c82b4..0bd27c9b4f1 100644 --- a/vortex-array/src/arrays/scalar_fn/vtable/validity.rs +++ b/vortex-array/src/arrays/scalar_fn/vtable/validity.rs @@ -7,7 +7,8 @@ use crate::ArrayRef; use crate::IntoArray; use crate::LEGACY_SESSION; use crate::VortexSessionExecute; -use crate::arrays::scalar_fn::array::ScalarFnArray; +use crate::array::ArrayView; +use crate::array::ValidityVTable; use crate::arrays::scalar_fn::vtable::ArrayExpr; use crate::arrays::scalar_fn::vtable::FakeEq; use crate::arrays::scalar_fn::vtable::ScalarFnVTable; @@ -18,7 +19,6 @@ use crate::scalar_fn::VecExecutionArgs; use crate::scalar_fn::fns::literal::Literal; use crate::scalar_fn::fns::root::Root; use crate::validity::Validity; -use crate::vtable::ValidityVTable; /// Execute an expression tree recursively. /// @@ -50,7 +50,7 @@ fn execute_expr(expr: &Expression, row_count: usize) -> VortexResult { } impl ValidityVTable for ScalarFnVTable { - fn validity(array: &ScalarFnArray) -> VortexResult { + fn validity(array: ArrayView<'_, ScalarFnVTable>) -> VortexResult { let inputs: Vec<_> = array .iter_children() .map(|child| { diff --git a/vortex-array/src/arrays/shared/array.rs b/vortex-array/src/arrays/shared/array.rs index 25f41f66ecd..c0d4ab33f86 100644 --- a/vortex-array/src/arrays/shared/array.rs +++ b/vortex-array/src/arrays/shared/array.rs @@ -13,6 +13,8 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::Canonical; use crate::IntoArray; +use crate::array::Array; +use crate::arrays::Shared; use crate::dtype::DType; use crate::stats::ArrayStats; @@ -26,15 +28,15 @@ pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["source"]; /// Before materialization, operations delegate to the source array. /// After materialization (via `get_or_compute`), operations delegate to the cached result. #[derive(Debug, Clone)] -pub struct SharedArray { +pub struct SharedData { pub(super) slots: Vec>, - pub(super) cached: Arc>>, - pub(super) async_compute_lock: Arc>, + cached: Arc>>, + async_compute_lock: Arc>, pub(super) dtype: DType, pub(super) stats: ArrayStats, } -impl SharedArray { +impl SharedData { pub fn new(source: ArrayRef) -> Self { Self { dtype: source.dtype().clone(), @@ -103,4 +105,37 @@ impl SharedArray { let result = self.cached.get_or_init(|| computed); result.clone().map_err(Into::into) } + + /// Returns the length of this array. + pub fn len(&self) -> usize { + self.current_array_ref().len() + } + + /// Returns the [`DType`] of this array. + pub fn dtype(&self) -> &DType { + &self.dtype + } + + /// Returns `true` if this array is empty. + pub fn is_empty(&self) -> bool { + self.len() == 0 + } +} + +impl Array { + /// Creates a new `SharedArray`. + pub fn new(source: ArrayRef) -> Self { + Array::try_from_data(SharedData::new(source)).vortex_expect("SharedData is always valid") + } +} + +impl SharedData { + pub(super) fn set_source(&mut self, source: Option) { + if let Some(ref s) = source { + self.dtype = s.dtype().clone(); + } + self.slots = vec![source]; + self.cached = Arc::new(OnceLock::new()); + self.async_compute_lock = Arc::new(AsyncMutex::new(())); + } } diff --git a/vortex-array/src/arrays/shared/mod.rs b/vortex-array/src/arrays/shared/mod.rs index 3fb9ed7f77e..34108bcd619 100644 --- a/vortex-array/src/arrays/shared/mod.rs +++ b/vortex-array/src/arrays/shared/mod.rs @@ -4,8 +4,9 @@ mod array; mod vtable; -pub use array::SharedArray; +pub use array::SharedData; pub use vtable::Shared; +pub use vtable::SharedArray; #[cfg(test)] mod tests; diff --git a/vortex-array/src/arrays/shared/vtable.rs b/vortex-array/src/arrays/shared/vtable.rs index fbbfeb31316..8f04b2a37f9 100644 --- a/vortex-array/src/arrays/shared/vtable.rs +++ b/vortex-array/src/arrays/shared/vtable.rs @@ -1,13 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors -use std::hash::Hash; -use std::sync::Arc; -use std::sync::OnceLock; - -use async_lock::Mutex as AsyncMutex; +use vortex_error::VortexExpect; use vortex_error::VortexResult; -use vortex_error::vortex_ensure; use vortex_error::vortex_panic; use vortex_session::VortexSession; @@ -17,24 +12,24 @@ use crate::EmptyMetadata; use crate::ExecutionCtx; use crate::ExecutionResult; use crate::Precision; -use crate::arrays::SharedArray; -use crate::arrays::shared::array::NUM_SLOTS; +use crate::array::Array; +use crate::array::ArrayId; +use crate::array::ArrayView; +use crate::array::OperationsVTable; +use crate::array::VTable; +use crate::array::ValidityVTable; +use crate::arrays::shared::SharedData; use crate::arrays::shared::array::SLOT_NAMES; use crate::buffer::BufferHandle; use crate::dtype::DType; use crate::hash::ArrayEq; use crate::hash::ArrayHash; use crate::scalar::Scalar; -use crate::stats::StatsSetRef; +use crate::stats::ArrayStats; use crate::validity::Validity; use crate::vtable; -use crate::vtable::Array; -use crate::vtable::ArrayId; -use crate::vtable::OperationsVTable; -use crate::vtable::VTable; -use crate::vtable::ValidityVTable; -vtable!(Shared); +vtable!(Shared, Shared, SharedData); // TODO(ngates): consider hooking Shared into the iterative execution model. Cache either the // most executed, or after each iteration, and return a shared cache for each execution. @@ -46,11 +41,11 @@ impl Shared { } impl VTable for Shared { - type Array = SharedArray; + type ArrayData = SharedData; type Metadata = EmptyMetadata; type OperationsVTable = Self; type ValidityVTable = Self; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &SharedData) -> &Self { &Shared } @@ -58,64 +53,64 @@ impl VTable for Shared { Self::ID } - fn len(array: &SharedArray) -> usize { + fn len(array: &SharedData) -> usize { array.current_array_ref().len() } - fn dtype(array: &SharedArray) -> &DType { + fn dtype(array: &SharedData) -> &DType { &array.dtype } - fn stats(array: &SharedArray) -> StatsSetRef<'_> { - array.stats.to_ref(array.as_ref()) + fn stats(array: &SharedData) -> &ArrayStats { + &array.stats } - fn array_hash(array: &SharedArray, state: &mut H, precision: Precision) { + fn array_hash(array: &SharedData, state: &mut H, precision: Precision) { let current = array.current_array_ref(); current.array_hash(state, precision); - array.dtype.hash(state); } - fn array_eq(array: &SharedArray, other: &SharedArray, precision: Precision) -> bool { + fn array_eq(array: &SharedData, other: &SharedData, precision: Precision) -> bool { let current = array.current_array_ref(); let other_current = other.current_array_ref(); - current.array_eq(other_current, precision) && array.dtype == other.dtype + current.array_eq(other_current, precision) } - fn nbuffers(_array: &Self::Array) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 0 } - fn buffer(_array: &Self::Array, _idx: usize) -> BufferHandle { + fn buffer(_array: ArrayView<'_, Self>, _idx: usize) -> BufferHandle { vortex_panic!("SharedArray has no buffers") } - fn buffer_name(_array: &Self::Array, _idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, _idx: usize) -> Option { None } - fn slots(array: &SharedArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &SharedArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn with_slots(array: &mut Self::Array, slots: Vec>) -> VortexResult<()> { - vortex_ensure!( - slots.len() == NUM_SLOTS, - "SharedArray expects exactly {} slots, got {}", - NUM_SLOTS, + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { + vortex_error::vortex_ensure!( + slots.len() == 1, + "SharedArray expects exactly 1 slot, got {}", slots.len() ); - array.slots = slots; - array.cached = Arc::new(OnceLock::new()); - array.async_compute_lock = Arc::new(AsyncMutex::new(())); + let slot = slots + .into_iter() + .next() + .vortex_expect("slots length already validated"); + array.set_source(slot); Ok(()) } - fn metadata(_array: &Self::Array) -> VortexResult { + fn metadata(_array: ArrayView<'_, Self>) -> VortexResult { Ok(EmptyMetadata) } @@ -139,12 +134,12 @@ impl VTable for Shared { _metadata: &Self::Metadata, _buffers: &[BufferHandle], children: &dyn crate::serde::ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { let child = children.get(0, dtype, len)?; - Ok(SharedArray::new(child)) + Ok(SharedData::new(child)) } - fn execute(array: Arc>, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, ctx: &mut ExecutionCtx) -> VortexResult { array .get_or_compute(|source| source.clone().execute::(ctx)) .map(ExecutionResult::done) @@ -152,7 +147,7 @@ impl VTable for Shared { } impl OperationsVTable for Shared { fn scalar_at( - array: &SharedArray, + array: ArrayView<'_, Shared>, index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { @@ -161,7 +156,7 @@ impl OperationsVTable for Shared { } impl ValidityVTable for Shared { - fn validity(array: &SharedArray) -> VortexResult { + fn validity(array: ArrayView<'_, Shared>) -> VortexResult { array.current_array_ref().validity() } } diff --git a/vortex-array/src/arrays/slice/array.rs b/vortex-array/src/arrays/slice/array.rs index f0333beff1c..a8ded19335b 100644 --- a/vortex-array/src/arrays/slice/array.rs +++ b/vortex-array/src/arrays/slice/array.rs @@ -8,6 +8,9 @@ use vortex_error::VortexResult; use vortex_error::vortex_panic; use crate::ArrayRef; +use crate::array::Array; +use crate::arrays::Slice; +use crate::dtype::DType; use crate::stats::ArrayStats; /// The underlying child array being sliced. @@ -16,7 +19,7 @@ pub(super) const NUM_SLOTS: usize = 1; pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["child"]; #[derive(Clone, Debug)] -pub struct SliceArray { +pub struct SliceData { pub(super) slots: Vec>, pub(super) range: Range, pub(super) stats: ArrayStats, @@ -27,7 +30,7 @@ pub struct SliceArrayParts { pub range: Range, } -impl SliceArray { +impl SliceData { pub fn try_new(child: ArrayRef, range: Range) -> VortexResult { if range.end > child.len() { vortex_panic!( @@ -47,6 +50,21 @@ impl SliceArray { Self::try_new(child, range).vortex_expect("failed") } + /// Returns the length of this array. + pub fn len(&self) -> usize { + self.range.len() + } + + /// Returns the [`DType`] of this array. + pub fn dtype(&self) -> &DType { + self.child().dtype() + } + + /// Returns `true` if this array is empty. + pub fn is_empty(&self) -> bool { + self.len() == 0 + } + /// The range used to slice the child array. pub fn slice_range(&self) -> &Range { &self.range @@ -58,7 +76,22 @@ impl SliceArray { .as_ref() .vortex_expect("SliceArray child slot") } +} + +impl Array { + /// Constructs a new `SliceArray`. + pub fn try_new(child: ArrayRef, range: Range) -> VortexResult { + Array::try_from_data(SliceData::try_new(child, range)?) + } + + /// Constructs a new `SliceArray`. + pub fn new(child: ArrayRef, range: Range) -> Self { + Array::try_from_data(SliceData::new(child, range)) + .vortex_expect("SliceData is always valid") + } +} +impl SliceData { /// Consume the slice array and return its components. pub fn into_parts(mut self) -> SliceArrayParts { SliceArrayParts { diff --git a/vortex-array/src/arrays/slice/mod.rs b/vortex-array/src/arrays/slice/mod.rs index c9ad498ebe0..928367ea213 100644 --- a/vortex-array/src/arrays/slice/mod.rs +++ b/vortex-array/src/arrays/slice/mod.rs @@ -15,7 +15,8 @@ mod vtable; use std::ops::Range; -pub use array::*; +pub use array::SliceArrayParts; +pub use array::SliceData; use vortex_error::VortexResult; pub use vtable::*; @@ -23,10 +24,11 @@ use crate::ArrayRef; use crate::Canonical; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; +use crate::array::VTable; use crate::kernel::ExecuteParentKernel; use crate::matcher::Matcher; use crate::optimizer::rules::ArrayParentReduceRule; -use crate::vtable::VTable; pub trait SliceReduce: VTable { /// Slice an array with the provided range without reading buffers. @@ -40,7 +42,7 @@ pub trait SliceReduce: VTable { /// The range is guaranteed to be within bounds of the array (i.e., `range.end <= array.len()`). /// /// Additionally, the range is guaranteed to be non-empty (i.e., `range.start < range.end`). - fn slice(array: &Self::Array, range: Range) -> VortexResult>; + fn slice(array: ArrayView<'_, Self>, range: Range) -> VortexResult>; } pub trait SliceKernel: VTable { @@ -55,15 +57,15 @@ pub trait SliceKernel: VTable { /// /// Additionally, the range is guaranteed to be non-empty (i.e., `range.start < range.end`). fn slice( - array: &Self::Array, + array: ArrayView<'_, Self>, range: Range, ctx: &mut ExecutionCtx, ) -> VortexResult>; } -fn precondition(array: &V::Array, range: &Range) -> Option { +fn precondition(array: ArrayView<'_, V>, range: &Range) -> Option { if range.start == 0 && range.end == array.len() { - return Some(array.to_array()); + return Some(array.array().clone()); }; if range.start == range.end { return Some(Canonical::empty(array.dtype()).into_array()); @@ -83,7 +85,7 @@ where fn reduce_parent( &self, - array: &V::Array, + array: ArrayView<'_, V>, parent: ::Match<'_>, child_idx: usize, ) -> VortexResult> { @@ -107,7 +109,7 @@ where fn execute_parent( &self, - array: &V::Array, + array: ArrayView<'_, V>, parent: ::Match<'_>, child_idx: usize, ctx: &mut ExecutionCtx, diff --git a/vortex-array/src/arrays/slice/slice_.rs b/vortex-array/src/arrays/slice/slice_.rs index 6c1f10628be..23011952ff0 100644 --- a/vortex-array/src/arrays/slice/slice_.rs +++ b/vortex-array/src/arrays/slice/slice_.rs @@ -7,12 +7,13 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Slice; use crate::arrays::SliceArray; use crate::arrays::slice::SliceReduce; impl SliceReduce for Slice { - fn slice(array: &Self::Array, range: Range) -> VortexResult> { + fn slice(array: ArrayView<'_, Self>, range: Range) -> VortexResult> { let inner_range = array.slice_range(); let combined_start = inner_range.start + range.start; diff --git a/vortex-array/src/arrays/slice/vtable.rs b/vortex-array/src/arrays/slice/vtable.rs index 01aba68bd46..c5fa9241001 100644 --- a/vortex-array/src/arrays/slice/vtable.rs +++ b/vortex-array/src/arrays/slice/vtable.rs @@ -6,7 +6,6 @@ use std::fmt::Formatter; use std::hash::Hash; use std::hash::Hasher; use std::ops::Range; -use std::sync::Arc; use vortex_error::VortexResult; use vortex_error::vortex_bail; @@ -19,11 +18,17 @@ use crate::ArrayEq; use crate::ArrayHash; use crate::ArrayRef; use crate::Canonical; -use crate::DynArray; +use crate::IntoArray; use crate::Precision; +use crate::array::Array; +use crate::array::ArrayId; +use crate::array::ArrayView; +use crate::array::OperationsVTable; +use crate::array::VTable; +use crate::array::ValidityVTable; use crate::arrays::slice::array::NUM_SLOTS; use crate::arrays::slice::array::SLOT_NAMES; -use crate::arrays::slice::array::SliceArray; +use crate::arrays::slice::array::SliceData; use crate::arrays::slice::rules::PARENT_RULES; use crate::buffer::BufferHandle; use crate::dtype::DType; @@ -31,16 +36,11 @@ use crate::executor::ExecutionCtx; use crate::executor::ExecutionResult; use crate::scalar::Scalar; use crate::serde::ArrayChildren; -use crate::stats::StatsSetRef; +use crate::stats::ArrayStats; use crate::validity::Validity; use crate::vtable; -use crate::vtable::Array; -use crate::vtable::ArrayId; -use crate::vtable::OperationsVTable; -use crate::vtable::VTable; -use crate::vtable::ValidityVTable; -vtable!(Slice); +vtable!(Slice, Slice, SliceData); #[derive(Clone, Debug)] pub struct Slice; @@ -50,11 +50,11 @@ impl Slice { } impl VTable for Slice { - type Array = SliceArray; + type ArrayData = SliceData; type Metadata = SliceMetadata; type OperationsVTable = Self; type ValidityVTable = Self; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &SliceData) -> &Self { &Slice } @@ -62,49 +62,49 @@ impl VTable for Slice { Slice::ID } - fn len(array: &SliceArray) -> usize { + fn len(array: &SliceData) -> usize { array.range.len() } - fn dtype(array: &SliceArray) -> &DType { + fn dtype(array: &SliceData) -> &DType { array.child().dtype() } - fn stats(array: &SliceArray) -> StatsSetRef<'_> { - array.stats.to_ref(array.as_ref()) + fn stats(array: &SliceData) -> &ArrayStats { + &array.stats } - fn array_hash(array: &SliceArray, state: &mut H, precision: Precision) { + fn array_hash(array: &SliceData, state: &mut H, precision: Precision) { array.child().array_hash(state, precision); array.range.start.hash(state); array.range.end.hash(state); } - fn array_eq(array: &SliceArray, other: &SliceArray, precision: Precision) -> bool { + fn array_eq(array: &SliceData, other: &SliceData, precision: Precision) -> bool { array.child().array_eq(other.child(), precision) && array.range == other.range } - fn nbuffers(_array: &Self::Array) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 0 } - fn buffer(_array: &Self::Array, _idx: usize) -> BufferHandle { + fn buffer(_array: ArrayView<'_, Self>, _idx: usize) -> BufferHandle { vortex_panic!("SliceArray has no buffers") } - fn buffer_name(_array: &Self::Array, _idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, _idx: usize) -> Option { None } - fn slots(array: &Self::Array) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &Self::Array, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn metadata(array: &Self::Array) -> VortexResult { + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { Ok(SliceMetadata(array.range.clone())) } @@ -129,13 +129,13 @@ impl VTable for Slice { metadata: &SliceMetadata, _buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { assert_eq!(len, metadata.0.len()); let child = children.get(0, dtype, metadata.0.end)?; - SliceArray::try_new(child, metadata.0.clone()) + SliceData::try_new(child, metadata.0.clone()) } - fn with_slots(array: &mut Self::Array, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "SliceArray expects exactly {} slots, got {}", @@ -146,7 +146,7 @@ impl VTable for Slice { Ok(()) } - fn execute(array: Arc>, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, ctx: &mut ExecutionCtx) -> VortexResult { // Execute the child to get canonical form, then slice it let Some(canonical) = array.child().as_opt::() else { // If the child is not canonical, recurse. @@ -160,13 +160,13 @@ impl VTable for Slice { // TODO(ngates): we should inline canonical slice logic here. Canonical::from(canonical) - .as_ref() + .into_array() .slice(array.range.clone()) .map(ExecutionResult::done) } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { @@ -175,7 +175,7 @@ impl VTable for Slice { } impl OperationsVTable for Slice { fn scalar_at( - array: &SliceArray, + array: ArrayView<'_, Slice>, index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { @@ -184,7 +184,7 @@ impl OperationsVTable for Slice { } impl ValidityVTable for Slice { - fn validity(array: &SliceArray) -> VortexResult { + fn validity(array: ArrayView<'_, Slice>) -> VortexResult { array.child().validity()?.slice(array.range.clone()) } } @@ -201,7 +201,6 @@ impl Debug for SliceMetadata { mod tests { use vortex_error::VortexResult; - use crate::DynArray; use crate::IntoArray; use crate::arrays::PrimitiveArray; use crate::arrays::SliceArray; diff --git a/vortex-array/src/arrays/struct_/array.rs b/vortex-array/src/arrays/struct_/array.rs index 64e89fe23b9..f8ce8a54bae 100644 --- a/vortex-array/src/arrays/struct_/array.rs +++ b/vortex-array/src/arrays/struct_/array.rs @@ -11,16 +11,17 @@ use vortex_error::vortex_bail; use vortex_error::vortex_err; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; +use crate::array::Array; +use crate::array::child_to_validity; +use crate::array::validity_to_child; +use crate::arrays::Struct; use crate::dtype::DType; use crate::dtype::FieldName; use crate::dtype::FieldNames; use crate::dtype::StructFields; use crate::stats::ArrayStats; use crate::validity::Validity; -use crate::vtable::child_to_validity; -use crate::vtable::validity_to_child; // StructArray has a variable number of slots: [validity?, field_0, ..., field_N] /// The validity bitmap indicating which struct elements are non-null. @@ -147,7 +148,7 @@ pub(super) const FIELDS_OFFSET: usize = 1; /// assert_eq!(id_field.len(), 3); /// ``` #[derive(Clone, Debug)] -pub struct StructArray { +pub struct StructData { pub(super) len: usize, pub(super) dtype: DType, pub(super) slots: Vec>, @@ -160,12 +161,25 @@ pub struct StructArrayParts { pub validity: Validity, } -impl StructArray { - /// Return a single struct field by index without the validity of the struct applied. - pub fn unmasked_field(&self, idx: usize) -> &ArrayRef { - self.slots[FIELDS_OFFSET + idx] - .as_ref() - .vortex_expect("StructArray field slot") +impl StructData { + /// Returns the length of this array. + pub fn len(&self) -> usize { + self.len + } + + /// Returns the [`DType`] of this array. + pub fn dtype(&self) -> &DType { + &self.dtype + } + + /// Returns `true` if this array is empty. + pub fn is_empty(&self) -> bool { + self.len() == 0 + } + + /// Reconstructs the validity from the slots. + pub fn validity(&self) -> Validity { + child_to_validity(&self.slots[VALIDITY_SLOT], self.dtype.nullability()) } /// Return an iterator over the struct fields without the validity of the struct applied. @@ -180,6 +194,13 @@ impl StructArray { self.iter_unmasked_fields().cloned().collect() } + /// Return the struct field at the given index without the validity of the struct applied. + pub fn unmasked_field(&self, idx: usize) -> &ArrayRef { + self.slots[FIELDS_OFFSET + idx] + .as_ref() + .vortex_expect("StructArray field slot") + } + /// Return the struct field without the validity of the struct applied pub fn unmasked_field_by_name(&self, name: impl AsRef) -> VortexResult<&ArrayRef> { let name = name.as_ref(); @@ -214,11 +235,6 @@ impl StructArray { struct_dtype } - /// Reconstructs the validity from the slots. - pub fn validity(&self) -> Validity { - child_to_validity(&self.slots[VALIDITY_SLOT], self.dtype.nullability()) - } - /// Create a new `StructArray` with the given length, but without any fields. pub fn new_fieldless_with_len(len: usize) -> Self { Self::try_new( @@ -230,12 +246,12 @@ impl StructArray { .vortex_expect("StructArray::new_with_len should not fail") } - /// Creates a new [`StructArray`]. + /// Creates a new `StructArray`. /// /// # Panics /// /// Panics if the provided components do not satisfy the invariants documented - /// in [`StructArray::new_unchecked`]. + /// in `StructArray::new_unchecked`. pub fn new( names: FieldNames, fields: impl Into>, @@ -248,12 +264,12 @@ impl StructArray { /// Constructs a new `StructArray`. /// - /// See [`StructArray::new_unchecked`] for more information. + /// See `StructArray::new_unchecked` for more information. /// /// # Errors /// /// Returns an error if the provided components do not satisfy the invariants documented in - /// [`StructArray::new_unchecked`]. + /// `StructArray::new_unchecked`. pub fn try_new( names: FieldNames, fields: impl Into>, @@ -270,7 +286,7 @@ impl StructArray { Ok(unsafe { Self::new_unchecked(fields, dtype, length, validity) }) } - /// Creates a new [`StructArray`] without validation from these components: + /// Creates a new `StructArray` without validation from these components: /// /// * `fields` is a vector of arrays, one for each field in the struct. /// * `dtype` contains the field names and types. @@ -320,9 +336,9 @@ impl StructArray { } } - /// Validates the components that would be used to create a [`StructArray`]. + /// Validates the components that would be used to create a `StructArray`. /// - /// This function checks all the invariants required by [`StructArray::new_unchecked`]. + /// This function checks all the invariants required by `StructArray::new_unchecked`. pub fn validate( fields: &[ArrayRef], dtype: &StructFields, @@ -407,7 +423,7 @@ impl StructArray { } pub fn from_fields>(items: &[(N, ArrayRef)]) -> VortexResult { - Self::try_from_iter(items.iter().map(|(a, b)| (a, b.to_array()))) + Self::try_from_iter(items.iter().map(|(a, b)| (a, b.clone()))) } pub fn try_from_iter_with_validity< @@ -463,7 +479,7 @@ impl StructArray { ); } - StructArray::try_new( + StructData::try_new( FieldNames::from(names.as_slice()), children, self.len(), @@ -503,8 +519,94 @@ impl StructArray { } None } +} + +impl Array { + /// Creates a new `StructArray`. + pub fn new( + names: FieldNames, + fields: impl Into>, + length: usize, + validity: Validity, + ) -> Self { + Array::try_from_data(StructData::new(names, fields, length, validity)) + .vortex_expect("StructData is always valid") + } + + /// Constructs a new `StructArray`. + pub fn try_new( + names: FieldNames, + fields: impl Into>, + length: usize, + validity: Validity, + ) -> VortexResult { + Array::try_from_data(StructData::try_new(names, fields, length, validity)?) + } + + /// Creates a new `StructArray` without validation. + /// + /// # Safety + /// + /// See [`StructData::new_unchecked`]. + pub unsafe fn new_unchecked( + fields: impl Into>, + dtype: StructFields, + length: usize, + validity: Validity, + ) -> Self { + Array::try_from_data(unsafe { StructData::new_unchecked(fields, dtype, length, validity) }) + .vortex_expect("StructData is always valid") + } + + /// Constructs a new `StructArray` with an explicit dtype. + pub fn try_new_with_dtype( + fields: impl Into>, + dtype: StructFields, + length: usize, + validity: Validity, + ) -> VortexResult { + Array::try_from_data(StructData::try_new_with_dtype( + fields, dtype, length, validity, + )?) + } + + /// Construct a `StructArray` from named fields. + pub fn from_fields>(items: &[(N, ArrayRef)]) -> VortexResult { + Array::try_from_data(StructData::from_fields(items)?) + } + + /// Decompose this struct array into its constituent parts. + pub fn into_parts(self) -> StructArrayParts { + self.into_data().into_parts() + } + + /// Create a `StructArray` from an iterator of (name, array) pairs with validity. + pub fn try_from_iter_with_validity< + N: AsRef, + A: IntoArray, + T: IntoIterator, + >( + iter: T, + validity: Validity, + ) -> VortexResult { + Array::try_from_data(StructData::try_from_iter_with_validity(iter, validity)?) + } + + /// Create a `StructArray` from an iterator of (name, array) pairs. + pub fn try_from_iter, A: IntoArray, T: IntoIterator>( + iter: T, + ) -> VortexResult { + Array::try_from_data(StructData::try_from_iter(iter)?) + } + + /// Create a fieldless `StructArray` with the given length. + pub fn new_fieldless_with_len(len: usize) -> Self { + Array::try_from_data(StructData::new_fieldless_with_len(len)) + .vortex_expect("StructData is always valid") + } +} - /// Create a new StructArray by appending a new column onto the existing array. +impl StructData { pub fn with_column(&self, name: impl Into, array: ArrayRef) -> VortexResult { let name = name.into(); let struct_dtype = self.struct_fields().clone(); diff --git a/vortex-array/src/arrays/struct_/compute/cast.rs b/vortex-array/src/arrays/struct_/compute/cast.rs index a1c547cb865..87c59575e66 100644 --- a/vortex-array/src/arrays/struct_/compute/cast.rs +++ b/vortex-array/src/arrays/struct_/compute/cast.rs @@ -8,6 +8,7 @@ use vortex_error::vortex_ensure; use crate::ArrayRef; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::ConstantArray; use crate::arrays::Struct; use crate::arrays::StructArray; @@ -18,7 +19,7 @@ use crate::scalar_fn::fns::cast::CastKernel; impl CastKernel for Struct { fn cast( - array: &StructArray, + array: ArrayView<'_, Struct>, dtype: &DType, _ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -88,7 +89,6 @@ mod tests { use rstest::rstest; use vortex_buffer::buffer; - use crate::DynArray; use crate::IntoArray; use crate::ToCanonical; use crate::arrays::PrimitiveArray; diff --git a/vortex-array/src/arrays/struct_/compute/mask.rs b/vortex-array/src/arrays/struct_/compute/mask.rs index 09f43e6b981..cdf8a772bbf 100644 --- a/vortex-array/src/arrays/struct_/compute/mask.rs +++ b/vortex-array/src/arrays/struct_/compute/mask.rs @@ -5,13 +5,14 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Struct; use crate::arrays::StructArray; use crate::scalar_fn::fns::mask::MaskReduce; use crate::validity::Validity; impl MaskReduce for Struct { - fn mask(array: &StructArray, mask: &ArrayRef) -> VortexResult> { + fn mask(array: ArrayView<'_, Struct>, mask: &ArrayRef) -> VortexResult> { StructArray::try_new_with_dtype( array.unmasked_fields().iter().cloned().collect::>(), array.struct_fields().clone(), diff --git a/vortex-array/src/arrays/struct_/compute/mod.rs b/vortex-array/src/arrays/struct_/compute/mod.rs index af6d73cca69..6d6e8c5b788 100644 --- a/vortex-array/src/arrays/struct_/compute/mod.rs +++ b/vortex-array/src/arrays/struct_/compute/mod.rs @@ -18,7 +18,6 @@ mod tests { use vortex_error::VortexExpect; use crate::Canonical; - use crate::DynArray; use crate::IntoArray as _; use crate::LEGACY_SESSION; use crate::VortexSessionExecute; diff --git a/vortex-array/src/arrays/struct_/compute/rules.rs b/vortex-array/src/arrays/struct_/compute/rules.rs index 78fa9af66fd..ddb471e8930 100644 --- a/vortex-array/src/arrays/struct_/compute/rules.rs +++ b/vortex-array/src/arrays/struct_/compute/rules.rs @@ -7,6 +7,7 @@ use vortex_error::vortex_err; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::ConstantArray; use crate::arrays::Struct; use crate::arrays::StructArray; @@ -46,7 +47,7 @@ impl ArrayParentReduceRule for StructCastPushDownRule { fn reduce_parent( &self, - array: &StructArray, + array: ArrayView<'_, Struct>, parent: ScalarFnArrayView, _child_idx: usize, ) -> VortexResult> { @@ -101,7 +102,7 @@ impl ArrayParentReduceRule for StructGetItemRule { fn reduce_parent( &self, - child: &StructArray, + child: ArrayView<'_, Struct>, parent: ScalarFnArrayView<'_, GetItem>, _child_idx: usize, ) -> VortexResult> { @@ -127,7 +128,7 @@ impl ArrayParentReduceRule for StructGetItemRule { } Validity::Array(mask) => { // If the validity is an array, we need to combine it with the field's validity - Mask.try_new_array(field.len(), EmptyOptions, [field.clone(), mask.clone()]) + Mask.try_new_array(field.len(), EmptyOptions, [field.clone(), mask]) .map(Some) } } diff --git a/vortex-array/src/arrays/struct_/compute/slice.rs b/vortex-array/src/arrays/struct_/compute/slice.rs index d6eea78b86a..8d4a4a69737 100644 --- a/vortex-array/src/arrays/struct_/compute/slice.rs +++ b/vortex-array/src/arrays/struct_/compute/slice.rs @@ -8,12 +8,13 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Struct; use crate::arrays::StructArray; use crate::arrays::slice::SliceReduce; impl SliceReduce for Struct { - fn slice(array: &Self::Array, range: Range) -> VortexResult> { + fn slice(array: ArrayView<'_, Self>, range: Range) -> VortexResult> { let fields: Vec<_> = array .iter_unmasked_fields() .map(|field| field.slice(range.clone())) diff --git a/vortex-array/src/arrays/struct_/compute/take.rs b/vortex-array/src/arrays/struct_/compute/take.rs index 967f9eafc3f..8836b45a2aa 100644 --- a/vortex-array/src/arrays/struct_/compute/take.rs +++ b/vortex-array/src/arrays/struct_/compute/take.rs @@ -4,8 +4,8 @@ use vortex_error::VortexResult; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Struct; use crate::arrays::StructArray; use crate::arrays::dict::TakeReduce; @@ -14,7 +14,7 @@ use crate::scalar::Scalar; use crate::validity::Validity; impl TakeReduce for Struct { - fn take(array: &StructArray, indices: &ArrayRef) -> VortexResult> { + fn take(array: ArrayView<'_, Struct>, indices: &ArrayRef) -> VortexResult> { // If the struct array is empty then the indices must be all null, otherwise it will access // an out of bounds element. if array.is_empty() { @@ -34,7 +34,7 @@ impl TakeReduce for Struct { // Note that we strip nullability so that `Take::return_dtype` doesn't union nullable into // each field's dtype (the struct-level validity already captures which rows are null). let fill_scalar = Scalar::zero_value(&indices.dtype().as_nonnullable()); - let inner_indices = indices.to_array().fill_null(fill_scalar)?; + let inner_indices = indices.clone().fill_null(fill_scalar)?; StructArray::try_new_with_dtype( array diff --git a/vortex-array/src/arrays/struct_/compute/zip.rs b/vortex-array/src/arrays/struct_/compute/zip.rs index d79ee278955..bf13f4f72cf 100644 --- a/vortex-array/src/arrays/struct_/compute/zip.rs +++ b/vortex-array/src/arrays/struct_/compute/zip.rs @@ -10,6 +10,7 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Struct; use crate::arrays::StructArray; use crate::builtins::ArrayBuiltins; @@ -18,7 +19,7 @@ use crate::validity::Validity; impl ZipKernel for Struct { fn zip( - if_true: &StructArray, + if_true: ArrayView<'_, Struct>, if_false: &ArrayRef, mask: &ArrayRef, ctx: &mut ExecutionCtx, @@ -97,10 +98,7 @@ mod tests { let mask = Mask::from_iter([false, false, true, false]); - let result = mask - .into_array() - .zip(if_true.clone(), if_false.clone()) - .unwrap(); + let result = mask.into_array().zip(if_true, if_false).unwrap(); insta::assert_snapshot!(result.display_table(), @r" ┌───────┐ @@ -137,10 +135,7 @@ mod tests { let mask = Mask::from_iter([true, false, false, false]); - let result = mask - .into_array() - .zip(if_true.clone(), if_false.clone()) - .unwrap(); + let result = mask.into_array().zip(if_true, if_false).unwrap(); insta::assert_snapshot!(result.display_table(), @r" ┌───────┐ diff --git a/vortex-array/src/arrays/struct_/mod.rs b/vortex-array/src/arrays/struct_/mod.rs index 727df32c4a2..b867f903901 100644 --- a/vortex-array/src/arrays/struct_/mod.rs +++ b/vortex-array/src/arrays/struct_/mod.rs @@ -2,8 +2,9 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors mod array; -pub use array::StructArray; pub use array::StructArrayParts; +pub use array::StructData; +pub use vtable::StructArray; pub(crate) mod compute; mod vtable; diff --git a/vortex-array/src/arrays/struct_/tests.rs b/vortex-array/src/arrays/struct_/tests.rs index 7a261810e61..6fb3078c993 100644 --- a/vortex-array/src/arrays/struct_/tests.rs +++ b/vortex-array/src/arrays/struct_/tests.rs @@ -60,7 +60,7 @@ fn test_remove_column() { let xs = PrimitiveArray::new(buffer![0i64, 1, 2, 3, 4], Validity::NonNullable); let ys = PrimitiveArray::new(buffer![4u64, 5, 6, 7, 8], Validity::NonNullable); - let mut struct_a = StructArray::try_new( + let struct_a = StructArray::try_new( FieldNames::from(["xs", "ys"]), vec![xs.into_array(), ys.into_array()], 5, @@ -68,31 +68,32 @@ fn test_remove_column() { ) .unwrap(); - let removed = struct_a.remove_column("xs").unwrap(); + let mut data = struct_a.into_data(); + let removed = data.remove_column("xs").unwrap(); assert_eq!( removed.dtype(), &DType::Primitive(PType::I64, Nullability::NonNullable) ); assert_arrays_eq!(removed, PrimitiveArray::from_iter([0i64, 1, 2, 3, 4])); - assert_eq!(struct_a.names(), &["ys"]); - assert_eq!(struct_a.struct_fields().nfields(), 1); - assert_eq!(struct_a.len(), 5); + assert_eq!(data.names(), &["ys"]); + assert_eq!(data.struct_fields().nfields(), 1); + assert_eq!(data.len(), 5); assert_eq!( - struct_a.unmasked_field(0).dtype(), + data.unmasked_field(0).dtype(), &DType::Primitive(PType::U64, Nullability::NonNullable) ); assert_arrays_eq!( - struct_a.unmasked_field(0), + data.unmasked_field(0), PrimitiveArray::from_iter([4u64, 5, 6, 7, 8]) ); - let empty = struct_a.remove_column("non_existent"); + let empty = data.remove_column("non_existent"); assert!( empty.is_none(), "Expected None when removing non-existent column" ); - assert_eq!(struct_a.names(), &["ys"]); + assert_eq!(data.names(), &["ys"]); } #[test] diff --git a/vortex-array/src/arrays/struct_/vtable/mod.rs b/vortex-array/src/arrays/struct_/vtable/mod.rs index 2ace423d534..819db769eff 100644 --- a/vortex-array/src/arrays/struct_/vtable/mod.rs +++ b/vortex-array/src/arrays/struct_/vtable/mod.rs @@ -1,8 +1,6 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors -use std::sync::Arc; - use itertools::Itertools; use kernel::PARENT_KERNELS; use vortex_error::VortexExpect; @@ -15,7 +13,10 @@ use crate::ArrayRef; use crate::EmptyMetadata; use crate::ExecutionCtx; use crate::ExecutionResult; -use crate::arrays::StructArray; +use crate::array::Array; +use crate::array::ArrayView; +use crate::array::VTable; +use crate::arrays::struct_::StructData; use crate::arrays::struct_::array::FIELDS_OFFSET; use crate::arrays::struct_::array::VALIDITY_SLOT; use crate::arrays::struct_::compute::rules::PARENT_RULES; @@ -24,28 +25,25 @@ use crate::dtype::DType; use crate::serde::ArrayChildren; use crate::validity::Validity; use crate::vtable; -use crate::vtable::Array; -use crate::vtable::VTable; mod kernel; mod operations; mod validity; -use std::hash::Hash; use crate::Precision; +use crate::array::ArrayId; use crate::hash::ArrayEq; use crate::hash::ArrayHash; -use crate::stats::StatsSetRef; -use crate::vtable::ArrayId; +use crate::stats::ArrayStats; -vtable!(Struct); +vtable!(Struct, Struct, StructData); impl VTable for Struct { - type Array = StructArray; + type ArrayData = StructData; type Metadata = EmptyMetadata; type OperationsVTable = Self; type ValidityVTable = Self; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &Self::ArrayData) -> &Self { &Struct } @@ -53,31 +51,27 @@ impl VTable for Struct { Self::ID } - fn len(array: &StructArray) -> usize { + fn len(array: &StructData) -> usize { array.len } - fn dtype(array: &StructArray) -> &DType { + fn dtype(array: &StructData) -> &DType { &array.dtype } - fn stats(array: &StructArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &StructData) -> &ArrayStats { + &array.stats_set } - fn array_hash(array: &StructArray, state: &mut H, precision: Precision) { - array.len.hash(state); - array.dtype.hash(state); + fn array_hash(array: &StructData, state: &mut H, precision: Precision) { for field in array.iter_unmasked_fields() { field.array_hash(state, precision); } array.validity().array_hash(state, precision); } - fn array_eq(array: &StructArray, other: &StructArray, precision: Precision) -> bool { - array.len == other.len - && array.dtype == other.dtype - && array.slots.len() == other.slots.len() + fn array_eq(array: &StructData, other: &StructData, precision: Precision) -> bool { + array.slots.len() == other.slots.len() && array .iter_unmasked_fields() .zip(other.iter_unmasked_fields()) @@ -85,19 +79,19 @@ impl VTable for Struct { && array.validity().array_eq(&other.validity(), precision) } - fn nbuffers(_array: &StructArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 0 } - fn buffer(_array: &StructArray, idx: usize) -> BufferHandle { + fn buffer(_array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { vortex_panic!("StructArray buffer index {idx} out of bounds") } - fn buffer_name(_array: &StructArray, idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, idx: usize) -> Option { vortex_panic!("StructArray buffer_name index {idx} out of bounds") } - fn metadata(_array: &StructArray) -> VortexResult { + fn metadata(_array: ArrayView<'_, Self>) -> VortexResult { Ok(EmptyMetadata) } @@ -121,7 +115,7 @@ impl VTable for Struct { _metadata: &Self::Metadata, _buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { let DType::Struct(struct_dtype, nullability) = dtype else { vortex_bail!("Expected struct dtype, found {:?}", dtype) }; @@ -149,14 +143,14 @@ impl VTable for Struct { }) .try_collect()?; - StructArray::try_new_with_dtype(field_children, struct_dtype.clone(), len, validity) + StructData::try_new_with_dtype(field_children, struct_dtype.clone(), len, validity) } - fn slots(array: &StructArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(array: &StructArray, idx: usize) -> String { + fn slot_name(array: ArrayView<'_, Self>, idx: usize) -> String { if idx == VALIDITY_SLOT { "validity".to_string() } else { @@ -164,17 +158,17 @@ impl VTable for Struct { } } - fn with_slots(array: &mut StructArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { array.slots = slots; Ok(()) } - fn execute(array: Arc>, _ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, _ctx: &mut ExecutionCtx) -> VortexResult { Ok(ExecutionResult::done(array)) } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { @@ -182,7 +176,7 @@ impl VTable for Struct { } fn execute_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, diff --git a/vortex-array/src/arrays/struct_/vtable/operations.rs b/vortex-array/src/arrays/struct_/vtable/operations.rs index 9890806a67c..ba7b3c6e315 100644 --- a/vortex-array/src/arrays/struct_/vtable/operations.rs +++ b/vortex-array/src/arrays/struct_/vtable/operations.rs @@ -3,16 +3,15 @@ use vortex_error::VortexResult; -use crate::DynArray; use crate::ExecutionCtx; +use crate::array::ArrayView; +use crate::array::OperationsVTable; use crate::arrays::Struct; -use crate::arrays::StructArray; use crate::scalar::Scalar; -use crate::vtable::OperationsVTable; impl OperationsVTable for Struct { fn scalar_at( - array: &StructArray, + array: ArrayView<'_, Struct>, index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { diff --git a/vortex-array/src/arrays/struct_/vtable/validity.rs b/vortex-array/src/arrays/struct_/vtable/validity.rs index 84378eee54b..53c31b1994e 100644 --- a/vortex-array/src/arrays/struct_/vtable/validity.rs +++ b/vortex-array/src/arrays/struct_/vtable/validity.rs @@ -3,13 +3,13 @@ use vortex_error::VortexResult; -use crate::arrays::StructArray; +use crate::array::ArrayView; +use crate::array::ValidityVTable; use crate::arrays::struct_::vtable::Struct; use crate::validity::Validity; -use crate::vtable::ValidityVTable; impl ValidityVTable for Struct { - fn validity(array: &StructArray) -> VortexResult { - Ok(array.validity()) + fn validity(array: ArrayView<'_, Struct>) -> VortexResult { + Ok(array.data().validity()) } } diff --git a/vortex-array/src/arrays/varbin/array.rs b/vortex-array/src/arrays/varbin/array.rs index 7df2b442338..c50c06285ef 100644 --- a/vortex-array/src/arrays/varbin/array.rs +++ b/vortex-array/src/arrays/varbin/array.rs @@ -7,10 +7,14 @@ use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_error::vortex_ensure; use vortex_error::vortex_err; +use vortex_mask::Mask; use crate::ArrayRef; -use crate::DynArray; use crate::ToCanonical; +use crate::array::Array; +use crate::array::child_to_validity; +use crate::array::validity_to_child; +use crate::arrays::VarBin; use crate::arrays::varbin::builder::VarBinBuilder; use crate::buffer::BufferHandle; use crate::dtype::DType; @@ -19,8 +23,6 @@ use crate::dtype::Nullability; use crate::match_each_integer_ptype; use crate::stats::ArrayStats; use crate::validity::Validity; -use crate::vtable::child_to_validity; -use crate::vtable::validity_to_child; /// The offsets array defining the start/end of each variable-length binary element. pub(super) const OFFSETS_SLOT: usize = 0; @@ -30,30 +32,30 @@ pub(super) const NUM_SLOTS: usize = 2; pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["offsets", "validity"]; #[derive(Clone, Debug)] -pub struct VarBinArray { +pub struct VarBinData { pub(super) dtype: DType, pub(super) bytes: BufferHandle, pub(super) slots: Vec>, pub(super) stats_set: ArrayStats, } -impl VarBinArray { - /// Creates a new [`VarBinArray`]. +impl VarBinData { + /// Creates a new `VarBinArray`. /// /// # Panics /// /// Panics if the provided components do not satisfy the invariants documented - /// in [`VarBinArray::new_unchecked`]. + /// in `VarBinArray::new_unchecked`. pub fn new(offsets: ArrayRef, bytes: ByteBuffer, dtype: DType, validity: Validity) -> Self { Self::try_new(offsets, bytes, dtype, validity).vortex_expect("VarBinArray new") } - /// Creates a new [`VarBinArray`]. + /// Creates a new `VarBinArray`. /// /// # Panics /// /// Panics if the provided components do not satisfy the invariants documented - /// in [`VarBinArray::new_unchecked`]. + /// in `VarBinArray::new_unchecked`. pub fn new_from_handle( offset: ArrayRef, bytes: BufferHandle, @@ -65,12 +67,12 @@ impl VarBinArray { /// Constructs a new `VarBinArray`. /// - /// See [`VarBinArray::new_unchecked`] for more information. + /// See `VarBinArray::new_unchecked` for more information. /// /// # Errors /// /// Returns an error if the provided components do not satisfy the invariants documented in - /// [`VarBinArray::new_unchecked`]. + /// `VarBinArray::new_unchecked`. pub fn try_new( offsets: ArrayRef, bytes: ByteBuffer, @@ -87,12 +89,12 @@ impl VarBinArray { /// Constructs a new `VarBinArray` from a `BufferHandle` of memory that may exist /// on the CPU or GPU. /// - /// See [`VarBinArray::new_unchecked`] for more information. + /// See `VarBinArray::new_unchecked` for more information. /// /// # Errors /// /// Returns an error if the provided components do not satisfy the invariants documented in - /// [`VarBinArray::new_unchecked`]. + /// `VarBinArray::new_unchecked`. pub fn try_new_from_handle( offsets: ArrayRef, bytes: BufferHandle, @@ -105,7 +107,7 @@ impl VarBinArray { Ok(unsafe { Self::new_unchecked_from_handle(offsets, bytes, dtype, validity) }) } - /// Creates a new [`VarBinArray`] without validation from these components: + /// Creates a new `VarBinArray` without validation from these components: /// /// * `offsets` is an array of byte offsets into the `bytes` buffer. /// * `bytes` is a buffer containing all the variable-length data concatenated. @@ -146,7 +148,7 @@ impl VarBinArray { } } - /// Creates a new [`VarBinArray`] without validation from its components, with string data + /// Creates a new `VarBinArray` without validation from its components, with string data /// stored in a `BufferHandle` (CPU or GPU). /// /// # Safety @@ -173,9 +175,9 @@ impl VarBinArray { } } - /// Validates the components that would be used to create a [`VarBinArray`]. + /// Validates the components that would be used to create a `VarBinArray`. /// - /// This function checks all the invariants required by [`VarBinArray::new_unchecked`]. + /// This function checks all the invariants required by `VarBinArray::new_unchecked`. pub fn validate( offsets: &ArrayRef, bytes: &BufferHandle, @@ -267,11 +269,32 @@ impl VarBinArray { Ok(()) } - /// Reconstructs the validity from the slots. + /// Returns the length of this array. + pub fn len(&self) -> usize { + self.offsets().len().saturating_sub(1) + } + + /// Returns the [`DType`] of this array. + pub fn dtype(&self) -> &DType { + &self.dtype + } + + /// Returns `true` if this array is empty. + pub fn is_empty(&self) -> bool { + self.len() == 0 + } + + /// Returns the [`Validity`] of this array. + #[allow(clippy::same_name_method)] pub fn validity(&self) -> Validity { child_to_validity(&self.slots[VALIDITY_SLOT], self.dtype.nullability()) } + /// Returns the validity as a [`Mask`]. + pub fn validity_mask(&self) -> Mask { + self.validity().to_mask(self.len()) + } + #[inline] pub fn offsets(&self) -> &ArrayRef { self.slots[OFFSETS_SLOT] @@ -324,7 +347,7 @@ impl VarBinArray { for v in vec { builder.append_value(v.as_ref()); } - builder.finish(dtype) + builder.finish(dtype).into_data() } #[expect( @@ -340,7 +363,7 @@ impl VarBinArray { for v in iter { builder.append(v.as_ref().map(|o| o.as_ref())); } - builder.finish(dtype) + builder.finish(dtype).into_data() } pub fn from_iter_nonnull, I: IntoIterator>( @@ -352,9 +375,59 @@ impl VarBinArray { for v in iter { builder.append_value(v); } - builder.finish(dtype) + builder.finish(dtype).into_data() + } +} + +/// Forwarding constructors for `VarBinArray` (= `Array`). +impl Array { + pub fn from_vec>(vec: Vec, dtype: DType) -> Self { + Array::try_from_data(VarBinData::from_vec(vec, dtype)) + .vortex_expect("VarBinData is always valid") + } + + #[expect( + clippy::same_name_method, + reason = "intentionally named from_iter like Iterator::from_iter" + )] + pub fn from_iter, I: IntoIterator>>( + iter: I, + dtype: DType, + ) -> Self { + Array::try_from_data(VarBinData::from_iter(iter, dtype)) + .vortex_expect("VarBinData is always valid") + } + + pub fn from_iter_nonnull, I: IntoIterator>( + iter: I, + dtype: DType, + ) -> Self { + Array::try_from_data(VarBinData::from_iter_nonnull(iter, dtype)) + .vortex_expect("VarBinData is always valid") } + /// Create from a vector of string slices. + pub fn from_strs(value: Vec<&str>) -> Self { + Self::from_vec(value, DType::Utf8(Nullability::NonNullable)) + } + + /// Create from a vector of optional string slices. + pub fn from_nullable_strs(value: Vec>) -> Self { + Self::from_iter(value, DType::Utf8(Nullability::Nullable)) + } + + /// Create from a vector of byte slices. + pub fn from_bytes(value: Vec<&[u8]>) -> Self { + Self::from_vec(value, DType::Binary(Nullability::NonNullable)) + } + + /// Create from a vector of optional byte slices. + pub fn from_nullable_bytes(value: Vec>) -> Self { + Self::from_iter(value, DType::Binary(Nullability::Nullable)) + } +} + +impl VarBinData { /// Get value offset at a given index /// /// Note: There's 1 more offsets than the elements in the array, thus last offset is at array length index @@ -396,74 +469,202 @@ impl VarBinArray { } } -impl From> for VarBinArray { +impl Array { + /// Creates a new `VarBinArray`. + pub fn new(offsets: ArrayRef, bytes: ByteBuffer, dtype: DType, validity: Validity) -> Self { + Array::try_from_data(VarBinData::new(offsets, bytes, dtype, validity)) + .vortex_expect("VarBinData is always valid") + } + + /// Creates a new `VarBinArray` without validation. + /// + /// # Safety + /// + /// See [`VarBinData::new_unchecked`]. + pub unsafe fn new_unchecked( + offsets: ArrayRef, + bytes: ByteBuffer, + dtype: DType, + validity: Validity, + ) -> Self { + Array::try_from_data(unsafe { VarBinData::new_unchecked(offsets, bytes, dtype, validity) }) + .vortex_expect("VarBinData is always valid") + } + + /// Creates a new `VarBinArray` without validation from a [`BufferHandle`]. + /// + /// # Safety + /// + /// See [`VarBinData::new_unchecked_from_handle`]. + pub unsafe fn new_unchecked_from_handle( + offsets: ArrayRef, + bytes: BufferHandle, + dtype: DType, + validity: Validity, + ) -> Self { + Array::try_from_data(unsafe { + VarBinData::new_unchecked_from_handle(offsets, bytes, dtype, validity) + }) + .vortex_expect("VarBinData is always valid") + } + + /// Constructs a new `VarBinArray`. + pub fn try_new( + offsets: ArrayRef, + bytes: ByteBuffer, + dtype: DType, + validity: Validity, + ) -> VortexResult { + Array::try_from_data(VarBinData::try_new(offsets, bytes, dtype, validity)?) + } +} + +impl From> for VarBinData { fn from(value: Vec<&[u8]>) -> Self { Self::from_vec(value, DType::Binary(Nullability::NonNullable)) } } -impl From>> for VarBinArray { +impl From>> for VarBinData { fn from(value: Vec>) -> Self { Self::from_vec(value, DType::Binary(Nullability::NonNullable)) } } -impl From> for VarBinArray { +impl From> for VarBinData { fn from(value: Vec) -> Self { Self::from_vec(value, DType::Utf8(Nullability::NonNullable)) } } -impl From> for VarBinArray { +impl From> for VarBinData { fn from(value: Vec<&str>) -> Self { Self::from_vec(value, DType::Utf8(Nullability::NonNullable)) } } -impl From>> for VarBinArray { +impl From>> for VarBinData { fn from(value: Vec>) -> Self { Self::from_iter(value, DType::Binary(Nullability::Nullable)) } } -impl From>>> for VarBinArray { +impl From>>> for VarBinData { fn from(value: Vec>>) -> Self { Self::from_iter(value, DType::Binary(Nullability::Nullable)) } } -impl From>> for VarBinArray { +impl From>> for VarBinData { fn from(value: Vec>) -> Self { Self::from_iter(value, DType::Utf8(Nullability::Nullable)) } } -impl From>> for VarBinArray { +impl From>> for VarBinData { fn from(value: Vec>) -> Self { Self::from_iter(value, DType::Utf8(Nullability::Nullable)) } } -impl<'a> FromIterator> for VarBinArray { +impl<'a> FromIterator> for VarBinData { fn from_iter>>(iter: T) -> Self { Self::from_iter(iter, DType::Binary(Nullability::Nullable)) } } -impl FromIterator>> for VarBinArray { +impl FromIterator>> for VarBinData { fn from_iter>>>(iter: T) -> Self { Self::from_iter(iter, DType::Binary(Nullability::Nullable)) } } -impl FromIterator> for VarBinArray { +impl FromIterator> for VarBinData { fn from_iter>>(iter: T) -> Self { Self::from_iter(iter, DType::Utf8(Nullability::Nullable)) } } -impl<'a> FromIterator> for VarBinArray { +impl<'a> FromIterator> for VarBinData { fn from_iter>>(iter: T) -> Self { Self::from_iter(iter, DType::Utf8(Nullability::Nullable)) } } + +// --- From and FromIterator forwarding for Array --- + +impl From> for Array { + fn from(value: Vec<&[u8]>) -> Self { + Array::try_from_data(VarBinData::from(value)).vortex_expect("VarBinData is always valid") + } +} + +impl From>> for Array { + fn from(value: Vec>) -> Self { + Array::try_from_data(VarBinData::from(value)).vortex_expect("VarBinData is always valid") + } +} + +impl From> for Array { + fn from(value: Vec) -> Self { + Array::try_from_data(VarBinData::from(value)).vortex_expect("VarBinData is always valid") + } +} + +impl From> for Array { + fn from(value: Vec<&str>) -> Self { + Array::try_from_data(VarBinData::from(value)).vortex_expect("VarBinData is always valid") + } +} + +impl From>> for Array { + fn from(value: Vec>) -> Self { + Array::try_from_data(VarBinData::from(value)).vortex_expect("VarBinData is always valid") + } +} + +impl From>>> for Array { + fn from(value: Vec>>) -> Self { + Array::try_from_data(VarBinData::from(value)).vortex_expect("VarBinData is always valid") + } +} + +impl From>> for Array { + fn from(value: Vec>) -> Self { + Array::try_from_data(VarBinData::from(value)).vortex_expect("VarBinData is always valid") + } +} + +impl From>> for Array { + fn from(value: Vec>) -> Self { + Array::try_from_data(VarBinData::from(value)).vortex_expect("VarBinData is always valid") + } +} + +impl<'a> FromIterator> for Array { + fn from_iter>>(iter: T) -> Self { + Array::try_from_data(>::from_iter(iter)) + .vortex_expect(" is always valid") + } +} + +impl FromIterator>> for Array { + fn from_iter>>>(iter: T) -> Self { + Array::try_from_data(>::from_iter(iter)) + .vortex_expect(" is always valid") + } +} + +impl FromIterator> for Array { + fn from_iter>>(iter: T) -> Self { + Array::try_from_data(>::from_iter(iter)) + .vortex_expect(" is always valid") + } +} + +impl<'a> FromIterator> for Array { + fn from_iter>>(iter: T) -> Self { + Array::try_from_data(>::from_iter(iter)) + .vortex_expect(" is always valid") + } +} diff --git a/vortex-array/src/arrays/varbin/builder.rs b/vortex-array/src/arrays/varbin/builder.rs index 8dd5066a889..78675e337d7 100644 --- a/vortex-array/src/arrays/varbin/builder.rs +++ b/vortex-array/src/arrays/varbin/builder.rs @@ -7,6 +7,8 @@ use vortex_buffer::BufferMut; use vortex_error::vortex_panic; use crate::IntoArray; +use crate::array::VTable; +use crate::arrays::Primitive; use crate::arrays::PrimitiveArray; use crate::arrays::VarBinArray; use crate::dtype::DType; @@ -103,9 +105,7 @@ impl VarBinBuilder { offsets.statistics().compute_is_sorted().unwrap_or(false), "VarBinBuilder offsets must be sorted" ); - offsets - .statistics() - .set(Stat::IsSorted, Precision::Exact(true.into())); + Primitive::stats(&offsets).set(Stat::IsSorted, Precision::Exact(true.into())); // SAFETY: The builder maintains all invariants: // - Offsets are monotonically increasing starting from 0 (guaranteed by builder logic). diff --git a/vortex-array/src/arrays/varbin/compute/cast.rs b/vortex-array/src/arrays/varbin/compute/cast.rs index 28e493a3120..e1d7a1b2324 100644 --- a/vortex-array/src/arrays/varbin/compute/cast.rs +++ b/vortex-array/src/arrays/varbin/compute/cast.rs @@ -5,13 +5,14 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::VarBin; use crate::arrays::VarBinArray; use crate::dtype::DType; use crate::scalar_fn::fns::cast::CastReduce; impl CastReduce for VarBin { - fn cast(array: &VarBinArray, dtype: &DType) -> VortexResult> { + fn cast(array: ArrayView<'_, VarBin>, dtype: &DType) -> VortexResult> { if !array.dtype().eq_ignore_nullability(dtype) { return Ok(None); } diff --git a/vortex-array/src/arrays/varbin/compute/compare.rs b/vortex-array/src/arrays/varbin/compute/compare.rs index b65d652680e..1c2f8842a75 100644 --- a/vortex-array/src/arrays/varbin/compute/compare.rs +++ b/vortex-array/src/arrays/varbin/compute/compare.rs @@ -11,13 +11,12 @@ use vortex_error::vortex_bail; use vortex_error::vortex_err; use crate::ArrayRef; -use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::BoolArray; use crate::arrays::PrimitiveArray; use crate::arrays::VarBin; -use crate::arrays::VarBinArray; use crate::arrays::VarBinViewArray; use crate::arrow::Datum; use crate::arrow::from_arrow_array_with_len; @@ -32,7 +31,7 @@ use crate::scalar_fn::fns::operators::Operator; // This implementation exists so we can have custom translation of RHS to arrow that's not the same as IntoCanonical impl CompareKernel for VarBin { fn compare( - lhs: &VarBinArray, + lhs: ArrayView<'_, VarBin>, rhs: &ArrayRef, operator: CompareOperator, ctx: &mut ExecutionCtx, @@ -80,7 +79,7 @@ impl CompareKernel for VarBin { )); } - let lhs = Datum::try_new(&lhs.clone().into_array())?; + let lhs = Datum::try_new(lhs.array())?; // Use StringViewArray/BinaryViewArray to match the Utf8View/BinaryView types // produced by Datum::try_new (which uses into_arrow_preferred()) @@ -116,13 +115,13 @@ impl CompareKernel for VarBin { // NOTE: If the rhs is not a VarBin array it will be canonicalized to a VarBinView // Arrow doesn't support comparing VarBin to VarBinView arrays, so we convert ourselves // to VarBinView and re-invoke. - return Ok(Some( - lhs.clone() - .into_array() + Ok(Some( + lhs.array() + .clone() .execute::(ctx)? .into_array() - .binary(rhs.to_array(), Operator::from(operator))?, - )); + .binary(rhs.clone(), Operator::from(operator))?, + )) } else { Ok(None) } @@ -213,7 +212,6 @@ mod test { #[cfg(test)] mod tests { - use crate::DynArray; use crate::IntoArray; use crate::arrays::ConstantArray; use crate::arrays::VarBinArray; diff --git a/vortex-array/src/arrays/varbin/compute/filter.rs b/vortex-array/src/arrays/varbin/compute/filter.rs index 83ced2e0377..cfe940e36e9 100644 --- a/vortex-array/src/arrays/varbin/compute/filter.rs +++ b/vortex-array/src/arrays/varbin/compute/filter.rs @@ -14,6 +14,7 @@ use vortex_mask::MaskIter; use crate::ArrayRef; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::PrimitiveArray; use crate::arrays::VarBin; use crate::arrays::VarBinArray; @@ -26,7 +27,7 @@ use crate::validity::Validity; impl FilterKernel for VarBin { fn filter( - array: &VarBinArray, + array: ArrayView<'_, VarBin>, mask: &Mask, ctx: &mut ExecutionCtx, ) -> VortexResult> { @@ -35,7 +36,7 @@ impl FilterKernel for VarBin { } fn filter_select_var_bin( - arr: &VarBinArray, + arr: ArrayView<'_, VarBin>, mask: &Mask, ctx: &mut ExecutionCtx, ) -> VortexResult { @@ -54,19 +55,19 @@ fn filter_select_var_bin( } fn filter_select_var_bin_by_slice( - values: &VarBinArray, + values: ArrayView<'_, VarBin>, mask_slices: &[(usize, usize)], selection_count: usize, ctx: &mut ExecutionCtx, ) -> VortexResult { - let offsets = values.offsets().to_array().execute::(ctx)?; + let offsets = values.offsets().clone().execute::(ctx)?; match_each_integer_ptype!(offsets.ptype(), |O| { filter_select_var_bin_by_slice_primitive_offset( values.dtype().clone(), offsets.as_slice::(), values.bytes().as_slice(), mask_slices, - values.validity_mask()?, + values.validity_mask(), selection_count, ) }) @@ -153,12 +154,12 @@ fn update_non_nullable_slice( } fn filter_select_var_bin_by_index( - values: &VarBinArray, + values: ArrayView<'_, VarBin>, mask_indices: &[usize], selection_count: usize, ctx: &mut ExecutionCtx, ) -> VortexResult { - let offsets = values.offsets().to_array().execute::(ctx)?; + let offsets = values.offsets().clone().execute::(ctx)?; match_each_integer_ptype!(offsets.ptype(), |O| { filter_select_var_bin_by_index_primitive_offset( values.dtype().clone(), @@ -228,8 +229,9 @@ mod test { ], DType::Utf8(NonNullable), ); + let arr = arr.as_view(); let buf = filter_select_var_bin_by_index( - &arr, + arr, &[0, 2], 2, &mut LEGACY_SESSION.create_execution_ctx(), @@ -252,8 +254,9 @@ mod test { DType::Utf8(NonNullable), ); + let arr = arr.as_view(); let buf = filter_select_var_bin_by_slice( - &arr, + arr, &[(0, 1), (2, 3), (4, 5)], 3, &mut LEGACY_SESSION.create_execution_ctx(), @@ -283,8 +286,9 @@ mod test { ); let arr = VarBinArray::try_new(offsets, bytes, DType::Utf8(Nullable), validity).unwrap(); + let arr = arr.as_view(); let buf = filter_select_var_bin_by_slice( - &arr, + arr, &[(0, 3), (4, 6)], 5, &mut LEGACY_SESSION.create_execution_ctx(), @@ -314,8 +318,9 @@ mod test { let validity = Validity::Array(BoolArray::from_iter([false, true, true]).into_array()); let arr = VarBinArray::try_new(offsets, bytes, DType::Utf8(Nullable), validity).unwrap(); + let arr = arr.as_view(); let buf = filter_select_var_bin_by_slice( - &arr, + arr, &[(0, 1), (2, 3)], 2, &mut LEGACY_SESSION.create_execution_ctx(), @@ -337,8 +342,9 @@ mod test { ) .unwrap(); + let arr = arr.as_view(); let buf = filter_select_var_bin_by_slice( - &arr, + arr, &[(0, 1), (2, 3)], 2, &mut LEGACY_SESSION.create_execution_ctx(), diff --git a/vortex-array/src/arrays/varbin/compute/mask.rs b/vortex-array/src/arrays/varbin/compute/mask.rs index 3a796be28fe..7f26cdf8d1a 100644 --- a/vortex-array/src/arrays/varbin/compute/mask.rs +++ b/vortex-array/src/arrays/varbin/compute/mask.rs @@ -5,13 +5,14 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::VarBin; use crate::arrays::VarBinArray; use crate::scalar_fn::fns::mask::MaskReduce; use crate::validity::Validity; impl MaskReduce for VarBin { - fn mask(array: &VarBinArray, mask: &ArrayRef) -> VortexResult> { + fn mask(array: ArrayView<'_, VarBin>, mask: &ArrayRef) -> VortexResult> { Ok(Some( VarBinArray::try_new( array.offsets().clone(), diff --git a/vortex-array/src/arrays/varbin/compute/slice.rs b/vortex-array/src/arrays/varbin/compute/slice.rs index 6575968a976..94f39ebea87 100644 --- a/vortex-array/src/arrays/varbin/compute/slice.rs +++ b/vortex-array/src/arrays/varbin/compute/slice.rs @@ -7,18 +7,19 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::VarBin; use crate::arrays::VarBinArray; use crate::arrays::slice::SliceReduce; impl SliceReduce for VarBin { - fn slice(array: &Self::Array, range: Range) -> VortexResult> { + fn slice(array: ArrayView<'_, Self>, range: Range) -> VortexResult> { VarBin::_slice(array, range).map(Some) } } impl VarBin { - pub fn _slice(array: &VarBinArray, range: Range) -> VortexResult { + pub fn _slice(array: ArrayView<'_, VarBin>, range: Range) -> VortexResult { Ok(unsafe { VarBinArray::new_unchecked_from_handle( array.offsets().slice(range.start..range.end + 1)?, diff --git a/vortex-array/src/arrays/varbin/compute/take.rs b/vortex-array/src/arrays/varbin/compute/take.rs index 48ebf506d02..d742b4cda51 100644 --- a/vortex-array/src/arrays/varbin/compute/take.rs +++ b/vortex-array/src/arrays/varbin/compute/take.rs @@ -11,6 +11,7 @@ use vortex_mask::Mask; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::PrimitiveArray; use crate::arrays::VarBin; use crate::arrays::VarBinArray; @@ -23,19 +24,19 @@ use crate::validity::Validity; impl TakeExecute for VarBin { fn take( - array: &VarBinArray, + array: ArrayView<'_, VarBin>, indices: &ArrayRef, ctx: &mut ExecutionCtx, ) -> VortexResult> { // TODO(joe): Be lazy with execute - let offsets = array.offsets().to_array().execute::(ctx)?; + let offsets = array.offsets().clone().execute::(ctx)?; let data = array.bytes(); - let indices = indices.to_array().execute::(ctx)?; + let indices = indices.clone().execute::(ctx)?; let dtype = array .dtype() .clone() .union_nullability(indices.dtype().nullability()); - let array_validity = array.validity_mask()?; + let array_validity = array.validity_mask(); let indices_validity = indices.validity_mask()?; let array = match_each_integer_ptype!(indices.ptype(), |I| { @@ -250,7 +251,6 @@ mod tests { use vortex_buffer::ByteBuffer; use vortex_buffer::buffer; - use crate::DynArray; use crate::IntoArray; use crate::arrays::VarBinArray; use crate::arrays::VarBinViewArray; @@ -312,7 +312,7 @@ mod tests { ); let indices = buffer![0u32; 3].into_array(); - let taken = array.take(indices.to_array()).unwrap(); + let taken = array.take(indices).unwrap(); let expected = VarBinViewArray::from_iter( [Some(scream.clone()), Some(scream.clone()), Some(scream)], diff --git a/vortex-array/src/arrays/varbin/mod.rs b/vortex-array/src/arrays/varbin/mod.rs index 6cdfb228a6d..dc3fa89f746 100644 --- a/vortex-array/src/arrays/varbin/mod.rs +++ b/vortex-array/src/arrays/varbin/mod.rs @@ -2,7 +2,8 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors mod array; -pub use array::VarBinArray; +pub use array::VarBinData; +pub use vtable::VarBinArray; pub(crate) mod compute; diff --git a/vortex-array/src/arrays/varbin/tests.rs b/vortex-array/src/arrays/varbin/tests.rs index b51ea9ffadb..4711c69102e 100644 --- a/vortex-array/src/arrays/varbin/tests.rs +++ b/vortex-array/src/arrays/varbin/tests.rs @@ -7,7 +7,6 @@ use vortex_buffer::Buffer; use vortex_buffer::buffer; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; use crate::arrays::VarBinArray; use crate::arrays::VarBinViewArray; diff --git a/vortex-array/src/arrays/varbin/vtable/canonical.rs b/vortex-array/src/arrays/varbin/vtable/canonical.rs index 17dae4a4fbe..b7ee968c90c 100644 --- a/vortex-array/src/arrays/varbin/vtable/canonical.rs +++ b/vortex-array/src/arrays/varbin/vtable/canonical.rs @@ -7,8 +7,9 @@ use num_traits::AsPrimitive; use vortex_error::VortexResult; use crate::ExecutionCtx; +use crate::array::ArrayView; use crate::arrays::PrimitiveArray; -use crate::arrays::VarBinArray; +use crate::arrays::VarBin; use crate::arrays::VarBinViewArray; use crate::arrays::varbinview::build_views::MAX_BUFFER_LEN; use crate::arrays::varbinview::build_views::build_views; @@ -19,10 +20,10 @@ use crate::match_each_integer_ptype; /// /// This is a shared helper used by both `canonicalize` and `execute`. pub(crate) fn varbin_to_canonical( - array: &VarBinArray, + array: ArrayView<'_, VarBin>, ctx: &mut ExecutionCtx, ) -> VortexResult { - let (dtype, bytes, offsets, validity) = array.clone().into_parts(); + let (dtype, bytes, offsets, validity) = array.into_owned().into_data().into_parts(); let offsets = offsets.execute::(ctx)?; @@ -86,7 +87,7 @@ mod tests { #[case(DType::Binary(Nullability::NonNullable))] fn test_canonical_varbin_unsliced(#[case] dtype: DType) { let varbin = VarBinArray::from_iter_nonnull(["foo", "bar", "baz"], dtype.clone()); - let canonical = varbin.to_varbinview(); + let canonical = varbin.as_array().to_varbinview(); let expected = match dtype { DType::Utf8(_) => VarBinViewArray::from_iter_str(["foo", "bar", "baz"]), _ => VarBinViewArray::from_iter_bin(["foo", "bar", "baz"]), @@ -99,7 +100,7 @@ mod tests { fn test_canonical_varbin_empty() { let varbin = VarBinArray::from_iter_nonnull([] as [&str; 0], DType::Utf8(Nullability::NonNullable)); - let canonical = varbin.to_varbinview(); + let canonical = varbin.as_array().to_varbinview(); assert_eq!(canonical.len(), 0); } } diff --git a/vortex-array/src/arrays/varbin/vtable/mod.rs b/vortex-array/src/arrays/varbin/vtable/mod.rs index 0ed565a2587..8b8664ce506 100644 --- a/vortex-array/src/arrays/varbin/vtable/mod.rs +++ b/vortex-array/src/arrays/varbin/vtable/mod.rs @@ -1,8 +1,6 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors -use std::sync::Arc; - use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_error::vortex_bail; @@ -16,7 +14,11 @@ use crate::ExecutionResult; use crate::IntoArray; use crate::ProstMetadata; use crate::SerializeMetadata; -use crate::arrays::VarBinArray; +use crate::array::Array; +use crate::array::ArrayId; +use crate::array::ArrayView; +use crate::array::VTable; +use crate::arrays::varbin::VarBinData; use crate::arrays::varbin::array::NUM_SLOTS; use crate::arrays::varbin::array::SLOT_NAMES; use crate::buffer::BufferHandle; @@ -26,14 +28,10 @@ use crate::dtype::PType; use crate::serde::ArrayChildren; use crate::validity::Validity; use crate::vtable; -use crate::vtable::Array; -use crate::vtable::ArrayId; -use crate::vtable::VTable; mod canonical; mod kernel; mod operations; mod validity; -use std::hash::Hash; use canonical::varbin_to_canonical; use kernel::PARENT_KERNELS; @@ -43,9 +41,9 @@ use crate::Precision; use crate::arrays::varbin::compute::rules::PARENT_RULES; use crate::hash::ArrayEq; use crate::hash::ArrayHash; -use crate::stats::StatsSetRef; +use crate::stats::ArrayStats; -vtable!(VarBin); +vtable!(VarBin, VarBin, VarBinData); #[derive(Clone, prost::Message)] pub struct VarBinMetadata { @@ -54,12 +52,12 @@ pub struct VarBinMetadata { } impl VTable for VarBin { - type Array = VarBinArray; + type ArrayData = VarBinData; type Metadata = ProstMetadata; type OperationsVTable = Self; type ValidityVTable = Self; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &VarBinData) -> &Self { &VarBin } @@ -67,51 +65,49 @@ impl VTable for VarBin { Self::ID } - fn len(array: &VarBinArray) -> usize { + fn len(array: &VarBinData) -> usize { array.offsets().len().saturating_sub(1) } - fn dtype(array: &VarBinArray) -> &DType { + fn dtype(array: &VarBinData) -> &DType { &array.dtype } - fn stats(array: &VarBinArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &VarBinData) -> &ArrayStats { + &array.stats_set } - fn array_hash(array: &VarBinArray, state: &mut H, precision: Precision) { - array.dtype.hash(state); + fn array_hash(array: &VarBinData, state: &mut H, precision: Precision) { array.bytes().array_hash(state, precision); array.offsets().array_hash(state, precision); array.validity().array_hash(state, precision); } - fn array_eq(array: &VarBinArray, other: &VarBinArray, precision: Precision) -> bool { - array.dtype == other.dtype - && array.bytes().array_eq(other.bytes(), precision) + fn array_eq(array: &VarBinData, other: &VarBinData, precision: Precision) -> bool { + array.bytes().array_eq(other.bytes(), precision) && array.offsets().array_eq(other.offsets(), precision) && array.validity().array_eq(&other.validity(), precision) } - fn nbuffers(_array: &VarBinArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 1 } - fn buffer(array: &VarBinArray, idx: usize) -> BufferHandle { + fn buffer(array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { match idx { 0 => array.bytes_handle().clone(), _ => vortex_panic!("VarBinArray buffer index {idx} out of bounds"), } } - fn buffer_name(_array: &VarBinArray, idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, idx: usize) -> Option { match idx { 0 => Some("bytes".to_string()), _ => vortex_panic!("VarBinArray buffer_name index {idx} out of bounds"), } } - fn metadata(array: &VarBinArray) -> VortexResult { + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { Ok(ProstMetadata(VarBinMetadata { offsets_ptype: PType::try_from(array.offsets().dtype()) .vortex_expect("Must be a valid PType") as i32, @@ -140,7 +136,7 @@ impl VTable for VarBin { metadata: &Self::Metadata, buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { let validity = if children.len() == 1 { Validity::from(dtype.nullability()) } else if children.len() == 2 { @@ -161,18 +157,18 @@ impl VTable for VarBin { } let bytes = buffers[0].clone().try_to_host_sync()?; - VarBinArray::try_new(offsets, bytes, dtype.clone(), validity) + VarBinData::try_new(offsets, bytes, dtype.clone(), validity) } - fn slots(array: &VarBinArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &VarBinArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn with_slots(array: &mut VarBinArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "VarBinArray expects exactly {} slots, got {}", @@ -184,7 +180,7 @@ impl VTable for VarBin { } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { @@ -192,7 +188,7 @@ impl VTable for VarBin { } fn execute_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, @@ -200,9 +196,9 @@ impl VTable for VarBin { PARENT_KERNELS.execute(array, parent, child_idx, ctx) } - fn execute(array: Arc>, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, ctx: &mut ExecutionCtx) -> VortexResult { Ok(ExecutionResult::done( - varbin_to_canonical(&array, ctx)?.into_array(), + varbin_to_canonical(array.as_view(), ctx)?.into_array(), )) } } diff --git a/vortex-array/src/arrays/varbin/vtable/operations.rs b/vortex-array/src/arrays/varbin/vtable/operations.rs index caf484be143..c58c301a0ff 100644 --- a/vortex-array/src/arrays/varbin/vtable/operations.rs +++ b/vortex-array/src/arrays/varbin/vtable/operations.rs @@ -4,15 +4,15 @@ use vortex_error::VortexResult; use crate::ExecutionCtx; +use crate::array::ArrayView; +use crate::array::OperationsVTable; use crate::arrays::VarBin; -use crate::arrays::VarBinArray; use crate::arrays::varbin::varbin_scalar; use crate::scalar::Scalar; -use crate::vtable::OperationsVTable; impl OperationsVTable for VarBin { fn scalar_at( - array: &VarBinArray, + array: ArrayView<'_, VarBin>, index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { diff --git a/vortex-array/src/arrays/varbin/vtable/validity.rs b/vortex-array/src/arrays/varbin/vtable/validity.rs index 7202315448d..0102cc3b73e 100644 --- a/vortex-array/src/arrays/varbin/vtable/validity.rs +++ b/vortex-array/src/arrays/varbin/vtable/validity.rs @@ -3,13 +3,13 @@ use vortex_error::VortexResult; -use crate::arrays::VarBinArray; +use crate::array::ArrayView; +use crate::array::ValidityVTable; use crate::arrays::varbin::vtable::VarBin; use crate::validity::Validity; -use crate::vtable::ValidityVTable; impl ValidityVTable for VarBin { - fn validity(array: &VarBinArray) -> VortexResult { - Ok(array.validity()) + fn validity(array: ArrayView<'_, VarBin>) -> VortexResult { + Ok(array.data().validity()) } } diff --git a/vortex-array/src/arrays/varbinview/accessor.rs b/vortex-array/src/arrays/varbinview/accessor.rs index 912d7ee8de3..72c98beee5e 100644 --- a/vortex-array/src/arrays/varbinview/accessor.rs +++ b/vortex-array/src/arrays/varbinview/accessor.rs @@ -13,7 +13,7 @@ impl ArrayAccessor<[u8]> for VarBinViewArray { &self, f: F, ) -> R { - let bytes = (0..self.nbuffers()) + let bytes = (0..self.data_buffers().len()) .map(|i| self.buffer(i)) .collect::>(); diff --git a/vortex-array/src/arrays/varbinview/array.rs b/vortex-array/src/arrays/varbinview/array.rs index c44d367688f..d7228c65ed0 100644 --- a/vortex-array/src/arrays/varbinview/array.rs +++ b/vortex-array/src/arrays/varbinview/array.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use std::mem::size_of; use std::sync::Arc; use vortex_buffer::Alignment; @@ -12,8 +13,13 @@ use vortex_error::vortex_bail; use vortex_error::vortex_ensure; use vortex_error::vortex_err; use vortex_error::vortex_panic; +use vortex_mask::Mask; use crate::ArrayRef; +use crate::array::Array; +use crate::array::child_to_validity; +use crate::array::validity_to_child; +use crate::arrays::VarBinView; use crate::arrays::varbinview::BinaryView; use crate::buffer::BufferHandle; use crate::builders::ArrayBuilder; @@ -22,8 +28,6 @@ use crate::dtype::DType; use crate::dtype::Nullability; use crate::stats::ArrayStats; use crate::validity::Validity; -use crate::vtable::child_to_validity; -use crate::vtable::validity_to_child; /// The validity bitmap indicating which elements are non-null. pub(super) const VALIDITY_SLOT: usize = 0; @@ -90,7 +94,7 @@ pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["validity"]; /// assert_eq!(second.as_slice(), b"this string is outlined"); // Long string /// ``` #[derive(Clone, Debug)] -pub struct VarBinViewArray { +pub struct VarBinViewData { pub(super) slots: Vec>, pub(super) dtype: DType, pub(super) buffers: Arc<[BufferHandle]>, @@ -105,17 +109,18 @@ pub struct VarBinViewArrayParts { pub validity: Validity, } -impl VarBinViewArray { - fn make_slots(validity: &Validity, len: usize) -> Vec> { +impl VarBinViewData { + /// Build the slots vector for this array. + pub(super) fn make_slots(validity: &Validity, len: usize) -> Vec> { vec![validity_to_child(validity, len)] } - /// Creates a new [`VarBinViewArray`]. + /// Creates a new `VarBinViewArray`. /// /// # Panics /// /// Panics if the provided components do not satisfy the invariants documented - /// in [`VarBinViewArray::new_unchecked`]. + /// in `VarBinViewArray::new_unchecked`. pub fn new( views: Buffer, buffers: Arc<[ByteBuffer]>, @@ -126,12 +131,12 @@ impl VarBinViewArray { .vortex_expect("VarBinViewArray construction failed") } - /// Creates a new [`VarBinViewArray`] with device or host memory. + /// Creates a new `VarBinViewArray` with device or host memory. /// /// # Panics /// /// Panics if the provided components do not satisfy the invariants documented - /// in [`VarBinViewArray::new_unchecked`]. + /// in `VarBinViewArray::new_unchecked`. pub fn new_handle( views: BufferHandle, buffers: Arc<[BufferHandle]>, @@ -144,12 +149,12 @@ impl VarBinViewArray { /// Constructs a new `VarBinViewArray`. /// - /// See [`VarBinViewArray::new_unchecked`] for more information. + /// See `VarBinViewArray::new_unchecked` for more information. /// /// # Errors /// /// Returns an error if the provided components do not satisfy the invariants documented in - /// [`VarBinViewArray::new_unchecked`]. + /// `VarBinViewArray::new_unchecked`. pub fn try_new( views: Buffer, buffers: Arc<[ByteBuffer]>, @@ -164,12 +169,12 @@ impl VarBinViewArray { /// Constructs a new `VarBinViewArray`. /// - /// See [`VarBinViewArray::new_unchecked`] for more information. + /// See `VarBinViewArray::new_unchecked` for more information. /// /// # Errors /// /// Returns an error if the provided components do not satisfy the invariants documented in - /// [`VarBinViewArray::new_unchecked`]. + /// `VarBinViewArray::new_unchecked`. pub fn try_new_handle( views: BufferHandle, buffers: Arc<[BufferHandle]>, @@ -195,7 +200,7 @@ impl VarBinViewArray { Ok(unsafe { Self::new_handle_unchecked(views, buffers, dtype, validity) }) } - /// Creates a new [`VarBinViewArray`] without validation from these components: + /// Creates a new `VarBinViewArray` without validation from these components: /// /// * `views` is a buffer of 16-byte view entries (one per logical element). /// * `buffers` contains the backing storage for strings longer than 12 bytes. @@ -257,8 +262,9 @@ impl VarBinViewArray { validity: Validity, ) -> Self { let len = views.len() / size_of::(); + let slots = Self::make_slots(&validity, len); Self { - slots: Self::make_slots(&validity, len), + slots, views, buffers, dtype, @@ -266,9 +272,9 @@ impl VarBinViewArray { } } - /// Validates the components that would be used to create a [`VarBinViewArray`]. + /// Validates the components that would be used to create a `VarBinViewArray`. /// - /// This function checks all the invariants required by [`VarBinViewArray::new_unchecked`]. + /// This function checks all the invariants required by `VarBinViewArray::new_unchecked`. pub fn validate( views: &Buffer, buffers: &Arc<[ByteBuffer]>, @@ -322,7 +328,7 @@ impl VarBinViewArray { let end_offset = start_offset.saturating_add(view.size as usize); let buf = buffers.get(buf_index).ok_or_else(|| - vortex_err!(InvalidArgument: "view at index {idx} references invalid buffer: {buf_index} out of bounds for VarBinViewArray with {} buffers", + vortex_err!(InvalidArgument: "view at index {idx} references invalid buffer: {buf_index} out of bounds for VarBinViewData with {} buffers", buffers.len()))?; vortex_ensure!( @@ -355,11 +361,32 @@ impl VarBinViewArray { Ok(()) } - /// Reconstructs the validity from the slots. + /// Returns the length of this array. + pub fn len(&self) -> usize { + self.views.len() / size_of::() + } + + /// Returns the [`DType`] of this array. + pub fn dtype(&self) -> &DType { + &self.dtype + } + + /// Returns `true` if this array is empty. + pub fn is_empty(&self) -> bool { + self.len() == 0 + } + + /// Returns the [`Validity`] of this array. + #[allow(clippy::same_name_method)] pub fn validity(&self) -> Validity { child_to_validity(&self.slots[VALIDITY_SLOT], self.dtype.nullability()) } + /// Returns the validity as a [`Mask`]. + pub fn validity_mask(&self) -> Mask { + self.validity().to_mask(self.len()) + } + /// Splits the array into owned parts pub fn into_parts(self) -> VarBinViewArrayParts { let validity = self.validity(); @@ -371,11 +398,6 @@ impl VarBinViewArray { } } - /// Number of raw string data buffers held by this array. - pub fn nbuffers(&self) -> usize { - self.buffers.len() - } - /// Access to the primitive views buffer. /// /// Variable-sized binary view buffer contain a "view" child array, with 16-byte entries that @@ -425,18 +447,18 @@ impl VarBinViewArray { /// at construction time. #[inline] pub fn buffer(&self, idx: usize) -> &ByteBuffer { - if idx >= self.nbuffers() { + if idx >= self.data_buffers().len() { vortex_panic!( "{idx} buffer index out of bounds, there are {} buffers", - self.nbuffers() + self.data_buffers().len() ); } self.buffers[idx].as_host() } - /// Iterate over the underlying raw data buffers, not including the views buffer. + /// The underlying raw data buffers, not including the views buffer. #[inline] - pub fn buffers(&self) -> &Arc<[BufferHandle]> { + pub fn data_buffers(&self) -> &Arc<[BufferHandle]> { &self.buffers } @@ -459,7 +481,7 @@ impl VarBinViewArray { } } - builder.finish_into_varbinview() + builder.finish_into_varbinview().into_data() } pub fn from_iter_str, I: IntoIterator>(iter: I) -> Self { @@ -473,7 +495,7 @@ impl VarBinViewArray { builder.append_value(item.as_ref()); } - builder.finish_into_varbinview() + builder.finish_into_varbinview().into_data() } pub fn from_iter_nullable_str, I: IntoIterator>>( @@ -492,7 +514,7 @@ impl VarBinViewArray { } } - builder.finish_into_varbinview() + builder.finish_into_varbinview().into_data() } pub fn from_iter_bin, I: IntoIterator>(iter: I) -> Self { @@ -506,7 +528,7 @@ impl VarBinViewArray { builder.append_value(item.as_ref()); } - builder.finish_into_varbinview() + builder.finish_into_varbinview().into_data() } pub fn from_iter_nullable_bin, I: IntoIterator>>( @@ -525,30 +547,154 @@ impl VarBinViewArray { } } - builder.finish_into_varbinview() + builder.finish_into_varbinview().into_data() } } -impl<'a> FromIterator> for VarBinViewArray { +impl Array { + /// Construct a `VarBinViewArray` from an iterator of optional byte slices. + #[expect( + clippy::same_name_method, + reason = "intentionally named from_iter like Iterator::from_iter" + )] + pub fn from_iter, I: IntoIterator>>( + iter: I, + dtype: DType, + ) -> Self { + Array::try_from_data(VarBinViewData::from_iter(iter, dtype)) + .vortex_expect("VarBinViewData is always valid") + } + + pub fn from_iter_str, I: IntoIterator>(iter: I) -> Self { + Array::try_from_data(VarBinViewData::from_iter_str(iter)) + .vortex_expect("VarBinViewData is always valid") + } + + pub fn from_iter_nullable_str, I: IntoIterator>>( + iter: I, + ) -> Self { + Array::try_from_data(VarBinViewData::from_iter_nullable_str(iter)) + .vortex_expect("VarBinViewData is always valid") + } + + pub fn from_iter_bin, I: IntoIterator>(iter: I) -> Self { + Array::try_from_data(VarBinViewData::from_iter_bin(iter)) + .vortex_expect("VarBinViewData is always valid") + } + + pub fn from_iter_nullable_bin, I: IntoIterator>>( + iter: I, + ) -> Self { + Array::try_from_data(VarBinViewData::from_iter_nullable_bin(iter)) + .vortex_expect("VarBinViewData is always valid") + } + + /// Creates a new `VarBinViewArray`. + pub fn try_new( + views: Buffer, + buffers: Arc<[ByteBuffer]>, + dtype: DType, + validity: Validity, + ) -> VortexResult { + Array::try_from_data(VarBinViewData::try_new(views, buffers, dtype, validity)?) + } + + /// Creates a new `VarBinViewArray` without validation. + /// + /// # Safety + /// + /// See [`VarBinViewData::new_unchecked`]. + pub unsafe fn new_unchecked( + views: Buffer, + buffers: Arc<[ByteBuffer]>, + dtype: DType, + validity: Validity, + ) -> Self { + Array::try_from_data(unsafe { + VarBinViewData::new_unchecked(views, buffers, dtype, validity) + }) + .vortex_expect("VarBinViewData is always valid") + } + + /// Creates a new `VarBinViewArray` with device or host memory. + pub fn new_handle( + views: BufferHandle, + buffers: Arc<[BufferHandle]>, + dtype: DType, + validity: Validity, + ) -> Self { + Array::try_from_data(VarBinViewData::new_handle(views, buffers, dtype, validity)) + .vortex_expect("VarBinViewData is always valid") + } + + /// Construct a new array from `BufferHandle`s without validation. + /// + /// # Safety + /// + /// See [`VarBinViewData::new_handle_unchecked`]. + pub unsafe fn new_handle_unchecked( + views: BufferHandle, + buffers: Arc<[BufferHandle]>, + dtype: DType, + validity: Validity, + ) -> Self { + Array::try_from_data(unsafe { + VarBinViewData::new_handle_unchecked(views, buffers, dtype, validity) + }) + .vortex_expect("VarBinViewData is always valid") + } +} + +impl<'a> FromIterator> for VarBinViewData { fn from_iter>>(iter: T) -> Self { Self::from_iter_nullable_bin(iter) } } -impl FromIterator>> for VarBinViewArray { +impl FromIterator>> for VarBinViewData { fn from_iter>>>(iter: T) -> Self { Self::from_iter_nullable_bin(iter) } } -impl FromIterator> for VarBinViewArray { +impl FromIterator> for VarBinViewData { fn from_iter>>(iter: T) -> Self { Self::from_iter_nullable_str(iter) } } -impl<'a> FromIterator> for VarBinViewArray { +impl<'a> FromIterator> for VarBinViewData { fn from_iter>>(iter: T) -> Self { Self::from_iter_nullable_str(iter) } } + +// --- FromIterator forwarding for Array --- + +impl<'a> FromIterator> for Array { + fn from_iter>>(iter: T) -> Self { + Array::try_from_data(>::from_iter(iter)) + .vortex_expect(" is always valid") + } +} + +impl FromIterator>> for Array { + fn from_iter>>>(iter: T) -> Self { + Array::try_from_data(>::from_iter(iter)) + .vortex_expect(" is always valid") + } +} + +impl FromIterator> for Array { + fn from_iter>>(iter: T) -> Self { + Array::try_from_data(>::from_iter(iter)) + .vortex_expect(" is always valid") + } +} + +impl<'a> FromIterator> for Array { + fn from_iter>>(iter: T) -> Self { + Array::try_from_data(>::from_iter(iter)) + .vortex_expect(" is always valid") + } +} diff --git a/vortex-array/src/arrays/varbinview/compact.rs b/vortex-array/src/arrays/varbinview/compact.rs index e446f6ae789..37bae3d9822 100644 --- a/vortex-array/src/arrays/varbinview/compact.rs +++ b/vortex-array/src/arrays/varbinview/compact.rs @@ -36,7 +36,7 @@ impl VarBinViewArray { } fn should_compact(&self) -> VortexResult { - let nbuffers = self.nbuffers(); + let nbuffers = self.data_buffers().len(); // If the array is entirely inlined strings, do not attempt to compact. if nbuffers == 0 { @@ -93,7 +93,7 @@ impl VarBinViewArray { pub(crate) fn buffer_utilizations(&self) -> VortexResult> { let mut utilizations: Vec = self - .buffers() + .data_buffers() .iter() .map(|buf| { let len = u32::try_from(buf.len()).vortex_expect("buffer sizes must fit in u32"); @@ -207,17 +207,17 @@ mod tests { ]); // Verify it has buffers - assert!(original.nbuffers() > 0); - let original_buffers = original.nbuffers(); + assert!(!original.data_buffers().is_empty()); + let original_buffers = original.data_buffers().len(); // Take only the first and last elements (indices 0 and 4) let indices = buffer![0u32, 4u32].into_array(); - let taken = original.take(indices.to_array()).unwrap(); + let taken = original.take(indices).unwrap(); let taken = taken .execute::(&mut LEGACY_SESSION.create_execution_ctx()) .unwrap(); // The taken array should still have the same number of buffers - assert_eq!(taken.nbuffers(), original_buffers); + assert_eq!(taken.data_buffers().len(), original_buffers); // Now optimize the taken array let optimized_array = taken.compact_buffers().unwrap(); @@ -225,7 +225,7 @@ mod tests { // The optimized array should have compacted buffers // Since both remaining strings are short, they should be inlined // so we might have 0 buffers, or 1 buffer if any were not inlined - assert!(optimized_array.nbuffers() <= 1); + assert!(optimized_array.data_buffers().len() <= 1); // Verify the data is still correct assert_arrays_eq!( @@ -251,7 +251,7 @@ mod tests { // Take only the first and third long strings (indices 0 and 2) let indices = buffer![0u32, 2u32].into_array(); - let taken = original.take(indices.to_array()).unwrap(); + let taken = original.take(indices).unwrap(); let taken_array = taken .execute::(&mut LEGACY_SESSION.create_execution_ctx()) .unwrap(); @@ -260,7 +260,7 @@ mod tests { let optimized_array = taken_array.compact_buffers().unwrap(); // The optimized array should have exactly 1 buffer (consolidated) - assert_eq!(optimized_array.nbuffers(), 1); + assert_eq!(optimized_array.data_buffers().len(), 1); // Verify the data is still correct assert_arrays_eq!( @@ -275,12 +275,12 @@ mod tests { let original = VarBinViewArray::from_iter_str(["a", "bb", "ccc", "dddd"]); // This should have no buffers - assert_eq!(original.nbuffers(), 0); + assert_eq!(original.data_buffers().len(), 0); // Optimize should return the same array let optimized_array = original.compact_buffers().unwrap(); - assert_eq!(optimized_array.nbuffers(), 0); + assert_eq!(optimized_array.data_buffers().len(), 0); assert_arrays_eq!(optimized_array, original); } @@ -293,13 +293,13 @@ mod tests { let original = VarBinViewArray::from_iter_str([str1, str2]); // Should have 1 compact buffer - assert_eq!(original.nbuffers(), 1); + assert_eq!(original.data_buffers().len(), 1); assert_eq!(original.buffer(0).len(), str1.len() + str2.len()); // Optimize should return the same array (no change needed) let optimized_array = original.compact_buffers().unwrap(); - assert_eq!(optimized_array.nbuffers(), 1); + assert_eq!(optimized_array.data_buffers().len(), 1); assert_arrays_eq!(optimized_array, original); } @@ -312,12 +312,12 @@ mod tests { "another very long string that definitely needs a buffer to store it", ]); - let original_buffers = original.nbuffers(); + let original_buffers = original.data_buffers().len(); assert!(original_buffers > 0); // Take only first element let indices = buffer![0u32].into_array(); - let taken = original.take(indices.to_array()).unwrap(); + let taken = original.take(indices).unwrap(); let taken = taken .execute::(&mut LEGACY_SESSION.create_execution_ctx()) .unwrap(); @@ -325,7 +325,7 @@ mod tests { let compacted = taken.compact_with_threshold(0.0).unwrap(); // Should still have the same number of buffers as the taken array - assert_eq!(compacted.nbuffers(), taken.nbuffers()); + assert_eq!(compacted.data_buffers().len(), taken.data_buffers().len()); // Verify correctness assert_arrays_eq!(compacted, taken); @@ -342,19 +342,18 @@ mod tests { // Take only first and last elements let indices = buffer![0u32, 2u32].into_array(); - let taken = original.take(indices.to_array()).unwrap(); + let taken = original.take(indices).unwrap(); let taken = taken - .clone() .execute::(&mut LEGACY_SESSION.create_execution_ctx()) .unwrap(); - let original_buffers = taken.nbuffers(); + let original_buffers = taken.data_buffers().len(); // Compact with threshold=1.0 (aggressive compaction) let compacted = taken.compact_with_threshold(1.0).unwrap(); // Should have compacted buffers - assert!(compacted.nbuffers() <= original_buffers); + assert!(compacted.data_buffers().len() <= original_buffers); // Verify correctness assert_arrays_eq!(compacted, taken); @@ -370,13 +369,13 @@ mod tests { let original = VarBinViewArray::from_iter_str([str1, str2, str3]); // All strings should be in one well-utilized buffer - assert_eq!(original.nbuffers(), 1); + assert_eq!(original.data_buffers().len(), 1); // Compact with high threshold let compacted = original.compact_with_threshold(0.8).unwrap(); // Well-utilized buffer should be preserved - assert_eq!(compacted.nbuffers(), 1); + assert_eq!(compacted.data_buffers().len(), 1); // Verify all data is correct assert_arrays_eq!(compacted, original); @@ -398,7 +397,7 @@ mod tests { // Take every other element to create mixed utilization let indices_array = buffer![0u32, 2u32, 4u32, 6u32, 8u32].into_array(); - let taken = original.take(indices_array.to_array()).unwrap(); + let taken = original.take(indices_array).unwrap(); let taken = taken .execute::(&mut LEGACY_SESSION.create_execution_ctx()) .unwrap(); @@ -424,13 +423,13 @@ mod tests { // Take only the first 5 elements - they should be in a contiguous range at the start let indices_array = buffer![0u32, 1u32, 2u32, 3u32, 4u32].into_array(); - let taken = original.take(indices_array.to_array()).unwrap(); + let taken = original.take(indices_array).unwrap(); let taken = taken .execute::(&mut LEGACY_SESSION.create_execution_ctx()) .unwrap(); // Get buffer stats before compaction let utils_before = taken.buffer_utilizations().unwrap(); - let original_buffer_count = taken.nbuffers(); + let original_buffer_count = taken.data_buffers().len(); // Compact with a threshold that should trigger slicing // The range utilization should be high even if overall utilization is low @@ -438,7 +437,7 @@ mod tests { // After compaction, we should still have buffers (sliced, not rewritten) assert!( - compacted.nbuffers() > 0, + !compacted.data_buffers().is_empty(), "Should have buffers after slice compaction" ); @@ -449,7 +448,7 @@ mod tests { // (it was sliced, not rewritten into multiple buffers) if original_buffer_count == 1 && utils_before[0].range_utilization() >= 0.8 { assert_eq!( - compacted.nbuffers(), + compacted.data_buffers().len(), 1, "Slice strategy should maintain single buffer" ); diff --git a/vortex-array/src/arrays/varbinview/compute/cast.rs b/vortex-array/src/arrays/varbinview/compute/cast.rs index b15c2ed11ba..7bcfa3af43a 100644 --- a/vortex-array/src/arrays/varbinview/compute/cast.rs +++ b/vortex-array/src/arrays/varbinview/compute/cast.rs @@ -5,13 +5,14 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::VarBinView; use crate::arrays::VarBinViewArray; use crate::dtype::DType; use crate::scalar_fn::fns::cast::CastReduce; impl CastReduce for VarBinView { - fn cast(array: &VarBinViewArray, dtype: &DType) -> VortexResult> { + fn cast(array: ArrayView<'_, VarBinView>, dtype: &DType) -> VortexResult> { if !array.dtype().eq_ignore_nullability(dtype) { return Ok(None); } @@ -27,7 +28,7 @@ impl CastReduce for VarBinView { Ok(Some( VarBinViewArray::new_handle_unchecked( array.views_handle().clone(), - array.buffers().clone(), + array.data_buffers().clone(), new_dtype, new_validity, ) diff --git a/vortex-array/src/arrays/varbinview/compute/mask.rs b/vortex-array/src/arrays/varbinview/compute/mask.rs index ac6d64779c5..90655e37533 100644 --- a/vortex-array/src/arrays/varbinview/compute/mask.rs +++ b/vortex-array/src/arrays/varbinview/compute/mask.rs @@ -5,19 +5,20 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::VarBinView; use crate::arrays::VarBinViewArray; use crate::scalar_fn::fns::mask::MaskReduce; use crate::validity::Validity; impl MaskReduce for VarBinView { - fn mask(array: &VarBinViewArray, mask: &ArrayRef) -> VortexResult> { + fn mask(array: ArrayView<'_, VarBinView>, mask: &ArrayRef) -> VortexResult> { // SAFETY: masking the validity does not affect the invariants unsafe { Ok(Some( VarBinViewArray::new_handle_unchecked( array.views_handle().clone(), - array.buffers().clone(), + array.data_buffers().clone(), array.dtype().as_nullable(), array.validity().and(Validity::Array(mask.clone()))?, ) diff --git a/vortex-array/src/arrays/varbinview/compute/mod.rs b/vortex-array/src/arrays/varbinview/compute/mod.rs index 5e107f6beae..772221f13ef 100644 --- a/vortex-array/src/arrays/varbinview/compute/mod.rs +++ b/vortex-array/src/arrays/varbinview/compute/mod.rs @@ -14,7 +14,6 @@ mod tests { use crate::IntoArray; use crate::accessor::ArrayAccessor; - use crate::array::DynArray; use crate::arrays::VarBinViewArray; use crate::canonical::ToCanonical; #[test] diff --git a/vortex-array/src/arrays/varbinview/compute/slice.rs b/vortex-array/src/arrays/varbinview/compute/slice.rs index 2bc4c84b2e7..56121910f1d 100644 --- a/vortex-array/src/arrays/varbinview/compute/slice.rs +++ b/vortex-array/src/arrays/varbinview/compute/slice.rs @@ -8,19 +8,20 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::VarBinView; use crate::arrays::VarBinViewArray; use crate::arrays::slice::SliceReduce; use crate::arrays::varbinview::BinaryView; impl SliceReduce for VarBinView { - fn slice(array: &Self::Array, range: Range) -> VortexResult> { + fn slice(array: ArrayView<'_, Self>, range: Range) -> VortexResult> { Ok(Some( VarBinViewArray::new_handle( array .views_handle() .slice_typed::(range.clone()), - Arc::clone(array.buffers()), + Arc::clone(array.data_buffers()), array.dtype().clone(), array.validity().slice(range)?, ) diff --git a/vortex-array/src/arrays/varbinview/compute/take.rs b/vortex-array/src/arrays/varbinview/compute/take.rs index 388124fb007..4b8f930098d 100644 --- a/vortex-array/src/arrays/varbinview/compute/take.rs +++ b/vortex-array/src/arrays/varbinview/compute/take.rs @@ -11,6 +11,7 @@ use vortex_mask::Mask; use crate::ArrayRef; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::PrimitiveArray; use crate::arrays::VarBinView; use crate::arrays::VarBinViewArray; @@ -23,12 +24,12 @@ use crate::match_each_integer_ptype; impl TakeExecute for VarBinView { /// Take involves creating a new array that references the old array, just with the given set of views. fn take( - array: &VarBinViewArray, + array: ArrayView<'_, VarBinView>, indices: &ArrayRef, ctx: &mut ExecutionCtx, ) -> VortexResult> { let validity = array.validity().take(indices)?; - let indices = indices.to_array().execute::(ctx)?; + let indices = indices.clone().execute::(ctx)?; let indices_mask = indices.validity_mask()?; let views_buffer = match_each_integer_ptype!(indices.ptype(), |I| { @@ -40,7 +41,7 @@ impl TakeExecute for VarBinView { Ok(Some( VarBinViewArray::new_handle_unchecked( BufferHandle::new_host(views_buffer.into_byte_buffer()), - array.buffers().clone(), + array.data_buffers().clone(), array .dtype() .union_nullability(indices.dtype().nullability()), @@ -88,7 +89,6 @@ mod tests { use crate::IntoArray; use crate::accessor::ArrayAccessor; - use crate::array::DynArray; use crate::arrays::VarBinViewArray; use crate::arrays::varbinview::compute::take::PrimitiveArray; use crate::canonical::ToCanonical; diff --git a/vortex-array/src/arrays/varbinview/compute/zip.rs b/vortex-array/src/arrays/varbinview/compute/zip.rs index b4211c726a2..559d796088e 100644 --- a/vortex-array/src/arrays/varbinview/compute/zip.rs +++ b/vortex-array/src/arrays/varbinview/compute/zip.rs @@ -12,6 +12,7 @@ use vortex_mask::Mask; use crate::ArrayRef; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::VarBinView; use crate::arrays::VarBinViewArray; use crate::arrays::varbinview::BinaryView; @@ -23,7 +24,7 @@ use crate::scalar_fn::fns::zip::ZipKernel; // instead of routing through the generic builder (which would redo buffer lookups per mask slice). impl ZipKernel for VarBinView { fn zip( - if_true: &VarBinViewArray, + if_true: ArrayView<'_, VarBinView>, if_false: &ArrayRef, mask: &ArrayRef, ctx: &mut ExecutionCtx, @@ -45,17 +46,18 @@ impl ZipKernel for VarBinView { // to the new buffer index in the result array let mut buffers = DeduplicatedBuffers::default(); let true_lookup = - buffers.extend_from_iter(if_true.buffers().iter().map(|b| b.as_host().clone())); + buffers.extend_from_iter(if_true.data_buffers().iter().map(|b| b.as_host().clone())); let false_lookup = - buffers.extend_from_iter(if_false.buffers().iter().map(|b| b.as_host().clone())); + buffers.extend_from_iter(if_false.data_buffers().iter().map(|b| b.as_host().clone())); let mut views_builder = BufferMut::::with_capacity(len); let mut validity_builder = LazyBitBufferBuilder::new(len); - let true_validity = if_true.validity_mask()?; - let false_validity = if_false.validity_mask()?; + let true_validity = if_true.validity_mask(); + let false_validity = if_false.validity_mask(); let mask = mask.try_to_mask_fill_null_false(ctx)?; + let if_false_view = if_false; match mask.slices() { AllOr::All => push_range( if_true, @@ -66,7 +68,7 @@ impl ZipKernel for VarBinView { &mut validity_builder, ), AllOr::None => push_range( - if_false, + if_false_view, &false_lookup, &false_validity, 0..len, @@ -78,7 +80,7 @@ impl ZipKernel for VarBinView { for (start, end) in slices { if pos < *start { push_range( - if_false, + if_false_view, &false_lookup, &false_validity, pos..*start, @@ -98,7 +100,7 @@ impl ZipKernel for VarBinView { } if pos < len { push_range( - if_false, + if_false_view, &false_lookup, &false_validity, pos..len, @@ -127,7 +129,7 @@ impl ZipKernel for VarBinView { } fn push_range( - array: &VarBinViewArray, + array: ArrayView<'_, VarBinView>, buffer_lookup: &[u32], validity: &Mask, range: Range, diff --git a/vortex-array/src/arrays/varbinview/mod.rs b/vortex-array/src/arrays/varbinview/mod.rs index b0520591e0c..d29fd5bf3e5 100644 --- a/vortex-array/src/arrays/varbinview/mod.rs +++ b/vortex-array/src/arrays/varbinview/mod.rs @@ -2,8 +2,9 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors mod array; -pub use array::VarBinViewArray; pub use array::VarBinViewArrayParts; +pub use array::VarBinViewData; +pub use vtable::VarBinViewArray; mod accessor; pub(crate) mod compact; diff --git a/vortex-array/src/arrays/varbinview/tests.rs b/vortex-array/src/arrays/varbinview/tests.rs index 5aee62dd6e0..ab19e33dd59 100644 --- a/vortex-array/src/arrays/varbinview/tests.rs +++ b/vortex-array/src/arrays/varbinview/tests.rs @@ -31,7 +31,7 @@ pub fn slice_array() { #[test] pub fn flatten_array() { let binary_arr = VarBinViewArray::from_iter_str(["string1", "string2"]); - let var_bin = binary_arr.to_varbinview(); + let var_bin = binary_arr.as_array().to_varbinview(); assert_arrays_eq!( var_bin, VarBinViewArray::from_iter_str(["string1", "string2"]) diff --git a/vortex-array/src/arrays/varbinview/vtable/mod.rs b/vortex-array/src/arrays/varbinview/vtable/mod.rs index 7c7f809f50d..2efb586e619 100644 --- a/vortex-array/src/arrays/varbinview/vtable/mod.rs +++ b/vortex-array/src/arrays/varbinview/vtable/mod.rs @@ -1,7 +1,6 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors -use std::hash::Hash; use std::mem::size_of; use std::sync::Arc; @@ -19,8 +18,12 @@ use crate::EmptyMetadata; use crate::ExecutionCtx; use crate::ExecutionResult; use crate::Precision; -use crate::arrays::VarBinViewArray; +use crate::array::Array; +use crate::array::ArrayId; +use crate::array::ArrayView; +use crate::array::VTable; use crate::arrays::varbinview::BinaryView; +use crate::arrays::varbinview::VarBinViewData; use crate::arrays::varbinview::array::NUM_SLOTS; use crate::arrays::varbinview::array::SLOT_NAMES; use crate::arrays::varbinview::compute::rules::PARENT_RULES; @@ -29,16 +32,13 @@ use crate::dtype::DType; use crate::hash::ArrayEq; use crate::hash::ArrayHash; use crate::serde::ArrayChildren; -use crate::stats::StatsSetRef; +use crate::stats::ArrayStats; use crate::validity::Validity; use crate::vtable; -use crate::vtable::Array; -use crate::vtable::ArrayId; -use crate::vtable::VTable; mod kernel; mod operations; mod validity; -vtable!(VarBinView); +vtable!(VarBinView, VarBinView, VarBinViewData); #[derive(Clone, Debug)] pub struct VarBinView; @@ -48,12 +48,12 @@ impl VarBinView { } impl VTable for VarBinView { - type Array = VarBinViewArray; + type ArrayData = VarBinViewData; type Metadata = EmptyMetadata; type OperationsVTable = Self; type ValidityVTable = Self; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &VarBinViewData) -> &Self { &VarBinView } @@ -61,24 +61,23 @@ impl VTable for VarBinView { Self::ID } - fn len(array: &VarBinViewArray) -> usize { + fn len(array: &VarBinViewData) -> usize { array.views_handle().len() / size_of::() } - fn dtype(array: &VarBinViewArray) -> &DType { + fn dtype(array: &VarBinViewData) -> &DType { &array.dtype } - fn stats(array: &VarBinViewArray) -> StatsSetRef<'_> { - array.stats_set.to_ref(array.as_ref()) + fn stats(array: &VarBinViewData) -> &ArrayStats { + &array.stats_set } fn array_hash( - array: &VarBinViewArray, + array: &VarBinViewData, state: &mut H, precision: Precision, ) { - array.dtype.hash(state); for buffer in array.buffers.iter() { buffer.array_hash(state, precision); } @@ -86,9 +85,8 @@ impl VTable for VarBinView { array.validity().array_hash(state, precision); } - fn array_eq(array: &VarBinViewArray, other: &VarBinViewArray, precision: Precision) -> bool { - array.dtype == other.dtype - && array.buffers.len() == other.buffers.len() + fn array_eq(array: &VarBinViewData, other: &VarBinViewData, precision: Precision) -> bool { + array.buffers.len() == other.buffers.len() && array .buffers .iter() @@ -98,14 +96,14 @@ impl VTable for VarBinView { && array.validity().array_eq(&other.validity(), precision) } - fn nbuffers(array: &VarBinViewArray) -> usize { - array.buffers().len() + 1 + fn nbuffers(array: ArrayView<'_, Self>) -> usize { + array.data_buffers().len() + 1 } - fn buffer(array: &VarBinViewArray, idx: usize) -> BufferHandle { - let ndata = array.buffers().len(); + fn buffer(array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { + let ndata = array.data_buffers().len(); if idx < ndata { - array.buffers()[idx].clone() + array.data_buffers()[idx].clone() } else if idx == ndata { array.views_handle().clone() } else { @@ -113,8 +111,8 @@ impl VTable for VarBinView { } } - fn buffer_name(array: &VarBinViewArray, idx: usize) -> Option { - let ndata = array.buffers().len(); + fn buffer_name(array: ArrayView<'_, Self>, idx: usize) -> Option { + let ndata = array.data_buffers().len(); if idx < ndata { Some(format!("buffer_{idx}")) } else if idx == ndata { @@ -124,7 +122,7 @@ impl VTable for VarBinView { } } - fn metadata(_array: &VarBinViewArray) -> VortexResult { + fn metadata(_array: ArrayView<'_, Self>) -> VortexResult { Ok(EmptyMetadata) } @@ -148,7 +146,7 @@ impl VTable for VarBinView { _metadata: &Self::Metadata, buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { let Some((views_handle, data_handles)) = buffers.split_last() else { vortex_bail!("Expected at least 1 buffer, got 0"); }; @@ -176,7 +174,7 @@ impl VTable for VarBinView { // If any buffer is on device, skip host validation and use try_new_handle. if buffers.iter().any(|b| b.is_on_device()) { - return VarBinViewArray::try_new_handle( + return VarBinViewData::try_new_handle( views_handle.clone(), Arc::from(data_handles.to_vec()), dtype.clone(), @@ -190,18 +188,18 @@ impl VTable for VarBinView { .collect::>(); let views = Buffer::::from_byte_buffer(views_handle.clone().as_host().clone()); - VarBinViewArray::try_new(views, Arc::from(data_buffers), dtype.clone(), validity) + VarBinViewData::try_new(views, Arc::from(data_buffers), dtype.clone(), validity) } - fn slots(array: &VarBinViewArray) -> &[Option] { - &array.slots + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn slot_name(_array: &VarBinViewArray, idx: usize) -> String { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { SLOT_NAMES[idx].to_string() } - fn with_slots(array: &mut VarBinViewArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "VarBinViewArray expects {} slots, got {}", @@ -213,7 +211,7 @@ impl VTable for VarBinView { } fn reduce_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { @@ -221,7 +219,7 @@ impl VTable for VarBinView { } fn execute_parent( - array: &Array, + array: ArrayView<'_, Self>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, @@ -229,7 +227,7 @@ impl VTable for VarBinView { PARENT_KERNELS.execute(array, parent, child_idx, ctx) } - fn execute(array: Arc>, _ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, _ctx: &mut ExecutionCtx) -> VortexResult { Ok(ExecutionResult::done(array)) } } diff --git a/vortex-array/src/arrays/varbinview/vtable/operations.rs b/vortex-array/src/arrays/varbinview/vtable/operations.rs index 095015c449a..1a1f20a0dbe 100644 --- a/vortex-array/src/arrays/varbinview/vtable/operations.rs +++ b/vortex-array/src/arrays/varbinview/vtable/operations.rs @@ -4,15 +4,15 @@ use vortex_error::VortexResult; use crate::ExecutionCtx; +use crate::array::ArrayView; +use crate::array::OperationsVTable; use crate::arrays::VarBinView; -use crate::arrays::VarBinViewArray; use crate::arrays::varbin::varbin_scalar; use crate::scalar::Scalar; -use crate::vtable::OperationsVTable; impl OperationsVTable for VarBinView { fn scalar_at( - array: &VarBinViewArray, + array: ArrayView<'_, VarBinView>, index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { diff --git a/vortex-array/src/arrays/varbinview/vtable/validity.rs b/vortex-array/src/arrays/varbinview/vtable/validity.rs index 5e42941c247..93e4ff4b09f 100644 --- a/vortex-array/src/arrays/varbinview/vtable/validity.rs +++ b/vortex-array/src/arrays/varbinview/vtable/validity.rs @@ -3,13 +3,13 @@ use vortex_error::VortexResult; -use crate::arrays::VarBinViewArray; +use crate::array::ArrayView; +use crate::array::ValidityVTable; use crate::arrays::varbinview::vtable::VarBinView; use crate::validity::Validity; -use crate::vtable::ValidityVTable; impl ValidityVTable for VarBinView { - fn validity(array: &VarBinViewArray) -> VortexResult { - Ok(array.validity()) + fn validity(array: ArrayView<'_, VarBinView>) -> VortexResult { + Ok(array.data().validity()) } } diff --git a/vortex-array/src/arrays/variant/mod.rs b/vortex-array/src/arrays/variant/mod.rs index 330bd00a813..29fdb5edcd2 100644 --- a/vortex-array/src/arrays/variant/mod.rs +++ b/vortex-array/src/arrays/variant/mod.rs @@ -6,7 +6,11 @@ mod vtable; use vortex_error::VortexExpect; pub use self::vtable::Variant; +pub use self::vtable::VariantArray; use crate::ArrayRef; +use crate::array::Array; +use crate::dtype::DType; +use crate::stats::ArrayStats; pub(super) const NUM_SLOTS: usize = 1; pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["child"]; @@ -20,18 +24,36 @@ pub(super) const SLOT_NAMES: [&str; NUM_SLOTS] = ["child"]; /// always the child's dtype. The child's validity determines which rows are /// null. #[derive(Clone, Debug)] -pub struct VariantArray { - slots: [Option; NUM_SLOTS], +pub struct VariantData { + pub(super) slots: Vec>, + pub(crate) stats_set: ArrayStats, } -impl VariantArray { +impl VariantData { /// Creates a new VariantArray. Nullability comes from the child's dtype. pub fn new(child: ArrayRef) -> Self { + let stats_set = child.statistics().to_array_stats(); Self { - slots: [Some(child)], + slots: vec![Some(child)], + stats_set, } } + /// Returns the length of this array. + pub fn len(&self) -> usize { + self.child().len() + } + + /// Returns the [`DType`] of this array. + pub fn dtype(&self) -> &DType { + self.child().dtype() + } + + /// Returns `true` if this array is empty. + pub fn is_empty(&self) -> bool { + self.len() == 0 + } + /// Returns a reference to the underlying child array. pub fn child(&self) -> &ArrayRef { self.slots[0] @@ -39,3 +61,10 @@ impl VariantArray { .vortex_expect("VariantArray child slot") } } + +impl Array { + /// Creates a new `VariantArray`. + pub fn new(child: ArrayRef) -> Self { + Array::try_from_data(VariantData::new(child)).vortex_expect("VariantData is always valid") + } +} diff --git a/vortex-array/src/arrays/variant/vtable/mod.rs b/vortex-array/src/arrays/variant/vtable/mod.rs index f0001425977..31f52911e6d 100644 --- a/vortex-array/src/arrays/variant/vtable/mod.rs +++ b/vortex-array/src/arrays/variant/vtable/mod.rs @@ -5,12 +5,9 @@ mod operations; mod validity; use std::hash::Hasher; -use std::sync::Arc; -use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_error::vortex_ensure; -use vortex_error::vortex_err; use vortex_error::vortex_panic; use crate::ArrayEq; @@ -20,19 +17,20 @@ use crate::EmptyMetadata; use crate::ExecutionCtx; use crate::ExecutionResult; use crate::Precision; -use crate::arrays::VariantArray; +use crate::array::Array; +use crate::array::ArrayId; +use crate::array::ArrayView; +use crate::array::VTable; use crate::arrays::variant::NUM_SLOTS; use crate::arrays::variant::SLOT_NAMES; +use crate::arrays::variant::VariantData; use crate::buffer::BufferHandle; use crate::dtype::DType; use crate::serde::ArrayChildren; -use crate::stats::StatsSetRef; +use crate::stats::ArrayStats; use crate::vtable; -use crate::vtable::Array; -use crate::vtable::ArrayId; -use crate::vtable::VTable; -vtable!(Variant); +vtable!(Variant, Variant, VariantData); #[derive(Clone, Debug)] pub struct Variant; @@ -42,7 +40,7 @@ impl Variant { } impl VTable for Variant { - type Array = VariantArray; + type ArrayData = VariantData; type Metadata = EmptyMetadata; @@ -50,7 +48,7 @@ impl VTable for Variant { type ValidityVTable = Self; - fn vtable(_array: &Self::Array) -> &Self { + fn vtable(_array: &Self::ArrayData) -> &Self { &Variant } @@ -58,50 +56,39 @@ impl VTable for Variant { Self::ID } - fn len(array: &Self::Array) -> usize { + fn len(array: &Self::ArrayData) -> usize { array.child().len() } - fn dtype(array: &Self::Array) -> &DType { + fn dtype(array: &Self::ArrayData) -> &DType { array.child().dtype() } - fn stats(array: &Self::Array) -> StatsSetRef<'_> { - array.child().statistics() + fn stats(array: &Self::ArrayData) -> &ArrayStats { + &array.stats_set } - fn array_hash(array: &Self::Array, state: &mut H, precision: Precision) { + fn array_hash(array: &VariantData, state: &mut H, precision: Precision) { array.child().array_hash(state, precision); } - fn array_eq(array: &Self::Array, other: &Self::Array, precision: Precision) -> bool { + fn array_eq(array: &VariantData, other: &VariantData, precision: Precision) -> bool { array.child().array_eq(other.child(), precision) } - fn nbuffers(_array: &Self::Array) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 0 } - fn buffer(_array: &Self::Array, idx: usize) -> BufferHandle { + fn buffer(_array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { vortex_panic!("VariantArray buffer index {idx} out of bounds") } - fn buffer_name(_array: &Self::Array, _idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, _idx: usize) -> Option { None } - fn slots(array: &Self::Array) -> &[Option] { - &array.slots - } - - fn slot_name(_array: &Self::Array, idx: usize) -> String { - match SLOT_NAMES.get(idx) { - Some(name) => (*name).to_string(), - None => vortex_panic!("VariantArray slot_name index {idx} out of bounds"), - } - } - - fn metadata(_array: &Self::Array) -> VortexResult { + fn metadata(_array: ArrayView<'_, Self>) -> VortexResult { Ok(EmptyMetadata) } @@ -125,7 +112,7 @@ impl VTable for Variant { _metadata: &Self::Metadata, _buffers: &[BufferHandle], children: &dyn ArrayChildren, - ) -> VortexResult { + ) -> VortexResult { vortex_ensure!(matches!(dtype, DType::Variant(_)), "Expected Variant DType"); vortex_ensure!( children.len() == 1, @@ -134,26 +121,36 @@ impl VTable for Variant { ); // The child carries the nullability for the whole VariantArray. let child = children.get(0, dtype, len)?; - Ok(VariantArray::new(child)) + Ok(VariantData::new(child)) + } + + fn slots(array: ArrayView<'_, Self>) -> &[Option] { + &array.data().slots } - fn with_slots(array: &mut Self::Array, slots: Vec>) -> VortexResult<()> { + fn slot_name(_array: ArrayView<'_, Self>, idx: usize) -> String { + match SLOT_NAMES.get(idx) { + Some(name) => (*name).to_string(), + None => vortex_panic!("VariantArray slot_name index {idx} out of bounds"), + } + } + + fn with_slots(array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.len() == NUM_SLOTS, "VariantArray expects exactly {} slot, got {}", NUM_SLOTS, slots.len() ); - let child = slots - .into_iter() - .next() - .vortex_expect("VariantArray slot vector length was validated") - .ok_or_else(|| vortex_err!("VariantArray child slot must be present"))?; - array.slots = [Some(child)]; + vortex_ensure!( + slots[0].is_some(), + "VariantArray child slot must be present" + ); + array.slots = slots; Ok(()) } - fn execute(array: Arc>, _ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: Array, _ctx: &mut ExecutionCtx) -> VortexResult { Ok(ExecutionResult::done(array)) } } @@ -166,9 +163,10 @@ mod tests { #[test] fn with_slots_rejects_missing_child() { - let mut array = VariantArray::new(PrimitiveArray::from_iter([1u8, 2, 3]).into_array()); + let array = VariantArray::new(PrimitiveArray::from_iter([1u8, 2, 3]).into_array()); + let mut data = array.into_data(); - let err = ::with_slots(&mut array, vec![None]).unwrap_err(); + let err = ::with_slots(&mut data, vec![None]).unwrap_err(); assert!(err.to_string().contains("child slot must be present")); } diff --git a/vortex-array/src/arrays/variant/vtable/operations.rs b/vortex-array/src/arrays/variant/vtable/operations.rs index e2e29921a52..0e0495b7a91 100644 --- a/vortex-array/src/arrays/variant/vtable/operations.rs +++ b/vortex-array/src/arrays/variant/vtable/operations.rs @@ -4,13 +4,14 @@ use vortex_error::VortexResult; use crate::ExecutionCtx; +use crate::array::ArrayView; +use crate::array::OperationsVTable; use crate::arrays::Variant; use crate::scalar::Scalar; -use crate::vtable::OperationsVTable; impl OperationsVTable for Variant { fn scalar_at( - array: &::Array, + array: ArrayView<'_, Variant>, index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { diff --git a/vortex-array/src/arrays/variant/vtable/validity.rs b/vortex-array/src/arrays/variant/vtable/validity.rs index 8e1b1d804ad..93fc2b786c6 100644 --- a/vortex-array/src/arrays/variant/vtable/validity.rs +++ b/vortex-array/src/arrays/variant/vtable/validity.rs @@ -3,13 +3,13 @@ use vortex_error::VortexResult; +use crate::array::ArrayView; +use crate::array::ValidityVTable; use crate::arrays::Variant; use crate::validity::Validity; -use crate::vtable::VTable; -use crate::vtable::ValidityVTable; impl ValidityVTable for Variant { - fn validity(array: &::Array) -> VortexResult { + fn validity(array: ArrayView<'_, Variant>) -> VortexResult { array.child().validity() } } diff --git a/vortex-array/src/arrow/convert.rs b/vortex-array/src/arrow/convert.rs index c901bdc7fd2..e4fe0c7f9bd 100644 --- a/vortex-array/src/arrow/convert.rs +++ b/vortex-array/src/arrow/convert.rs @@ -1008,14 +1008,13 @@ mod tests { assert_eq!(vortex_array_non_null.len(), 4); // Verify metadata - should be TemporalArray with Second time unit - let temporal_array = TemporalArray::try_from(vortex_array.clone()).unwrap(); + let temporal_array = TemporalArray::try_from(vortex_array).unwrap(); assert_eq!( temporal_array.temporal_metadata().time_unit(), TimeUnit::Seconds ); - let temporal_array_non_null = - TemporalArray::try_from(vortex_array_non_null.clone()).unwrap(); + let temporal_array_non_null = TemporalArray::try_from(vortex_array_non_null).unwrap(); assert_eq!( temporal_array_non_null.temporal_metadata().time_unit(), TimeUnit::Seconds @@ -1112,14 +1111,13 @@ mod tests { assert_eq!(vortex_array_non_null.len(), 4); // Verify metadata - should be TemporalArray with Second time unit - let temporal_array = TemporalArray::try_from(vortex_array.clone()).unwrap(); + let temporal_array = TemporalArray::try_from(vortex_array).unwrap(); assert_eq!( temporal_array.temporal_metadata().time_unit(), TimeUnit::Seconds ); - let temporal_array_non_null = - TemporalArray::try_from(vortex_array_non_null.clone()).unwrap(); + let temporal_array_non_null = TemporalArray::try_from(vortex_array_non_null).unwrap(); assert_eq!( temporal_array_non_null.temporal_metadata().time_unit(), TimeUnit::Seconds @@ -1300,14 +1298,14 @@ mod tests { // Verify metadata - should be VarBinViewArray with correct buffer count and dtype let varbin_view_array = vortex_array.as_::(); assert_eq!( - varbin_view_array.buffers().len(), + varbin_view_array.data_buffers().len(), arrow_array.data_buffers().len() ); assert_eq!(varbin_view_array.dtype(), &DType::Utf8(true.into())); let varbin_view_array_non_null = vortex_array_non_null.as_::(); assert_eq!( - varbin_view_array_non_null.buffers().len(), + varbin_view_array_non_null.data_buffers().len(), arrow_array_non_null.data_buffers().len() ); assert_eq!( @@ -1340,14 +1338,14 @@ mod tests { // Verify metadata - should be VarBinViewArray with correct buffer count and dtype let varbin_view_array = vortex_array.as_::(); assert_eq!( - varbin_view_array.buffers().len(), + varbin_view_array.data_buffers().len(), arrow_array.data_buffers().len() ); assert_eq!(varbin_view_array.dtype(), &DType::Binary(true.into())); let varbin_view_array_non_null = vortex_array_non_null.as_::(); assert_eq!( - varbin_view_array_non_null.buffers().len(), + varbin_view_array_non_null.data_buffers().len(), arrow_array_non_null.data_buffers().len() ); assert_eq!( diff --git a/vortex-array/src/arrow/datum.rs b/vortex-array/src/arrow/datum.rs index 7a744d84aef..ce77c3bb159 100644 --- a/vortex-array/src/arrow/datum.rs +++ b/vortex-array/src/arrow/datum.rs @@ -10,7 +10,6 @@ use vortex_error::VortexResult; use vortex_error::vortex_panic; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; use crate::arrays::Constant; use crate::arrays::ConstantArray; @@ -34,17 +33,17 @@ impl Datum { }) } else { Ok(Self { - array: array.to_array().into_arrow_preferred()?, + array: array.clone().into_arrow_preferred()?, is_scalar: false, }) } } - /// Create a new [`Datum`] from an [`DynArray`], which can then be passed to Arrow compute. + /// Create a new [`Datum`] from an `DynArray`, 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) -> VortexResult { Ok(Self { - array: array.to_array().into_arrow_preferred()?, + array: array.clone().into_arrow_preferred()?, is_scalar: false, }) } @@ -60,7 +59,7 @@ impl Datum { }) } else { Ok(Self { - array: array.to_array().into_arrow(target_datatype)?, + array: array.clone().into_arrow(target_datatype)?, is_scalar: false, }) } diff --git a/vortex-array/src/arrow/executor/byte.rs b/vortex-array/src/arrow/executor/byte.rs index 434758b509d..7fe99d00f27 100644 --- a/vortex-array/src/arrow/executor/byte.rs +++ b/vortex-array/src/arrow/executor/byte.rs @@ -14,8 +14,8 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::Canonical; use crate::ExecutionCtx; +use crate::array::ArrayView; use crate::arrays::VarBin; -use crate::arrays::VarBinArray; use crate::arrays::VarBinViewArray; use crate::arrow::byte_view::execute_varbinview_to_arrow; use crate::arrow::executor::validity::to_arrow_null_buffer; @@ -50,7 +50,7 @@ where /// Convert a Vortex VarBinArray into an Arrow GenericBinaryArray. fn varbin_to_byte_array( - array: &VarBinArray, + array: ArrayView<'_, VarBin>, ctx: &mut ExecutionCtx, ) -> VortexResult where diff --git a/vortex-array/src/arrow/executor/byte_view.rs b/vortex-array/src/arrow/executor/byte_view.rs index eb0995fb95c..8741d1d0ac9 100644 --- a/vortex-array/src/arrow/executor/byte_view.rs +++ b/vortex-array/src/arrow/executor/byte_view.rs @@ -26,7 +26,7 @@ pub fn canonical_varbinview_to_arrow( let views = ScalarBuffer::::from(array.views_handle().as_host().clone().into_arrow_buffer()); let buffers: Vec<_> = array - .buffers() + .data_buffers() .iter() .map(|buffer| buffer.as_host().clone().into_arrow_buffer()) .collect(); @@ -45,7 +45,7 @@ pub fn execute_varbinview_to_arrow( let views = ScalarBuffer::::from(array.views_handle().as_host().clone().into_arrow_buffer()); let buffers: Vec<_> = array - .buffers() + .data_buffers() .iter() .map(|buffer| buffer.as_host().clone().into_arrow_buffer()) .collect(); diff --git a/vortex-array/src/arrow/executor/dictionary.rs b/vortex-array/src/arrow/executor/dictionary.rs index 3fbe5eea340..5d9b75182b3 100644 --- a/vortex-array/src/arrow/executor/dictionary.rs +++ b/vortex-array/src/arrow/executor/dictionary.rs @@ -78,7 +78,7 @@ fn dict_to_dict( values_type: &DataType, ctx: &mut ExecutionCtx, ) -> VortexResult { - let DictArrayParts { codes, values, .. } = array.into_parts(); + let DictArrayParts { codes, values, .. } = array.into_data().into_parts(); let codes = codes.execute_arrow(Some(codes_type), ctx)?; let values = values.execute_arrow(Some(values_type), ctx)?; make_dict_array(codes_type, codes, values) diff --git a/vortex-array/src/arrow/executor/fixed_size_list.rs b/vortex-array/src/arrow/executor/fixed_size_list.rs index 92546322cf6..e82a625a750 100644 --- a/vortex-array/src/arrow/executor/fixed_size_list.rs +++ b/vortex-array/src/arrow/executor/fixed_size_list.rs @@ -13,7 +13,6 @@ use crate::arrays::FixedSizeList; use crate::arrays::FixedSizeListArray; use crate::arrow::ArrowArrayExecutor; use crate::arrow::executor::validity::to_arrow_null_buffer; -use crate::vtable::ValidityHelper; pub(super) fn to_arrow_fixed_list( array: ArrayRef, @@ -23,7 +22,7 @@ pub(super) fn to_arrow_fixed_list( ) -> VortexResult { // Check for Vortex FixedSizeListArray and convert directly. if let Some(array) = array.as_opt::() { - return list_to_list(array, elements_field, list_size, ctx); + return list_to_list(&array.into_owned(), elements_field, list_size, ctx); } // Otherwise, we execute the array to become a FixedSizeListArray. diff --git a/vortex-array/src/arrow/executor/list.rs b/vortex-array/src/arrow/executor/list.rs index a4996ce43bb..661e459f62e 100644 --- a/vortex-array/src/arrow/executor/list.rs +++ b/vortex-array/src/arrow/executor/list.rs @@ -15,7 +15,6 @@ use vortex_error::vortex_ensure; use crate::ArrayRef; use crate::Canonical; -use crate::DynArray; use crate::ExecutionCtx; use crate::arrays::Chunked; use crate::arrays::List; @@ -30,7 +29,6 @@ use crate::builtins::ArrayBuiltins; use crate::dtype::DType; use crate::dtype::NativePType; use crate::dtype::Nullability; -use crate::vtable::ValidityHelper; /// Convert a Vortex VarBinArray into an Arrow [`GenericListArray`](arrow_array:array::GenericListArray). pub(super) fn to_arrow_list( @@ -40,7 +38,7 @@ pub(super) fn to_arrow_list( ) -> VortexResult { // If the Vortex array is already in List format, we can directly convert it. if let Some(array) = array.as_opt::() { - return list_to_list::(array, elements_field, ctx); + return list_to_list::(&array.into_owned(), elements_field, ctx); } // Converting each chunk individually, then using the fast concat logic from arrow @@ -141,7 +139,7 @@ fn list_view_zctl( sizes, validity, .. - } = array.into_parts(); + } = array.into_data().into_parts(); // For ZCTL, we know that we only care about the final size. assert!(!sizes.is_empty()); diff --git a/vortex-array/src/arrow/executor/list_view.rs b/vortex-array/src/arrow/executor/list_view.rs index ad822f6db5e..fb536bc3c1b 100644 --- a/vortex-array/src/arrow/executor/list_view.rs +++ b/vortex-array/src/arrow/executor/list_view.rs @@ -49,7 +49,7 @@ fn list_view_to_list_view( sizes, validity, .. - } = array.into_parts(); + } = array.into_data().into_parts(); let elements = elements.execute_arrow(Some(elements_field.data_type()), ctx)?; vortex_ensure!( diff --git a/vortex-array/src/arrow/executor/mod.rs b/vortex-array/src/arrow/executor/mod.rs index edaa244d967..a89fa03a530 100644 --- a/vortex-array/src/arrow/executor/mod.rs +++ b/vortex-array/src/arrow/executor/mod.rs @@ -30,7 +30,6 @@ use vortex_error::vortex_bail; use vortex_error::vortex_ensure; use crate::ArrayRef; -use crate::DynArray; use crate::arrays::List; use crate::arrays::VarBin; use crate::arrow::executor::bool::to_arrow_bool; diff --git a/vortex-array/src/arrow/executor/run_end.rs b/vortex-array/src/arrow/executor/run_end.rs index 095d3280829..a5de374fe10 100644 --- a/vortex-array/src/arrow/executor/run_end.rs +++ b/vortex-array/src/arrow/executor/run_end.rs @@ -19,10 +19,8 @@ use vortex_error::vortex_ensure; use vortex_error::vortex_err; use crate::ArrayRef; -use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; -use crate::array::ArrayVisitor; use crate::arrays::Constant; use crate::arrays::ConstantArray; use crate::arrow::ArrowArrayExecutor; diff --git a/vortex-array/src/arrow/executor/struct_.rs b/vortex-array/src/arrow/executor/struct_.rs index 415a7503ee7..eab871de2eb 100644 --- a/vortex-array/src/arrow/executor/struct_.rs +++ b/vortex-array/src/arrow/executor/struct_.rs @@ -13,7 +13,6 @@ use vortex_error::VortexResult; use vortex_error::vortex_ensure; use crate::ArrayRef; -use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; use crate::arrays::Chunked; diff --git a/vortex-array/src/arrow/executor/temporal.rs b/vortex-array/src/arrow/executor/temporal.rs index a9316f9568e..3210d54963a 100644 --- a/vortex-array/src/arrow/executor/temporal.rs +++ b/vortex-array/src/arrow/executor/temporal.rs @@ -26,7 +26,6 @@ use vortex_error::vortex_ensure; use vortex_error::vortex_err; use crate::ArrayRef; -use crate::DynArray; use crate::ExecutionCtx; use crate::arrays::ExtensionArray; use crate::arrays::PrimitiveArray as VortexPrimitiveArray; diff --git a/vortex-array/src/arrow/record_batch.rs b/vortex-array/src/arrow/record_batch.rs index b5a1f1c23ef..a7596169c15 100644 --- a/vortex-array/src/arrow/record_batch.rs +++ b/vortex-array/src/arrow/record_batch.rs @@ -10,18 +10,18 @@ use vortex_error::VortexResult; use vortex_error::vortex_bail; use vortex_error::vortex_ensure; +use crate::ArrayRef; use crate::Canonical; -use crate::DynArray; use crate::LEGACY_SESSION; use crate::VortexSessionExecute; use crate::array::IntoArray; use crate::arrays::StructArray; use crate::arrow::ArrowArrayExecutor; -impl TryFrom<&dyn DynArray> for RecordBatch { +impl TryFrom<&ArrayRef> for RecordBatch { type Error = VortexError; - fn try_from(value: &dyn DynArray) -> VortexResult { + fn try_from(value: &ArrayRef) -> VortexResult { let Canonical::Struct(struct_array) = value.to_canonical()? else { vortex_bail!("RecordBatch can only be constructed from ") }; diff --git a/vortex-array/src/builders/bool.rs b/vortex-array/src/builders/bool.rs index 8844f49edef..8dbf4055827 100644 --- a/vortex-array/src/builders/bool.rs +++ b/vortex-array/src/builders/bool.rs @@ -115,11 +115,8 @@ impl ArrayBuilder for BoolBuilder { let bool_array = array.to_bool(); self.inner.append_buffer(&bool_array.to_bit_buffer()); - self.nulls.append_validity_mask( - bool_array - .validity_mask() - .vortex_expect("validity_mask in extend_from_array_unchecked"), - ); + self.nulls + .append_validity_mask(bool_array.validity_mask().vortex_expect("validity_mask")); } fn reserve_exact(&mut self, additional: usize) { @@ -152,7 +149,6 @@ mod tests { use crate::IntoArray; use crate::LEGACY_SESSION; use crate::VortexSessionExecute; - use crate::array::DynArray; use crate::arrays::ChunkedArray; use crate::assert_arrays_eq; use crate::builders::ArrayBuilder; diff --git a/vortex-array/src/builders/decimal.rs b/vortex-array/src/builders/decimal.rs index d4f64e8b7ce..d3811314a04 100644 --- a/vortex-array/src/builders/decimal.rs +++ b/vortex-array/src/builders/decimal.rs @@ -202,11 +202,8 @@ impl ArrayBuilder for DecimalBuilder { .extend(decimal_array.buffer::().iter().copied()); }); - self.nulls.append_validity_mask( - decimal_array - .validity_mask() - .vortex_expect("validity_mask in extend_from_array_unchecked"), - ); + self.nulls + .append_validity_mask(decimal_array.validity_mask().vortex_expect("validity_mask")); } fn reserve_exact(&mut self, additional: usize) { diff --git a/vortex-array/src/builders/dict/bytes.rs b/vortex-array/src/builders/dict/bytes.rs index 1656fdcf198..49b24700421 100644 --- a/vortex-array/src/builders/dict/bytes.rs +++ b/vortex-array/src/builders/dict/bytes.rs @@ -18,7 +18,6 @@ use vortex_utils::aliases::hash_map::RandomState; use super::DictConstraints; use super::DictEncoder; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; use crate::accessor::ArrayAccessor; use crate::arrays::PrimitiveArray; @@ -167,9 +166,9 @@ impl DictEncoder for BytesDictBuilder { let len = array.len(); if let Some(varbinview) = array.as_opt::() { - self.encode_bytes(varbinview, len) + self.encode_bytes(&varbinview.into_owned(), len) } else if let Some(varbin) = array.as_opt::() { - self.encode_bytes(varbin, len) + self.encode_bytes(&varbin.into_owned(), len) } else { // NOTE(aduffy): it is very rare that this path would be taken, only e.g. // if we're performing dictionary encoding downstream of some other compression. diff --git a/vortex-array/src/builders/dict/mod.rs b/vortex-array/src/builders/dict/mod.rs index ed0ca57dd07..eb1807fe855 100644 --- a/vortex-array/src/builders/dict/mod.rs +++ b/vortex-array/src/builders/dict/mod.rs @@ -8,7 +8,6 @@ use vortex_error::vortex_bail; use vortex_error::vortex_panic; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; use crate::ToCanonical; use crate::arrays::DictArray; diff --git a/vortex-array/src/builders/dict/primitive.rs b/vortex-array/src/builders/dict/primitive.rs index 911c17ed09e..d16f909d95c 100644 --- a/vortex-array/src/builders/dict/primitive.rs +++ b/vortex-array/src/builders/dict/primitive.rs @@ -14,7 +14,6 @@ use vortex_utils::aliases::hash_map::HashMap; use super::DictConstraints; use super::DictEncoder; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; use crate::ToCanonical; use crate::accessor::ArrayAccessor; @@ -157,7 +156,6 @@ mod test { use itertools::Itertools; use vortex_buffer::buffer; - use crate::DynArray; use crate::IntoArray as _; use crate::assert_arrays_eq; use crate::builders::dict::dict_encode; diff --git a/vortex-array/src/builders/fixed_size_list.rs b/vortex-array/src/builders/fixed_size_list.rs index c7ecf0a59b4..81142526786 100644 --- a/vortex-array/src/builders/fixed_size_list.rs +++ b/vortex-array/src/builders/fixed_size_list.rs @@ -12,7 +12,6 @@ use vortex_error::vortex_panic; use vortex_mask::Mask; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; use crate::arrays::FixedSizeListArray; use crate::builders::ArrayBuilder; @@ -277,7 +276,6 @@ mod tests { use super::FixedSizeListBuilder; use crate::IntoArray as _; use crate::ToCanonical; - use crate::array::DynArray; use crate::arrays::PrimitiveArray; use crate::builders::ArrayBuilder; use crate::builders::fixed_size_list::FixedSizeListArray; @@ -287,7 +285,6 @@ mod tests { use crate::dtype::PType::I32; use crate::scalar::Scalar; use crate::validity::Validity; - use crate::vtable::ValidityHelper; #[test] fn test_empty() { diff --git a/vortex-array/src/builders/list.rs b/vortex-array/src/builders/list.rs index efdd44bd739..af8721b7400 100644 --- a/vortex-array/src/builders/list.rs +++ b/vortex-array/src/builders/list.rs @@ -13,7 +13,6 @@ use vortex_mask::Mask; use crate::ArrayRef; use crate::Canonical; -use crate::DynArray; use crate::IntoArray; use crate::arrays::ListArray; use crate::builders::ArrayBuilder; @@ -301,7 +300,7 @@ impl ArrayBuilder for ListBuilder { } fn finish_into_canonical(&mut self) -> Canonical { - Canonical::List(self.finish_into_list().to_listview()) + Canonical::List(self.finish_into_list().into_array().to_listview()) } } @@ -316,7 +315,6 @@ mod tests { use crate::IntoArray; use crate::LEGACY_SESSION; use crate::ToCanonical; - use crate::array::DynArray; use crate::arrays::ChunkedArray; use crate::arrays::PrimitiveArray; use crate::assert_arrays_eq; @@ -330,7 +328,6 @@ mod tests { use crate::executor::VortexSessionExecute; use crate::scalar::Scalar; use crate::validity::Validity; - use crate::vtable::ValidityHelper; #[test] fn test_empty() { @@ -513,7 +510,7 @@ mod tests { DType::List(Arc::new(DType::Primitive(I32, NonNullable)), NonNullable), ); - let canon_values = chunked_list.unwrap().to_listview(); + let canon_values = chunked_list.unwrap().as_array().to_listview(); assert_eq!( one_trailing_unused_element.scalar_at(0).unwrap(), diff --git a/vortex-array/src/builders/listview.rs b/vortex-array/src/builders/listview.rs index c8e4044c915..68d1759e159 100644 --- a/vortex-array/src/builders/listview.rs +++ b/vortex-array/src/builders/listview.rs @@ -18,10 +18,9 @@ use vortex_error::vortex_ensure; use vortex_error::vortex_panic; use vortex_mask::Mask; +use crate::ArrayRef; use crate::Canonical; use crate::ToCanonical; -use crate::array::ArrayRef; -use crate::array::DynArray; use crate::array::IntoArray; use crate::arrays::ListViewArray; use crate::arrays::PrimitiveArray; @@ -339,7 +338,7 @@ impl ArrayBuilder for ListViewBuilder { // The incoming sizes might have a different type than the builder, so we need to cast. let cast_sizes = listview .sizes() - .to_array() + .clone() .cast(self.sizes_builder.dtype().clone()) .vortex_expect( "was somehow unable to cast the new sizes to the type of the builder sizes", @@ -431,7 +430,6 @@ mod tests { use super::ListViewBuilder; use crate::IntoArray; - use crate::array::DynArray; use crate::arrays::ListArray; use crate::assert_arrays_eq; use crate::builders::ArrayBuilder; @@ -441,7 +439,6 @@ mod tests { use crate::dtype::Nullability::Nullable; use crate::dtype::PType::I32; use crate::scalar::Scalar; - use crate::vtable::ValidityHelper; #[test] fn test_empty() { diff --git a/vortex-array/src/builders/null.rs b/vortex-array/src/builders/null.rs index 0fbe5c6b001..45b6e7ed974 100644 --- a/vortex-array/src/builders/null.rs +++ b/vortex-array/src/builders/null.rs @@ -8,7 +8,6 @@ use vortex_error::vortex_ensure; use vortex_mask::Mask; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; use crate::arrays::NullArray; use crate::builders::ArrayBuilder; diff --git a/vortex-array/src/builders/primitive.rs b/vortex-array/src/builders/primitive.rs index 6c42a7f4011..46221783bda 100644 --- a/vortex-array/src/builders/primitive.rs +++ b/vortex-array/src/builders/primitive.rs @@ -185,11 +185,8 @@ impl ArrayBuilder for PrimitiveBuilder { ); self.values.extend_from_slice(array.as_slice::()); - self.nulls.append_validity_mask( - array - .validity_mask() - .vortex_expect("validity_mask in extend_from_array_unchecked"), - ); + self.nulls + .append_validity_mask(array.validity_mask().vortex_expect("validity_mask")); } fn reserve_exact(&mut self, additional: usize) { diff --git a/vortex-array/src/builders/struct_.rs b/vortex-array/src/builders/struct_.rs index fbe6129af6d..9986bc9612b 100644 --- a/vortex-array/src/builders/struct_.rs +++ b/vortex-array/src/builders/struct_.rs @@ -174,11 +174,8 @@ impl ArrayBuilder for StructBuilder { builder.extend_from_array(a); } - self.nulls.append_validity_mask( - array - .validity_mask() - .vortex_expect("validity_mask in extend_from_array_unchecked"), - ); + self.nulls + .append_validity_mask(array.validity_mask().vortex_expect("validity_mask")); } fn reserve_exact(&mut self, capacity: usize) { diff --git a/vortex-array/src/builders/varbinview.rs b/vortex-array/src/builders/varbinview.rs index 80c19abd820..572be55d1b3 100644 --- a/vortex-array/src/builders/varbinview.rs +++ b/vortex-array/src/builders/varbinview.rs @@ -289,11 +289,7 @@ impl ArrayBuilder for VarBinViewBuilder { let array = array.to_varbinview(); self.flush_in_progress(); - self.push_only_validity_mask( - array - .validity_mask() - .vortex_expect("validity_mask in extend_from_array_unchecked"), - ); + self.push_only_validity_mask(array.validity_mask().vortex_expect("validity_mask")); let view_adjustment = self.completed @@ -309,33 +305,32 @@ impl ArrayBuilder for VarBinViewBuilder { .iter() .map(|view| adjustment.adjust_view(view)), ), - ViewAdjustment::Rewriting(adjustment) => match array - .validity_mask() - .vortex_expect("validity_mask in extend_from_array_unchecked") - { - Mask::AllTrue(_) => { - for (idx, &view) in array.views().iter().enumerate() { - let new_view = self.push_view(view, &adjustment, &array, idx); - self.views_builder.push(new_view); + ViewAdjustment::Rewriting(adjustment) => { + match array.validity_mask().vortex_expect("validity_mask") { + Mask::AllTrue(_) => { + for (idx, &view) in array.views().iter().enumerate() { + let new_view = self.push_view(view, &adjustment, &array, idx); + self.views_builder.push(new_view); + } } - } - Mask::AllFalse(_) => { - self.views_builder - .push_n(BinaryView::empty_view(), array.len()); - } - Mask::Values(v) => { - for (idx, (&view, is_valid)) in - array.views().iter().zip(v.bit_buffer().iter()).enumerate() - { - let new_view = if !is_valid { - BinaryView::empty_view() - } else { - self.push_view(view, &adjustment, &array, idx) - }; - self.views_builder.push(new_view); + Mask::AllFalse(_) => { + self.views_builder + .push_n(BinaryView::empty_view(), array.len()); + } + Mask::Values(v) => { + for (idx, (&view, is_valid)) in + array.views().iter().zip(v.bit_buffer().iter()).enumerate() + { + let new_view = if !is_valid { + BinaryView::empty_view() + } else { + self.push_view(view, &adjustment, &array, idx) + }; + self.views_builder.push(new_view); + } } } - }, + } } } @@ -601,7 +596,7 @@ impl BuffersWithOffsets { return Self::AllKept { buffers: Arc::from( array - .buffers() + .data_buffers() .to_vec() .into_iter() .map(|b| b.unwrap_host()) @@ -624,20 +619,19 @@ impl BuffersWithOffsets { } } - let buffers_with_offsets_iter = - buffer_utilizations - .iter() - .zip(array.buffers().iter()) - .map(|(utilization, buffer)| { - match compaction_strategy(utilization, compaction_threshold) { - CompactionStrategy::KeepFull => (Some(buffer.as_host().clone()), 0), - CompactionStrategy::Slice { start, end } => ( - Some(buffer.as_host().slice(start as usize..end as usize)), - start, - ), - CompactionStrategy::Rewrite => (None, 0), - } - }); + let buffers_with_offsets_iter = buffer_utilizations + .iter() + .zip(array.data_buffers().iter()) + .map(|(utilization, buffer)| { + match compaction_strategy(utilization, compaction_threshold) { + CompactionStrategy::KeepFull => (Some(buffer.as_host().clone()), 0), + CompactionStrategy::Slice { start, end } => ( + Some(buffer.as_host().slice(start as usize..end as usize)), + start, + ), + CompactionStrategy::Rewrite => (None, 0), + } + }); match (has_rewrite, has_nonzero_offset) { // keep all buffers @@ -906,7 +900,7 @@ mod tests { builder.finish_into_varbinview() }; - assert_eq!(array.buffers().len(), 1); + assert_eq!(array.data_buffers().len(), 1); let mut builder = VarBinViewBuilder::with_buffer_deduplication(DType::Utf8(Nullability::Nullable), 10); diff --git a/vortex-array/src/canonical.rs b/vortex-array/src/canonical.rs index fe0c563ad1e..e1220bf4837 100644 --- a/vortex-array/src/canonical.rs +++ b/vortex-array/src/canonical.rs @@ -13,10 +13,10 @@ use vortex_error::vortex_ensure; use vortex_error::vortex_panic; use crate::ArrayRef; -use crate::DynArray; use crate::Executable; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Bool; use crate::arrays::BoolArray; use crate::arrays::Decimal; @@ -55,7 +55,7 @@ use crate::validity::Validity; /// An enum capturing the default uncompressed encodings for each [Vortex type](DType). /// -/// Any array can be decoded into canonical form via the [`to_canonical`](DynArray::to_canonical) +/// Any array can be decoded into canonical form via the `to_canonical` /// trait method. This is the simplest encoding for a type, and will not be compressed but may /// contain compressed child arrays. /// @@ -410,12 +410,6 @@ impl Canonical { } } -impl AsRef for Canonical { - fn as_ref(&self) -> &(dyn DynArray + 'static) { - match_each_canonical!(self, |arr| arr.as_ref()) - } -} - impl IntoArray for Canonical { fn into_array(self) -> ArrayRef { match_each_canonical!(self, |arr| arr.into_array()) @@ -462,7 +456,7 @@ pub trait ToCanonical { } // Blanket impl for all Array encodings. -impl ToCanonical for A { +impl ToCanonical for ArrayRef { fn to_null(&self) -> NullArray { self.to_canonical() .vortex_expect("to_canonical failed") @@ -565,7 +559,7 @@ impl Executable for CanonicalValidity { ptype, buffer, validity, - } = p.into_parts(); + } = p.into_data().into_parts(); Ok(CanonicalValidity(Canonical::Primitive(unsafe { PrimitiveArray::new_unchecked_from_handle(buffer, ptype, validity.execute(ctx)?) }))) @@ -576,7 +570,7 @@ impl Executable for CanonicalValidity { values, values_type, validity, - } = d.into_parts(); + } = d.into_data().into_parts(); Ok(CanonicalValidity(Canonical::Decimal(unsafe { DecimalArray::new_unchecked_handle( values, @@ -592,7 +586,7 @@ impl Executable for CanonicalValidity { buffers, views, validity, - } = vbv.into_parts(); + } = vbv.into_data().into_parts(); Ok(CanonicalValidity(Canonical::VarBinView(unsafe { VarBinViewArray::new_handle_unchecked( views, @@ -610,7 +604,7 @@ impl Executable for CanonicalValidity { sizes, validity, .. - } = l.into_parts(); + } = l.into_data().into_parts(); Ok(CanonicalValidity(Canonical::List(unsafe { ListViewArray::new_unchecked(elements, offsets, sizes, validity.execute(ctx)?) .with_zero_copy_to_list(zctl) @@ -619,7 +613,7 @@ impl Executable for CanonicalValidity { Canonical::FixedSizeList(fsl) => { let list_size = fsl.list_size(); let len = fsl.len(); - let (elements, validity, _) = fsl.into_parts(); + let (elements, validity, _) = fsl.into_data().into_parts(); Ok(CanonicalValidity(Canonical::FixedSizeList( FixedSizeListArray::new(elements, list_size, validity.execute(ctx)?, len), ))) @@ -685,7 +679,7 @@ impl Executable for RecursiveCanonical { ptype, buffer, validity, - } = p.into_parts(); + } = p.into_data().into_parts(); Ok(RecursiveCanonical(Canonical::Primitive(unsafe { PrimitiveArray::new_unchecked_from_handle(buffer, ptype, validity.execute(ctx)?) }))) @@ -696,7 +690,7 @@ impl Executable for RecursiveCanonical { values, values_type, validity, - } = d.into_parts(); + } = d.into_data().into_parts(); Ok(RecursiveCanonical(Canonical::Decimal(unsafe { DecimalArray::new_unchecked_handle( values, @@ -712,7 +706,7 @@ impl Executable for RecursiveCanonical { buffers, views, validity, - } = vbv.into_parts(); + } = vbv.into_data().into_parts(); Ok(RecursiveCanonical(Canonical::VarBinView(unsafe { VarBinViewArray::new_handle_unchecked( views, @@ -730,7 +724,7 @@ impl Executable for RecursiveCanonical { sizes, validity, .. - } = l.into_parts(); + } = l.into_data().into_parts(); Ok(RecursiveCanonical(Canonical::List(unsafe { ListViewArray::new_unchecked( elements.execute::(ctx)?.0.into_array(), @@ -744,7 +738,7 @@ impl Executable for RecursiveCanonical { Canonical::FixedSizeList(fsl) => { let list_size = fsl.list_size(); let len = fsl.len(); - let (elements, validity, _) = fsl.into_parts(); + let (elements, validity, _) = fsl.into_data().into_parts(); Ok(RecursiveCanonical(Canonical::FixedSizeList( FixedSizeListArray::new( elements.execute::(ctx)?.0.into_array(), @@ -808,7 +802,7 @@ impl Executable for Buffer { fn execute(array: ArrayRef, ctx: &mut ExecutionCtx) -> VortexResult { let array = PrimitiveArray::execute(array, ctx)?; vortex_ensure!( - array.all_valid()?, + matches!(array.validity(), Validity::NonNullable | Validity::AllValid), "Cannot execute to native buffer: array is not all-valid." ); Ok(array.into_buffer()) @@ -938,50 +932,54 @@ impl Executable for StructArray { } /// A view into a canonical array type. -#[derive(Debug, Clone)] +/// +/// Uses `ArrayView` because these are obtained by +/// downcasting through the `Matcher` trait which returns `ArrayView`. +#[derive(Debug, Clone, Copy)] pub enum CanonicalView<'a> { - Null(&'a NullArray), - Bool(&'a BoolArray), - Primitive(&'a PrimitiveArray), - Decimal(&'a DecimalArray), - VarBinView(&'a VarBinViewArray), - List(&'a ListViewArray), - FixedSizeList(&'a FixedSizeListArray), - Struct(&'a StructArray), - Extension(&'a ExtensionArray), - Variant(&'a VariantArray), + Null(ArrayView<'a, Null>), + Bool(ArrayView<'a, Bool>), + Primitive(ArrayView<'a, Primitive>), + Decimal(ArrayView<'a, Decimal>), + VarBinView(ArrayView<'a, VarBinView>), + List(ArrayView<'a, ListView>), + FixedSizeList(ArrayView<'a, FixedSizeList>), + Struct(ArrayView<'a, Struct>), + Extension(ArrayView<'a, Extension>), + Variant(ArrayView<'a, Variant>), } impl From> for Canonical { fn from(value: CanonicalView<'_>) -> Self { match value { - CanonicalView::Null(a) => Canonical::Null(a.clone()), - CanonicalView::Bool(a) => Canonical::Bool(a.clone()), - CanonicalView::Primitive(a) => Canonical::Primitive(a.clone()), - CanonicalView::Decimal(a) => Canonical::Decimal(a.clone()), - CanonicalView::VarBinView(a) => Canonical::VarBinView(a.clone()), - CanonicalView::List(a) => Canonical::List(a.clone()), - CanonicalView::FixedSizeList(a) => Canonical::FixedSizeList(a.clone()), - CanonicalView::Struct(a) => Canonical::Struct(a.clone()), - CanonicalView::Extension(a) => Canonical::Extension(a.clone()), - CanonicalView::Variant(a) => Canonical::Variant(a.clone()), + CanonicalView::Null(a) => Canonical::Null(a.into_owned()), + CanonicalView::Bool(a) => Canonical::Bool(a.into_owned()), + CanonicalView::Primitive(a) => Canonical::Primitive(a.into_owned()), + CanonicalView::Decimal(a) => Canonical::Decimal(a.into_owned()), + CanonicalView::VarBinView(a) => Canonical::VarBinView(a.into_owned()), + CanonicalView::List(a) => Canonical::List(a.into_owned()), + CanonicalView::FixedSizeList(a) => Canonical::FixedSizeList(a.into_owned()), + CanonicalView::Struct(a) => Canonical::Struct(a.into_owned()), + CanonicalView::Extension(a) => Canonical::Extension(a.into_owned()), + CanonicalView::Variant(a) => Canonical::Variant(a.into_owned()), } } } -impl AsRef for CanonicalView<'_> { - fn as_ref(&self) -> &dyn DynArray { +impl CanonicalView<'_> { + /// Convert to a type-erased [`ArrayRef`]. + pub fn to_array_ref(&self) -> ArrayRef { match self { - CanonicalView::Null(a) => a.as_ref(), - CanonicalView::Bool(a) => a.as_ref(), - CanonicalView::Primitive(a) => a.as_ref(), - CanonicalView::Decimal(a) => a.as_ref(), - CanonicalView::VarBinView(a) => a.as_ref(), - CanonicalView::List(a) => a.as_ref(), - CanonicalView::FixedSizeList(a) => a.as_ref(), - CanonicalView::Struct(a) => a.as_ref(), - CanonicalView::Extension(a) => a.as_ref(), - CanonicalView::Variant(a) => a.as_ref(), + CanonicalView::Null(a) => a.array().clone(), + CanonicalView::Bool(a) => a.array().clone(), + CanonicalView::Primitive(a) => a.array().clone(), + CanonicalView::Decimal(a) => a.array().clone(), + CanonicalView::VarBinView(a) => a.array().clone(), + CanonicalView::List(a) => a.array().clone(), + CanonicalView::FixedSizeList(a) => a.array().clone(), + CanonicalView::Struct(a) => a.array().clone(), + CanonicalView::Extension(a) => a.array().clone(), + CanonicalView::Variant(a) => a.array().clone(), } } } @@ -991,7 +989,7 @@ pub struct AnyCanonical; impl Matcher for AnyCanonical { type Match<'a> = CanonicalView<'a>; - fn matches(array: &dyn DynArray) -> bool { + fn matches(array: &ArrayRef) -> bool { array.is::() || array.is::() || array.is::() @@ -1005,7 +1003,7 @@ impl Matcher for AnyCanonical { || array.is::() } - fn try_match<'a>(array: &'a dyn DynArray) -> Option> { + fn try_match<'a>(array: &'a 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 8734a446bd3..0f6d65dae2b 100644 --- a/vortex-array/src/columnar.rs +++ b/vortex-array/src/columnar.rs @@ -8,10 +8,10 @@ use crate::AnyCanonical; use crate::ArrayRef; use crate::Canonical; use crate::CanonicalView; -use crate::DynArray; use crate::Executable; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; use crate::arrays::Constant; use crate::arrays::ConstantArray; use crate::dtype::DType; @@ -72,7 +72,7 @@ impl Executable for Columnar { fn execute(array: ArrayRef, ctx: &mut ExecutionCtx) -> VortexResult { let result = array.execute_until::(ctx)?; if let Some(constant) = result.as_opt::() { - Ok(Columnar::Constant(constant.clone())) + Ok(Columnar::Constant(constant.into_owned())) } else { Ok(Columnar::Canonical( result @@ -86,23 +86,14 @@ impl Executable for Columnar { pub enum ColumnarView<'a> { Canonical(CanonicalView<'a>), - Constant(&'a ConstantArray), -} - -impl<'a> AsRef for ColumnarView<'a> { - fn as_ref(&self) -> &dyn DynArray { - match self { - ColumnarView::Canonical(canonical) => canonical.as_ref(), - ColumnarView::Constant(constant) => constant.as_ref(), - } - } + Constant(ArrayView<'a, Constant>), } pub struct AnyColumnar; impl Matcher for AnyColumnar { type Match<'a> = ColumnarView<'a>; - fn try_match<'a>(array: &'a dyn DynArray) -> Option> { + fn try_match<'a>(array: &'a ArrayRef) -> Option> { if let Some(constant) = array.as_opt::() { Some(ColumnarView::Constant(constant)) } else { diff --git a/vortex-array/src/compute/conformance/binary_numeric.rs b/vortex-array/src/compute/conformance/binary_numeric.rs index 1f4061f5cd9..d55b65664b1 100644 --- a/vortex-array/src/compute/conformance/binary_numeric.rs +++ b/vortex-array/src/compute/conformance/binary_numeric.rs @@ -28,7 +28,6 @@ use vortex_error::vortex_err; use vortex_error::vortex_panic; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; use crate::LEGACY_SESSION; use crate::RecursiveCanonical; diff --git a/vortex-array/src/compute/conformance/cast.rs b/vortex-array/src/compute/conformance/cast.rs index 3fba4f7614e..cab73acc521 100644 --- a/vortex-array/src/compute/conformance/cast.rs +++ b/vortex-array/src/compute/conformance/cast.rs @@ -6,7 +6,6 @@ use vortex_error::VortexResult; use vortex_error::vortex_panic; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; use crate::LEGACY_SESSION; use crate::RecursiveCanonical; @@ -66,7 +65,7 @@ pub fn test_cast_conformance(array: &ArrayRef) { fn test_cast_identity(array: &ArrayRef) { // Casting to the same type should be a no-op - let result = cast_and_execute(&array.to_array(), array.dtype().clone()) + let result = cast_and_execute(&array.clone(), array.dtype().clone()) .vortex_expect("cast should succeed in conformance test"); assert_eq!(result.len(), array.len()); assert_eq!(result.dtype(), array.dtype()); @@ -86,7 +85,7 @@ fn test_cast_identity(array: &ArrayRef) { fn test_cast_from_null(array: &ArrayRef) { // Null can be cast to itself - let result = cast_and_execute(&array.to_array(), DType::Null) + let result = cast_and_execute(&array.clone(), DType::Null) .vortex_expect("cast should succeed in conformance test"); assert_eq!(result.len(), array.len()); assert_eq!(result.dtype(), &DType::Null); @@ -101,7 +100,7 @@ fn test_cast_from_null(array: &ArrayRef) { ]; for dtype in nullable_types { - let result = cast_and_execute(&array.to_array(), dtype.clone()) + let result = cast_and_execute(&array.clone(), dtype.clone()) .vortex_expect("cast should succeed in conformance test"); assert_eq!(result.len(), array.len()); assert_eq!(result.dtype(), &dtype); @@ -124,7 +123,7 @@ fn test_cast_from_null(array: &ArrayRef) { ]; for dtype in non_nullable_types { - assert!(cast_and_execute(&array.to_array(), dtype.clone()).is_err()); + assert!(cast_and_execute(&array.clone(), dtype.clone()).is_err()); } } @@ -134,7 +133,7 @@ fn test_cast_to_non_nullable(array: &ArrayRef) { .vortex_expect("invalid_count should succeed in conformance test") == 0 { - let non_nullable = cast_and_execute(&array.to_array(), array.dtype().as_nonnullable()) + let non_nullable = cast_and_execute(&array.clone(), array.dtype().as_nonnullable()) .vortex_expect("arrays without nulls can cast to non-nullable"); assert_eq!(non_nullable.dtype(), &array.dtype().as_nonnullable()); assert_eq!(non_nullable.len(), array.len()); @@ -171,7 +170,7 @@ fn test_cast_to_non_nullable(array: &ArrayRef) { // array can be casted to DType::Null. return; } - cast_and_execute(&array.to_array(), array.dtype().as_nonnullable()) + cast_and_execute(&array.clone(), array.dtype().as_nonnullable()) .err() .unwrap_or_else(|| { vortex_panic!( @@ -183,7 +182,7 @@ fn test_cast_to_non_nullable(array: &ArrayRef) { } fn test_cast_to_nullable(array: &ArrayRef) { - let nullable = cast_and_execute(&array.to_array(), array.dtype().as_nullable()) + let nullable = cast_and_execute(&array.clone(), array.dtype().as_nullable()) .vortex_expect("arrays without nulls can cast to nullable"); assert_eq!(nullable.dtype(), &array.dtype().as_nullable()); assert_eq!(nullable.len(), array.len()); @@ -256,7 +255,7 @@ fn test_cast_to_primitive(array: &ArrayRef, target_ptype: PType, test_round_trip && (!fits(&min, target_ptype) || !fits(&max, target_ptype)) { cast_and_execute( - &array.to_array(), + &array.clone(), DType::Primitive(target_ptype, array.dtype().nullability()), ) .err() @@ -275,7 +274,7 @@ fn test_cast_to_primitive(array: &ArrayRef, target_ptype: PType, test_round_trip // Otherwise, all values must fit. let casted = cast_and_execute( - &array.to_array(), + &array.clone(), DType::Primitive(target_ptype, array.dtype().nullability()), ) .unwrap_or_else(|e| { diff --git a/vortex-array/src/compute/conformance/consistency.rs b/vortex-array/src/compute/conformance/consistency.rs index e6055da5e2c..2fa11d11949 100644 --- a/vortex-array/src/compute/conformance/consistency.rs +++ b/vortex-array/src/compute/conformance/consistency.rs @@ -25,7 +25,6 @@ use vortex_error::vortex_panic; use vortex_mask::Mask; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; use crate::LEGACY_SESSION; use crate::VortexSessionExecute; @@ -73,7 +72,7 @@ fn test_filter_take_consistency(array: &ArrayRef) { // Take using those indices let taken = array - .take(indices_array.to_array()) + .take(indices_array) .vortex_expect("take should succeed in conformance test"); // Results should be identical @@ -132,7 +131,6 @@ fn test_double_mask_consistency(array: &ArrayRef) { .mask((!&mask1).into_array()) .vortex_expect("mask should succeed in conformance test"); let double_masked = first_masked - .clone() .mask((!&mask2).into_array()) .vortex_expect("mask should succeed in conformance test"); @@ -364,7 +362,7 @@ fn test_take_slice_consistency(array: &ArrayRef) { let end = 4.min(len); let indices = PrimitiveArray::from_iter((1..end).map(|i| i as u64)).into_array(); let taken = array - .take(indices.to_array()) + .take(indices) .vortex_expect("take should succeed in conformance test"); // Slice from 1 to end @@ -451,7 +449,7 @@ fn test_take_repeated_indices(array: &ArrayRef) { // Take the first element three times let indices = PrimitiveArray::from_iter([0u64, 0, 0]).into_array(); let taken = array - .take(indices.to_array()) + .take(indices) .vortex_expect("take should succeed in conformance test"); assert_eq!(taken.len(), 3); @@ -521,7 +519,7 @@ fn test_empty_operations_consistency(array: &ArrayRef) { // Empty take let empty_indices = PrimitiveArray::empty::(Nullability::NonNullable).into_array(); let empty_take = array - .take(empty_indices.to_array()) + .take(empty_indices) .vortex_expect("take should succeed in conformance test"); assert_eq!(empty_take.len(), 0); assert_eq!(empty_take.dtype(), array.dtype()); @@ -546,7 +544,7 @@ fn test_take_preserves_properties(array: &ArrayRef) { // Take all elements in original order let indices = PrimitiveArray::from_iter((0..len).map(|i| i as u64)).into_array(); let taken = array - .take(indices.to_array()) + .take(indices) .vortex_expect("take should succeed in conformance test"); // Should be identical to original @@ -591,7 +589,7 @@ fn test_nullable_indices_consistency(array: &ArrayRef) { let indices = PrimitiveArray::from_option_iter([Some(0u64), None, Some(2u64)]).into_array(); let taken = array - .take(indices.to_array()) + .take(indices) .vortex_expect("take should succeed in conformance test"); // Result should have nulls where indices were null @@ -657,7 +655,7 @@ fn test_large_array_consistency(array: &ArrayRef) { let indices: Vec = (0..len).step_by(10).map(|i| i as u64).collect(); let indices_array = PrimitiveArray::from_iter(indices).into_array(); let taken = array - .take(indices_array.to_array()) + .take(indices_array) .vortex_expect("take should succeed in conformance test"); // Create equivalent filter mask @@ -722,10 +720,10 @@ fn test_comparison_inverse_consistency(array: &ArrayRef) { let const_array = crate::arrays::ConstantArray::new(test_scalar, len); if let (Ok(eq_result), Ok(neq_result)) = ( array - .to_array() + .clone() .binary(const_array.clone().into_array(), Operator::Eq), array - .to_array() + .clone() .binary(const_array.clone().into_array(), Operator::NotEq), ) { let inverted_eq = eq_result @@ -756,10 +754,10 @@ fn test_comparison_inverse_consistency(array: &ArrayRef) { // Test Gt vs Lte if let (Ok(gt_result), Ok(lte_result)) = ( array - .to_array() + .clone() .binary(const_array.clone().into_array(), Operator::Gt), array - .to_array() + .clone() .binary(const_array.clone().into_array(), Operator::Lte), ) { let inverted_gt = gt_result @@ -784,10 +782,10 @@ fn test_comparison_inverse_consistency(array: &ArrayRef) { // Test Lt vs Gte if let (Ok(lt_result), Ok(gte_result)) = ( array - .to_array() + .clone() .binary(const_array.clone().into_array(), Operator::Lt), array - .to_array() + .clone() .binary(const_array.into_array(), Operator::Gte), ) { let inverted_lt = lt_result @@ -852,12 +850,12 @@ fn test_comparison_symmetry_consistency(array: &ArrayRef) { // Test Gt vs Lt symmetry if let (Ok(arr_gt_scalar), Ok(scalar_lt_arr)) = ( array - .to_array() + .clone() .binary(const_array.clone().into_array(), Operator::Gt), const_array .clone() .into_array() - .binary(array.to_array(), Operator::Lt), + .binary(array.clone(), Operator::Lt), ) { assert_eq!( arr_gt_scalar.len(), @@ -883,11 +881,9 @@ fn test_comparison_symmetry_consistency(array: &ArrayRef) { // Test Eq symmetry if let (Ok(arr_eq_scalar), Ok(scalar_eq_arr)) = ( array - .to_array() + .clone() .binary(const_array.clone().into_array(), Operator::Eq), - const_array - .into_array() - .binary(array.to_array(), Operator::Eq), + const_array.into_array().binary(array.clone(), Operator::Eq), ) { for i in 0..arr_eq_scalar.len() { let arr_eq = arr_eq_scalar @@ -934,7 +930,7 @@ fn test_boolean_demorgan_consistency(array: &ArrayRef) { // Test first De Morgan's law: NOT(A AND B) = (NOT A) OR (NOT B) if let (Ok(a_and_b), Ok(not_a), Ok(not_b)) = ( - array.to_array().binary(bool_mask.clone(), Operator::And), + array.clone().binary(bool_mask.clone(), Operator::And), array.not(), bool_mask.not(), ) { @@ -942,7 +938,7 @@ fn test_boolean_demorgan_consistency(array: &ArrayRef) { .not() .vortex_expect("not should succeed in conformance test"); let not_a_or_not_b = not_a - .binary(not_b.clone(), Operator::Or) + .binary(not_b, Operator::Or) .vortex_expect("or should succeed in conformance test"); assert_eq!( @@ -968,7 +964,7 @@ fn test_boolean_demorgan_consistency(array: &ArrayRef) { // Test second De Morgan's law: NOT(A OR B) = (NOT A) AND (NOT B) if let (Ok(a_or_b), Ok(not_a), Ok(not_b)) = ( - array.to_array().binary(bool_mask.clone(), Operator::Or), + array.clone().binary(bool_mask.clone(), Operator::Or), array.not(), bool_mask.not(), ) { @@ -976,7 +972,7 @@ fn test_boolean_demorgan_consistency(array: &ArrayRef) { .not() .vortex_expect("not should succeed in conformance test"); let not_a_and_not_b = not_a - .binary(not_b.clone(), Operator::And) + .binary(not_b, Operator::And) .vortex_expect("and should succeed in conformance test"); for i in 0..not_a_or_b.len() { @@ -1033,7 +1029,7 @@ fn test_slice_aggregate_consistency(array: &ArrayRef) { .vortex_expect("slice should succeed in conformance test"); let canonical = array.to_canonical().vortex_expect("to_canonical failed"); let canonical_sliced = canonical - .as_ref() + .into_array() .slice(start..end) .vortex_expect("slice should succeed in conformance test"); @@ -1281,7 +1277,8 @@ fn test_cast_slice_consistency(array: &ArrayRef) { // Get the corresponding value from the canonical array (adjusted for slice offset) let canonical_val = canonical - .as_ref() + .clone() + .into_array() .scalar_at(start + i) .vortex_expect("scalar_at should succeed in conformance test"); @@ -1308,7 +1305,7 @@ fn test_cast_slice_consistency(array: &ArrayRef) { // Also test the other way: cast then slice let casted = match array - .to_array() + .clone() .cast(target_dtype.clone()) .and_then(|a| a.to_canonical().map(|c| c.into_array())) { diff --git a/vortex-array/src/compute/conformance/filter.rs b/vortex-array/src/compute/conformance/filter.rs index f0df98c32d4..6be08dff69a 100644 --- a/vortex-array/src/compute/conformance/filter.rs +++ b/vortex-array/src/compute/conformance/filter.rs @@ -5,7 +5,6 @@ use vortex_error::VortexExpect; use vortex_mask::Mask; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; use crate::assert_arrays_eq; use crate::dtype::DType; diff --git a/vortex-array/src/compute/conformance/mask.rs b/vortex-array/src/compute/conformance/mask.rs index 1ffe0719d2d..ba673a7a8e1 100644 --- a/vortex-array/src/compute/conformance/mask.rs +++ b/vortex-array/src/compute/conformance/mask.rs @@ -238,7 +238,6 @@ fn test_double_mask(array: &ArrayRef) { .mask((!&mask1).into_array()) .vortex_expect("mask should succeed in conformance test"); let double_masked = first_masked - .clone() .mask((!&mask2).into_array()) .vortex_expect("mask should succeed in conformance test"); diff --git a/vortex-array/src/compute/conformance/take.rs b/vortex-array/src/compute/conformance/take.rs index 3fbdb2dbe32..214262e5572 100644 --- a/vortex-array/src/compute/conformance/take.rs +++ b/vortex-array/src/compute/conformance/take.rs @@ -6,7 +6,6 @@ use vortex_error::VortexExpect; use crate::ArrayRef; use crate::Canonical; -use crate::DynArray; use crate::IntoArray as _; use crate::arrays::PrimitiveArray; use crate::dtype::Nullability; @@ -212,7 +211,7 @@ fn test_take_repeated_indices(array: &ArrayRef) { // Take the first element multiple times let indices = buffer![0u64, 0, 0].into_array(); let result = array - .take(indices.to_array()) + .take(indices) .vortex_expect("take should succeed in conformance test"); assert_eq!(result.len(), 3); diff --git a/vortex-array/src/display/extractor.rs b/vortex-array/src/display/extractor.rs index 9db0baf8834..bbfc25a3666 100644 --- a/vortex-array/src/display/extractor.rs +++ b/vortex-array/src/display/extractor.rs @@ -3,7 +3,7 @@ use std::fmt; -use crate::DynArray; +use crate::ArrayRef; /// Context threaded through tree traversal for percentage calculations etc. pub struct TreeContext { @@ -72,7 +72,7 @@ pub trait TreeExtractor: Send + Sync { /// Write header annotations (space-prefixed) to the formatter. fn write_header( &self, - array: &dyn DynArray, + array: &ArrayRef, ctx: &TreeContext, f: &mut fmt::Formatter<'_>, ) -> fmt::Result { @@ -87,7 +87,7 @@ pub trait TreeExtractor: Send + Sync { /// [`fmt::Formatter`] for formatting flags. fn write_details( &self, - array: &dyn DynArray, + array: &ArrayRef, ctx: &TreeContext, f: &mut IndentedFormatter<'_, '_>, ) -> fmt::Result { diff --git a/vortex-array/src/display/extractors/buffer.rs b/vortex-array/src/display/extractors/buffer.rs index cfe83e8d95d..17861a654f7 100644 --- a/vortex-array/src/display/extractors/buffer.rs +++ b/vortex-array/src/display/extractors/buffer.rs @@ -6,7 +6,7 @@ use std::fmt; use humansize::DECIMAL; use humansize::format_size; -use crate::DynArray; +use crate::ArrayRef; use crate::display::extractor::IndentedFormatter; use crate::display::extractor::TreeContext; use crate::display::extractor::TreeExtractor; @@ -20,7 +20,7 @@ pub struct BufferExtractor { impl TreeExtractor for BufferExtractor { fn write_details( &self, - array: &dyn DynArray, + array: &ArrayRef, _ctx: &TreeContext, f: &mut IndentedFormatter<'_, '_>, ) -> fmt::Result { diff --git a/vortex-array/src/display/extractors/encoding_summary.rs b/vortex-array/src/display/extractors/encoding_summary.rs index f1b363f9e05..bc678643ecb 100644 --- a/vortex-array/src/display/extractors/encoding_summary.rs +++ b/vortex-array/src/display/extractors/encoding_summary.rs @@ -3,7 +3,7 @@ use std::fmt; -use crate::DynArray; +use crate::ArrayRef; use crate::display::extractor::TreeContext; use crate::display::extractor::TreeExtractor; @@ -12,7 +12,7 @@ pub struct EncodingSummaryExtractor; impl EncodingSummaryExtractor { /// Write the encoding summary for an array directly to a formatter. - pub fn write(array: &dyn DynArray, f: &mut fmt::Formatter<'_>) -> fmt::Result { + pub fn write(array: &ArrayRef, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!( f, "{}({}, len={})", @@ -26,7 +26,7 @@ impl EncodingSummaryExtractor { impl TreeExtractor for EncodingSummaryExtractor { fn write_header( &self, - array: &dyn DynArray, + array: &ArrayRef, _ctx: &TreeContext, f: &mut fmt::Formatter<'_>, ) -> fmt::Result { diff --git a/vortex-array/src/display/extractors/metadata.rs b/vortex-array/src/display/extractors/metadata.rs index e7b4f49f192..a355bafe63c 100644 --- a/vortex-array/src/display/extractors/metadata.rs +++ b/vortex-array/src/display/extractors/metadata.rs @@ -3,7 +3,7 @@ use std::fmt; -use crate::DynArray; +use crate::ArrayRef; use crate::display::extractor::IndentedFormatter; use crate::display::extractor::TreeContext; use crate::display::extractor::TreeExtractor; @@ -14,7 +14,7 @@ pub struct MetadataExtractor; impl TreeExtractor for MetadataExtractor { fn write_details( &self, - array: &dyn DynArray, + array: &ArrayRef, _ctx: &TreeContext, f: &mut IndentedFormatter<'_, '_>, ) -> fmt::Result { diff --git a/vortex-array/src/display/extractors/nbytes.rs b/vortex-array/src/display/extractors/nbytes.rs index 5b558657df0..37e100279fc 100644 --- a/vortex-array/src/display/extractors/nbytes.rs +++ b/vortex-array/src/display/extractors/nbytes.rs @@ -6,7 +6,7 @@ use std::fmt; use humansize::DECIMAL; use humansize::format_size; -use crate::DynArray; +use crate::ArrayRef; use crate::display::extractor::TreeContext; use crate::display::extractor::TreeExtractor; @@ -16,7 +16,7 @@ pub struct NbytesExtractor; impl TreeExtractor for NbytesExtractor { fn write_header( &self, - array: &dyn DynArray, + array: &ArrayRef, ctx: &TreeContext, f: &mut fmt::Formatter<'_>, ) -> fmt::Result { diff --git a/vortex-array/src/display/extractors/stats.rs b/vortex-array/src/display/extractors/stats.rs index b93edade32d..70640e9619d 100644 --- a/vortex-array/src/display/extractors/stats.rs +++ b/vortex-array/src/display/extractors/stats.rs @@ -4,7 +4,7 @@ use std::fmt::Write; use std::fmt::{self}; -use crate::DynArray; +use crate::ArrayRef; use crate::display::extractor::TreeContext; use crate::display::extractor::TreeExtractor; use crate::expr::stats::Stat; @@ -13,7 +13,7 @@ use crate::expr::stats::StatsProvider; /// Display wrapper for array statistics in compact format. /// /// Produces output like ` [nulls=3, min=5, max=100]` (with leading space). -pub(crate) struct StatsDisplay<'a>(pub(crate) &'a dyn DynArray); +pub(crate) struct StatsDisplay<'a>(pub(crate) &'a ArrayRef); impl fmt::Display for StatsDisplay<'_> { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { @@ -117,7 +117,7 @@ pub struct StatsExtractor; impl TreeExtractor for StatsExtractor { fn write_header( &self, - array: &dyn DynArray, + array: &ArrayRef, _ctx: &TreeContext, f: &mut fmt::Formatter<'_>, ) -> fmt::Result { diff --git a/vortex-array/src/display/mod.rs b/vortex-array/src/display/mod.rs index e998c5dd0ea..79afebe0fbe 100644 --- a/vortex-array/src/display/mod.rs +++ b/vortex-array/src/display/mod.rs @@ -18,7 +18,7 @@ pub use extractors::StatsExtractor; use itertools::Itertools as _; pub use tree_display::TreeDisplay; -use crate::DynArray; +use crate::ArrayRef; /// Describe how to convert an array to a string. /// @@ -314,7 +314,7 @@ impl Default for DisplayOptions { /// See also: /// [Array::display_as](../trait.Array.html#method.display_as) /// and [DisplayOptions]. -pub struct DisplayArrayAs<'a>(pub &'a dyn DynArray, pub DisplayOptions); +pub struct DisplayArrayAs<'a>(pub &'a ArrayRef, pub DisplayOptions); impl Display for DisplayArrayAs<'_> { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { @@ -334,14 +334,14 @@ impl Display for DisplayArrayAs<'_> { /// "vortex.primitive(i16, len=5)", /// ); /// ``` -impl Display for dyn DynArray + '_ { +impl Display for ArrayRef { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { self.fmt_as(f, &DisplayOptions::MetadataOnly) } } const DISPLAY_LIMIT: usize = 16; -impl dyn DynArray + '_ { +impl ArrayRef { /// Display logical values of the array /// /// For example, an `i16` typed array containing the first five non-negative integers is displayed @@ -424,7 +424,7 @@ impl dyn DynArray + '_ { /// assert_eq!(format!("{}", array.display_tree()), expected); /// ``` pub fn display_tree(&self) -> TreeDisplay { - TreeDisplay::default_display(self.to_array()) + TreeDisplay::default_display(self.clone()) } /// Create a tree display with all built-in extractors (nbytes, stats, metadata, buffers). @@ -444,7 +444,7 @@ impl dyn DynArray + '_ { /// assert_eq!(array.tree_display().to_string(), expected); /// ``` pub fn tree_display(&self) -> TreeDisplay { - TreeDisplay::default_display(self.to_array()) + TreeDisplay::default_display(self.clone()) } /// Create a composable tree display builder with no extractors. @@ -484,7 +484,7 @@ impl dyn DynArray + '_ { /// assert_eq!(detailed, expected); /// ``` pub fn tree_display_builder(&self) -> TreeDisplay { - TreeDisplay::new(self.to_array()) + TreeDisplay::new(self.clone()) } /// Display the array as a formatted table. @@ -567,7 +567,7 @@ impl dyn DynArray + '_ { }), ), ]; - let mut display = TreeDisplay::new(self.to_array()); + let mut display = TreeDisplay::new(self.clone()); for (enabled, extractor) in extractors { if enabled { display = display.with_boxed(extractor); diff --git a/vortex-array/src/display/tree_display.rs b/vortex-array/src/display/tree_display.rs index 0b589c39cd2..5d0753ba354 100644 --- a/vortex-array/src/display/tree_display.rs +++ b/vortex-array/src/display/tree_display.rs @@ -87,7 +87,7 @@ impl TreeDisplay { // Header line: "{indent}{name}:{annotations...}\n" write!(f, "{indent}{name}:")?; for extractor in &self.extractors { - extractor.write_header(array.as_ref(), ctx, f)?; + extractor.write_header(array, ctx, f)?; } writeln!(f)?; @@ -96,7 +96,7 @@ impl TreeDisplay { { let mut indented = IndentedFormatter::new(f, &child_indent); for extractor in &self.extractors { - extractor.write_details(array.as_ref(), ctx, &mut indented)?; + extractor.write_details(array, ctx, &mut indented)?; } } diff --git a/vortex-array/src/executor.rs b/vortex-array/src/executor.rs index 1ff23890ca3..796bd8a057c 100644 --- a/vortex-array/src/executor.rs +++ b/vortex-array/src/executor.rs @@ -20,7 +20,6 @@ use std::env::VarError; use std::fmt; use std::fmt::Display; -use std::sync::Arc; use std::sync::LazyLock; use std::sync::atomic::AtomicUsize; @@ -33,7 +32,6 @@ use vortex_session::VortexSession; use crate::AnyCanonical; use crate::ArrayRef; use crate::Canonical; -use crate::DynArray; use crate::IntoArray; use crate::matcher::Matcher; use crate::optimizer::ArrayOptimizer; @@ -62,17 +60,18 @@ pub trait Executable: Sized { fn execute(array: ArrayRef, ctx: &mut ExecutionCtx) -> VortexResult; } -impl dyn DynArray + '_ { +#[allow(clippy::same_name_method)] +impl ArrayRef { /// Execute this array to produce an instance of `E`. /// /// See the [`Executable`] implementation for details on how this execution is performed. - pub fn execute(self: Arc, ctx: &mut ExecutionCtx) -> VortexResult { + pub fn execute(self, ctx: &mut ExecutionCtx) -> VortexResult { E::execute(self, ctx) } /// Execute this array, labeling the execution step with a name for tracing. pub fn execute_as( - self: Arc, + self, _name: &'static str, ctx: &mut ExecutionCtx, ) -> VortexResult { @@ -93,10 +92,7 @@ impl dyn DynArray + '_ { /// /// For safety, we will error when the number of execution iterations reaches a configurable /// maximum (default 128, override with `VORTEX_MAX_ITERATIONS`). - pub fn execute_until( - self: Arc, - ctx: &mut ExecutionCtx, - ) -> VortexResult { + pub fn execute_until(self, ctx: &mut ExecutionCtx) -> VortexResult { static MAX_ITERATIONS: LazyLock = LazyLock::new(|| match std::env::var("VORTEX_MAX_ITERATIONS") { Ok(val) => val.parse::().unwrap_or_else(|e| { @@ -117,7 +113,7 @@ impl dyn DynArray + '_ { let is_done = stack .last() .map_or(M::matches as DonePredicate, |frame| frame.2); - if is_done(current.as_ref()) { + if is_done(¤t) { match stack.pop() { None => { ctx.log(format_args!("-> {}", current)); @@ -133,7 +129,7 @@ impl dyn DynArray + '_ { // If we've reached canonical form, we can't execute any further regardless // of whether the matcher matched. - if AnyCanonical::matches(current.as_ref()) { + if AnyCanonical::matches(¤t) { match stack.pop() { None => { ctx.log(format_args!("-> canonical (unmatched) {}", current)); @@ -334,7 +330,7 @@ impl Executable for ArrayRef { let (array, step) = result.into_parts(); match step { ExecutionStep::Done => { - ctx.log(format_args!("-> {}", array.as_ref())); + ctx.log(format_args!("-> {}", array)); Ok(array) } ExecutionStep::ExecuteSlot(i, _) => { @@ -371,7 +367,7 @@ fn try_execute_parent(array: &ArrayRef, ctx: &mut ExecutionCtx) -> VortexResult< } /// A predicate that determines when an array has reached a desired form during execution. -pub type DonePredicate = fn(&dyn DynArray) -> bool; +pub type DonePredicate = fn(&ArrayRef) -> bool; /// Metadata-only step indicator returned alongside an array in [`ExecutionResult`]. /// diff --git a/vortex-array/src/expr/exprs.rs b/vortex-array/src/expr/exprs.rs index bc30ba86ec4..31f37a35dd6 100644 --- a/vortex-array/src/expr/exprs.rs +++ b/vortex-array/src/expr/exprs.rs @@ -174,12 +174,12 @@ pub fn nested_case_when( /// /// ``` /// # use vortex_array::arrays::{BoolArray, PrimitiveArray}; -/// # use vortex_array::{DynArray, IntoArray, ToCanonical}; +/// # use vortex_array::{IntoArray, ToCanonical}; /// # use vortex_array::validity::Validity; /// # use vortex_buffer::buffer; /// # use vortex_array::expr::{eq, root, lit}; /// let xs = PrimitiveArray::new(buffer![1i32, 2i32, 3i32], Validity::NonNullable); -/// let result = xs.to_array().apply(&eq(root(), lit(3))).unwrap(); +/// let result = xs.into_array().apply(&eq(root(), lit(3))).unwrap(); /// /// assert_eq!( /// result.to_bool().to_bit_buffer(), @@ -198,12 +198,12 @@ pub fn eq(lhs: Expression, rhs: Expression) -> Expression { /// /// ``` /// # use vortex_array::arrays::{BoolArray, PrimitiveArray}; -/// # use vortex_array::{DynArray, IntoArray, ToCanonical}; +/// # use vortex_array::{ IntoArray, ToCanonical}; /// # use vortex_array::validity::Validity; /// # use vortex_buffer::buffer; /// # use vortex_array::expr::{root, lit, not_eq}; /// let xs = PrimitiveArray::new(buffer![1i32, 2i32, 3i32], Validity::NonNullable); -/// let result = xs.to_array().apply(¬_eq(root(), lit(3))).unwrap(); +/// let result = xs.into_array().apply(¬_eq(root(), lit(3))).unwrap(); /// /// assert_eq!( /// result.to_bool().to_bit_buffer(), @@ -222,12 +222,12 @@ pub fn not_eq(lhs: Expression, rhs: Expression) -> Expression { /// /// ``` /// # use vortex_array::arrays::{BoolArray, PrimitiveArray }; -/// # use vortex_array::{DynArray, IntoArray, ToCanonical}; +/// # use vortex_array::{IntoArray, ToCanonical}; /// # use vortex_array::validity::Validity; /// # use vortex_buffer::buffer; /// # use vortex_array::expr::{gt_eq, root, lit}; /// let xs = PrimitiveArray::new(buffer![1i32, 2i32, 3i32], Validity::NonNullable); -/// let result = xs.to_array().apply(>_eq(root(), lit(3))).unwrap(); +/// let result = xs.into_array().apply(>_eq(root(), lit(3))).unwrap(); /// /// assert_eq!( /// result.to_bool().to_bit_buffer(), @@ -246,12 +246,12 @@ pub fn gt_eq(lhs: Expression, rhs: Expression) -> Expression { /// /// ``` /// # use vortex_array::arrays::{BoolArray, PrimitiveArray }; -/// # use vortex_array::{DynArray, IntoArray, ToCanonical}; +/// # use vortex_array::{IntoArray, ToCanonical}; /// # use vortex_array::validity::Validity; /// # use vortex_buffer::buffer; /// # use vortex_array::expr::{gt, root, lit}; /// let xs = PrimitiveArray::new(buffer![1i32, 2i32, 3i32], Validity::NonNullable); -/// let result = xs.to_array().apply(>(root(), lit(2))).unwrap(); +/// let result = xs.into_array().apply(>(root(), lit(2))).unwrap(); /// /// assert_eq!( /// result.to_bool().to_bit_buffer(), @@ -270,12 +270,12 @@ pub fn gt(lhs: Expression, rhs: Expression) -> Expression { /// /// ``` /// # use vortex_array::arrays::{BoolArray, PrimitiveArray }; -/// # use vortex_array::{DynArray, IntoArray, ToCanonical}; +/// # use vortex_array::{IntoArray, ToCanonical}; /// # use vortex_array::validity::Validity; /// # use vortex_buffer::buffer; /// # use vortex_array::expr::{root, lit, lt_eq}; /// let xs = PrimitiveArray::new(buffer![1i32, 2i32, 3i32], Validity::NonNullable); -/// let result = xs.to_array().apply(<_eq(root(), lit(2))).unwrap(); +/// let result = xs.into_array().apply(<_eq(root(), lit(2))).unwrap(); /// /// assert_eq!( /// result.to_bool().to_bit_buffer(), @@ -294,12 +294,12 @@ pub fn lt_eq(lhs: Expression, rhs: Expression) -> Expression { /// /// ``` /// # use vortex_array::arrays::{BoolArray, PrimitiveArray }; -/// # use vortex_array::{DynArray, IntoArray, ToCanonical}; +/// # use vortex_array::{IntoArray, ToCanonical}; /// # use vortex_array::validity::Validity; /// # use vortex_buffer::buffer; /// # use vortex_array::expr::{root, lit, lt}; /// let xs = PrimitiveArray::new(buffer![1i32, 2i32, 3i32], Validity::NonNullable); -/// let result = xs.to_array().apply(<(root(), lit(3))).unwrap(); +/// let result = xs.into_array().apply(<(root(), lit(3))).unwrap(); /// /// assert_eq!( /// result.to_bool().to_bit_buffer(), @@ -318,10 +318,10 @@ pub fn lt(lhs: Expression, rhs: Expression) -> Expression { /// /// ``` /// # use vortex_array::arrays::BoolArray; -/// # use vortex_array::{DynArray, IntoArray, ToCanonical}; +/// # use vortex_array::{IntoArray, ToCanonical}; /// # use vortex_array::expr::{root, lit, or}; /// let xs = BoolArray::from_iter(vec![true, false, true]); -/// let result = xs.to_array().apply(&or(root(), lit(false))).unwrap(); +/// let result = xs.into_array().apply(&or(root(), lit(false))).unwrap(); /// /// assert_eq!( /// result.to_bool().to_bit_buffer(), @@ -353,10 +353,10 @@ where /// /// ``` /// # use vortex_array::arrays::BoolArray; -/// # use vortex_array::{DynArray, IntoArray, ToCanonical}; +/// # use vortex_array::{IntoArray, ToCanonical}; /// # use vortex_array::expr::{and, root, lit}; -/// let xs = BoolArray::from_iter(vec![true, false, true]); -/// let result = xs.to_array().apply(&and(root(), lit(true))).unwrap(); +/// let xs = BoolArray::from_iter(vec![true, false, true]).into_array(); +/// let result = xs.apply(&and(root(), lit(true))).unwrap(); /// /// assert_eq!( /// result.to_bool().to_bit_buffer(), @@ -387,7 +387,7 @@ where /// ## Example usage /// /// ``` -/// # use vortex_array::{DynArray, IntoArray}; +/// # use vortex_array::IntoArray; /// # use vortex_array::arrow::IntoArrowArray as _; /// # use vortex_buffer::buffer; /// # use vortex_array::expr::{checked_add, lit, root}; diff --git a/vortex-array/src/expression.rs b/vortex-array/src/expression.rs index b7e44d0174e..780bfcf9db1 100644 --- a/vortex-array/src/expression.rs +++ b/vortex-array/src/expression.rs @@ -1,13 +1,10 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors -use std::sync::Arc; - use itertools::Itertools; use vortex_error::VortexResult; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; use crate::arrays::ConstantArray; use crate::arrays::ScalarFnArray; @@ -16,12 +13,12 @@ use crate::optimizer::ArrayOptimizer; use crate::scalar_fn::fns::literal::Literal; use crate::scalar_fn::fns::root::Root; -impl dyn DynArray + '_ { +impl ArrayRef { /// Apply the expression to this array, producing a new array in constant time. - pub fn apply(self: Arc, expr: &Expression) -> VortexResult { + pub fn apply(self, expr: &Expression) -> VortexResult { // If the expression is a root, return self. if expr.is::() { - return Ok(self.to_array()); + return Ok(self); } // Manually convert literals to ConstantArray. diff --git a/vortex-array/src/hash.rs b/vortex-array/src/hash.rs index 3c4aaa87e3d..f28739109e3 100644 --- a/vortex-array/src/hash.rs +++ b/vortex-array/src/hash.rs @@ -9,8 +9,6 @@ use vortex_buffer::BitBuffer; use vortex_buffer::Buffer; use vortex_mask::Mask; -use crate::ArrayRef; -use crate::DynArray; use crate::patches::Patches; use crate::validity::Validity; @@ -86,30 +84,6 @@ mod private { impl SealedEq for T {} } -impl ArrayHash for dyn DynArray + '_ { - fn array_hash(&self, state: &mut H, precision: Precision) { - self.dyn_array_hash(state, precision); - } -} - -impl ArrayEq for dyn DynArray + '_ { - fn array_eq(&self, other: &Self, precision: Precision) -> bool { - self.dyn_array_eq(DynArray::as_any(other), precision) - } -} - -impl ArrayHash for ArrayRef { - fn array_hash(&self, state: &mut H, precision: Precision) { - self.as_ref().array_hash(state, precision); - } -} - -impl ArrayEq for ArrayRef { - fn array_eq(&self, other: &Self, precision: Precision) -> bool { - self.as_ref().array_eq(other.as_ref(), precision) - } -} - impl ArrayHash for Buffer { fn array_hash(&self, state: &mut H, precision: Precision) { match precision { diff --git a/vortex-array/src/iter.rs b/vortex-array/src/iter.rs index 354aa5bbf7b..bfe375c627a 100644 --- a/vortex-array/src/iter.rs +++ b/vortex-array/src/iter.rs @@ -9,7 +9,6 @@ use itertools::Itertools; use vortex_error::VortexResult; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; use crate::arrays::Chunked; use crate::arrays::ChunkedArray; @@ -92,14 +91,14 @@ pub trait ArrayIteratorExt: ArrayIterator { impl ArrayIteratorExt for I {} -impl dyn DynArray + '_ { +impl ArrayRef { /// Create an [`ArrayIterator`] over the array. pub fn to_array_iterator(&self) -> impl ArrayIterator + 'static { let dtype = self.dtype().clone(); let iter = if let Some(chunked) = self.as_opt::() { - ArrayChunkIterator::Chunked(Arc::new(chunked.clone()), 0) + ArrayChunkIterator::Chunked(Arc::new(chunked.into_owned()), 0) } else { - ArrayChunkIterator::Single(Some(self.to_array())) + ArrayChunkIterator::Single(Some(self.clone())) }; ArrayIteratorAdapter::new(dtype, iter) } diff --git a/vortex-array/src/kernel.rs b/vortex-array/src/kernel.rs index e87c9f1811f..f5b75471437 100644 --- a/vortex-array/src/kernel.rs +++ b/vortex-array/src/kernel.rs @@ -21,8 +21,9 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::ExecutionCtx; +use crate::array::ArrayView; +use crate::array::VTable; use crate::matcher::Matcher; -use crate::vtable::VTable; /// A collection of [`ExecuteParentKernel`]s registered for a specific child encoding. /// @@ -58,7 +59,7 @@ impl ParentKernelSet { /// Evaluate the parent kernels on the given child and parent arrays. pub fn execute( &self, - child: &V::Array, + child: ArrayView<'_, V>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, @@ -92,7 +93,7 @@ pub trait ExecuteParentKernel: Debug + Send + Sync + 'static { /// Attempt to execute the parent array fused with the child array. fn execute_parent( &self, - array: &V::Array, + array: ArrayView<'_, V>, parent: ::Match<'_>, child_idx: usize, ctx: &mut ExecutionCtx, @@ -108,7 +109,7 @@ pub trait DynParentKernel: Send + Sync { /// Attempt to execute the parent array fused with the child array. fn execute_parent( &self, - child: &V::Array, + child: ArrayView<'_, V>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, @@ -138,7 +139,7 @@ impl> DynParentKernel for ParentKernelAd fn execute_parent( &self, - child: &V::Array, + child: ArrayView<'_, V>, parent: &ArrayRef, child_idx: usize, ctx: &mut ExecutionCtx, diff --git a/vortex-array/src/lib.rs b/vortex-array/src/lib.rs index 6dd206e4105..4f789469707 100644 --- a/vortex-array/src/lib.rs +++ b/vortex-array/src/lib.rs @@ -26,7 +26,6 @@ use vortex_session::VortexSession; use vortex_session::registry::Context; use crate::session::ArraySession; -use crate::vtable::DynVTableRef; pub mod accessor; pub mod aggregate_fn; @@ -69,7 +68,6 @@ pub mod stream; pub mod test_harness; pub mod validity; pub mod variants; -pub mod vtable; pub mod flatbuffers { //! Re-exported autogenerated code from the core Vortex flatbuffer definitions. diff --git a/vortex-array/src/mask.rs b/vortex-array/src/mask.rs index 33d02311262..c23a6f79652 100644 --- a/vortex-array/src/mask.rs +++ b/vortex-array/src/mask.rs @@ -8,7 +8,6 @@ use vortex_error::vortex_bail; use vortex_mask::Mask; use crate::ArrayRef; -use crate::DynArray; use crate::Executable; use crate::ExecutionCtx; use crate::IntoArray; diff --git a/vortex-array/src/matcher.rs b/vortex-array/src/matcher.rs index 46c9d79198c..b7d82fa3866 100644 --- a/vortex-array/src/matcher.rs +++ b/vortex-array/src/matcher.rs @@ -1,19 +1,19 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors -use crate::DynArray; +use crate::ArrayRef; /// Trait for matching array types. pub trait Matcher { type Match<'a>; /// Check if the given array matches this matcher type - fn matches(array: &dyn DynArray) -> bool { + fn matches(array: &ArrayRef) -> bool { Self::try_match(array).is_some() } /// Try to match the given array, returning the matched view type if successful. - fn try_match<'a>(array: &'a dyn DynArray) -> Option>; + fn try_match<'a>(array: &'a ArrayRef) -> Option>; } /// Matches any array type (wildcard matcher) @@ -21,15 +21,15 @@ pub trait Matcher { pub struct AnyArray; impl Matcher for AnyArray { - type Match<'a> = &'a dyn DynArray; + type Match<'a> = &'a ArrayRef; #[inline(always)] - fn matches(_array: &dyn DynArray) -> bool { + fn matches(_array: &ArrayRef) -> bool { true } #[inline(always)] - fn try_match(array: &dyn DynArray) -> Option> { + fn try_match(array: &ArrayRef) -> Option> { Some(array) } } diff --git a/vortex-array/src/normalize.rs b/vortex-array/src/normalize.rs index fdd0203d8d0..9a796e5485c 100644 --- a/vortex-array/src/normalize.rs +++ b/vortex-array/src/normalize.rs @@ -7,8 +7,6 @@ use vortex_error::vortex_bail; use vortex_session::registry::Id; use crate::ArrayRef; -use crate::ArrayVisitor; -use crate::DynArray; use crate::session::ArrayRegistry; /// Options for normalizing an array. @@ -26,25 +24,24 @@ pub enum Operation { // TODO(joe): add into canonical variant } -impl dyn DynArray + '_ { +impl ArrayRef { /// Normalize the array according to given options. /// /// This operation performs a recursive traversal of the array. Any non-allowed encoding is /// normalized per the configured operation. - pub fn normalize(self: ArrayRef, options: &mut NormalizeOptions) -> VortexResult { + pub fn normalize(self, options: &mut NormalizeOptions) -> VortexResult { let array_ids = options.allowed.ids().collect_vec(); self.normalize_with_error(&array_ids)?; // Note this takes ownership so we can at a later date remove non-allowed encodings. Ok(self) } - fn normalize_with_error(self: &ArrayRef, allowed: &[Id]) -> VortexResult<()> { + fn normalize_with_error(&self, allowed: &[Id]) -> VortexResult<()> { if !allowed.contains(&self.encoding_id()) { vortex_bail!(AssertionFailed: "normalize forbids encoding ({})", self.encoding_id()) } - for child in ArrayVisitor::children(self) { - let child: ArrayRef = child; + for child in self.children() { child.normalize_with_error(allowed)? } Ok(()) diff --git a/vortex-array/src/optimizer/mod.rs b/vortex-array/src/optimizer/mod.rs index ee5cd6af210..b7ab6664374 100644 --- a/vortex-array/src/optimizer/mod.rs +++ b/vortex-array/src/optimizer/mod.rs @@ -10,8 +10,7 @@ use vortex_error::VortexResult; use vortex_error::vortex_bail; -use crate::DynArray; -use crate::array::ArrayRef; +use crate::ArrayRef; pub mod rules; @@ -95,11 +94,11 @@ fn try_optimize_recursive(array: &ArrayRef) -> VortexResult> { for slot in current_array.slots() { match slot { Some(child) => { - if let Some(new_child) = try_optimize_recursive(child)? { + if let Some(new_child) = try_optimize_recursive(&child)? { new_slots.push(Some(new_child)); any_slot_optimized = true; } else { - new_slots.push(Some(child.clone())); + new_slots.push(Some(child)); } } None => new_slots.push(None), diff --git a/vortex-array/src/optimizer/rules.rs b/vortex-array/src/optimizer/rules.rs index 138f07a29c0..e505b21a199 100644 --- a/vortex-array/src/optimizer/rules.rs +++ b/vortex-array/src/optimizer/rules.rs @@ -24,9 +24,10 @@ use std::marker::PhantomData; use vortex_error::VortexResult; -use crate::array::ArrayRef; +use crate::ArrayRef; +use crate::array::ArrayView; +use crate::array::VTable; use crate::matcher::Matcher; -use crate::vtable::VTable; /// A metadata-only rewrite rule that transforms an array based on its own structure (Layer 1). /// @@ -39,7 +40,7 @@ pub trait ArrayReduceRule: Debug + Send + Sync + 'static { /// - `Ok(Some(new_array))` if the rule applied successfully /// - `Ok(None)` if the rule doesn't apply /// - `Err(e)` if an error occurred - fn reduce(&self, array: &V::Array) -> VortexResult>; + fn reduce(&self, array: ArrayView<'_, V>) -> VortexResult>; } /// A metadata-only rewrite rule where a child encoding rewrites its parent (Layer 2). @@ -59,7 +60,7 @@ pub trait ArrayParentReduceRule: Debug + Send + Sync + 'static { /// - `Err(e)` if an error occurred fn reduce_parent( &self, - array: &V::Array, + array: ArrayView<'_, V>, parent: ::Match<'_>, child_idx: usize, ) -> VortexResult>; @@ -72,7 +73,7 @@ pub trait DynArrayParentReduceRule: Debug + Send + Sync { fn reduce_parent( &self, - array: &V::Array, + array: ArrayView<'_, V>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult>; @@ -103,7 +104,7 @@ impl> DynArrayParentReduceRule fn reduce_parent( &self, - child: &V::Array, + child: ArrayView<'_, V>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { @@ -129,7 +130,7 @@ impl ReduceRuleSet { } /// Evaluate the reduction rules on the given array. - pub fn evaluate(&self, array: &V::Array) -> VortexResult> { + pub fn evaluate(&self, array: ArrayView<'_, V>) -> VortexResult> { for rule in self.rules.iter() { if let Some(reduced) = rule.reduce(array)? { return Ok(Some(reduced)); @@ -169,7 +170,7 @@ impl ParentRuleSet { /// Evaluate the parent reduction rules on the given child and parent arrays. pub fn evaluate( &self, - child: &V::Array, + child: ArrayView<'_, V>, parent: &ArrayRef, child_idx: usize, ) -> VortexResult> { diff --git a/vortex-array/src/patches.rs b/vortex-array/src/patches.rs index 2c2300ae2b4..2a55df62359 100644 --- a/vortex-array/src/patches.rs +++ b/vortex-array/src/patches.rs @@ -22,8 +22,6 @@ use vortex_mask::MaskMut; use vortex_utils::aliases::hash_map::HashMap; use crate::ArrayRef; -use crate::ArrayVisitor; -use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; use crate::ToCanonical; @@ -710,7 +708,7 @@ impl Patches { return Ok(None); } - let take_indices = take_indices.to_array().execute::(ctx)?; + let take_indices = take_indices.clone().execute::(ctx)?; if self.is_map_faster_than_search(&take_indices) { self.take_map(take_indices, true, ctx) } else { @@ -730,7 +728,7 @@ impl Patches { return Ok(None); } - let take_indices = take_indices.to_array().execute::(ctx)?; + let take_indices = take_indices.clone().execute::(ctx)?; if self.is_map_faster_than_search(&take_indices) { self.take_map(take_indices, false, ctx) } else { @@ -810,7 +808,7 @@ impl Patches { Ok(Some(Self { array_len: new_array_len, offset: 0, - indices: new_indices.clone(), + indices: new_indices, values: self .values() .take(PrimitiveArray::new(values_indices, values_validity).into_array())?, diff --git a/vortex-array/src/scalar_fn/fns/between/kernel.rs b/vortex-array/src/scalar_fn/fns/between/kernel.rs index 552b6863522..d09ac4bd251 100644 --- a/vortex-array/src/scalar_fn/fns/between/kernel.rs +++ b/vortex-array/src/scalar_fn/fns/between/kernel.rs @@ -9,20 +9,20 @@ use super::BetweenOptions; use super::precondition; use crate::ArrayRef; use crate::ExecutionCtx; -use crate::IntoArray; +use crate::array::ArrayView; +use crate::array::VTable; use crate::arrays::ScalarFnVTable; use crate::arrays::scalar_fn::ExactScalarFn; use crate::arrays::scalar_fn::ScalarFnArrayView; use crate::kernel::ExecuteParentKernel; use crate::optimizer::rules::ArrayParentReduceRule; -use crate::vtable::VTable; /// Reduce rule for between: restructure the array without reading buffers. /// /// Returns `Ok(None)` if the rule doesn't apply or buffer access is needed. pub trait BetweenReduce: VTable { fn between( - array: &Self::Array, + array: ArrayView<'_, Self>, lower: &ArrayRef, upper: &ArrayRef, options: &BetweenOptions, @@ -34,7 +34,7 @@ pub trait BetweenReduce: VTable { /// Returns `Ok(None)` if this kernel cannot handle the given inputs. pub trait BetweenKernel: VTable { fn between( - array: &Self::Array, + array: ArrayView<'_, Self>, lower: &ArrayRef, upper: &ArrayRef, options: &BetweenOptions, @@ -54,7 +54,7 @@ where fn reduce_parent( &self, - array: &V::Array, + array: ArrayView<'_, V>, parent: ScalarFnArrayView<'_, Between>, child_idx: usize, ) -> VortexResult> { @@ -65,9 +65,10 @@ where let scalar_fn_array = parent .as_opt::() .vortex_expect("ExactScalarFn matcher confirmed ScalarFnArray"); - let lower = scalar_fn_array.get_child(1); - let upper = scalar_fn_array.get_child(2); - let arr = array.clone().into_array(); + let children = scalar_fn_array.children(); + let lower = &children[1]; + let upper = &children[2]; + let arr = array.array().clone(); if let Some(result) = precondition(&arr, lower, upper)? { return Ok(Some(result)); } @@ -87,7 +88,7 @@ where fn execute_parent( &self, - array: &V::Array, + array: ArrayView<'_, V>, parent: ScalarFnArrayView<'_, Between>, child_idx: usize, ctx: &mut ExecutionCtx, @@ -99,9 +100,10 @@ where let scalar_fn_array = parent .as_opt::() .vortex_expect("ExactScalarFn matcher confirmed ScalarFnArray"); - let lower = scalar_fn_array.get_child(1); - let upper = scalar_fn_array.get_child(2); - let arr = array.clone().into_array(); + let children = scalar_fn_array.children(); + let lower = &children[1]; + let upper = &children[2]; + let arr = array.array().clone(); if let Some(result) = precondition(&arr, lower, upper)? { return Ok(Some(result)); } diff --git a/vortex-array/src/scalar_fn/fns/between/mod.rs b/vortex-array/src/scalar_fn/fns/between/mod.rs index 8d45b0df4c0..aaec8108808 100644 --- a/vortex-array/src/scalar_fn/fns/between/mod.rs +++ b/vortex-array/src/scalar_fn/fns/between/mod.rs @@ -15,7 +15,6 @@ use vortex_session::VortexSession; use crate::ArrayRef; use crate::Canonical; -use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; use crate::arrays::ConstantArray; @@ -157,12 +156,12 @@ fn between_canonical( // TODO(joe): return lazy compare once the executor supports this // Fall back to compare + boolean and - let lower_cmp = lower.to_array().binary( - arr.to_array(), + let lower_cmp = lower.clone().binary( + arr.clone(), Operator::from(options.lower_strict.to_compare_operator()), )?; - let upper_cmp = arr.to_array().binary( - upper.to_array(), + let upper_cmp = arr.clone().binary( + upper.clone(), Operator::from(options.upper_strict.to_compare_operator()), )?; execute_boolean(&lower_cmp, &upper_cmp, Operator::And) diff --git a/vortex-array/src/scalar_fn/fns/binary/boolean.rs b/vortex-array/src/scalar_fn/fns/binary/boolean.rs index 5bb7ae76f69..57face819e8 100644 --- a/vortex-array/src/scalar_fn/fns/binary/boolean.rs +++ b/vortex-array/src/scalar_fn/fns/binary/boolean.rs @@ -7,7 +7,6 @@ use vortex_error::VortexResult; use vortex_error::vortex_err; use crate::ArrayRef; -use crate::DynArray; use crate::IntoArray; use crate::arrays::Constant; use crate::arrays::ConstantArray; @@ -21,13 +20,13 @@ use crate::scalar_fn::fns::operators::Operator; /// Point-wise Kleene logical _and_ between two Boolean arrays. #[deprecated(note = "Use `ArrayBuiltins::binary` instead")] pub fn and_kleene(lhs: &ArrayRef, rhs: &ArrayRef) -> VortexResult { - lhs.to_array().binary(rhs.to_array(), Operator::And) + lhs.clone().binary(rhs.clone(), Operator::And) } /// Point-wise Kleene logical _or_ between two Boolean arrays. #[deprecated(note = "Use `ArrayBuiltins::binary` instead")] pub fn or_kleene(lhs: &ArrayRef, rhs: &ArrayRef) -> VortexResult { - lhs.to_array().binary(rhs.to_array(), Operator::Or) + lhs.clone().binary(rhs.clone(), Operator::Or) } /// Execute a Kleene boolean operation between two arrays. @@ -42,7 +41,7 @@ pub(crate) fn execute_boolean( if let Some(result) = constant_boolean(lhs, rhs, op)? { return Ok(result); } - arrow_execute_boolean(lhs.to_array(), rhs.to_array(), op) + arrow_execute_boolean(lhs.clone(), rhs.clone(), op) } /// Arrow implementation for Kleene boolean operations using [`Operator`]. diff --git a/vortex-array/src/scalar_fn/fns/binary/compare.rs b/vortex-array/src/scalar_fn/fns/binary/compare.rs index 6f765964682..874eaef87f1 100644 --- a/vortex-array/src/scalar_fn/fns/binary/compare.rs +++ b/vortex-array/src/scalar_fn/fns/binary/compare.rs @@ -15,6 +15,8 @@ use crate::ArrayRef; use crate::Canonical; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; +use crate::array::VTable; use crate::arrays::Constant; use crate::arrays::ConstantArray; use crate::arrays::ScalarFnVTable; @@ -29,7 +31,6 @@ use crate::kernel::ExecuteParentKernel; use crate::scalar::Scalar; use crate::scalar_fn::fns::binary::Binary; use crate::scalar_fn::fns::operators::CompareOperator; -use crate::vtable::VTable; /// Trait for encoding-specific comparison kernels that operate in encoded space. /// @@ -38,7 +39,7 @@ use crate::vtable::VTable; /// the left-hand side, swapping the operator when necessary. pub trait CompareKernel: VTable { fn compare( - lhs: &Self::Array, + lhs: ArrayView<'_, Self>, rhs: &ArrayRef, operator: CompareOperator, ctx: &mut ExecutionCtx, @@ -61,7 +62,7 @@ where fn execute_parent( &self, - array: &V::Array, + array: ArrayView<'_, V>, parent: ScalarFnArrayView<'_, Binary>, child_idx: usize, ctx: &mut ExecutionCtx, @@ -150,8 +151,8 @@ fn arrow_compare_arrays( // Arrow's vectorized comparison kernels don't support nested types. // For nested types, fall back to `make_comparator` which does element-wise comparison. let arrow_array: BooleanArray = if left.dtype().is_nested() || right.dtype().is_nested() { - let rhs = right.to_array().into_arrow_preferred()?; - let lhs = left.to_array().into_arrow(rhs.data_type())?; + let rhs = right.clone().into_arrow_preferred()?; + let lhs = left.clone().into_arrow(rhs.data_type())?; assert!( lhs.data_type().equals_datatype(rhs.data_type()), diff --git a/vortex-array/src/scalar_fn/fns/binary/numeric.rs b/vortex-array/src/scalar_fn/fns/binary/numeric.rs index a398623a5be..360c65ef6a3 100644 --- a/vortex-array/src/scalar_fn/fns/binary/numeric.rs +++ b/vortex-array/src/scalar_fn/fns/binary/numeric.rs @@ -76,7 +76,6 @@ mod test { use vortex_error::VortexResult; use crate::ArrayRef; - use crate::DynArray; use crate::IntoArray; use crate::LEGACY_SESSION; use crate::RecursiveCanonical; diff --git a/vortex-array/src/scalar_fn/fns/cast/kernel.rs b/vortex-array/src/scalar_fn/fns/cast/kernel.rs index 74b98ca4725..ca9783cc22e 100644 --- a/vortex-array/src/scalar_fn/fns/cast/kernel.rs +++ b/vortex-array/src/scalar_fn/fns/cast/kernel.rs @@ -5,7 +5,8 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::ExecutionCtx; -use crate::IntoArray; +use crate::array::ArrayView; +use crate::array::VTable; use crate::arrays::scalar_fn::ExactScalarFn; use crate::arrays::scalar_fn::ScalarFnArrayView; use crate::dtype::DType; @@ -13,7 +14,6 @@ use crate::kernel::ExecuteParentKernel; use crate::matcher::Matcher; use crate::optimizer::rules::ArrayParentReduceRule; use crate::scalar_fn::fns::cast::Cast; -use crate::vtable::VTable; /// Reduce rule for cast: restructure the array without reading buffers. /// @@ -23,7 +23,7 @@ use crate::vtable::VTable; /// /// Returns `Ok(None)` if the rule doesn't apply to this array/dtype combination. pub trait CastReduce: VTable { - fn cast(array: &Self::Array, dtype: &DType) -> VortexResult>; + fn cast(array: ArrayView<'_, Self>, dtype: &DType) -> VortexResult>; } /// Execute kernel for cast: perform the actual value conversion, potentially reading buffers. @@ -34,7 +34,7 @@ pub trait CastReduce: VTable { /// Returns `Ok(None)` if this kernel cannot handle the given dtype conversion. pub trait CastKernel: VTable { fn cast( - array: &Self::Array, + array: ArrayView<'_, Self>, dtype: &DType, ctx: &mut ExecutionCtx, ) -> VortexResult>; @@ -52,13 +52,13 @@ where fn reduce_parent( &self, - array: &V::Array, + array: ArrayView<'_, V>, parent: ScalarFnArrayView<'_, Cast>, _child_idx: usize, ) -> VortexResult> { let dtype = parent.options; if array.dtype() == dtype { - return Ok(Some(array.clone().into_array())); + return Ok(Some(array.array().clone())); } ::cast(array, dtype) } @@ -76,14 +76,14 @@ where fn execute_parent( &self, - array: &V::Array, + array: ArrayView<'_, V>, parent: ::Match<'_>, _child_idx: usize, ctx: &mut ExecutionCtx, ) -> VortexResult> { let dtype = parent.options; if array.dtype() == dtype { - return Ok(Some(array.clone().into_array())); + return Ok(Some(array.array().clone())); } ::cast(array, dtype, ctx) } diff --git a/vortex-array/src/scalar_fn/fns/cast/mod.rs b/vortex-array/src/scalar_fn/fns/cast/mod.rs index fa4124bf5a0..66a257d340b 100644 --- a/vortex-array/src/scalar_fn/fns/cast/mod.rs +++ b/vortex-array/src/scalar_fn/fns/cast/mod.rs @@ -15,12 +15,12 @@ use vortex_session::VortexSession; use crate::AnyColumnar; use crate::ArrayRef; +use crate::ArrayView; use crate::CanonicalView; use crate::ColumnarView; use crate::ExecutionCtx; use crate::arrays::Bool; use crate::arrays::Constant; -use crate::arrays::ConstantArray; use crate::arrays::Decimal; use crate::arrays::Extension; use crate::arrays::FixedSizeList; @@ -115,12 +115,12 @@ impl ScalarFnVTable for Cast { match columnar { ColumnarView::Canonical(canonical) => { - match cast_canonical(canonical.clone(), target_dtype, ctx)? { + match cast_canonical(canonical, target_dtype, ctx)? { Some(result) => Ok(result), None => vortex_bail!( "No CastKernel to cast canonical array {} from {} to {}", - canonical.as_ref().encoding_id(), - canonical.as_ref().dtype(), + canonical.to_array_ref().encoding_id(), + canonical.to_array_ref().dtype(), target_dtype, ), } @@ -221,7 +221,7 @@ fn cast_canonical( } /// Cast a constant array by dispatching to its [`CastReduce`] implementation. -fn cast_constant(array: &ConstantArray, dtype: &DType) -> VortexResult> { +fn cast_constant(array: ArrayView, dtype: &DType) -> VortexResult> { ::cast(array, dtype) } diff --git a/vortex-array/src/scalar_fn/fns/dynamic.rs b/vortex-array/src/scalar_fn/fns/dynamic.rs index 9f29b8bcb7c..931d4aa96ba 100644 --- a/vortex-array/src/scalar_fn/fns/dynamic.rs +++ b/vortex-array/src/scalar_fn/fns/dynamic.rs @@ -14,7 +14,6 @@ use vortex_error::VortexResult; use vortex_error::vortex_bail; use crate::ArrayRef; -use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; use crate::arrays::ConstantArray; diff --git a/vortex-array/src/scalar_fn/fns/fill_null/kernel.rs b/vortex-array/src/scalar_fn/fns/fill_null/kernel.rs index 9afd0b11703..c8148cef8d6 100644 --- a/vortex-array/src/scalar_fn/fns/fill_null/kernel.rs +++ b/vortex-array/src/scalar_fn/fns/fill_null/kernel.rs @@ -8,6 +8,9 @@ use vortex_error::vortex_ensure; use crate::ArrayRef; use crate::ExecutionCtx; use crate::IntoArray; +use crate::array::ArrayView; +use crate::array::VTable; +use crate::arrays::Constant; use crate::arrays::ConstantArray; use crate::arrays::ScalarFnVTable; use crate::arrays::scalar_fn::ExactScalarFn; @@ -17,7 +20,6 @@ use crate::kernel::ExecuteParentKernel; use crate::optimizer::rules::ArrayParentReduceRule; use crate::scalar::Scalar; use crate::scalar_fn::fns::fill_null::FillNull as FillNullExpr; -use crate::vtable::VTable; /// Fill nulls in an array with a scalar value without reading buffers. /// @@ -30,7 +32,8 @@ use crate::vtable::VTable; /// The fill value is guaranteed to be non-null. The array is guaranteed to have mixed /// validity (neither all-valid nor all-invalid). pub trait FillNullReduce: VTable { - fn fill_null(array: &Self::Array, fill_value: &Scalar) -> VortexResult>; + fn fill_null(array: ArrayView<'_, Self>, fill_value: &Scalar) + -> VortexResult>; } /// Fill nulls in an array with a scalar value, potentially reading buffers. @@ -44,7 +47,7 @@ pub trait FillNullReduce: VTable { /// validity (neither all-valid nor all-invalid). pub trait FillNullKernel: VTable { fn fill_null( - array: &Self::Array, + array: ArrayView<'_, Self>, fill_value: &Scalar, ctx: &mut ExecutionCtx, ) -> VortexResult>; @@ -65,7 +68,7 @@ pub(super) fn precondition( // If the array has no nulls, fill_null is a no-op (just cast for nullability). if !array.dtype().is_nullable() || array.all_valid()? { - return array.to_array().cast(fill_value.dtype().clone()).map(Some); + return array.clone().cast(fill_value.dtype().clone()).map(Some); } // If all values are null, replace the entire array with the fill value. @@ -81,7 +84,7 @@ pub(super) fn precondition( /// Fill null on a [`ConstantArray`] by replacing null scalars with the fill value, /// or casting non-null scalars to the fill value's dtype. pub(crate) fn fill_null_constant( - array: &ConstantArray, + array: ArrayView, fill_value: &Scalar, ) -> VortexResult { let scalar = if array.scalar().is_null() { @@ -104,7 +107,7 @@ where fn reduce_parent( &self, - array: &V::Array, + array: ArrayView<'_, V>, parent: ScalarFnArrayView<'_, FillNullExpr>, child_idx: usize, ) -> VortexResult> { @@ -119,7 +122,7 @@ where .get_child(1) .as_constant() .vortex_expect("fill_null fill_value must be constant"); - let arr = array.to_array(); + let arr = array.array().clone(); if let Some(result) = precondition(&arr, &fill_value)? { return Ok(Some(result)); } @@ -139,7 +142,7 @@ where fn execute_parent( &self, - array: &V::Array, + array: ArrayView<'_, V>, parent: ScalarFnArrayView<'_, FillNullExpr>, child_idx: usize, ctx: &mut ExecutionCtx, @@ -155,7 +158,7 @@ where .get_child(1) .as_constant() .vortex_expect("fill_null fill_value must be constant"); - let arr = array.to_array(); + let arr = array.array().clone(); if let Some(result) = precondition(&arr, &fill_value)? { return Ok(Some(result)); } diff --git a/vortex-array/src/scalar_fn/fns/fill_null/mod.rs b/vortex-array/src/scalar_fn/fns/fill_null/mod.rs index 5958524998b..656029bf82d 100644 --- a/vortex-array/src/scalar_fn/fns/fill_null/mod.rs +++ b/vortex-array/src/scalar_fn/fns/fill_null/mod.rs @@ -162,7 +162,7 @@ fn fill_null_canonical( fill_value: &Scalar, ctx: &mut ExecutionCtx, ) -> VortexResult { - let arr = canonical.as_ref().to_array(); + let arr = canonical.to_array_ref(); if let Some(result) = precondition(&arr, fill_value)? { // The result of precondition may return another ScalarFn, in which case we should // apply it immediately. @@ -181,7 +181,7 @@ fn fill_null_canonical( .ok_or_else(|| vortex_err!("FillNullKernel for DecimalArray returned None")), other => vortex_bail!( "No FillNullKernel for canonical array {}", - other.as_ref().encoding_id() + other.to_array_ref().encoding_id() ), } } diff --git a/vortex-array/src/scalar_fn/fns/get_item.rs b/vortex-array/src/scalar_fn/fns/get_item.rs index cc87765e3a2..320223bb1a3 100644 --- a/vortex-array/src/scalar_fn/fns/get_item.rs +++ b/vortex-array/src/scalar_fn/fns/get_item.rs @@ -218,7 +218,6 @@ impl ScalarFnVTable for GetItem { mod tests { use vortex_buffer::buffer; - use crate::DynArray; use crate::IntoArray; use crate::dtype::DType; use crate::dtype::FieldNames; diff --git a/vortex-array/src/scalar_fn/fns/like/kernel.rs b/vortex-array/src/scalar_fn/fns/like/kernel.rs index b349fe7d5a4..acc9de692f5 100644 --- a/vortex-array/src/scalar_fn/fns/like/kernel.rs +++ b/vortex-array/src/scalar_fn/fns/like/kernel.rs @@ -6,6 +6,8 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::ExecutionCtx; +use crate::array::ArrayView; +use crate::array::VTable; use crate::arrays::ScalarFnVTable; use crate::arrays::scalar_fn::ExactScalarFn; use crate::arrays::scalar_fn::ScalarFnArrayView; @@ -13,7 +15,6 @@ use crate::kernel::ExecuteParentKernel; use crate::optimizer::rules::ArrayParentReduceRule; use crate::scalar_fn::fns::like::Like as LikeExpr; use crate::scalar_fn::fns::like::LikeOptions; -use crate::vtable::VTable; /// Like pattern matching on an array without reading buffers. /// @@ -25,7 +26,7 @@ use crate::vtable::VTable; /// the parent `ScalarFnArray`. pub trait LikeReduce: VTable { fn like( - array: &Self::Array, + array: ArrayView<'_, Self>, pattern: &ArrayRef, options: LikeOptions, ) -> VortexResult>; @@ -40,7 +41,7 @@ pub trait LikeReduce: VTable { /// the parent `ScalarFnArray`. pub trait LikeKernel: VTable { fn like( - array: &Self::Array, + array: ArrayView<'_, Self>, pattern: &ArrayRef, options: LikeOptions, ctx: &mut ExecutionCtx, @@ -59,7 +60,7 @@ where fn reduce_parent( &self, - array: &V::Array, + array: ArrayView<'_, V>, parent: ScalarFnArrayView<'_, LikeExpr>, child_idx: usize, ) -> VortexResult> { @@ -87,7 +88,7 @@ where fn execute_parent( &self, - array: &V::Array, + array: ArrayView<'_, V>, parent: ScalarFnArrayView<'_, LikeExpr>, child_idx: usize, ctx: &mut ExecutionCtx, diff --git a/vortex-array/src/scalar_fn/fns/like/mod.rs b/vortex-array/src/scalar_fn/fns/like/mod.rs index b095d357e02..da52f730061 100644 --- a/vortex-array/src/scalar_fn/fns/like/mod.rs +++ b/vortex-array/src/scalar_fn/fns/like/mod.rs @@ -14,7 +14,6 @@ use vortex_proto::expr as pb; use vortex_session::VortexSession; use crate::ArrayRef; -use crate::DynArray; use crate::ExecutionCtx; use crate::arrow::Datum; use crate::arrow::from_arrow_array_with_len; diff --git a/vortex-array/src/scalar_fn/fns/list_contains/kernel.rs b/vortex-array/src/scalar_fn/fns/list_contains/kernel.rs index 71001eb6572..40ab34237ef 100644 --- a/vortex-array/src/scalar_fn/fns/list_contains/kernel.rs +++ b/vortex-array/src/scalar_fn/fns/list_contains/kernel.rs @@ -6,13 +6,14 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::ExecutionCtx; +use crate::array::ArrayView; +use crate::array::VTable; use crate::arrays::ScalarFnVTable; use crate::arrays::scalar_fn::ExactScalarFn; use crate::arrays::scalar_fn::ScalarFnArrayView; use crate::kernel::ExecuteParentKernel; use crate::optimizer::rules::ArrayParentReduceRule; use crate::scalar_fn::fns::list_contains::ListContains as ListContainsExpr; -use crate::vtable::VTable; /// Check list-contains without reading buffers (metadata-only). /// @@ -25,7 +26,10 @@ use crate::vtable::VTable; /// /// Return `None` if the operation cannot be resolved from metadata alone. pub trait ListContainsElementReduce: VTable { - fn list_contains(list: &ArrayRef, element: &Self::Array) -> VortexResult>; + fn list_contains( + list: &ArrayRef, + element: ArrayView<'_, Self>, + ) -> VortexResult>; } /// Check list-contains, potentially reading buffers. @@ -36,7 +40,7 @@ pub trait ListContainsElementReduce: VTable { pub trait ListContainsElementKernel: VTable { fn list_contains( list: &ArrayRef, - element: &Self::Array, + element: ArrayView<'_, Self>, ctx: &mut ExecutionCtx, ) -> VortexResult>; } @@ -53,7 +57,7 @@ where fn reduce_parent( &self, - array: &V::Array, + array: ArrayView<'_, V>, parent: ScalarFnArrayView<'_, ListContainsExpr>, child_idx: usize, ) -> VortexResult> { @@ -81,7 +85,7 @@ where fn execute_parent( &self, - array: &V::Array, + array: ArrayView<'_, V>, parent: ScalarFnArrayView<'_, ListContainsExpr>, child_idx: usize, ctx: &mut ExecutionCtx, diff --git a/vortex-array/src/scalar_fn/fns/list_contains/mod.rs b/vortex-array/src/scalar_fn/fns/list_contains/mod.rs index 3d02f0cf3e9..46e33176892 100644 --- a/vortex-array/src/scalar_fn/fns/list_contains/mod.rs +++ b/vortex-array/src/scalar_fn/fns/list_contains/mod.rs @@ -18,7 +18,6 @@ use vortex_session::VortexSession; use vortex_utils::iter::ReduceBalancedIterExt; use crate::ArrayRef; -use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; use crate::arrays::BoolArray; @@ -51,7 +50,6 @@ use crate::scalar_fn::fns::binary::Binary; use crate::scalar_fn::fns::literal::Literal; use crate::scalar_fn::fns::operators::Operator; use crate::validity::Validity; -use crate::vtable::ValidityHelper; #[derive(Clone)] pub struct ListContains; @@ -258,7 +256,7 @@ fn constant_list_scalar_contains( Operator::Eq, [ ConstantArray::new(element.clone(), len).into_array(), - values.to_array(), + values.clone(), ], )? .fill_null(false_scalar.clone()) @@ -297,6 +295,8 @@ fn list_contains_scalar( Operator::Eq, &[elems.clone(), rhs.clone().into_array()], )?; + + // TODO(ngates): we should execute this into a Columnar and check for constant. let matches = matching_elements.execute::(ctx)?; // Fast path: no elements match. @@ -407,7 +407,7 @@ fn list_false_or_null( Validity::Array(validity_array) => { // Create a new bool array with false, and the provided nulls let buffer = BitBuffer::new_unset(list_array.len()); - Ok(BoolArray::new(buffer, Validity::Array(validity_array.clone())).into_array()) + Ok(BoolArray::new(buffer, Validity::Array(validity_array)).into_array()) } } } @@ -449,9 +449,7 @@ mod tests { use vortex_utils::aliases::hash_set::HashSet; use crate::ArrayRef; - use crate::DynArray; use crate::IntoArray; - use crate::arrays::List; use crate::arrays::ListArray; use crate::arrays::VarBinArray; use crate::assert_arrays_eq; @@ -678,7 +676,7 @@ mod tests { // Test contains false let expr = list_contains(lit(list_scalar), lit(42i32)); - let result = arr.clone().apply(&expr).unwrap(); + let result = arr.apply(&expr).unwrap(); assert_eq!( result.scalar_at(0).unwrap(), Scalar::bool(false, Nullability::NonNullable) @@ -690,7 +688,6 @@ mod tests { fn nonnull_strings(values: Vec>) -> ArrayRef { ListArray::from_iter_slow::(values, Arc::new(DType::Utf8(Nullability::NonNullable))) .unwrap() - .as_::() .to_listview() .into_array() } @@ -713,6 +710,7 @@ mod tests { ListArray::try_new(elements, offsets, Validity::NonNullable) .unwrap() + .as_array() .to_listview() .into_array() } diff --git a/vortex-array/src/scalar_fn/fns/mask/kernel.rs b/vortex-array/src/scalar_fn/fns/mask/kernel.rs index 7c8da9303da..5346e4e236c 100644 --- a/vortex-array/src/scalar_fn/fns/mask/kernel.rs +++ b/vortex-array/src/scalar_fn/fns/mask/kernel.rs @@ -6,13 +6,14 @@ use vortex_error::vortex_err; use crate::ArrayRef; use crate::ExecutionCtx; +use crate::array::ArrayView; +use crate::array::VTable; use crate::arrays::Bool; use crate::arrays::scalar_fn::ExactScalarFn; use crate::arrays::scalar_fn::ScalarFnArrayView; use crate::kernel::ExecuteParentKernel; use crate::optimizer::rules::ArrayParentReduceRule; use crate::scalar_fn::fns::mask::Mask as MaskExpr; -use crate::vtable::VTable; /// Mask an array without reading buffers. /// @@ -27,7 +28,7 @@ use crate::vtable::VTable; /// The mask is guaranteed to have the same length as the array. Trivial cases /// (`AllValid`, `AllInvalid`, `NonNullable`) are handled by the caller before dispatch. pub trait MaskReduce: VTable { - fn mask(array: &Self::Array, mask: &ArrayRef) -> VortexResult>; + fn mask(array: ArrayView<'_, Self>, mask: &ArrayRef) -> VortexResult>; } /// Mask an array, potentially reading buffers. @@ -43,7 +44,7 @@ pub trait MaskReduce: VTable { /// (`AllValid`, `AllInvalid`, `NonNullable`) are handled by the caller before dispatch. pub trait MaskKernel: VTable { fn mask( - array: &Self::Array, + array: ArrayView<'_, Self>, mask: &ArrayRef, ctx: &mut ExecutionCtx, ) -> VortexResult>; @@ -61,7 +62,7 @@ where fn reduce_parent( &self, - array: &V::Array, + array: ArrayView<'_, V>, parent: ScalarFnArrayView<'_, MaskExpr>, child_idx: usize, ) -> VortexResult> { @@ -71,7 +72,8 @@ where } // The mask child (child 1) is a non-nullable BoolArray where true=keep. // If it's not yet a BoolArray, we can't reduce without execution. - let mask_child = parent + let parent_ref: ArrayRef = (*parent).clone(); + let mask_child = parent_ref .nth_child(1) .ok_or_else(|| vortex_err!("Mask expression must have 2 children"))?; if mask_child.as_opt::().is_none() { @@ -93,7 +95,7 @@ where fn execute_parent( &self, - array: &V::Array, + array: ArrayView<'_, V>, parent: ScalarFnArrayView<'_, MaskExpr>, child_idx: usize, ctx: &mut ExecutionCtx, diff --git a/vortex-array/src/scalar_fn/fns/merge.rs b/vortex-array/src/scalar_fn/fns/merge.rs index f0681a418b1..4e613179425 100644 --- a/vortex-array/src/scalar_fn/fns/merge.rs +++ b/vortex-array/src/scalar_fn/fns/merge.rs @@ -289,7 +289,6 @@ mod tests { use vortex_error::vortex_bail; use crate::ArrayRef; - use crate::DynArray; use crate::IntoArray; use crate::ToCanonical; use crate::arrays::PrimitiveArray; @@ -490,7 +489,7 @@ mod tests { ]) .unwrap() .into_array(); - let actual_array = test_array.clone().apply(&expr).unwrap().to_struct(); + let actual_array = test_array.apply(&expr).unwrap().to_struct(); assert_eq!( actual_array @@ -531,7 +530,7 @@ mod tests { ]) .unwrap() .into_array(); - let actual_array = test_array.clone().apply(&expr).unwrap().to_struct(); + let actual_array = test_array.apply(&expr).unwrap().to_struct(); assert_eq!(actual_array.names(), ["a", "c", "b", "d"]); } diff --git a/vortex-array/src/scalar_fn/fns/not/kernel.rs b/vortex-array/src/scalar_fn/fns/not/kernel.rs index 1546fb43992..0d42982eb6f 100644 --- a/vortex-array/src/scalar_fn/fns/not/kernel.rs +++ b/vortex-array/src/scalar_fn/fns/not/kernel.rs @@ -5,12 +5,13 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::ExecutionCtx; +use crate::array::ArrayView; +use crate::array::VTable; use crate::arrays::scalar_fn::ExactScalarFn; use crate::arrays::scalar_fn::ScalarFnArrayView; use crate::kernel::ExecuteParentKernel; use crate::optimizer::rules::ArrayParentReduceRule; use crate::scalar_fn::fns::not::Not as NotExpr; -use crate::vtable::VTable; /// Invert a boolean array without reading buffers. /// @@ -18,7 +19,7 @@ use crate::vtable::VTable; /// and structure without needing to read or execute on the underlying buffers. /// Implementations should return `None` if the operation requires buffer access. pub trait NotReduce: VTable { - fn invert(array: &Self::Array) -> VortexResult>; + fn invert(array: ArrayView<'_, Self>) -> VortexResult>; } /// Invert a boolean array, potentially reading buffers. @@ -26,7 +27,8 @@ pub trait NotReduce: VTable { /// Unlike [`NotReduce`], this trait is for invert implementations that may need /// to read and execute on the underlying buffers to produce the result. pub trait NotKernel: VTable { - fn invert(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult>; + fn invert(array: ArrayView<'_, Self>, ctx: &mut ExecutionCtx) + -> VortexResult>; } /// Adaptor that wraps a [`NotReduce`] impl as an [`ArrayParentReduceRule`]. @@ -41,7 +43,7 @@ where fn reduce_parent( &self, - array: &V::Array, + array: ArrayView<'_, V>, _parent: ScalarFnArrayView<'_, NotExpr>, _child_idx: usize, ) -> VortexResult> { @@ -61,7 +63,7 @@ where fn execute_parent( &self, - array: &V::Array, + array: ArrayView<'_, V>, _parent: ScalarFnArrayView<'_, NotExpr>, _child_idx: usize, ctx: &mut ExecutionCtx, diff --git a/vortex-array/src/scalar_fn/fns/not/mod.rs b/vortex-array/src/scalar_fn/fns/not/mod.rs index 6f52e4a77ff..bcb7e6a1220 100644 --- a/vortex-array/src/scalar_fn/fns/not/mod.rs +++ b/vortex-array/src/scalar_fn/fns/not/mod.rs @@ -11,7 +11,6 @@ use vortex_error::vortex_bail; use vortex_session::VortexSession; use crate::ArrayRef; -use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; use crate::arrays::Bool; diff --git a/vortex-array/src/scalar_fn/fns/pack.rs b/vortex-array/src/scalar_fn/fns/pack.rs index 37a00e61aeb..e745efff44e 100644 --- a/vortex-array/src/scalar_fn/fns/pack.rs +++ b/vortex-array/src/scalar_fn/fns/pack.rs @@ -166,7 +166,6 @@ mod tests { use super::Pack; use super::PackOptions; use crate::ArrayRef; - use crate::DynArray; use crate::IntoArray; use crate::ToCanonical; use crate::arrays::PrimitiveArray; diff --git a/vortex-array/src/scalar_fn/fns/zip/kernel.rs b/vortex-array/src/scalar_fn/fns/zip/kernel.rs index 5c5ee39ac06..e66de4e4883 100644 --- a/vortex-array/src/scalar_fn/fns/zip/kernel.rs +++ b/vortex-array/src/scalar_fn/fns/zip/kernel.rs @@ -6,13 +6,14 @@ use vortex_error::VortexResult; use crate::ArrayRef; use crate::ExecutionCtx; +use crate::array::ArrayView; +use crate::array::VTable; use crate::arrays::ScalarFnVTable; use crate::arrays::scalar_fn::ExactScalarFn; use crate::arrays::scalar_fn::ScalarFnArrayView; use crate::kernel::ExecuteParentKernel; use crate::optimizer::rules::ArrayParentReduceRule; use crate::scalar_fn::fns::zip::Zip as ZipExpr; -use crate::vtable::VTable; /// Zip two arrays using a mask without reading buffers. /// @@ -24,7 +25,7 @@ use crate::vtable::VTable; /// the parent `ScalarFnArray`. pub trait ZipReduce: VTable { fn zip( - array: &Self::Array, + array: ArrayView<'_, Self>, if_false: &ArrayRef, mask: &ArrayRef, ) -> VortexResult>; @@ -39,7 +40,7 @@ pub trait ZipReduce: VTable { /// the parent `ScalarFnArray`. pub trait ZipKernel: VTable { fn zip( - array: &Self::Array, + array: ArrayView<'_, Self>, if_false: &ArrayRef, mask: &ArrayRef, ctx: &mut ExecutionCtx, @@ -58,7 +59,7 @@ where fn reduce_parent( &self, - array: &V::Array, + array: ArrayView<'_, V>, parent: ScalarFnArrayView<'_, ZipExpr>, child_idx: usize, ) -> VortexResult> { @@ -86,7 +87,7 @@ where fn execute_parent( &self, - array: &V::Array, + array: ArrayView<'_, V>, parent: ScalarFnArrayView<'_, ZipExpr>, child_idx: usize, ctx: &mut ExecutionCtx, diff --git a/vortex-array/src/scalar_fn/fns/zip/mod.rs b/vortex-array/src/scalar_fn/fns/zip/mod.rs index e5f5f18d964..898726af895 100644 --- a/vortex-array/src/scalar_fn/fns/zip/mod.rs +++ b/vortex-array/src/scalar_fn/fns/zip/mod.rs @@ -14,7 +14,6 @@ use vortex_mask::MaskValues; use vortex_session::VortexSession; use crate::ArrayRef; -use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; use crate::arrays::BoolArray; @@ -230,7 +229,6 @@ mod tests { use super::zip_impl; use crate::ArrayRef; - use crate::DynArray; use crate::IntoArray; use crate::LEGACY_SESSION; use crate::VortexSessionExecute; @@ -378,7 +376,6 @@ mod tests { let mut ctx = LEGACY_SESSION.create_execution_ctx(); let result = mask_array - .clone() .zip(const1.clone(), const2.clone())? .execute::(&mut ctx)? .into_array(); @@ -444,7 +441,7 @@ mod tests { .execute::(&mut ctx) .unwrap(); let zipped = zipped.as_opt::().unwrap(); - assert_eq!(zipped.nbuffers(), 2); + assert_eq!(zipped.data_buffers().len(), 2); let expected = arrow_zip( mask.into_array() @@ -456,7 +453,7 @@ mod tests { ) .unwrap(); - let actual = zipped.clone().into_array().into_arrow_preferred().unwrap(); + let actual = zipped.array().clone().into_arrow_preferred().unwrap(); assert_eq!(actual.as_ref(), expected.as_ref()); } } diff --git a/vortex-array/src/search_sorted.rs b/vortex-array/src/search_sorted.rs index f45df061aca..cf096bbb8e2 100644 --- a/vortex-array/src/search_sorted.rs +++ b/vortex-array/src/search_sorted.rs @@ -12,7 +12,7 @@ use std::hint; use vortex_error::VortexResult; -use crate::DynArray; +use crate::ArrayRef; use crate::scalar::Scalar; #[derive(Debug, Copy, Clone, Eq, PartialEq)] @@ -262,7 +262,7 @@ fn search_sorted_side_idx VortexResult>( } } -impl IndexOrd for dyn DynArray + '_ { +impl IndexOrd for ArrayRef { fn index_cmp(&self, idx: usize, elem: &Scalar) -> VortexResult> { let scalar_a = self.scalar_at(idx)?; Ok(scalar_a.partial_cmp(elem)) diff --git a/vortex-array/src/serde.rs b/vortex-array/src/serde.rs index c4f885f6c2a..b98f1da6c38 100644 --- a/vortex-array/src/serde.rs +++ b/vortex-array/src/serde.rs @@ -29,9 +29,6 @@ use vortex_utils::aliases::hash_map::HashMap; use crate::ArrayContext; use crate::ArrayRef; -use crate::ArrayVisitor; -use crate::ArrayVisitorExt; -use crate::DynArray; use crate::buffer::BufferHandle; use crate::dtype::DType; use crate::dtype::TryFromBytes; @@ -48,7 +45,7 @@ pub struct SerializeOptions { pub include_padding: bool, } -impl dyn DynArray + '_ { +impl ArrayRef { /// Serialize the array into a sequence of byte buffers that should be written contiguously. /// This function returns a vec to avoid copying data buffers. /// @@ -160,12 +157,12 @@ impl dyn DynArray + '_ { /// A utility struct for creating an [`fba::ArrayNode`] flatbuffer. pub struct ArrayNodeFlatBuffer<'a> { ctx: &'a ArrayContext, - array: &'a dyn DynArray, + array: &'a ArrayRef, buffer_idx: u16, } impl<'a> ArrayNodeFlatBuffer<'a> { - pub fn try_new(ctx: &'a ArrayContext, array: &'a dyn DynArray) -> VortexResult { + pub fn try_new(ctx: &'a ArrayContext, array: &'a ArrayRef) -> VortexResult { // Depth-first traversal of the array to ensure it supports serialization. for child in array.depth_first_traversal() { if child.metadata()?.is_none() { @@ -217,7 +214,7 @@ impl<'a> ArrayNodeFlatBuffer<'a> { .map_err(|_| vortex_err!("Array can have at most u16::MAX buffers"))?; let mut child_buffer_idx = self.buffer_idx + nbuffers; - let children = &self + let children = self .array .children() .iter() @@ -238,7 +235,7 @@ impl<'a> ArrayNodeFlatBuffer<'a> { Ok(msg) }) .collect::>>()?; - let children = Some(fbb.create_vector(children)); + let children = Some(fbb.create_vector(&children)); let buffers = Some(fbb.create_vector_from_iter((0..nbuffers).map(|i| i + self.buffer_idx))); let stats = Some(self.array.statistics().write_flatbuffer(fbb)?); @@ -284,7 +281,7 @@ impl ArrayChildren for &[ArrayRef] { } } -/// [`ArrayParts`] represents a parsed but not-yet-decoded deserialized [`DynArray`]. +/// [`ArrayParts`] represents a parsed but not-yet-decoded deserialized array. /// It contains all the information from the serialized form, without anything extra. i.e. /// it is missing a [`DType`] and `len`, and the `encoding_id` is not yet resolved to a concrete /// vtable. diff --git a/vortex-array/src/session/mod.rs b/vortex-array/src/session/mod.rs index 6fc5a9ea2e0..afe90920028 100644 --- a/vortex-array/src/session/mod.rs +++ b/vortex-array/src/session/mod.rs @@ -7,6 +7,8 @@ use vortex_session::Ref; use vortex_session::SessionExt; use vortex_session::registry::Registry; +use crate::array::DynVTableRef; +use crate::array::VTable; use crate::arrays::Bool; use crate::arrays::Chunked; use crate::arrays::Constant; @@ -22,8 +24,6 @@ use crate::arrays::Primitive; use crate::arrays::Struct; use crate::arrays::VarBin; use crate::arrays::VarBinView; -use crate::vtable::DynVTableRef; -use crate::vtable::VTable; pub type ArrayRegistry = Registry; diff --git a/vortex-array/src/stats/array.rs b/vortex-array/src/stats/array.rs index bdc8b33cf7c..b3838bd4f9e 100644 --- a/vortex-array/src/stats/array.rs +++ b/vortex-array/src/stats/array.rs @@ -14,7 +14,7 @@ use super::MutTypedStatsSetRef; use super::StatsSet; use super::StatsSetIntoIter; use super::TypedStatsSetRef; -use crate::DynArray; +use crate::ArrayRef; use crate::LEGACY_SESSION; use crate::VortexSessionExecute; use crate::aggregate_fn::fns::is_constant::is_constant; @@ -43,12 +43,12 @@ pub struct ArrayStats { /// Constructed by calling [`ArrayStats::to_ref`]. pub struct StatsSetRef<'a> { // We need to reference back to the array - dyn_array_ref: &'a dyn DynArray, + dyn_array_ref: &'a ArrayRef, array_stats: &'a ArrayStats, } impl ArrayStats { - pub fn to_ref<'a>(&'a self, array: &'a dyn DynArray) -> StatsSetRef<'a> { + pub fn to_ref<'a>(&'a self, array: &'a ArrayRef) -> StatsSetRef<'a> { StatsSetRef { dyn_array_ref: array, array_stats: self, @@ -158,17 +158,20 @@ impl StatsSetRef<'_> { return Ok(Some(s)); } - let array_ref = self.dyn_array_ref.to_array(); Ok(match stat { - Stat::Min => min_max(&array_ref, &mut ctx)?.map(|MinMaxResult { min, max: _ }| min), - Stat::Max => min_max(&array_ref, &mut ctx)?.map(|MinMaxResult { min: _, max }| max), + Stat::Min => { + min_max(self.dyn_array_ref, &mut ctx)?.map(|MinMaxResult { min, max: _ }| min) + } + Stat::Max => { + min_max(self.dyn_array_ref, &mut ctx)?.map(|MinMaxResult { min: _, max }| max) + } Stat::Sum => { Stat::Sum .dtype(self.dyn_array_ref.dtype()) .is_some() .then(|| { // Sum is supported for this dtype. - sum(&array_ref, &mut ctx) + sum(self.dyn_array_ref, &mut ctx) }) .transpose()? } @@ -177,16 +180,16 @@ impl StatsSetRef<'_> { if self.dyn_array_ref.is_empty() { None } else { - Some(is_constant(&array_ref, &mut ctx)?.into()) + Some(is_constant(self.dyn_array_ref, &mut ctx)?.into()) } } - Stat::IsSorted => Some(is_sorted(&array_ref, &mut ctx)?.into()), - Stat::IsStrictSorted => Some(is_strict_sorted(&array_ref, &mut ctx)?.into()), + Stat::IsSorted => Some(is_sorted(self.dyn_array_ref, &mut ctx)?.into()), + Stat::IsStrictSorted => Some(is_strict_sorted(self.dyn_array_ref, &mut ctx)?.into()), Stat::UncompressedSizeInBytes => { let mut builder = builder_with_capacity(self.dyn_array_ref.dtype(), self.dyn_array_ref.len()); unsafe { - builder.extend_from_array_unchecked(&array_ref); + builder.extend_from_array_unchecked(self.dyn_array_ref); } let nbytes = builder.finish().nbytes(); self.set(stat, Precision::exact(nbytes)); @@ -198,7 +201,7 @@ impl StatsSetRef<'_> { .is_some() .then(|| { // NaNCount is supported for this dtype. - nan_count(&array_ref, &mut ctx) + nan_count(self.dyn_array_ref, &mut ctx) }) .transpose()? .map(|s| s.into()) diff --git a/vortex-array/src/stream/mod.rs b/vortex-array/src/stream/mod.rs index f2346cffcc3..1d44fc83380 100644 --- a/vortex-array/src/stream/mod.rs +++ b/vortex-array/src/stream/mod.rs @@ -10,7 +10,6 @@ use futures::stream; use vortex_error::VortexResult; use crate::ArrayRef; -use crate::DynArray; use crate::dtype::DType; mod adapter; @@ -32,7 +31,7 @@ impl ArrayStream for SendableArrayStream { } } -impl dyn DynArray + '_ { +impl ArrayRef { /// Create an [`ArrayStream`] over the array. pub fn to_array_stream(&self) -> impl ArrayStream + 'static { ArrayStreamAdapter::new(self.dtype().clone(), stream::iter(self.to_array_iterator())) diff --git a/vortex-array/src/validity.rs b/vortex-array/src/validity.rs index c25a7d6eb6b..08f0593381f 100644 --- a/vortex-array/src/validity.rs +++ b/vortex-array/src/validity.rs @@ -18,9 +18,9 @@ use vortex_mask::MaskValues; use crate::ArrayRef; use crate::Canonical; -use crate::DynArray; use crate::ExecutionCtx; use crate::IntoArray; +use crate::ToCanonical; use crate::arrays::BoolArray; use crate::arrays::ConstantArray; use crate::arrays::scalar_fn::ScalarFnArrayExt; @@ -54,7 +54,7 @@ impl Debug for Validity { Self::NonNullable => write!(f, "NonNullable"), Self::AllValid => write!(f, "AllValid"), Self::AllInvalid => write!(f, "AllInvalid"), - Self::Array(arr) => write!(f, "SomeValid({})", arr.as_ref().display_values()), + Self::Array(arr) => write!(f, "SomeValid({})", arr.display_values()), } } } @@ -168,7 +168,7 @@ impl Validity { }, Self::AllInvalid => Ok(Self::AllInvalid), Self::Array(is_valid) => { - let maybe_is_valid = is_valid.take(indices.to_array())?; + let maybe_is_valid = is_valid.take(indices.clone())?; // Null indices invalidate that position. let is_valid = maybe_is_valid.fill_null(Scalar::from(false))?; Ok(Self::Array(is_valid)) @@ -204,6 +204,17 @@ impl Validity { } } + /// Converts this validity into a [`Mask`] of the given length. + /// + /// Valid elements are `true` and invalid elements are `false`. + pub fn to_mask(&self, length: usize) -> Mask { + match self { + Self::NonNullable | Self::AllValid => Mask::new_true(length), + Self::AllInvalid => Mask::new_false(length), + Self::Array(a) => a.to_bool().to_mask(), + } + } + pub fn execute_mask(&self, length: usize, ctx: &mut ExecutionCtx) -> VortexResult { match self { Self::NonNullable | Self::AllValid => Ok(Mask::AllTrue(length)), @@ -295,7 +306,7 @@ impl Validity { Validity::NonNullable => BoolArray::from(BitBuffer::new_set(len)), Validity::AllValid => BoolArray::from(BitBuffer::new_set(len)), Validity::AllInvalid => BoolArray::from(BitBuffer::new_unset(len)), - Validity::Array(a) => a.clone().execute::(ctx)?, + Validity::Array(a) => a.execute::(ctx)?, }; let patch_values = match patches { @@ -308,7 +319,7 @@ impl Validity { let patches = Patches::new( len, indices_offset, - indices.to_array(), + indices.clone(), patch_values.into_array(), // TODO(0ax1): chunk offsets None, diff --git a/vortex-array/src/variants.rs b/vortex-array/src/variants.rs index ce6af05a2e5..1e6ef0bb4df 100644 --- a/vortex-array/src/variants.rs +++ b/vortex-array/src/variants.rs @@ -10,7 +10,7 @@ use vortex_error::vortex_bail; use vortex_error::vortex_panic; use vortex_mask::Mask; -use crate::DynArray; +use crate::ArrayRef; use crate::ExecutionCtx; use crate::LEGACY_SESSION; use crate::VortexSessionExecute; @@ -25,7 +25,7 @@ use crate::scalar::PValue; use crate::scalar::Scalar; use crate::search_sorted::IndexOrd; -impl dyn DynArray + '_ { +impl ArrayRef { /// Downcasts the array for null-specific behavior. pub fn as_null_typed(&self) -> NullTyped<'_> { matches!(self.dtype(), DType::Null) @@ -96,7 +96,7 @@ impl dyn DynArray + '_ { // Convert nulls to false first in case this can be done cheaply by the encoding. let array = self - .to_array() + .clone() .fill_null(Scalar::bool(false, self.dtype().nullability()))?; Ok(array.execute::(ctx)?.to_mask_fill_null_false()) @@ -104,14 +104,14 @@ impl dyn DynArray + '_ { } #[expect(dead_code)] -pub struct NullTyped<'a>(&'a dyn DynArray); +pub struct NullTyped<'a>(&'a ArrayRef); -pub struct BoolTyped<'a>(&'a dyn DynArray); +pub struct BoolTyped<'a>(&'a ArrayRef); impl BoolTyped<'_> { pub fn true_count(&self) -> VortexResult { let mut ctx = LEGACY_SESSION.create_execution_ctx(); - let true_count = sum(&self.0.to_array(), &mut ctx)?; + let true_count = sum(self.0, &mut ctx)?; Ok(true_count .as_primitive() .as_::() @@ -119,7 +119,7 @@ impl BoolTyped<'_> { } } -pub struct PrimitiveTyped<'a>(&'a dyn DynArray); +pub struct PrimitiveTyped<'a>(&'a ArrayRef); impl PrimitiveTyped<'_> { pub fn ptype(&self) -> PType { @@ -173,15 +173,15 @@ impl IndexOrd for PrimitiveTyped<'_> { } #[expect(dead_code)] -pub struct Utf8Typed<'a>(&'a dyn DynArray); +pub struct Utf8Typed<'a>(&'a ArrayRef); #[expect(dead_code)] -pub struct BinaryTyped<'a>(&'a dyn DynArray); +pub struct BinaryTyped<'a>(&'a ArrayRef); #[expect(dead_code)] -pub struct DecimalTyped<'a>(&'a dyn DynArray); +pub struct DecimalTyped<'a>(&'a ArrayRef); -pub struct StructTyped<'a>(&'a dyn DynArray); +pub struct StructTyped<'a>(&'a ArrayRef); impl StructTyped<'_> { pub fn names(&self) -> &FieldNames { @@ -204,9 +204,9 @@ impl StructTyped<'_> { } #[expect(dead_code)] -pub struct ListTyped<'a>(&'a dyn DynArray); +pub struct ListTyped<'a>(&'a ArrayRef); -pub struct ExtensionTyped<'a>(&'a dyn DynArray); +pub struct ExtensionTyped<'a>(&'a ArrayRef); impl ExtensionTyped<'_> { /// Returns the extension logical [`DType`]. diff --git a/vortex-array/src/vtable/typed.rs b/vortex-array/src/vtable/typed.rs deleted file mode 100644 index 4bba86291bb..00000000000 --- a/vortex-array/src/vtable/typed.rs +++ /dev/null @@ -1,156 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// SPDX-FileCopyrightText: Copyright the Vortex contributors - -//! Typed array wrapper [`Array`] that pairs a [`VTable`] with common fields and inner data. - -use std::fmt::Debug; -use std::fmt::Formatter; -use std::ops::Deref; -use std::sync::Arc; - -use crate::ArrayRef; -use crate::IntoArray; -use crate::dtype::DType; -use crate::stats::ArrayStats; -use crate::stats::StatsSetRef; -use crate::vtable::ArrayId; -use crate::vtable::VTable; - -/// A typed array, parameterized by a concrete [`VTable`]. -/// -/// This struct holds the vtable instance, common fields (dtype, len, stats), and the -/// encoding-specific data (`V::Array`). It implements [`Deref`] to `V::Array`, so -/// encoding-specific methods are callable directly on `&Array`. -/// -/// Construct via encoding-specific constructors and type-erase with -/// [`into_array()`](IntoArray::into_array). -pub struct Array { - vtable: V, - pub(crate) dtype: DType, - pub(crate) len: usize, - pub(crate) array: V::Array, - pub(crate) stats: ArrayStats, -} - -#[allow(clippy::same_name_method)] -impl Array { - /// Create a new typed array without validating that the inner array's dtype/len match. - /// - /// # Safety - /// - /// The caller must ensure that `V::dtype(&array) == &dtype` and `V::len(&array) == len`. - pub unsafe fn new_unchecked( - vtable: V, - dtype: DType, - len: usize, - array: V::Array, - stats: ArrayStats, - ) -> Self { - Self { - vtable, - dtype, - len, - array, - stats, - } - } - - /// Returns a reference to the vtable. - pub fn typed_vtable(&self) -> &V { - &self.vtable - } - - /// Returns the dtype of this array. - pub fn dtype(&self) -> &DType { - &self.dtype - } - - /// Returns the length of this array. - pub fn len(&self) -> usize { - self.len - } - - /// Returns whether this array is empty. - pub fn is_empty(&self) -> bool { - self.len == 0 - } - - /// Returns the encoding ID of this array. - pub fn encoding_id(&self) -> ArrayId { - self.vtable.id() - } - - /// Returns the statistics for this array. - pub fn statistics(&self) -> StatsSetRef<'_> { - self.stats.to_ref(self) - } - - /// Returns a reference to the underlying [`ArrayStats`]. - pub fn array_stats(&self) -> &ArrayStats { - &self.stats - } - - /// Returns a reference to the inner encoding-specific array data. - pub fn inner(&self) -> &V::Array { - &self.array - } - - /// Consumes this array and returns the inner encoding-specific data. - pub fn into_inner(self) -> V::Array { - self.array - } - - /// Returns a cloned [`ArrayRef`] for this array. - pub fn to_array_ref(&self) -> ArrayRef { - Arc::new(self.clone()) - } -} - -impl Deref for Array { - type Target = V::Array; - - fn deref(&self) -> &V::Array { - &self.array - } -} - -impl Clone for Array { - fn clone(&self) -> Self { - Self { - vtable: self.vtable.clone(), - dtype: self.dtype.clone(), - len: self.len, - array: self.array.clone(), - stats: self.stats.clone(), - } - } -} - -impl Debug for Array { - fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { - f.debug_struct("Array") - .field("encoding", &self.vtable.id()) - .field("dtype", &self.dtype) - .field("len", &self.len) - .field("inner", &self.array) - .finish() - } -} - -impl IntoArray for Array { - fn into_array(self) -> ArrayRef { - Arc::new(self) - } -} - -impl IntoArray for Arc> { - fn into_array(self) -> ArrayRef { - self - } -} - -impl From> for ArrayRef { - fn from(value: Array) -> ArrayRef { - value.into_array() - } -} diff --git a/vortex-bench/src/conversions.rs b/vortex-bench/src/conversions.rs index 1ab3c1e7f20..3f21ab30ba0 100644 --- a/vortex-bench/src/conversions.rs +++ b/vortex-bench/src/conversions.rs @@ -19,6 +19,7 @@ use tracing::info; use tracing::trace; use vortex::VortexSessionDefault; use vortex::array::ArrayRef; +use vortex::array::IntoArray; use vortex::array::VortexSessionExecute; use vortex::array::arrays::ChunkedArray; use vortex::array::arrow::FromArrowArray; @@ -214,7 +215,7 @@ pub async fn write_parquet_as_vortex( let data = parquet_to_vortex_chunks(parquet_path).await?; let write_options = compaction.apply_options(SESSION.write_options()); write_options - .write(&mut output_file, data.to_array_stream()) + .write(&mut output_file, data.into_array().to_array_stream()) .await?; output_file.flush().await?; Ok(()) diff --git a/vortex-bench/src/datasets/struct_list_of_ints.rs b/vortex-bench/src/datasets/struct_list_of_ints.rs index 650a04a0b20..021ad215e52 100644 --- a/vortex-bench/src/datasets/struct_list_of_ints.rs +++ b/vortex-bench/src/datasets/struct_list_of_ints.rs @@ -122,7 +122,7 @@ impl Dataset for StructListOfInts { for chunk in chunked.iter_chunks() { let converted = recursive_list_from_list_view(chunk.clone())?; - let batch = RecordBatch::try_from(converted.as_ref())?; + let batch = RecordBatch::try_from(&converted)?; if writer.is_none() { writer = Some(ArrowWriter::try_new( diff --git a/vortex-bench/src/datasets/taxi_data.rs b/vortex-bench/src/datasets/taxi_data.rs index 133f7c55586..cc3c6f61b81 100644 --- a/vortex-bench/src/datasets/taxi_data.rs +++ b/vortex-bench/src/datasets/taxi_data.rs @@ -8,6 +8,7 @@ use async_trait::async_trait; use tokio::fs::File as TokioFile; use tokio::io::AsyncWriteExt; use vortex::array::ArrayRef; +use vortex::array::IntoArray; use vortex::array::stream::ArrayStreamExt; use vortex::file::OpenOptionsSessionExt; use vortex::file::WriteOptionsSessionExt; @@ -93,7 +94,7 @@ pub async fn taxi_data_vortex() -> Result { SESSION .write_options() - .write(&mut output_file, data.to_array_stream()) + .write(&mut output_file, data.into_array().to_array_stream()) .await?; output_file.flush().await?; Ok(buf) @@ -112,7 +113,7 @@ pub async fn taxi_data_vortex_compact() -> Result { let data = parquet_to_vortex_chunks(taxi_data_parquet().await?).await?; write_options - .write(&mut output_file, data.to_array_stream()) + .write(&mut output_file, data.into_array().to_array_stream()) .await?; output_file.flush().await?; diff --git a/vortex-bench/src/datasets/tpch_l_comment.rs b/vortex-bench/src/datasets/tpch_l_comment.rs index 44411c7e7f8..00a141f03ba 100644 --- a/vortex-bench/src/datasets/tpch_l_comment.rs +++ b/vortex-bench/src/datasets/tpch_l_comment.rs @@ -8,7 +8,6 @@ use async_trait::async_trait; use futures::TryStreamExt; use glob::glob; use vortex::array::ArrayRef; -use vortex::array::DynArray; use vortex::array::IntoArray; use vortex::array::ToCanonical; use vortex::array::arrays::ChunkedArray; diff --git a/vortex-bench/src/downloadable_dataset.rs b/vortex-bench/src/downloadable_dataset.rs index 7aa140ec1b2..78ab162d688 100644 --- a/vortex-bench/src/downloadable_dataset.rs +++ b/vortex-bench/src/downloadable_dataset.rs @@ -4,6 +4,7 @@ use async_trait::async_trait; use tokio::fs::File; use vortex::array::ArrayRef; +use vortex::array::IntoArray; use vortex::array::stream::ArrayStreamExt; use vortex::file::OpenOptionsSessionExt; use vortex::file::WriteOptionsSessionExt; @@ -69,7 +70,7 @@ impl Dataset for DownloadableDataset { &mut File::create(path) .await .map_err(|e| anyhow::anyhow!("Failed to create file: {}", e))?, - data.to_array_stream(), + data.into_array().to_array_stream(), ) .await .map_err(|e| anyhow::anyhow!("Failed to write vortex file: {}", e))?; diff --git a/vortex-bench/src/public_bi.rs b/vortex-bench/src/public_bi.rs index 0539266ed0d..3602cd2cd33 100644 --- a/vortex-bench/src/public_bi.rs +++ b/vortex-bench/src/public_bi.rs @@ -26,6 +26,7 @@ use tracing::info; use tracing::trace; use url::Url; use vortex::array::ArrayRef; +use vortex::array::IntoArray; use vortex::array::stream::ArrayStreamExt; use vortex::error::VortexResult; use vortex::error::vortex_err; @@ -371,7 +372,7 @@ impl PBIData { &mut File::create(output_path) .await .map_err(|e| anyhow::anyhow!("Failed to create file: {}", e))?, - data.to_array_stream(), + data.into_array().to_array_stream(), ) .await .map_err(|e| anyhow::anyhow!("Failed to write vortex file: {}", e))?; diff --git a/vortex-bench/src/random_access/take.rs b/vortex-bench/src/random_access/take.rs index b23d6622876..4ff1884f1e5 100644 --- a/vortex-bench/src/random_access/take.rs +++ b/vortex-bench/src/random_access/take.rs @@ -18,7 +18,6 @@ use parquet::file::metadata::PageIndexPolicy; use stream::StreamExt; use tokio::fs::File; use vortex::array::Canonical; -use vortex::array::DynArray; use vortex::array::IntoArray; use vortex::array::VortexSessionExecute; use vortex::array::stream::ArrayStreamExt; diff --git a/vortex-btrblocks/public-api.lock b/vortex-btrblocks/public-api.lock index eb9643db354..37410874777 100644 --- a/vortex-btrblocks/public-api.lock +++ b/vortex-btrblocks/public-api.lock @@ -60,7 +60,7 @@ impl core::marker::StructuralPartialEq for vortex_btrblocks::schemes::decimal::D impl vortex_compressor::scheme::Scheme for vortex_btrblocks::schemes::decimal::DecimalScheme -pub fn vortex_btrblocks::schemes::decimal::DecimalScheme::compress(&self, compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_btrblocks::schemes::decimal::DecimalScheme::compress(&self, compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_btrblocks::schemes::decimal::DecimalScheme::expected_compression_ratio(&self, _compressor: &vortex_compressor::compressor::CascadingCompressor, _data: &mut vortex_compressor::stats::cache::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult @@ -102,7 +102,7 @@ impl core::marker::StructuralPartialEq for vortex_btrblocks::schemes::float::ALP impl vortex_compressor::scheme::Scheme for vortex_btrblocks::schemes::float::ALPRDScheme -pub fn vortex_btrblocks::schemes::float::ALPRDScheme::compress(&self, _compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_btrblocks::schemes::float::ALPRDScheme::compress(&self, _compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_btrblocks::schemes::float::ALPRDScheme::expected_compression_ratio(&self, compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult @@ -132,7 +132,7 @@ impl core::marker::StructuralPartialEq for vortex_btrblocks::schemes::float::ALP impl vortex_compressor::scheme::Scheme for vortex_btrblocks::schemes::float::ALPScheme -pub fn vortex_btrblocks::schemes::float::ALPScheme::compress(&self, compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_btrblocks::schemes::float::ALPScheme::compress(&self, compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_btrblocks::schemes::float::ALPScheme::expected_compression_ratio(&self, compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult @@ -164,7 +164,7 @@ impl core::marker::StructuralPartialEq for vortex_btrblocks::schemes::float::Nul impl vortex_compressor::scheme::Scheme for vortex_btrblocks::schemes::float::NullDominatedSparseScheme -pub fn vortex_btrblocks::schemes::float::NullDominatedSparseScheme::compress(&self, compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_btrblocks::schemes::float::NullDominatedSparseScheme::compress(&self, compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_btrblocks::schemes::float::NullDominatedSparseScheme::descendant_exclusions(&self) -> alloc::vec::Vec @@ -198,7 +198,7 @@ impl core::marker::StructuralPartialEq for vortex_btrblocks::schemes::float::Pco impl vortex_compressor::scheme::Scheme for vortex_btrblocks::schemes::float::PcoScheme -pub fn vortex_btrblocks::schemes::float::PcoScheme::compress(&self, _compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_btrblocks::schemes::float::PcoScheme::compress(&self, _compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_btrblocks::schemes::float::PcoScheme::matches(&self, canonical: &vortex_array::canonical::Canonical) -> bool @@ -238,7 +238,7 @@ impl core::marker::StructuralPartialEq for vortex_btrblocks::schemes::integer::B impl vortex_compressor::scheme::Scheme for vortex_btrblocks::schemes::integer::BitPackingScheme -pub fn vortex_btrblocks::schemes::integer::BitPackingScheme::compress(&self, _compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_btrblocks::schemes::integer::BitPackingScheme::compress(&self, _compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_btrblocks::schemes::integer::BitPackingScheme::expected_compression_ratio(&self, compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult @@ -270,7 +270,7 @@ impl vortex_compressor::scheme::Scheme for vortex_btrblocks::schemes::integer::F pub fn vortex_btrblocks::schemes::integer::FoRScheme::ancestor_exclusions(&self) -> alloc::vec::Vec -pub fn vortex_btrblocks::schemes::integer::FoRScheme::compress(&self, compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_btrblocks::schemes::integer::FoRScheme::compress(&self, compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_btrblocks::schemes::integer::FoRScheme::expected_compression_ratio(&self, _compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult @@ -300,7 +300,7 @@ impl core::marker::StructuralPartialEq for vortex_btrblocks::schemes::integer::P impl vortex_compressor::scheme::Scheme for vortex_btrblocks::schemes::integer::PcoScheme -pub fn vortex_btrblocks::schemes::integer::PcoScheme::compress(&self, _compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_btrblocks::schemes::integer::PcoScheme::compress(&self, _compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_btrblocks::schemes::integer::PcoScheme::expected_compression_ratio(&self, compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult @@ -332,7 +332,7 @@ impl vortex_compressor::scheme::Scheme for vortex_btrblocks::schemes::integer::R pub fn vortex_btrblocks::schemes::integer::RunEndScheme::ancestor_exclusions(&self) -> alloc::vec::Vec -pub fn vortex_btrblocks::schemes::integer::RunEndScheme::compress(&self, compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_btrblocks::schemes::integer::RunEndScheme::compress(&self, compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_btrblocks::schemes::integer::RunEndScheme::descendant_exclusions(&self) -> alloc::vec::Vec @@ -368,7 +368,7 @@ impl vortex_compressor::scheme::Scheme for vortex_btrblocks::schemes::integer::S pub fn vortex_btrblocks::schemes::integer::SequenceScheme::ancestor_exclusions(&self) -> alloc::vec::Vec -pub fn vortex_btrblocks::schemes::integer::SequenceScheme::compress(&self, _compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_btrblocks::schemes::integer::SequenceScheme::compress(&self, _compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_btrblocks::schemes::integer::SequenceScheme::expected_compression_ratio(&self, _compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult @@ -398,7 +398,7 @@ impl core::marker::StructuralPartialEq for vortex_btrblocks::schemes::integer::S impl vortex_compressor::scheme::Scheme for vortex_btrblocks::schemes::integer::SparseScheme -pub fn vortex_btrblocks::schemes::integer::SparseScheme::compress(&self, compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_btrblocks::schemes::integer::SparseScheme::compress(&self, compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_btrblocks::schemes::integer::SparseScheme::descendant_exclusions(&self) -> alloc::vec::Vec @@ -436,7 +436,7 @@ impl vortex_compressor::scheme::Scheme for vortex_btrblocks::schemes::integer::Z pub fn vortex_btrblocks::schemes::integer::ZigZagScheme::ancestor_exclusions(&self) -> alloc::vec::Vec -pub fn vortex_btrblocks::schemes::integer::ZigZagScheme::compress(&self, compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_btrblocks::schemes::integer::ZigZagScheme::compress(&self, compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_btrblocks::schemes::integer::ZigZagScheme::descendant_exclusions(&self) -> alloc::vec::Vec @@ -482,7 +482,7 @@ impl core::marker::StructuralPartialEq for vortex_btrblocks::schemes::string::FS impl vortex_compressor::scheme::Scheme for vortex_btrblocks::schemes::string::FSSTScheme -pub fn vortex_btrblocks::schemes::string::FSSTScheme::compress(&self, compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_btrblocks::schemes::string::FSSTScheme::compress(&self, compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_btrblocks::schemes::string::FSSTScheme::matches(&self, canonical: &vortex_array::canonical::Canonical) -> bool @@ -512,7 +512,7 @@ impl core::marker::StructuralPartialEq for vortex_btrblocks::schemes::string::Nu impl vortex_compressor::scheme::Scheme for vortex_btrblocks::schemes::string::NullDominatedSparseScheme -pub fn vortex_btrblocks::schemes::string::NullDominatedSparseScheme::compress(&self, compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_btrblocks::schemes::string::NullDominatedSparseScheme::compress(&self, compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_btrblocks::schemes::string::NullDominatedSparseScheme::descendant_exclusions(&self) -> alloc::vec::Vec @@ -546,7 +546,7 @@ impl core::marker::StructuralPartialEq for vortex_btrblocks::schemes::string::Zs impl vortex_compressor::scheme::Scheme for vortex_btrblocks::schemes::string::ZstdScheme -pub fn vortex_btrblocks::schemes::string::ZstdScheme::compress(&self, _compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_btrblocks::schemes::string::ZstdScheme::compress(&self, _compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_btrblocks::schemes::string::ZstdScheme::matches(&self, canonical: &vortex_array::canonical::Canonical) -> bool @@ -576,7 +576,7 @@ impl core::marker::StructuralPartialEq for vortex_btrblocks::schemes::temporal:: impl vortex_compressor::scheme::Scheme for vortex_btrblocks::schemes::temporal::TemporalScheme -pub fn vortex_btrblocks::schemes::temporal::TemporalScheme::compress(&self, compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_btrblocks::schemes::temporal::TemporalScheme::compress(&self, compressor: &vortex_compressor::compressor::CascadingCompressor, data: &mut vortex_compressor::stats::cache::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_btrblocks::schemes::temporal::TemporalScheme::detects_constant(&self) -> bool @@ -592,7 +592,7 @@ pub struct vortex_btrblocks::BtrBlocksCompressor(pub vortex_compressor::compress impl vortex_btrblocks::BtrBlocksCompressor -pub fn vortex_btrblocks::BtrBlocksCompressor::compress(&self, array: &vortex_array::array::ArrayRef) -> vortex_error::VortexResult +pub fn vortex_btrblocks::BtrBlocksCompressor::compress(&self, array: &vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult impl core::clone::Clone for vortex_btrblocks::BtrBlocksCompressor diff --git a/vortex-btrblocks/src/canonical_compressor.rs b/vortex-btrblocks/src/canonical_compressor.rs index 70a005cdbd4..19e737d6060 100644 --- a/vortex-btrblocks/src/canonical_compressor.rs +++ b/vortex-btrblocks/src/canonical_compressor.rs @@ -60,7 +60,6 @@ impl Default for BtrBlocksCompressor { #[cfg(test)] mod tests { use rstest::rstest; - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::arrays::BoolArray; use vortex_array::arrays::Constant; diff --git a/vortex-btrblocks/src/lib.rs b/vortex-btrblocks/src/lib.rs index 1ae23251a1c..eac32412e4a 100644 --- a/vortex-btrblocks/src/lib.rs +++ b/vortex-btrblocks/src/lib.rs @@ -42,7 +42,6 @@ //! ```rust //! use vortex_btrblocks::{BtrBlocksCompressor, BtrBlocksCompressorBuilder, Scheme, SchemeExt}; //! use vortex_btrblocks::schemes::integer::IntDictScheme; -//! use vortex_array::DynArray; //! //! // Default compressor with all schemes enabled. //! let compressor = BtrBlocksCompressor::default(); diff --git a/vortex-btrblocks/src/schemes/decimal.rs b/vortex-btrblocks/src/schemes/decimal.rs index 8fd21aa75cd..bcf59c13db7 100644 --- a/vortex-btrblocks/src/schemes/decimal.rs +++ b/vortex-btrblocks/src/schemes/decimal.rs @@ -10,7 +10,7 @@ use vortex_array::ToCanonical; use vortex_array::arrays::PrimitiveArray; use vortex_array::arrays::decimal::narrowed_decimal; use vortex_array::dtype::DecimalType; -use vortex_decimal_byte_parts::DecimalBytePartsArray; +use vortex_decimal_byte_parts::DecimalByteParts; use vortex_error::VortexResult; use crate::ArrayAndStats; @@ -22,7 +22,7 @@ use crate::SchemeExt; /// Compression scheme for decimal arrays via byte-part decomposition. /// /// Narrows the decimal to the smallest integer type, compresses the underlying primitive, and wraps -/// the result in a [`DecimalBytePartsArray`]. +/// the result in a `DecimalBytePartsArray`. #[derive(Debug, Copy, Clone, PartialEq, Eq)] pub struct DecimalScheme; @@ -71,6 +71,6 @@ impl Scheme for DecimalScheme { let compressed = compressor.compress_child(&prim.into_array(), &ctx, self.id(), 0)?; - DecimalBytePartsArray::try_new(compressed, decimal.decimal_dtype()).map(|d| d.into_array()) + DecimalByteParts::try_new(compressed, decimal.decimal_dtype()).map(|d| d.into_array()) } } diff --git a/vortex-btrblocks/src/schemes/float.rs b/vortex-btrblocks/src/schemes/float.rs index 0f5622cea3f..b995f0827c5 100644 --- a/vortex-btrblocks/src/schemes/float.rs +++ b/vortex-btrblocks/src/schemes/float.rs @@ -3,9 +3,10 @@ //! Float compression schemes. -use vortex_alp::ALPArray; +use vortex_alp::ALP; use vortex_alp::RDEncoder; use vortex_alp::alp_encode; +use vortex_array::Array; use vortex_array::ArrayRef; use vortex_array::Canonical; use vortex_array::IntoArray; @@ -16,7 +17,6 @@ use vortex_compressor::scheme::DescendantExclusion; use vortex_error::VortexResult; use vortex_error::vortex_panic; use vortex_sparse::Sparse; -use vortex_sparse::SparseArray; use super::integer::SparseScheme as IntSparseScheme; use crate::ArrayAndStats; @@ -96,7 +96,7 @@ impl Scheme for ALPScheme { ) -> VortexResult { let stats = data.float_stats(); - let alp_encoded = alp_encode(&stats.source().to_primitive(), None)?; + let alp_encoded = alp_encode(stats.source(), None)?; // Compress the ALP ints. let compressed_alp_ints = @@ -106,7 +106,7 @@ impl Scheme for ALPScheme { // to keep them linear for easy indexing. let patches = alp_encoded.patches().map(compress_patches).transpose()?; - Ok(ALPArray::new(compressed_alp_ints, alp_encoded.exponents(), patches).into_array()) + Ok(ALP::new(compressed_alp_ints, alp_encoded.exponents(), patches).into_array()) } } @@ -146,15 +146,16 @@ impl Scheme for ALPRDScheme { ptype => vortex_panic!("cannot ALPRD compress ptype {ptype}"), }; - let mut alp_rd = encoder.encode(stats.source()); + let alp_rd = encoder.encode(stats.source()); + let mut alp_rd_data = alp_rd.into_data(); - let patches = alp_rd + let patches = alp_rd_data .left_parts_patches() .map(compress_patches) .transpose()?; - alp_rd.replace_left_parts_patches(patches); + alp_rd_data.replace_left_parts_patches(patches); - Ok(alp_rd.into_array()) + Ok(Array::::try_from_data(alp_rd_data)?.into_array()) } } @@ -211,14 +212,14 @@ impl Scheme for NullDominatedSparseScheme { let stats = data.float_stats(); // We pass None as we only run this pathway for NULL-dominated float arrays. - let sparse_encoded = SparseArray::encode(&stats.source().clone().into_array(), None)?; + let sparse_encoded = Sparse::encode(&stats.source().clone().into_array(), None)?; if let Some(sparse) = sparse_encoded.as_opt::() { let indices = sparse.patches().indices().to_primitive().narrow()?; let compressed_indices = compressor.compress_child(&indices.into_array(), &ctx, self.id(), 0)?; - SparseArray::try_new( + Sparse::try_new( compressed_indices, sparse.patches().values().clone(), sparse.len(), @@ -248,12 +249,10 @@ impl Scheme for PcoScheme { _ctx: CompressorContext, ) -> VortexResult { let stats = data.float_stats(); - Ok(vortex_pco::PcoArray::from_primitive( - stats.source(), - pco::DEFAULT_COMPRESSION_LEVEL, - 8192, - )? - .into_array()) + Ok( + vortex_pco::Pco::from_primitive(stats.source(), pco::DEFAULT_COMPRESSION_LEVEL, 8192)? + .into_array(), + ) } } @@ -261,7 +260,6 @@ impl Scheme for PcoScheme { mod tests { use std::iter; - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::assert_arrays_eq; @@ -324,7 +322,7 @@ mod tests { assert!(compressed.is::()); let expected = Buffer::copy_from(&values).into_array(); - assert_arrays_eq!(compressed.as_ref(), expected.as_ref()); + assert_arrays_eq!(compressed, expected); Ok(()) } @@ -358,7 +356,6 @@ mod tests { #[cfg(test)] mod scheme_selection_tests { use vortex_alp::ALP; - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::arrays::Constant; use vortex_array::arrays::Dict; diff --git a/vortex-btrblocks/src/schemes/integer.rs b/vortex-btrblocks/src/schemes/integer.rs index e3eb7b7649b..c6b4f3fee56 100644 --- a/vortex-btrblocks/src/schemes/integer.rs +++ b/vortex-btrblocks/src/schemes/integer.rs @@ -3,6 +3,7 @@ //! Integer compression schemes. +use vortex_array::Array; use vortex_array::ArrayRef; use vortex_array::Canonical; use vortex_array::IntoArray; @@ -18,16 +19,15 @@ use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_error::vortex_bail; use vortex_error::vortex_err; -use vortex_fastlanes::FoRArray; +use vortex_fastlanes::FoR; use vortex_fastlanes::bitpack_compress::bit_width_histogram; use vortex_fastlanes::bitpack_compress::bitpack_encode; use vortex_fastlanes::bitpack_compress::find_best_bit_width; -use vortex_runend::RunEndArray; +use vortex_runend::RunEnd; use vortex_runend::compress::runend_encode; use vortex_sequence::sequence_encode; use vortex_sparse::Sparse; -use vortex_sparse::SparseArray; -use vortex_zigzag::ZigZagArray; +use vortex_zigzag::ZigZag; use vortex_zigzag::zigzag_encode; use crate::ArrayAndStats; @@ -169,7 +169,7 @@ impl Scheme for FoRScheme { ctx: CompressorContext, ) -> VortexResult { let primitive = data.array().to_primitive(); - let for_array = FoRArray::encode(primitive)?; + let for_array = FoR::encode(primitive)?; let biased = for_array.encoded().to_primitive(); // Immediately bitpack. If any other scheme was preferable, it would be chosen instead @@ -181,7 +181,7 @@ impl Scheme for FoRScheme { let compressed = BitPackingScheme.compress(compressor, &mut biased_data, leaf_ctx)?; // TODO(connor): This should really be `new_unchecked`. - let for_compressed = FoRArray::try_new(compressed, for_array.reference_scalar().clone())?; + let for_compressed = FoR::try_new(compressed, for_array.reference_scalar().clone())?; for_compressed .as_ref() .statistics() @@ -287,7 +287,7 @@ impl Scheme for ZigZagScheme { tracing::debug!("zigzag output: {}", compressed.encoding_id()); - Ok(ZigZagArray::try_new(compressed)?.into_array()) + Ok(ZigZag::try_new(compressed)?.into_array()) } } @@ -335,12 +335,13 @@ impl Scheme for BitPackingScheme { if bw as usize == stats.source().ptype().bit_width() { return Ok(stats.source().clone().into_array()); } - let mut packed = bitpack_encode(stats.source(), bw, Some(&histogram))?; + let packed = bitpack_encode(stats.source(), bw, Some(&histogram))?; + let mut packed_data = packed.into_data(); - let patches = packed.patches().map(compress_patches).transpose()?; - packed.replace_patches(patches); + let patches = packed_data.patches().map(compress_patches).transpose()?; + packed_data.replace_patches(patches); - Ok(packed.into_array()) + Ok(Array::::try_from_data(packed_data)?.into_array()) } } @@ -454,7 +455,7 @@ impl Scheme for SparseScheme { .into_array()); } - let sparse_encoded = SparseArray::encode( + let sparse_encoded = Sparse::encode( &stats.source().clone().into_array(), Some(Scalar::primitive_value( top_pvalue, @@ -476,7 +477,7 @@ impl Scheme for SparseScheme { let compressed_indices = compressor.compress_child(&indices.into_array(), &ctx, self.id(), 1)?; - SparseArray::try_new( + Sparse::try_new( compressed_indices, compressed_values, sparse.len(), @@ -571,23 +572,19 @@ impl Scheme for RunEndScheme { let stats = data.integer_stats(); // Run-end encode the ends. - let (ends, values) = runend_encode(stats.source()); + let (ends, values) = runend_encode(stats.source().as_view()); let compressed_values = compressor.compress_child(&values.to_primitive().into_array(), &ctx, self.id(), 0)?; - let compressed_ends = - compressor.compress_child(&ends.to_primitive().into_array(), &ctx, self.id(), 1)?; + let compressed_ends = compressor.compress_child(&ends.into_array(), &ctx, self.id(), 1)?; // SAFETY: compression doesn't affect invariants. unsafe { - Ok(RunEndArray::new_unchecked( - compressed_ends, - compressed_values, - 0, - stats.source().len(), + Ok( + RunEnd::new_unchecked(compressed_ends, compressed_values, 0, stats.source().len()) + .into_array(), ) - .into_array()) } } } @@ -706,12 +703,10 @@ impl Scheme for PcoScheme { ) -> VortexResult { let stats = data.integer_stats(); - Ok(vortex_pco::PcoArray::from_primitive( - stats.source(), - pco::DEFAULT_COMPRESSION_LEVEL, - 8192, - )? - .into_array()) + Ok( + vortex_pco::Pco::from_primitive(stats.source(), pco::DEFAULT_COMPRESSION_LEVEL, 8192)? + .into_array(), + ) } } @@ -723,7 +718,6 @@ mod tests { use rand::Rng; use rand::SeedableRng; use rand::rngs::StdRng; - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::arrays::Dict; use vortex_array::arrays::PrimitiveArray; @@ -786,17 +780,16 @@ mod tests { false, false, false, false, false, false, false, false, false, false, true, ]), ); - let validity = array.validity(); let btr = BtrBlocksCompressor::default(); let compressed = btr.compress(&array.into_array())?; assert!(compressed.is::()); - let decoded = compressed.clone(); + let decoded = compressed; let expected = PrimitiveArray::new(buffer![0u8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46], validity).into_array(); - assert_arrays_eq!(decoded.as_ref(), expected.as_ref()); + assert_arrays_eq!(decoded, expected); Ok(()) } @@ -811,7 +804,7 @@ mod tests { let decoded = compressed; let expected = PrimitiveArray::from_option_iter(values.into_iter().map(Some)).into_array(); - assert_arrays_eq!(decoded.as_ref(), expected.as_ref()); + assert_arrays_eq!(decoded, expected); Ok(()) } @@ -828,7 +821,7 @@ mod tests { assert!(compressed.is::()); let expected = Buffer::copy_from(&values).into_array(); - assert_arrays_eq!(compressed.as_ref(), expected.as_ref()); + assert_arrays_eq!(compressed, expected); Ok(()) } diff --git a/vortex-btrblocks/src/schemes/patches.rs b/vortex-btrblocks/src/schemes/patches.rs index 38ec1cf9068..0083918ff98 100644 --- a/vortex-btrblocks/src/schemes/patches.rs +++ b/vortex-btrblocks/src/schemes/patches.rs @@ -2,7 +2,6 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::ToCanonical; use vortex_array::arrays::ConstantArray; diff --git a/vortex-btrblocks/src/schemes/rle.rs b/vortex-btrblocks/src/schemes/rle.rs index 8a34f21e532..4da83209f39 100644 --- a/vortex-btrblocks/src/schemes/rle.rs +++ b/vortex-btrblocks/src/schemes/rle.rs @@ -21,7 +21,7 @@ use vortex_compressor::scheme::SchemeId; use vortex_compressor::stats::FloatStats; use vortex_compressor::stats::IntegerStats; use vortex_error::VortexResult; -use vortex_fastlanes::RLEArray; +use vortex_fastlanes::RLE; use crate::ArrayAndStats; use crate::CascadingCompressor; @@ -237,7 +237,7 @@ impl Scheme for RLEScheme { ) -> VortexResult { let array = data.array().clone(); let stats = data.get_or_insert_with::(|| C::generate_stats(&array)); - let rle_array = RLEArray::encode(RLEStats::source(stats))?; + let rle_array = RLE::encode(RLEStats::source(stats))?; let compressed_values = compressor.compress_child( &rle_array.values().to_primitive().into_array(), @@ -277,7 +277,7 @@ impl Scheme for RLEScheme { // SAFETY: Recursive compression doesn't affect the invariants. unsafe { - Ok(RLEArray::new_unchecked( + Ok(RLE::new_unchecked( compressed_values, compressed_indices, compressed_offsets, @@ -306,6 +306,6 @@ fn try_compress_delta( let compressed_deltas = compressor.compress_child(&deltas.into_array(), parent_ctx, parent_id, child_index)?; - vortex_fastlanes::DeltaArray::try_new(compressed_bases, compressed_deltas, 0, child.len()) - .map(vortex_fastlanes::DeltaArray::into_array) + vortex_fastlanes::DeltaData::try_new(compressed_bases, compressed_deltas, 0, child.len()) + .map(IntoArray::into_array) } diff --git a/vortex-btrblocks/src/schemes/string.rs b/vortex-btrblocks/src/schemes/string.rs index fbcb771e9b5..06ba6d03314 100644 --- a/vortex-btrblocks/src/schemes/string.rs +++ b/vortex-btrblocks/src/schemes/string.rs @@ -11,11 +11,10 @@ use vortex_array::arrays::VarBinArray; use vortex_compressor::scheme::ChildSelection; use vortex_compressor::scheme::DescendantExclusion; use vortex_error::VortexResult; -use vortex_fsst::FSSTArray; +use vortex_fsst::FSST; use vortex_fsst::fsst_compress; use vortex_fsst::fsst_train_compressor; use vortex_sparse::Sparse; -use vortex_sparse::SparseArray; use super::integer::IntDictScheme; use super::integer::SparseScheme as IntSparseScheme; @@ -75,7 +74,12 @@ impl Scheme for FSSTScheme { let fsst = { let compressor_fsst = fsst_train_compressor(stats.source()); - fsst_compress(stats.source(), &compressor_fsst) + fsst_compress( + stats.source(), + stats.source().len(), + stats.source().dtype(), + &compressor_fsst, + ) }; let compressed_original_lengths = compressor.compress_child( @@ -102,7 +106,7 @@ impl Scheme for FSSTScheme { fsst.codes().validity(), )?; - let fsst = FSSTArray::try_new( + let fsst = FSST::try_new( fsst.dtype().clone(), fsst.symbols().clone(), fsst.symbol_lengths().clone(), @@ -173,7 +177,7 @@ impl Scheme for NullDominatedSparseScheme { let stats = data.string_stats(); // We pass None as we only run this pathway for NULL-dominated string arrays. - let sparse_encoded = SparseArray::encode(&stats.source().clone().into_array(), None)?; + let sparse_encoded = Sparse::encode(&stats.source().clone().into_array(), None)?; if let Some(sparse) = sparse_encoded.as_opt::() { // Compress the indices only (not the values for strings). @@ -181,7 +185,7 @@ impl Scheme for NullDominatedSparseScheme { let compressed_indices = compressor.compress_child(&indices.into_array(), &ctx, self.id(), 0)?; - SparseArray::try_new( + Sparse::try_new( compressed_indices, sparse.patches().values().clone(), sparse.len(), @@ -213,10 +217,7 @@ impl Scheme for ZstdScheme { let stats = data.string_stats(); let compacted = stats.source().compact_buffers()?; - Ok( - vortex_zstd::ZstdArray::from_var_bin_view_without_dict(&compacted, 3, 8192)? - .into_array(), - ) + Ok(vortex_zstd::Zstd::from_var_bin_view_without_dict(&compacted, 3, 8192)?.into_array()) } } @@ -239,7 +240,7 @@ impl Scheme for ZstdBuffersScheme { let stats = data.string_stats(); Ok( - vortex_zstd::ZstdBuffersArray::compress(&stats.source().clone().into_array(), 3)? + vortex_zstd::ZstdBuffersData::compress(&stats.source().clone().into_array(), 3)? .into_array(), ) } diff --git a/vortex-btrblocks/src/schemes/temporal.rs b/vortex-btrblocks/src/schemes/temporal.rs index f1ecb158d96..a2d1bdfd4e8 100644 --- a/vortex-btrblocks/src/schemes/temporal.rs +++ b/vortex-btrblocks/src/schemes/temporal.rs @@ -13,7 +13,7 @@ use vortex_array::arrays::TemporalArray; use vortex_array::dtype::extension::Matcher; use vortex_array::extension::datetime::AnyTemporal; use vortex_array::extension::datetime::TemporalMetadata; -use vortex_datetime_parts::DateTimePartsArray; +use vortex_datetime_parts::DateTimeParts; use vortex_datetime_parts::TemporalParts; use vortex_datetime_parts::split_temporal; use vortex_error::VortexResult; @@ -27,7 +27,7 @@ use crate::SchemeExt; /// Compression scheme for temporal timestamp arrays via datetime-part decomposition. /// /// Splits timestamps into days, seconds, and subseconds components, compresses each -/// independently, and wraps the result in a [`DateTimePartsArray`]. +/// independently, and wraps the result in a `DateTimePartsArray`. #[derive(Debug, Copy, Clone, PartialEq, Eq)] pub struct TemporalScheme; @@ -86,10 +86,7 @@ impl Scheme for TemporalScheme { )?; if is_constant { - return Ok( - ConstantArray::new(temporal_array.as_ref().scalar_at(0)?, ext_array.len()) - .into_array(), - ); + return Ok(ConstantArray::new(ext_array.scalar_at(0)?, ext_array.len()).into_array()); } let dtype = temporal_array.dtype().clone(); @@ -118,6 +115,6 @@ impl Scheme for TemporalScheme { 2, )?; - Ok(DateTimePartsArray::try_new(dtype, days, seconds, subseconds)?.into_array()) + Ok(DateTimeParts::try_new(dtype, days, seconds, subseconds)?.into_array()) } } diff --git a/vortex-compressor/public-api.lock b/vortex-compressor/public-api.lock index a2e1dd47677..9c04cb9292d 100644 --- a/vortex-compressor/public-api.lock +++ b/vortex-compressor/public-api.lock @@ -26,7 +26,7 @@ impl vortex_compressor::scheme::Scheme for vortex_compressor::builtins::BoolCons pub fn vortex_compressor::builtins::BoolConstantScheme::ancestor_exclusions(&self) -> alloc::vec::Vec -pub fn vortex_compressor::builtins::BoolConstantScheme::compress(&self, _compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_compressor::builtins::BoolConstantScheme::compress(&self, _compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_compressor::builtins::BoolConstantScheme::descendant_exclusions(&self) -> alloc::vec::Vec @@ -66,7 +66,7 @@ impl vortex_compressor::scheme::Scheme for vortex_compressor::builtins::FloatCon pub fn vortex_compressor::builtins::FloatConstantScheme::ancestor_exclusions(&self) -> alloc::vec::Vec -pub fn vortex_compressor::builtins::FloatConstantScheme::compress(&self, _compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_compressor::builtins::FloatConstantScheme::compress(&self, _compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_compressor::builtins::FloatConstantScheme::descendant_exclusions(&self) -> alloc::vec::Vec @@ -106,7 +106,7 @@ impl vortex_compressor::scheme::Scheme for vortex_compressor::builtins::FloatDic pub fn vortex_compressor::builtins::FloatDictScheme::ancestor_exclusions(&self) -> alloc::vec::Vec -pub fn vortex_compressor::builtins::FloatDictScheme::compress(&self, compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_compressor::builtins::FloatDictScheme::compress(&self, compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_compressor::builtins::FloatDictScheme::descendant_exclusions(&self) -> alloc::vec::Vec @@ -146,7 +146,7 @@ impl vortex_compressor::scheme::Scheme for vortex_compressor::builtins::IntConst pub fn vortex_compressor::builtins::IntConstantScheme::ancestor_exclusions(&self) -> alloc::vec::Vec -pub fn vortex_compressor::builtins::IntConstantScheme::compress(&self, _compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_compressor::builtins::IntConstantScheme::compress(&self, _compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_compressor::builtins::IntConstantScheme::descendant_exclusions(&self) -> alloc::vec::Vec @@ -186,7 +186,7 @@ impl vortex_compressor::scheme::Scheme for vortex_compressor::builtins::IntDictS pub fn vortex_compressor::builtins::IntDictScheme::ancestor_exclusions(&self) -> alloc::vec::Vec -pub fn vortex_compressor::builtins::IntDictScheme::compress(&self, compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_compressor::builtins::IntDictScheme::compress(&self, compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_compressor::builtins::IntDictScheme::descendant_exclusions(&self) -> alloc::vec::Vec @@ -226,7 +226,7 @@ impl vortex_compressor::scheme::Scheme for vortex_compressor::builtins::StringCo pub fn vortex_compressor::builtins::StringConstantScheme::ancestor_exclusions(&self) -> alloc::vec::Vec -pub fn vortex_compressor::builtins::StringConstantScheme::compress(&self, _compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_compressor::builtins::StringConstantScheme::compress(&self, _compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_compressor::builtins::StringConstantScheme::descendant_exclusions(&self) -> alloc::vec::Vec @@ -266,7 +266,7 @@ impl vortex_compressor::scheme::Scheme for vortex_compressor::builtins::StringDi pub fn vortex_compressor::builtins::StringDictScheme::ancestor_exclusions(&self) -> alloc::vec::Vec -pub fn vortex_compressor::builtins::StringDictScheme::compress(&self, compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_compressor::builtins::StringDictScheme::compress(&self, compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_compressor::builtins::StringDictScheme::descendant_exclusions(&self) -> alloc::vec::Vec @@ -282,9 +282,9 @@ pub fn vortex_compressor::builtins::StringDictScheme::scheme_name(&self) -> &'st pub fn vortex_compressor::builtins::StringDictScheme::stats_options(&self) -> vortex_compressor::stats::GenerateStatsOptions -pub fn vortex_compressor::builtins::float_dictionary_encode(stats: &vortex_compressor::stats::FloatStats) -> vortex_array::arrays::dict::array::DictArray +pub fn vortex_compressor::builtins::float_dictionary_encode(stats: &vortex_compressor::stats::FloatStats) -> vortex_array::arrays::dict::vtable::DictArray -pub fn vortex_compressor::builtins::integer_dictionary_encode(stats: &vortex_compressor::stats::IntegerStats) -> vortex_array::arrays::dict::array::DictArray +pub fn vortex_compressor::builtins::integer_dictionary_encode(stats: &vortex_compressor::stats::IntegerStats) -> vortex_array::arrays::dict::vtable::DictArray pub fn vortex_compressor::builtins::is_bool(canonical: &vortex_array::canonical::Canonical) -> bool @@ -412,7 +412,7 @@ pub trait vortex_compressor::scheme::Scheme: core::fmt::Debug + core::marker::Se pub fn vortex_compressor::scheme::Scheme::ancestor_exclusions(&self) -> alloc::vec::Vec -pub fn vortex_compressor::scheme::Scheme::compress(&self, compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_compressor::scheme::Scheme::compress(&self, compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_compressor::scheme::Scheme::descendant_exclusions(&self) -> alloc::vec::Vec @@ -432,7 +432,7 @@ impl vortex_compressor::scheme::Scheme for vortex_compressor::builtins::BoolCons pub fn vortex_compressor::builtins::BoolConstantScheme::ancestor_exclusions(&self) -> alloc::vec::Vec -pub fn vortex_compressor::builtins::BoolConstantScheme::compress(&self, _compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_compressor::builtins::BoolConstantScheme::compress(&self, _compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_compressor::builtins::BoolConstantScheme::descendant_exclusions(&self) -> alloc::vec::Vec @@ -452,7 +452,7 @@ impl vortex_compressor::scheme::Scheme for vortex_compressor::builtins::FloatCon pub fn vortex_compressor::builtins::FloatConstantScheme::ancestor_exclusions(&self) -> alloc::vec::Vec -pub fn vortex_compressor::builtins::FloatConstantScheme::compress(&self, _compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_compressor::builtins::FloatConstantScheme::compress(&self, _compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_compressor::builtins::FloatConstantScheme::descendant_exclusions(&self) -> alloc::vec::Vec @@ -472,7 +472,7 @@ impl vortex_compressor::scheme::Scheme for vortex_compressor::builtins::FloatDic pub fn vortex_compressor::builtins::FloatDictScheme::ancestor_exclusions(&self) -> alloc::vec::Vec -pub fn vortex_compressor::builtins::FloatDictScheme::compress(&self, compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_compressor::builtins::FloatDictScheme::compress(&self, compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_compressor::builtins::FloatDictScheme::descendant_exclusions(&self) -> alloc::vec::Vec @@ -492,7 +492,7 @@ impl vortex_compressor::scheme::Scheme for vortex_compressor::builtins::IntConst pub fn vortex_compressor::builtins::IntConstantScheme::ancestor_exclusions(&self) -> alloc::vec::Vec -pub fn vortex_compressor::builtins::IntConstantScheme::compress(&self, _compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_compressor::builtins::IntConstantScheme::compress(&self, _compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_compressor::builtins::IntConstantScheme::descendant_exclusions(&self) -> alloc::vec::Vec @@ -512,7 +512,7 @@ impl vortex_compressor::scheme::Scheme for vortex_compressor::builtins::IntDictS pub fn vortex_compressor::builtins::IntDictScheme::ancestor_exclusions(&self) -> alloc::vec::Vec -pub fn vortex_compressor::builtins::IntDictScheme::compress(&self, compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_compressor::builtins::IntDictScheme::compress(&self, compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_compressor::builtins::IntDictScheme::descendant_exclusions(&self) -> alloc::vec::Vec @@ -532,7 +532,7 @@ impl vortex_compressor::scheme::Scheme for vortex_compressor::builtins::StringCo pub fn vortex_compressor::builtins::StringConstantScheme::ancestor_exclusions(&self) -> alloc::vec::Vec -pub fn vortex_compressor::builtins::StringConstantScheme::compress(&self, _compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_compressor::builtins::StringConstantScheme::compress(&self, _compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, _ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_compressor::builtins::StringConstantScheme::descendant_exclusions(&self) -> alloc::vec::Vec @@ -552,7 +552,7 @@ impl vortex_compressor::scheme::Scheme for vortex_compressor::builtins::StringDi pub fn vortex_compressor::builtins::StringDictScheme::ancestor_exclusions(&self) -> alloc::vec::Vec -pub fn vortex_compressor::builtins::StringDictScheme::compress(&self, compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_compressor::builtins::StringDictScheme::compress(&self, compressor: &vortex_compressor::CascadingCompressor, data: &mut vortex_compressor::stats::ArrayAndStats, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub fn vortex_compressor::builtins::StringDictScheme::descendant_exclusions(&self) -> alloc::vec::Vec @@ -576,7 +576,7 @@ impl vortex_compres pub fn T::id(&self) -> vortex_compressor::scheme::SchemeId -pub fn vortex_compressor::scheme::estimate_compression_ratio_with_sampling(scheme: &S, compressor: &vortex_compressor::CascadingCompressor, array: &vortex_array::array::ArrayRef, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult +pub fn vortex_compressor::scheme::estimate_compression_ratio_with_sampling(scheme: &S, compressor: &vortex_compressor::CascadingCompressor, array: &vortex_array::array::erased::ArrayRef, ctx: vortex_compressor::ctx::CompressorContext) -> vortex_error::VortexResult pub mod vortex_compressor::stats @@ -684,7 +684,7 @@ pub struct vortex_compressor::stats::ArrayAndStats impl vortex_compressor::stats::ArrayAndStats -pub fn vortex_compressor::stats::ArrayAndStats::array(&self) -> &vortex_array::array::ArrayRef +pub fn vortex_compressor::stats::ArrayAndStats::array(&self) -> &vortex_array::array::erased::ArrayRef pub fn vortex_compressor::stats::ArrayAndStats::bool_stats(&mut self) -> &vortex_compressor::stats::BoolStats @@ -694,9 +694,9 @@ pub fn vortex_compressor::stats::ArrayAndStats::get_or_insert_with(& pub fn vortex_compressor::stats::ArrayAndStats::integer_stats(&mut self) -> &vortex_compressor::stats::IntegerStats -pub fn vortex_compressor::stats::ArrayAndStats::into_array(self) -> vortex_array::array::ArrayRef +pub fn vortex_compressor::stats::ArrayAndStats::into_array(self) -> vortex_array::array::erased::ArrayRef -pub fn vortex_compressor::stats::ArrayAndStats::new(array: vortex_array::array::ArrayRef, opts: vortex_compressor::stats::GenerateStatsOptions) -> Self +pub fn vortex_compressor::stats::ArrayAndStats::new(array: vortex_array::array::erased::ArrayRef, opts: vortex_compressor::stats::GenerateStatsOptions) -> Self pub fn vortex_compressor::stats::ArrayAndStats::string_stats(&mut self) -> &vortex_compressor::stats::StringStats @@ -704,13 +704,13 @@ pub struct vortex_compressor::stats::BoolStats impl vortex_compressor::stats::BoolStats -pub fn vortex_compressor::stats::BoolStats::generate(input: &vortex_array::arrays::bool::array::BoolArray) -> vortex_error::VortexResult +pub fn vortex_compressor::stats::BoolStats::generate(input: &vortex_array::arrays::bool::vtable::BoolArray) -> vortex_error::VortexResult pub fn vortex_compressor::stats::BoolStats::is_constant(&self) -> bool pub fn vortex_compressor::stats::BoolStats::null_count(&self) -> u32 -pub fn vortex_compressor::stats::BoolStats::source(&self) -> &vortex_array::arrays::bool::array::BoolArray +pub fn vortex_compressor::stats::BoolStats::source(&self) -> &vortex_array::arrays::bool::vtable::BoolArray pub fn vortex_compressor::stats::BoolStats::true_count(&self) -> u32 @@ -746,13 +746,13 @@ pub fn vortex_compressor::stats::FloatStats::average_run_length(&self) -> u32 pub fn vortex_compressor::stats::FloatStats::erased(&self) -> &vortex_compressor::stats::FloatErasedStats -pub fn vortex_compressor::stats::FloatStats::generate(input: &vortex_array::arrays::primitive::array::PrimitiveArray) -> Self +pub fn vortex_compressor::stats::FloatStats::generate(input: &vortex_array::arrays::primitive::vtable::PrimitiveArray) -> Self -pub fn vortex_compressor::stats::FloatStats::generate_opts(input: &vortex_array::arrays::primitive::array::PrimitiveArray, opts: vortex_compressor::stats::GenerateStatsOptions) -> Self +pub fn vortex_compressor::stats::FloatStats::generate_opts(input: &vortex_array::arrays::primitive::vtable::PrimitiveArray, opts: vortex_compressor::stats::GenerateStatsOptions) -> Self pub fn vortex_compressor::stats::FloatStats::null_count(&self) -> u32 -pub fn vortex_compressor::stats::FloatStats::source(&self) -> &vortex_array::arrays::primitive::array::PrimitiveArray +pub fn vortex_compressor::stats::FloatStats::source(&self) -> &vortex_array::arrays::primitive::vtable::PrimitiveArray pub fn vortex_compressor::stats::FloatStats::value_count(&self) -> u32 @@ -838,13 +838,13 @@ pub fn vortex_compressor::stats::IntegerStats::average_run_length(&self) -> u32 pub fn vortex_compressor::stats::IntegerStats::erased(&self) -> &vortex_compressor::stats::IntegerErasedStats -pub fn vortex_compressor::stats::IntegerStats::generate(input: &vortex_array::arrays::primitive::array::PrimitiveArray) -> Self +pub fn vortex_compressor::stats::IntegerStats::generate(input: &vortex_array::arrays::primitive::vtable::PrimitiveArray) -> Self -pub fn vortex_compressor::stats::IntegerStats::generate_opts(input: &vortex_array::arrays::primitive::array::PrimitiveArray, opts: vortex_compressor::stats::GenerateStatsOptions) -> Self +pub fn vortex_compressor::stats::IntegerStats::generate_opts(input: &vortex_array::arrays::primitive::vtable::PrimitiveArray, opts: vortex_compressor::stats::GenerateStatsOptions) -> Self pub fn vortex_compressor::stats::IntegerStats::null_count(&self) -> u32 -pub fn vortex_compressor::stats::IntegerStats::source(&self) -> &vortex_array::arrays::primitive::array::PrimitiveArray +pub fn vortex_compressor::stats::IntegerStats::source(&self) -> &vortex_array::arrays::primitive::vtable::PrimitiveArray pub fn vortex_compressor::stats::IntegerStats::value_count(&self) -> u32 @@ -914,13 +914,13 @@ impl vortex_compressor::stats::StringStats pub fn vortex_compressor::stats::StringStats::estimated_distinct_count(&self) -> core::option::Option -pub fn vortex_compressor::stats::StringStats::generate(input: &vortex_array::arrays::varbinview::array::VarBinViewArray) -> Self +pub fn vortex_compressor::stats::StringStats::generate(input: &vortex_array::arrays::varbinview::vtable::VarBinViewArray) -> Self -pub fn vortex_compressor::stats::StringStats::generate_opts(input: &vortex_array::arrays::varbinview::array::VarBinViewArray, opts: vortex_compressor::stats::GenerateStatsOptions) -> Self +pub fn vortex_compressor::stats::StringStats::generate_opts(input: &vortex_array::arrays::varbinview::vtable::VarBinViewArray, opts: vortex_compressor::stats::GenerateStatsOptions) -> Self pub fn vortex_compressor::stats::StringStats::null_count(&self) -> u32 -pub fn vortex_compressor::stats::StringStats::source(&self) -> &vortex_array::arrays::varbinview::array::VarBinViewArray +pub fn vortex_compressor::stats::StringStats::source(&self) -> &vortex_array::arrays::varbinview::vtable::VarBinViewArray pub fn vortex_compressor::stats::StringStats::value_count(&self) -> u32 @@ -936,9 +936,9 @@ pub struct vortex_compressor::CascadingCompressor impl vortex_compressor::CascadingCompressor -pub fn vortex_compressor::CascadingCompressor::compress(&self, array: &vortex_array::array::ArrayRef) -> vortex_error::VortexResult +pub fn vortex_compressor::CascadingCompressor::compress(&self, array: &vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult -pub fn vortex_compressor::CascadingCompressor::compress_child(&self, child: &vortex_array::array::ArrayRef, parent_ctx: &vortex_compressor::ctx::CompressorContext, parent_id: vortex_compressor::scheme::SchemeId, child_index: usize) -> vortex_error::VortexResult +pub fn vortex_compressor::CascadingCompressor::compress_child(&self, child: &vortex_array::array::erased::ArrayRef, parent_ctx: &vortex_compressor::ctx::CompressorContext, parent_id: vortex_compressor::scheme::SchemeId, child_index: usize) -> vortex_error::VortexResult pub fn vortex_compressor::CascadingCompressor::execution_ctx(&self) -> parking_lot::mutex::MutexGuard<'_, vortex_array::executor::ExecutionCtx> diff --git a/vortex-compressor/src/builtins/dict/float.rs b/vortex-compressor/src/builtins/dict/float.rs index e331a851cec..d2a504a443d 100644 --- a/vortex-compressor/src/builtins/dict/float.rs +++ b/vortex-compressor/src/builtins/dict/float.rs @@ -112,8 +112,8 @@ impl_encode!(f64, u64); #[cfg(test)] mod tests { - use vortex_array::DynArray; use vortex_array::IntoArray; + use vortex_array::ToCanonical; use vortex_array::arrays::BoolArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::assert_arrays_eq; @@ -146,6 +146,7 @@ mod tests { Validity::Array(BoolArray::from_iter([true, true, true, false, true]).into_array()), ) .into_array(); - assert_arrays_eq!(dict_array.as_ref(), expected.as_ref()); + let undict = dict_array.as_array().to_primitive().into_array(); + assert_arrays_eq!(undict, expected); } } diff --git a/vortex-compressor/src/builtins/dict/integer.rs b/vortex-compressor/src/builtins/dict/integer.rs index dfe7377c504..04842237930 100644 --- a/vortex-compressor/src/builtins/dict/integer.rs +++ b/vortex-compressor/src/builtins/dict/integer.rs @@ -127,8 +127,8 @@ impl_encode!(i64); #[cfg(test)] mod tests { - use vortex_array::DynArray; use vortex_array::IntoArray; + use vortex_array::ToCanonical; use vortex_array::arrays::BoolArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::assert_arrays_eq; @@ -160,6 +160,7 @@ mod tests { Validity::Array(BoolArray::from_iter([true, true, true, false, true]).into_array()), ) .into_array(); - assert_arrays_eq!(dict_array.as_ref(), expected.as_ref()); + let undict = dict_array.as_array().to_primitive().into_array(); + assert_arrays_eq!(undict, expected); } } diff --git a/vortex-compressor/src/compressor.rs b/vortex-compressor/src/compressor.rs index 5aff682fbad..dafe88fdd07 100644 --- a/vortex-compressor/src/compressor.rs +++ b/vortex-compressor/src/compressor.rs @@ -10,7 +10,6 @@ use parking_lot::MutexGuard; use vortex_array::ArrayRef; use vortex_array::Canonical; use vortex_array::CanonicalValidity; -use vortex_array::DynArray; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::LEGACY_SESSION; @@ -26,7 +25,6 @@ use vortex_array::arrays::listview::list_from_list_view; use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; use vortex_array::scalar::Scalar; -use vortex_array::vtable::ValidityHelper; use vortex_error::VortexResult; use vortex_error::vortex_bail; diff --git a/vortex-compressor/src/sample.rs b/vortex-compressor/src/sample.rs index fe6cd5078a9..4821c7c6d95 100644 --- a/vortex-compressor/src/sample.rs +++ b/vortex-compressor/src/sample.rs @@ -7,7 +7,6 @@ use rand::RngExt; use rand::SeedableRng; use rand::prelude::StdRng; use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::arrays::ChunkedArray; use vortex_error::VortexExpect; @@ -29,7 +28,7 @@ const SAMPLE_SEED: u64 = 1234567890; /// Samples approximately 1% of the input array for compression ratio estimation. pub(crate) fn sample(input: &ArrayRef, sample_size: u32, sample_count: u32) -> ArrayRef { if input.len() <= (sample_size as usize) * (sample_count as usize) { - return input.to_array(); + return input.clone(); } let slices = stratified_slices( diff --git a/vortex-compressor/src/stats/integer.rs b/vortex-compressor/src/stats/integer.rs index 1f13118584b..39c74af752e 100644 --- a/vortex-compressor/src/stats/integer.rs +++ b/vortex-compressor/src/stats/integer.rs @@ -430,12 +430,13 @@ where let runs = loop_state.runs; - let min = array + let array_ref = array.as_ref(); + let min = array_ref .statistics() .compute_as::(Stat::Min) .vortex_expect("min should be computed"); - let max = array + let max = array_ref .statistics() .compute_as::(Stat::Max) .vortex_expect("max should be computed"); diff --git a/vortex-cuda/benches/bitpacked_cuda.rs b/vortex-cuda/benches/bitpacked_cuda.rs index 44c911f545c..a0cc4985ea5 100644 --- a/vortex-cuda/benches/bitpacked_cuda.rs +++ b/vortex-cuda/benches/bitpacked_cuda.rs @@ -19,15 +19,16 @@ use criterion::Criterion; use criterion::Throughput; use cudarc::driver::DeviceRepr; use futures::executor::block_on; +use vortex::array::IntoArray; use vortex::array::arrays::PrimitiveArray; use vortex::array::validity::Validity::NonNullable; use vortex::buffer::Buffer; use vortex::dtype::NativePType; use vortex::encodings::fastlanes::BitPackedArray; +use vortex::encodings::fastlanes::BitPackedData; use vortex::encodings::fastlanes::unpack_iter::BitPacked; use vortex::error::VortexExpect; use vortex::session::VortexSession; -use vortex_array::IntoArray; use vortex_cuda::CudaSession; use vortex_cuda::executor::CudaArrayExt; use vortex_cuda_macros::cuda_available; @@ -56,7 +57,7 @@ where .collect(); let primitive_array = PrimitiveArray::new(Buffer::from(values), NonNullable); - BitPackedArray::encode(&primitive_array.into_array(), bit_width) + BitPackedData::encode(&primitive_array.into_array(), bit_width) .vortex_expect("failed to create BitPacked array") } @@ -96,7 +97,7 @@ where .collect(); let primitive_array = PrimitiveArray::new(Buffer::from(values), NonNullable).into_array(); - BitPackedArray::encode(&primitive_array, bit_width) + BitPackedData::encode(&primitive_array, bit_width) .vortex_expect("failed to create BitPacked array with patches") } diff --git a/vortex-cuda/benches/date_time_parts_cuda.rs b/vortex-cuda/benches/date_time_parts_cuda.rs index b4c15496865..a91111e3f8a 100644 --- a/vortex-cuda/benches/date_time_parts_cuda.rs +++ b/vortex-cuda/benches/date_time_parts_cuda.rs @@ -25,6 +25,7 @@ use vortex::buffer::Buffer; use vortex::dtype::DType; use vortex::dtype::Nullability; use vortex::encodings::datetime_parts::DateTimePartsArray; +use vortex::encodings::datetime_parts::DateTimePartsData; use vortex::error::VortexExpect; use vortex::extension::datetime::TimeUnit; use vortex::extension::datetime::Timestamp; @@ -44,8 +45,11 @@ fn make_datetimeparts_array(len: usize, time_unit: TimeUnit) -> DateTimePartsArr let dtype = DType::Extension(Timestamp::new(time_unit, Nullability::NonNullable).erased()); - DateTimePartsArray::try_new(dtype, days_arr, seconds_arr, subseconds_arr) - .vortex_expect("Failed to create DateTimePartsArray") + DateTimePartsArray::try_from_data( + DateTimePartsData::try_new(dtype, days_arr, seconds_arr, subseconds_arr) + .vortex_expect("Failed to create DateTimePartsArray"), + ) + .vortex_expect("DateTimePartsData is always valid") } fn benchmark_datetimeparts(c: &mut Criterion) { diff --git a/vortex-cuda/benches/dynamic_dispatch_cuda.rs b/vortex-cuda/benches/dynamic_dispatch_cuda.rs index bb23ead6066..21537b51031 100644 --- a/vortex-cuda/benches/dynamic_dispatch_cuda.rs +++ b/vortex-cuda/benches/dynamic_dispatch_cuda.rs @@ -25,13 +25,13 @@ use vortex::array::scalar::Scalar; use vortex::array::validity::Validity::NonNullable; use vortex::buffer::Buffer; use vortex::dtype::PType; -use vortex::encodings::alp::ALPArray; +use vortex::encodings::alp::ALP; use vortex::encodings::alp::ALPFloat; use vortex::encodings::alp::Exponents; use vortex::encodings::alp::alp_encode; -use vortex::encodings::fastlanes::BitPackedArray; -use vortex::encodings::fastlanes::FoRArray; -use vortex::encodings::runend::RunEndArray; +use vortex::encodings::fastlanes::BitPackedData; +use vortex::encodings::fastlanes::FoRData; +use vortex::encodings::runend::RunEnd; use vortex::error::VortexExpect; use vortex::error::VortexResult; use vortex::error::vortex_err; @@ -186,9 +186,9 @@ fn bench_for_bitpacked(c: &mut Criterion) { .map(|i| (i as u64 % (max_val + 1)) as u32) .collect(); let prim = PrimitiveArray::new(Buffer::from(residuals), NonNullable); - let bp = BitPackedArray::encode(&prim.into_array(), bit_width).vortex_expect("bitpack"); + let bp = BitPackedData::encode(&prim.into_array(), bit_width).vortex_expect("bitpack"); let for_arr = - FoRArray::try_new(bp.into_array(), Scalar::from(reference)).vortex_expect("for"); + FoRData::try_new(bp.into_array(), Scalar::from(reference)).vortex_expect("for"); let array = for_arr.into_array(); group.bench_with_input( @@ -230,7 +230,7 @@ fn bench_dict_bp_codes(c: &mut Criterion) { let codes: Vec = (0..*len).map(|i| (i % dict_size) as u32).collect(); let codes_prim = PrimitiveArray::new(Buffer::from(codes), NonNullable); - let codes_bp = BitPackedArray::encode(&codes_prim.into_array(), dict_bit_width) + let codes_bp = BitPackedData::encode(&codes_prim.into_array(), dict_bit_width) .vortex_expect("bitpack codes"); let values_prim = PrimitiveArray::new(Buffer::from(dict_values.clone()), NonNullable); let dict = DictArray::new(codes_bp.into_array(), values_prim.into_array()); @@ -277,7 +277,7 @@ fn bench_runend(c: &mut Criterion) { let ends_arr = PrimitiveArray::new(Buffer::from(ends), NonNullable).into_array(); let values_arr = PrimitiveArray::new(Buffer::from(values), NonNullable).into_array(); - let re = RunEndArray::new(ends_arr, values_arr); + let re = RunEnd::new(ends_arr, values_arr); let array = re.into_array(); group.bench_with_input( @@ -318,9 +318,9 @@ fn bench_dict_bp_codes_bp_for_values(c: &mut Criterion) { // Dict values: residuals 0..63 bitpacked, FoR adds 1_000_000 let dict_residuals: Vec = (0..dict_size as u32).collect(); let dict_prim = PrimitiveArray::new(Buffer::from(dict_residuals), NonNullable); - let dict_bp = BitPackedArray::encode(&dict_prim.into_array(), dict_bit_width) + let dict_bp = BitPackedData::encode(&dict_prim.into_array(), dict_bit_width) .vortex_expect("bitpack dict"); - let dict_for = FoRArray::try_new(dict_bp.into_array(), Scalar::from(dict_reference)) + let dict_for = FoRData::try_new(dict_bp.into_array(), Scalar::from(dict_reference)) .vortex_expect("for dict"); for (len, len_str) in BENCH_ARGS { @@ -328,7 +328,7 @@ fn bench_dict_bp_codes_bp_for_values(c: &mut Criterion) { let codes: Vec = (0..*len).map(|i| (i % dict_size) as u32).collect(); let codes_prim = PrimitiveArray::new(Buffer::from(codes), NonNullable); - let codes_bp = BitPackedArray::encode(&codes_prim.into_array(), codes_bit_width) + let codes_bp = BitPackedData::encode(&codes_prim.into_array(), codes_bit_width) .vortex_expect("bitpack codes"); let dict = DictArray::new(codes_bp.into_array(), dict_for.clone().into_array()); @@ -379,12 +379,12 @@ fn bench_alp_for_bitpacked(c: &mut Criterion) { // Encode: ALP → FoR → BitPacked let alp = alp_encode(&float_prim, Some(exponents)).vortex_expect("alp_encode"); assert!(alp.patches().is_none()); - let for_arr = FoRArray::encode(alp.encoded().to_primitive()).vortex_expect("for encode"); + let for_arr = FoRData::encode(alp.encoded().to_primitive()).vortex_expect("for encode"); let bp = - BitPackedArray::encode(for_arr.encoded(), bit_width).vortex_expect("bitpack encode"); + BitPackedData::encode(for_arr.encoded(), bit_width).vortex_expect("bitpack encode"); - let tree = ALPArray::new( - FoRArray::try_new(bp.into_array(), for_arr.reference_scalar().clone()) + let tree = ALP::new( + FoRData::try_new(bp.into_array(), for_arr.reference_scalar().clone()) .vortex_expect("for_new") .into_array(), exponents, diff --git a/vortex-cuda/benches/for_cuda.rs b/vortex-cuda/benches/for_cuda.rs index 31f7b270e92..eb87eb6d770 100644 --- a/vortex-cuda/benches/for_cuda.rs +++ b/vortex-cuda/benches/for_cuda.rs @@ -25,8 +25,9 @@ use vortex::array::validity::Validity; use vortex::buffer::Buffer; use vortex::dtype::NativePType; use vortex::dtype::PType; -use vortex::encodings::fastlanes::BitPackedArray; +use vortex::encodings::fastlanes::BitPackedData; use vortex::encodings::fastlanes::FoRArray; +use vortex::encodings::fastlanes::FoRData; use vortex::error::VortexExpect; use vortex::scalar::Scalar; use vortex::session::VortexSession; @@ -55,12 +56,18 @@ where PrimitiveArray::new(Buffer::from(data), Validity::NonNullable).into_array(); if bp && T::PTYPE != PType::U8 { - let child = BitPackedArray::encode(&primitive_array, 8).vortex_expect("failed to bitpack"); - FoRArray::try_new(child.into_array(), reference.into()) - .vortex_expect("failed to create FoR array") + let child = BitPackedData::encode(&primitive_array, 8).vortex_expect("failed to bitpack"); + FoRArray::try_from_data( + FoRData::try_new(child.into_array(), reference.into()) + .vortex_expect("failed to create FoR array"), + ) + .vortex_expect("FoRData is always valid") } else { - FoRArray::try_new(primitive_array, reference.into()) - .vortex_expect("failed to create FoR array") + FoRArray::try_from_data( + FoRData::try_new(primitive_array, reference.into()) + .vortex_expect("failed to create FoR array"), + ) + .vortex_expect("FoRData is always valid") } } diff --git a/vortex-cuda/benches/runend_cuda.rs b/vortex-cuda/benches/runend_cuda.rs index ced52c19c40..c073f60634c 100644 --- a/vortex-cuda/benches/runend_cuda.rs +++ b/vortex-cuda/benches/runend_cuda.rs @@ -23,6 +23,7 @@ use vortex::array::arrays::PrimitiveArray; use vortex::array::validity::Validity; use vortex::buffer::Buffer; use vortex::dtype::NativePType; +use vortex::encodings::runend::RunEnd; use vortex::encodings::runend::RunEndArray; use vortex::session::VortexSession; use vortex_cuda::CudaSession; @@ -54,7 +55,7 @@ where let ends_array = PrimitiveArray::new(Buffer::from(ends), Validity::NonNullable).into_array(); let values_array = PrimitiveArray::new(Buffer::from(values), Validity::NonNullable).into_array(); - RunEndArray::new(ends_array, values_array) + RunEnd::new(ends_array, values_array) } /// Benchmark run-end decoding for a specific type with varying run lengths diff --git a/vortex-cuda/benches/transpose_patches.rs b/vortex-cuda/benches/transpose_patches.rs index 59243de46e4..a4a4dfaa099 100644 --- a/vortex-cuda/benches/transpose_patches.rs +++ b/vortex-cuda/benches/transpose_patches.rs @@ -10,13 +10,13 @@ use criterion::BenchmarkId; use criterion::Criterion; use criterion::Throughput; use futures::executor::block_on; +use vortex::array::IntoArray; +use vortex::array::arrays::PrimitiveArray; +use vortex::array::dtype::PType; +use vortex::array::patches::Patches; use vortex::buffer::Buffer; use vortex::buffer::buffer; use vortex::session::VortexSession; -use vortex_array::IntoArray; -use vortex_array::arrays::PrimitiveArray; -use vortex_array::dtype::PType; -use vortex_array::patches::Patches; use vortex_array::validity::Validity; use vortex_cuda::CudaSession; use vortex_cuda::transpose_patches; diff --git a/vortex-cuda/benches/zstd_cuda.rs b/vortex-cuda/benches/zstd_cuda.rs index 41be9fa8cf9..7fe68380439 100644 --- a/vortex-cuda/benches/zstd_cuda.rs +++ b/vortex-cuda/benches/zstd_cuda.rs @@ -13,6 +13,7 @@ use cudarc::driver::DevicePtrMut; use cudarc::driver::sys::CUevent_flags; use futures::executor::block_on; use vortex::array::arrays::VarBinViewArray; +use vortex::encodings::zstd::Zstd; use vortex::encodings::zstd::ZstdArray; use vortex::encodings::zstd::ZstdArrayParts; use vortex::error::VortexExpect; @@ -58,7 +59,7 @@ fn make_zstd_array(num_strings: usize) -> VortexResult<(ZstdArray, usize)> { let zstd_compression_level = -10; // Less compression but faster. let zstd_array = // Disable dictionary as nvCOMP doesn't support ZSTD dictionaries. - ZstdArray::from_var_bin_view_without_dict(&var_bin_view, zstd_compression_level, 2048)?; + Zstd::from_var_bin_view_without_dict(&var_bin_view, zstd_compression_level, 2048)?; Ok((zstd_array, uncompressed_size)) } @@ -139,7 +140,7 @@ fn benchmark_zstd_cuda_decompress(c: &mut Criterion) { for _ in 0..iters { let ZstdArrayParts { frames, metadata, .. - } = zstd_array.clone().into_parts(); + } = zstd_array.clone().into_data().into_parts(); let exec = block_on(zstd_kernel_prepare(frames, &metadata, &mut cuda_ctx)) .vortex_expect("kernel setup failed"); let kernel_time = block_on(execute_zstd_kernel(exec, &mut cuda_ctx)) diff --git a/vortex-cuda/src/arrow/canonical.rs b/vortex-cuda/src/arrow/canonical.rs index a9e33f3958f..b3bb2824b4c 100644 --- a/vortex-cuda/src/arrow/canonical.rs +++ b/vortex-cuda/src/arrow/canonical.rs @@ -68,7 +68,7 @@ fn export_canonical( let len = primitive.len(); let PrimitiveArrayParts { buffer, validity, .. - } = primitive.into_parts(); + } = primitive.into_data().into_parts(); check_validity_empty(&validity)?; @@ -95,7 +95,7 @@ fn export_canonical( values_type, validity, .. - } = decimal.into_parts(); + } = decimal.into_data().into_parts(); // verify that there is no null buffer check_validity_empty(&validity)?; @@ -120,7 +120,7 @@ fn export_canonical( let PrimitiveArrayParts { buffer, validity, .. - } = values.into_parts(); + } = values.into_data().into_parts(); check_validity_empty(&validity)?; diff --git a/vortex-cuda/src/arrow/mod.rs b/vortex-cuda/src/arrow/mod.rs index 9a57c411e07..27533a986dd 100644 --- a/vortex-cuda/src/arrow/mod.rs +++ b/vortex-cuda/src/arrow/mod.rs @@ -23,7 +23,6 @@ use cudarc::driver::CudaStream; use cudarc::driver::sys; use cudarc::runtime::sys::cudaEvent_t; use vortex::array::ArrayRef; -use vortex::array::DynArray; use vortex::array::buffer::BufferHandle; use vortex::array::validity::Validity; use vortex::error::VortexResult; @@ -182,7 +181,7 @@ impl PrivateData { } #[async_trait] -pub trait DeviceArrayExt: DynArray { +pub trait DeviceArrayExt { async fn export_device_array( self, ctx: &mut CudaExecutionCtx, diff --git a/vortex-cuda/src/arrow/varbinview.rs b/vortex-cuda/src/arrow/varbinview.rs index 891724b84f6..12edc39c9bf 100644 --- a/vortex-cuda/src/arrow/varbinview.rs +++ b/vortex-cuda/src/arrow/varbinview.rs @@ -38,7 +38,7 @@ pub(crate) async fn copy_varbinview_to_varbin( buffers, validity, .. - } = array.into_parts(); + } = array.into_data().into_parts(); // TODO(aduffy): handle nulls check_validity_empty(&validity)?; diff --git a/vortex-cuda/src/canonical.rs b/vortex-cuda/src/canonical.rs index d4eb37e09f3..0cbfbf718cc 100644 --- a/vortex-cuda/src/canonical.rs +++ b/vortex-cuda/src/canonical.rs @@ -6,7 +6,6 @@ use std::sync::Arc; use async_trait::async_trait; use futures::future::try_join_all; use vortex::array::Canonical; -use vortex::array::DynArray; use vortex::array::IntoArray; use vortex::array::arrays::BoolArray; use vortex::array::arrays::DecimalArray; @@ -81,7 +80,7 @@ impl CanonicalCudaExt for Canonical { buffer, validity, .. - } = prim.into_parts(); + } = prim.into_data().into_parts(); Ok(Canonical::Primitive(PrimitiveArray::from_byte_buffer( buffer.try_into_host()?.await?, ptype, @@ -95,7 +94,7 @@ impl CanonicalCudaExt for Canonical { values_type, validity, .. - } = decimal.into_parts(); + } = decimal.into_data().into_parts(); Ok(Canonical::Decimal(unsafe { DecimalArray::new_unchecked_handle( BufferHandle::new_host(values.try_into_host()?.await?), @@ -111,7 +110,7 @@ impl CanonicalCudaExt for Canonical { buffers, validity, dtype, - } = varbinview.into_parts(); + } = varbinview.into_data().into_parts(); // Copy all device views to host let host_views = views.try_into_host()?.await?; diff --git a/vortex-cuda/src/dynamic_dispatch/mod.rs b/vortex-cuda/src/dynamic_dispatch/mod.rs index 11642b85890..cc886f9e81a 100644 --- a/vortex-cuda/src/dynamic_dispatch/mod.rs +++ b/vortex-cuda/src/dynamic_dispatch/mod.rs @@ -434,14 +434,15 @@ mod tests { use vortex::array::validity::Validity::NonNullable; use vortex::buffer::Buffer; use vortex::dtype::PType; - use vortex::encodings::alp::ALPArray; + use vortex::encodings::alp::ALP; use vortex::encodings::alp::ALPFloat; use vortex::encodings::alp::Exponents; use vortex::encodings::alp::alp_encode; + use vortex::encodings::fastlanes::BitPacked; use vortex::encodings::fastlanes::BitPackedArray; - use vortex::encodings::fastlanes::FoRArray; - use vortex::encodings::runend::RunEndArray; - use vortex::encodings::zigzag::ZigZagArray; + use vortex::encodings::fastlanes::FoR; + use vortex::encodings::runend::RunEnd; + use vortex::encodings::zigzag::ZigZag; use vortex::error::VortexExpect; use vortex::error::VortexResult; use vortex::session::VortexSession; @@ -464,7 +465,7 @@ mod tests { .map(|i| ((i as u64) % (max_val + 1)) as u32) .collect(); let primitive = PrimitiveArray::new(Buffer::from(values), NonNullable); - BitPackedArray::encode(&primitive.into_array(), bit_width) + BitPacked::encode(&primitive.into_array(), bit_width) .vortex_expect("failed to create BitPacked array") } @@ -702,7 +703,7 @@ mod tests { let expected: Vec = raw.iter().map(|&v| v + reference).collect(); let bp = bitpacked_array_u32(bit_width, len); - let for_arr = FoRArray::try_new(bp.into_array(), Scalar::from(reference))?; + let for_arr = FoR::try_new(bp.into_array(), Scalar::from(reference))?; let cuda_ctx = CudaSession::create_execution_ctx(&VortexSession::empty())?; let plan = dispatch_plan(&for_arr.into_array(), &cuda_ctx)?; @@ -728,7 +729,7 @@ mod tests { let ends_arr = PrimitiveArray::new(Buffer::from(ends), NonNullable).into_array(); let values_arr = PrimitiveArray::new(Buffer::from(values), NonNullable).into_array(); - let re = RunEndArray::new(ends_arr, values_arr); + let re = RunEnd::new(ends_arr, values_arr); let cuda_ctx = CudaSession::create_execution_ctx(&VortexSession::empty())?; let plan = dispatch_plan(&re.into_array(), &cuda_ctx)?; @@ -754,12 +755,12 @@ mod tests { // BitPack+FoR the dict values let dict_prim = PrimitiveArray::new(Buffer::from(dict_residuals), NonNullable); - let dict_bp = BitPackedArray::encode(&dict_prim.into_array(), 6)?; - let dict_for = FoRArray::try_new(dict_bp.into_array(), Scalar::from(dict_reference))?; + let dict_bp = BitPacked::encode(&dict_prim.into_array(), 6)?; + let dict_for = FoR::try_new(dict_bp.into_array(), Scalar::from(dict_reference))?; // BitPack the codes let codes_prim = PrimitiveArray::new(Buffer::from(codes), NonNullable); - let codes_bp = BitPackedArray::encode(&codes_prim.into_array(), 6)?; + let codes_bp = BitPacked::encode(&codes_prim.into_array(), 6)?; let dict = DictArray::try_new(codes_bp.into_array(), dict_for.into_array())?; @@ -786,11 +787,11 @@ mod tests { let alp = alp_encode(&float_prim, Some(exponents))?; assert!(alp.patches().is_none()); - let for_arr = FoRArray::encode(alp.encoded().to_primitive())?; - let bp = BitPackedArray::encode(for_arr.encoded(), 6)?; + let for_arr = FoR::encode(alp.encoded().to_primitive())?; + let bp = BitPacked::encode(for_arr.encoded(), 6)?; - let tree = ALPArray::new( - FoRArray::try_new(bp.into_array(), for_arr.reference_scalar().clone())?.into_array(), + let tree = ALP::new( + FoR::try_new(bp.into_array(), for_arr.reference_scalar().clone())?.into_array(), exponents, None, ); @@ -821,8 +822,8 @@ mod tests { .collect(); let prim = PrimitiveArray::new(Buffer::from(raw), NonNullable); - let bp = BitPackedArray::encode(&prim.into_array(), bit_width)?; - let zz = ZigZagArray::try_new(bp.into_array())?; + let bp = BitPacked::encode(&prim.into_array(), bit_width)?; + let zz = ZigZag::try_new(bp.into_array())?; let cuda_ctx = CudaSession::create_execution_ctx(&VortexSession::empty())?; let plan = dispatch_plan(&zz.into_array(), &cuda_ctx)?; @@ -850,8 +851,8 @@ mod tests { let ends_arr = PrimitiveArray::new(Buffer::from(ends), NonNullable).into_array(); let values_arr = PrimitiveArray::new(Buffer::from(values), NonNullable).into_array(); - let re = RunEndArray::new(ends_arr, values_arr); - let for_arr = FoRArray::try_new(re.into_array(), Scalar::from(reference))?; + let re = RunEnd::new(ends_arr, values_arr); + let for_arr = FoR::try_new(re.into_array(), Scalar::from(reference))?; let cuda_ctx = CudaSession::create_execution_ctx(&VortexSession::empty())?; let plan = dispatch_plan(&for_arr.into_array(), &cuda_ctx)?; @@ -880,7 +881,7 @@ mod tests { let codes_prim = PrimitiveArray::new(Buffer::from(codes), NonNullable); let values_prim = PrimitiveArray::new(Buffer::from(dict_values), NonNullable); let dict = DictArray::try_new(codes_prim.into_array(), values_prim.into_array())?; - let for_arr = FoRArray::try_new(dict.into_array(), Scalar::from(reference))?; + let for_arr = FoR::try_new(dict.into_array(), Scalar::from(reference))?; let cuda_ctx = CudaSession::create_execution_ctx(&VortexSession::empty())?; let plan = dispatch_plan(&for_arr.into_array(), &cuda_ctx)?; @@ -904,8 +905,8 @@ mod tests { // BitPack codes, then wrap in FoR (reference=0 so values unchanged) let bit_width: u8 = 3; let codes_prim = PrimitiveArray::new(Buffer::from(codes), NonNullable); - let codes_bp = BitPackedArray::encode(&codes_prim.into_array(), bit_width)?; - let codes_for = FoRArray::try_new(codes_bp.into_array(), Scalar::from(0u32))?; + let codes_bp = BitPacked::encode(&codes_prim.into_array(), bit_width)?; + let codes_for = FoR::try_new(codes_bp.into_array(), Scalar::from(0u32))?; let values_prim = PrimitiveArray::new(Buffer::from(dict_values), NonNullable); let dict = DictArray::try_new(codes_for.into_array(), values_prim.into_array())?; @@ -930,7 +931,7 @@ mod tests { let bit_width: u8 = 2; let codes_prim = PrimitiveArray::new(Buffer::from(codes), NonNullable); - let codes_bp = BitPackedArray::encode(&codes_prim.into_array(), bit_width)?; + let codes_bp = BitPacked::encode(&codes_prim.into_array(), bit_width)?; let values_prim = PrimitiveArray::new(Buffer::from(dict_values), NonNullable); let dict = DictArray::try_new(codes_bp.into_array(), values_prim.into_array())?; @@ -971,7 +972,7 @@ mod tests { let ends_arr = PrimitiveArray::new(Buffer::from(ends), NonNullable).into_array(); let values_arr = PrimitiveArray::new(Buffer::from(values), NonNullable).into_array(); - let re = RunEndArray::new(ends_arr, values_arr); + let re = RunEnd::new(ends_arr, values_arr); // DispatchPlan::new should return Unfused because u64 ends != i32 values in byte width. assert!(matches!( @@ -1056,8 +1057,8 @@ mod tests { .collect(); let prim = PrimitiveArray::new(Buffer::from(raw), NonNullable); - let bp = BitPackedArray::encode(&prim.into_array(), bit_width)?; - let zz = ZigZagArray::try_new(bp.into_array())?; + let bp = BitPacked::encode(&prim.into_array(), bit_width)?; + let zz = ZigZag::try_new(bp.into_array())?; let sliced = zz.into_array().slice(slice_start..slice_end)?; let expected: Vec = all_decoded[slice_start..slice_end].to_vec(); @@ -1152,7 +1153,7 @@ mod tests { let data: Vec = (0..len).map(|i| (i as u32) % max_val).collect(); let prim = PrimitiveArray::new(Buffer::from(data.clone()), NonNullable); - let bp = BitPackedArray::encode(&prim.into_array(), bit_width)?; + let bp = BitPacked::encode(&prim.into_array(), bit_width)?; let sliced = bp.into_array().slice(slice_start..slice_end)?; let expected: Vec = data[slice_start..slice_end].to_vec(); @@ -1198,8 +1199,8 @@ mod tests { let encoded_data: Vec = (0..len).map(|i| (i as u32) % max_val).collect(); let prim = PrimitiveArray::new(Buffer::from(encoded_data.clone()), NonNullable); - let bp = BitPackedArray::encode(&prim.into_array(), bit_width)?; - let for_arr = FoRArray::try_new(bp.into_array(), Scalar::from(reference))?; + let bp = BitPacked::encode(&prim.into_array(), bit_width)?; + let for_arr = FoR::try_new(bp.into_array(), Scalar::from(reference))?; let all_decoded: Vec = encoded_data.iter().map(|&v| v + reference).collect(); @@ -1251,12 +1252,12 @@ mod tests { // BitPack+FoR the dict values let dict_prim = PrimitiveArray::new(Buffer::from(dict_residuals), NonNullable); - let dict_bp = BitPackedArray::encode(&dict_prim.into_array(), 6)?; - let dict_for = FoRArray::try_new(dict_bp.into_array(), Scalar::from(dict_reference))?; + let dict_bp = BitPacked::encode(&dict_prim.into_array(), 6)?; + let dict_for = FoR::try_new(dict_bp.into_array(), Scalar::from(dict_reference))?; // BitPack the codes let codes_prim = PrimitiveArray::new(Buffer::from(codes), NonNullable); - let codes_bp = BitPackedArray::encode(&codes_prim.into_array(), 6)?; + let codes_bp = BitPacked::encode(&codes_prim.into_array(), 6)?; let dict = DictArray::try_new(codes_bp.into_array(), dict_for.into_array())?; @@ -1289,11 +1290,11 @@ mod tests { #[case] len: usize, ) -> VortexResult<()> { use vortex::dtype::Nullability; - use vortex::encodings::sequence::SequenceArray; + use vortex::encodings::sequence::Sequence; let expected: Vec = (0..len).map(|i| base + (i as u32) * multiplier).collect(); - let seq = SequenceArray::try_new_typed(base, multiplier, Nullability::NonNullable, len)?; + let seq = Sequence::try_new_typed(base, multiplier, Nullability::NonNullable, len)?; let cuda_ctx = CudaSession::create_execution_ctx(&VortexSession::empty())?; let plan = dispatch_plan(&seq.into_array(), &cuda_ctx)?; @@ -1322,11 +1323,11 @@ mod tests { #[case] len: usize, ) -> VortexResult<()> { use vortex::dtype::Nullability; - use vortex::encodings::sequence::SequenceArray; + use vortex::encodings::sequence::Sequence; let expected: Vec = (0..len).map(|i| base + (i as i32) * multiplier).collect(); - let seq = SequenceArray::try_new_typed(base, multiplier, Nullability::NonNullable, len)?; + let seq = Sequence::try_new_typed(base, multiplier, Nullability::NonNullable, len)?; let cuda_ctx = CudaSession::create_execution_ctx(&VortexSession::empty())?; let plan = dispatch_plan(&seq.into_array(), &cuda_ctx)?; diff --git a/vortex-cuda/src/dynamic_dispatch/plan_builder.rs b/vortex-cuda/src/dynamic_dispatch/plan_builder.rs index 920fe4ea6bc..a59a69a173d 100644 --- a/vortex-cuda/src/dynamic_dispatch/plan_builder.rs +++ b/vortex-cuda/src/dynamic_dispatch/plan_builder.rs @@ -9,7 +9,6 @@ use itertools::zip_eq; use tracing::trace; use vortex::array::ArrayRef; -use vortex::array::DynArray; use vortex::array::arrays::Dict; use vortex::array::arrays::Primitive; use vortex::array::arrays::Slice; diff --git a/vortex-cuda/src/executor.rs b/vortex-cuda/src/executor.rs index 5f8e81fc226..9ae518540bd 100644 --- a/vortex-cuda/src/executor.rs +++ b/vortex-cuda/src/executor.rs @@ -17,7 +17,6 @@ use tracing::debug; use tracing::trace; use vortex::array::ArrayRef; use vortex::array::Canonical; -use vortex::array::DynArray; use vortex::array::ExecutionCtx; use vortex::array::IntoArray; use vortex::array::arrays::Struct; @@ -343,7 +342,7 @@ pub trait CudaExecute: 'static + Send + Sync + Debug { /// Extension trait for executing arrays on CUDA. #[async_trait] -pub trait CudaArrayExt: DynArray { +pub trait CudaArrayExt { /// Recursively walks the encoding tree, dispatching each layer to its /// registered [`CudaExecute`] implementation and returning a canonical array /// on the device. diff --git a/vortex-cuda/src/hybrid_dispatch/mod.rs b/vortex-cuda/src/hybrid_dispatch/mod.rs index 36a04e6402f..06ac2c2738d 100644 --- a/vortex-cuda/src/hybrid_dispatch/mod.rs +++ b/vortex-cuda/src/hybrid_dispatch/mod.rs @@ -44,7 +44,6 @@ use tracing::trace; use vortex::array::ArrayRef; use vortex::array::Canonical; -use vortex::array::DynArray; use vortex::dtype::PType; use vortex::error::VortexResult; use vortex::error::vortex_err; @@ -88,7 +87,7 @@ pub async fn try_gpu_dispatch( // TODO(0ax1): execute subtrees concurrently using separate CUDA streams. for subtree in &pending_subtrees { let canonical = subtree.clone().execute_cuda(ctx).await?; - subtree_buffers.push(canonical.into_primitive().into_parts().buffer); + subtree_buffers.push(canonical.into_primitive().into_data().into_parts().buffer); } let num_subtrees = subtree_buffers.len(); @@ -112,14 +111,13 @@ pub async fn try_gpu_dispatch( #[cfg(test)] mod tests { - use vortex::array::DynArray; use vortex::array::IntoArray; use vortex::array::arrays::PrimitiveArray; use vortex::array::assert_arrays_eq; use vortex::array::validity::Validity::NonNullable; use vortex::buffer::Buffer; - use vortex::encodings::fastlanes::BitPackedArray; - use vortex::encodings::fastlanes::FoRArray; + use vortex::encodings::fastlanes::BitPacked; + use vortex::encodings::fastlanes::FoR; use vortex::error::VortexExpect; use vortex::error::VortexResult; use vortex::mask::Mask; @@ -135,12 +133,12 @@ mod tests { let mut ctx = CudaSession::create_execution_ctx(&VortexSession::empty()).vortex_expect("ctx"); let values: Vec = (0..2048).map(|i| (i % 128) as u32).collect(); - let bp = BitPackedArray::encode( + let bp = BitPacked::encode( &PrimitiveArray::new(Buffer::from(values), NonNullable).into_array(), 7, ) .vortex_expect("bp"); - let arr = FoRArray::try_new(bp.into_array(), 1000u32.into()).vortex_expect("for"); + let arr = FoR::try_new(bp.into_array(), 1000u32.into()).vortex_expect("for"); let cpu = arr.to_canonical()?.into_array(); let gpu = arr @@ -158,19 +156,19 @@ mod tests { /// Exercises the unsigned type reinterpretation in CudaDispatchPlan::execute. #[crate::test] async fn test_fused_f32() -> VortexResult<()> { - use vortex::encodings::alp::ALPArray; + use vortex::encodings::alp::ALP; use vortex::encodings::alp::Exponents; let mut ctx = CudaSession::create_execution_ctx(&VortexSession::empty()).vortex_expect("ctx"); let encoded: Vec = (0i32..2048).map(|i| i % 500).collect(); - let bp = BitPackedArray::encode( + let bp = BitPacked::encode( &PrimitiveArray::new(Buffer::from(encoded), NonNullable).into_array(), 9, ) .vortex_expect("bp"); - let alp = ALPArray::try_new( - FoRArray::try_new(bp.into_array(), 0i32.into()) + let alp = ALP::try_new( + FoR::try_new(bp.into_array(), 0i32.into()) .vortex_expect("for") .into_array(), Exponents { e: 0, f: 2 }, @@ -195,7 +193,7 @@ mod tests { use vortex::array::patches::Patches; use vortex::array::validity::Validity::NonNullable as NN; use vortex::buffer::buffer; - use vortex::encodings::alp::ALPArray; + use vortex::encodings::alp::ALP; use vortex::encodings::alp::Exponents; let mut ctx = @@ -213,7 +211,7 @@ mod tests { None, ) .unwrap(); - let arr = ALPArray::try_new(encoded, Exponents { e: 0, f: 2 }, Some(patches))?; + let arr = ALP::try_new(encoded, Exponents { e: 0, f: 2 }, Some(patches))?; let cpu = arr.to_canonical()?.into_array(); let gpu = arr @@ -237,7 +235,7 @@ mod tests { use vortex::array::session::ArraySessionExt; use vortex::encodings::fastlanes; use vortex::encodings::zstd::ZstdBuffers; - use vortex::encodings::zstd::ZstdBuffersArray; + use vortex::encodings::zstd::ZstdBuffersData; let mut session = VortexSession::empty(); fastlanes::initialize(&mut session); @@ -253,14 +251,12 @@ mod tests { NonNullable, ) .into_array(); - let vals = FoRArray::try_new( - BitPackedArray::encode(&vals, 6) - .vortex_expect("bp") - .into_array(), + let vals = FoR::try_new( + BitPacked::encode(&vals, 6).vortex_expect("bp").into_array(), 0u32.into(), ) .vortex_expect("for"); - let vals = ZstdBuffersArray::compress(&vals.into_array(), 3).vortex_expect("zstd"); + let vals = ZstdBuffersData::compress(&vals.into_array(), 3).vortex_expect("zstd"); // codes = FoR(BitPacked) let codes = PrimitiveArray::new( @@ -268,8 +264,8 @@ mod tests { NonNullable, ) .into_array(); - let codes = FoRArray::try_new( - BitPackedArray::encode(&codes, 6) + let codes = FoR::try_new( + BitPacked::encode(&codes, 6) .vortex_expect("bp") .into_array(), 0u32.into(), @@ -302,12 +298,12 @@ mod tests { let len = 2048u32; let data: Vec = (0..len).map(|i| i % 128).collect(); - let bp = BitPackedArray::encode( + let bp = BitPacked::encode( &PrimitiveArray::new(Buffer::from(data.clone()), NonNullable).into_array(), 7, ) .vortex_expect("bp"); - let for_arr = FoRArray::try_new(bp.into_array(), 100u32.into()).vortex_expect("for"); + let for_arr = FoR::try_new(bp.into_array(), 100u32.into()).vortex_expect("for"); // Keep every other element. let mask = Mask::from_iter((0..len as usize).map(|i| i % 2 == 0)); diff --git a/vortex-cuda/src/kernel/arrays/dict.rs b/vortex-cuda/src/kernel/arrays/dict.rs index 6b2e00a1580..4015bbcddbb 100644 --- a/vortex-cuda/src/kernel/arrays/dict.rs +++ b/vortex-cuda/src/kernel/arrays/dict.rs @@ -65,7 +65,7 @@ impl CudaExecute for DictExecutor { #[expect(clippy::cognitive_complexity)] async fn execute_dict_prim(dict: DictArray, ctx: &mut CudaExecutionCtx) -> VortexResult { - let DictArrayParts { values, codes, .. } = dict.into_parts(); + let DictArrayParts { values, codes, .. } = dict.into_data().into_parts(); // Execute both children to get them as primitives on the device let values_canonical = values.execute_cuda(ctx).await?; @@ -98,12 +98,12 @@ async fn execute_dict_prim_typed 0, "Non empty array"); let offset = offset as usize; @@ -198,7 +198,7 @@ mod tests { let array = PrimitiveArray::new(iter.collect::>(), NonNullable); // Last two items should be patched - let bp_with_patches = BitPackedArray::encode(&array.into_array(), bw)?; + let bp_with_patches = BitPacked::encode(&array.into_array(), bw)?; assert!(bp_with_patches.patches().is_some()); let cpu_result = bp_with_patches.to_canonical()?.into_array(); @@ -229,7 +229,7 @@ mod tests { ); // Last two items should be patched - let bp_with_patches = BitPackedArray::encode(&array.into_array(), 9)?; + let bp_with_patches = BitPacked::encode(&array.into_array(), 9)?; assert!(bp_with_patches.patches().is_some()); let cpu_result = bp_with_patches.to_canonical()?.into_array(); @@ -271,7 +271,7 @@ mod tests { NonNullable, ); - let bitpacked_array = BitPackedArray::encode(&primitive_array.into_array(), bit_width) + let bitpacked_array = BitPacked::encode(&primitive_array.into_array(), bit_width) .vortex_expect("operation should succeed in test"); let cpu_result = bitpacked_array.to_canonical()?; @@ -320,7 +320,7 @@ mod tests { NonNullable, ); - let bitpacked_array = BitPackedArray::encode(&primitive_array.into_array(), bit_width) + let bitpacked_array = BitPacked::encode(&primitive_array.into_array(), bit_width) .vortex_expect("operation should succeed in test"); let cpu_result = bitpacked_array.to_canonical()?; @@ -385,7 +385,7 @@ mod tests { NonNullable, ); - let bitpacked_array = BitPackedArray::encode(&primitive_array.into_array(), bit_width) + let bitpacked_array = BitPacked::encode(&primitive_array.into_array(), bit_width) .vortex_expect("operation should succeed in test"); let cpu_result = bitpacked_array.to_canonical()?; @@ -482,7 +482,7 @@ mod tests { NonNullable, ); - let bitpacked_array = BitPackedArray::encode(&primitive_array.into_array(), bit_width) + let bitpacked_array = BitPacked::encode(&primitive_array.into_array(), bit_width) .vortex_expect("operation should succeed in test"); let cpu_result = bitpacked_array.to_canonical()?; let gpu_result = block_on(async { @@ -515,7 +515,7 @@ mod tests { NonNullable, ); - let bitpacked_array = BitPackedArray::encode(&primitive_array.into_array(), bit_width) + let bitpacked_array = BitPacked::encode(&primitive_array.into_array(), bit_width) .vortex_expect("operation should succeed in test"); let sliced_array = bitpacked_array.into_array().slice(67..3969)?; assert!(sliced_array.is::()); diff --git a/vortex-cuda/src/kernel/encodings/date_time_parts.rs b/vortex-cuda/src/kernel/encodings/date_time_parts.rs index 50a74630160..da21f267d32 100644 --- a/vortex-cuda/src/kernel/encodings/date_time_parts.rs +++ b/vortex-cuda/src/kernel/encodings/date_time_parts.rs @@ -150,15 +150,15 @@ where let PrimitiveArrayParts { buffer: days_buffer, .. - } = days.into_parts(); + } = days.into_data().into_parts(); let PrimitiveArrayParts { buffer: seconds_buffer, .. - } = seconds.into_parts(); + } = seconds.into_data().into_parts(); let PrimitiveArrayParts { buffer: subseconds_buffer, .. - } = subseconds.into_parts(); + } = subseconds.into_data().into_parts(); // Move buffers to device if not already there let days_device = ctx.ensure_on_device(days_buffer).await?; @@ -208,6 +208,7 @@ mod tests { use vortex::array::validity::Validity; use vortex::buffer::Buffer; use vortex::buffer::buffer; + use vortex::encodings::datetime_parts::DateTimeParts; use vortex::encodings::datetime_parts::DateTimePartsArray; use vortex::error::VortexExpect; use vortex::error::VortexResult; @@ -237,7 +238,7 @@ mod tests { None, ); - DateTimePartsArray::try_new( + DateTimeParts::try_new( temporal.dtype().clone(), days_arr, seconds_arr, @@ -348,7 +349,7 @@ mod tests { None, ); - let dtp_array = DateTimePartsArray::try_new( + let dtp_array = DateTimeParts::try_new( temporal.dtype().clone(), days_arr, seconds_arr, diff --git a/vortex-cuda/src/kernel/encodings/decimal_byte_parts.rs b/vortex-cuda/src/kernel/encodings/decimal_byte_parts.rs index f7f381708af..134e5c99374 100644 --- a/vortex-cuda/src/kernel/encodings/decimal_byte_parts.rs +++ b/vortex-cuda/src/kernel/encodings/decimal_byte_parts.rs @@ -35,13 +35,18 @@ impl CudaExecute for DecimalBytePartsExecutor { }; let decimal_dtype = *array.decimal_dtype(); - let DecimalBytePartsArrayParts { msp, .. } = array.into_parts(); + let DecimalBytePartsArrayParts { msp, .. } = array.into_data().into_parts(); let PrimitiveArrayParts { buffer, ptype, validity, .. - } = msp.execute_cuda(ctx).await?.into_primitive().into_parts(); + } = msp + .execute_cuda(ctx) + .await? + .into_primitive() + .into_data() + .into_parts(); // SAFETY: The primitive array's buffer is already validated with correct type. // The decimal dtype matches the array's dtype, and validity is preserved. @@ -60,7 +65,7 @@ mod tests { use vortex::array::validity::Validity; use vortex::buffer::Buffer; use vortex::dtype::DecimalDType; - use vortex::encodings::decimal_byte_parts::DecimalBytePartsArray; + use vortex::encodings::decimal_byte_parts::DecimalByteParts; use vortex::error::VortexExpect; use vortex::session::VortexSession; @@ -82,7 +87,7 @@ mod tests { .vortex_expect("create execution context"); let decimal_dtype = DecimalDType::new(precision, scale); - let dbp_array = DecimalBytePartsArray::try_new( + let dbp_array = DecimalByteParts::try_new( PrimitiveArray::new(encoded, Validity::NonNullable).into_array(), decimal_dtype, ) diff --git a/vortex-cuda/src/kernel/encodings/for_.rs b/vortex-cuda/src/kernel/encodings/for_.rs index 29e00f4ec92..57361905c90 100644 --- a/vortex-cuda/src/kernel/encodings/for_.rs +++ b/vortex-cuda/src/kernel/encodings/for_.rs @@ -9,7 +9,7 @@ use cudarc::driver::PushKernelArg; use tracing::instrument; use vortex::array::ArrayRef; use vortex::array::Canonical; -use vortex::array::DynArray; +use vortex::array::IntoArray; use vortex::array::arrays::PrimitiveArray; use vortex::array::arrays::Slice; use vortex::array::arrays::primitive::PrimitiveArrayParts; @@ -54,7 +54,7 @@ impl CudaExecute for FoRExecutor { if let Some(bitpacked) = array.encoded().as_opt::() { match_each_integer_ptype!(bitpacked.ptype(), |P| { let reference: P = array.reference_scalar().try_into()?; - return decode_bitpacked(bitpacked.clone(), reference, ctx).await; + return decode_bitpacked(bitpacked.into_owned(), reference, ctx).await; }) } @@ -65,10 +65,14 @@ impl CudaExecute for FoRExecutor { let slice_range = slice_array.slice_range().clone(); let unpacked = match_each_integer_ptype!(bitpacked.ptype(), |P| { let reference: P = array.reference_scalar().try_into()?; - decode_bitpacked(bitpacked.clone(), reference, ctx).await? + decode_bitpacked(bitpacked.into_owned(), reference, ctx).await? }); - return unpacked.into_primitive().slice(slice_range)?.to_canonical(); + return unpacked + .into_primitive() + .into_array() + .slice(slice_range)? + .to_canonical(); } match_each_native_simd_ptype!(array.ptype(), |P| { decode_for::

(array, ctx).await }) @@ -94,7 +98,7 @@ where let primitive = canonical.into_primitive(); let PrimitiveArrayParts { buffer, validity, .. - } = primitive.into_parts(); + } = primitive.into_data().into_parts(); let device_buffer = ctx.ensure_on_device(buffer).await?; @@ -127,7 +131,8 @@ mod tests { use vortex::array::validity::Validity::NonNullable; use vortex::buffer::Buffer; use vortex::dtype::NativePType; - use vortex::encodings::fastlanes::BitPackedArray; + use vortex::encodings::fastlanes::BitPacked; + use vortex::encodings::fastlanes::FoR; use vortex::encodings::fastlanes::FoRArray; use vortex::error::VortexExpect; use vortex::scalar::Scalar; @@ -138,7 +143,7 @@ mod tests { use crate::session::CudaSession; fn make_for_array>(input_data: Vec, reference: T) -> FoRArray { - FoRArray::try_new( + FoR::try_new( PrimitiveArray::new(Buffer::from(input_data), NonNullable).into_array(), reference.into(), ) @@ -180,8 +185,8 @@ mod tests { .take(1024) .collect::>() .into_array(); - let packed = BitPackedArray::encode(&values, 3).unwrap().into_array(); - let for_array = FoRArray::try_new(packed, (-8i8).into()).unwrap(); + let packed = BitPacked::encode(&values, 3).unwrap().into_array(); + let for_array = FoR::try_new(packed, (-8i8).into()).unwrap(); let cpu_result = for_array.to_canonical().unwrap(); diff --git a/vortex-cuda/src/kernel/encodings/runend.rs b/vortex-cuda/src/kernel/encodings/runend.rs index 944545b3c44..6f14ec20c9c 100644 --- a/vortex-cuda/src/kernel/encodings/runend.rs +++ b/vortex-cuda/src/kernel/encodings/runend.rs @@ -9,6 +9,7 @@ use cudarc::driver::PushKernelArg; use tracing::instrument; use vortex::array::ArrayRef; use vortex::array::Canonical; +use vortex::array::IntoArray; use vortex::array::arrays::ConstantArray; use vortex::array::arrays::PrimitiveArray; use vortex::array::arrays::primitive::PrimitiveArrayParts; @@ -60,7 +61,7 @@ impl CudaExecute for RunEndExecutor { let offset = array.offset(); let output_len = array.len(); - let RunEndArrayParts { ends, values } = array.into_parts(); + let RunEndArrayParts { ends, values } = array.into_data().into_parts(); let values_ptype = PType::try_from(values.dtype())?; let ends_ptype = PType::try_from(ends.dtype())?; @@ -75,6 +76,7 @@ impl CudaExecute for RunEndExecutor { if matches!(values.validity()?, Validity::AllInvalid) { return ConstantArray::new(Scalar::null(values.dtype().clone()), output_len) + .into_array() .to_canonical(); } @@ -108,12 +110,12 @@ async fn decode_runend_typed()?; @@ -89,7 +89,7 @@ mod tests { use vortex::array::assert_arrays_eq; use vortex::dtype::NativePType; use vortex::dtype::Nullability; - use vortex::encodings::sequence::SequenceArray; + use vortex::encodings::sequence::Sequence; use vortex::scalar::PValue; use vortex::session::VortexSession; @@ -126,7 +126,7 @@ mod tests { ) { let mut cuda_ctx = CudaSession::create_execution_ctx(&VortexSession::empty()).unwrap(); - let array = SequenceArray::try_new_typed(base, multiplier, nullability, len).unwrap(); + let array = Sequence::try_new_typed(base, multiplier, nullability, len).unwrap(); let cpu_result = array.to_canonical().unwrap().into_array(); diff --git a/vortex-cuda/src/kernel/encodings/zigzag.rs b/vortex-cuda/src/kernel/encodings/zigzag.rs index 7e470299ac7..f1feac1bbf3 100644 --- a/vortex-cuda/src/kernel/encodings/zigzag.rs +++ b/vortex-cuda/src/kernel/encodings/zigzag.rs @@ -72,7 +72,7 @@ where let primitive = canonical.into_primitive(); let PrimitiveArrayParts { buffer, validity, .. - } = primitive.into_parts(); + } = primitive.into_data().into_parts(); let device_buffer = ctx.ensure_on_device(buffer).await?; @@ -102,7 +102,7 @@ mod tests { use vortex::array::assert_arrays_eq; use vortex::array::validity::Validity::NonNullable; use vortex::buffer::Buffer; - use vortex::encodings::zigzag::ZigZagArray; + use vortex::encodings::zigzag::ZigZag; use vortex::error::VortexExpect; use vortex::session::VortexSession; @@ -119,7 +119,7 @@ mod tests { // So encoded [0, 2, 4, 1, 3] should decode to [0, 1, 2, -1, -2] let encoded_data: Vec = vec![0, 2, 4, 1, 3]; - let zigzag_array = ZigZagArray::try_new( + let zigzag_array = ZigZag::try_new( PrimitiveArray::new(Buffer::from(encoded_data), NonNullable).into_array(), )?; diff --git a/vortex-cuda/src/kernel/encodings/zstd.rs b/vortex-cuda/src/kernel/encodings/zstd.rs index 06ff9094691..a521fe7a27f 100644 --- a/vortex-cuda/src/kernel/encodings/zstd.rs +++ b/vortex-cuda/src/kernel/encodings/zstd.rs @@ -185,7 +185,7 @@ pub(crate) struct ZstdExecutor; impl ZstdExecutor { fn try_specialize(array: ArrayRef) -> Option { - array.as_opt::().cloned() + array.try_into::().ok() } } @@ -199,7 +199,7 @@ impl CudaExecute for ZstdExecutor { ) -> VortexResult { let zstd = Self::try_specialize(array).ok_or_else(|| vortex_err!("Expected ZstdArray"))?; - match zstd.as_ref().dtype() { + match zstd.dtype() { DType::Binary(_) | DType::Utf8(_) => decode_zstd(zstd, ctx).await, _other => { debug!( @@ -222,7 +222,7 @@ async fn decode_zstd(array: ZstdArray, ctx: &mut CudaExecutionCtx) -> VortexResu dictionary, slice_start, slice_stop, - } = array.into_parts(); + } = array.into_data().into_parts(); // nvCOMP doesn't support ZSTD dictionaries. if dictionary.is_some() { @@ -350,7 +350,7 @@ mod tests { use vortex::array::IntoArray; use vortex::array::arrays::VarBinViewArray; use vortex::array::assert_arrays_eq; - use vortex::encodings::zstd::ZstdArray; + use vortex::encodings::zstd::Zstd; use vortex::error::VortexResult; use vortex::session::VortexSession; @@ -371,7 +371,7 @@ mod tests { "baz", ]); - let zstd_array = ZstdArray::from_var_bin_view(&strings, 3, 0)?; + let zstd_array = Zstd::from_var_bin_view(&strings, 3, 0)?; let cpu_result = zstd_array .decompress(cuda_ctx.execution_ctx())? @@ -408,7 +408,7 @@ mod tests { // Compress with ZSTD using values_per_frame=3 to create multiple frames. // 14 strings and 3 values per frame = ceil(14/3) = 5 frames. - let zstd_array = ZstdArray::from_var_bin_view(&strings, 3, 3)?; + let zstd_array = Zstd::from_var_bin_view(&strings, 3, 3)?; let cpu_result = zstd_array .decompress(cuda_ctx.execution_ctx())? @@ -439,7 +439,7 @@ mod tests { "final test string", ]); - let zstd_array = ZstdArray::from_var_bin_view(&strings, 3, 0)?; + let zstd_array = Zstd::from_var_bin_view(&strings, 3, 0)?; // Slice the array to get a subset (indices 2..7) let sliced_zstd = zstd_array.slice(2..7)?; diff --git a/vortex-cuda/src/kernel/encodings/zstd_buffers.rs b/vortex-cuda/src/kernel/encodings/zstd_buffers.rs index c2ef46458a5..1891ee2375c 100644 --- a/vortex-cuda/src/kernel/encodings/zstd_buffers.rs +++ b/vortex-cuda/src/kernel/encodings/zstd_buffers.rs @@ -223,7 +223,7 @@ mod tests { use vortex::array::arrays::PrimitiveArray; use vortex::array::arrays::VarBinViewArray; use vortex::array::assert_arrays_eq; - use vortex::encodings::zstd::ZstdBuffersArray; + use vortex::encodings::zstd::ZstdBuffersData; use vortex::error::VortexExpect; use vortex::error::VortexResult; use vortex::session::VortexSession; @@ -238,7 +238,7 @@ mod tests { .vortex_expect("failed to create execution context"); let input = PrimitiveArray::from_iter(0i64..1024).into_array(); - let compressed = ZstdBuffersArray::compress(&input, 3)?; + let compressed = ZstdBuffersData::compress(&input, 3)?; let cpu_result = compressed.clone().into_array().to_canonical()?; let gpu_result = ZstdBuffersExecutor @@ -265,7 +265,7 @@ mod tests { "baz", ]) .into_array(); - let compressed = ZstdBuffersArray::compress(&input, 3)?; + let compressed = ZstdBuffersData::compress(&input, 3)?; let cpu_result = compressed.clone().into_array().to_canonical()?; let gpu_result = ZstdBuffersExecutor diff --git a/vortex-cuda/src/kernel/filter/decimal.rs b/vortex-cuda/src/kernel/filter/decimal.rs index 00e50d50b23..88e07465968 100644 --- a/vortex-cuda/src/kernel/filter/decimal.rs +++ b/vortex-cuda/src/kernel/filter/decimal.rs @@ -23,7 +23,7 @@ pub(super) async fn filter_decimal(values, mask, ctx).await?; diff --git a/vortex-cuda/src/kernel/filter/mod.rs b/vortex-cuda/src/kernel/filter/mod.rs index 46edfe8a148..588c3e07925 100644 --- a/vortex-cuda/src/kernel/filter/mod.rs +++ b/vortex-cuda/src/kernel/filter/mod.rs @@ -53,7 +53,7 @@ impl CudaExecute for FilterExecutor { .try_into::() .map_err(|_| vortex_err!("Expected FilterArray"))?; - let FilterArrayParts { child, mask } = filter_array.into_parts(); + let FilterArrayParts { child, mask } = filter_array.into_data().into_parts(); // Early return for trivial cases. match mask { diff --git a/vortex-cuda/src/kernel/filter/primitive.rs b/vortex-cuda/src/kernel/filter/primitive.rs index 72929e5190d..68e39edd60f 100644 --- a/vortex-cuda/src/kernel/filter/primitive.rs +++ b/vortex-cuda/src/kernel/filter/primitive.rs @@ -24,7 +24,7 @@ where { let PrimitiveArrayParts { buffer, validity, .. - } = array.into_parts(); + } = array.into_data().into_parts(); let filtered_validity = validity.filter(&mask)?; let filtered_values = filter_sized::(buffer, mask, ctx).await?; diff --git a/vortex-cuda/src/kernel/filter/varbinview.rs b/vortex-cuda/src/kernel/filter/varbinview.rs index 73d861116ce..143e3f26ce7 100644 --- a/vortex-cuda/src/kernel/filter/varbinview.rs +++ b/vortex-cuda/src/kernel/filter/varbinview.rs @@ -20,7 +20,7 @@ pub(super) async fn filter_varbinview( buffers, validity, dtype, - } = array.into_parts(); + } = array.into_data().into_parts(); let filtered_validity = validity.filter(&mask)?; diff --git a/vortex-cuda/src/kernel/patches/mod.rs b/vortex-cuda/src/kernel/patches/mod.rs index dd107e87154..9da4ddf8f51 100644 --- a/vortex-cuda/src/kernel/patches/mod.rs +++ b/vortex-cuda/src/kernel/patches/mod.rs @@ -70,12 +70,12 @@ pub(crate) async fn execute_patches< let PrimitiveArrayParts { buffer: indices_buffer, .. - } = indices.into_parts(); + } = indices.into_data().into_parts(); let PrimitiveArrayParts { buffer: values_buffer, .. - } = values.into_parts(); + } = values.into_data().into_parts(); let d_patch_indices = ctx.ensure_on_device(indices_buffer).await?; let d_patch_values = ctx.ensure_on_device(values_buffer).await?; @@ -170,7 +170,7 @@ mod tests { let PrimitiveArrayParts { buffer: cuda_buffer, .. - } = values.into_parts(); + } = values.into_data().into_parts(); let handle = ctx.ensure_on_device(cuda_buffer).await.unwrap(); let device_buf = handle diff --git a/vortex-cuda/src/kernel/patches/types.rs b/vortex-cuda/src/kernel/patches/types.rs index b33f5e09c93..78fa0b8429e 100644 --- a/vortex-cuda/src/kernel/patches/types.rs +++ b/vortex-cuda/src/kernel/patches/types.rs @@ -5,12 +5,12 @@ //! patching enables fully parallel GPU execution, as outlined by Hepkema et al. in //! "G-ALP: Rethinking Light-weight Encodings for GPUs" +use vortex::array::Canonical; +use vortex::array::buffer::BufferHandle; +use vortex::array::dtype::IntegerPType; +use vortex::array::dtype::NativePType; use vortex::buffer::Buffer; use vortex::buffer::BufferMut; -use vortex_array::Canonical; -use vortex_array::buffer::BufferHandle; -use vortex_array::dtype::IntegerPType; -use vortex_array::dtype::NativePType; use vortex_array::match_each_native_ptype; use vortex_array::match_each_unsigned_integer_ptype; use vortex_array::patches::Patches; @@ -239,10 +239,10 @@ fn transpose( #[cfg(test)] mod tests { + use vortex::array::ExecutionCtx; use vortex::buffer::BufferMut; use vortex::buffer::buffer; use vortex::buffer::buffer_mut; - use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::LEGACY_SESSION; use vortex_array::arrays::PrimitiveArray; diff --git a/vortex-cuda/src/kernel/slice/mod.rs b/vortex-cuda/src/kernel/slice/mod.rs index 15b91ec0f21..b418e0675f7 100644 --- a/vortex-cuda/src/kernel/slice/mod.rs +++ b/vortex-cuda/src/kernel/slice/mod.rs @@ -5,7 +5,7 @@ use async_trait::async_trait; use tracing::instrument; use vortex::array::ArrayRef; use vortex::array::Canonical; -use vortex::array::DynArray; +use vortex::array::IntoArray; use vortex::array::arrays::Slice; use vortex::array::arrays::slice::SliceArrayParts; use vortex::error::VortexResult; @@ -33,16 +33,24 @@ impl CudaExecute for SliceExecutor { ) })?; - let SliceArrayParts { child, range } = slice_array.into_parts(); + let SliceArrayParts { child, range } = slice_array.into_data().into_parts(); let child = child.execute_cuda(ctx).await?; match child { - Canonical::Null(null_array) => null_array.slice(range)?.to_canonical(), - Canonical::Bool(bool_array) => bool_array.slice(range)?.to_canonical(), - Canonical::Primitive(prim_array) => prim_array.slice(range)?.to_canonical(), - Canonical::Decimal(decimal_array) => decimal_array.slice(range)?.to_canonical(), - Canonical::VarBinView(varbinview) => varbinview.slice(range)?.to_canonical(), - Canonical::Extension(extension_array) => extension_array.slice(range)?.to_canonical(), + Canonical::Null(null_array) => null_array.into_array().slice(range)?.to_canonical(), + Canonical::Bool(bool_array) => bool_array.into_array().slice(range)?.to_canonical(), + Canonical::Primitive(prim_array) => { + prim_array.into_array().slice(range)?.to_canonical() + } + Canonical::Decimal(decimal_array) => { + decimal_array.into_array().slice(range)?.to_canonical() + } + Canonical::VarBinView(varbinview) => { + varbinview.into_array().slice(range)?.to_canonical() + } + Canonical::Extension(extension_array) => { + extension_array.into_array().slice(range)?.to_canonical() + } c => todo!("Slice kernel not implemented for {}", c.dtype()), } } diff --git a/vortex-cuda/src/layout.rs b/vortex-cuda/src/layout.rs index e598db6a5b2..bd9fd51e276 100644 --- a/vortex-cuda/src/layout.rs +++ b/vortex-cuda/src/layout.rs @@ -15,10 +15,7 @@ use futures::StreamExt; use futures::future::BoxFuture; use vortex::array::ArrayContext; use vortex::array::ArrayRef; -use vortex::array::ArrayVisitor; -use vortex::array::ArrayVisitorExt; use vortex::array::DeserializeMetadata; -use vortex::array::DynArray; use vortex::array::MaskFuture; use vortex::array::ProstMetadata; use vortex::array::VortexSessionExecute; diff --git a/vortex-cuda/src/session.rs b/vortex-cuda/src/session.rs index 733c5fd636b..e6bf4710dda 100644 --- a/vortex-cuda/src/session.rs +++ b/vortex-cuda/src/session.rs @@ -5,8 +5,8 @@ use std::fmt::Debug; use std::sync::Arc; use cudarc::driver::CudaContext; +use vortex::array::ArrayId; use vortex::array::VortexSessionExecute; -use vortex::array::vtable::ArrayId; use vortex::error::VortexResult; use vortex::session::Ref; use vortex::session::SessionExt; diff --git a/vortex-datafusion/examples/vortex_table.rs b/vortex-datafusion/examples/vortex_table.rs index cbd138baa0a..2570fc47afd 100644 --- a/vortex-datafusion/examples/vortex_table.rs +++ b/vortex-datafusion/examples/vortex_table.rs @@ -58,7 +58,7 @@ async fn main() -> anyhow::Result<()> { session .write_options() - .write(&mut f, st.to_array_stream()) + .write(&mut f, st.into_array().to_array_stream()) .await?; // [register] diff --git a/vortex-datafusion/src/persistent/mod.rs b/vortex-datafusion/src/persistent/mod.rs index 558032ebd01..c2d83532fe3 100644 --- a/vortex-datafusion/src/persistent/mod.rs +++ b/vortex-datafusion/src/persistent/mod.rs @@ -69,7 +69,7 @@ mod tests { let summary = session .write_options() - .write(&mut writer, st.to_array_stream()) + .write(&mut writer, st.into_array().to_array_stream()) .await?; writer.shutdown().await?; diff --git a/vortex-datafusion/src/persistent/opener.rs b/vortex-datafusion/src/persistent/opener.rs index 8636a4e04e2..b3d1bc548c4 100644 --- a/vortex-datafusion/src/persistent/opener.rs +++ b/vortex-datafusion/src/persistent/opener.rs @@ -482,6 +482,7 @@ mod tests { use object_store::memory::InMemory; use rstest::rstest; use vortex::VortexSessionDefault; + use vortex::array::ArrayRef; use vortex::array::arrow::FromArrowArray; use vortex::buffer::Buffer; use vortex::file::WriteOptionsSessionExt; diff --git a/vortex-duckdb/src/convert/vector.rs b/vortex-duckdb/src/convert/vector.rs index fb503b57abb..14c3f5eb3d1 100644 --- a/vortex-duckdb/src/convert/vector.rs +++ b/vortex-duckdb/src/convert/vector.rs @@ -377,9 +377,9 @@ mod tests { use vortex::array::ToCanonical; use vortex::array::arrays::BoolArray; + use vortex::array::assert_arrays_eq; use vortex::error::VortexExpect; use vortex::mask::Mask; - use vortex_array::assert_arrays_eq; use super::*; use crate::cpp::DUCKDB_TYPE; diff --git a/vortex-duckdb/src/datasource.rs b/vortex-duckdb/src/datasource.rs index d28211f7e91..12aef769c66 100644 --- a/vortex-duckdb/src/datasource.rs +++ b/vortex-duckdb/src/datasource.rs @@ -329,8 +329,9 @@ impl TableFunction for T { let (array_result, conversion_cache) = result?; let array_result = array_result.optimize_recursive()?; - let array_result = if let Some(array) = array_result.as_opt::() { - array.clone() + let array_result: StructArray = if let Some(array) = array_result.as_opt::() + { + array.into_owned() } else if let Some(array) = array_result.as_opt::() && let Some(pack_options) = array.scalar_fn().as_opt::() { diff --git a/vortex-duckdb/src/duckdb/vector.rs b/vortex-duckdb/src/duckdb/vector.rs index a142fd61956..4a822629980 100644 --- a/vortex-duckdb/src/duckdb/vector.rs +++ b/vortex-duckdb/src/duckdb/vector.rs @@ -343,8 +343,8 @@ impl ValidityRef<'_> { #[cfg(test)] mod tests { + use vortex::array::LEGACY_SESSION; use vortex::mask::Mask; - use vortex_array::LEGACY_SESSION; use vortex_array::VortexSessionExecute; use super::*; diff --git a/vortex-duckdb/src/e2e_test/vortex_scan_test.rs b/vortex-duckdb/src/e2e_test/vortex_scan_test.rs index 75db1ac3cd6..4e03cd07cd7 100644 --- a/vortex-duckdb/src/e2e_test/vortex_scan_test.rs +++ b/vortex-duckdb/src/e2e_test/vortex_scan_test.rs @@ -36,8 +36,8 @@ use vortex::file::WriteOptionsSessionExt; use vortex::io::runtime::BlockingRuntime; use vortex::scalar::PValue; use vortex::scalar::Scalar; -use vortex_runend::RunEndArray; -use vortex_sequence::SequenceArray; +use vortex_runend::RunEnd; +use vortex_sequence::Sequence; use crate::RUNTIME; use crate::SESSION; @@ -71,7 +71,7 @@ async fn write_vortex_file( let mut file = async_fs::File::create(&temp_file_path).await.unwrap(); SESSION .write_options() - .write(&mut file, struct_array.to_array_stream()) + .write(&mut file, struct_array.into_array().to_array_stream()) .await .unwrap(); @@ -167,7 +167,7 @@ async fn write_vortex_file_to_dir( let mut file = async_fs::File::create(&temp_file_path).await.unwrap(); SESSION .write_options() - .write(&mut file, struct_array.to_array_stream()) + .write(&mut file, struct_array.into_array().to_array_stream()) .await .unwrap(); @@ -789,10 +789,10 @@ async fn write_vortex_file_with_encodings() -> NamedTempFile { // 4. Run-End let run_ends = buffer![3u32, 5]; let run_values = buffer![100i32, 200]; - let rle_array = RunEndArray::try_new(run_ends.into_array(), run_values.into_array()).unwrap(); + let rle_array = RunEnd::try_new(run_ends.into_array(), run_values.into_array()).unwrap(); // 5. Sequence array - let sequence_array = SequenceArray::try_new( + let sequence_array = Sequence::try_new( PValue::I64(0), PValue::I64(10), PType::I64, @@ -844,7 +844,7 @@ async fn write_vortex_file_with_encodings() -> NamedTempFile { let mut file = async_fs::File::create(&temp_file_path).await.unwrap(); SESSION .write_options() - .write(&mut file, struct_array.to_array_stream()) + .write(&mut file, struct_array.into_array().to_array_stream()) .await .unwrap(); diff --git a/vortex-duckdb/src/exporter/all_invalid.rs b/vortex-duckdb/src/exporter/all_invalid.rs index 104db72407b..873dde3c089 100644 --- a/vortex-duckdb/src/exporter/all_invalid.rs +++ b/vortex-duckdb/src/exporter/all_invalid.rs @@ -42,8 +42,8 @@ impl ColumnExporter for AllInvalidExporter { #[cfg(test)] mod tests { + use vortex::array::VortexSessionExecute; use vortex::array::arrays::PrimitiveArray; - use vortex_array::VortexSessionExecute; use super::*; use crate::SESSION; diff --git a/vortex-duckdb/src/exporter/bool.rs b/vortex-duckdb/src/exporter/bool.rs index 0de95415a40..4e6277df3b8 100644 --- a/vortex-duckdb/src/exporter/bool.rs +++ b/vortex-duckdb/src/exporter/bool.rs @@ -24,6 +24,7 @@ pub(crate) fn new_exporter( let len = array.len(); let bits = array.to_bit_buffer(); let validity = array.validity().to_array(len).execute::(ctx)?; + if validity.all_false() { return Ok(all_invalid::new_exporter(len, &LogicalType::bool())); } diff --git a/vortex-duckdb/src/exporter/decimal.rs b/vortex-duckdb/src/exporter/decimal.rs index c099512cf94..00026eb9f90 100644 --- a/vortex-duckdb/src/exporter/decimal.rs +++ b/vortex-duckdb/src/exporter/decimal.rs @@ -47,7 +47,7 @@ pub(crate) fn new_exporter( decimal_dtype, values_type, values, - } = array.into_parts(); + } = array.into_data().into_parts(); let dest_values_type = precision_to_duckdb_storage_size(&decimal_dtype)?; let nullability = validity.nullability(); let validity = validity.to_array(len).execute::(ctx)?; @@ -138,10 +138,10 @@ pub fn precision_to_duckdb_storage_size(decimal_dtype: &DecimalDType) -> VortexR #[cfg(test)] mod tests { + use vortex::array::VortexSessionExecute; use vortex::array::arrays::DecimalArray; use vortex::dtype::DecimalDType; use vortex::error::VortexExpect; - use vortex_array::VortexSessionExecute; use super::*; use crate::SESSION; diff --git a/vortex-duckdb/src/exporter/dict.rs b/vortex-duckdb/src/exporter/dict.rs index 4e63ad59de2..b88059f1e98 100644 --- a/vortex-duckdb/src/exporter/dict.rs +++ b/vortex-duckdb/src/exporter/dict.rs @@ -2,7 +2,6 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use std::marker::PhantomData; -use std::sync::Arc; use num_traits::AsPrimitive; use vortex::array::Canonical; @@ -65,7 +64,7 @@ pub(crate) fn new_exporter_with_flatten( } } - let values_key = Arc::as_ptr(values).addr(); + let values_key = values.addr(); let codes = array.codes().clone().execute::(ctx)?; let reusable_dict = if flatten { @@ -158,13 +157,13 @@ mod tests { use vortex::VortexSessionDefault; use vortex::array::ExecutionCtx; use vortex::array::IntoArray; + use vortex::array::VortexSessionExecute; use vortex::array::arrays::ConstantArray; use vortex::array::arrays::DictArray; use vortex::array::arrays::PrimitiveArray; use vortex::buffer::Buffer; use vortex::error::VortexResult; use vortex::session::VortexSession; - use vortex_array::VortexSessionExecute; use crate::SESSION; use crate::cpp; diff --git a/vortex-duckdb/src/exporter/fixed_size_list.rs b/vortex-duckdb/src/exporter/fixed_size_list.rs index bfea0df2034..9e57bf18085 100644 --- a/vortex-duckdb/src/exporter/fixed_size_list.rs +++ b/vortex-duckdb/src/exporter/fixed_size_list.rs @@ -38,7 +38,7 @@ pub(crate) fn new_exporter( ) -> VortexResult> { let list_size = array.list_size(); let len = array.len(); - let (elements, validity, dtype) = array.into_parts(); + let (elements, validity, dtype) = array.into_data().into_parts(); let mask = validity.to_array(len).execute::(ctx)?; let elements_exporter = new_array_exporter_with_flatten(elements, cache, ctx, true)?; @@ -96,10 +96,10 @@ impl ColumnExporter for FixedSizeListExporter { #[cfg(test)] mod tests { use vortex::array::IntoArray as _; + use vortex::array::VortexSessionExecute; use vortex::array::validity::Validity; use vortex::buffer::buffer; use vortex::error::VortexExpect; - use vortex_array::VortexSessionExecute; use super::*; use crate::SESSION; diff --git a/vortex-duckdb/src/exporter/list.rs b/vortex-duckdb/src/exporter/list.rs index 9020bcf1659..fab62dcc8cb 100644 --- a/vortex-duckdb/src/exporter/list.rs +++ b/vortex-duckdb/src/exporter/list.rs @@ -5,7 +5,6 @@ use std::marker::PhantomData; use std::sync::Arc; use parking_lot::Mutex; -use vortex::array::DynArray; use vortex::array::ExecutionCtx; use vortex::array::arrays::ListArray; use vortex::array::arrays::PrimitiveArray; @@ -51,7 +50,7 @@ pub(crate) fn new_exporter( offsets, validity, dtype, - } = array.into_parts(); + } = array.into_data().into_parts(); let num_elements = elements.len(); let validity = validity.to_array(array_len).execute::(ctx)?; @@ -60,7 +59,7 @@ pub(crate) fn new_exporter( return Ok(all_invalid::new_exporter(array_len, <ype)); } - let values_key = Arc::as_ptr(&elements).addr(); + let values_key = elements.addr(); // Check if we have a cached vector and extract it if we do. let cached_elements = cache .values_cache @@ -160,12 +159,12 @@ impl ColumnExporter for ListExporter { #[cfg(test)] mod tests { use vortex::array::IntoArray as _; + use vortex::array::VortexSessionExecute; use vortex::array::arrays::VarBinArray; use vortex::array::validity::Validity; use vortex::buffer::Buffer; use vortex::buffer::buffer; use vortex::error::VortexExpect; - use vortex_array::VortexSessionExecute; use super::*; use crate::SESSION; diff --git a/vortex-duckdb/src/exporter/list_view.rs b/vortex-duckdb/src/exporter/list_view.rs index 2db8229f764..4b76f534ff2 100644 --- a/vortex-duckdb/src/exporter/list_view.rs +++ b/vortex-duckdb/src/exporter/list_view.rs @@ -5,7 +5,6 @@ use std::marker::PhantomData; use std::sync::Arc; use parking_lot::Mutex; -use vortex::array::DynArray; use vortex::array::ExecutionCtx; use vortex::array::arrays::ListViewArray; use vortex::array::arrays::PrimitiveArray; @@ -54,7 +53,7 @@ pub(crate) fn new_exporter( offsets, sizes, validity, - } = array.into_parts(); + } = array.into_data().into_parts(); // Cache an `elements` vector up front so that future exports can reference it. let num_elements = elements.len(); let nullability = validity.nullability(); @@ -65,7 +64,7 @@ pub(crate) fn new_exporter( return Ok(all_invalid::new_exporter(len, <ype)); } - let values_key = Arc::as_ptr(&elements).addr(); + let values_key = elements.addr(); // Check if we have a cached vector and extract it if we do. let cached_elements = cache .values_cache @@ -88,14 +87,14 @@ pub(crate) fn new_exporter( let shared_elements = Arc::new(Mutex::new(duckdb_elements)); cache .values_cache - .insert(values_key, (elements.clone(), shared_elements.clone())); + .insert(values_key, (elements, shared_elements.clone())); shared_elements } }; let offsets = offsets.execute::(ctx)?; - let sizes = sizes.clone().execute::(ctx)?; + let sizes = sizes.execute::(ctx)?; let boxed = match_each_integer_ptype!(offsets.ptype(), |O| { match_each_integer_ptype!(sizes.ptype(), |S| { @@ -172,12 +171,12 @@ impl ColumnExporter for ListViewExporter #[cfg(test)] mod tests { use vortex::array::IntoArray as _; + use vortex::array::VortexSessionExecute; use vortex::array::arrays::VarBinArray; use vortex::array::validity::Validity; use vortex::buffer::Buffer; use vortex::buffer::buffer; use vortex::error::VortexExpect; - use vortex_array::VortexSessionExecute; use super::*; use crate::SESSION; diff --git a/vortex-duckdb/src/exporter/mod.rs b/vortex-duckdb/src/exporter/mod.rs index 97fd0edf861..b3f5d12ecf0 100644 --- a/vortex-duckdb/src/exporter/mod.rs +++ b/vortex-duckdb/src/exporter/mod.rs @@ -144,18 +144,20 @@ fn new_array_exporter_with_flatten( Err(array) => array, }; - if let Some(array) = array.as_opt::() { - return sequence::new_exporter(array); - } + let array = match array.try_into::() { + Ok(array) => return sequence::new_exporter(&array), + Err(array) => array, + }; let array = match array.try_into::() { Ok(array) => return run_end::new_exporter(array, cache, ctx), Err(array) => array, }; - if let Some(array) = array.as_opt::() { - return dict::new_exporter_with_flatten(array, cache, ctx, flatten); - } + let array = match array.try_into::() { + Ok(array) => return dict::new_exporter_with_flatten(&array, cache, ctx, flatten), + Err(array) => array, + }; let array = match array.try_into::() { Ok(array) => return list::new_exporter(array, cache, ctx), diff --git a/vortex-duckdb/src/exporter/run_end.rs b/vortex-duckdb/src/exporter/run_end.rs index 2a27af64940..0d05cf67a30 100644 --- a/vortex-duckdb/src/exporter/run_end.rs +++ b/vortex-duckdb/src/exporter/run_end.rs @@ -38,7 +38,7 @@ pub(crate) fn new_exporter( ctx: &mut ExecutionCtx, ) -> VortexResult> { let offset = array.offset(); - let RunEndArrayParts { ends, values } = array.into_parts(); + let RunEndArrayParts { ends, values } = array.into_data().into_parts(); let ends = ends.execute::(ctx)?; let values_exporter = new_array_exporter(values.clone(), cache, ctx)?; diff --git a/vortex-duckdb/src/exporter/sequence.rs b/vortex-duckdb/src/exporter/sequence.rs index 380f57c95bf..a9a569d2a06 100644 --- a/vortex-duckdb/src/exporter/sequence.rs +++ b/vortex-duckdb/src/exporter/sequence.rs @@ -43,8 +43,9 @@ impl ColumnExporter for SequenceExporter { #[cfg(test)] mod tests { + use vortex::array::VortexSessionExecute; use vortex::dtype::Nullability; - use vortex_array::VortexSessionExecute; + use vortex::encodings::sequence::Sequence; use super::*; use crate::SESSION; @@ -54,7 +55,7 @@ mod tests { #[test] fn test_sequence() { - let arr = SequenceArray::try_new_typed(2, 5, Nullability::NonNullable, 100).unwrap(); + let arr = Sequence::try_new_typed(2, 5, Nullability::NonNullable, 100).unwrap(); let mut chunk = DataChunk::new([LogicalType::new(cpp::duckdb_type::DUCKDB_TYPE_INTEGER)]); new_exporter(&arr) diff --git a/vortex-duckdb/src/exporter/struct_.rs b/vortex-duckdb/src/exporter/struct_.rs index 3da11caff64..8c07ada0533 100644 --- a/vortex-duckdb/src/exporter/struct_.rs +++ b/vortex-duckdb/src/exporter/struct_.rs @@ -81,6 +81,7 @@ mod tests { use std::ffi::CString; use vortex::array::IntoArray; + use vortex::array::VortexSessionExecute; use vortex::array::arrays::ConstantArray; use vortex::array::arrays::DictArray; use vortex::array::arrays::PrimitiveArray; @@ -89,7 +90,6 @@ mod tests { use vortex::buffer::BitBuffer; use vortex::buffer::buffer; use vortex::error::VortexExpect; - use vortex_array::VortexSessionExecute; use super::*; use crate::SESSION; diff --git a/vortex-duckdb/src/exporter/temporal.rs b/vortex-duckdb/src/exporter/temporal.rs index 55f96ccfaea..30165a55973 100644 --- a/vortex-duckdb/src/exporter/temporal.rs +++ b/vortex-duckdb/src/exporter/temporal.rs @@ -46,11 +46,11 @@ pub(crate) fn new_exporter( #[cfg(test)] mod tests { use vortex::array::IntoArray as _; + use vortex::array::VortexSessionExecute; use vortex::array::arrays::PrimitiveArray; use vortex::array::arrays::TemporalArray; use vortex::buffer::buffer; use vortex::extension::datetime::TimeUnit; - use vortex_array::VortexSessionExecute; use crate::SESSION; use crate::cpp; diff --git a/vortex-duckdb/src/exporter/varbinview.rs b/vortex-duckdb/src/exporter/varbinview.rs index 13a59d242ef..f0667ee6144 100644 --- a/vortex-duckdb/src/exporter/varbinview.rs +++ b/vortex-duckdb/src/exporter/varbinview.rs @@ -37,7 +37,7 @@ pub(crate) fn new_exporter( dtype, views, buffers, - } = array.into_parts(); + } = array.into_data().into_parts(); let validity = validity.to_array(len).execute::(ctx)?; if validity.all_false() { let ltype = LogicalType::try_from(dtype)?; @@ -139,10 +139,10 @@ fn to_ptr_binary_view<'a>( #[cfg(test)] mod tests { use Nullability::Nullable; + use vortex::array::VortexSessionExecute; use vortex::dtype::DType; use vortex::dtype::Nullability; use vortex::error::VortexResult; - use vortex_array::VortexSessionExecute; use vortex_array::arrays::VarBinViewArray; use crate::SESSION; diff --git a/vortex-ffi/examples/hello_vortex.rs b/vortex-ffi/examples/hello_vortex.rs index fa458ce483a..a87d0338292 100644 --- a/vortex-ffi/examples/hello_vortex.rs +++ b/vortex-ffi/examples/hello_vortex.rs @@ -19,7 +19,6 @@ use std::sync::LazyLock; use vortex::VortexSessionDefault; use vortex::array::ArrayRef; -use vortex::array::DynArray; use vortex::array::IntoArray; use vortex::array::arrays::ChunkedArray; use vortex::array::arrays::StructArray; @@ -156,7 +155,7 @@ async fn write_vortex_file(path: impl AsRef) -> VortexResult<()> { SESSION .write_options() - .write(&mut file, test_data.to_array_stream()) + .write(&mut file, test_data.into_array().to_array_stream()) .await?; file.shutdown().await?; diff --git a/vortex-ffi/src/array.rs b/vortex-ffi/src/array.rs index b692c3d58c3..3aee513b102 100644 --- a/vortex-ffi/src/array.rs +++ b/vortex-ffi/src/array.rs @@ -8,7 +8,7 @@ use std::ptr; use std::sync::Arc; use paste::paste; -use vortex::array::DynArray; +use vortex::array::ArrayRef; use vortex::array::IntoArray; use vortex::array::ToCanonical; use vortex::array::arrays::NullArray; @@ -21,7 +21,7 @@ use vortex::error::VortexExpect; use vortex::error::vortex_ensure; use vortex::error::vortex_err; -use crate::arc_dyn_wrapper; +use crate::arc_wrapper; use crate::binary::vx_binary; use crate::dtype::vx_dtype; use crate::dtype::vx_dtype_variant; @@ -32,7 +32,7 @@ use crate::expression::vx_expression; use crate::ptype::vx_ptype; use crate::string::vx_string; -arc_dyn_wrapper!( +arc_wrapper!( /// Arrays are reference-counted handles to owned memory buffers that hold /// scalars. These buffers can be held in a number of physical encodings to /// perform lightweight compression that exploits the particular data @@ -47,7 +47,7 @@ arc_dyn_wrapper!( /// /// Unless stated explicitly, all operations with vx_array don't take /// ownership of it, and thus it must be freed by the caller. - dyn DynArray, + ArrayRef, vx_array ); @@ -155,7 +155,7 @@ impl From for vx_validity { }, Validity::Array(array) => vx_validity { r#type: vx_validity_type::VX_VALIDITY_ARRAY, - array: vx_array::new(array), + array: vx_array::new(Arc::new(array)), }, } } @@ -208,7 +208,7 @@ pub unsafe extern "C-unwind" fn vx_array_get_field( .ok_or_else(|| vortex_err!("Field index out of bounds"))? .clone(); - Ok(vx_array::new(field_array)) + Ok(vx_array::new(Arc::new(field_array))) }) } @@ -222,7 +222,7 @@ pub unsafe extern "C-unwind" fn vx_array_slice( try_or_default(error_out, || { let array = vx_array::as_ref(array); let sliced = array.slice(start..stop)?; - Ok(vx_array::new(sliced)) + Ok(vx_array::new(Arc::new(sliced))) }) } @@ -257,7 +257,7 @@ pub unsafe extern "C-unwind" fn vx_array_invalid_count( /// Create a new array with DTYPE_NULL dtype. #[unsafe(no_mangle)] pub unsafe extern "C-unwind" fn vx_array_new_null(len: usize) -> *const vx_array { - vx_array::new(NullArray::new(len).into_array()) + vx_array::new(Arc::new(NullArray::new(len).into_array())) } /// SAFETY: @@ -271,7 +271,7 @@ unsafe fn primitive_from_raw( let slice = unsafe { std::slice::from_raw_parts(ptr, len) }; let buffer = Buffer::copy_from(slice); let array = PrimitiveArray::new(buffer, validity.into()); - vx_array::new(array.into_array()) + vx_array::new(Arc::new(array.into_array())) } /// Create a new primitive array from an existing buffer. @@ -299,7 +299,7 @@ pub extern "C-unwind" fn vx_array_new_primitive( ) -> *const vx_array { if validity.is_null() { write_error(error, "validity is NULL"); - return ptr::null(); + return ptr::null_mut(); } let validity = unsafe { &*validity }; @@ -414,7 +414,7 @@ pub unsafe extern "C" fn vx_array_apply( vortex_ensure!(!expression.is_null()); let array = vx_array::as_ref(array); let expression = vx_expression::as_ref(expression); - Ok(vx_array::new(array.clone().apply(expression)?)) + Ok(vx_array::new(Arc::new(array.clone().apply(expression)?))) }) } @@ -425,6 +425,7 @@ mod tests { use vortex::array::IntoArray; use vortex::array::arrays::BoolArray; use vortex::array::arrays::PrimitiveArray; + use vortex::array::arrays::StructArray; use vortex::array::arrays::VarBinViewArray; use vortex::array::validity::Validity; use vortex::buffer::buffer; @@ -433,7 +434,6 @@ mod tests { use vortex::expr::eq; use vortex::expr::lit; use vortex::expr::root; - use vortex_array::arrays::StructArray; use crate::array::*; use crate::binary::vx_binary_free; @@ -461,7 +461,7 @@ mod tests { fn test_simple() { unsafe { let primitive = PrimitiveArray::new(buffer![1i32, 2i32, 3i32], Validity::NonNullable); - let ffi_array = vx_array::new(primitive.into_array()); + let ffi_array = vx_array::new(Arc::new(primitive.into_array())); assert_eq!(vx_array_len(ffi_array), 3); @@ -485,7 +485,7 @@ mod tests { unsafe { let primitive = PrimitiveArray::new(buffer![1i32, 2i32, 3i32, 4i32, 5i32], Validity::NonNullable); - let array = vx_array::new(primitive.into_array()); + let array = vx_array::new(Arc::new(primitive.into_array())); assert!(!vx_array_is_nullable(array)); assert!(vx_array_is_primitive(array, vx_ptype::PTYPE_I32)); vx_array_free(array); @@ -499,7 +499,7 @@ mod tests { unsafe { let primitive = PrimitiveArray::new(buffer![1i32, 2i32, 3i32, 4i32, 5i32], Validity::NonNullable); - let ffi_array = vx_array::new(primitive.into_array()); + let ffi_array = vx_array::new(Arc::new(primitive.into_array())); let mut error = ptr::null_mut(); let sliced = vx_array_slice(ffi_array, 1, 4, &raw mut error); @@ -523,7 +523,7 @@ mod tests { buffer![1i32, 2i32, 3i32], Validity::from_iter([true, false, true]), ); - let ffi_array = vx_array::new(primitive.into_array()); + let ffi_array = vx_array::new(Arc::new(primitive.into_array())); let mut error = ptr::null_mut(); assert!(!vx_array_element_is_invalid(ffi_array, 0, &raw mut error)); @@ -555,7 +555,7 @@ mod tests { Validity::NonNullable, ) .unwrap(); - let ffi_array = vx_array::new(struct_array.into_array()); + let ffi_array = vx_array::new(Arc::new(struct_array.into_array())); let mut error = ptr::null_mut(); let field0 = vx_array_get_field(ffi_array, 0, &raw mut error); @@ -673,7 +673,7 @@ mod tests { fn test_get_utf8() { unsafe { let utf8_array = VarBinViewArray::from_iter_str(["hello", "world", "test"]); - let ffi_array = vx_array::new(utf8_array.into_array()); + let ffi_array = vx_array::new(Arc::new(utf8_array.into_array())); assert!(vx_array_has_dtype(ffi_array, vx_dtype_variant::DTYPE_UTF8)); let vx_str1 = vx_array_get_utf8(ffi_array, 0); @@ -702,7 +702,7 @@ mod tests { vec![0xFF, 0xEE], vec![0xAA, 0xBB, 0xCC, 0xDD], ]); - let ffi_array = vx_array::new(binary_array.into_array()); + let ffi_array = vx_array::new(Arc::new(binary_array.into_array())); assert!(vx_array_has_dtype( ffi_array, vx_dtype_variant::DTYPE_BINARY @@ -740,7 +740,7 @@ mod tests { assert!(!error.is_null()); vx_error_free(error); - let array = vx_array::new(primitive.into_array()); + let array = vx_array::new(Arc::new(primitive.into_array())); let res = vx_array_apply(array, ptr::null(), &raw mut error); assert!(res.is_null()); @@ -750,7 +750,7 @@ mod tests { // Test with Vortex Rust-side expressions here, test C API for // expressions in src/expressions.rs let expression = eq(root(), lit(3i32)); - let expression = vx_expression::new(Box::new(expression)); + let expression = vx_expression::new(expression); let res = vx_array_apply(ptr::null(), expression, &raw mut error); assert!(res.is_null()); @@ -786,7 +786,7 @@ mod tests { .unwrap() .into_array() }; - let vx_arr = vx_array::new(array); + let vx_arr = vx_array::new(Arc::new(array)); assert!(unsafe { vx_array_has_dtype(vx_arr, vx_dtype_variant::DTYPE_STRUCT) }); // Get dtype reference - this is valid as long as array lives diff --git a/vortex-ffi/src/array_iterator.rs b/vortex-ffi/src/array_iterator.rs index 65ff65e62c5..6fa5fc20b25 100644 --- a/vortex-ffi/src/array_iterator.rs +++ b/vortex-ffi/src/array_iterator.rs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use std::ptr; +use std::sync::Arc; use vortex::array::iter::ArrayIterator; @@ -41,7 +42,7 @@ pub unsafe extern "C-unwind" fn vx_array_iterator_next( let element = iter.next(); if let Some(element) = element { - Ok(vx_array::new(element?)) + Ok(vx_array::new(Arc::new(element?))) } else { // Drop the iter pointer. Ok(ptr::null_mut()) diff --git a/vortex-ffi/src/dtype.rs b/vortex-ffi/src/dtype.rs index 42291d47743..376c70b5e8a 100644 --- a/vortex-ffi/src/dtype.rs +++ b/vortex-ffi/src/dtype.rs @@ -643,7 +643,7 @@ mod tests { #[test] fn test_struct_introspection_simple() { let array = create_test_struct_array(); - let vx_arr = vx_array::new(array); + let vx_arr = vx_array::new(Arc::new(array)); let dtype_ptr = unsafe { vx_array_dtype(vx_arr) }; let struct_fields_ptr = unsafe { vx_dtype_struct_dtype(dtype_ptr) }; @@ -659,7 +659,7 @@ mod tests { #[test] fn test_field_name_access() { let array = create_test_struct_array(); - let vx_arr = vx_array::new(array); + let vx_arr = vx_array::new(Arc::new(array)); let dtype_ptr = unsafe { vx_array_dtype(vx_arr) }; let struct_fields_ptr = unsafe { vx_dtype_struct_dtype(dtype_ptr) }; @@ -684,7 +684,7 @@ mod tests { #[test] fn test_comprehensive_struct_introspection() { let array = create_test_struct_array(); - let vx_arr = vx_array::new(array); + let vx_arr = vx_array::new(Arc::new(array)); let dtype_ptr = unsafe { vx_array_dtype(vx_arr) }; let struct_fields_ptr = unsafe { vx_dtype_struct_dtype(dtype_ptr) }; diff --git a/vortex-ffi/src/error.rs b/vortex-ffi/src/error.rs index b36ba480b66..79115bad43b 100644 --- a/vortex-ffi/src/error.rs +++ b/vortex-ffi/src/error.rs @@ -22,9 +22,9 @@ box_wrapper!( /// Write an error message to `error` which has not been populated before. pub(crate) fn write_error(error: *mut *mut vx_error, message: &str) { assert!(!error.is_null()); - let err = vx_error::new(Box::new(VortexError { + let err = vx_error::new(VortexError { message: message.into(), - })); + }); unsafe { error.write(err) }; } @@ -38,9 +38,9 @@ pub fn try_or_default( value } Err(err) => { - let err = vx_error::new(Box::new(VortexError { + let err = vx_error::new(VortexError { message: err.to_string().into(), - })); + }); unsafe { error_out.write(err) }; T::default() } diff --git a/vortex-ffi/src/expression.rs b/vortex-ffi/src/expression.rs index fcf965d3d0f..7216629599c 100644 --- a/vortex-ffi/src/expression.rs +++ b/vortex-ffi/src/expression.rs @@ -59,7 +59,7 @@ crate::box_wrapper!( /// #[unsafe(no_mangle)] pub unsafe extern "C" fn vx_expression_root() -> *mut vx_expression { - vx_expression::new(Box::new(root())) + vx_expression::new(root()) } /// Create an expression that selects (includes) specific fields from a child @@ -86,7 +86,7 @@ pub unsafe extern "C" fn vx_expression_select( let names = unsafe { to_field_names(names, len) }.vortex_expect("converting names to field names"); let expr = select(names, vx_expression::as_ref(child).clone()); - vx_expression::new(Box::new(expr)) + vx_expression::new(expr) } /// Create an AND expression for multiple child expressions. @@ -101,7 +101,7 @@ pub unsafe extern "C" fn vx_expression_and( } let slice = unsafe { slice::from_raw_parts(expressions, len) }; match and_collect(slice.iter().map(|x| vx_expression::as_ref(*x).clone())) { - Some(expr) => vx_expression::new(expr.into()), + Some(expr) => vx_expression::new(expr), None => ptr::null_mut(), } } @@ -118,7 +118,7 @@ pub unsafe extern "C" fn vx_expression_or( } let slice = unsafe { slice::from_raw_parts(expressions, len) }; match or_collect(slice.iter().map(|x| vx_expression::as_ref(*x).clone())) { - Some(expr) => vx_expression::new(expr.into()), + Some(expr) => vx_expression::new(expr), None => ptr::null_mut(), } } @@ -212,7 +212,7 @@ pub unsafe extern "C" fn vx_expression_binary( } let lhs = vx_expression::as_ref(lhs).clone(); let rhs = vx_expression::as_ref(rhs).clone(); - vx_expression::new(Box::new(Binary.new_expr(operator.into(), [lhs, rhs]))) + vx_expression::new(Binary.new_expr(operator.into(), [lhs, rhs])) } /// Create a logical NOT of the child expression. @@ -223,7 +223,7 @@ pub unsafe extern "C" fn vx_expression_not(child: *const vx_expression) -> *cons if child.is_null() { return child; } - vx_expression::new(not(vx_expression::as_ref(child).clone()).into()) + vx_expression::new(not(vx_expression::as_ref(child).clone())) } /// Create an expression that checks for null values. @@ -234,7 +234,7 @@ pub unsafe extern "C" fn vx_expression_is_null(child: *const vx_expression) -> * if child.is_null() { return ptr::null_mut(); } - vx_expression::new(is_null(vx_expression::as_ref(child).clone()).into()) + vx_expression::new(is_null(vx_expression::as_ref(child).clone())) } /// Create an expression that extracts a named field from a struct expression. @@ -262,7 +262,7 @@ pub unsafe extern "C" fn vx_expression_get_item( }; let item: Arc = Arc::from(item); let item: FieldName = item.into(); - vx_expression::new(get_item(item, vx_expression::as_ref(child).clone()).into()) + vx_expression::new(get_item(item, vx_expression::as_ref(child).clone())) } /// Create an expression that checks if a value is contained in a list. @@ -281,12 +281,13 @@ pub unsafe extern "C" fn vx_expression_list_contains( } let list = vx_expression::as_ref(list).clone(); let value = vx_expression::as_ref(value).clone(); - vx_expression::new(Box::new(list_contains(list, value))) + vx_expression::new(list_contains(list, value)) } #[cfg(test)] mod tests { use std::ptr; + use std::sync::Arc; use vortex::array::IntoArray; use vortex::array::ToCanonical; @@ -346,7 +347,7 @@ mod tests { let column = vx_expression_get_item(c"age".as_ptr(), root); assert_ne!(column, ptr::null_mut()); - let array = vx_array::new(array.into_array()); + let array = vx_array::new(Arc::new(array.into_array())); let mut error = ptr::null_mut(); let applied_array = vx_array_apply(array, column, &raw mut error); @@ -369,7 +370,7 @@ mod tests { assert!(!error.is_null()); vx_error_free(error); - let names_array_vx = vx_array::new(names_array.into_array()); + let names_array_vx = vx_array::new(Arc::new(names_array.into_array())); let applied_array = vx_array_apply(names_array_vx, column, &raw mut error); assert!(applied_array.is_null()); assert!(!error.is_null()); @@ -390,7 +391,7 @@ mod tests { unsafe { let root = vx_expression_root(); - let array = vx_array::new(array.into_array()); + let array = vx_array::new(Arc::new(array.into_array())); let columns = [c"name".as_ptr(), c"age".as_ptr()]; let column = vx_expression_select(columns.as_ptr(), 2, root); @@ -432,7 +433,7 @@ mod tests { let array = StructArray::try_new(names, fields, 4, Validity::NonNullable); unsafe { - let array = vx_array::new(array.unwrap().into_array()); + let array = vx_array::new(Arc::new(array.unwrap().into_array())); let root = vx_expression_root(); let expression_col1 = vx_expression_get_item(c"col1".as_ptr(), root); @@ -515,8 +516,8 @@ mod tests { unsafe { let root = vx_expression_root(); - let array = vx_array::new(array.into_array()); - let expression_value = vx_expression::new(Box::new(lit(1))); + let array = vx_array::new(Arc::new(array.into_array())); + let expression_value = vx_expression::new(lit(1)); let expression = vx_expression_list_contains(root, expression_value); assert!(!expression.is_null()); diff --git a/vortex-ffi/src/macros.rs b/vortex-ffi/src/macros.rs index 25eeeadbb2e..9c4e6f2c342 100644 --- a/vortex-ffi/src/macros.rs +++ b/vortex-ffi/src/macros.rs @@ -240,15 +240,20 @@ macro_rules! box_wrapper { paste::paste! { $(#[$meta])* #[allow(non_camel_case_types)] - pub(crate) struct $ffi_ident($T); + pub struct $ffi_ident($T); #[allow(dead_code)] impl $ffi_ident { /// Wrap an owned object into a raw pointer. - pub(crate) fn new(obj: Box<$T>) -> *mut $ffi_ident { + pub(crate) fn new_box(obj: Box<$T>) -> *mut $ffi_ident { Box::into_raw(obj).cast::<$ffi_ident>() } + /// Wrap an owned object into a raw pointer. + pub(crate) fn new(obj: $T) -> *mut $ffi_ident { + Box::into_raw(Box::new(obj)).cast::<$ffi_ident>() + } + /// Wrap a borrowed object into a raw pointer. pub(crate) fn new_ref(obj: &$T) -> *const $ffi_ident { obj as *const $T as *const $ffi_ident diff --git a/vortex-ffi/src/session.rs b/vortex-ffi/src/session.rs index 3ac4140d219..668598852eb 100644 --- a/vortex-ffi/src/session.rs +++ b/vortex-ffi/src/session.rs @@ -20,9 +20,7 @@ box_wrapper!( /// The caller is responsible for freeing the session with [`vx_session_free`]. #[unsafe(no_mangle)] pub unsafe extern "C-unwind" fn vx_session_new() -> *mut vx_session { - vx_session::new(Box::new( - VortexSession::default().with_handle(RUNTIME.handle()), - )) + vx_session::new(VortexSession::default().with_handle(RUNTIME.handle())) } /// Clone a Vortex session, returning an owned copy. @@ -31,5 +29,5 @@ pub unsafe extern "C-unwind" fn vx_session_new() -> *mut vx_session { #[unsafe(no_mangle)] pub unsafe extern "C-unwind" fn vx_session_clone(session: *const vx_session) -> *mut vx_session { let session = vx_session::as_ref(session); - vx_session::new(Box::new(session.clone())) + vx_session::new(session.clone()) } diff --git a/vortex-ffi/src/sink.rs b/vortex-ffi/src/sink.rs index 619d1c760c3..7b0bbe69ca0 100644 --- a/vortex-ffi/src/sink.rs +++ b/vortex-ffi/src/sink.rs @@ -160,7 +160,7 @@ mod tests { // Create and push an array let array = PrimitiveArray::new(buffer![1i32, 2i32, 3i32], Validity::NonNullable); - let vx_array_ptr = vx_array::new(array.into_array()); + let vx_array_ptr = vx_array::new(Arc::new(array.into_array())); vx_array_sink_push(sink, vx_array_ptr, &raw mut error); assert!(error.is_null()); @@ -200,7 +200,7 @@ mod tests { buffer![start as u64, (start + 1) as u64, (start + 2) as u64], Validity::NonNullable, ); - let vx_array_ptr = vx_array::new(array.into_array()); + let vx_array_ptr = vx_array::new(Arc::new(array.into_array())); vx_array_sink_push(sink, vx_array_ptr, &raw mut error); assert!(error.is_null()); @@ -239,7 +239,7 @@ mod tests { if !sink.is_null() { // Push an array let array = PrimitiveArray::new(buffer![1i32], Validity::NonNullable); - let vx_array_ptr = vx_array::new(array.into_array()); + let vx_array_ptr = vx_array::new(Arc::new(array.into_array())); vx_array_sink_push(sink, vx_array_ptr, &raw mut error); vx_array_free(vx_array_ptr); diff --git a/vortex-ffi/src/struct_array.rs b/vortex-ffi/src/struct_array.rs index d7c426a94ff..33409531be0 100644 --- a/vortex-ffi/src/struct_array.rs +++ b/vortex-ffi/src/struct_array.rs @@ -47,7 +47,7 @@ pub unsafe extern "C" fn vx_struct_column_builder_new( fields, validity, }; - vx_struct_column_builder::new(Box::new(builder)) + vx_struct_column_builder::new(builder) } /// Add a named field to a struct array builder. @@ -131,14 +131,14 @@ mod tests { use std::ptr; use std::sync::Arc; + use vortex::array::IntoArray; + use vortex::array::ToCanonical; + use vortex::array::arrays::PrimitiveArray; + use vortex::array::arrays::StructArray; + use vortex::array::arrays::VarBinViewArray; + use vortex::array::assert_arrays_eq; + use vortex::array::validity::Validity; use vortex::buffer::buffer; - use vortex_array::IntoArray; - use vortex_array::ToCanonical; - use vortex_array::arrays::PrimitiveArray; - use vortex_array::arrays::StructArray; - use vortex_array::arrays::VarBinViewArray; - use vortex_array::assert_arrays_eq; - use vortex_array::validity::Validity; use crate::array::vx_array; use crate::array::vx_array_free; diff --git a/vortex-ffi/src/struct_fields.rs b/vortex-ffi/src/struct_fields.rs index 3b612838194..fa8f10aca83 100644 --- a/vortex-ffi/src/struct_fields.rs +++ b/vortex-ffi/src/struct_fields.rs @@ -89,10 +89,10 @@ box_wrapper!( /// Create a new struct dtype builder. #[unsafe(no_mangle)] pub unsafe extern "C-unwind" fn vx_struct_fields_builder_new() -> *mut vx_struct_fields_builder { - vx_struct_fields_builder::new(Box::new(StructDTypeBuilder { + vx_struct_fields_builder::new(StructDTypeBuilder { names: Vec::new(), fields: Vec::new(), - })) + }) } /// Add a field to the struct dtype builder. @@ -121,5 +121,5 @@ pub unsafe extern "C-unwind" fn vx_struct_fields_builder_finalize( ) -> *mut vx_struct_fields { let StructDTypeBuilder { names, fields } = *vx_struct_fields_builder::into_box(builder); let struct_dtype = StructFields::new(names.into(), fields); - vx_struct_fields::new(Box::new(struct_dtype)) + vx_struct_fields::new(struct_dtype) } diff --git a/vortex-file/public-api.lock b/vortex-file/public-api.lock index 84cca867cba..dd889bef928 100644 --- a/vortex-file/public-api.lock +++ b/vortex-file/public-api.lock @@ -126,7 +126,7 @@ pub fn vortex_file::BlockingWriter<'_, '_, B>::bytes_written(&self) -> u64 pub fn vortex_file::BlockingWriter<'_, '_, B>::finish(self) -> vortex_error::VortexResult -pub fn vortex_file::BlockingWriter<'_, '_, B>::push(&mut self, chunk: vortex_array::array::ArrayRef) -> vortex_error::VortexResult<()> +pub fn vortex_file::BlockingWriter<'_, '_, B>::push(&mut self, chunk: vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult<()> pub struct vortex_file::FileStatistics @@ -276,7 +276,7 @@ pub fn vortex_file::VortexFile::layout_reader(&self) -> vortex_error::VortexResu pub fn vortex_file::VortexFile::row_count(&self) -> u64 -pub fn vortex_file::VortexFile::scan(&self) -> vortex_error::VortexResult> +pub fn vortex_file::VortexFile::scan(&self) -> vortex_error::VortexResult> pub fn vortex_file::VortexFile::segment_source(&self) -> alloc::sync::Arc @@ -382,7 +382,7 @@ pub fn vortex_file::Writer<'_>::bytes_written(&self) -> u64 pub async fn vortex_file::Writer<'_>::finish(self) -> vortex_error::VortexResult -pub async fn vortex_file::Writer<'_>::push(&mut self, chunk: vortex_array::array::ArrayRef) -> vortex_error::VortexResult<()> +pub async fn vortex_file::Writer<'_>::push(&mut self, chunk: vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult<()> pub async fn vortex_file::Writer<'_>::push_stream(&mut self, stream: vortex_array::stream::SendableArrayStream) -> vortex_error::VortexResult<()> diff --git a/vortex-file/src/footer/mod.rs b/vortex-file/src/footer/mod.rs index f4e4c477259..056c8337ad7 100644 --- a/vortex-file/src/footer/mod.rs +++ b/vortex-file/src/footer/mod.rs @@ -24,8 +24,8 @@ pub use file_statistics::FileStatistics; use flatbuffers::root; use itertools::Itertools; pub use segment::*; +use vortex_array::ArrayId; use vortex_array::dtype::DType; -use vortex_array::vtable::ArrayId; use vortex_buffer::ByteBuffer; use vortex_error::VortexResult; use vortex_error::vortex_bail; diff --git a/vortex-file/src/tests.rs b/vortex-file/src/tests.rs index 5a7d93ec99c..beadc7675eb 100644 --- a/vortex-file/src/tests.rs +++ b/vortex-file/src/tests.rs @@ -11,7 +11,6 @@ use futures::StreamExt; use futures::TryStreamExt; use futures::pin_mut; use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::ToCanonical; use vortex_array::accessor::ArrayAccessor; @@ -113,7 +112,7 @@ async fn test_read_simple() { let mut buf = ByteBufferMut::empty(); SESSION .write_options() - .write(&mut buf, st.to_array_stream()) + .write(&mut buf, st.into_array().to_array_stream()) .await .unwrap(); @@ -189,11 +188,12 @@ async fn test_round_trip_many_types() { ("decimal_35", decimal_35), ]) .unwrap(); + let dtype = st.dtype().clone(); let mut buf = ByteBufferMut::empty(); SESSION .write_options() - .write(&mut buf, st.to_array_stream()) + .write(&mut buf, st.into_array().to_array_stream()) .await .unwrap(); @@ -209,7 +209,7 @@ async fn test_round_trip_many_types() { .await .unwrap(); - let read = ChunkedArray::try_new(chunks, st.dtype().clone()).unwrap(); + let read = ChunkedArray::try_new(chunks, dtype).unwrap(); assert_eq!(read.len(), 3); } @@ -250,7 +250,7 @@ async fn test_read_simple_with_spawn() { let mut buf = ByteBufferMut::empty(); SESSION .write_options() - .write(&mut buf, st.to_array_stream()) + .write(&mut buf, st.into_array().to_array_stream()) .await .unwrap(); @@ -281,7 +281,7 @@ async fn test_read_projection() { let mut buf = ByteBufferMut::empty(); SESSION .write_options() - .write(&mut buf, st.to_array_stream()) + .write(&mut buf, st.into_array().to_array_stream()) .await .unwrap(); @@ -306,7 +306,7 @@ async fn test_read_projection() { let actual = array.to_struct().unmasked_field(0).clone(); let expected = VarBinArray::from(strings_expected.to_vec()).into_array(); - assert_arrays_eq!(actual.as_ref(), expected.as_ref()); + assert_arrays_eq!(actual, expected); let array = file .scan() @@ -328,7 +328,7 @@ async fn test_read_projection() { let actual = array.to_struct().unmasked_field(0).clone(); let expected = Buffer::copy_from(numbers_expected).into_array(); - assert_arrays_eq!(actual.as_ref(), expected.as_ref()); + assert_arrays_eq!(actual, expected); } #[tokio::test] @@ -350,7 +350,7 @@ async fn unequal_batches() { let mut buf = ByteBufferMut::empty(); SESSION .write_options() - .write(&mut buf, st.to_array_stream()) + .write(&mut buf, st.into_array().to_array_stream()) .await .unwrap(); @@ -410,7 +410,7 @@ async fn write_chunked() { let mut buf = ByteBufferMut::empty(); SESSION .write_options() - .write(&mut buf, chunked_st.to_array_stream()) + .write(&mut buf, chunked_st.into_array().to_array_stream()) .await .unwrap(); @@ -437,11 +437,12 @@ async fn test_empty_varbin_array_roundtrip() { let empty = VarBinArray::from(Vec::<&str>::new()).into_array(); let st = StructArray::from_fields(&[("a", empty)]).unwrap(); + let dtype = st.dtype().clone(); let mut buf = ByteBufferMut::empty(); SESSION .write_options() - .write(&mut buf, st.to_array_stream()) + .write(&mut buf, st.into_array().to_array_stream()) .await .unwrap(); @@ -457,7 +458,7 @@ async fn test_empty_varbin_array_roundtrip() { .unwrap(); assert_eq!(result.len(), 0); - assert_eq!(result.dtype(), st.dtype()); + assert_eq!(result.dtype(), &dtype); } #[tokio::test] @@ -520,7 +521,7 @@ async fn filter_string() { let mut buf = ByteBufferMut::empty(); SESSION .write_options() - .write(&mut buf, st.to_array_stream()) + .write(&mut buf, st.into_array().to_array_stream()) .await .unwrap(); @@ -542,11 +543,11 @@ async fn filter_string() { let names_expected = VarBinArray::from_iter(vec![Some("Joseph")], DType::Utf8(Nullability::Nullable)) .into_array(); - assert_arrays_eq!(names_actual.as_ref(), names_expected.as_ref()); + assert_arrays_eq!(names_actual, names_expected); let ages_actual = result[0].to_struct().unmasked_field(1).clone(); let ages_expected = PrimitiveArray::from_option_iter([Some(25i32)]).into_array(); - assert_arrays_eq!(ages_actual.as_ref(), ages_expected.as_ref()); + assert_arrays_eq!(ages_actual, ages_expected); } #[tokio::test] @@ -569,7 +570,7 @@ async fn filter_or() { let mut buf = ByteBufferMut::empty(); SESSION .write_options() - .write(&mut buf, st.to_array_stream()) + .write(&mut buf, st.into_array().to_array_stream()) .await .unwrap(); @@ -599,11 +600,11 @@ async fn filter_or() { DType::Utf8(Nullability::Nullable), ) .into_array(); - assert_arrays_eq!(names_actual.as_ref(), names_expected.as_ref()); + assert_arrays_eq!(names_actual, names_expected); let ages_actual = result[0].to_struct().unmasked_field(1).clone(); let ages_expected = PrimitiveArray::from_option_iter([Some(25i32), None]).into_array(); - assert_arrays_eq!(ages_actual.as_ref(), ages_expected.as_ref()); + assert_arrays_eq!(ages_actual, ages_expected); } #[tokio::test] @@ -626,7 +627,7 @@ async fn filter_and() { let mut buf = ByteBufferMut::empty(); SESSION .write_options() - .write(&mut buf, st.to_array_stream()) + .write(&mut buf, st.into_array().to_array_stream()) .await .unwrap(); @@ -653,11 +654,11 @@ async fn filter_and() { DType::Utf8(Nullability::Nullable), ) .into_array(); - assert_arrays_eq!(names_actual.as_ref(), names_expected.as_ref()); + assert_arrays_eq!(names_actual, names_expected); let ages_actual = result[0].to_struct().unmasked_field(1).clone(); let ages_expected = PrimitiveArray::from_option_iter([Some(25i32), Some(31i32)]).into_array(); - assert_arrays_eq!(ages_actual.as_ref(), ages_expected.as_ref()); + assert_arrays_eq!(ages_actual, ages_expected); } #[tokio::test] @@ -680,7 +681,7 @@ async fn test_with_indices_simple() { let mut buf = ByteBufferMut::empty(); SESSION .write_options() - .write(&mut buf, expected_array.to_array_stream()) + .write(&mut buf, expected_array.into_array().to_array_stream()) .await .unwrap(); @@ -720,7 +721,7 @@ async fn test_with_indices_simple() { .map(|&x| expected_numbers[x as usize]) .collect(); let expected_array = Buffer::copy_from(&expected_kept_numbers).into_array(); - assert_arrays_eq!(actual_kept_numbers_array.as_ref(), expected_array.as_ref()); + assert_arrays_eq!(actual_kept_numbers_array, expected_array); // test all indices let actual_array = file @@ -735,7 +736,7 @@ async fn test_with_indices_simple() { .to_struct(); let actual_numbers_array = actual_array.unmasked_field(0).clone(); let expected_array = Buffer::copy_from(&expected_numbers).into_array(); - assert_arrays_eq!(actual_numbers_array.as_ref(), expected_array.as_ref()); + assert_arrays_eq!(actual_numbers_array, expected_array); } #[tokio::test] @@ -759,7 +760,7 @@ async fn test_with_indices_on_two_columns() { let mut buf = ByteBufferMut::empty(); SESSION .write_options() - .write(&mut buf, st.to_array_stream()) + .write(&mut buf, st.into_array().to_array_stream()) .await .unwrap(); @@ -775,7 +776,6 @@ async fn test_with_indices_on_two_columns() { .read_all() .await .unwrap() - .to_struct() .to_struct(); let strings_actual = array.unmasked_field(0).clone(); @@ -784,7 +784,7 @@ async fn test_with_indices_on_two_columns() { .map(|&x| strings_expected[x as usize]) .collect(); let strings_expected_array = VarBinArray::from(strings_expected_vec).into_array(); - assert_arrays_eq!(strings_actual.as_ref(), strings_expected_array.as_ref()); + assert_arrays_eq!(strings_actual, strings_expected_array); let numbers_actual = array.unmasked_field(1).clone(); let numbers_expected_vec: Vec = kept_indices @@ -792,7 +792,7 @@ async fn test_with_indices_on_two_columns() { .map(|&x| numbers_expected[x as usize]) .collect(); let numbers_expected_array = Buffer::copy_from(&numbers_expected_vec).into_array(); - assert_arrays_eq!(numbers_actual.as_ref(), numbers_expected_array.as_ref()); + assert_arrays_eq!(numbers_actual, numbers_expected_array); } #[tokio::test] @@ -815,7 +815,7 @@ async fn test_with_indices_and_with_row_filter_simple() { let mut buf = ByteBufferMut::empty(); SESSION .write_options() - .write(&mut buf, expected_array.to_array_stream()) + .write(&mut buf, expected_array.into_array().to_array_stream()) .await .unwrap(); @@ -858,7 +858,7 @@ async fn test_with_indices_and_with_row_filter_simple() { .filter(|&x| x > 50) .collect(); let expected_array = expected_kept_numbers.into_array(); - assert_arrays_eq!(actual_kept_numbers_array.as_ref(), expected_array.as_ref()); + assert_arrays_eq!(actual_kept_numbers_array, expected_array); // test all indices let actual_array = file @@ -880,10 +880,7 @@ async fn test_with_indices_and_with_row_filter_simple() { .cloned() .collect(); let expected_numbers_array = expected_filtered.into_array(); - assert_arrays_eq!( - actual_numbers_array.as_ref(), - expected_numbers_array.as_ref() - ); + assert_arrays_eq!(actual_numbers_array, expected_numbers_array); } #[tokio::test] @@ -940,11 +937,11 @@ async fn filter_string_chunked() { let names_expected = VarBinArray::from_iter(vec![Some("Joseph")], DType::Utf8(Nullability::Nullable)) .into_array(); - assert_arrays_eq!(names_actual.as_ref(), names_expected.as_ref()); + assert_arrays_eq!(names_actual, names_expected); let ages_actual = actual_array.unmasked_field(1).clone(); let ages_expected = PrimitiveArray::from_option_iter([Some(25i32)]).into_array(); - assert_arrays_eq!(ages_actual.as_ref(), ages_expected.as_ref()); + assert_arrays_eq!(ages_actual, ages_expected); } #[tokio::test] @@ -1041,7 +1038,7 @@ async fn test_pruning_with_or() { Some("P".to_owned()), ]) .into_array(); - assert_arrays_eq!(letters_actual.as_ref(), letters_expected.as_ref()); + assert_arrays_eq!(letters_actual, letters_expected); let numbers_actual = actual_array.unmasked_field(1).clone(); let numbers_expected = PrimitiveArray::from_option_iter([ @@ -1057,7 +1054,7 @@ async fn test_pruning_with_or() { Some(22), ]) .into_array(); - assert_arrays_eq!(numbers_actual.as_ref(), numbers_expected.as_ref()); + assert_arrays_eq!(numbers_actual, numbers_expected); } #[tokio::test] @@ -1079,7 +1076,7 @@ async fn test_repeated_projection() { let mut buf = ByteBufferMut::empty(); SESSION .write_options() - .write(&mut buf, single_column_array.to_array_stream()) + .write(&mut buf, single_column_array.into_array().to_array_stream()) .await .unwrap(); @@ -1122,7 +1119,7 @@ async fn basic_file_roundtrip() -> VortexResult<()> { let result = vxf.scan()?.into_array_stream()?.read_all().await?; let expected = buffer![0i32, 1, 2, 3, 4, 5, 6, 7, 8].into_array(); - assert_arrays_eq!(result.as_ref(), expected.as_ref()); + assert_arrays_eq!(result, expected); Ok(()) } @@ -1170,7 +1167,7 @@ async fn file_take() -> VortexResult<()> { .await?; let expected = buffer![0i32, 1, 8].into_array(); - assert_arrays_eq!(result.as_ref(), expected.as_ref()); + assert_arrays_eq!(result, expected); Ok(()) } @@ -1293,7 +1290,7 @@ async fn test_into_tokio_array_stream() -> VortexResult<()> { let mut buf = ByteBufferMut::empty(); SESSION .write_options() - .write(&mut buf, st.to_array_stream()) + .write(&mut buf, st.into_array().to_array_stream()) .await?; let file = SESSION.open_options().open_buffer(buf)?; @@ -1385,7 +1382,7 @@ async fn test_writer_multiple_pushes() -> VortexResult<()> { .unmasked_field_by_name("numbers")? .clone(); let expected = buffer![1u32, 2, 3, 4, 5, 6, 7, 8, 9].into_array(); - assert_arrays_eq!(numbers.as_ref(), expected.as_ref()); + assert_arrays_eq!(numbers, expected); Ok(()) } @@ -1419,7 +1416,7 @@ async fn test_writer_push_stream() -> VortexResult<()> { .unmasked_field_by_name("numbers")? .clone(); let expected = buffer![1u32, 2, 3, 4, 5, 6].into_array(); - assert_arrays_eq!(numbers.as_ref(), expected.as_ref()); + assert_arrays_eq!(numbers, expected); Ok(()) } @@ -1483,7 +1480,7 @@ async fn test_writer_empty_chunks() -> VortexResult<()> { .unmasked_field_by_name("numbers")? .clone(); let expected = buffer![1u32, 2].into_array(); - assert_arrays_eq!(numbers.as_ref(), expected.as_ref()); + assert_arrays_eq!(numbers, expected); Ok(()) } @@ -1521,7 +1518,7 @@ async fn test_writer_mixed_push_and_stream() -> VortexResult<()> { .unmasked_field_by_name("numbers")? .clone(); let expected = buffer![1u32, 2, 3, 4, 5, 6].into_array(); - assert_arrays_eq!(numbers.as_ref(), expected.as_ref()); + assert_arrays_eq!(numbers, expected); Ok(()) } @@ -1744,7 +1741,7 @@ async fn test_segment_ordering_dict_codes_before_values() -> VortexResult<()> { let mut buf = ByteBufferMut::empty(); let summary = SESSION .write_options() - .write(&mut buf, st.to_array_stream()) + .write(&mut buf, st.into_array().to_array_stream()) .await?; let footer = summary.footer(); @@ -1798,7 +1795,7 @@ async fn test_segment_ordering_zonemaps_after_data() -> VortexResult<()> { let mut buf = ByteBufferMut::empty(); let summary = SESSION .write_options() - .write(&mut buf, st.to_array_stream()) + .write(&mut buf, st.into_array().to_array_stream()) .await?; let footer = summary.footer(); diff --git a/vortex-file/src/v2/file_stats_reader.rs b/vortex-file/src/v2/file_stats_reader.rs index f8de172fea9..ab3fe42ffca 100644 --- a/vortex-file/src/v2/file_stats_reader.rs +++ b/vortex-file/src/v2/file_stats_reader.rs @@ -101,6 +101,7 @@ impl FileStatsLayoutReader { let result = pruning .execute::(&mut ctx)? .into_bool() + .into_array() .scalar_at(0)?; Ok(result.as_bool().value() == Some(true)) diff --git a/vortex-ipc/public-api.lock b/vortex-ipc/public-api.lock index 09d90971d2f..101ac7940ef 100644 --- a/vortex-ipc/public-api.lock +++ b/vortex-ipc/public-api.lock @@ -22,7 +22,7 @@ pub fn vortex_ipc::iterator::SyncIPCReader::try_new(read: R, session: &vortex impl core::iter::traits::iterator::Iterator for vortex_ipc::iterator::SyncIPCReader -pub type vortex_ipc::iterator::SyncIPCReader::Item = core::result::Result, vortex_error::VortexError> +pub type vortex_ipc::iterator::SyncIPCReader::Item = core::result::Result pub fn vortex_ipc::iterator::SyncIPCReader::next(&mut self) -> core::option::Option @@ -58,7 +58,7 @@ pub fn vortex_ipc::messages::DecoderMessage::fmt(&self, f: &mut core::fmt::Forma pub enum vortex_ipc::messages::EncoderMessage<'a> -pub vortex_ipc::messages::EncoderMessage::Array(&'a dyn vortex_array::array::DynArray) +pub vortex_ipc::messages::EncoderMessage::Array(&'a vortex_array::array::erased::ArrayRef) pub vortex_ipc::messages::EncoderMessage::Buffer(&'a vortex_buffer::ByteBuffer) @@ -176,7 +176,7 @@ impl<'__pin, R> core::marker::Unpin for vortex_ipc::stream::AsyncIPCReader wh impl futures_core::stream::Stream for vortex_ipc::stream::AsyncIPCReader -pub type vortex_ipc::stream::AsyncIPCReader::Item = core::result::Result, vortex_error::VortexError> +pub type vortex_ipc::stream::AsyncIPCReader::Item = core::result::Result pub fn vortex_ipc::stream::AsyncIPCReader::poll_next(self: core::pin::Pin<&mut Self>, cx: &mut core::task::wake::Context<'_>) -> core::task::poll::Poll> diff --git a/vortex-ipc/src/messages/decoder.rs b/vortex-ipc/src/messages/decoder.rs index ca863410855..dabbc9e47a8 100644 --- a/vortex-ipc/src/messages/decoder.rs +++ b/vortex-ipc/src/messages/decoder.rs @@ -7,8 +7,8 @@ use std::sync::Arc; use bytes::Buf; use flatbuffers::root; use flatbuffers::root_unchecked; +use vortex_array::ArrayId; use vortex_array::serde::ArrayParts; -use vortex_array::vtable::ArrayId; use vortex_buffer::AlignedBuf; use vortex_buffer::Alignment; use vortex_buffer::ByteBuffer; @@ -168,7 +168,6 @@ impl MessageDecoder { mod test { use bytes::BytesMut; use vortex_array::ArrayRef; - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::arrays::ConstantArray; use vortex_buffer::buffer; diff --git a/vortex-ipc/src/messages/encoder.rs b/vortex-ipc/src/messages/encoder.rs index c55b47243b6..66a555ecb36 100644 --- a/vortex-ipc/src/messages/encoder.rs +++ b/vortex-ipc/src/messages/encoder.rs @@ -5,7 +5,7 @@ use bytes::Bytes; use bytes::BytesMut; use flatbuffers::FlatBufferBuilder; use vortex_array::ArrayContext; -use vortex_array::DynArray; +use vortex_array::ArrayRef; use vortex_array::dtype::DType; use vortex_array::serde::SerializeOptions; use vortex_buffer::ByteBuffer; @@ -17,7 +17,7 @@ use vortex_flatbuffers::message as fb; /// An IPC message ready to be passed to the encoder. pub enum EncoderMessage<'a> { - Array(&'a dyn DynArray), + Array(&'a ArrayRef), Buffer(&'a ByteBuffer), DType(&'a DType), } diff --git a/vortex-jni/src/array.rs b/vortex-jni/src/array.rs index a727683b661..527371c6357 100644 --- a/vortex-jni/src/array.rs +++ b/vortex-jni/src/array.rs @@ -25,10 +25,10 @@ use jni::sys::jobject; use jni::sys::jshort; use jni::sys::jstring; use vortex::array::ArrayRef; -use vortex::array::DynArray; +use vortex::array::ArrayView; use vortex::array::ToCanonical; -use vortex::array::arrays::VarBinArray; -use vortex::array::arrays::VarBinViewArray; +use vortex::array::arrays::VarBin; +use vortex::array::arrays::VarBinView; use vortex::array::arrow::IntoArrowArray; use vortex::dtype::DType; use vortex::dtype::i256; @@ -248,10 +248,7 @@ pub extern "system" fn Java_dev_vortex_jni_NativeArrayMethods_slice( let array_ref = unsafe { NativeArray::from_ptr(array_ptr) }; try_or_throw(&mut env, |_| { - let sliced_array = array_ref - .inner - .as_ref() - .slice(start as usize..end as usize)?; + let sliced_array = array_ref.inner.slice(start as usize..end as usize)?; Ok(NativeArray::new(sliced_array).into_raw()) }) } @@ -449,12 +446,11 @@ pub extern "system" fn Java_dev_vortex_jni_NativeArrayMethods_getUTF8_1ptr_1len< throw_runtime!("getUTF8_ptr_len expected UTF8 array"); } - if let Some(varbin) = array_ref.inner.as_any().downcast_ref::() { + if let Some(varbin) = array_ref.inner.as_opt::() { let (ptr, len) = get_ptr_len_varbin(index, varbin); env.set_long_array_region(&out_ptr, 0, &[ptr as jlong])?; env.set_int_array_region(&out_len, 0, &[len as jint])?; - } else if let Some(varbinview) = array_ref.inner.as_any().downcast_ref::() - { + } else if let Some(varbinview) = array_ref.inner.as_opt::() { let (ptr, len) = get_ptr_len_view(index, varbinview); env.set_long_array_region(&out_ptr, 0, &[ptr as jlong])?; env.set_int_array_region(&out_len, 0, &[len as jint])?; @@ -485,7 +481,7 @@ pub extern "system" fn Java_dev_vortex_jni_NativeArrayMethods_getBinary<'local>( /// Get a raw pointer + len to pass back to Java to avoid copying across the boundary. /// /// Panics if the index is out of bounds. -fn get_ptr_len_varbin(index: jint, array: &VarBinArray) -> (*const u8, u32) { +fn get_ptr_len_varbin(index: jint, array: ArrayView) -> (*const u8, u32) { // TODO: propagate this error up instead of expecting let bytes = array.bytes_at(usize::try_from(index).vortex_expect("index must fit in usize")); ( @@ -496,7 +492,7 @@ fn get_ptr_len_varbin(index: jint, array: &VarBinArray) -> (*const u8, u32) { } /// Get a raw pointer + len to pass back to Java to avoid copying across the boundary. -fn get_ptr_len_view(index: jint, array: &VarBinViewArray) -> (*const u8, u32) { +fn get_ptr_len_view(index: jint, array: ArrayView) -> (*const u8, u32) { // TODO: propagate this error up instead of expecting let bytes = array.bytes_at(usize::try_from(index).vortex_expect("index must fit in usize")); ( diff --git a/vortex-jni/src/writer.rs b/vortex-jni/src/writer.rs index 4254ddc24a8..45d33d9ef70 100644 --- a/vortex-jni/src/writer.rs +++ b/vortex-jni/src/writer.rs @@ -22,7 +22,6 @@ use jni::sys::jlong; use object_store::path::Path; use url::Url; use vortex::array::ArrayRef; -use vortex::array::DynArray; use vortex::array::arrow::FromArrowArray; use vortex::array::stream::ArrayStreamAdapter; use vortex::dtype::DType; diff --git a/vortex-layout/public-api.lock b/vortex-layout/public-api.lock index f8347ad7fd7..88e1dc65a40 100644 --- a/vortex-layout/public-api.lock +++ b/vortex-layout/public-api.lock @@ -186,19 +186,19 @@ pub fn vortex_layout::layouts::compressed::CompressingStrategy::write_stream<'li pub trait vortex_layout::layouts::compressed::CompressorPlugin: core::marker::Send + core::marker::Sync + 'static -pub fn vortex_layout::layouts::compressed::CompressorPlugin::compress_chunk(&self, chunk: &vortex_array::array::ArrayRef) -> vortex_error::VortexResult +pub fn vortex_layout::layouts::compressed::CompressorPlugin::compress_chunk(&self, chunk: &vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult impl vortex_layout::layouts::compressed::CompressorPlugin for alloc::sync::Arc -pub fn alloc::sync::Arc::compress_chunk(&self, chunk: &vortex_array::array::ArrayRef) -> vortex_error::VortexResult +pub fn alloc::sync::Arc::compress_chunk(&self, chunk: &vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult impl vortex_layout::layouts::compressed::CompressorPlugin for vortex_btrblocks::canonical_compressor::BtrBlocksCompressor -pub fn vortex_btrblocks::canonical_compressor::BtrBlocksCompressor::compress_chunk(&self, chunk: &vortex_array::array::ArrayRef) -> vortex_error::VortexResult +pub fn vortex_btrblocks::canonical_compressor::BtrBlocksCompressor::compress_chunk(&self, chunk: &vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult -impl vortex_layout::layouts::compressed::CompressorPlugin for F where F: core::ops::function::Fn(&vortex_array::array::ArrayRef) -> vortex_error::VortexResult + core::marker::Send + core::marker::Sync + 'static +impl vortex_layout::layouts::compressed::CompressorPlugin for F where F: core::ops::function::Fn(&vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult + core::marker::Send + core::marker::Sync + 'static -pub fn F::compress_chunk(&self, chunk: &vortex_array::array::ArrayRef) -> vortex_error::VortexResult +pub fn F::compress_chunk(&self, chunk: &vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult pub mod vortex_layout::layouts::dict @@ -608,7 +608,7 @@ pub fn vortex_layout::layouts::row_idx::RowIdx::arity(&self, _options: &Self::Op pub fn vortex_layout::layouts::row_idx::RowIdx::child_name(&self, _instance: &Self::Options, _child_idx: usize) -> vortex_array::scalar_fn::vtable::ChildName -pub fn vortex_layout::layouts::row_idx::RowIdx::execute(&self, _options: &Self::Options, _args: &dyn vortex_array::scalar_fn::vtable::ExecutionArgs, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_layout::layouts::row_idx::RowIdx::execute(&self, _options: &Self::Options, _args: &dyn vortex_array::scalar_fn::vtable::ExecutionArgs, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_layout::layouts::row_idx::RowIdx::fmt_sql(&self, _options: &Self::Options, _expr: &vortex_array::expr::expression::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result @@ -630,7 +630,7 @@ pub fn vortex_layout::layouts::row_idx::RowIdxLayoutReader::filter_evaluation(&s pub fn vortex_layout::layouts::row_idx::RowIdxLayoutReader::name(&self) -> &alloc::sync::Arc -pub fn vortex_layout::layouts::row_idx::RowIdxLayoutReader::projection_evaluation(&self, row_range: &core::ops::range::Range, expr: &vortex_array::expr::expression::Expression, mask: vortex_array::mask_future::MaskFuture) -> vortex_error::VortexResult>> +pub fn vortex_layout::layouts::row_idx::RowIdxLayoutReader::projection_evaluation(&self, row_range: &core::ops::range::Range, expr: &vortex_array::expr::expression::Expression, mask: vortex_array::mask_future::MaskFuture) -> vortex_error::VortexResult>> pub fn vortex_layout::layouts::row_idx::RowIdxLayoutReader::pruning_evaluation(&self, row_range: &core::ops::range::Range, expr: &vortex_array::expr::expression::Expression, mask: vortex_mask::Mask) -> vortex_error::VortexResult @@ -798,21 +798,21 @@ pub fn vortex_layout::layouts::zoned::zone_map::StatsAccumulator::as_stats_table pub fn vortex_layout::layouts::zoned::zone_map::StatsAccumulator::new(dtype: &vortex_array::dtype::DType, stats: &[vortex_array::expr::stats::Stat], max_variable_length_statistics_size: usize) -> Self -pub fn vortex_layout::layouts::zoned::zone_map::StatsAccumulator::push_chunk(&mut self, array: &vortex_array::array::ArrayRef) -> vortex_error::VortexResult<()> +pub fn vortex_layout::layouts::zoned::zone_map::StatsAccumulator::push_chunk(&mut self, array: &vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult<()> -pub fn vortex_layout::layouts::zoned::zone_map::StatsAccumulator::push_chunk_without_compute(&mut self, array: &vortex_array::array::ArrayRef) -> vortex_error::VortexResult<()> +pub fn vortex_layout::layouts::zoned::zone_map::StatsAccumulator::push_chunk_without_compute(&mut self, array: &vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult<()> pub struct vortex_layout::layouts::zoned::zone_map::ZoneMap impl vortex_layout::layouts::zoned::zone_map::ZoneMap -pub fn vortex_layout::layouts::zoned::zone_map::ZoneMap::array(&self) -> &vortex_array::arrays::struct_::array::StructArray +pub fn vortex_layout::layouts::zoned::zone_map::ZoneMap::array(&self) -> &vortex_array::arrays::struct_::vtable::StructArray pub fn vortex_layout::layouts::zoned::zone_map::ZoneMap::dtype_for_stats_table(column_dtype: &vortex_array::dtype::DType, present_stats: &[vortex_array::expr::stats::Stat]) -> vortex_array::dtype::DType -pub fn vortex_layout::layouts::zoned::zone_map::ZoneMap::get_stat(&self, stat: vortex_array::expr::stats::Stat) -> vortex_error::VortexResult> +pub fn vortex_layout::layouts::zoned::zone_map::ZoneMap::get_stat(&self, stat: vortex_array::expr::stats::Stat) -> vortex_error::VortexResult> -pub unsafe fn vortex_layout::layouts::zoned::zone_map::ZoneMap::new_unchecked(array: vortex_array::arrays::struct_::array::StructArray, stats: alloc::sync::Arc<[vortex_array::expr::stats::Stat]>) -> Self +pub unsafe fn vortex_layout::layouts::zoned::zone_map::ZoneMap::new_unchecked(array: vortex_array::arrays::struct_::vtable::StructArray, stats: alloc::sync::Arc<[vortex_array::expr::stats::Stat]>) -> Self pub fn vortex_layout::layouts::zoned::zone_map::ZoneMap::present_stats(&self) -> &alloc::sync::Arc<[vortex_array::expr::stats::Stat]> @@ -820,7 +820,7 @@ pub fn vortex_layout::layouts::zoned::zone_map::ZoneMap::prune(&self, predicate: pub fn vortex_layout::layouts::zoned::zone_map::ZoneMap::to_stats_set(&self, stats: &[vortex_array::expr::stats::Stat], ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult -pub fn vortex_layout::layouts::zoned::zone_map::ZoneMap::try_new(column_dtype: vortex_array::dtype::DType, array: vortex_array::arrays::struct_::array::StructArray, stats: alloc::sync::Arc<[vortex_array::expr::stats::Stat]>) -> vortex_error::VortexResult +pub fn vortex_layout::layouts::zoned::zone_map::ZoneMap::try_new(column_dtype: vortex_array::dtype::DType, array: vortex_array::arrays::struct_::vtable::StructArray, stats: alloc::sync::Arc<[vortex_array::expr::stats::Stat]>) -> vortex_error::VortexResult impl core::clone::Clone for vortex_layout::layouts::zoned::zone_map::ZoneMap @@ -948,7 +948,7 @@ pub const vortex_layout::layouts::zoned::MAX_IS_TRUNCATED: &str pub const vortex_layout::layouts::zoned::MIN_IS_TRUNCATED: &str -pub type vortex_layout::layouts::SharedArrayFuture = futures_util::future::future::shared::Shared>> +pub type vortex_layout::layouts::SharedArrayFuture = futures_util::future::future::shared::Shared>> pub mod vortex_layout::scan @@ -1034,13 +1034,13 @@ pub mod vortex_layout::scan::repeated_scan pub struct vortex_layout::scan::repeated_scan::RepeatedScan -impl vortex_layout::scan::repeated_scan::RepeatedScan +impl vortex_layout::scan::repeated_scan::RepeatedScan -pub fn vortex_layout::scan::repeated_scan::RepeatedScan::dtype(&self) -> &vortex_array::dtype::DType +pub fn vortex_layout::scan::repeated_scan::RepeatedScan::dtype(&self) -> &vortex_array::dtype::DType -pub fn vortex_layout::scan::repeated_scan::RepeatedScan::execute_array_iter(&self, row_range: core::option::Option>, runtime: &B) -> vortex_error::VortexResult +pub fn vortex_layout::scan::repeated_scan::RepeatedScan::execute_array_iter(&self, row_range: core::option::Option>, runtime: &B) -> vortex_error::VortexResult -pub fn vortex_layout::scan::repeated_scan::RepeatedScan::execute_array_stream(&self, row_range: core::option::Option>) -> vortex_error::VortexResult +pub fn vortex_layout::scan::repeated_scan::RepeatedScan::execute_array_stream(&self, row_range: core::option::Option>) -> vortex_error::VortexResult impl vortex_layout::scan::repeated_scan::RepeatedScan @@ -1048,25 +1048,25 @@ pub fn vortex_layout::scan::repeated_scan::RepeatedScan::execute(&self, row_r pub fn vortex_layout::scan::repeated_scan::RepeatedScan::execute_stream(&self, row_range: core::option::Option>) -> vortex_error::VortexResult> + core::marker::Send + 'static + use> -pub fn vortex_layout::scan::repeated_scan::RepeatedScan::new(session: vortex_session::VortexSession, layout_reader: vortex_layout::LayoutReaderRef, projection: vortex_array::expr::expression::Expression, filter: core::option::Option, ordered: bool, row_range: core::option::Option>, selection: vortex_scan::selection::Selection, splits: vortex_layout::scan::splits::Splits, concurrency: usize, map_fn: alloc::sync::Arc<(dyn core::ops::function::Fn(vortex_array::array::ArrayRef) -> vortex_error::VortexResult + core::marker::Send + core::marker::Sync)>, limit: core::option::Option, dtype: vortex_array::dtype::DType) -> Self +pub fn vortex_layout::scan::repeated_scan::RepeatedScan::new(session: vortex_session::VortexSession, layout_reader: vortex_layout::LayoutReaderRef, projection: vortex_array::expr::expression::Expression, filter: core::option::Option, ordered: bool, row_range: core::option::Option>, selection: vortex_scan::selection::Selection, splits: vortex_layout::scan::splits::Splits, concurrency: usize, map_fn: alloc::sync::Arc<(dyn core::ops::function::Fn(vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult + core::marker::Send + core::marker::Sync)>, limit: core::option::Option, dtype: vortex_array::dtype::DType) -> Self pub mod vortex_layout::scan::scan_builder pub struct vortex_layout::scan::scan_builder::ScanBuilder -impl vortex_layout::scan::scan_builder::ScanBuilder +impl vortex_layout::scan::scan_builder::ScanBuilder -pub fn vortex_layout::scan::scan_builder::ScanBuilder::into_array_iter(self, runtime: &B) -> vortex_error::VortexResult +pub fn vortex_layout::scan::scan_builder::ScanBuilder::into_array_iter(self, runtime: &B) -> vortex_error::VortexResult -pub fn vortex_layout::scan::scan_builder::ScanBuilder::into_array_stream(self) -> vortex_error::VortexResult +pub fn vortex_layout::scan::scan_builder::ScanBuilder::into_array_stream(self) -> vortex_error::VortexResult -pub fn vortex_layout::scan::scan_builder::ScanBuilder::new(session: vortex_session::VortexSession, layout_reader: alloc::sync::Arc) -> Self +pub fn vortex_layout::scan::scan_builder::ScanBuilder::new(session: vortex_session::VortexSession, layout_reader: alloc::sync::Arc) -> Self -impl vortex_layout::scan::scan_builder::ScanBuilder +impl vortex_layout::scan::scan_builder::ScanBuilder -pub fn vortex_layout::scan::scan_builder::ScanBuilder::into_record_batch_reader(self, schema: arrow_schema::schema::SchemaRef, runtime: &B) -> vortex_error::VortexResult +pub fn vortex_layout::scan::scan_builder::ScanBuilder::into_record_batch_reader(self, schema: arrow_schema::schema::SchemaRef, runtime: &B) -> vortex_error::VortexResult -pub fn vortex_layout::scan::scan_builder::ScanBuilder::into_record_batch_stream(self, schema: arrow_schema::schema::SchemaRef) -> vortex_error::VortexResult> + core::marker::Send + 'static> +pub fn vortex_layout::scan::scan_builder::ScanBuilder::into_record_batch_stream(self, schema: arrow_schema::schema::SchemaRef) -> vortex_error::VortexResult> + core::marker::Send + 'static> impl vortex_layout::scan::scan_builder::ScanBuilder @@ -1360,15 +1360,15 @@ pub fn vortex_layout::sequence::SequentialStreamAdapter::new(dtype: vortex_ar impl<'__pin, S> core::marker::Unpin for vortex_layout::sequence::SequentialStreamAdapter where pin_project_lite::__private::PinnedFieldsOf<__Origin<'__pin, S>>: core::marker::Unpin -impl futures_core::stream::Stream for vortex_layout::sequence::SequentialStreamAdapter where S: futures_core::stream::Stream> +impl futures_core::stream::Stream for vortex_layout::sequence::SequentialStreamAdapter where S: futures_core::stream::Stream> -pub type vortex_layout::sequence::SequentialStreamAdapter::Item = core::result::Result<(vortex_layout::sequence::SequenceId, alloc::sync::Arc), vortex_error::VortexError> +pub type vortex_layout::sequence::SequentialStreamAdapter::Item = core::result::Result<(vortex_layout::sequence::SequenceId, vortex_array::array::erased::ArrayRef), vortex_error::VortexError> pub fn vortex_layout::sequence::SequentialStreamAdapter::poll_next(self: core::pin::Pin<&mut Self>, cx: &mut core::task::wake::Context<'_>) -> core::task::poll::Poll> pub fn vortex_layout::sequence::SequentialStreamAdapter::size_hint(&self) -> (usize, core::option::Option) -impl vortex_layout::sequence::SequentialStream for vortex_layout::sequence::SequentialStreamAdapter where S: futures_core::stream::Stream> +impl vortex_layout::sequence::SequentialStream for vortex_layout::sequence::SequentialStreamAdapter where S: futures_core::stream::Stream> pub fn vortex_layout::sequence::SequentialStreamAdapter::dtype(&self) -> &vortex_array::dtype::DType @@ -1380,7 +1380,7 @@ impl vortex_layout::sequence::SequentialAr pub fn S::sequenced(self, pointer: vortex_layout::sequence::SequencePointer) -> vortex_layout::sequence::SendableSequentialStream where Self: core::marker::Sized + core::marker::Send + 'static -pub trait vortex_layout::sequence::SequentialStream: futures_core::stream::Stream> +pub trait vortex_layout::sequence::SequentialStream: futures_core::stream::Stream> pub fn vortex_layout::sequence::SequentialStream::dtype(&self) -> &vortex_array::dtype::DType @@ -1388,7 +1388,7 @@ impl vortex_layout::sequence::SequentialStream for vortex_layout::sequence::Send pub fn vortex_layout::sequence::SendableSequentialStream::dtype(&self) -> &vortex_array::dtype::DType -impl vortex_layout::sequence::SequentialStream for vortex_layout::sequence::SequentialStreamAdapter where S: futures_core::stream::Stream> +impl vortex_layout::sequence::SequentialStream for vortex_layout::sequence::SequentialStreamAdapter where S: futures_core::stream::Stream> pub fn vortex_layout::sequence::SequentialStreamAdapter::dtype(&self) -> &vortex_array::dtype::DType @@ -1858,7 +1858,7 @@ pub fn vortex_layout::layouts::row_idx::RowIdxLayoutReader::filter_evaluation(&s pub fn vortex_layout::layouts::row_idx::RowIdxLayoutReader::name(&self) -> &alloc::sync::Arc -pub fn vortex_layout::layouts::row_idx::RowIdxLayoutReader::projection_evaluation(&self, row_range: &core::ops::range::Range, expr: &vortex_array::expr::expression::Expression, mask: vortex_array::mask_future::MaskFuture) -> vortex_error::VortexResult>> +pub fn vortex_layout::layouts::row_idx::RowIdxLayoutReader::projection_evaluation(&self, row_range: &core::ops::range::Range, expr: &vortex_array::expr::expression::Expression, mask: vortex_array::mask_future::MaskFuture) -> vortex_error::VortexResult>> pub fn vortex_layout::layouts::row_idx::RowIdxLayoutReader::pruning_evaluation(&self, row_range: &core::ops::range::Range, expr: &vortex_array::expr::expression::Expression, mask: vortex_mask::Mask) -> vortex_error::VortexResult @@ -2126,7 +2126,7 @@ pub fn vortex_layout::layouts::zoned::Zoned::with_children(layout: &mut Self::La pub fn vortex_layout::layout_from_flatbuffer(flatbuffer: vortex_flatbuffers::FlatBuffer, dtype: &vortex_array::dtype::DType, layout_ctx: &vortex_session::registry::ReadContext, ctx: &vortex_session::registry::ReadContext, layouts: &vortex_layout::session::LayoutRegistry) -> vortex_error::VortexResult -pub type vortex_layout::ArrayFuture = futures_core::future::BoxFuture<'static, vortex_error::VortexResult> +pub type vortex_layout::ArrayFuture = futures_core::future::BoxFuture<'static, vortex_error::VortexResult> pub type vortex_layout::LayoutContext = vortex_session::registry::Context diff --git a/vortex-layout/src/display.rs b/vortex-layout/src/display.rs index 75d1b61d55e..c3c36a06de1 100644 --- a/vortex-layout/src/display.rs +++ b/vortex-layout/src/display.rs @@ -265,7 +265,7 @@ mod tests { .write_stream( ctx.clone(), segments.clone(), - array1.to_array_stream().sequenced(ptr1), + array1.into_array().to_array_stream().sequenced(ptr1), eof1, handle.clone(), ) @@ -288,7 +288,11 @@ mod tests { .write_stream( ctx.clone(), segments.clone(), - builder.finish().to_array_stream().sequenced(ptr2), + builder + .finish() + .into_array() + .to_array_stream() + .sequenced(ptr2), eof2, handle.clone(), ) @@ -348,7 +352,7 @@ vortex.struct, dtype: {numbers=i64?, strings=utf8}, children: 2, rows: 5 .write_stream( ctx.clone(), segments.clone(), - array1.to_array_stream().sequenced(ptr1), + array1.into_array().to_array_stream().sequenced(ptr1), eof1, handle.clone(), ) @@ -362,7 +366,7 @@ vortex.struct, dtype: {numbers=i64?, strings=utf8}, children: 2, rows: 5 .write_stream( ctx.clone(), segments.clone(), - array2.to_array_stream().sequenced(ptr2), + array2.into_array().to_array_stream().sequenced(ptr2), eof2, handle.clone(), ) @@ -407,7 +411,7 @@ vortex.chunked, dtype: i32, children: 2, rows: 10 .write_stream( ctx.clone(), segments.clone(), - array.to_array_stream().sequenced(ptr), + array.into_array().to_array_stream().sequenced(ptr), eof, handle, ) @@ -449,7 +453,7 @@ vortex.flat, dtype: i32?, segment 0, buffers=[20B], total=20B .write_stream( ctx, segments.clone(), - array.to_array_stream().sequenced(ptr), + array.into_array().to_array_stream().sequenced(ptr), eof, handle, ) diff --git a/vortex-layout/src/layouts/chunked/reader.rs b/vortex-layout/src/layouts/chunked/reader.rs index 6a0c63b6eb5..63e22e4a394 100644 --- a/vortex-layout/src/layouts/chunked/reader.rs +++ b/vortex-layout/src/layouts/chunked/reader.rs @@ -403,7 +403,7 @@ mod test { .unwrap(); let expected = buffer![1i32, 2, 3, 4, 5, 6, 7, 8, 9].into_array(); - assert_arrays_eq!(result.as_ref(), expected.as_ref()); + assert_arrays_eq!(result, expected); }) } } diff --git a/vortex-layout/src/layouts/compressed.rs b/vortex-layout/src/layouts/compressed.rs index 603b2360e0d..539e59982d6 100644 --- a/vortex-layout/src/layouts/compressed.rs +++ b/vortex-layout/src/layouts/compressed.rs @@ -7,7 +7,6 @@ use async_trait::async_trait; use futures::StreamExt as _; use vortex_array::ArrayContext; use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::expr::stats::Stat; use vortex_btrblocks::BtrBlocksCompressor; use vortex_btrblocks::BtrBlocksCompressorBuilder; diff --git a/vortex-layout/src/layouts/dict/reader.rs b/vortex-layout/src/layouts/dict/reader.rs index ded15f6ace0..d42c311e9de 100644 --- a/vortex-layout/src/layouts/dict/reader.rs +++ b/vortex-layout/src/layouts/dict/reader.rs @@ -12,7 +12,6 @@ use futures::TryFutureExt; use futures::future::BoxFuture; use futures::try_join; use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::MaskFuture; use vortex_array::VortexSessionExecute; diff --git a/vortex-layout/src/layouts/dict/writer.rs b/vortex-layout/src/layouts/dict/writer.rs index 959037d7783..5d7a28f5083 100644 --- a/vortex-layout/src/layouts/dict/writer.rs +++ b/vortex-layout/src/layouts/dict/writer.rs @@ -20,7 +20,6 @@ use futures::stream::once; use futures::try_join; use vortex_array::ArrayContext; use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::arrays::Dict; use vortex_array::builders::dict::DictConstraints; use vortex_array::builders::dict::DictEncoder; diff --git a/vortex-layout/src/layouts/flat/reader.rs b/vortex-layout/src/layouts/flat/reader.rs index 727566d3db8..779cf12b3eb 100644 --- a/vortex-layout/src/layouts/flat/reader.rs +++ b/vortex-layout/src/layouts/flat/reader.rs @@ -9,7 +9,6 @@ use std::sync::Arc; use futures::FutureExt; use futures::future::BoxFuture; use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::MaskFuture; use vortex_array::VortexSessionExecute; use vortex_array::dtype::DType; @@ -348,7 +347,7 @@ mod test { .unwrap(); let expected = PrimitiveArray::new(buffer![3i32, 4], Validity::AllValid).into_array(); - assert_arrays_eq!(result.as_ref(), expected.as_ref()); + assert_arrays_eq!(result, expected); }) } } diff --git a/vortex-layout/src/layouts/flat/writer.rs b/vortex-layout/src/layouts/flat/writer.rs index 8f01669638e..733b575b684 100644 --- a/vortex-layout/src/layouts/flat/writer.rs +++ b/vortex-layout/src/layouts/flat/writer.rs @@ -4,7 +4,6 @@ use async_trait::async_trait; use futures::StreamExt; use vortex_array::ArrayContext; -use vortex_array::DynArray; use vortex_array::dtype::DType; use vortex_array::expr::stats::Precision; use vortex_array::expr::stats::Stat; @@ -197,7 +196,6 @@ mod tests { use vortex_array::ArrayContext; use vortex_array::ArrayRef; - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::MaskFuture; use vortex_array::ToCanonical; @@ -250,7 +248,7 @@ mod tests { .write_stream( ctx, segments.clone(), - array.to_array_stream().sequenced(ptr), + array.into_array().to_array_stream().sequenced(ptr), eof, handle, ) @@ -299,7 +297,7 @@ mod tests { .write_stream( ctx, segments.clone(), - array.to_array_stream().sequenced(ptr), + array.into_array().to_array_stream().sequenced(ptr), eof, handle, ) @@ -366,7 +364,7 @@ mod tests { .write_stream( ctx, segments.clone(), - array.to_array_stream().sequenced(ptr), + array.into_array().to_array_stream().sequenced(ptr), eof, handle, ) @@ -434,7 +432,7 @@ mod tests { .write_stream( ctx, segments.clone(), - filter.to_array_stream().sequenced(ptr), + filter.into_array().to_array_stream().sequenced(ptr), eof, handle, ) @@ -476,7 +474,7 @@ mod tests { .write_stream( ctx, segments.clone(), - dict.to_array_stream().sequenced(ptr), + dict.into_array().to_array_stream().sequenced(ptr), eof, handle, ) diff --git a/vortex-layout/src/layouts/repartition.rs b/vortex-layout/src/layouts/repartition.rs index a022abd27cb..741aef8b853 100644 --- a/vortex-layout/src/layouts/repartition.rs +++ b/vortex-layout/src/layouts/repartition.rs @@ -10,7 +10,6 @@ use futures::StreamExt as _; use futures::pin_mut; use vortex_array::ArrayContext; use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::arrays::ChunkedArray; use vortex_array::dtype::DType; @@ -148,7 +147,7 @@ impl LayoutStrategy for RepartitionStrategy { if !chunked.is_empty() { yield ( sequence_pointer.advance(), - chunked.to_canonical()?.into_array(), + chunked.into_array().to_canonical()?.into_array(), ) } } @@ -161,7 +160,7 @@ impl LayoutStrategy for RepartitionStrategy { if !to_flush.is_empty() { yield ( sequence_pointer.advance(), - to_flush.to_canonical()?.into_array(), + to_flush.into_array().to_canonical()?.into_array(), ) } } @@ -267,7 +266,6 @@ mod tests { use std::sync::Arc; use vortex_array::ArrayContext; - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::arrays::ConstantArray; use vortex_array::arrays::FixedSizeListArray; diff --git a/vortex-layout/src/layouts/row_idx/mod.rs b/vortex-layout/src/layouts/row_idx/mod.rs index 8ce4a2f5f4b..0e982ad2168 100644 --- a/vortex-layout/src/layouts/row_idx/mod.rs +++ b/vortex-layout/src/layouts/row_idx/mod.rs @@ -16,7 +16,6 @@ pub use expr::*; use futures::FutureExt; use futures::future::BoxFuture; use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::MaskFuture; use vortex_array::VortexSessionExecute; @@ -36,6 +35,7 @@ use vortex_array::scalar::PValue; use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_mask::Mask; +use vortex_sequence::Sequence; use vortex_sequence::SequenceArray; use vortex_session::VortexSession; use vortex_utils::aliases::dash_map::DashMap; @@ -254,7 +254,7 @@ impl LayoutReader for RowIdxLayoutReader { // Returns a SequenceArray representing the row indices for the given row range, fn idx_array(row_offset: u64, row_range: &Range) -> SequenceArray { - SequenceArray::try_new( + Sequence::try_new( PValue::U64(row_offset + row_range.start), PValue::U64(1), PType::U64, diff --git a/vortex-layout/src/layouts/struct_/reader.rs b/vortex-layout/src/layouts/struct_/reader.rs index 1b6fc51b44b..7cffc587900 100644 --- a/vortex-layout/src/layouts/struct_/reader.rs +++ b/vortex-layout/src/layouts/struct_/reader.rs @@ -392,7 +392,6 @@ mod tests { use rstest::fixture; use rstest::rstest; use vortex_array::ArrayContext; - use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::MaskFuture; use vortex_array::ToCanonical; diff --git a/vortex-layout/src/layouts/table.rs b/vortex-layout/src/layouts/table.rs index 15e3737624e..2f2bf9df863 100644 --- a/vortex-layout/src/layouts/table.rs +++ b/vortex-layout/src/layouts/table.rs @@ -242,7 +242,7 @@ impl LayoutStrategy for TableStrategy { columns.extend( struct_chunk .iter_unmasked_fields() - .map(|field| (sequence_pointer.advance(), field.to_array())), + .map(|field| (sequence_pointer.advance(), field.clone())), ); Ok(columns) diff --git a/vortex-layout/src/layouts/zoned/builder.rs b/vortex-layout/src/layouts/zoned/builder.rs index 044c3270dde..c8fd3686281 100644 --- a/vortex-layout/src/layouts/zoned/builder.rs +++ b/vortex-layout/src/layouts/zoned/builder.rs @@ -4,7 +4,6 @@ use std::marker::PhantomData; use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::IntoArray; use vortex_array::arrays::ConstantArray; use vortex_array::builders::ArrayBuilder; diff --git a/vortex-layout/src/layouts/zoned/reader.rs b/vortex-layout/src/layouts/zoned/reader.rs index b4c30610467..02bff672eeb 100644 --- a/vortex-layout/src/layouts/zoned/reader.rs +++ b/vortex-layout/src/layouts/zoned/reader.rs @@ -468,7 +468,7 @@ mod test { .unwrap(); let expected = buffer![1i32, 2, 3, 4, 5, 6, 7, 8, 9].into_array(); - assert_arrays_eq!(result.as_ref(), expected.as_ref()); + assert_arrays_eq!(result, expected); }) } diff --git a/vortex-layout/src/layouts/zoned/writer.rs b/vortex-layout/src/layouts/zoned/writer.rs index 1800532b1ee..f6850826339 100644 --- a/vortex-layout/src/layouts/zoned/writer.rs +++ b/vortex-layout/src/layouts/zoned/writer.rs @@ -7,6 +7,7 @@ use async_trait::async_trait; use futures::StreamExt as _; use parking_lot::Mutex; use vortex_array::ArrayContext; +use vortex_array::IntoArray; use vortex_array::expr::stats::Stat; use vortex_array::stats::PRUNING_STATS; use vortex_error::VortexResult; @@ -144,6 +145,8 @@ impl LayoutStrategy for ZonedStrategy { // the table depends on which stats were successfully computed. let stats_stream = stats_table .array() + .clone() + .into_array() .to_array_stream() .sequenced(eof.split_off()); let zones_layout = self diff --git a/vortex-layout/src/layouts/zoned/zone_map.rs b/vortex-layout/src/layouts/zoned/zone_map.rs index 9d092b05de2..bd8e14099d4 100644 --- a/vortex-layout/src/layouts/zoned/zone_map.rs +++ b/vortex-layout/src/layouts/zoned/zone_map.rs @@ -5,7 +5,6 @@ use std::sync::Arc; use itertools::Itertools; use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; diff --git a/vortex-layout/src/sequence.rs b/vortex-layout/src/sequence.rs index 5aa6353674f..fa847e50730 100644 --- a/vortex-layout/src/sequence.rs +++ b/vortex-layout/src/sequence.rs @@ -17,7 +17,6 @@ use futures::StreamExt; use parking_lot::Mutex; use pin_project_lite::pin_project; use vortex_array::ArrayRef; -use vortex_array::DynArray; use vortex_array::dtype::DType; use vortex_array::stream::ArrayStream; use vortex_error::VortexExpect; diff --git a/vortex-python/src/arrays/mod.rs b/vortex-python/src/arrays/mod.rs index 205f18d248f..43d67dee265 100644 --- a/vortex-python/src/arrays/mod.rs +++ b/vortex-python/src/arrays/mod.rs @@ -23,7 +23,6 @@ use pyo3::types::PyRange; use pyo3::types::PyRangeMethods; use pyo3_bytes::PyBytes; use vortex::array::ArrayRef; -use vortex::array::DynArray; use vortex::array::IntoArray; use vortex::array::ToCanonical; use vortex::array::arrays::Chunked; @@ -41,6 +40,7 @@ use crate::PyVortex; use crate::arrays::native::PyNativeArray; use crate::arrays::py::PyPythonArray; use crate::arrays::py::PythonArray; +use crate::arrays::py::PythonVTable; use crate::arrow::ToPyArrow; use crate::dtype::PyDType; use crate::error::PyVortexError; @@ -119,12 +119,12 @@ impl<'py> IntoPyObject<'py> for PyArrayRef { fn into_pyobject(self, py: Python<'py>) -> Result { // If the ArrayRef is a PyArrayInstance, extract the Python object. - if let Some(pyarray) = DynArray::as_any(&*self.0).downcast_ref::() { - return pyarray.clone().into_pyobject(py); + if let Some(pyarray) = self.0.as_opt::() { + return pyarray.data().clone().into_pyobject(py); } // Otherwise, wrap the ArrayRef in a PyNativeArray. - Ok(PyNativeArray::init(py, self.0.clone())?.into_any()) + Ok(PyNativeArray::init(py, self.0)?.into_any()) } } @@ -352,7 +352,6 @@ impl PyArray { )?) } else { Ok(array - .clone() .into_arrow_preferred()? .into_data() .to_pyarrow(py)? @@ -733,7 +732,7 @@ impl PyArray { let array = PyArrayRef::extract(slf.as_any().as_borrowed())?.into_inner(); let mut encoder = MessageEncoder::default(); - let buffers = encoder.encode(EncoderMessage::Array(&*array))?; + let buffers = encoder.encode(EncoderMessage::Array(&array))?; // Return buffers as a list instead of concatenating let array_buffers: Vec> = buffers.iter().map(|b| b.to_vec()).collect(); @@ -765,7 +764,7 @@ impl PyArray { let array = PyArrayRef::extract(slf.as_any().as_borrowed())?.into_inner(); let mut encoder = MessageEncoder::default(); - let array_buffers = encoder.encode(EncoderMessage::Array(&*array))?; + let array_buffers = encoder.encode(EncoderMessage::Array(&array))?; let dtype_buffers = encoder.encode(EncoderMessage::DType(array.dtype()))?; let pickle_module = PyModule::import(py, "pickle")?; diff --git a/vortex-python/src/arrays/native.rs b/vortex-python/src/arrays/native.rs index 34e7cae3594..2ff7945fc55 100644 --- a/vortex-python/src/arrays/native.rs +++ b/vortex-python/src/arrays/native.rs @@ -5,9 +5,8 @@ use std::ops::Deref; use pyo3::PyClass; use pyo3::prelude::*; -use vortex::array::ArrayAdapter; use vortex::array::ArrayRef; -use vortex::array::DynArray; +use vortex::array::VTable; use vortex::array::arrays::Bool; use vortex::array::arrays::Chunked; use vortex::array::arrays::Constant; @@ -21,8 +20,6 @@ use vortex::array::arrays::Primitive; use vortex::array::arrays::Struct; use vortex::array::arrays::VarBin; use vortex::array::arrays::VarBinView; -use vortex::array::vtable::Array; -use vortex::array::vtable::VTable; use vortex::encodings::alp::ALP; use vortex::encodings::alp::ALPRD; use vortex::encodings::bytebool::ByteBool; @@ -250,15 +247,12 @@ pub trait AsArrayRef { fn as_array_ref(&self) -> &T; } -impl AsArrayRef<::Array> for PyRef<'_, V> { - fn as_array_ref(&self) -> &::Array { - let any = self.as_super().inner().as_any(); - // Try new Array path first, then fall back to legacy ArrayAdapter. - if let Some(typed) = any.downcast_ref::>() { - return typed.inner(); - } - any.downcast_ref::>() +impl AsArrayRef<::ArrayData> for PyRef<'_, V> { + fn as_array_ref(&self) -> &::ArrayData { + self.as_super() + .inner() + .as_opt::() .vortex_expect("Failed to downcast array") - .as_inner() + .data() } } diff --git a/vortex-python/src/arrays/py/mod.rs b/vortex-python/src/arrays/py/mod.rs index d19c91865c7..761d8a3d7df 100644 --- a/vortex-python/src/arrays/py/mod.rs +++ b/vortex-python/src/arrays/py/mod.rs @@ -12,7 +12,7 @@ use pyo3::exceptions::PyValueError; use pyo3::intern; use pyo3::prelude::PyAnyMethods; pub(crate) use python::*; -use vortex::array::vtable::ArrayId; +use vortex::array::ArrayId; pub(crate) use vtable::*; use crate::error::PyVortexResult; diff --git a/vortex-python/src/arrays/py/python.rs b/vortex-python/src/arrays/py/python.rs index 922e09305e1..ed348b2fe78 100644 --- a/vortex-python/src/arrays/py/python.rs +++ b/vortex-python/src/arrays/py/python.rs @@ -3,8 +3,8 @@ use pyo3::prelude::*; use pyo3::types::PyType; +use vortex::array::ArrayId; use vortex::array::stats::ArrayStats; -use vortex::array::vtable::ArrayId; use vortex::dtype::DType; use crate::arrays::PyArray; diff --git a/vortex-python/src/arrays/py/vtable.rs b/vortex-python/src/arrays/py/vtable.rs index e3111eba17f..3f323295020 100644 --- a/vortex-python/src/arrays/py/vtable.rs +++ b/vortex-python/src/arrays/py/vtable.rs @@ -7,22 +7,23 @@ use std::sync::Arc; use pyo3::intern; use pyo3::prelude::*; use pyo3::types::PyBytes; +use vortex::array::Array; +use vortex::array::ArrayId; use vortex::array::ArrayRef; +use vortex::array::ArrayView; use vortex::array::ExecutionCtx; use vortex::array::ExecutionResult; +use vortex::array::OperationsVTable; use vortex::array::Precision; use vortex::array::RawMetadata; use vortex::array::SerializeMetadata; +use vortex::array::VTable; +use vortex::array::ValidityVTable; use vortex::array::buffer::BufferHandle; use vortex::array::serde::ArrayChildren; -use vortex::array::stats::StatsSetRef; +use vortex::array::stats::ArrayStats; use vortex::array::validity::Validity; use vortex::array::vtable; -use vortex::array::vtable::Array; -use vortex::array::vtable::ArrayId; -use vortex::array::vtable::OperationsVTable; -use vortex::array::vtable::VTable; -use vortex::array::vtable::ValidityVTable; use vortex::dtype::DType; use vortex::error::VortexResult; use vortex::error::vortex_ensure; @@ -42,13 +43,13 @@ pub struct PythonVTable { } impl VTable for PythonVTable { - type Array = PythonArray; + type ArrayData = PythonArray; type Metadata = RawMetadata; type OperationsVTable = Self; type ValidityVTable = Self; - fn vtable(array: &Self::Array) -> &Self { + fn vtable(array: &Self::ArrayData) -> &Self { &array.vtable } @@ -64,37 +65,43 @@ impl VTable for PythonVTable { &array.dtype } - fn stats(array: &PythonArray) -> StatsSetRef<'_> { - array.stats.to_ref(array.as_ref()) + fn stats(array: &PythonArray) -> &ArrayStats { + &array.stats } fn array_hash(array: &PythonArray, state: &mut H, _precision: Precision) { Arc::as_ptr(&array.object).hash(state); - array.vtable.id.hash(state); - array.len.hash(state); - array.dtype.hash(state); } fn array_eq(array: &PythonArray, other: &PythonArray, _precision: Precision) -> bool { Arc::ptr_eq(&array.object, &other.object) - && array.vtable.id == other.vtable.id // TODO(ngates): in the future this check is already done - && array.len == other.len - && array.dtype == other.dtype } - fn nbuffers(_array: &PythonArray) -> usize { + fn nbuffers(_array: ArrayView<'_, Self>) -> usize { 0 } - fn buffer(_array: &PythonArray, idx: usize) -> BufferHandle { + fn buffer(_array: ArrayView<'_, Self>, idx: usize) -> BufferHandle { vortex_panic!("PythonArray buffer index {idx} out of bounds") } - fn buffer_name(_array: &PythonArray, _idx: usize) -> Option { + fn buffer_name(_array: ArrayView<'_, Self>, _idx: usize) -> Option { None } - fn metadata(array: &PythonArray) -> VortexResult { + fn nchildren(_array: ArrayView<'_, Self>) -> usize { + 0 + } + + fn child(_array: ArrayView<'_, Self>, idx: usize) -> ArrayRef { + vortex_panic!("PythonArray child index {idx} out of bounds") + } + + fn child_name(_array: ArrayView<'_, Self>, idx: usize) -> String { + vortex_panic!("PythonArray child_name index {idx} out of bounds") + } + + fn metadata(array: ArrayView<'_, Self>) -> VortexResult { Python::attach(|py| { let obj = array.object.bind(py); if !obj @@ -141,15 +148,15 @@ impl VTable for PythonVTable { todo!() } - fn slots(_array: &PythonArray) -> &[Option] { + fn slots(_array: ArrayView<'_, Self>) -> &[Option] { &[] } - fn slot_name(_array: &PythonArray, idx: usize) -> String { - vortex_panic!("PythonArray has no slots, requested index {idx}") + fn slot_name(_array: ArrayView<'_, Self>, _idx: usize) -> String { + vortex_panic!("PythonArray has no slots") } - fn with_slots(_array: &mut PythonArray, slots: Vec>) -> VortexResult<()> { + fn with_slots(_array: &mut Self::ArrayData, slots: Vec>) -> VortexResult<()> { vortex_ensure!( slots.is_empty(), "PythonArray has no slots, got {}", @@ -158,14 +165,14 @@ impl VTable for PythonVTable { Ok(()) } - fn execute(_array: Arc>, _ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(_array: Array, _ctx: &mut ExecutionCtx) -> VortexResult { todo!() } } impl OperationsVTable for PythonVTable { fn scalar_at( - _array: &PythonArray, + _array: ArrayView<'_, PythonVTable>, _index: usize, _ctx: &mut ExecutionCtx, ) -> VortexResult { @@ -174,7 +181,7 @@ impl OperationsVTable for PythonVTable { } impl ValidityVTable for PythonVTable { - fn validity(_array: &PythonArray) -> VortexResult { + fn validity(_array: ArrayView<'_, PythonVTable>) -> VortexResult { todo!() } } diff --git a/vortex-python/src/arrays/range_to_sequence.rs b/vortex-python/src/arrays/range_to_sequence.rs index 450d2fa65a3..cfd07168b8b 100644 --- a/vortex-python/src/arrays/range_to_sequence.rs +++ b/vortex-python/src/arrays/range_to_sequence.rs @@ -9,7 +9,7 @@ use vortex::buffer::Buffer; use vortex::dtype::DType; use vortex::dtype::NativePType; use vortex::dtype::Nullability; -use vortex::encodings::sequence::SequenceArray; +use vortex::encodings::sequence::Sequence; use vortex::error::VortexExpect; use vortex::error::VortexResult; use vortex::error::vortex_bail; @@ -43,7 +43,7 @@ pub fn sequence_array_from_range + Into> vortex_bail!("Step, {}, does not fit in requested dtype: {}", step, dtype); }; - Ok(SequenceArray::try_new_typed::(start, step, dtype.nullability(), len)?.into_array()) + Ok(Sequence::try_new_typed::(start, step, dtype.nullability(), len)?.into_array()) } fn range_len(start: isize, stop: isize, step: isize) -> Option { diff --git a/vortex-python/src/iter/python.rs b/vortex-python/src/iter/python.rs index 6d0fa591970..bb45404865e 100644 --- a/vortex-python/src/iter/python.rs +++ b/vortex-python/src/iter/python.rs @@ -5,7 +5,6 @@ use pyo3::exceptions::PyTypeError; use pyo3::prelude::*; use pyo3::types::PyIterator; use vortex::array::ArrayRef; -use vortex::array::DynArray; use vortex::array::iter::ArrayIterator; use vortex::dtype::DType; use vortex::error::VortexResult; diff --git a/vortex-python/src/scan.rs b/vortex-python/src/scan.rs index e2989c777c0..11773588add 100644 --- a/vortex-python/src/scan.rs +++ b/vortex-python/src/scan.rs @@ -4,7 +4,6 @@ use pyo3::exceptions::PyIndexError; use pyo3::prelude::*; use vortex::array::ArrayRef; -use vortex::array::DynArray; use vortex::layout::scan::repeated_scan::RepeatedScan; use crate::RUNTIME; diff --git a/vortex-tensor/public-api.lock b/vortex-tensor/public-api.lock index e7baf491fef..6dd94c857d4 100644 --- a/vortex-tensor/public-api.lock +++ b/vortex-tensor/public-api.lock @@ -138,7 +138,7 @@ pub fn vortex_tensor::scalar_fns::cosine_similarity::CosineSimilarity::arity(&se pub fn vortex_tensor::scalar_fns::cosine_similarity::CosineSimilarity::child_name(&self, _options: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::vtable::ChildName -pub fn vortex_tensor::scalar_fns::cosine_similarity::CosineSimilarity::execute(&self, _options: &Self::Options, args: &dyn vortex_array::scalar_fn::vtable::ExecutionArgs, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_tensor::scalar_fns::cosine_similarity::CosineSimilarity::execute(&self, _options: &Self::Options, args: &dyn vortex_array::scalar_fn::vtable::ExecutionArgs, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_tensor::scalar_fns::cosine_similarity::CosineSimilarity::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::expression::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result @@ -168,7 +168,7 @@ pub fn vortex_tensor::scalar_fns::l2_norm::L2Norm::arity(&self, _options: &Self: pub fn vortex_tensor::scalar_fns::l2_norm::L2Norm::child_name(&self, _options: &Self::Options, child_idx: usize) -> vortex_array::scalar_fn::vtable::ChildName -pub fn vortex_tensor::scalar_fns::l2_norm::L2Norm::execute(&self, _options: &Self::Options, args: &dyn vortex_array::scalar_fn::vtable::ExecutionArgs, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_tensor::scalar_fns::l2_norm::L2Norm::execute(&self, _options: &Self::Options, args: &dyn vortex_array::scalar_fn::vtable::ExecutionArgs, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_tensor::scalar_fns::l2_norm::L2Norm::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::expression::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result diff --git a/vortex-tensor/src/scalar_fns/cosine_similarity.rs b/vortex-tensor/src/scalar_fns/cosine_similarity.rs index deef6fbdec3..5155a7c8f08 100644 --- a/vortex-tensor/src/scalar_fns/cosine_similarity.rs +++ b/vortex-tensor/src/scalar_fns/cosine_similarity.rs @@ -206,7 +206,7 @@ mod tests { fn eval_cosine_similarity(lhs: ArrayRef, rhs: ArrayRef, len: usize) -> VortexResult> { let scalar_fn = ScalarFn::new(CosineSimilarity, ApproxOptions::Exact).erased(); let result = ScalarFnArray::try_new(scalar_fn, vec![lhs, rhs], len)?; - let prim = result.to_primitive(); + let prim = result.as_array().to_primitive(); Ok(prim.as_slice::().to_vec()) } diff --git a/vortex-tensor/src/scalar_fns/l2_norm.rs b/vortex-tensor/src/scalar_fns/l2_norm.rs index c624069ef79..b02035d4572 100644 --- a/vortex-tensor/src/scalar_fns/l2_norm.rs +++ b/vortex-tensor/src/scalar_fns/l2_norm.rs @@ -171,7 +171,7 @@ mod tests { fn eval_l2_norm(input: vortex::array::ArrayRef, len: usize) -> VortexResult> { let scalar_fn = ScalarFn::new(L2Norm, ApproxOptions::Exact).erased(); let result = ScalarFnArray::try_new(scalar_fn, vec![input], len)?; - let prim = result.to_primitive(); + let prim = result.as_array().to_primitive(); Ok(prim.as_slice::().to_vec()) } diff --git a/vortex-test/compat-gen/src/adapter.rs b/vortex-test/compat-gen/src/adapter.rs index 1ff1b11ccf1..21f203e53e4 100644 --- a/vortex-test/compat-gen/src/adapter.rs +++ b/vortex-test/compat-gen/src/adapter.rs @@ -12,17 +12,15 @@ use std::sync::Arc; use futures::stream; use tokio::runtime::Runtime; use vortex::VortexSessionDefault; +use vortex::array::ArrayRef; +use vortex::array::MaskFuture; +use vortex::array::expr::root; use vortex::file::OpenOptionsSessionExt; use vortex::file::WriteOptionsSessionExt; use vortex::io::session::RuntimeSessionExt; use vortex::layout::LayoutStrategy; use vortex::layout::layouts::flat::Flat; use vortex::layout::layouts::flat::writer::FlatLayoutStrategy; -use vortex_array::ArrayRef; -use vortex_array::ArrayVisitorExt; -use vortex_array::DynArray; -use vortex_array::MaskFuture; -use vortex_array::expr::root; use vortex_array::expr::stats::Stat; use vortex_array::stream::ArrayStreamAdapter; use vortex_array::stream::ArrayStreamExt; diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/bool.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/bool.rs index 6db099173fb..e710438a2ce 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/bool.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/bool.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ArrayId; use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::arrays::Bool; @@ -8,7 +9,6 @@ use vortex_array::arrays::BoolArray; use vortex_array::arrays::StructArray; use vortex_array::dtype::FieldNames; use vortex_array::validity::Validity; -use vortex_array::vtable::ArrayId; use vortex_error::VortexResult; use crate::fixtures::FlatLayoutFixture; diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/chunked.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/chunked.rs index 47a16771932..683d5b809a3 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/chunked.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/chunked.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ArrayId; use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::arrays::ChunkedArray; @@ -9,7 +10,6 @@ use vortex_array::arrays::PrimitiveArray; use vortex_array::arrays::StructArray; use vortex_array::dtype::FieldNames; use vortex_array::validity::Validity; -use vortex_array::vtable::ArrayId; use vortex_error::VortexResult; use crate::fixtures::FlatLayoutFixture; diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/datetime.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/datetime.rs index 30b120a0777..9571136ca38 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/datetime.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/datetime.rs @@ -3,6 +3,7 @@ use std::sync::Arc; +use vortex_array::ArrayId; use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::arrays::Extension; @@ -12,7 +13,6 @@ use vortex_array::arrays::TemporalArray; use vortex_array::dtype::FieldNames; use vortex_array::extension::datetime::TimeUnit; use vortex_array::validity::Validity; -use vortex_array::vtable::ArrayId; use vortex_buffer::buffer; use vortex_error::VortexResult; diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/decimal.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/decimal.rs index 46081371323..d7e261cdbf4 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/decimal.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/decimal.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ArrayId; use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::arrays::Decimal; @@ -9,7 +10,6 @@ use vortex_array::arrays::StructArray; use vortex_array::dtype::DecimalDType; use vortex_array::dtype::FieldNames; use vortex_array::validity::Validity; -use vortex_array::vtable::ArrayId; use vortex_buffer::buffer; use vortex_error::VortexResult; diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/fixed_size_list.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/fixed_size_list.rs index f350beec435..c1c2e615b76 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/fixed_size_list.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/fixed_size_list.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ArrayId; use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::arrays::FixedSizeList; @@ -9,7 +10,6 @@ use vortex_array::arrays::PrimitiveArray; use vortex_array::arrays::StructArray; use vortex_array::dtype::FieldNames; use vortex_array::validity::Validity; -use vortex_array::vtable::ArrayId; use vortex_buffer::buffer; use vortex_error::VortexResult; diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/list.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/list.rs index 81845bb2a86..dd09e002630 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/list.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/list.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ArrayId; use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::arrays::List; @@ -10,7 +11,6 @@ use vortex_array::arrays::StructArray; use vortex_array::arrays::VarBinArray; use vortex_array::dtype::FieldNames; use vortex_array::validity::Validity; -use vortex_array::vtable::ArrayId; use vortex_buffer::buffer; use vortex_error::VortexResult; @@ -45,7 +45,7 @@ impl FlatLayoutFixture for ListFixture { )?; // List of strings: [["a","b"], ["hello"], [], ["x","y","z"]] - let str_elements = VarBinArray::from(vec!["a", "b", "hello", "x", "y", "z"]); + let str_elements = VarBinArray::from_strs(vec!["a", "b", "hello", "x", "y", "z"]); let str_offsets = PrimitiveArray::new(buffer![0i64, 2, 3, 3, 6], Validity::NonNullable); let str_list = ListArray::try_new( str_elements.into_array(), diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/listview.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/listview.rs index f65abdd6cc4..0a9ab2191ef 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/listview.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/listview.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ArrayId; use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::arrays::ListView; @@ -10,7 +11,6 @@ use vortex_array::arrays::StructArray; use vortex_array::arrays::VarBinArray; use vortex_array::dtype::FieldNames; use vortex_array::validity::Validity; -use vortex_array::vtable::ArrayId; use vortex_buffer::buffer; use vortex_error::VortexResult; @@ -47,7 +47,7 @@ impl FlatLayoutFixture for ListViewFixture { )?; // ListView of strings: [["a","b"], ["hello"], [], ["x","y","z"]] - let str_elements = VarBinArray::from(vec!["a", "b", "hello", "x", "y", "z"]); + let str_elements = VarBinArray::from_strs(vec!["a", "b", "hello", "x", "y", "z"]); let str_offsets = PrimitiveArray::new(buffer![0u32, 2, 3, 3], Validity::NonNullable); let str_sizes = PrimitiveArray::new(buffer![2u32, 1, 0, 3], Validity::NonNullable); let str_listview = ListViewArray::try_new( diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/null.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/null.rs index 0d991d3e4c9..0d937a1c225 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/null.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/null.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ArrayId; use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::arrays::Null; @@ -9,7 +10,6 @@ use vortex_array::arrays::PrimitiveArray; use vortex_array::arrays::StructArray; use vortex_array::dtype::FieldNames; use vortex_array::validity::Validity; -use vortex_array::vtable::ArrayId; use vortex_buffer::buffer; use vortex_error::VortexResult; diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/primitive.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/primitive.rs index d5e3b388586..f77d5f42f39 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/primitive.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/primitive.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ArrayId; use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::arrays::Primitive; @@ -8,7 +9,6 @@ use vortex_array::arrays::PrimitiveArray; use vortex_array::arrays::StructArray; use vortex_array::dtype::FieldNames; use vortex_array::validity::Validity; -use vortex_array::vtable::ArrayId; use vortex_buffer::buffer; use vortex_error::VortexResult; diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/struct_nested.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/struct_nested.rs index 546414a49fa..cc02d856aab 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/struct_nested.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/struct_nested.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ArrayId; use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::arrays::PrimitiveArray; @@ -9,7 +10,6 @@ use vortex_array::arrays::StructArray; use vortex_array::arrays::VarBinArray; use vortex_array::dtype::FieldNames; use vortex_array::validity::Validity; -use vortex_array::vtable::ArrayId; use vortex_buffer::buffer; use vortex_error::VortexResult; @@ -35,7 +35,7 @@ impl FlatLayoutFixture for StructNestedFixture { FieldNames::from(["a", "b"]), vec![ PrimitiveArray::new(buffer![10i32, 20, 30], Validity::NonNullable).into_array(), - VarBinArray::from(vec!["x", "y", "z"]).into_array(), + VarBinArray::from_strs(vec!["x", "y", "z"]).into_array(), ], 3, Validity::NonNullable, diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/varbin.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/varbin.rs index ad4588ccc62..72ac683ee44 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/varbin.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/varbin.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ArrayId; use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::arrays::StructArray; @@ -8,7 +9,6 @@ use vortex_array::arrays::VarBin; use vortex_array::arrays::VarBinArray; use vortex_array::dtype::FieldNames; use vortex_array::validity::Validity; -use vortex_array::vtable::ArrayId; use vortex_error::VortexResult; use crate::fixtures::FlatLayoutFixture; @@ -29,9 +29,9 @@ impl FlatLayoutFixture for VarBinFixture { } fn build(&self) -> VortexResult { - let strings = VarBinArray::from(vec!["", "hello", "こんにちは", "\u{1f980}"]); + let strings = VarBinArray::from_strs(vec!["", "hello", "こんにちは", "\u{1f980}"]); let nullable_strings = - VarBinArray::from(vec![Some("hello"), None, Some("world"), Some("")]); + VarBinArray::from_nullable_strs(vec![Some("hello"), None, Some("world"), Some("")]); let arr = StructArray::try_new( FieldNames::from(["text", "nullable_text"]), vec![strings.into_array(), nullable_strings.into_array()], diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/varbinview.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/varbinview.rs index 8555d5eaf74..f795dafce49 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/varbinview.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/arrays/varbinview.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ArrayId; use vortex_array::ArrayRef; use vortex_array::IntoArray; use vortex_array::arrays::StructArray; @@ -8,7 +9,6 @@ use vortex_array::arrays::VarBinView; use vortex_array::arrays::VarBinViewArray; use vortex_array::dtype::FieldNames; use vortex_array::validity::Validity; -use vortex_array::vtable::ArrayId; use vortex_error::VortexResult; use crate::fixtures::FlatLayoutFixture; diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/alp.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/alp.rs index c3eb11c7aae..cf20093cf21 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/alp.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/alp.rs @@ -1,13 +1,13 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex::array::ArrayId; use vortex::array::ArrayRef; use vortex::array::IntoArray; use vortex::array::arrays::PrimitiveArray; use vortex::array::arrays::StructArray; use vortex::array::dtype::FieldNames; use vortex::array::validity::Validity; -use vortex::array::vtable::ArrayId; use vortex::encodings::alp::ALP; use vortex::encodings::alp::alp_encode; use vortex::error::VortexResult; diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/alprd.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/alprd.rs index ca310e92ee5..a6ca54363b6 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/alprd.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/alprd.rs @@ -1,13 +1,13 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex::array::ArrayId; use vortex::array::ArrayRef; use vortex::array::IntoArray; use vortex::array::arrays::PrimitiveArray; use vortex::array::arrays::StructArray; use vortex::array::dtype::FieldNames; use vortex::array::validity::Validity; -use vortex::array::vtable::ArrayId; use vortex::encodings::alp::ALPRD; use vortex::encodings::alp::RDEncoder; use vortex::error::VortexResult; diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/bitpacked.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/bitpacked.rs index facbab894f7..c0dc53817b3 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/bitpacked.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/bitpacked.rs @@ -1,13 +1,13 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex::array::ArrayId; use vortex::array::ArrayRef; use vortex::array::IntoArray; use vortex::array::arrays::PrimitiveArray; use vortex::array::arrays::StructArray; use vortex::array::dtype::FieldNames; use vortex::array::validity::Validity; -use vortex::array::vtable::ArrayId; use vortex::encodings::fastlanes::BitPacked; use vortex::encodings::fastlanes::bitpack_compress::bitpack_encode; use vortex::error::VortexResult; diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/bytebool.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/bytebool.rs index 14838e13939..aa9b299472a 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/bytebool.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/bytebool.rs @@ -1,15 +1,14 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex::array::ArrayId; use vortex::array::ArrayRef; use vortex::array::IntoArray; use vortex::array::arrays::BoolArray; use vortex::array::arrays::StructArray; use vortex::array::dtype::FieldNames; use vortex::array::validity::Validity; -use vortex::array::vtable::ArrayId; use vortex::encodings::bytebool::ByteBool; -use vortex::encodings::bytebool::ByteBoolArray; use vortex::error::VortexResult; use super::N; @@ -61,16 +60,16 @@ impl FlatLayoutFixture for ByteBoolFixture { "edge_nulls", ]), vec![ - ByteBoolArray::from_vec(alternating, Validity::NonNullable).into_array(), - ByteBoolArray::from_vec(mostly_true, Validity::NonNullable).into_array(), - ByteBoolArray::from_vec(mixed, Validity::NonNullable).into_array(), - ByteBoolArray::from_vec(nullable_vals, nullable_validity).into_array(), - ByteBoolArray::from_vec(all_false, Validity::NonNullable).into_array(), - ByteBoolArray::from_vec(all_true, Validity::NonNullable).into_array(), - ByteBoolArray::from_vec(all_null_vals, Validity::AllInvalid).into_array(), - ByteBoolArray::from_vec(single_flip, Validity::NonNullable).into_array(), - ByteBoolArray::from_vec(sparse_true, Validity::NonNullable).into_array(), - ByteBoolArray::from_vec(edge_null_vals, edge_null_validity).into_array(), + ByteBool::from_vec(alternating, Validity::NonNullable).into_array(), + ByteBool::from_vec(mostly_true, Validity::NonNullable).into_array(), + ByteBool::from_vec(mixed, Validity::NonNullable).into_array(), + ByteBool::from_vec(nullable_vals, nullable_validity).into_array(), + ByteBool::from_vec(all_false, Validity::NonNullable).into_array(), + ByteBool::from_vec(all_true, Validity::NonNullable).into_array(), + ByteBool::from_vec(all_null_vals, Validity::AllInvalid).into_array(), + ByteBool::from_vec(single_flip, Validity::NonNullable).into_array(), + ByteBool::from_vec(sparse_true, Validity::NonNullable).into_array(), + ByteBool::from_vec(edge_null_vals, edge_null_validity).into_array(), ], N, Validity::NonNullable, diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/constant.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/constant.rs index 1b26ac0bb89..64feb357093 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/constant.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/constant.rs @@ -1,8 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex::array::ArrayId; use vortex::array::ArrayRef; -use vortex::array::DynArray; use vortex::array::IntoArray; use vortex::array::arrays::Constant; use vortex::array::arrays::ConstantArray; @@ -17,7 +17,6 @@ use vortex::array::extension::datetime::TimeUnit; use vortex::array::scalar::DecimalValue; use vortex::array::scalar::Scalar; use vortex::array::validity::Validity; -use vortex::array::vtable::ArrayId; use vortex::error::VortexResult; use super::N; diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/datetimeparts.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/datetimeparts.rs index 4ef369badca..bfbf2cba21c 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/datetimeparts.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/datetimeparts.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex::array::ArrayId; use vortex::array::ArrayRef; use vortex::array::IntoArray; use vortex::array::arrays::PrimitiveArray; @@ -9,9 +10,7 @@ use vortex::array::arrays::TemporalArray; use vortex::array::dtype::FieldNames; use vortex::array::extension::datetime::TimeUnit; use vortex::array::validity::Validity; -use vortex::array::vtable::ArrayId; use vortex::encodings::datetime_parts::DateTimeParts; -use vortex::encodings::datetime_parts::DateTimePartsArray; use vortex::encodings::datetime_parts::split_temporal; use vortex::error::VortexResult; @@ -23,10 +22,7 @@ pub struct DateTimePartsFixture; fn encode_temporal(temporal: TemporalArray) -> VortexResult { let dtype = temporal.dtype().clone(); let parts = split_temporal(temporal)?; - Ok( - DateTimePartsArray::try_new(dtype, parts.days, parts.seconds, parts.subseconds)? - .into_array(), - ) + Ok(DateTimeParts::try_new(dtype, parts.days, parts.seconds, parts.subseconds)?.into_array()) } impl FlatLayoutFixture for DateTimePartsFixture { diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/decimal_byte_parts.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/decimal_byte_parts.rs index 1b0c9ded30c..723df6c5378 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/decimal_byte_parts.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/decimal_byte_parts.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex::array::ArrayId; use vortex::array::ArrayRef; use vortex::array::IntoArray; use vortex::array::arrays::PrimitiveArray; @@ -8,9 +9,7 @@ use vortex::array::arrays::StructArray; use vortex::array::dtype::DecimalDType; use vortex::array::dtype::FieldNames; use vortex::array::validity::Validity; -use vortex::array::vtable::ArrayId; use vortex::encodings::decimal_byte_parts::DecimalByteParts; -use vortex::encodings::decimal_byte_parts::DecimalBytePartsArray; use vortex::error::VortexResult; use super::N; @@ -35,19 +34,19 @@ impl FlatLayoutFixture for DecimalBytePartsFixture { let decimal_dtype = DecimalDType::new(10, 2); let values: PrimitiveArray = (0..N as i64).map(|i| i * 100 + (i % 100)).collect(); let msp_arr = values.into_array(); - let decimal_arr = DecimalBytePartsArray::try_new(msp_arr, decimal_dtype)?; + let decimal_arr = DecimalByteParts::try_new(msp_arr, decimal_dtype)?; let hi_prec_dtype = DecimalDType::new(18, 6); let hi_prec_values: PrimitiveArray = (0..N as i64) .map(|i| i * 1_000_000 + (i * 7 % 999_999)) .collect(); let hi_prec_msp = hi_prec_values.into_array(); - let hi_prec_arr = DecimalBytePartsArray::try_new(hi_prec_msp, hi_prec_dtype)?; + let hi_prec_arr = DecimalByteParts::try_new(hi_prec_msp, hi_prec_dtype)?; let neg_dtype = DecimalDType::new(10, 2); let neg_values: PrimitiveArray = (0..N as i64).map(|i| -5000 + (i * 3 % 10000)).collect(); let neg_msp = neg_values.into_array(); - let neg_arr = DecimalBytePartsArray::try_new(neg_msp, neg_dtype)?; + let neg_arr = DecimalByteParts::try_new(neg_msp, neg_dtype)?; let nullable_dtype = DecimalDType::new(12, 4); let nullable_values = PrimitiveArray::from_option_iter((0..N as i64).map(|i| { if i % 11 == 0 { @@ -57,9 +56,9 @@ impl FlatLayoutFixture for DecimalBytePartsFixture { } })) .into_array(); - let nullable_arr = DecimalBytePartsArray::try_new(nullable_values, nullable_dtype)?; + let nullable_arr = DecimalByteParts::try_new(nullable_values, nullable_dtype)?; let zero_dtype = DecimalDType::new(10, 2); - let zero_arr = DecimalBytePartsArray::try_new( + let zero_arr = DecimalByteParts::try_new( std::iter::repeat_n(0i64, N) .collect::() .into_array(), @@ -67,18 +66,17 @@ impl FlatLayoutFixture for DecimalBytePartsFixture { )?; let crossing_dtype = DecimalDType::new(12, 3); let crossing_values: PrimitiveArray = (0..N as i64).map(|i| (i % 200) - 100).collect(); - let crossing_arr = - DecimalBytePartsArray::try_new(crossing_values.into_array(), crossing_dtype)?; + let crossing_arr = DecimalByteParts::try_new(crossing_values.into_array(), crossing_dtype)?; let trailing_zero_dtype = DecimalDType::new(18, 4); let trailing_zero_values: PrimitiveArray = (0..N as i64).map(|i| (i % 1000) * 10_000).collect(); let trailing_zero_arr = - DecimalBytePartsArray::try_new(trailing_zero_values.into_array(), trailing_zero_dtype)?; + DecimalByteParts::try_new(trailing_zero_values.into_array(), trailing_zero_dtype)?; let near_limit_dtype = DecimalDType::new(18, 0); let near_limit_values: PrimitiveArray = (0..N as i64).map(|i| 900_000_000_000_000_000 - i).collect(); let near_limit_arr = - DecimalBytePartsArray::try_new(near_limit_values.into_array(), near_limit_dtype)?; + DecimalByteParts::try_new(near_limit_values.into_array(), near_limit_dtype)?; let arr = StructArray::try_new( FieldNames::from([ diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/delta.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/delta.rs index 2c83df575ef..f69e54c4631 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/delta.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/delta.rs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex::VortexSessionDefault; +use vortex::array::ArrayId; use vortex::array::ArrayRef; use vortex::array::IntoArray; use vortex::array::VortexSessionExecute; @@ -9,9 +10,7 @@ use vortex::array::arrays::PrimitiveArray; use vortex::array::arrays::StructArray; use vortex::array::dtype::FieldNames; use vortex::array::validity::Validity; -use vortex::array::vtable::ArrayId; use vortex::encodings::fastlanes::Delta; -use vortex::encodings::fastlanes::DeltaArray; use vortex::error::VortexResult; use vortex_session::VortexSession; @@ -77,16 +76,16 @@ impl FlatLayoutFixture for DeltaFixture { "nullable_monotone", ]), vec![ - DeltaArray::try_from_primitive_array(&monotonic_u64, &mut ctx)?.into_array(), - DeltaArray::try_from_primitive_array(&constant_delta_u32, &mut ctx)?.into_array(), - DeltaArray::try_from_primitive_array(&large_stride_u64, &mut ctx)?.into_array(), - DeltaArray::try_from_primitive_array(&monotonic_u16, &mut ctx)?.into_array(), - DeltaArray::try_from_primitive_array(&monotonic_u8, &mut ctx)?.into_array(), - DeltaArray::try_from_primitive_array(&large_base_u64, &mut ctx)?.into_array(), - DeltaArray::try_from_primitive_array(&all_zero_deltas, &mut ctx)?.into_array(), - DeltaArray::try_from_primitive_array(&irregular_monotone, &mut ctx)?.into_array(), - DeltaArray::try_from_primitive_array(&near_overflow_base, &mut ctx)?.into_array(), - DeltaArray::try_from_primitive_array(&nullable_monotone, &mut ctx)?.into_array(), + Delta::try_from_primitive_array(&monotonic_u64, &mut ctx)?.into_array(), + Delta::try_from_primitive_array(&constant_delta_u32, &mut ctx)?.into_array(), + Delta::try_from_primitive_array(&large_stride_u64, &mut ctx)?.into_array(), + Delta::try_from_primitive_array(&monotonic_u16, &mut ctx)?.into_array(), + Delta::try_from_primitive_array(&monotonic_u8, &mut ctx)?.into_array(), + Delta::try_from_primitive_array(&large_base_u64, &mut ctx)?.into_array(), + Delta::try_from_primitive_array(&all_zero_deltas, &mut ctx)?.into_array(), + Delta::try_from_primitive_array(&irregular_monotone, &mut ctx)?.into_array(), + Delta::try_from_primitive_array(&near_overflow_base, &mut ctx)?.into_array(), + Delta::try_from_primitive_array(&nullable_monotone, &mut ctx)?.into_array(), ], N, Validity::NonNullable, diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/dict.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/dict.rs index 80cb794a418..84107b08b2a 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/dict.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/dict.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex::array::ArrayId; use vortex::array::ArrayRef; use vortex::array::IntoArray; use vortex::array::arrays::Dict; @@ -10,7 +11,6 @@ use vortex::array::arrays::VarBinArray; use vortex::array::builders::dict::dict_encode; use vortex::array::dtype::FieldNames; use vortex::array::validity::Validity; -use vortex::array::vtable::ArrayId; use vortex::error::VortexResult; use super::N; @@ -34,24 +34,25 @@ impl FlatLayoutFixture for DictFixture { fn build(&self) -> VortexResult { let categories = ["red", "green", "blue", "yellow", "purple"]; let str_values: Vec<&str> = (0..N).map(|i| categories[i % categories.len()]).collect(); - let str_col = VarBinArray::from(str_values); + let str_col = VarBinArray::from_strs(str_values); let int_col: PrimitiveArray = (0..N as i32).map(|i| (i % 10) * 100).collect(); let nullable_values: Vec> = (0..N) .map(|i| (i % 7 != 0).then_some(categories[i % categories.len()])) .collect(); - let nullable_col = VarBinArray::from(nullable_values); + let nullable_col = VarBinArray::from_nullable_strs(nullable_values); let single_val: Vec<&str> = (0..N).map(|_| "only_value").collect(); - let single_col = VarBinArray::from(single_val); + let single_col = VarBinArray::from_strs(single_val); let bool_cat: Vec<&str> = (0..N) .map(|i| if i % 3 == 0 { "yes" } else { "no" }) .collect(); - let bool_cat_col = VarBinArray::from(bool_cat); - let all_null_col = VarBinArray::from((0..N).map(|_| None::<&str>).collect::>()); - let single_non_null_col = VarBinArray::from( + let bool_cat_col = VarBinArray::from_strs(bool_cat); + let all_null_col = + VarBinArray::from_nullable_strs((0..N).map(|_| None::<&str>).collect::>()); + let single_non_null_col = VarBinArray::from_nullable_strs( (0..N) .map(|i| (i == N / 2).then_some("lonely")) .collect::>(), @@ -60,27 +61,27 @@ impl FlatLayoutFixture for DictFixture { (0..N).map(|i| format!("u255-{}", i % 255)).collect(); let threshold_255_refs: Vec<&str> = threshold_255_values.iter().map(String::as_str).collect(); - let threshold_255_col = VarBinArray::from(threshold_255_refs); + let threshold_255_col = VarBinArray::from_strs(threshold_255_refs); let threshold_256_values: Vec = (0..N).map(|i| format!("u256-{}", i % 256)).collect(); let threshold_256_refs: Vec<&str> = threshold_256_values.iter().map(String::as_str).collect(); - let threshold_256_col = VarBinArray::from(threshold_256_refs); + let threshold_256_col = VarBinArray::from_strs(threshold_256_refs); let threshold_257_values: Vec = (0..N).map(|i| format!("u257-{}", i % 257)).collect(); let threshold_257_refs: Vec<&str> = threshold_257_values.iter().map(String::as_str).collect(); - let threshold_257_col = VarBinArray::from(threshold_257_refs); + let threshold_257_col = VarBinArray::from_strs(threshold_257_refs); let long_values: Vec = (0..N) .map(|i| format!("long-dict-value-{i:04}-{:08x}-suffix", i * 17)) .collect(); let long_refs: Vec<&str> = long_values.iter().map(String::as_str).collect(); - let long_col = VarBinArray::from(long_refs); + let long_col = VarBinArray::from_strs(long_refs); let insertion_values = ["late", "first", "middle", "early", "last"]; let insertion_ordered: Vec<&str> = (0..N) .map(|i| insertion_values[(i * 7 + 3) % insertion_values.len()]) .collect(); - let insertion_ordered_col = VarBinArray::from(insertion_ordered); + let insertion_ordered_col = VarBinArray::from_strs(insertion_ordered); let arr = StructArray::try_new( FieldNames::from([ diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/for_.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/for_.rs index 60054dc4948..3c1a96b6bb1 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/for_.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/for_.rs @@ -1,15 +1,14 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex::array::ArrayId; use vortex::array::ArrayRef; use vortex::array::IntoArray; use vortex::array::arrays::PrimitiveArray; use vortex::array::arrays::StructArray; use vortex::array::dtype::FieldNames; use vortex::array::validity::Validity; -use vortex::array::vtable::ArrayId; use vortex::encodings::fastlanes::FoR; -use vortex::encodings::fastlanes::FoRArray; use vortex::error::VortexResult; use super::N; @@ -69,16 +68,16 @@ impl FlatLayoutFixture for FoRFixture { "near_max_u64", ]), vec![ - FoRArray::encode(clustered_i32)?.into_array(), - FoRArray::encode(clustered_u64)?.into_array(), - FoRArray::encode(clustered_i64)?.into_array(), - FoRArray::encode(negative_i32)?.into_array(), - FoRArray::encode(nullable_i32)?.into_array(), - FoRArray::encode(clustered_i16)?.into_array(), - FoRArray::encode(constant_offsets)?.into_array(), - FoRArray::encode(zero_crossing_i32)?.into_array(), - FoRArray::encode(far_outlier_i64)?.into_array(), - FoRArray::encode(near_max_u64)?.into_array(), + FoR::encode(clustered_i32)?.into_array(), + FoR::encode(clustered_u64)?.into_array(), + FoR::encode(clustered_i64)?.into_array(), + FoR::encode(negative_i32)?.into_array(), + FoR::encode(nullable_i32)?.into_array(), + FoR::encode(clustered_i16)?.into_array(), + FoR::encode(constant_offsets)?.into_array(), + FoR::encode(zero_crossing_i32)?.into_array(), + FoR::encode(far_outlier_i64)?.into_array(), + FoR::encode(near_max_u64)?.into_array(), ], N, Validity::NonNullable, diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/fsst.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/fsst.rs index ad1706e629d..91d0f8dce07 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/fsst.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/fsst.rs @@ -1,13 +1,13 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex::array::ArrayId; use vortex::array::ArrayRef; use vortex::array::IntoArray; use vortex::array::arrays::StructArray; use vortex::array::arrays::VarBinArray; use vortex::array::dtype::FieldNames; use vortex::array::validity::Validity; -use vortex::array::vtable::ArrayId; use vortex::encodings::fsst::FSST; use vortex::encodings::fsst::fsst_compress; use vortex::encodings::fsst::fsst_train_compressor; @@ -42,7 +42,7 @@ impl FlatLayoutFixture for FsstFixture { .map(|i| format!("{}{}", prefixes[i % prefixes.len()], i)) .collect(); let url_refs: Vec<&str> = urls.iter().map(|s| s.as_str()).collect(); - let url_col = VarBinArray::from(url_refs); + let url_col = VarBinArray::from_strs(url_refs); let severities = ["INFO", "WARN", "ERROR", "DEBUG"]; let components = ["auth", "db", "cache", "api"]; @@ -57,37 +57,37 @@ impl FlatLayoutFixture for FsstFixture { }) .collect(); let log_refs: Vec<&str> = logs.iter().map(|s| s.as_str()).collect(); - let log_col = VarBinArray::from(log_refs); + let log_col = VarBinArray::from_strs(log_refs); let nullable_urls: Vec> = (0..N) .map(|i| (i % 7 != 0).then(|| format!("{}{}", prefixes[i % prefixes.len()], i * 3))) .collect(); let nullable_refs: Vec> = nullable_urls.iter().map(|s| s.as_deref()).collect(); - let nullable_col = VarBinArray::from(nullable_refs); + let nullable_col = VarBinArray::from_nullable_strs(nullable_refs); let short_tokens = ["a", "bb", "ccc", "dd", "e"]; let short_strs: Vec<&str> = (0..N) .map(|i| short_tokens[i % short_tokens.len()]) .collect(); - let short_col = VarBinArray::from(short_strs); + let short_col = VarBinArray::from_strs(short_strs); let empty_and_unicode_values = ["", "こんにちは", "😀", "naive", "façade", "résumé", "مرحبا"]; let empty_and_unicode: Vec<&str> = (0..N) .map(|i| empty_and_unicode_values[i % empty_and_unicode_values.len()]) .collect(); - let empty_and_unicode_col = VarBinArray::from(empty_and_unicode); + let empty_and_unicode_col = VarBinArray::from_strs(empty_and_unicode); let suffix_shared_values: Vec = (0..N) .map(|i| format!("prefix-{:04}-common-suffix", i % 64)) .collect(); let suffix_shared_refs: Vec<&str> = suffix_shared_values.iter().map(String::as_str).collect(); - let suffix_shared_col = VarBinArray::from(suffix_shared_refs); + let suffix_shared_col = VarBinArray::from_strs(suffix_shared_refs); let high_entropy_values: Vec = (0..N) .map(|i| format!("{:016x}{:016x}", i.wrapping_mul(97), i.wrapping_mul(13_579))) .collect(); let high_entropy_refs: Vec<&str> = high_entropy_values.iter().map(String::as_str).collect(); - let high_entropy_col = VarBinArray::from(high_entropy_refs); - let all_null_clustered = VarBinArray::from( + let high_entropy_col = VarBinArray::from_strs(high_entropy_refs); + let all_null_clustered = VarBinArray::from_nullable_strs( (0..N) .map(|i| { if !(16..N - 16).contains(&i) { @@ -120,14 +120,45 @@ impl FlatLayoutFixture for FsstFixture { "all_null_clustered", ]), vec![ - fsst_compress(url_col, &url_comp).into_array(), - fsst_compress(log_col, &log_comp).into_array(), - fsst_compress(nullable_col, &nullable_comp).into_array(), - fsst_compress(short_col, &short_comp).into_array(), - fsst_compress(empty_and_unicode_col, &empty_and_unicode_comp).into_array(), - fsst_compress(suffix_shared_col, &suffix_shared_comp).into_array(), - fsst_compress(high_entropy_col, &high_entropy_comp).into_array(), - fsst_compress(all_null_clustered, &all_null_clustered_comp).into_array(), + fsst_compress(&url_col, url_col.len(), url_col.dtype(), &url_comp).into_array(), + fsst_compress(&log_col, log_col.len(), log_col.dtype(), &log_comp).into_array(), + fsst_compress( + &nullable_col, + nullable_col.len(), + nullable_col.dtype(), + &nullable_comp, + ) + .into_array(), + fsst_compress(&short_col, short_col.len(), short_col.dtype(), &short_comp) + .into_array(), + fsst_compress( + &empty_and_unicode_col, + empty_and_unicode_col.len(), + empty_and_unicode_col.dtype(), + &empty_and_unicode_comp, + ) + .into_array(), + fsst_compress( + &suffix_shared_col, + suffix_shared_col.len(), + suffix_shared_col.dtype(), + &suffix_shared_comp, + ) + .into_array(), + fsst_compress( + &high_entropy_col, + high_entropy_col.len(), + high_entropy_col.dtype(), + &high_entropy_comp, + ) + .into_array(), + fsst_compress( + &all_null_clustered, + all_null_clustered.len(), + all_null_clustered.dtype(), + &all_null_clustered_comp, + ) + .into_array(), ], N, Validity::NonNullable, diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/patched.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/patched.rs index b1363ad7e02..3241de111d2 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/patched.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/patched.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ArrayId; use vortex_array::ArrayRef; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; @@ -8,7 +9,6 @@ use vortex_array::arrays::Patched; use vortex_array::arrays::PatchedArray; use vortex_array::arrays::PrimitiveArray; use vortex_array::patches::Patches; -use vortex_array::vtable::ArrayId; use vortex_array::vtable::ArrayVTable; use vortex_error::VortexResult; use vortex_session::VortexSession; diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/pco.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/pco.rs index 8a29c7dd161..33dd4b78e37 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/pco.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/pco.rs @@ -1,15 +1,14 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex::array::ArrayId; use vortex::array::ArrayRef; use vortex::array::IntoArray; use vortex::array::arrays::PrimitiveArray; use vortex::array::arrays::StructArray; use vortex::array::dtype::FieldNames; use vortex::array::validity::Validity; -use vortex::array::vtable::ArrayId; use vortex::encodings::pco::Pco; -use vortex::encodings::pco::PcoArray; use vortex::error::VortexResult; use super::N; @@ -70,14 +69,14 @@ impl FlatLayoutFixture for PcoFixture { "narrow_i16", ]), vec![ - PcoArray::from_primitive(&irregular_i64, 8, 0)?.into_array(), - PcoArray::from_primitive(&smooth_f64, 8, 0)?.into_array(), - PcoArray::from_primitive(&pattern_u32, 8, 0)?.into_array(), - PcoArray::from_primitive(&nullable_f32, 8, 0)?.into_array(), - PcoArray::from_primitive(&negative_i32, 8, 0)?.into_array(), - PcoArray::from_primitive(&constant_u16, 8, 0)?.into_array(), - PcoArray::from_primitive(&spike_outliers, 8, 0)?.into_array(), - PcoArray::from_primitive(&narrow_i16, 8, 0)?.into_array(), + Pco::from_primitive(&irregular_i64, 8, 0)?.into_array(), + Pco::from_primitive(&smooth_f64, 8, 0)?.into_array(), + Pco::from_primitive(&pattern_u32, 8, 0)?.into_array(), + Pco::from_primitive(&nullable_f32, 8, 0)?.into_array(), + Pco::from_primitive(&negative_i32, 8, 0)?.into_array(), + Pco::from_primitive(&constant_u16, 8, 0)?.into_array(), + Pco::from_primitive(&spike_outliers, 8, 0)?.into_array(), + Pco::from_primitive(&narrow_i16, 8, 0)?.into_array(), ], N, Validity::NonNullable, diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/rle.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/rle.rs index d635aea5d2b..46235ed1fa0 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/rle.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/rle.rs @@ -1,15 +1,14 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex::array::ArrayId; use vortex::array::ArrayRef; use vortex::array::IntoArray; use vortex::array::arrays::PrimitiveArray; use vortex::array::arrays::StructArray; use vortex::array::dtype::FieldNames; use vortex::array::validity::Validity; -use vortex::array::vtable::ArrayId; use vortex::encodings::fastlanes::RLE; -use vortex::encodings::fastlanes::RLEArray; use vortex::error::VortexResult; use super::N; @@ -69,14 +68,14 @@ impl FlatLayoutFixture for RleFixture { "short_runs_u8", ]), vec![ - RLEArray::encode(&runs_i32)?.into_array(), - RLEArray::encode(&single_run)?.into_array(), - RLEArray::encode(&nullable_runs)?.into_array(), - RLEArray::encode(&alternating_singletons)?.into_array(), - RLEArray::encode(&exact_boundary_runs)?.into_array(), - RLEArray::encode(&giant_final_run)?.into_array(), - RLEArray::encode(&all_null_i32)?.into_array(), - RLEArray::encode(&short_runs_u8)?.into_array(), + RLE::encode(&runs_i32)?.into_array(), + RLE::encode(&single_run)?.into_array(), + RLE::encode(&nullable_runs)?.into_array(), + RLE::encode(&alternating_singletons)?.into_array(), + RLE::encode(&exact_boundary_runs)?.into_array(), + RLE::encode(&giant_final_run)?.into_array(), + RLE::encode(&all_null_i32)?.into_array(), + RLE::encode(&short_runs_u8)?.into_array(), ], N, Validity::NonNullable, diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/runend.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/runend.rs index be74b072edf..e5594edcc7f 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/runend.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/runend.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex::array::ArrayId; use vortex::array::ArrayRef; use vortex::array::IntoArray; use vortex::array::arrays::BoolArray; @@ -9,9 +10,7 @@ use vortex::array::arrays::StructArray; use vortex::array::arrays::VarBinArray; use vortex::array::dtype::FieldNames; use vortex::array::validity::Validity; -use vortex::array::vtable::ArrayId; use vortex::encodings::runend::RunEnd; -use vortex::encodings::runend::RunEndArray; use vortex::encodings::runend::compress::runend_encode; use vortex::error::VortexResult; @@ -47,8 +46,8 @@ impl FlatLayoutFixture for RunEndFixture { rl_idx += 1; } let run_prim: PrimitiveArray = values.into_iter().collect(); - let (run_ends, run_values) = runend_encode(&run_prim); - let run_col = RunEndArray::try_new(run_ends.into_array(), run_values)?; + let (run_ends, run_values) = runend_encode(run_prim.as_view()); + let run_col = RunEnd::try_new(run_ends.into_array(), run_values)?; let statuses = ["open", "closed", "pending", "cancelled"]; let mut status_values = Vec::new(); @@ -65,19 +64,19 @@ impl FlatLayoutFixture for RunEndFixture { remaining -= run_len; } let status_ends_prim: PrimitiveArray = status_ends.into_iter().collect(); - let status_col = RunEndArray::try_new( + let status_col = RunEnd::try_new( status_ends_prim.into_array(), - VarBinArray::from(status_values).into_array(), + VarBinArray::from_strs(status_values).into_array(), )?; let uniform_prim: PrimitiveArray = (0..N as i32).map(|i| i / 64).collect(); - let (uniform_ends, uniform_values) = runend_encode(&uniform_prim); - let uniform_col = RunEndArray::try_new(uniform_ends.into_array(), uniform_values)?; + let (uniform_ends, uniform_values) = runend_encode(uniform_prim.as_view()); + let uniform_col = RunEnd::try_new(uniform_ends.into_array(), uniform_values)?; let bool_ends: PrimitiveArray = (1..=N / 32).map(|i| (i * 32) as u16).collect(); let bool_values = BoolArray::from_iter((0..bool_ends.len()).map(|i| i % 2 == 0)).into_array(); - let bool_runs = RunEndArray::try_new(bool_ends.into_array(), bool_values)?; + let bool_runs = RunEnd::try_new(bool_ends.into_array(), bool_values)?; let nullable_run_values = PrimitiveArray::from_option_iter([ Some(10i32), None, @@ -86,18 +85,18 @@ impl FlatLayoutFixture for RunEndFixture { None, Some(0), ]); - let nullable_runs = RunEndArray::try_new( + let nullable_runs = RunEnd::try_new( PrimitiveArray::from_iter([16u16, 64, 128, 256, 512, N as u16]).into_array(), nullable_run_values.into_array(), )?; - let single_run = RunEndArray::try_new( + let single_run = RunEnd::try_new( PrimitiveArray::from_iter([N as u64]).into_array(), PrimitiveArray::from_iter([1234i64]).into_array(), )?; let singleton_values: PrimitiveArray = (0..N as i16).map(|i| i - 512).collect(); let singleton_ends: PrimitiveArray = (1..=N as u16).collect(); let alternating_singletons = - RunEndArray::try_new(singleton_ends.into_array(), singleton_values.into_array())?; + RunEnd::try_new(singleton_ends.into_array(), singleton_values.into_array())?; let arr = StructArray::try_new( FieldNames::from([ diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/sequence.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/sequence.rs index 493cb9d4365..61bd87252fb 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/sequence.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/sequence.rs @@ -1,15 +1,14 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex::array::ArrayId; use vortex::array::ArrayRef; use vortex::array::IntoArray; use vortex::array::arrays::StructArray; use vortex::array::dtype::FieldNames; use vortex::array::dtype::Nullability; use vortex::array::validity::Validity; -use vortex::array::vtable::ArrayId; use vortex::encodings::sequence::Sequence; -use vortex::encodings::sequence::SequenceArray; use vortex::error::VortexResult; use super::N; @@ -31,25 +30,19 @@ impl FlatLayoutFixture for SequenceFixture { } fn build(&self) -> VortexResult { - let row_ids = SequenceArray::try_new_typed::(0, 1, Nullability::NonNullable, N)?; - let stepped = SequenceArray::try_new_typed::(0, 5, Nullability::NonNullable, N)?; - let offset = SequenceArray::try_new_typed::(1000, 1, Nullability::NonNullable, N)?; - let decreasing = - SequenceArray::try_new_typed::(10000, -3, Nullability::NonNullable, N)?; - let large_step = SequenceArray::try_new_typed::(0, 1000, Nullability::NonNullable, N)?; - let zero_step = SequenceArray::try_new_typed::(7, 0, Nullability::NonNullable, N)?; - let zero_crossing = - SequenceArray::try_new_typed::(-512, 1, Nullability::NonNullable, N)?; - let near_overflow = SequenceArray::try_new_typed::( - u64::MAX - N as u64, - 1, - Nullability::NonNullable, - N, - )?; + let row_ids = Sequence::try_new_typed::(0, 1, Nullability::NonNullable, N)?; + let stepped = Sequence::try_new_typed::(0, 5, Nullability::NonNullable, N)?; + let offset = Sequence::try_new_typed::(1000, 1, Nullability::NonNullable, N)?; + let decreasing = Sequence::try_new_typed::(10000, -3, Nullability::NonNullable, N)?; + let large_step = Sequence::try_new_typed::(0, 1000, Nullability::NonNullable, N)?; + let zero_step = Sequence::try_new_typed::(7, 0, Nullability::NonNullable, N)?; + let zero_crossing = Sequence::try_new_typed::(-512, 1, Nullability::NonNullable, N)?; + let near_overflow = + Sequence::try_new_typed::(u64::MAX - N as u64, 1, Nullability::NonNullable, N)?; let small_negative_i16 = - SequenceArray::try_new_typed::(1200, -2, Nullability::NonNullable, N)?; - let nullable_i64 = SequenceArray::try_new_typed::(0, 2, Nullability::Nullable, N)?; - let nullable_u32 = SequenceArray::try_new_typed::(100, 7, Nullability::Nullable, N)?; + Sequence::try_new_typed::(1200, -2, Nullability::NonNullable, N)?; + let nullable_i64 = Sequence::try_new_typed::(0, 2, Nullability::Nullable, N)?; + let nullable_u32 = Sequence::try_new_typed::(100, 7, Nullability::Nullable, N)?; let arr = StructArray::try_new( FieldNames::from([ diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/sparse.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/sparse.rs index 360f15345ce..eeff8c36c1b 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/sparse.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/sparse.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex::array::ArrayId; use vortex::array::ArrayRef; use vortex::array::IntoArray; use vortex::array::arrays::BoolArray; @@ -12,9 +13,7 @@ use vortex::array::dtype::FieldNames; use vortex::array::dtype::Nullability; use vortex::array::scalar::Scalar; use vortex::array::validity::Validity; -use vortex::array::vtable::ArrayId; use vortex::encodings::sparse::Sparse; -use vortex::encodings::sparse::SparseArray; use vortex::error::VortexResult; use super::N; @@ -43,7 +42,7 @@ impl FlatLayoutFixture for SparseFixture { let sparse_str: Vec> = (0..N) .map(|i| (i % 20 == 0).then_some("rare_value")) .collect(); - let sparse_str_col = VarBinArray::from(sparse_str); + let sparse_str_col = VarBinArray::from_nullable_strs(sparse_str); let sparse_bool_col = BoolArray::from_iter((0..N).map(|i| (i % 100 == 0).then_some(true))); @@ -89,22 +88,22 @@ impl FlatLayoutFixture for SparseFixture { "mixed_null_and_values", ]), vec![ - SparseArray::encode(&sparse_i64_col.into_array(), None)?, - SparseArray::encode(&sparse_str_col.into_array(), None)?, - SparseArray::encode(&sparse_bool_col.into_array(), None)?, - SparseArray::encode(&sparse_f64.into_array(), None)?, - SparseArray::encode(&sparse_boundary.into_array(), None)?, - SparseArray::encode( + Sparse::encode(&sparse_i64_col.into_array(), None)?, + Sparse::encode(&sparse_str_col.into_array(), None)?, + Sparse::encode(&sparse_bool_col.into_array(), None)?, + Sparse::encode(&sparse_f64.into_array(), None)?, + Sparse::encode(&sparse_boundary.into_array(), None)?, + Sparse::encode( &explicit_fill_values.into_array(), Some(Scalar::primitive(10i32, Nullability::Nullable)), )?, - SparseArray::encode(&all_default, Some(Scalar::from(10i32)))?, - SparseArray::encode(&clustered_edges.into_array(), None)?, - SparseArray::encode( + Sparse::encode(&all_default, Some(Scalar::from(10i32)))?, + Sparse::encode(&clustered_edges.into_array(), None)?, + Sparse::encode( &almost_dense.into_array(), Some(Scalar::primitive(0i32, Nullability::Nullable)), )?, - SparseArray::encode(&mixed_null_and_values.into_array(), Some(mixed_null_fill))?, + Sparse::encode(&mixed_null_and_values.into_array(), Some(mixed_null_fill))?, ], N, Validity::NonNullable, diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/zigzag.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/zigzag.rs index 4c14b3a2d30..2e1bb972f5d 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/zigzag.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/zigzag.rs @@ -1,13 +1,13 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex::array::ArrayId; use vortex::array::ArrayRef; use vortex::array::IntoArray; use vortex::array::arrays::PrimitiveArray; use vortex::array::arrays::StructArray; use vortex::array::dtype::FieldNames; use vortex::array::validity::Validity; -use vortex::array::vtable::ArrayId; use vortex::encodings::zigzag::ZigZag; use vortex::encodings::zigzag::zigzag_encode; use vortex::error::VortexResult; diff --git a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/zstd.rs b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/zstd.rs index 4546c9f6dbd..655cbba8c06 100644 --- a/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/zstd.rs +++ b/vortex-test/compat-gen/src/fixtures/arrays/synthetic/encodings/zstd.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex::array::ArrayId; use vortex::array::ArrayRef; use vortex::array::IntoArray; use vortex::array::arrays::PrimitiveArray; @@ -8,9 +9,7 @@ use vortex::array::arrays::StructArray; use vortex::array::arrays::VarBinViewArray; use vortex::array::dtype::FieldNames; use vortex::array::validity::Validity; -use vortex::array::vtable::ArrayId; use vortex::encodings::zstd::Zstd; -use vortex::encodings::zstd::ZstdArray; use vortex::error::VortexResult; use super::N; @@ -87,14 +86,14 @@ impl FlatLayoutFixture for ZstdFixture { "pseudo_random", ]), vec![ - ZstdArray::from_primitive(&ints, 3, 128)?.into_array(), - ZstdArray::from_primitive(&floats, 3, 128)?.into_array(), - ZstdArray::from_primitive(&nullable_i64, 3, 128)?.into_array(), - ZstdArray::from_var_bin_view(&utf8, 3, 128)?.into_array(), - ZstdArray::from_var_bin_view(&nullable_utf8, 3, 128)?.into_array(), - ZstdArray::from_primitive(&all_zeros, 3, 128)?.into_array(), - ZstdArray::from_primitive(&all_null_i32, 3, 128)?.into_array(), - ZstdArray::from_primitive(&pseudo_random, 3, 128)?.into_array(), + Zstd::from_primitive(&ints, 3, 128)?.into_array(), + Zstd::from_primitive(&floats, 3, 128)?.into_array(), + Zstd::from_primitive(&nullable_i64, 3, 128)?.into_array(), + Zstd::from_var_bin_view(&utf8, 3, 128)?.into_array(), + Zstd::from_var_bin_view(&nullable_utf8, 3, 128)?.into_array(), + Zstd::from_primitive(&all_zeros, 3, 128)?.into_array(), + Zstd::from_primitive(&all_null_i32, 3, 128)?.into_array(), + Zstd::from_primitive(&pseudo_random, 3, 128)?.into_array(), ], N, Validity::NonNullable, diff --git a/vortex-test/compat-gen/src/fixtures/mod.rs b/vortex-test/compat-gen/src/fixtures/mod.rs index 181ac5ad516..65c1893bfb9 100644 --- a/vortex-test/compat-gen/src/fixtures/mod.rs +++ b/vortex-test/compat-gen/src/fixtures/mod.rs @@ -6,10 +6,9 @@ mod arrays; use std::path::Path; use std::sync::Arc; +use vortex::array::ArrayId; +use vortex::array::ArrayRef; use vortex::file::WriteStrategyBuilder; -use vortex_array::ArrayRef; -use vortex_array::ArrayVisitorExt; -use vortex_array::vtable::ArrayId; use vortex_error::VortexResult; use vortex_error::vortex_bail; diff --git a/vortex-tui/src/browse/ui/layouts.rs b/vortex-tui/src/browse/ui/layouts.rs index 7f9967cb12f..36a895c7269 100644 --- a/vortex-tui/src/browse/ui/layouts.rs +++ b/vortex-tui/src/browse/ui/layouts.rs @@ -27,7 +27,6 @@ use ratatui::widgets::Table; use ratatui::widgets::Widget; use ratatui::widgets::Wrap; use vortex::array::ArrayRef; -use vortex::array::DynArray; use vortex::array::ToCanonical; use vortex::error::VortexExpect; use vortex::layout::layouts::flat::Flat; diff --git a/vortex/benches/common_encoding_tree_throughput.rs b/vortex/benches/common_encoding_tree_throughput.rs index d13049c780f..21fc4e74b37 100644 --- a/vortex/benches/common_encoding_tree_throughput.rs +++ b/vortex/benches/common_encoding_tree_throughput.rs @@ -14,7 +14,6 @@ use mimalloc::MiMalloc; use rand::RngExt; use rand::SeedableRng; use vortex::array::ArrayRef; -use vortex::array::DynArray; use vortex::array::IntoArray; use vortex::array::ToCanonical; use vortex::array::arrays::DictArray; @@ -25,16 +24,17 @@ use vortex::array::arrays::VarBinViewArray; use vortex::array::builtins::ArrayBuiltins; use vortex::dtype::DType; use vortex::dtype::PType; +use vortex::encodings::alp::ALP; use vortex::encodings::alp::alp_encode; -use vortex::encodings::datetime_parts::DateTimePartsArray; +use vortex::encodings::datetime_parts::DateTimeParts; use vortex::encodings::datetime_parts::split_temporal; -use vortex::encodings::fastlanes::FoRArray; -use vortex::encodings::fsst::FSSTArray; +use vortex::encodings::fastlanes::BitPacked; +use vortex::encodings::fastlanes::FoR; +use vortex::encodings::fsst::FSST; use vortex::encodings::fsst::fsst_compress; use vortex::encodings::fsst::fsst_train_compressor; -use vortex::encodings::runend::RunEndArray; +use vortex::encodings::runend::RunEnd; use vortex::extension::datetime::TimeUnit; -use vortex_fastlanes::BitPackedArray; #[global_allocator] static GLOBAL: MiMalloc = MiMalloc; @@ -85,10 +85,10 @@ mod setup { /// Create FoR <- BitPacked encoding tree for u64 pub fn for_bp_u64() -> ArrayRef { let (uint_array, ..) = setup_primitive_arrays(); - let compressed = FoRArray::encode(uint_array).unwrap(); + let compressed = FoR::encode(uint_array).unwrap(); let inner = compressed.encoded(); - let bp = BitPackedArray::encode(inner, 8).unwrap(); - FoRArray::try_new(bp.into_array(), compressed.reference_scalar().clone()) + let bp = BitPacked::encode(inner, 8).unwrap(); + FoR::try_new(bp.into_array(), compressed.reference_scalar().clone()) .unwrap() .into_array() } @@ -99,13 +99,13 @@ mod setup { let alp_compressed = alp_encode(&float_array, None).unwrap(); // Manually construct ALP <- FoR <- BitPacked tree - let for_array = FoRArray::encode(alp_compressed.encoded().to_primitive()).unwrap(); + let for_array = FoR::encode(alp_compressed.encoded().to_primitive()).unwrap(); let inner = for_array.encoded(); - let bp = BitPackedArray::encode(inner, 8).unwrap(); + let bp = BitPacked::encode(inner, 8).unwrap(); let for_with_bp = - FoRArray::try_new(bp.into_array(), for_array.reference_scalar().clone()).unwrap(); + FoR::try_new(bp.into_array(), for_array.reference_scalar().clone()).unwrap(); - vortex::encodings::alp::ALPArray::try_new( + ALP::try_new( for_with_bp.into_array(), alp_compressed.exponents(), alp_compressed.patches(), @@ -136,7 +136,7 @@ mod setup { let codes_prim = PrimitiveArray::from_iter(codes); // Compress codes with BitPacked (6 bits should be enough for ~50 unique values) - let codes_bp = BitPackedArray::encode(&codes_prim.into_array(), 6) + let codes_bp = BitPacked::encode(&codes_prim.into_array(), 6) .unwrap() .into_array(); @@ -167,25 +167,25 @@ mod setup { } let prim_array = PrimitiveArray::from_iter(values); - let runend = RunEndArray::encode(prim_array.into_array()).unwrap(); + let runend = RunEnd::encode(prim_array.into_array()).unwrap(); // Compress the ends with FoR <- BitPacked let ends_prim = runend.ends().to_primitive(); - let ends_for = FoRArray::encode(ends_prim).unwrap(); + let ends_for = FoR::encode(ends_prim).unwrap(); let ends_inner = ends_for.encoded(); - let ends_bp = BitPackedArray::encode(ends_inner, 8).unwrap(); + let ends_bp = BitPacked::encode(ends_inner, 8).unwrap(); let compressed_ends = - FoRArray::try_new(ends_bp.into_array(), ends_for.reference_scalar().clone()) + FoR::try_new(ends_bp.into_array(), ends_for.reference_scalar().clone()) .unwrap() .into_array(); // Compress the values with BitPacked let values_prim = runend.values().to_primitive(); - let compressed_values = BitPackedArray::encode(&values_prim.into_array(), 8) + let compressed_values = BitPacked::encode(&values_prim.into_array(), 8) .unwrap() .into_array(); - RunEndArray::try_new(compressed_ends, compressed_values) + RunEnd::try_new(compressed_ends, compressed_values) .unwrap() .into_array() } @@ -208,7 +208,12 @@ mod setup { // Train and compress unique values with FSST let unique_varbinview = VarBinViewArray::from_iter_str(unique_strings); let fsst_compressor = fsst_train_compressor(&unique_varbinview); - let fsst_values = fsst_compress(&unique_varbinview, &fsst_compressor); + let fsst_values = fsst_compress( + &unique_varbinview, + unique_varbinview.len(), + unique_varbinview.dtype(), + &fsst_compressor, + ); // Create codes array (random indices into unique values) let codes: Vec = (0..NUM_VALUES) @@ -240,12 +245,17 @@ mod setup { // Train and compress unique values with FSST let unique_varbinview = VarBinViewArray::from_iter_str(unique_strings); let fsst_compressor = fsst_train_compressor(&unique_varbinview); - let fsst = fsst_compress(&unique_varbinview, &fsst_compressor); + let fsst = fsst_compress( + &unique_varbinview, + unique_varbinview.len(), + unique_varbinview.dtype(), + &fsst_compressor, + ); // Compress the VarBin offsets with BitPacked let codes = fsst.codes(); let offsets_prim = codes.offsets().to_primitive(); - let offsets_bp = BitPackedArray::encode(&offsets_prim.into_array(), 20).unwrap(); + let offsets_bp = BitPacked::encode(&offsets_prim.into_array(), 20).unwrap(); // Rebuild VarBin with compressed offsets let compressed_codes = VarBinArray::try_new( @@ -257,7 +267,7 @@ mod setup { .unwrap(); // Rebuild FSST with compressed codes - let compressed_fsst = FSSTArray::try_new( + let compressed_fsst = FSST::try_new( fsst.dtype().clone(), fsst.symbols().clone(), fsst.symbol_lengths().clone(), @@ -296,20 +306,20 @@ mod setup { // Compress days with FoR <- BitPacked let days_prim = parts.days.to_primitive(); - let days_for = FoRArray::encode(days_prim).unwrap(); + let days_for = FoR::encode(days_prim).unwrap(); let days_inner = days_for.encoded(); - let days_bp = BitPackedArray::encode(days_inner, 16).unwrap(); + let days_bp = BitPacked::encode(days_inner, 16).unwrap(); let compressed_days = - FoRArray::try_new(days_bp.into_array(), days_for.reference_scalar().clone()) + FoR::try_new(days_bp.into_array(), days_for.reference_scalar().clone()) .unwrap() .into_array(); // Compress seconds with FoR <- BitPacked let seconds_prim = parts.seconds.to_primitive(); - let seconds_for = FoRArray::encode(seconds_prim).unwrap(); + let seconds_for = FoR::encode(seconds_prim).unwrap(); let seconds_inner = seconds_for.encoded(); - let seconds_bp = BitPackedArray::encode(seconds_inner, 17).unwrap(); - let compressed_seconds = FoRArray::try_new( + let seconds_bp = BitPacked::encode(seconds_inner, 17).unwrap(); + let compressed_seconds = FoR::try_new( seconds_bp.into_array(), seconds_for.reference_scalar().clone(), ) @@ -318,17 +328,17 @@ mod setup { // Compress subseconds with FoR <- BitPacked let subseconds_prim = parts.subseconds.to_primitive(); - let subseconds_for = FoRArray::encode(subseconds_prim).unwrap(); + let subseconds_for = FoR::encode(subseconds_prim).unwrap(); let subseconds_inner = subseconds_for.encoded(); - let subseconds_bp = BitPackedArray::encode(subseconds_inner, 20).unwrap(); - let compressed_subseconds = FoRArray::try_new( + let subseconds_bp = BitPacked::encode(subseconds_inner, 20).unwrap(); + let compressed_subseconds = FoR::try_new( subseconds_bp.into_array(), subseconds_for.reference_scalar().clone(), ) .unwrap() .into_array(); - DateTimePartsArray::try_new( + DateTimeParts::try_new( DType::Extension(temporal_array.ext_dtype()), compressed_days, compressed_seconds, diff --git a/vortex/benches/single_encoding_throughput.rs b/vortex/benches/single_encoding_throughput.rs index 4776afa4a52..d2928a81a8f 100644 --- a/vortex/benches/single_encoding_throughput.rs +++ b/vortex/benches/single_encoding_throughput.rs @@ -17,27 +17,27 @@ use rand::prelude::IndexedRandom; use rand::rngs::StdRng; use vortex::array::IntoArray; use vortex::array::ToCanonical; +use vortex::array::VortexSessionExecute; use vortex::array::arrays::PrimitiveArray; use vortex::array::arrays::VarBinViewArray; use vortex::array::builders::dict::dict_encode; use vortex::array::builtins::ArrayBuiltins; +use vortex::array::dtype::Nullability; +use vortex::array::session::ArraySession; use vortex::dtype::PType; use vortex::encodings::alp::RDEncoder; use vortex::encodings::alp::alp_encode; -use vortex::encodings::fastlanes::DeltaArray; -use vortex::encodings::fastlanes::FoRArray; +use vortex::encodings::fastlanes::DeltaData; +use vortex::encodings::fastlanes::FoR; use vortex::encodings::fastlanes::delta_compress; use vortex::encodings::fsst::fsst_compress; use vortex::encodings::fsst::fsst_train_compressor; -use vortex::encodings::pco::PcoArray; -use vortex::encodings::runend::RunEndArray; +use vortex::encodings::pco::Pco; +use vortex::encodings::runend::RunEnd; use vortex::encodings::sequence::sequence_encode; use vortex::encodings::zigzag::zigzag_encode; -use vortex::encodings::zstd::ZstdArray; -use vortex_array::VortexSessionExecute; -use vortex_array::dtype::Nullability; -use vortex_array::session::ArraySession; -use vortex_sequence::SequenceArray; +use vortex::encodings::zstd::ZstdData; +use vortex_sequence::Sequence; use vortex_session::VortexSession; #[global_allocator] @@ -118,7 +118,9 @@ fn bench_bitpacked_decompress_u32(bencher: Bencher) { let (uint_array, ..) = setup_primitive_arrays(); let bit_width = 8; - let compressed = bitpack_encode(&uint_array, bit_width, None).unwrap(); + let compressed = bitpack_encode(&uint_array, bit_width, None) + .unwrap() + .into_array(); with_byte_counter(bencher, NUM_VALUES * 4) .with_inputs(|| &compressed) @@ -131,13 +133,13 @@ fn bench_runend_compress_u32(bencher: Bencher) { with_byte_counter(bencher, NUM_VALUES * 4) .with_inputs(|| uint_array.clone()) - .bench_values(|a| RunEndArray::encode(a.into_array()).unwrap()); + .bench_values(|a| RunEnd::encode(a.into_array()).unwrap()); } #[divan::bench(name = "runend_decompress_u32")] fn bench_runend_decompress_u32(bencher: Bencher) { let (uint_array, ..) = setup_primitive_arrays(); - let compressed = RunEndArray::encode(uint_array.into_array()).unwrap(); + let compressed = RunEnd::encode(uint_array.into_array()).unwrap(); with_byte_counter(bencher, NUM_VALUES * 4) .with_inputs(|| &compressed) @@ -152,7 +154,7 @@ fn bench_delta_compress_u32(bencher: Bencher) { .with_inputs(|| &uint_array) .bench_refs(|a| { let (bases, deltas) = delta_compress(a, &mut SESSION.create_execution_ctx()).unwrap(); - DeltaArray::try_new(bases.into_array(), deltas.into_array(), 0, a.len()).unwrap() + DeltaData::try_new(bases.into_array(), deltas.into_array(), 0, a.len()).unwrap() }); } @@ -161,7 +163,9 @@ fn bench_delta_decompress_u32(bencher: Bencher) { let (uint_array, ..) = setup_primitive_arrays(); let (bases, deltas) = delta_compress(&uint_array, &mut SESSION.create_execution_ctx()).unwrap(); let compressed = - DeltaArray::try_new(bases.into_array(), deltas.into_array(), 0, uint_array.len()).unwrap(); + DeltaData::try_new(bases.into_array(), deltas.into_array(), 0, uint_array.len()) + .unwrap() + .into_array(); with_byte_counter(bencher, NUM_VALUES * 4) .with_inputs(|| &compressed) @@ -174,13 +178,13 @@ fn bench_for_compress_i32(bencher: Bencher) { with_byte_counter(bencher, NUM_VALUES * 4) .with_inputs(|| int_array.clone()) - .bench_values(|a| FoRArray::encode(a).unwrap()); + .bench_values(|a| FoR::encode(a).unwrap()); } #[divan::bench(name = "for_decompress_i32")] fn bench_for_decompress_i32(bencher: Bencher) { let (_, int_array, _) = setup_primitive_arrays(); - let compressed = FoRArray::encode(int_array).unwrap(); + let compressed = FoR::encode(int_array).unwrap(); with_byte_counter(bencher, NUM_VALUES * 4) .with_inputs(|| &compressed) @@ -218,7 +222,7 @@ fn bench_zigzag_compress_i32(bencher: Bencher) { #[divan::bench(name = "zigzag_decompress_i32")] fn bench_zigzag_decompress_i32(bencher: Bencher) { let (_, int_array, _) = setup_primitive_arrays(); - let compressed = zigzag_encode(int_array).unwrap(); + let compressed = zigzag_encode(int_array).unwrap().into_array(); with_byte_counter(bencher, NUM_VALUES * 4) .with_inputs(|| &compressed) @@ -238,10 +242,9 @@ fn bench_sequence_compress_u32(bencher: Bencher) { #[expect(clippy::cast_possible_truncation)] #[divan::bench(name = "sequence_decompress_u32")] fn bench_sequence_decompress_u32(bencher: Bencher) { - let compressed = - SequenceArray::try_new_typed(0, 1, Nullability::NonNullable, NUM_VALUES as usize) - .unwrap() - .into_array(); + let compressed = Sequence::try_new_typed(0, 1, Nullability::NonNullable, NUM_VALUES as usize) + .unwrap() + .into_array(); with_byte_counter(bencher, NUM_VALUES * 4) .with_inputs(|| &compressed) @@ -296,13 +299,13 @@ fn bench_pcodec_compress_f64(bencher: Bencher) { with_byte_counter(bencher, NUM_VALUES * 8) .with_inputs(|| &float_array) - .bench_refs(|a| PcoArray::from_primitive(a, 3, 0).unwrap()); + .bench_refs(|a| Pco::from_primitive(a, 3, 0).unwrap()); } #[divan::bench(name = "pcodec_decompress_f64")] fn bench_pcodec_decompress_f64(bencher: Bencher) { let (_, _, float_array) = setup_primitive_arrays(); - let compressed = PcoArray::from_primitive(&float_array, 3, 0).unwrap(); + let compressed = Pco::from_primitive(&float_array, 3, 0).unwrap(); with_byte_counter(bencher, NUM_VALUES * 8) .with_inputs(|| &compressed) @@ -317,14 +320,16 @@ fn bench_zstd_compress_u32(bencher: Bencher) { with_byte_counter(bencher, NUM_VALUES * 4) .with_inputs(|| array.clone()) - .bench_values(|a| ZstdArray::from_array(a, 3, 8192).unwrap()); + .bench_values(|a| ZstdData::from_array(a, 3, 8192).unwrap()); } #[cfg(feature = "zstd")] #[divan::bench(name = "zstd_decompress_u32")] fn bench_zstd_decompress_u32(bencher: Bencher) { let (uint_array, ..) = setup_primitive_arrays(); - let compressed = ZstdArray::from_array(uint_array.into_array(), 3, 8192).unwrap(); + let compressed = ZstdData::from_array(uint_array.into_array(), 3, 8192) + .unwrap() + .into_array(); with_byte_counter(bencher, NUM_VALUES * 4) .with_inputs(|| &compressed) @@ -364,7 +369,7 @@ fn bench_fsst_compress_string(bencher: Bencher) { with_byte_counter(bencher, nbytes) .with_inputs(|| &varbinview_arr) - .bench_refs(|a| fsst_compress(*a, &fsst_compressor)); + .bench_refs(|a| fsst_compress(*a, a.len(), a.dtype(), &fsst_compressor)); } #[divan::bench(name = "fsst_decompress_string")] @@ -372,7 +377,12 @@ fn bench_fsst_decompress_string(bencher: Bencher) { let varbinview_arr = VarBinViewArray::from_iter_str(gen_varbin_words(NUM_VALUES as usize, 0.00005)); let fsst_compressor = fsst_train_compressor(&varbinview_arr); - let fsst_array = fsst_compress(&varbinview_arr, &fsst_compressor); + let fsst_array = fsst_compress( + &varbinview_arr, + varbinview_arr.len(), + varbinview_arr.dtype(), + &fsst_compressor, + ); let nbytes = varbinview_arr.into_array().nbytes() as u64; with_byte_counter(bencher, nbytes) @@ -390,7 +400,7 @@ fn bench_zstd_compress_string(bencher: Bencher) { with_byte_counter(bencher, nbytes) .with_inputs(|| array.clone()) - .bench_values(|a| ZstdArray::from_array(a, 3, 8192).unwrap()); + .bench_values(|a| ZstdData::from_array(a, 3, 8192).unwrap()); } #[cfg(feature = "zstd")] @@ -398,7 +408,9 @@ fn bench_zstd_compress_string(bencher: Bencher) { fn bench_zstd_decompress_string(bencher: Bencher) { let varbinview_arr = VarBinViewArray::from_iter_str(gen_varbin_words(NUM_VALUES as usize, 0.00005)); - let compressed = ZstdArray::from_array(varbinview_arr.clone().into_array(), 3, 8192).unwrap(); + let compressed = ZstdData::from_array(varbinview_arr.clone().into_array(), 3, 8192) + .unwrap() + .into_array(); let nbytes = varbinview_arr.into_array().nbytes() as u64; with_byte_counter(bencher, nbytes) diff --git a/vortex/examples/compression_showcase.rs b/vortex/examples/compression_showcase.rs index 2709076cef0..7560cc377c8 100644 --- a/vortex/examples/compression_showcase.rs +++ b/vortex/examples/compression_showcase.rs @@ -9,7 +9,6 @@ //! Run with: cargo run --example compression_showcase use vortex::array::ArrayRef; -use vortex::array::DynArray; use vortex::array::IntoArray; use vortex::array::arrays::PrimitiveArray; use vortex::array::arrays::StructArray; @@ -147,7 +146,7 @@ fn compress_float_data() -> Result<(), Box> { println!(" Uncompressed size: ~{} bytes", uncompressed_size); let compressor = BtrBlocksCompressor::default(); - let compressed = compressor.compress(&array.to_array())?; + let compressed = compressor.compress(&array)?; let compressed_size = compressed.nbytes(); let ratio = uncompressed_size as f64 / compressed_size as f64; diff --git a/vortex/examples/tracing_vortex.rs b/vortex/examples/tracing_vortex.rs index aa456a44f5f..b8a8cdefefa 100644 --- a/vortex/examples/tracing_vortex.rs +++ b/vortex/examples/tracing_vortex.rs @@ -37,11 +37,11 @@ use vortex::array::IntoArray; use vortex::array::arrays::PrimitiveArray; use vortex::array::arrays::StructArray; use vortex::array::arrays::VarBinArray; +use vortex::array::stream::ArrayStreamExt; use vortex::array::validity::Validity; use vortex::dtype::DType; use vortex::dtype::Nullability; use vortex::file::WriteStrategyBuilder; -use vortex_array::stream::ArrayStreamExt; use vortex_file::OpenOptionsSessionExt; use vortex_file::WriteOptionsSessionExt; use vortex_session::VortexSession; @@ -393,7 +393,7 @@ async fn write_batch_to_vortex( ); write_opts - .write(&mut file, struct_array.to_array_stream()) + .write(&mut file, struct_array.into_array().to_array_stream()) .await?; println!( diff --git a/vortex/src/lib.rs b/vortex/src/lib.rs index 318d19a052d..0a5356f9159 100644 --- a/vortex/src/lib.rs +++ b/vortex/src/lib.rs @@ -213,11 +213,10 @@ mod test { use arrow_array::RecordBatchReader; use parquet::arrow::arrow_reader::ParquetRecordBatchReaderBuilder; - use vortex::array::DynArray; use vortex::array::arrays::ChunkedArray; + use vortex::array::arrow::FromArrowArray; use vortex::dtype::DType; use vortex::dtype::arrow::FromArrowType; - use vortex_array::arrow::FromArrowArray; let reader = ParquetRecordBatchReaderBuilder::try_new(File::open( "../docs/_static/example.parquet", @@ -251,7 +250,7 @@ mod test { println!( "BtrBlocks size: {} / {}", compressed.nbytes(), - array.nbytes() + array.into_array().nbytes() ); // [compress] @@ -272,7 +271,7 @@ mod test { .write_options() .write( &mut tokio::fs::File::create(&path).await?, - array.to_array_stream(), + array.into_array().to_array_stream(), ) .await?; @@ -316,7 +315,7 @@ mod test { ) .write( &mut tokio::fs::File::create(&path).await?, - array.to_array_stream(), + array.clone().into_array().to_array_stream(), ) .await?; @@ -373,7 +372,7 @@ mod test { .write_options() .write( &mut tokio::fs::File::create(&path).await?, - array.to_array_stream(), + array.into_array().to_array_stream(), ) .await?; diff --git a/wasm-test/src/main.rs b/wasm-test/src/main.rs index 16dc6d05edc..67617c37955 100644 --- a/wasm-test/src/main.rs +++ b/wasm-test/src/main.rs @@ -1,9 +1,9 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex::array::IntoArray; use vortex::array::arrays::PrimitiveArray; use vortex::array::validity::Validity; -use vortex::array::DynArray; use vortex::buffer::buffer; use vortex::compressor::BtrBlocksCompressor; @@ -11,7 +11,7 @@ use vortex::compressor::BtrBlocksCompressor; pub fn main() { // Extremely simple test of compression/decompression and a few compute functions. - let array = PrimitiveArray::new(buffer![1i32; 1024], Validity::AllValid).to_array(); + let array = PrimitiveArray::new(buffer![1i32; 1024], Validity::AllValid).into_array(); let compressed = BtrBlocksCompressor::default().compress(&array).unwrap(); println!("Compressed size: {}", compressed.len());