diff --git a/encodings/alp/public-api.lock b/encodings/alp/public-api.lock index 1671433c077..95c4f3ad885 100644 --- a/encodings/alp/public-api.lock +++ b/encodings/alp/public-api.lock @@ -204,7 +204,7 @@ pub fn vortex_alp::ALPRDVTable::deserialize(bytes: &[u8], _dtype: &vortex_array: pub fn vortex_alp::ALPRDVTable::dtype(array: &vortex_alp::ALPRDArray) -> &vortex_array::dtype::DType -pub fn vortex_alp::ALPRDVTable::execute(array: &Self::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_alp::ALPRDVTable::execute(array: &Self::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_alp::ALPRDVTable::execute_parent(array: &Self::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> @@ -308,7 +308,7 @@ pub fn vortex_alp::ALPVTable::deserialize(bytes: &[u8], _dtype: &vortex_array::d pub fn vortex_alp::ALPVTable::dtype(array: &vortex_alp::ALPArray) -> &vortex_array::dtype::DType -pub fn vortex_alp::ALPVTable::execute(array: &Self::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_alp::ALPVTable::execute(array: &Self::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_alp::ALPVTable::execute_parent(array: &Self::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> diff --git a/encodings/alp/src/alp/array.rs b/encodings/alp/src/alp/array.rs index 22125f4a89a..99e166bac18 100644 --- a/encodings/alp/src/alp/array.rs +++ b/encodings/alp/src/alp/array.rs @@ -10,6 +10,7 @@ use vortex_array::ArrayRef; use vortex_array::DeserializeMetadata; use vortex_array::DynArray; use vortex_array::ExecutionCtx; +use vortex_array::ExecutionStep; use vortex_array::IntoArray; use vortex_array::Precision; use vortex_array::ProstMetadata; @@ -234,9 +235,11 @@ impl VTable for ALPVTable { Ok(()) } - fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { // TODO(joe): take by value - Ok(execute_decompress(array.clone(), ctx)?.into_array()) + Ok(ExecutionStep::Done( + execute_decompress(array.clone(), ctx)?.into_array(), + )) } fn reduce_parent( diff --git a/encodings/alp/src/alp_rd/array.rs b/encodings/alp/src/alp_rd/array.rs index e015937ae78..d98b596eaa8 100644 --- a/encodings/alp/src/alp_rd/array.rs +++ b/encodings/alp/src/alp_rd/array.rs @@ -11,6 +11,7 @@ use vortex_array::ArrayRef; use vortex_array::DeserializeMetadata; use vortex_array::DynArray; use vortex_array::ExecutionCtx; +use vortex_array::ExecutionStep; use vortex_array::IntoArray; use vortex_array::Precision; use vortex_array::ProstMetadata; @@ -295,7 +296,7 @@ impl VTable for ALPRDVTable { Ok(()) } - fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { let left_parts = array.left_parts().clone().execute::(ctx)?; let right_parts = array.right_parts().clone().execute::(ctx)?; @@ -334,7 +335,7 @@ impl VTable for ALPRDVTable { ) }; - Ok(decoded_array.into_array()) + Ok(ExecutionStep::Done(decoded_array.into_array())) } fn reduce_parent( diff --git a/encodings/bytebool/public-api.lock b/encodings/bytebool/public-api.lock index e0c7af3fa23..e751eaca6c2 100644 --- a/encodings/bytebool/public-api.lock +++ b/encodings/bytebool/public-api.lock @@ -108,7 +108,7 @@ pub fn vortex_bytebool::ByteBoolVTable::deserialize(_bytes: &[u8], _dtype: &vort pub fn vortex_bytebool::ByteBoolVTable::dtype(array: &vortex_bytebool::ByteBoolArray) -> &vortex_array::dtype::DType -pub fn vortex_bytebool::ByteBoolVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_bytebool::ByteBoolVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_bytebool::ByteBoolVTable::execute_parent(array: &Self::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> diff --git a/encodings/bytebool/src/array.rs b/encodings/bytebool/src/array.rs index c7e21795a12..8c5c7c9fa31 100644 --- a/encodings/bytebool/src/array.rs +++ b/encodings/bytebool/src/array.rs @@ -9,6 +9,7 @@ use vortex_array::ArrayHash; use vortex_array::ArrayRef; use vortex_array::EmptyMetadata; use vortex_array::ExecutionCtx; +use vortex_array::ExecutionStep; use vortex_array::IntoArray; use vortex_array::Precision; use vortex_array::arrays::BoolArray; @@ -182,10 +183,12 @@ impl VTable for ByteBoolVTable { crate::rules::RULES.evaluate(array, parent, child_idx) } - fn execute(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { let boolean_buffer = BitBuffer::from(array.as_slice()); let validity = array.validity().clone(); - Ok(BoolArray::new(boolean_buffer, validity).into_array()) + Ok(ExecutionStep::Done( + BoolArray::new(boolean_buffer, validity).into_array(), + )) } fn execute_parent( diff --git a/encodings/datetime-parts/public-api.lock b/encodings/datetime-parts/public-api.lock index 854104c0dff..6451e5c99d9 100644 --- a/encodings/datetime-parts/public-api.lock +++ b/encodings/datetime-parts/public-api.lock @@ -182,7 +182,7 @@ pub fn vortex_datetime_parts::DateTimePartsVTable::deserialize(bytes: &[u8], _dt pub fn vortex_datetime_parts::DateTimePartsVTable::dtype(array: &vortex_datetime_parts::DateTimePartsArray) -> &vortex_array::dtype::DType -pub fn vortex_datetime_parts::DateTimePartsVTable::execute(array: &Self::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_datetime_parts::DateTimePartsVTable::execute(array: &Self::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_datetime_parts::DateTimePartsVTable::execute_parent(array: &Self::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> diff --git a/encodings/datetime-parts/src/array.rs b/encodings/datetime-parts/src/array.rs index f8b89d1d066..e1f51d5ab66 100644 --- a/encodings/datetime-parts/src/array.rs +++ b/encodings/datetime-parts/src/array.rs @@ -10,6 +10,7 @@ use vortex_array::ArrayRef; use vortex_array::DeserializeMetadata; use vortex_array::DynArray; use vortex_array::ExecutionCtx; +use vortex_array::ExecutionStep; use vortex_array::IntoArray; use vortex_array::Precision; use vortex_array::ProstMetadata; @@ -221,8 +222,10 @@ impl VTable for DateTimePartsVTable { Ok(()) } - fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { - Ok(decode_to_temporal(array, ctx)?.into_array()) + fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { + Ok(ExecutionStep::Done( + decode_to_temporal(array, ctx)?.into_array(), + )) } fn reduce_parent( diff --git a/encodings/decimal-byte-parts/public-api.lock b/encodings/decimal-byte-parts/public-api.lock index ec5485e15b2..6ee1ebc7e5f 100644 --- a/encodings/decimal-byte-parts/public-api.lock +++ b/encodings/decimal-byte-parts/public-api.lock @@ -112,7 +112,7 @@ pub fn vortex_decimal_byte_parts::DecimalBytePartsVTable::deserialize(bytes: &[u pub fn vortex_decimal_byte_parts::DecimalBytePartsVTable::dtype(array: &vortex_decimal_byte_parts::DecimalBytePartsArray) -> &vortex_array::dtype::DType -pub fn vortex_decimal_byte_parts::DecimalBytePartsVTable::execute(array: &Self::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_decimal_byte_parts::DecimalBytePartsVTable::execute(array: &Self::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_decimal_byte_parts::DecimalBytePartsVTable::execute_parent(array: &Self::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> 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 eec4fa1aae4..79e24e1b0cd 100644 --- a/encodings/decimal-byte-parts/src/decimal_byte_parts/mod.rs +++ b/encodings/decimal-byte-parts/src/decimal_byte_parts/mod.rs @@ -13,6 +13,7 @@ use vortex_array::ArrayHash; use vortex_array::ArrayRef; use vortex_array::DynArray; use vortex_array::ExecutionCtx; +use vortex_array::ExecutionStep; use vortex_array::IntoArray; use vortex_array::Precision; use vortex_array::ProstMetadata; @@ -189,8 +190,8 @@ impl VTable for DecimalBytePartsVTable { PARENT_RULES.evaluate(array, parent, child_idx) } - fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { - to_canonical_decimal(array, ctx) + fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { + to_canonical_decimal(array, ctx).map(ExecutionStep::Done) } fn execute_parent( diff --git a/encodings/fastlanes/public-api.lock b/encodings/fastlanes/public-api.lock index 1baa7808e58..6c84558c737 100644 --- a/encodings/fastlanes/public-api.lock +++ b/encodings/fastlanes/public-api.lock @@ -242,7 +242,7 @@ pub fn vortex_fastlanes::BitPackedVTable::deserialize(bytes: &[u8], _dtype: &vor pub fn vortex_fastlanes::BitPackedVTable::dtype(array: &vortex_fastlanes::BitPackedArray) -> &vortex_array::dtype::DType -pub fn vortex_fastlanes::BitPackedVTable::execute(array: &Self::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_fastlanes::BitPackedVTable::execute(array: &Self::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_fastlanes::BitPackedVTable::execute_parent(array: &Self::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> @@ -372,7 +372,7 @@ pub fn vortex_fastlanes::DeltaVTable::deserialize(bytes: &[u8], _dtype: &vortex_ pub fn vortex_fastlanes::DeltaVTable::dtype(array: &vortex_fastlanes::DeltaArray) -> &vortex_array::dtype::DType -pub fn vortex_fastlanes::DeltaVTable::execute(array: &Self::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_fastlanes::DeltaVTable::execute(array: &Self::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_fastlanes::DeltaVTable::id(_array: &Self::Array) -> vortex_array::vtable::dyn_::ArrayId @@ -510,7 +510,7 @@ pub fn vortex_fastlanes::FoRVTable::deserialize(bytes: &[u8], dtype: &vortex_arr pub fn vortex_fastlanes::FoRVTable::dtype(array: &vortex_fastlanes::FoRArray) -> &vortex_array::dtype::DType -pub fn vortex_fastlanes::FoRVTable::execute(array: &Self::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_fastlanes::FoRVTable::execute(array: &Self::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_fastlanes::FoRVTable::execute_parent(array: &Self::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> @@ -646,7 +646,7 @@ pub fn vortex_fastlanes::RLEVTable::deserialize(bytes: &[u8], _dtype: &vortex_ar pub fn vortex_fastlanes::RLEVTable::dtype(array: &vortex_fastlanes::RLEArray) -> &vortex_array::dtype::DType -pub fn vortex_fastlanes::RLEVTable::execute(array: &Self::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_fastlanes::RLEVTable::execute(array: &Self::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_fastlanes::RLEVTable::execute_parent(array: &Self::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> diff --git a/encodings/fastlanes/src/bitpacking/vtable/mod.rs b/encodings/fastlanes/src/bitpacking/vtable/mod.rs index d213fb9f1ed..facb2aa5a4f 100644 --- a/encodings/fastlanes/src/bitpacking/vtable/mod.rs +++ b/encodings/fastlanes/src/bitpacking/vtable/mod.rs @@ -8,6 +8,7 @@ use vortex_array::ArrayHash; use vortex_array::ArrayRef; use vortex_array::DeserializeMetadata; use vortex_array::ExecutionCtx; +use vortex_array::ExecutionStep; use vortex_array::IntoArray; use vortex_array::Precision; use vortex_array::ProstMetadata; @@ -353,8 +354,8 @@ impl VTable for BitPackedVTable { }) } - fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { - Ok(unpack_array(array, ctx)?.into_array()) + fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { + Ok(ExecutionStep::Done(unpack_array(array, ctx)?.into_array())) } fn execute_parent( diff --git a/encodings/fastlanes/src/delta/vtable/mod.rs b/encodings/fastlanes/src/delta/vtable/mod.rs index 96c0e0dd248..5bf67a561c5 100644 --- a/encodings/fastlanes/src/delta/vtable/mod.rs +++ b/encodings/fastlanes/src/delta/vtable/mod.rs @@ -9,6 +9,7 @@ use vortex_array::ArrayEq; use vortex_array::ArrayHash; use vortex_array::ArrayRef; use vortex_array::ExecutionCtx; +use vortex_array::ExecutionStep; use vortex_array::IntoArray; use vortex_array::Precision; use vortex_array::ProstMetadata; @@ -189,8 +190,10 @@ impl VTable for DeltaVTable { DeltaArray::try_new(bases, deltas, metadata.0.offset as usize, len) } - fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { - Ok(delta_decompress(array, ctx)?.into_array()) + fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { + Ok(ExecutionStep::Done( + delta_decompress(array, ctx)?.into_array(), + )) } } diff --git a/encodings/fastlanes/src/for/vtable/mod.rs b/encodings/fastlanes/src/for/vtable/mod.rs index cef31f8250c..1560c721e21 100644 --- a/encodings/fastlanes/src/for/vtable/mod.rs +++ b/encodings/fastlanes/src/for/vtable/mod.rs @@ -8,6 +8,7 @@ use vortex_array::ArrayEq; use vortex_array::ArrayHash; use vortex_array::ArrayRef; use vortex_array::ExecutionCtx; +use vortex_array::ExecutionStep; use vortex_array::IntoArray; use vortex_array::Precision; use vortex_array::buffer::BufferHandle; @@ -165,8 +166,8 @@ impl VTable for FoRVTable { PARENT_RULES.evaluate(array, parent, child_idx) } - fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { - Ok(decompress(array, ctx)?.into_array()) + fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { + Ok(ExecutionStep::Done(decompress(array, ctx)?.into_array())) } fn execute_parent( diff --git a/encodings/fastlanes/src/rle/vtable/mod.rs b/encodings/fastlanes/src/rle/vtable/mod.rs index 0a682d3abf7..ab12a22294d 100644 --- a/encodings/fastlanes/src/rle/vtable/mod.rs +++ b/encodings/fastlanes/src/rle/vtable/mod.rs @@ -8,6 +8,7 @@ use vortex_array::ArrayEq; use vortex_array::ArrayHash; use vortex_array::ArrayRef; use vortex_array::ExecutionCtx; +use vortex_array::ExecutionStep; use vortex_array::IntoArray; use vortex_array::Precision; use vortex_array::ProstMetadata; @@ -230,8 +231,10 @@ impl VTable for RLEVTable { PARENT_KERNELS.execute(array, parent, child_idx, ctx) } - fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { - Ok(rle_decompress(array, ctx)?.into_array()) + fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { + Ok(ExecutionStep::Done( + rle_decompress(array, ctx)?.into_array(), + )) } } diff --git a/encodings/fsst/public-api.lock b/encodings/fsst/public-api.lock index 8451466972c..95ba95464c7 100644 --- a/encodings/fsst/public-api.lock +++ b/encodings/fsst/public-api.lock @@ -146,7 +146,7 @@ pub fn vortex_fsst::FSSTVTable::deserialize(bytes: &[u8], _dtype: &vortex_array: pub fn vortex_fsst::FSSTVTable::dtype(array: &vortex_fsst::FSSTArray) -> &vortex_array::dtype::DType -pub fn vortex_fsst::FSSTVTable::execute(array: &Self::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_fsst::FSSTVTable::execute(array: &Self::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_fsst::FSSTVTable::execute_parent(array: &Self::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> diff --git a/encodings/fsst/src/array.rs b/encodings/fsst/src/array.rs index 175ca6fdb59..2f10b0b1a47 100644 --- a/encodings/fsst/src/array.rs +++ b/encodings/fsst/src/array.rs @@ -17,6 +17,7 @@ use vortex_array::Canonical; use vortex_array::DeserializeMetadata; use vortex_array::DynArray; use vortex_array::ExecutionCtx; +use vortex_array::ExecutionStep; use vortex_array::IntoArray; use vortex_array::Precision; use vortex_array::ProstMetadata; @@ -338,8 +339,8 @@ impl VTable for FSSTVTable { Ok(()) } - fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { - canonicalize_fsst(array, ctx) + fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { + canonicalize_fsst(array, ctx).map(ExecutionStep::Done) } fn execute_parent( diff --git a/encodings/pco/public-api.lock b/encodings/pco/public-api.lock index 599f0da1072..2931d32021b 100644 --- a/encodings/pco/public-api.lock +++ b/encodings/pco/public-api.lock @@ -160,7 +160,7 @@ pub fn vortex_pco::PcoVTable::deserialize(bytes: &[u8], _dtype: &vortex_array::d pub fn vortex_pco::PcoVTable::dtype(array: &vortex_pco::PcoArray) -> &vortex_array::dtype::DType -pub fn vortex_pco::PcoVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_pco::PcoVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_pco::PcoVTable::id(_array: &Self::Array) -> vortex_array::vtable::dyn_::ArrayId diff --git a/encodings/pco/src/array.rs b/encodings/pco/src/array.rs index e1c99d37d45..4b87e49eb70 100644 --- a/encodings/pco/src/array.rs +++ b/encodings/pco/src/array.rs @@ -20,6 +20,7 @@ use vortex_array::ArrayHash; use vortex_array::ArrayRef; use vortex_array::DynArray; use vortex_array::ExecutionCtx; +use vortex_array::ExecutionStep; use vortex_array::IntoArray; use vortex_array::Precision; use vortex_array::ProstMetadata; @@ -262,8 +263,8 @@ impl VTable for PcoVTable { Ok(()) } - fn execute(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { - Ok(array.decompress()?.into_array()) + fn execute(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { + Ok(ExecutionStep::Done(array.decompress()?.into_array())) } fn reduce_parent( diff --git a/encodings/runend/public-api.lock b/encodings/runend/public-api.lock index 49307599400..6cf60d03e99 100644 --- a/encodings/runend/public-api.lock +++ b/encodings/runend/public-api.lock @@ -180,7 +180,7 @@ pub fn vortex_runend::RunEndVTable::deserialize(bytes: &[u8], _dtype: &vortex_ar pub fn vortex_runend::RunEndVTable::dtype(array: &vortex_runend::RunEndArray) -> &vortex_array::dtype::DType -pub fn vortex_runend::RunEndVTable::execute(array: &Self::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_runend::RunEndVTable::execute(array: &Self::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_runend::RunEndVTable::execute_parent(array: &Self::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> diff --git a/encodings/runend/src/array.rs b/encodings/runend/src/array.rs index 267920c81e4..393d0218512 100644 --- a/encodings/runend/src/array.rs +++ b/encodings/runend/src/array.rs @@ -10,6 +10,7 @@ use vortex_array::ArrayRef; use vortex_array::DeserializeMetadata; use vortex_array::DynArray; use vortex_array::ExecutionCtx; +use vortex_array::ExecutionStep; use vortex_array::IntoArray; use vortex_array::Precision; use vortex_array::ProstMetadata; @@ -200,8 +201,8 @@ impl VTable for RunEndVTable { PARENT_KERNELS.execute(array, parent, child_idx, ctx) } - fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { - run_end_canonicalize(array, ctx) + fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { + run_end_canonicalize(array, ctx).map(ExecutionStep::Done) } } diff --git a/encodings/sequence/public-api.lock b/encodings/sequence/public-api.lock index a48416a322a..cf7933e1ed8 100644 --- a/encodings/sequence/public-api.lock +++ b/encodings/sequence/public-api.lock @@ -132,7 +132,7 @@ pub fn vortex_sequence::SequenceVTable::deserialize(bytes: &[u8], dtype: &vortex pub fn vortex_sequence::SequenceVTable::dtype(array: &vortex_sequence::SequenceArray) -> &vortex_array::dtype::DType -pub fn vortex_sequence::SequenceVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_sequence::SequenceVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_sequence::SequenceVTable::execute_parent(array: &Self::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> diff --git a/encodings/sequence/src/array.rs b/encodings/sequence/src/array.rs index 33612e94b67..2344add927d 100644 --- a/encodings/sequence/src/array.rs +++ b/encodings/sequence/src/array.rs @@ -7,9 +7,12 @@ use num_traits::cast::FromPrimitive; use vortex_array::ArrayRef; use vortex_array::DeserializeMetadata; use vortex_array::ExecutionCtx; +use vortex_array::ExecutionStep; +use vortex_array::IntoArray; use vortex_array::Precision; use vortex_array::ProstMetadata; use vortex_array::SerializeMetadata; +use vortex_array::arrays::PrimitiveArray; use vortex_array::buffer::BufferHandle; use vortex_array::dtype::DType; use vortex_array::dtype::NativePType; @@ -34,6 +37,7 @@ use vortex_array::vtable::ArrayId; use vortex_array::vtable::OperationsVTable; use vortex_array::vtable::VTable; use vortex_array::vtable::ValidityVTable; +use vortex_buffer::BufferMut; use vortex_error::VortexExpect; use vortex_error::VortexResult; use vortex_error::vortex_bail; @@ -380,8 +384,18 @@ impl VTable for SequenceVTable { Ok(()) } - fn execute(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { - sequence_decompress(array) + fn execute(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { + let prim = match_each_native_ptype!(array.ptype(), |P| { + let base = array.base().cast::

()?; + let multiplier = array.multiplier().cast::

()?; + let values = BufferMut::from_iter( + (0..array.len()) + .map(|i| base +

::from_usize(i).vortex_expect("must fit") * multiplier), + ); + PrimitiveArray::new(values, array.dtype.nullability().into()) + }); + + Ok(ExecutionStep::Done(prim.into_array())) } fn execute_parent( diff --git a/encodings/sparse/public-api.lock b/encodings/sparse/public-api.lock index 5116e90a2ac..50ad3d9a77a 100644 --- a/encodings/sparse/public-api.lock +++ b/encodings/sparse/public-api.lock @@ -130,7 +130,7 @@ pub fn vortex_sparse::SparseVTable::deserialize(bytes: &[u8], dtype: &vortex_arr pub fn vortex_sparse::SparseVTable::dtype(array: &vortex_sparse::SparseArray) -> &vortex_array::dtype::DType -pub fn vortex_sparse::SparseVTable::execute(array: &Self::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_sparse::SparseVTable::execute(array: &Self::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_sparse::SparseVTable::execute_parent(array: &Self::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> diff --git a/encodings/sparse/src/lib.rs b/encodings/sparse/src/lib.rs index 69cf9ca715d..b2bf1e81ae9 100644 --- a/encodings/sparse/src/lib.rs +++ b/encodings/sparse/src/lib.rs @@ -11,6 +11,7 @@ use vortex_array::ArrayHash; use vortex_array::ArrayRef; use vortex_array::DynArray; use vortex_array::ExecutionCtx; +use vortex_array::ExecutionStep; use vortex_array::IntoArray; use vortex_array::Precision; use vortex_array::ToCanonical; @@ -255,8 +256,8 @@ impl VTable for SparseVTable { PARENT_KERNELS.execute(array, parent, child_idx, ctx) } - fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { - execute_sparse(array, ctx) + fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { + execute_sparse(array, ctx).map(ExecutionStep::Done) } } diff --git a/encodings/zigzag/public-api.lock b/encodings/zigzag/public-api.lock index 4cdbcbdaf69..d3f94f2b73a 100644 --- a/encodings/zigzag/public-api.lock +++ b/encodings/zigzag/public-api.lock @@ -100,7 +100,7 @@ pub fn vortex_zigzag::ZigZagVTable::deserialize(_bytes: &[u8], _dtype: &vortex_a pub fn vortex_zigzag::ZigZagVTable::dtype(array: &vortex_zigzag::ZigZagArray) -> &vortex_array::dtype::DType -pub fn vortex_zigzag::ZigZagVTable::execute(array: &Self::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_zigzag::ZigZagVTable::execute(array: &Self::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_zigzag::ZigZagVTable::execute_parent(array: &Self::Array, parent: &vortex_array::array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult> diff --git a/encodings/zigzag/src/array.rs b/encodings/zigzag/src/array.rs index 319c7e2616d..f8139246880 100644 --- a/encodings/zigzag/src/array.rs +++ b/encodings/zigzag/src/array.rs @@ -9,6 +9,7 @@ use vortex_array::ArrayRef; use vortex_array::DynArray; use vortex_array::EmptyMetadata; use vortex_array::ExecutionCtx; +use vortex_array::ExecutionStep; use vortex_array::IntoArray; use vortex_array::Precision; use vortex_array::buffer::BufferHandle; @@ -148,8 +149,10 @@ impl VTable for ZigZagVTable { Ok(()) } - fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { - Ok(zigzag_decode(array.encoded().clone().execute(ctx)?).into_array()) + fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { + Ok(ExecutionStep::Done( + zigzag_decode(array.encoded().clone().execute(ctx)?).into_array(), + )) } fn reduce_parent( diff --git a/encodings/zstd/public-api.lock b/encodings/zstd/public-api.lock index eeba254f97a..142a350991a 100644 --- a/encodings/zstd/public-api.lock +++ b/encodings/zstd/public-api.lock @@ -200,7 +200,7 @@ pub fn vortex_zstd::ZstdVTable::deserialize(bytes: &[u8], _dtype: &vortex_array: pub fn vortex_zstd::ZstdVTable::dtype(array: &vortex_zstd::ZstdArray) -> &vortex_array::dtype::DType -pub fn vortex_zstd::ZstdVTable::execute(array: &Self::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_zstd::ZstdVTable::execute(array: &Self::Array, ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_zstd::ZstdVTable::id(_array: &Self::Array) -> vortex_array::vtable::dyn_::ArrayId diff --git a/encodings/zstd/src/array.rs b/encodings/zstd/src/array.rs index 88c9c97c657..8dc5120b846 100644 --- a/encodings/zstd/src/array.rs +++ b/encodings/zstd/src/array.rs @@ -13,6 +13,7 @@ use vortex_array::ArrayRef; use vortex_array::Canonical; use vortex_array::DynArray; use vortex_array::ExecutionCtx; +use vortex_array::ExecutionStep; use vortex_array::IntoArray; use vortex_array::Precision; use vortex_array::ProstMetadata; @@ -271,8 +272,11 @@ impl VTable for ZstdVTable { Ok(()) } - fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { - array.decompress()?.execute(ctx) + fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { + array + .decompress()? + .execute::(ctx) + .map(ExecutionStep::Done) } fn reduce_parent( diff --git a/encodings/zstd/src/zstd_buffers.rs b/encodings/zstd/src/zstd_buffers.rs index 30c26bbf30a..ff733475a95 100644 --- a/encodings/zstd/src/zstd_buffers.rs +++ b/encodings/zstd/src/zstd_buffers.rs @@ -10,6 +10,7 @@ use vortex_array::ArrayEq; use vortex_array::ArrayHash; use vortex_array::ArrayRef; use vortex_array::ExecutionCtx; +use vortex_array::ExecutionStep; use vortex_array::Precision; use vortex_array::ProstMetadata; use vortex_array::buffer::BufferHandle; @@ -466,10 +467,12 @@ impl VTable for ZstdBuffersVTable { Ok(()) } - fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { let session = ctx.session(); let inner_array = array.decompress_and_build_inner(session)?; - inner_array.execute::(ctx) + inner_array + .execute::(ctx) + .map(ExecutionStep::Done) } } diff --git a/vortex-array/public-api.lock b/vortex-array/public-api.lock index 6a78c7e3b27..b885c08284c 100644 --- a/vortex-array/public-api.lock +++ b/vortex-array/public-api.lock @@ -212,7 +212,7 @@ pub fn vortex_array::arrays::DictVTable::deserialize(bytes: &[u8], _dtype: &vort pub fn vortex_array::arrays::DictVTable::dtype(array: &vortex_array::arrays::DictArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::DictVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::DictVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::DictVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -318,9 +318,9 @@ impl vortex_array::matcher::Matcher for vortex_array::arrays::AnyScalarFn pub type vortex_array::arrays::AnyScalarFn::Match<'a> = &'a vortex_array::arrays::ScalarFnArray -pub fn vortex_array::arrays::AnyScalarFn::matches(array: &dyn vortex_array::DynArray) -> bool +pub fn vortex_array::arrays::AnyScalarFn::matches(array: &dyn vortex_array::Array) -> bool -pub fn vortex_array::arrays::AnyScalarFn::try_match(array: &dyn vortex_array::DynArray) -> core::option::Option +pub fn vortex_array::arrays::AnyScalarFn::try_match(array: &dyn vortex_array::Array) -> core::option::Option pub struct vortex_array::arrays::BoolArray @@ -356,17 +356,13 @@ impl vortex_array::arrays::BoolArray pub fn vortex_array::arrays::BoolArray::patch(self, patches: &vortex_array::patches::Patches, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult -impl vortex_array::arrays::BoolArray - -pub fn vortex_array::arrays::BoolArray::to_array(&self) -> vortex_array::ArrayRef - impl core::clone::Clone for vortex_array::arrays::BoolArray pub fn vortex_array::arrays::BoolArray::clone(&self) -> vortex_array::arrays::BoolArray -impl core::convert::AsRef for vortex_array::arrays::BoolArray +impl core::convert::AsRef for vortex_array::arrays::BoolArray -pub fn vortex_array::arrays::BoolArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::BoolArray::as_ref(&self) -> &dyn vortex_array::Array impl core::convert::From for vortex_array::ArrayRef @@ -390,7 +386,7 @@ pub fn vortex_array::arrays::BoolArray::from_iter &Self::Target @@ -524,7 +520,7 @@ pub fn vortex_array::arrays::BoolVTable::deserialize(bytes: &[u8], _dtype: &vort pub fn vortex_array::arrays::BoolVTable::dtype(array: &vortex_array::arrays::BoolArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::BoolVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::BoolVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::BoolVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -574,17 +570,13 @@ pub fn vortex_array::arrays::ChunkedArray::try_new(chunks: alloc::vec::Vec vortex_error::VortexResult<()> -impl vortex_array::arrays::ChunkedArray - -pub fn vortex_array::arrays::ChunkedArray::to_array(&self) -> vortex_array::ArrayRef - impl core::clone::Clone for vortex_array::arrays::ChunkedArray pub fn vortex_array::arrays::ChunkedArray::clone(&self) -> vortex_array::arrays::ChunkedArray -impl core::convert::AsRef for vortex_array::arrays::ChunkedArray +impl core::convert::AsRef for vortex_array::arrays::ChunkedArray -pub fn vortex_array::arrays::ChunkedArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::ChunkedArray::as_ref(&self) -> &dyn vortex_array::Array impl core::convert::From for vortex_array::ArrayRef @@ -594,13 +586,13 @@ impl core::fmt::Debug for vortex_array::arrays::ChunkedArray pub fn vortex_array::arrays::ChunkedArray::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl core::iter::traits::collect::FromIterator> for vortex_array::arrays::ChunkedArray +impl core::iter::traits::collect::FromIterator> for vortex_array::arrays::ChunkedArray pub fn vortex_array::arrays::ChunkedArray::from_iter>(iter: T) -> Self impl core::ops::deref::Deref for vortex_array::arrays::ChunkedArray -pub type vortex_array::arrays::ChunkedArray::Target = dyn vortex_array::DynArray +pub type vortex_array::arrays::ChunkedArray::Target = dyn vortex_array::Array pub fn vortex_array::arrays::ChunkedArray::deref(&self) -> &Self::Target @@ -660,9 +652,9 @@ impl vortex_array::scalar_fn::fns::mask::MaskKernel for vortex_array::arrays::Ch pub fn vortex_array::arrays::ChunkedVTable::mask(array: &vortex_array::arrays::ChunkedArray, mask: &vortex_array::ArrayRef, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> -impl vortex_array::scalar_fn::fns::zip::ZipKernel for vortex_array::arrays::ChunkedVTable +impl vortex_array::scalar_fn::fns::zip::ZipReduce for vortex_array::arrays::ChunkedVTable -pub fn vortex_array::arrays::ChunkedVTable::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::ChunkedVTable::zip(if_true: &vortex_array::arrays::ChunkedArray, if_false: &vortex_array::ArrayRef, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::ChunkedVTable @@ -698,7 +690,7 @@ pub fn vortex_array::arrays::ChunkedVTable::deserialize(_bytes: &[u8], _dtype: & pub fn vortex_array::arrays::ChunkedVTable::dtype(array: &vortex_array::arrays::ChunkedArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::ChunkedVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ChunkedVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::ChunkedVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -736,17 +728,13 @@ pub fn vortex_array::arrays::ConstantArray::new(scalar: S, len: usize) -> Sel pub fn vortex_array::arrays::ConstantArray::scalar(&self) -> &vortex_array::scalar::Scalar -impl vortex_array::arrays::ConstantArray - -pub fn vortex_array::arrays::ConstantArray::to_array(&self) -> vortex_array::ArrayRef - impl core::clone::Clone for vortex_array::arrays::ConstantArray pub fn vortex_array::arrays::ConstantArray::clone(&self) -> vortex_array::arrays::ConstantArray -impl core::convert::AsRef for vortex_array::arrays::ConstantArray +impl core::convert::AsRef for vortex_array::arrays::ConstantArray -pub fn vortex_array::arrays::ConstantArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::ConstantArray::as_ref(&self) -> &dyn vortex_array::Array impl core::convert::From for vortex_array::ArrayRef @@ -758,7 +746,7 @@ pub fn vortex_array::arrays::ConstantArray::fmt(&self, f: &mut core::fmt::Format impl core::ops::deref::Deref for vortex_array::arrays::ConstantArray -pub type vortex_array::arrays::ConstantArray::Target = dyn vortex_array::DynArray +pub type vortex_array::arrays::ConstantArray::Target = dyn vortex_array::Array pub fn vortex_array::arrays::ConstantArray::deref(&self) -> &Self::Target @@ -824,13 +812,13 @@ impl vortex_array::vtable::VTable for vortex_array::arrays::ConstantVTable pub type vortex_array::arrays::ConstantVTable::Array = vortex_array::arrays::ConstantArray -pub type vortex_array::arrays::ConstantVTable::Metadata = vortex_array::scalar::Scalar +pub type vortex_array::arrays::ConstantVTable::Metadata = vortex_array::EmptyMetadata pub type vortex_array::arrays::ConstantVTable::OperationsVTable = vortex_array::arrays::ConstantVTable pub type vortex_array::arrays::ConstantVTable::ValidityVTable = vortex_array::arrays::ConstantVTable -pub fn vortex_array::arrays::ConstantVTable::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::ConstantVTable::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::ConstantVTable::array_eq(array: &vortex_array::arrays::ConstantArray, other: &vortex_array::arrays::ConstantArray, _precision: vortex_array::Precision) -> bool @@ -840,17 +828,17 @@ pub fn vortex_array::arrays::ConstantVTable::buffer(array: &vortex_array::arrays pub fn vortex_array::arrays::ConstantVTable::buffer_name(_array: &vortex_array::arrays::ConstantArray, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::ConstantVTable::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::ConstantVTable::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::ConstantVTable::child(_array: &vortex_array::arrays::ConstantArray, idx: usize) -> vortex_array::ArrayRef pub fn vortex_array::arrays::ConstantVTable::child_name(_array: &vortex_array::arrays::ConstantArray, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::ConstantVTable::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::ConstantVTable::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::ConstantVTable::dtype(array: &vortex_array::arrays::ConstantArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::ConstantVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ConstantVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::ConstantVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -858,7 +846,7 @@ pub fn vortex_array::arrays::ConstantVTable::id(_array: &Self::Array) -> vortex_ pub fn vortex_array::arrays::ConstantVTable::len(array: &vortex_array::arrays::ConstantArray) -> usize -pub fn vortex_array::arrays::ConstantVTable::metadata(array: &vortex_array::arrays::ConstantArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ConstantVTable::metadata(_array: &vortex_array::arrays::ConstantArray) -> vortex_error::VortexResult pub fn vortex_array::arrays::ConstantVTable::nbuffers(_array: &vortex_array::arrays::ConstantArray) -> usize @@ -916,17 +904,13 @@ pub fn vortex_array::arrays::DecimalArray::try_new_handle(values: vortex_array:: pub fn vortex_array::arrays::DecimalArray::values_type(&self) -> vortex_array::dtype::DecimalType -impl vortex_array::arrays::DecimalArray - -pub fn vortex_array::arrays::DecimalArray::to_array(&self) -> vortex_array::ArrayRef - impl core::clone::Clone for vortex_array::arrays::DecimalArray pub fn vortex_array::arrays::DecimalArray::clone(&self) -> vortex_array::arrays::DecimalArray -impl core::convert::AsRef for vortex_array::arrays::DecimalArray +impl core::convert::AsRef for vortex_array::arrays::DecimalArray -pub fn vortex_array::arrays::DecimalArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::DecimalArray::as_ref(&self) -> &dyn vortex_array::Array impl core::convert::From for vortex_array::ArrayRef @@ -938,7 +922,7 @@ pub fn vortex_array::arrays::DecimalArray::fmt(&self, f: &mut core::fmt::Formatt impl core::ops::deref::Deref for vortex_array::arrays::DecimalArray -pub type vortex_array::arrays::DecimalArray::Target = dyn vortex_array::DynArray +pub type vortex_array::arrays::DecimalArray::Target = dyn vortex_array::Array pub fn vortex_array::arrays::DecimalArray::deref(&self) -> &Self::Target @@ -1072,7 +1056,7 @@ pub fn vortex_array::arrays::DecimalVTable::deserialize(bytes: &[u8], _dtype: &v pub fn vortex_array::arrays::DecimalVTable::dtype(array: &vortex_array::arrays::DecimalArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::DecimalVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::DecimalVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::DecimalVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -1120,17 +1104,13 @@ pub fn vortex_array::arrays::DictArray::validate_all_values_referenced(&self) -> pub fn vortex_array::arrays::DictArray::values(&self) -> &vortex_array::ArrayRef -impl vortex_array::arrays::DictArray - -pub fn vortex_array::arrays::DictArray::to_array(&self) -> vortex_array::ArrayRef - impl core::clone::Clone for vortex_array::arrays::DictArray pub fn vortex_array::arrays::DictArray::clone(&self) -> vortex_array::arrays::DictArray -impl core::convert::AsRef for vortex_array::arrays::DictArray +impl core::convert::AsRef for vortex_array::arrays::DictArray -pub fn vortex_array::arrays::DictArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::DictArray::as_ref(&self) -> &dyn vortex_array::Array impl core::convert::From for vortex_array::ArrayRef @@ -1142,7 +1122,7 @@ pub fn vortex_array::arrays::DictArray::fmt(&self, f: &mut core::fmt::Formatter< impl core::ops::deref::Deref for vortex_array::arrays::DictArray -pub type vortex_array::arrays::DictArray::Target = dyn vortex_array::DynArray +pub type vortex_array::arrays::DictArray::Target = dyn vortex_array::Array pub fn vortex_array::arrays::DictArray::deref(&self) -> &Self::Target @@ -1282,7 +1262,7 @@ pub fn vortex_array::arrays::DictVTable::deserialize(bytes: &[u8], _dtype: &vort pub fn vortex_array::arrays::DictVTable::dtype(array: &vortex_array::arrays::DictArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::DictVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::DictVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::DictVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -1324,9 +1304,9 @@ impl vortex_array::matcher::Matcher pub type vortex_array::arrays::ExactScalarFn::Match<'a> = vortex_array::arrays::ScalarFnArrayView<'a, F> -pub fn vortex_array::arrays::ExactScalarFn::matches(array: &dyn vortex_array::DynArray) -> bool +pub fn vortex_array::arrays::ExactScalarFn::matches(array: &dyn vortex_array::Array) -> bool -pub fn vortex_array::arrays::ExactScalarFn::try_match(array: &dyn vortex_array::DynArray) -> core::option::Option +pub fn vortex_array::arrays::ExactScalarFn::try_match(array: &dyn vortex_array::Array) -> core::option::Option pub struct vortex_array::arrays::ExtensionArray @@ -1340,17 +1320,13 @@ pub fn vortex_array::arrays::ExtensionArray::new(ext_dtype: vortex_array::dtype: pub fn vortex_array::arrays::ExtensionArray::storage(&self) -> &vortex_array::ArrayRef -impl vortex_array::arrays::ExtensionArray - -pub fn vortex_array::arrays::ExtensionArray::to_array(&self) -> vortex_array::ArrayRef - impl core::clone::Clone for vortex_array::arrays::ExtensionArray pub fn vortex_array::arrays::ExtensionArray::clone(&self) -> vortex_array::arrays::ExtensionArray -impl core::convert::AsRef for vortex_array::arrays::ExtensionArray +impl core::convert::AsRef for vortex_array::arrays::ExtensionArray -pub fn vortex_array::arrays::ExtensionArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::ExtensionArray::as_ref(&self) -> &dyn vortex_array::Array impl core::convert::From<&vortex_array::arrays::TemporalArray> for vortex_array::arrays::ExtensionArray @@ -1376,7 +1352,7 @@ pub fn vortex_array::arrays::ExtensionArray::fmt(&self, f: &mut core::fmt::Forma impl core::ops::deref::Deref for vortex_array::arrays::ExtensionArray -pub type vortex_array::arrays::ExtensionArray::Target = dyn vortex_array::DynArray +pub type vortex_array::arrays::ExtensionArray::Target = dyn vortex_array::Array pub fn vortex_array::arrays::ExtensionArray::deref(&self) -> &Self::Target @@ -1474,7 +1450,7 @@ pub fn vortex_array::arrays::ExtensionVTable::deserialize(_bytes: &[u8], _dtype: pub fn vortex_array::arrays::ExtensionVTable::dtype(array: &vortex_array::arrays::ExtensionArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::ExtensionVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ExtensionVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::ExtensionVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -1516,17 +1492,13 @@ pub fn vortex_array::arrays::FilterArray::new(array: vortex_array::ArrayRef, mas pub fn vortex_array::arrays::FilterArray::try_new(array: vortex_array::ArrayRef, mask: vortex_mask::Mask) -> vortex_error::VortexResult -impl vortex_array::arrays::FilterArray - -pub fn vortex_array::arrays::FilterArray::to_array(&self) -> vortex_array::ArrayRef - impl core::clone::Clone for vortex_array::arrays::FilterArray pub fn vortex_array::arrays::FilterArray::clone(&self) -> vortex_array::arrays::FilterArray -impl core::convert::AsRef for vortex_array::arrays::FilterArray +impl core::convert::AsRef for vortex_array::arrays::FilterArray -pub fn vortex_array::arrays::FilterArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::FilterArray::as_ref(&self) -> &dyn vortex_array::Array impl core::convert::From for vortex_array::ArrayRef @@ -1538,7 +1510,7 @@ pub fn vortex_array::arrays::FilterArray::fmt(&self, f: &mut core::fmt::Formatte impl core::ops::deref::Deref for vortex_array::arrays::FilterArray -pub type vortex_array::arrays::FilterArray::Target = dyn vortex_array::DynArray +pub type vortex_array::arrays::FilterArray::Target = dyn vortex_array::Array pub fn vortex_array::arrays::FilterArray::deref(&self) -> &Self::Target @@ -1628,7 +1600,7 @@ pub fn vortex_array::arrays::FilterVTable::deserialize(_bytes: &[u8], _dtype: &v pub fn vortex_array::arrays::FilterVTable::dtype(array: &vortex_array::arrays::FilterArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::FilterVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FilterVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::FilterVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -1676,17 +1648,13 @@ pub fn vortex_array::arrays::FixedSizeListArray::try_new(elements: vortex_array: pub fn vortex_array::arrays::FixedSizeListArray::validate(elements: &vortex_array::ArrayRef, len: usize, list_size: u32, validity: &vortex_array::validity::Validity) -> vortex_error::VortexResult<()> -impl vortex_array::arrays::FixedSizeListArray - -pub fn vortex_array::arrays::FixedSizeListArray::to_array(&self) -> vortex_array::ArrayRef - impl core::clone::Clone for vortex_array::arrays::FixedSizeListArray pub fn vortex_array::arrays::FixedSizeListArray::clone(&self) -> vortex_array::arrays::FixedSizeListArray -impl core::convert::AsRef for vortex_array::arrays::FixedSizeListArray +impl core::convert::AsRef for vortex_array::arrays::FixedSizeListArray -pub fn vortex_array::arrays::FixedSizeListArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::FixedSizeListArray::as_ref(&self) -> &dyn vortex_array::Array impl core::convert::From for vortex_array::ArrayRef @@ -1698,7 +1666,7 @@ pub fn vortex_array::arrays::FixedSizeListArray::fmt(&self, f: &mut core::fmt::F impl core::ops::deref::Deref for vortex_array::arrays::FixedSizeListArray -pub type vortex_array::arrays::FixedSizeListArray::Target = dyn vortex_array::DynArray +pub type vortex_array::arrays::FixedSizeListArray::Target = dyn vortex_array::Array pub fn vortex_array::arrays::FixedSizeListArray::deref(&self) -> &Self::Target @@ -1788,7 +1756,7 @@ pub fn vortex_array::arrays::FixedSizeListVTable::deserialize(_bytes: &[u8], _dt pub fn vortex_array::arrays::FixedSizeListVTable::dtype(array: &vortex_array::arrays::FixedSizeListArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::FixedSizeListVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeListVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::FixedSizeListVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -1868,17 +1836,13 @@ pub fn vortex_array::arrays::ListArray::try_new(elements: vortex_array::ArrayRef pub fn vortex_array::arrays::ListArray::validate(elements: &vortex_array::ArrayRef, offsets: &vortex_array::ArrayRef, validity: &vortex_array::validity::Validity) -> vortex_error::VortexResult<()> -impl vortex_array::arrays::ListArray - -pub fn vortex_array::arrays::ListArray::to_array(&self) -> vortex_array::ArrayRef - impl core::clone::Clone for vortex_array::arrays::ListArray pub fn vortex_array::arrays::ListArray::clone(&self) -> vortex_array::arrays::ListArray -impl core::convert::AsRef for vortex_array::arrays::ListArray +impl core::convert::AsRef for vortex_array::arrays::ListArray -pub fn vortex_array::arrays::ListArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::ListArray::as_ref(&self) -> &dyn vortex_array::Array impl core::convert::From for vortex_array::ArrayRef @@ -1890,7 +1854,7 @@ pub fn vortex_array::arrays::ListArray::fmt(&self, f: &mut core::fmt::Formatter< impl core::ops::deref::Deref for vortex_array::arrays::ListArray -pub type vortex_array::arrays::ListArray::Target = dyn vortex_array::DynArray +pub type vortex_array::arrays::ListArray::Target = dyn vortex_array::Array pub fn vortex_array::arrays::ListArray::deref(&self) -> &Self::Target @@ -1990,7 +1954,7 @@ pub fn vortex_array::arrays::ListVTable::deserialize(bytes: &[u8], _dtype: &vort pub fn vortex_array::arrays::ListVTable::dtype(array: &vortex_array::arrays::ListArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::ListVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ListVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::ListVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -2050,17 +2014,13 @@ impl vortex_array::arrays::ListViewArray pub fn vortex_array::arrays::ListViewArray::rebuild(&self, mode: vortex_array::arrays::ListViewRebuildMode) -> vortex_error::VortexResult -impl vortex_array::arrays::ListViewArray - -pub fn vortex_array::arrays::ListViewArray::to_array(&self) -> vortex_array::ArrayRef - impl core::clone::Clone for vortex_array::arrays::ListViewArray pub fn vortex_array::arrays::ListViewArray::clone(&self) -> vortex_array::arrays::ListViewArray -impl core::convert::AsRef for vortex_array::arrays::ListViewArray +impl core::convert::AsRef for vortex_array::arrays::ListViewArray -pub fn vortex_array::arrays::ListViewArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::ListViewArray::as_ref(&self) -> &dyn vortex_array::Array impl core::convert::From for vortex_array::ArrayRef @@ -2072,7 +2032,7 @@ pub fn vortex_array::arrays::ListViewArray::fmt(&self, f: &mut core::fmt::Format impl core::ops::deref::Deref for vortex_array::arrays::ListViewArray -pub type vortex_array::arrays::ListViewArray::Target = dyn vortex_array::DynArray +pub type vortex_array::arrays::ListViewArray::Target = dyn vortex_array::Array pub fn vortex_array::arrays::ListViewArray::deref(&self) -> &Self::Target @@ -2174,7 +2134,7 @@ pub fn vortex_array::arrays::ListViewVTable::deserialize(bytes: &[u8], _dtype: & pub fn vortex_array::arrays::ListViewVTable::dtype(array: &vortex_array::arrays::ListViewArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::ListViewVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ListViewVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::ListViewVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -2206,17 +2166,13 @@ pub fn vortex_array::arrays::MaskedArray::child(&self) -> &vortex_array::ArrayRe pub fn vortex_array::arrays::MaskedArray::try_new(child: vortex_array::ArrayRef, validity: vortex_array::validity::Validity) -> vortex_error::VortexResult -impl vortex_array::arrays::MaskedArray - -pub fn vortex_array::arrays::MaskedArray::to_array(&self) -> vortex_array::ArrayRef - impl core::clone::Clone for vortex_array::arrays::MaskedArray pub fn vortex_array::arrays::MaskedArray::clone(&self) -> vortex_array::arrays::MaskedArray -impl core::convert::AsRef for vortex_array::arrays::MaskedArray +impl core::convert::AsRef for vortex_array::arrays::MaskedArray -pub fn vortex_array::arrays::MaskedArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::MaskedArray::as_ref(&self) -> &dyn vortex_array::Array impl core::convert::From for vortex_array::ArrayRef @@ -2228,7 +2184,7 @@ pub fn vortex_array::arrays::MaskedArray::fmt(&self, f: &mut core::fmt::Formatte impl core::ops::deref::Deref for vortex_array::arrays::MaskedArray -pub type vortex_array::arrays::MaskedArray::Target = dyn vortex_array::DynArray +pub type vortex_array::arrays::MaskedArray::Target = dyn vortex_array::Array pub fn vortex_array::arrays::MaskedArray::deref(&self) -> &Self::Target @@ -2300,7 +2256,7 @@ pub fn vortex_array::arrays::MaskedVTable::deserialize(_bytes: &[u8], _dtype: &v pub fn vortex_array::arrays::MaskedVTable::dtype(array: &vortex_array::arrays::MaskedArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::MaskedVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::MaskedVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::MaskedVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -2396,17 +2352,13 @@ impl vortex_array::arrays::NullArray pub fn vortex_array::arrays::NullArray::new(len: usize) -> Self -impl vortex_array::arrays::NullArray - -pub fn vortex_array::arrays::NullArray::to_array(&self) -> vortex_array::ArrayRef - impl core::clone::Clone for vortex_array::arrays::NullArray pub fn vortex_array::arrays::NullArray::clone(&self) -> vortex_array::arrays::NullArray -impl core::convert::AsRef for vortex_array::arrays::NullArray +impl core::convert::AsRef for vortex_array::arrays::NullArray -pub fn vortex_array::arrays::NullArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::NullArray::as_ref(&self) -> &dyn vortex_array::Array impl core::convert::From for vortex_array::ArrayRef @@ -2418,7 +2370,7 @@ pub fn vortex_array::arrays::NullArray::fmt(&self, f: &mut core::fmt::Formatter< impl core::ops::deref::Deref for vortex_array::arrays::NullArray -pub type vortex_array::arrays::NullArray::Target = dyn vortex_array::DynArray +pub type vortex_array::arrays::NullArray::Target = dyn vortex_array::Array pub fn vortex_array::arrays::NullArray::deref(&self) -> &Self::Target @@ -2502,7 +2454,7 @@ pub fn vortex_array::arrays::NullVTable::deserialize(_bytes: &[u8], _dtype: &vor pub fn vortex_array::arrays::NullVTable::dtype(_array: &vortex_array::arrays::NullArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::NullVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::NullVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::NullVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -2592,19 +2544,15 @@ pub fn vortex_array::arrays::PrimitiveArray::patch(self, patches: &vortex_array: impl vortex_array::arrays::PrimitiveArray -pub fn vortex_array::arrays::PrimitiveArray::to_array(&self) -> vortex_array::ArrayRef - -impl vortex_array::arrays::PrimitiveArray - pub fn vortex_array::arrays::PrimitiveArray::top_value(&self) -> vortex_error::VortexResult> impl core::clone::Clone for vortex_array::arrays::PrimitiveArray pub fn vortex_array::arrays::PrimitiveArray::clone(&self) -> vortex_array::arrays::PrimitiveArray -impl core::convert::AsRef for vortex_array::arrays::PrimitiveArray +impl core::convert::AsRef for vortex_array::arrays::PrimitiveArray -pub fn vortex_array::arrays::PrimitiveArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::PrimitiveArray::as_ref(&self) -> &dyn vortex_array::Array impl core::convert::From for vortex_array::ArrayRef @@ -2616,7 +2564,7 @@ pub fn vortex_array::arrays::PrimitiveArray::fmt(&self, f: &mut core::fmt::Forma impl core::ops::deref::Deref for vortex_array::arrays::PrimitiveArray -pub type vortex_array::arrays::PrimitiveArray::Target = dyn vortex_array::DynArray +pub type vortex_array::arrays::PrimitiveArray::Target = dyn vortex_array::Array pub fn vortex_array::arrays::PrimitiveArray::deref(&self) -> &Self::Target @@ -2760,7 +2708,7 @@ pub fn vortex_array::arrays::PrimitiveVTable::deserialize(_bytes: &[u8], _dtype: pub fn vortex_array::arrays::PrimitiveVTable::dtype(array: &vortex_array::arrays::PrimitiveArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::PrimitiveVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::PrimitiveVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::PrimitiveVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -2824,17 +2772,13 @@ pub fn vortex_array::arrays::ScalarFnArray::scalar_fn(&self) -> &vortex_array::s pub fn vortex_array::arrays::ScalarFnArray::try_new(bound: vortex_array::scalar_fn::ScalarFnRef, children: alloc::vec::Vec, len: usize) -> vortex_error::VortexResult -impl vortex_array::arrays::ScalarFnArray - -pub fn vortex_array::arrays::ScalarFnArray::to_array(&self) -> vortex_array::ArrayRef - impl core::clone::Clone for vortex_array::arrays::ScalarFnArray pub fn vortex_array::arrays::ScalarFnArray::clone(&self) -> vortex_array::arrays::ScalarFnArray -impl core::convert::AsRef for vortex_array::arrays::ScalarFnArray +impl core::convert::AsRef for vortex_array::arrays::ScalarFnArray -pub fn vortex_array::arrays::ScalarFnArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::ScalarFnArray::as_ref(&self) -> &dyn vortex_array::Array impl core::convert::From for vortex_array::ArrayRef @@ -2846,7 +2790,7 @@ pub fn vortex_array::arrays::ScalarFnArray::fmt(&self, f: &mut core::fmt::Format impl core::ops::deref::Deref for vortex_array::arrays::ScalarFnArray -pub type vortex_array::arrays::ScalarFnArray::Target = dyn vortex_array::DynArray +pub type vortex_array::arrays::ScalarFnArray::Target = dyn vortex_array::Array pub fn vortex_array::arrays::ScalarFnArray::deref(&self) -> &Self::Target @@ -2874,7 +2818,7 @@ pub vortex_array::arrays::ScalarFnArrayView::vtable: &'a F impl core::ops::deref::Deref for vortex_array::arrays::ScalarFnArrayView<'_, F> -pub type vortex_array::arrays::ScalarFnArrayView<'_, F>::Target = dyn vortex_array::DynArray +pub type vortex_array::arrays::ScalarFnArrayView<'_, F>::Target = dyn vortex_array::Array pub fn vortex_array::arrays::ScalarFnArrayView<'_, F>::deref(&self) -> &Self::Target @@ -2926,7 +2870,7 @@ pub fn vortex_array::arrays::ScalarFnVTable::deserialize(_bytes: &[u8], _dtype: pub fn vortex_array::arrays::ScalarFnVTable::dtype(array: &vortex_array::arrays::ScalarFnArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::ScalarFnVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ScalarFnVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::ScalarFnVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -2964,17 +2908,13 @@ pub async fn vortex_array::arrays::SharedArray::get_or_compute_async(&se pub fn vortex_array::arrays::SharedArray::new(source: vortex_array::ArrayRef) -> Self -impl vortex_array::arrays::SharedArray - -pub fn vortex_array::arrays::SharedArray::to_array(&self) -> vortex_array::ArrayRef - impl core::clone::Clone for vortex_array::arrays::SharedArray pub fn vortex_array::arrays::SharedArray::clone(&self) -> vortex_array::arrays::SharedArray -impl core::convert::AsRef for vortex_array::arrays::SharedArray +impl core::convert::AsRef for vortex_array::arrays::SharedArray -pub fn vortex_array::arrays::SharedArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::SharedArray::as_ref(&self) -> &dyn vortex_array::Array impl core::convert::From for vortex_array::ArrayRef @@ -2986,7 +2926,7 @@ pub fn vortex_array::arrays::SharedArray::fmt(&self, f: &mut core::fmt::Formatte impl core::ops::deref::Deref for vortex_array::arrays::SharedArray -pub type vortex_array::arrays::SharedArray::Target = dyn vortex_array::DynArray +pub type vortex_array::arrays::SharedArray::Target = dyn vortex_array::Array pub fn vortex_array::arrays::SharedArray::deref(&self) -> &Self::Target @@ -3038,7 +2978,7 @@ pub fn vortex_array::arrays::SharedVTable::deserialize(_bytes: &[u8], _dtype: &v pub fn vortex_array::arrays::SharedVTable::dtype(array: &vortex_array::arrays::SharedArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::SharedVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::SharedVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::SharedVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -3080,17 +3020,13 @@ pub fn vortex_array::arrays::SliceArray::slice_range(&self) -> &core::ops::range pub fn vortex_array::arrays::SliceArray::try_new(child: vortex_array::ArrayRef, range: core::ops::range::Range) -> vortex_error::VortexResult -impl vortex_array::arrays::SliceArray - -pub fn vortex_array::arrays::SliceArray::to_array(&self) -> vortex_array::ArrayRef - impl core::clone::Clone for vortex_array::arrays::SliceArray pub fn vortex_array::arrays::SliceArray::clone(&self) -> vortex_array::arrays::SliceArray -impl core::convert::AsRef for vortex_array::arrays::SliceArray +impl core::convert::AsRef for vortex_array::arrays::SliceArray -pub fn vortex_array::arrays::SliceArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::SliceArray::as_ref(&self) -> &dyn vortex_array::Array impl core::convert::From for vortex_array::ArrayRef @@ -3102,7 +3038,7 @@ pub fn vortex_array::arrays::SliceArray::fmt(&self, f: &mut core::fmt::Formatter impl core::ops::deref::Deref for vortex_array::arrays::SliceArray -pub type vortex_array::arrays::SliceArray::Target = dyn vortex_array::DynArray +pub type vortex_array::arrays::SliceArray::Target = dyn vortex_array::Array pub fn vortex_array::arrays::SliceArray::deref(&self) -> &Self::Target @@ -3202,7 +3138,7 @@ pub fn vortex_array::arrays::SliceVTable::deserialize(_bytes: &[u8], _dtype: &vo pub fn vortex_array::arrays::SliceVTable::dtype(array: &vortex_array::arrays::SliceArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::SliceVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::SliceVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::SliceVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -3276,17 +3212,13 @@ impl vortex_array::arrays::StructArray pub fn vortex_array::arrays::StructArray::into_record_batch_with_schema(self, schema: impl core::convert::AsRef) -> vortex_error::VortexResult -impl vortex_array::arrays::StructArray - -pub fn vortex_array::arrays::StructArray::to_array(&self) -> vortex_array::ArrayRef - impl core::clone::Clone for vortex_array::arrays::StructArray pub fn vortex_array::arrays::StructArray::clone(&self) -> vortex_array::arrays::StructArray -impl core::convert::AsRef for vortex_array::arrays::StructArray +impl core::convert::AsRef for vortex_array::arrays::StructArray -pub fn vortex_array::arrays::StructArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::StructArray::as_ref(&self) -> &dyn vortex_array::Array impl core::convert::From for vortex_array::ArrayRef @@ -3298,7 +3230,7 @@ pub fn vortex_array::arrays::StructArray::fmt(&self, f: &mut core::fmt::Formatte impl core::ops::deref::Deref for vortex_array::arrays::StructArray -pub type vortex_array::arrays::StructArray::Target = dyn vortex_array::DynArray +pub type vortex_array::arrays::StructArray::Target = dyn vortex_array::Array pub fn vortex_array::arrays::StructArray::deref(&self) -> &Self::Target @@ -3358,7 +3290,7 @@ pub fn vortex_array::arrays::StructVTable::mask(array: &vortex_array::arrays::St impl vortex_array::scalar_fn::fns::zip::ZipKernel for vortex_array::arrays::StructVTable -pub fn vortex_array::arrays::StructVTable::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::arrays::StructVTable::zip(if_true: &vortex_array::arrays::StructArray, if_false: &vortex_array::ArrayRef, mask: &vortex_mask::Mask, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::StructVTable @@ -3394,7 +3326,7 @@ pub fn vortex_array::arrays::StructVTable::deserialize(_bytes: &[u8], _dtype: &v pub fn vortex_array::arrays::StructVTable::dtype(array: &vortex_array::arrays::StructArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::StructVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::StructVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::StructVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -3474,9 +3406,9 @@ impl core::clone::Clone for vortex_array::arrays::TemporalArray pub fn vortex_array::arrays::TemporalArray::clone(&self) -> vortex_array::arrays::TemporalArray -impl core::convert::AsRef for vortex_array::arrays::TemporalArray +impl core::convert::AsRef for vortex_array::arrays::TemporalArray -pub fn vortex_array::arrays::TemporalArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::TemporalArray::as_ref(&self) -> &dyn vortex_array::Array impl core::convert::From<&vortex_array::arrays::TemporalArray> for vortex_array::arrays::ExtensionArray @@ -3490,7 +3422,7 @@ impl core::convert::From for vortex_array:: pub fn vortex_array::arrays::ExtensionArray::from(value: vortex_array::arrays::TemporalArray) -> Self -impl core::convert::TryFrom> for vortex_array::arrays::TemporalArray +impl core::convert::TryFrom> for vortex_array::arrays::TemporalArray pub type vortex_array::arrays::TemporalArray::Error = vortex_error::VortexError @@ -3548,17 +3480,13 @@ pub fn vortex_array::arrays::VarBinArray::try_new_from_handle(offsets: vortex_ar 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<()> -impl vortex_array::arrays::VarBinArray - -pub fn vortex_array::arrays::VarBinArray::to_array(&self) -> vortex_array::ArrayRef - impl core::clone::Clone for vortex_array::arrays::VarBinArray pub fn vortex_array::arrays::VarBinArray::clone(&self) -> vortex_array::arrays::VarBinArray -impl core::convert::AsRef for vortex_array::arrays::VarBinArray +impl core::convert::AsRef for vortex_array::arrays::VarBinArray -pub fn vortex_array::arrays::VarBinArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::VarBinArray::as_ref(&self) -> &dyn vortex_array::Array impl core::convert::From> for vortex_array::arrays::VarBinArray @@ -3610,7 +3538,7 @@ pub fn vortex_array::arrays::VarBinArray::from_iter &Self::Target @@ -3724,7 +3652,7 @@ pub fn vortex_array::arrays::VarBinVTable::deserialize(bytes: &[u8], _dtype: &vo pub fn vortex_array::arrays::VarBinVTable::dtype(array: &vortex_array::arrays::VarBinArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::VarBinVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::VarBinVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -3796,17 +3724,13 @@ pub fn vortex_array::arrays::VarBinViewArray::compact_buffers(&self) -> vortex_e pub fn vortex_array::arrays::VarBinViewArray::compact_with_threshold(&self, buffer_utilization_threshold: f64) -> vortex_error::VortexResult -impl vortex_array::arrays::VarBinViewArray - -pub fn vortex_array::arrays::VarBinViewArray::to_array(&self) -> vortex_array::ArrayRef - impl core::clone::Clone for vortex_array::arrays::VarBinViewArray pub fn vortex_array::arrays::VarBinViewArray::clone(&self) -> vortex_array::arrays::VarBinViewArray -impl core::convert::AsRef for vortex_array::arrays::VarBinViewArray +impl core::convert::AsRef for vortex_array::arrays::VarBinViewArray -pub fn vortex_array::arrays::VarBinViewArray::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::arrays::VarBinViewArray::as_ref(&self) -> &dyn vortex_array::Array impl core::convert::From for vortex_array::ArrayRef @@ -3826,7 +3750,7 @@ pub fn vortex_array::arrays::VarBinViewArray::from_iter &Self::Target @@ -3910,7 +3834,7 @@ pub fn vortex_array::arrays::VarBinViewVTable::mask(array: &vortex_array::arrays impl vortex_array::scalar_fn::fns::zip::ZipKernel for vortex_array::arrays::VarBinViewVTable -pub fn vortex_array::arrays::VarBinViewVTable::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::VarBinViewVTable::zip(if_true: &vortex_array::arrays::VarBinViewArray, if_false: &vortex_array::ArrayRef, mask: &vortex_mask::Mask, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::VarBinViewVTable @@ -3946,7 +3870,7 @@ pub fn vortex_array::arrays::VarBinViewVTable::deserialize(_bytes: &[u8], _dtype pub fn vortex_array::arrays::VarBinViewVTable::dtype(array: &vortex_array::arrays::VarBinViewArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::VarBinViewVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinViewVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::VarBinViewVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -4216,7 +4140,7 @@ pub fn vortex_array::arrow::ArrowArrayStreamAdapter::new(stream: arrow_array::ff impl core::iter::traits::iterator::Iterator for vortex_array::arrow::ArrowArrayStreamAdapter -pub type vortex_array::arrow::ArrowArrayStreamAdapter::Item = core::result::Result, vortex_error::VortexError> +pub type vortex_array::arrow::ArrowArrayStreamAdapter::Item = core::result::Result, vortex_error::VortexError> pub fn vortex_array::arrow::ArrowArrayStreamAdapter::next(&mut self) -> core::option::Option @@ -4664,8 +4588,6 @@ pub struct vortex_array::builders::DecimalBuilder impl vortex_array::builders::DecimalBuilder -pub fn vortex_array::builders::DecimalBuilder::append_n_values(&mut self, value: V, n: usize) - pub fn vortex_array::builders::DecimalBuilder::append_value(&mut self, value: V) pub fn vortex_array::builders::DecimalBuilder::decimal_dtype(&self) -> &vortex_array::dtype::DecimalDType @@ -5010,8 +4932,6 @@ pub struct vortex_array::builders::PrimitiveBuilder impl vortex_array::builders::PrimitiveBuilder -pub fn vortex_array::builders::PrimitiveBuilder::append_n_values(&mut self, value: T, n: usize) - pub fn vortex_array::builders::PrimitiveBuilder::append_value(&mut self, value: T) pub fn vortex_array::builders::PrimitiveBuilder::extend_with_iterator(&mut self, iter: impl core::iter::traits::collect::IntoIterator, mask: vortex_mask::Mask) @@ -5148,8 +5068,6 @@ pub struct vortex_array::builders::VarBinViewBuilder impl vortex_array::builders::VarBinViewBuilder -pub fn vortex_array::builders::VarBinViewBuilder::append_n_values>(&mut self, value: S, n: usize) - pub fn vortex_array::builders::VarBinViewBuilder::append_value>(&mut self, value: S) pub fn vortex_array::builders::VarBinViewBuilder::completed_block_count(&self) -> u32 @@ -5696,7 +5614,7 @@ pub fn vortex_array::builtins::ArrayBuiltins::mask(self, mask: vortex_array::Arr pub fn vortex_array::builtins::ArrayBuiltins::not(&self) -> vortex_error::VortexResult -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::builtins::ArrayBuiltins::zip(&self, if_false: vortex_array::ArrayRef, mask: vortex_array::ArrayRef) -> vortex_error::VortexResult impl vortex_array::builtins::ArrayBuiltins for vortex_array::ArrayRef @@ -5718,7 +5636,7 @@ pub fn vortex_array::ArrayRef::mask(self, mask: vortex_array::ArrayRef) -> vorte pub fn vortex_array::ArrayRef::not(&self) -> vortex_error::VortexResult -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::zip(&self, if_false: vortex_array::ArrayRef, mask: vortex_array::ArrayRef) -> vortex_error::VortexResult pub trait vortex_array::builtins::ExprBuiltins: core::marker::Sized @@ -5738,7 +5656,7 @@ pub fn vortex_array::builtins::ExprBuiltins::mask(&self, mask: vortex_array::exp pub fn vortex_array::builtins::ExprBuiltins::not(&self) -> vortex_error::VortexResult -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::builtins::ExprBuiltins::zip(&self, if_false: vortex_array::expr::Expression, mask: vortex_array::expr::Expression) -> vortex_error::VortexResult impl vortex_array::builtins::ExprBuiltins for vortex_array::expr::Expression @@ -5758,7 +5676,7 @@ pub fn vortex_array::expr::Expression::mask(&self, mask: vortex_array::expr::Exp pub fn vortex_array::expr::Expression::not(&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::expr::Expression::zip(&self, if_false: vortex_array::expr::Expression, mask: vortex_array::expr::Expression) -> vortex_error::VortexResult pub mod vortex_array::compute @@ -5790,7 +5708,7 @@ impl core::marker::StructuralPartialEq for vortex_array::compute::Cost pub enum vortex_array::compute::Input<'a> -pub vortex_array::compute::Input::Array(&'a dyn vortex_array::DynArray) +pub vortex_array::compute::Input::Array(&'a dyn vortex_array::Array) pub vortex_array::compute::Input::Builder(&'a mut dyn vortex_array::builders::ArrayBuilder) @@ -5802,7 +5720,7 @@ pub vortex_array::compute::Input::Scalar(&'a vortex_array::scalar::Scalar) impl<'a> vortex_array::compute::Input<'a> -pub fn vortex_array::compute::Input<'a>::array(&self) -> core::option::Option<&'a dyn vortex_array::DynArray> +pub fn vortex_array::compute::Input<'a>::array(&self) -> core::option::Option<&'a dyn vortex_array::Array> pub fn vortex_array::compute::Input<'a>::builder(&'a mut self) -> core::option::Option<&'a mut dyn vortex_array::builders::ArrayBuilder> @@ -5816,11 +5734,11 @@ impl core::fmt::Debug for vortex_array::compute::Input<'_> pub fn vortex_array::compute::Input<'_>::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl<'a> core::convert::From<&'a (dyn vortex_array::DynArray + 'static)> for vortex_array::compute::Input<'a> +impl<'a> core::convert::From<&'a (dyn vortex_array::Array + 'static)> for vortex_array::compute::Input<'a> -pub fn vortex_array::compute::Input<'a>::from(value: &'a dyn vortex_array::DynArray) -> Self +pub fn vortex_array::compute::Input<'a>::from(value: &'a dyn vortex_array::Array) -> Self -impl<'a> core::convert::From<&'a alloc::sync::Arc> for vortex_array::compute::Input<'a> +impl<'a> core::convert::From<&'a alloc::sync::Arc> for vortex_array::compute::Input<'a> pub fn vortex_array::compute::Input<'a>::from(value: &'a vortex_array::ArrayRef) -> Self @@ -5852,7 +5770,7 @@ pub fn vortex_array::compute::Output::unwrap_array(self) -> vortex_error::Vortex pub fn vortex_array::compute::Output::unwrap_scalar(self) -> vortex_error::VortexResult -impl core::convert::From> for vortex_array::compute::Output +impl core::convert::From> for vortex_array::compute::Output pub fn vortex_array::compute::Output::from(value: vortex_array::ArrayRef) -> Self @@ -5866,11 +5784,11 @@ pub fn vortex_array::compute::Output::fmt(&self, f: &mut core::fmt::Formatter<'_ pub struct vortex_array::compute::BinaryArgs<'a, O: vortex_array::compute::Options> -pub vortex_array::compute::BinaryArgs::lhs: &'a dyn vortex_array::DynArray +pub vortex_array::compute::BinaryArgs::lhs: &'a dyn vortex_array::Array pub vortex_array::compute::BinaryArgs::options: &'a O -pub vortex_array::compute::BinaryArgs::rhs: &'a dyn vortex_array::DynArray +pub vortex_array::compute::BinaryArgs::rhs: &'a dyn vortex_array::Array impl<'a, O: vortex_array::compute::Options> core::convert::TryFrom<&vortex_array::compute::InvocationArgs<'a>> for vortex_array::compute::BinaryArgs<'a, O> @@ -6064,7 +5982,7 @@ pub struct vortex_array::compute::SumArgs<'a> pub vortex_array::compute::SumArgs::accumulator: &'a vortex_array::scalar::Scalar -pub vortex_array::compute::SumArgs::array: &'a dyn vortex_array::DynArray +pub vortex_array::compute::SumArgs::array: &'a dyn vortex_array::Array impl<'a> core::convert::TryFrom<&vortex_array::compute::InvocationArgs<'a>> for vortex_array::compute::SumArgs<'a> @@ -6092,7 +6010,7 @@ impl inventory::Collect for vortex_array::compute::SumKernelRef pub struct vortex_array::compute::UnaryArgs<'a, O: vortex_array::compute::Options> -pub vortex_array::compute::UnaryArgs::array: &'a dyn vortex_array::DynArray +pub vortex_array::compute::UnaryArgs::array: &'a dyn vortex_array::Array pub vortex_array::compute::UnaryArgs::options: &'a O @@ -6390,6 +6308,26 @@ impl vortex_array::compute::SumKernel for vortex_array::arrays::PrimitiveVTable pub fn vortex_array::arrays::PrimitiveVTable::sum(&self, array: &vortex_array::arrays::PrimitiveArray, accumulator: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult +pub fn vortex_array::compute::add(lhs: &vortex_array::ArrayRef, rhs: &vortex_array::ArrayRef) -> vortex_error::VortexResult + +pub fn vortex_array::compute::add_scalar(lhs: &vortex_array::ArrayRef, rhs: vortex_array::scalar::Scalar) -> vortex_error::VortexResult + +pub fn vortex_array::compute::and_kleene(lhs: &vortex_array::ArrayRef, rhs: &vortex_array::ArrayRef) -> vortex_error::VortexResult + +pub fn vortex_array::compute::arrow_filter_fn(array: &vortex_array::ArrayRef, mask: &vortex_mask::Mask) -> vortex_error::VortexResult + +pub fn vortex_array::compute::cast(array: &dyn vortex_array::Array, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult + +pub fn vortex_array::compute::div(lhs: &vortex_array::ArrayRef, rhs: &vortex_array::ArrayRef) -> vortex_error::VortexResult + +pub fn vortex_array::compute::div_scalar(lhs: &vortex_array::ArrayRef, rhs: vortex_array::scalar::Scalar) -> vortex_error::VortexResult + +pub fn vortex_array::compute::fill_null(array: &vortex_array::ArrayRef, fill_value: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult + +pub fn vortex_array::compute::filter(array: &vortex_array::ArrayRef, mask: &vortex_mask::Mask) -> vortex_error::VortexResult + +pub fn vortex_array::compute::invert(array: &vortex_array::ArrayRef) -> vortex_error::VortexResult + pub fn vortex_array::compute::is_constant(array: &vortex_array::ArrayRef) -> vortex_error::VortexResult> pub fn vortex_array::compute::is_constant_opts(array: &vortex_array::ArrayRef, options: &vortex_array::compute::IsConstantOpts) -> vortex_error::VortexResult> @@ -6400,16 +6338,34 @@ pub fn vortex_array::compute::is_sorted_opts(array: &vortex_array::ArrayRef, str pub fn vortex_array::compute::is_strict_sorted(array: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::compute::list_contains(array: &vortex_array::ArrayRef, value: &vortex_array::ArrayRef) -> vortex_error::VortexResult + +pub fn vortex_array::compute::mask(array: &vortex_array::ArrayRef, mask: &vortex_mask::Mask) -> vortex_error::VortexResult + pub fn vortex_array::compute::min_max(array: &vortex_array::ArrayRef) -> vortex_error::VortexResult> +pub fn vortex_array::compute::mul(lhs: &vortex_array::ArrayRef, rhs: &vortex_array::ArrayRef) -> vortex_error::VortexResult + +pub fn vortex_array::compute::mul_scalar(lhs: &vortex_array::ArrayRef, rhs: vortex_array::scalar::Scalar) -> vortex_error::VortexResult + pub fn vortex_array::compute::nan_count(array: &vortex_array::ArrayRef) -> vortex_error::VortexResult +pub fn vortex_array::compute::numeric(lhs: &vortex_array::ArrayRef, rhs: &vortex_array::ArrayRef, op: vortex_array::scalar::NumericOperator) -> vortex_error::VortexResult + +pub fn vortex_array::compute::or_kleene(lhs: &vortex_array::ArrayRef, rhs: &vortex_array::ArrayRef) -> vortex_error::VortexResult + +pub fn vortex_array::compute::sub(lhs: &vortex_array::ArrayRef, rhs: &vortex_array::ArrayRef) -> vortex_error::VortexResult + +pub fn vortex_array::compute::sub_scalar(lhs: &vortex_array::ArrayRef, rhs: vortex_array::scalar::Scalar) -> vortex_error::VortexResult + pub fn vortex_array::compute::sum(array: &vortex_array::ArrayRef) -> vortex_error::VortexResult pub fn vortex_array::compute::sum_impl(array: &vortex_array::ArrayRef, accumulator: &vortex_array::scalar::Scalar, kernels: &[arcref::ArcRef]) -> vortex_error::VortexResult pub fn vortex_array::compute::warm_up_vtables() +pub fn vortex_array::compute::zip(if_true: &vortex_array::ArrayRef, if_false: &vortex_array::ArrayRef, mask: &vortex_mask::Mask) -> vortex_error::VortexResult + pub mod vortex_array::display pub enum vortex_array::display::DisplayOptions @@ -6432,7 +6388,7 @@ impl core::default::Default for vortex_array::display::DisplayOptions pub fn vortex_array::display::DisplayOptions::default() -> Self -pub struct vortex_array::display::DisplayArrayAs<'a>(pub &'a dyn vortex_array::DynArray, pub vortex_array::display::DisplayOptions) +pub struct vortex_array::display::DisplayArrayAs<'a>(pub &'a dyn vortex_array::Array, pub vortex_array::display::DisplayOptions) impl core::fmt::Display for vortex_array::display::DisplayArrayAs<'_> @@ -8056,10 +8012,6 @@ 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 @@ -10130,7 +10082,7 @@ pub fn vortex_array::expr::Expression::mask(&self, mask: vortex_array::expr::Exp pub fn vortex_array::expr::Expression::not(&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::expr::Expression::zip(&self, if_false: vortex_array::expr::Expression, mask: vortex_array::expr::Expression) -> vortex_error::VortexResult impl vortex_array::expr::VortexExprExt for vortex_array::expr::Expression @@ -10186,10 +10138,6 @@ pub fn vortex_array::expr::and_collect(iter: I) -> core::option::Option vortex_array::expr::Expression -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::expr::case_when_no_else(condition: vortex_array::expr::Expression, then_value: vortex_array::expr::Expression) -> vortex_array::expr::Expression - pub fn vortex_array::expr::cast(child: vortex_array::expr::Expression, target: vortex_array::dtype::DType) -> vortex_array::expr::Expression pub fn vortex_array::expr::checked_add(lhs: vortex_array::expr::Expression, rhs: vortex_array::expr::Expression) -> vortex_array::expr::Expression @@ -10244,8 +10192,6 @@ pub fn vortex_array::expr::merge(elements: impl core::iter::traits::collect::Int 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::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::expr::not(operand: vortex_array::expr::Expression) -> vortex_array::expr::Expression pub fn vortex_array::expr::not_eq(lhs: vortex_array::expr::Expression, rhs: vortex_array::expr::Expression) -> vortex_array::expr::Expression @@ -10268,7 +10214,7 @@ pub fn vortex_array::expr::select_exclude(fields: impl core::convert::Into alloc::vec::Vec -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::expr::zip_expr(if_true: vortex_array::expr::Expression, if_false: vortex_array::expr::Expression, mask: vortex_array::expr::Expression) -> vortex_array::expr::Expression 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> @@ -10664,7 +10610,7 @@ pub fn vortex_array::iter::ArrayIteratorAdapter::new(dtype: vortex_array::dty impl core::iter::traits::iterator::Iterator for vortex_array::iter::ArrayIteratorAdapter where I: core::iter::traits::iterator::Iterator> -pub type vortex_array::iter::ArrayIteratorAdapter::Item = core::result::Result, vortex_error::VortexError> +pub type vortex_array::iter::ArrayIteratorAdapter::Item = core::result::Result, vortex_error::VortexError> pub fn vortex_array::iter::ArrayIteratorAdapter::next(&mut self) -> core::option::Option @@ -10826,67 +10772,67 @@ pub fn vortex_array::matcher::AnyArray::fmt(&self, f: &mut core::fmt::Formatter< impl vortex_array::matcher::Matcher for vortex_array::matcher::AnyArray -pub type vortex_array::matcher::AnyArray::Match<'a> = &'a (dyn vortex_array::DynArray + 'static) +pub type vortex_array::matcher::AnyArray::Match<'a> = &'a (dyn vortex_array::Array + 'static) -pub fn vortex_array::matcher::AnyArray::matches(_array: &dyn vortex_array::DynArray) -> bool +pub fn vortex_array::matcher::AnyArray::matches(_array: &dyn vortex_array::Array) -> bool -pub fn vortex_array::matcher::AnyArray::try_match(array: &dyn vortex_array::DynArray) -> core::option::Option +pub fn vortex_array::matcher::AnyArray::try_match(array: &dyn vortex_array::Array) -> core::option::Option pub trait vortex_array::matcher::Matcher pub type vortex_array::matcher::Matcher::Match<'a> -pub fn vortex_array::matcher::Matcher::matches(array: &dyn vortex_array::DynArray) -> bool +pub fn vortex_array::matcher::Matcher::matches(array: &dyn vortex_array::Array) -> bool -pub fn vortex_array::matcher::Matcher::try_match<'a>(array: &'a dyn vortex_array::DynArray) -> core::option::Option +pub fn vortex_array::matcher::Matcher::try_match<'a>(array: &'a dyn vortex_array::Array) -> core::option::Option impl vortex_array::matcher::Matcher for vortex_array::AnyCanonical pub type vortex_array::AnyCanonical::Match<'a> = vortex_array::CanonicalView<'a> -pub fn vortex_array::AnyCanonical::matches(array: &dyn vortex_array::DynArray) -> bool +pub fn vortex_array::AnyCanonical::matches(array: &dyn vortex_array::Array) -> bool -pub fn vortex_array::AnyCanonical::try_match<'a>(array: &'a dyn vortex_array::DynArray) -> core::option::Option +pub fn vortex_array::AnyCanonical::try_match<'a>(array: &'a dyn vortex_array::Array) -> core::option::Option impl vortex_array::matcher::Matcher for vortex_array::AnyColumnar pub type vortex_array::AnyColumnar::Match<'a> = vortex_array::ColumnarView<'a> -pub fn vortex_array::AnyColumnar::matches(array: &dyn vortex_array::DynArray) -> bool +pub fn vortex_array::AnyColumnar::matches(array: &dyn vortex_array::Array) -> bool -pub fn vortex_array::AnyColumnar::try_match<'a>(array: &'a dyn vortex_array::DynArray) -> core::option::Option +pub fn vortex_array::AnyColumnar::try_match<'a>(array: &'a dyn vortex_array::Array) -> core::option::Option impl vortex_array::matcher::Matcher for vortex_array::arrays::AnyScalarFn pub type vortex_array::arrays::AnyScalarFn::Match<'a> = &'a vortex_array::arrays::ScalarFnArray -pub fn vortex_array::arrays::AnyScalarFn::matches(array: &dyn vortex_array::DynArray) -> bool +pub fn vortex_array::arrays::AnyScalarFn::matches(array: &dyn vortex_array::Array) -> bool -pub fn vortex_array::arrays::AnyScalarFn::try_match(array: &dyn vortex_array::DynArray) -> core::option::Option +pub fn vortex_array::arrays::AnyScalarFn::try_match(array: &dyn vortex_array::Array) -> core::option::Option impl vortex_array::matcher::Matcher for vortex_array::matcher::AnyArray -pub type vortex_array::matcher::AnyArray::Match<'a> = &'a (dyn vortex_array::DynArray + 'static) +pub type vortex_array::matcher::AnyArray::Match<'a> = &'a (dyn vortex_array::Array + 'static) -pub fn vortex_array::matcher::AnyArray::matches(_array: &dyn vortex_array::DynArray) -> bool +pub fn vortex_array::matcher::AnyArray::matches(_array: &dyn vortex_array::Array) -> bool -pub fn vortex_array::matcher::AnyArray::try_match(array: &dyn vortex_array::DynArray) -> core::option::Option +pub fn vortex_array::matcher::AnyArray::try_match(array: &dyn vortex_array::Array) -> core::option::Option impl vortex_array::matcher::Matcher for vortex_array::arrays::ExactScalarFn pub type vortex_array::arrays::ExactScalarFn::Match<'a> = vortex_array::arrays::ScalarFnArrayView<'a, F> -pub fn vortex_array::arrays::ExactScalarFn::matches(array: &dyn vortex_array::DynArray) -> bool +pub fn vortex_array::arrays::ExactScalarFn::matches(array: &dyn vortex_array::Array) -> bool -pub fn vortex_array::arrays::ExactScalarFn::try_match(array: &dyn vortex_array::DynArray) -> core::option::Option +pub fn vortex_array::arrays::ExactScalarFn::try_match(array: &dyn vortex_array::Array) -> core::option::Option impl vortex_array::matcher::Matcher for V pub type V::Match<'a> = &'a ::Array -pub fn V::matches(array: &dyn vortex_array::DynArray) -> bool +pub fn V::matches(array: &dyn vortex_array::Array) -> bool -pub fn V::try_match<'a>(array: &'a dyn vortex_array::DynArray) -> core::option::Option +pub fn V::try_match<'a>(array: &'a dyn vortex_array::Array) -> core::option::Option pub mod vortex_array::normalize @@ -11628,9 +11574,9 @@ pub fn vortex_array::scalar::ScalarValue::into_utf8(self) -> vortex_buffer::stri impl vortex_array::scalar::ScalarValue -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 fn vortex_array::scalar::ScalarValue::from_proto(value: &vortex_proto::scalar::ScalarValue, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> -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::ScalarValue::from_proto_bytes(bytes: &[u8], dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult> impl vortex_array::scalar::ScalarValue @@ -12336,13 +12282,11 @@ impl vortex_array::scalar::Scalar 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::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::Scalar::from_proto_value(value: &vortex_proto::scalar::ScalarValue, dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult impl vortex_array::scalar::Scalar -pub fn vortex_array::scalar::Scalar::struct_(dtype: vortex_array::dtype::DType, children: impl core::iter::traits::collect::IntoIterator) -> Self - -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::Scalar::struct_(dtype: vortex_array::dtype::DType, children: alloc::vec::Vec) -> Self impl vortex_array::scalar::Scalar @@ -12770,19 +12714,19 @@ impl core::hash::Hash for vortex_array::scalar::Scalar pub fn vortex_array::scalar::Scalar::hash(&self, state: &mut H) -impl vortex_array::search_sorted::IndexOrd for (dyn vortex_array::DynArray + '_) +impl vortex_array::search_sorted::IndexOrd for (dyn vortex_array::Array + '_) -pub fn (dyn vortex_array::DynArray + '_)::index_cmp(&self, idx: usize, elem: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult> +pub fn (dyn vortex_array::Array + '_)::index_cmp(&self, idx: usize, elem: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult> -pub fn (dyn vortex_array::DynArray + '_)::index_ge(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn (dyn vortex_array::Array + '_)::index_ge(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub fn (dyn vortex_array::DynArray + '_)::index_gt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn (dyn vortex_array::Array + '_)::index_gt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub fn (dyn vortex_array::DynArray + '_)::index_le(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn (dyn vortex_array::Array + '_)::index_le(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub fn (dyn vortex_array::DynArray + '_)::index_len(&self) -> usize +pub fn (dyn vortex_array::Array + '_)::index_len(&self) -> usize -pub fn (dyn vortex_array::DynArray + '_)::index_lt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn (dyn vortex_array::Array + '_)::index_lt(&self, idx: usize, elem: &V) -> 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> @@ -13296,86 +13240,6 @@ pub fn vortex_array::scalar_fn::fns::binary::or_kleene(lhs: &vortex_array::Array 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_array::scalar::Scalar -pub mod vortex_array::scalar_fn::fns::case_when - -pub struct vortex_array::scalar_fn::fns::case_when::CaseWhen - -impl core::clone::Clone for vortex_array::scalar_fn::fns::case_when::CaseWhen - -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::clone(&self) -> vortex_array::scalar_fn::fns::case_when::CaseWhen - -impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::case_when::CaseWhen - -pub type vortex_array::scalar_fn::fns::case_when::CaseWhen::Options = vortex_array::scalar_fn::fns::case_when::CaseWhenOptions - -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::arity(&self, options: &Self::Options) -> vortex_array::scalar_fn::Arity - -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 fn vortex_array::scalar_fn::fns::case_when::CaseWhen::deserialize(&self, metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult - -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::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::scalar_fn::fns::case_when::CaseWhen::id(&self) -> vortex_array::scalar_fn::ScalarFnId - -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::is_fallible(&self, _options: &Self::Options) -> bool - -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::is_null_sensitive(&self, _options: &Self::Options) -> bool - -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::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::scalar_fn::fns::case_when::CaseWhen::serialize(&self, _options: &Self::Options) -> 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 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::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::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::scalar_fn::fns::case_when::CaseWhen::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> - -pub struct vortex_array::scalar_fn::fns::case_when::CaseWhenOptions - -pub vortex_array::scalar_fn::fns::case_when::CaseWhenOptions::has_else: bool - -pub vortex_array::scalar_fn::fns::case_when::CaseWhenOptions::num_when_then_pairs: u32 - -impl vortex_array::scalar_fn::fns::case_when::CaseWhenOptions - -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhenOptions::num_children(&self) -> usize - -impl core::clone::Clone for vortex_array::scalar_fn::fns::case_when::CaseWhenOptions - -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhenOptions::clone(&self) -> vortex_array::scalar_fn::fns::case_when::CaseWhenOptions - -impl core::cmp::Eq for vortex_array::scalar_fn::fns::case_when::CaseWhenOptions - -impl core::cmp::PartialEq for vortex_array::scalar_fn::fns::case_when::CaseWhenOptions - -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhenOptions::eq(&self, other: &vortex_array::scalar_fn::fns::case_when::CaseWhenOptions) -> bool - -impl core::fmt::Debug for vortex_array::scalar_fn::fns::case_when::CaseWhenOptions - -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhenOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result - -impl core::fmt::Display for vortex_array::scalar_fn::fns::case_when::CaseWhenOptions - -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhenOptions::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result - -impl core::hash::Hash for vortex_array::scalar_fn::fns::case_when::CaseWhenOptions - -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhenOptions::hash<__H: core::hash::Hasher>(&self, state: &mut __H) - -impl core::marker::Copy for vortex_array::scalar_fn::fns::case_when::CaseWhenOptions - -impl core::marker::StructuralPartialEq for vortex_array::scalar_fn::fns::case_when::CaseWhenOptions - pub mod vortex_array::scalar_fn::fns::cast pub struct vortex_array::scalar_fn::fns::cast::Cast @@ -13934,7 +13798,7 @@ pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::child_name(&se 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_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_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_fn::fns::list_contains::ListContains::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result @@ -14798,23 +14662,23 @@ pub fn vortex_array::scalar_fn::fns::zip::ZipReduceAdaptor::reduce_parent(&se pub trait vortex_array::scalar_fn::fns::zip::ZipKernel: vortex_array::vtable::VTable -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> - -impl vortex_array::scalar_fn::fns::zip::ZipKernel for vortex_array::arrays::ChunkedVTable - -pub fn vortex_array::arrays::ChunkedVTable::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::scalar_fn::fns::zip::ZipKernel::zip(array: &Self::Array, if_false: &vortex_array::ArrayRef, mask: &vortex_mask::Mask, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> impl vortex_array::scalar_fn::fns::zip::ZipKernel for vortex_array::arrays::StructVTable -pub fn vortex_array::arrays::StructVTable::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::arrays::StructVTable::zip(if_true: &vortex_array::arrays::StructArray, if_false: &vortex_array::ArrayRef, mask: &vortex_mask::Mask, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> impl vortex_array::scalar_fn::fns::zip::ZipKernel for vortex_array::arrays::VarBinViewVTable -pub fn vortex_array::arrays::VarBinViewVTable::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::VarBinViewVTable::zip(if_true: &vortex_array::arrays::VarBinViewArray, if_false: &vortex_array::ArrayRef, mask: &vortex_mask::Mask, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> pub trait vortex_array::scalar_fn::fns::zip::ZipReduce: vortex_array::vtable::VTable -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 fn vortex_array::scalar_fn::fns::zip::ZipReduce::zip(array: &Self::Array, if_false: &vortex_array::ArrayRef, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> + +impl vortex_array::scalar_fn::fns::zip::ZipReduce for vortex_array::arrays::ChunkedVTable + +pub fn vortex_array::arrays::ChunkedVTable::zip(if_true: &vortex_array::arrays::ChunkedArray, if_false: &vortex_array::ArrayRef, mask: &vortex_mask::Mask) -> vortex_error::VortexResult> pub mod vortex_array::scalar_fn::session @@ -15208,42 +15072,6 @@ pub fn vortex_array::scalar_fn::fns::binary::Binary::stat_falsification(&self, o 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::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::case_when::CaseWhen - -pub type vortex_array::scalar_fn::fns::case_when::CaseWhen::Options = vortex_array::scalar_fn::fns::case_when::CaseWhenOptions - -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::arity(&self, options: &Self::Options) -> vortex_array::scalar_fn::Arity - -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 fn vortex_array::scalar_fn::fns::case_when::CaseWhen::deserialize(&self, metadata: &[u8], _session: &vortex_session::VortexSession) -> vortex_error::VortexResult - -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::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::scalar_fn::fns::case_when::CaseWhen::id(&self) -> vortex_array::scalar_fn::ScalarFnId - -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::is_fallible(&self, _options: &Self::Options) -> bool - -pub fn vortex_array::scalar_fn::fns::case_when::CaseWhen::is_null_sensitive(&self, _options: &Self::Options) -> bool - -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::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::scalar_fn::fns::case_when::CaseWhen::serialize(&self, _options: &Self::Options) -> 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 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::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::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::scalar_fn::fns::case_when::CaseWhen::validity(&self, options: &Self::Options, expression: &vortex_array::expr::Expression) -> vortex_error::VortexResult> - impl vortex_array::scalar_fn::ScalarFnVTable for vortex_array::scalar_fn::fns::cast::Cast pub type vortex_array::scalar_fn::fns::cast::Cast::Options = vortex_array::dtype::DType @@ -15470,7 +15298,7 @@ pub fn vortex_array::scalar_fn::fns::list_contains::ListContains::child_name(&se 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_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_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_fn::fns::list_contains::ListContains::fmt_sql(&self, _options: &Self::Options, expr: &vortex_array::expr::Expression, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result @@ -15922,19 +15750,19 @@ pub fn vortex_array::variants::PrimitiveTyped<'_>::index_len(&self) -> usize pub fn vortex_array::variants::PrimitiveTyped<'_>::index_lt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -impl vortex_array::search_sorted::IndexOrd for (dyn vortex_array::DynArray + '_) +impl vortex_array::search_sorted::IndexOrd for (dyn vortex_array::Array + '_) -pub fn (dyn vortex_array::DynArray + '_)::index_cmp(&self, idx: usize, elem: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult> +pub fn (dyn vortex_array::Array + '_)::index_cmp(&self, idx: usize, elem: &vortex_array::scalar::Scalar) -> vortex_error::VortexResult> -pub fn (dyn vortex_array::DynArray + '_)::index_ge(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn (dyn vortex_array::Array + '_)::index_ge(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub fn (dyn vortex_array::DynArray + '_)::index_gt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn (dyn vortex_array::Array + '_)::index_gt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub fn (dyn vortex_array::DynArray + '_)::index_le(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn (dyn vortex_array::Array + '_)::index_le(&self, idx: usize, elem: &V) -> vortex_error::VortexResult -pub fn (dyn vortex_array::DynArray + '_)::index_len(&self) -> usize +pub fn (dyn vortex_array::Array + '_)::index_len(&self) -> usize -pub fn (dyn vortex_array::DynArray + '_)::index_lt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult +pub fn (dyn vortex_array::Array + '_)::index_lt(&self, idx: usize, elem: &V) -> vortex_error::VortexResult impl vortex_array::search_sorted::IndexOrd for [T] @@ -15968,7 +15796,7 @@ pub struct vortex_array::serde::ArrayNodeFlatBuffer<'a> impl<'a> vortex_array::serde::ArrayNodeFlatBuffer<'a> -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::serde::ArrayNodeFlatBuffer<'a>::try_new(ctx: &'a vortex_array::ArrayContext, array: &'a dyn vortex_array::Array) -> vortex_error::VortexResult pub fn vortex_array::serde::ArrayNodeFlatBuffer<'a>::try_write_flatbuffer<'fb>(&self, fbb: &mut flatbuffers::builder::FlatBufferBuilder<'fb>) -> vortex_error::VortexResult>> @@ -16092,7 +15920,7 @@ pub fn vortex_array::stats::ArrayStats::retain(&self, stats: &[vortex_array::exp pub fn vortex_array::stats::ArrayStats::set(&self, stat: vortex_array::expr::stats::Stat, value: vortex_array::expr::stats::Precision) -pub fn vortex_array::stats::ArrayStats::to_ref<'a>(&'a self, array: &'a dyn vortex_array::DynArray) -> vortex_array::stats::StatsSetRef<'a> +pub fn vortex_array::stats::ArrayStats::to_ref<'a>(&'a self, array: &'a dyn vortex_array::Array) -> vortex_array::stats::StatsSetRef<'a> impl core::clone::Clone for vortex_array::stats::ArrayStats @@ -16182,7 +16010,7 @@ pub fn vortex_array::stats::StatsSet::merge_unordered(self, other: &Self, dtype: impl vortex_array::stats::StatsSet -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 fn vortex_array::stats::StatsSet::from_flatbuffer<'a>(fb: &vortex_flatbuffers::array::ArrayStats<'a>, array_dtype: &vortex_array::dtype::DType) -> vortex_error::VortexResult impl core::clone::Clone for vortex_array::stats::StatsSet @@ -16324,7 +16152,7 @@ impl<'__pin, S> core::marker::Unpin for vortex_array::stream::ArrayStreamAdapter impl futures_core::stream::Stream for vortex_array::stream::ArrayStreamAdapter where S: futures_core::stream::Stream> -pub type vortex_array::stream::ArrayStreamAdapter::Item = core::result::Result, vortex_error::VortexError> +pub type vortex_array::stream::ArrayStreamAdapter::Item = core::result::Result, vortex_error::VortexError> pub fn vortex_array::stream::ArrayStreamAdapter::poll_next(self: core::pin::Pin<&mut Self>, cx: &mut core::task::wake::Context<'_>) -> core::task::poll::Poll> @@ -16586,7 +16414,7 @@ pub trait vortex_array::vtable::DynVTable: 'static + vortex_array::vtable::dyn_: 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::vtable::DynVTable::execute(&self, array: &vortex_array::ArrayRef, ctx: &mut vortex_array::ExecutionCtx) -> 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::vtable::DynVTable::execute_parent(&self, array: &vortex_array::ArrayRef, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -16682,7 +16510,7 @@ pub fn vortex_array::vtable::NotSupported::scalar_at(array: & + vortex_array::IntoArray +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 type vortex_array::vtable::VTable::Metadata: core::fmt::Debug @@ -16710,7 +16538,7 @@ pub fn vortex_array::vtable::VTable::deserialize(bytes: &[u8], _dtype: &vortex_a pub fn vortex_array::vtable::VTable::dtype(array: &Self::Array) -> &vortex_array::dtype::DType -pub fn vortex_array::vtable::VTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::vtable::VTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::vtable::VTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -16764,7 +16592,7 @@ pub fn vortex_array::arrays::BoolVTable::deserialize(bytes: &[u8], _dtype: &vort pub fn vortex_array::arrays::BoolVTable::dtype(array: &vortex_array::arrays::BoolArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::BoolVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::BoolVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::BoolVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -16818,7 +16646,7 @@ pub fn vortex_array::arrays::ChunkedVTable::deserialize(_bytes: &[u8], _dtype: & pub fn vortex_array::arrays::ChunkedVTable::dtype(array: &vortex_array::arrays::ChunkedArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::ChunkedVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ChunkedVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::ChunkedVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -16846,13 +16674,13 @@ impl vortex_array::vtable::VTable for vortex_array::arrays::ConstantVTable pub type vortex_array::arrays::ConstantVTable::Array = vortex_array::arrays::ConstantArray -pub type vortex_array::arrays::ConstantVTable::Metadata = vortex_array::scalar::Scalar +pub type vortex_array::arrays::ConstantVTable::Metadata = vortex_array::EmptyMetadata pub type vortex_array::arrays::ConstantVTable::OperationsVTable = vortex_array::arrays::ConstantVTable pub type vortex_array::arrays::ConstantVTable::ValidityVTable = vortex_array::arrays::ConstantVTable -pub fn vortex_array::arrays::ConstantVTable::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::ConstantVTable::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::ConstantVTable::array_eq(array: &vortex_array::arrays::ConstantArray, other: &vortex_array::arrays::ConstantArray, _precision: vortex_array::Precision) -> bool @@ -16862,17 +16690,17 @@ pub fn vortex_array::arrays::ConstantVTable::buffer(array: &vortex_array::arrays pub fn vortex_array::arrays::ConstantVTable::buffer_name(_array: &vortex_array::arrays::ConstantArray, idx: usize) -> core::option::Option -pub fn vortex_array::arrays::ConstantVTable::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::ConstantVTable::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::ConstantVTable::child(_array: &vortex_array::arrays::ConstantArray, idx: usize) -> vortex_array::ArrayRef pub fn vortex_array::arrays::ConstantVTable::child_name(_array: &vortex_array::arrays::ConstantArray, idx: usize) -> alloc::string::String -pub fn vortex_array::arrays::ConstantVTable::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::ConstantVTable::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::ConstantVTable::dtype(array: &vortex_array::arrays::ConstantArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::ConstantVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ConstantVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::ConstantVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -16880,7 +16708,7 @@ pub fn vortex_array::arrays::ConstantVTable::id(_array: &Self::Array) -> vortex_ pub fn vortex_array::arrays::ConstantVTable::len(array: &vortex_array::arrays::ConstantArray) -> usize -pub fn vortex_array::arrays::ConstantVTable::metadata(array: &vortex_array::arrays::ConstantArray) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ConstantVTable::metadata(_array: &vortex_array::arrays::ConstantArray) -> vortex_error::VortexResult pub fn vortex_array::arrays::ConstantVTable::nbuffers(_array: &vortex_array::arrays::ConstantArray) -> usize @@ -16926,7 +16754,7 @@ pub fn vortex_array::arrays::DecimalVTable::deserialize(bytes: &[u8], _dtype: &v pub fn vortex_array::arrays::DecimalVTable::dtype(array: &vortex_array::arrays::DecimalArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::DecimalVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::DecimalVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::DecimalVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -16980,7 +16808,7 @@ pub fn vortex_array::arrays::DictVTable::deserialize(bytes: &[u8], _dtype: &vort pub fn vortex_array::arrays::DictVTable::dtype(array: &vortex_array::arrays::DictArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::DictVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::DictVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::DictVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -17034,7 +16862,7 @@ pub fn vortex_array::arrays::ExtensionVTable::deserialize(_bytes: &[u8], _dtype: pub fn vortex_array::arrays::ExtensionVTable::dtype(array: &vortex_array::arrays::ExtensionArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::ExtensionVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ExtensionVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::ExtensionVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -17088,7 +16916,7 @@ pub fn vortex_array::arrays::FilterVTable::deserialize(_bytes: &[u8], _dtype: &v pub fn vortex_array::arrays::FilterVTable::dtype(array: &vortex_array::arrays::FilterArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::FilterVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FilterVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::FilterVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -17142,7 +16970,7 @@ pub fn vortex_array::arrays::FixedSizeListVTable::deserialize(_bytes: &[u8], _dt pub fn vortex_array::arrays::FixedSizeListVTable::dtype(array: &vortex_array::arrays::FixedSizeListArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::FixedSizeListVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeListVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::FixedSizeListVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -17196,7 +17024,7 @@ pub fn vortex_array::arrays::ListVTable::deserialize(bytes: &[u8], _dtype: &vort pub fn vortex_array::arrays::ListVTable::dtype(array: &vortex_array::arrays::ListArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::ListVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ListVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::ListVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -17250,7 +17078,7 @@ pub fn vortex_array::arrays::ListViewVTable::deserialize(bytes: &[u8], _dtype: & pub fn vortex_array::arrays::ListViewVTable::dtype(array: &vortex_array::arrays::ListViewArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::ListViewVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ListViewVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::ListViewVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -17304,7 +17132,7 @@ pub fn vortex_array::arrays::MaskedVTable::deserialize(_bytes: &[u8], _dtype: &v pub fn vortex_array::arrays::MaskedVTable::dtype(array: &vortex_array::arrays::MaskedArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::MaskedVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::MaskedVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::MaskedVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -17358,7 +17186,7 @@ pub fn vortex_array::arrays::NullVTable::deserialize(_bytes: &[u8], _dtype: &vor pub fn vortex_array::arrays::NullVTable::dtype(_array: &vortex_array::arrays::NullArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::NullVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::NullVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::NullVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -17412,7 +17240,7 @@ pub fn vortex_array::arrays::PrimitiveVTable::deserialize(_bytes: &[u8], _dtype: pub fn vortex_array::arrays::PrimitiveVTable::dtype(array: &vortex_array::arrays::PrimitiveArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::PrimitiveVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::PrimitiveVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::PrimitiveVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -17466,7 +17294,7 @@ pub fn vortex_array::arrays::ScalarFnVTable::deserialize(_bytes: &[u8], _dtype: pub fn vortex_array::arrays::ScalarFnVTable::dtype(array: &vortex_array::arrays::ScalarFnArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::ScalarFnVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ScalarFnVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::ScalarFnVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -17520,7 +17348,7 @@ pub fn vortex_array::arrays::SharedVTable::deserialize(_bytes: &[u8], _dtype: &v pub fn vortex_array::arrays::SharedVTable::dtype(array: &vortex_array::arrays::SharedArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::SharedVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::SharedVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::SharedVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -17574,7 +17402,7 @@ pub fn vortex_array::arrays::SliceVTable::deserialize(_bytes: &[u8], _dtype: &vo pub fn vortex_array::arrays::SliceVTable::dtype(array: &vortex_array::arrays::SliceArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::SliceVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::SliceVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::SliceVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -17628,7 +17456,7 @@ pub fn vortex_array::arrays::StructVTable::deserialize(_bytes: &[u8], _dtype: &v pub fn vortex_array::arrays::StructVTable::dtype(array: &vortex_array::arrays::StructArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::StructVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::StructVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::StructVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -17682,7 +17510,7 @@ pub fn vortex_array::arrays::VarBinVTable::deserialize(bytes: &[u8], _dtype: &vo pub fn vortex_array::arrays::VarBinVTable::dtype(array: &vortex_array::arrays::VarBinArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::VarBinVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinVTable::execute(array: &Self::Array, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::VarBinVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -17736,7 +17564,7 @@ pub fn vortex_array::arrays::VarBinViewVTable::deserialize(_bytes: &[u8], _dtype pub fn vortex_array::arrays::VarBinViewVTable::dtype(array: &vortex_array::arrays::VarBinViewArray) -> &vortex_array::dtype::DType -pub fn vortex_array::arrays::VarBinViewVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinViewVTable::execute(array: &Self::Array, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub fn vortex_array::arrays::VarBinViewVTable::execute_parent(array: &Self::Array, parent: &vortex_array::ArrayRef, child_idx: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult> @@ -17990,9 +17818,9 @@ impl core::clone::Clone for vortex_array::Canonical pub fn vortex_array::Canonical::clone(&self) -> vortex_array::Canonical -impl core::convert::AsRef for vortex_array::Canonical +impl core::convert::AsRef for vortex_array::Canonical -pub fn vortex_array::Canonical::as_ref(&self) -> &(dyn vortex_array::DynArray + 'static) +pub fn vortex_array::Canonical::as_ref(&self) -> &(dyn vortex_array::Array + 'static) impl core::convert::From for vortex_array::ArrayRef @@ -18034,9 +17862,9 @@ pub vortex_array::CanonicalView::Struct(&'a vortex_array::arrays::StructArray) pub vortex_array::CanonicalView::VarBinView(&'a vortex_array::arrays::VarBinViewArray) -impl core::convert::AsRef for vortex_array::CanonicalView<'_> +impl core::convert::AsRef for vortex_array::CanonicalView<'_> -pub fn vortex_array::CanonicalView<'_>::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::CanonicalView<'_>::as_ref(&self) -> &dyn vortex_array::Array impl core::convert::From> for vortex_array::Canonical @@ -18080,9 +17908,25 @@ pub vortex_array::ColumnarView::Canonical(vortex_array::CanonicalView<'a>) pub vortex_array::ColumnarView::Constant(&'a vortex_array::arrays::ConstantArray) -impl<'a> core::convert::AsRef for vortex_array::ColumnarView<'a> +impl<'a> core::convert::AsRef for vortex_array::ColumnarView<'a> -pub fn vortex_array::ColumnarView<'a>::as_ref(&self) -> &dyn vortex_array::DynArray +pub fn vortex_array::ColumnarView<'a>::as_ref(&self) -> &dyn vortex_array::Array + +pub enum vortex_array::ExecutionStep + +pub vortex_array::ExecutionStep::Done(vortex_array::ArrayRef) + +pub vortex_array::ExecutionStep::ExecuteChild(usize, vortex_array::DonePredicate) + +impl vortex_array::ExecutionStep + +pub fn vortex_array::ExecutionStep::done(result: vortex_array::ArrayRef) -> Self + +pub fn vortex_array::ExecutionStep::execute_child(child_idx: usize) -> Self + +impl core::fmt::Debug for vortex_array::ExecutionStep + +pub fn vortex_array::ExecutionStep::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result pub enum vortex_array::Precision @@ -18106,9 +17950,9 @@ impl vortex_array::matcher::Matcher for vortex_array::AnyCanonical pub type vortex_array::AnyCanonical::Match<'a> = vortex_array::CanonicalView<'a> -pub fn vortex_array::AnyCanonical::matches(array: &dyn vortex_array::DynArray) -> bool +pub fn vortex_array::AnyCanonical::matches(array: &dyn vortex_array::Array) -> bool -pub fn vortex_array::AnyCanonical::try_match<'a>(array: &'a dyn vortex_array::DynArray) -> core::option::Option +pub fn vortex_array::AnyCanonical::try_match<'a>(array: &'a dyn vortex_array::Array) -> core::option::Option pub struct vortex_array::AnyColumnar @@ -18116,9 +17960,9 @@ impl vortex_array::matcher::Matcher for vortex_array::AnyColumnar pub type vortex_array::AnyColumnar::Match<'a> = vortex_array::ColumnarView<'a> -pub fn vortex_array::AnyColumnar::matches(array: &dyn vortex_array::DynArray) -> bool +pub fn vortex_array::AnyColumnar::matches(array: &dyn vortex_array::Array) -> bool -pub fn vortex_array::AnyColumnar::try_match<'a>(array: &'a dyn vortex_array::DynArray) -> core::option::Option +pub fn vortex_array::AnyColumnar::try_match<'a>(array: &'a dyn vortex_array::Array) -> core::option::Option #[repr(transparent)] pub struct vortex_array::ArrayAdapter(_) @@ -18130,43 +17974,7 @@ impl core::fmt::Debug for vortex_array::ArrayAd pub fn vortex_array::ArrayAdapter::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl vortex_array::ArrayEq for vortex_array::ArrayAdapter - -pub fn vortex_array::ArrayAdapter::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool - -impl vortex_array::ArrayHash for vortex_array::ArrayAdapter - -pub fn vortex_array::ArrayAdapter::array_hash(&self, state: &mut H, precision: vortex_array::Precision) - -impl vortex_array::ArrayVisitor for vortex_array::ArrayAdapter - -pub fn vortex_array::ArrayAdapter::buffer_handles(&self) -> alloc::vec::Vec - -pub fn vortex_array::ArrayAdapter::buffer_names(&self) -> alloc::vec::Vec - -pub fn vortex_array::ArrayAdapter::buffers(&self) -> alloc::vec::Vec - -pub fn vortex_array::ArrayAdapter::children(&self) -> alloc::vec::Vec - -pub fn vortex_array::ArrayAdapter::children_names(&self) -> alloc::vec::Vec - -pub fn vortex_array::ArrayAdapter::is_host(&self) -> bool - -pub fn vortex_array::ArrayAdapter::metadata(&self) -> vortex_error::VortexResult>> - -pub fn vortex_array::ArrayAdapter::metadata_fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result - -pub fn vortex_array::ArrayAdapter::named_buffers(&self) -> alloc::vec::Vec<(alloc::string::String, vortex_array::buffer::BufferHandle)> - -pub fn vortex_array::ArrayAdapter::named_children(&self) -> alloc::vec::Vec<(alloc::string::String, vortex_array::ArrayRef)> - -pub fn vortex_array::ArrayAdapter::nbuffers(&self) -> usize - -pub fn vortex_array::ArrayAdapter::nchildren(&self) -> usize - -pub fn vortex_array::ArrayAdapter::nth_child(&self, idx: usize) -> core::option::Option - -impl vortex_array::DynArray for vortex_array::ArrayAdapter +impl vortex_array::Array for vortex_array::ArrayAdapter pub fn vortex_array::ArrayAdapter::all_invalid(&self) -> vortex_error::VortexResult @@ -18216,6 +18024,42 @@ pub fn vortex_array::ArrayAdapter::vtable(&self) -> &dyn vortex_array::vtable pub fn vortex_array::ArrayAdapter::with_children(&self, children: alloc::vec::Vec) -> vortex_error::VortexResult +impl vortex_array::ArrayEq for vortex_array::ArrayAdapter + +pub fn vortex_array::ArrayAdapter::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool + +impl vortex_array::ArrayHash for vortex_array::ArrayAdapter + +pub fn vortex_array::ArrayAdapter::array_hash(&self, state: &mut H, precision: vortex_array::Precision) + +impl vortex_array::ArrayVisitor for vortex_array::ArrayAdapter + +pub fn vortex_array::ArrayAdapter::buffer_handles(&self) -> alloc::vec::Vec + +pub fn vortex_array::ArrayAdapter::buffer_names(&self) -> alloc::vec::Vec + +pub fn vortex_array::ArrayAdapter::buffers(&self) -> alloc::vec::Vec + +pub fn vortex_array::ArrayAdapter::children(&self) -> alloc::vec::Vec + +pub fn vortex_array::ArrayAdapter::children_names(&self) -> alloc::vec::Vec + +pub fn vortex_array::ArrayAdapter::is_host(&self) -> bool + +pub fn vortex_array::ArrayAdapter::metadata(&self) -> vortex_error::VortexResult>> + +pub fn vortex_array::ArrayAdapter::metadata_fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +pub fn vortex_array::ArrayAdapter::named_buffers(&self) -> alloc::vec::Vec<(alloc::string::String, vortex_array::buffer::BufferHandle)> + +pub fn vortex_array::ArrayAdapter::named_children(&self) -> alloc::vec::Vec<(alloc::string::String, vortex_array::ArrayRef)> + +pub fn vortex_array::ArrayAdapter::nbuffers(&self) -> usize + +pub fn vortex_array::ArrayAdapter::nchildren(&self) -> usize + +pub fn vortex_array::ArrayAdapter::nth_child(&self, idx: usize) -> core::option::Option + impl vortex_array::scalar_fn::ReduceNode for vortex_array::ArrayAdapter pub fn vortex_array::ArrayAdapter::as_any(&self) -> &dyn core::any::Any @@ -18342,13 +18186,163 @@ pub fn vortex_array::RecursiveCanonical::execute(array: vortex_array::ArrayRef, pub static vortex_array::LEGACY_SESSION: std::sync::lazy_lock::LazyLock +pub trait vortex_array::Array: '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::Array::all_invalid(&self) -> vortex_error::VortexResult + +pub fn vortex_array::Array::all_valid(&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::Array::as_any(&self) -> &dyn core::any::Any + +pub fn vortex_array::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::Array::dtype(&self) -> &vortex_array::dtype::DType + +pub fn vortex_array::Array::encoding_id(&self) -> vortex_array::vtable::ArrayId + +pub fn vortex_array::Array::filter(&self, mask: vortex_mask::Mask) -> vortex_error::VortexResult + +pub fn vortex_array::Array::invalid_count(&self) -> vortex_error::VortexResult + +pub fn vortex_array::Array::is_empty(&self) -> bool + +pub fn vortex_array::Array::is_invalid(&self, index: usize) -> vortex_error::VortexResult + +pub fn vortex_array::Array::is_valid(&self, index: usize) -> vortex_error::VortexResult + +pub fn vortex_array::Array::len(&self) -> usize + +pub fn vortex_array::Array::scalar_at(&self, index: usize) -> vortex_error::VortexResult + +pub fn vortex_array::Array::slice(&self, range: core::ops::range::Range) -> vortex_error::VortexResult + +pub fn vortex_array::Array::statistics(&self) -> vortex_array::stats::StatsSetRef<'_> + +pub fn vortex_array::Array::take(&self, indices: vortex_array::ArrayRef) -> vortex_error::VortexResult + +pub fn vortex_array::Array::to_array(&self) -> vortex_array::ArrayRef + +pub fn vortex_array::Array::to_canonical(&self) -> vortex_error::VortexResult + +pub fn vortex_array::Array::valid_count(&self) -> vortex_error::VortexResult + +pub fn vortex_array::Array::validity(&self) -> vortex_error::VortexResult + +pub fn vortex_array::Array::validity_mask(&self) -> vortex_error::VortexResult + +pub fn vortex_array::Array::vtable(&self) -> &dyn vortex_array::vtable::DynVTable + +pub fn vortex_array::Array::with_children(&self, children: alloc::vec::Vec) -> vortex_error::VortexResult + +impl vortex_array::Array for alloc::sync::Arc + +pub fn alloc::sync::Arc::all_invalid(&self) -> vortex_error::VortexResult + +pub fn alloc::sync::Arc::all_valid(&self) -> 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 alloc::sync::Arc::as_any(&self) -> &dyn core::any::Any + +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 alloc::sync::Arc::dtype(&self) -> &vortex_array::dtype::DType + +pub fn alloc::sync::Arc::encoding_id(&self) -> vortex_array::vtable::ArrayId + +pub fn alloc::sync::Arc::filter(&self, mask: vortex_mask::Mask) -> vortex_error::VortexResult + +pub fn alloc::sync::Arc::invalid_count(&self) -> vortex_error::VortexResult + +pub fn alloc::sync::Arc::is_empty(&self) -> bool + +pub fn alloc::sync::Arc::is_invalid(&self, index: usize) -> vortex_error::VortexResult + +pub fn alloc::sync::Arc::is_valid(&self, index: usize) -> vortex_error::VortexResult + +pub fn alloc::sync::Arc::len(&self) -> usize + +pub fn alloc::sync::Arc::scalar_at(&self, index: usize) -> vortex_error::VortexResult + +pub fn alloc::sync::Arc::slice(&self, range: core::ops::range::Range) -> vortex_error::VortexResult + +pub fn alloc::sync::Arc::statistics(&self) -> vortex_array::stats::StatsSetRef<'_> + +pub fn alloc::sync::Arc::take(&self, indices: vortex_array::ArrayRef) -> vortex_error::VortexResult + +pub fn alloc::sync::Arc::to_array(&self) -> vortex_array::ArrayRef + +pub fn alloc::sync::Arc::to_canonical(&self) -> vortex_error::VortexResult + +pub fn alloc::sync::Arc::valid_count(&self) -> vortex_error::VortexResult + +pub fn alloc::sync::Arc::validity(&self) -> vortex_error::VortexResult + +pub fn alloc::sync::Arc::validity_mask(&self) -> vortex_error::VortexResult + +pub fn alloc::sync::Arc::vtable(&self) -> &dyn vortex_array::vtable::DynVTable + +pub fn alloc::sync::Arc::with_children(&self, children: alloc::vec::Vec) -> vortex_error::VortexResult + +impl vortex_array::Array for vortex_array::ArrayAdapter + +pub fn vortex_array::ArrayAdapter::all_invalid(&self) -> vortex_error::VortexResult + +pub fn vortex_array::ArrayAdapter::all_valid(&self) -> vortex_error::VortexResult + +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::ArrayAdapter::as_any(&self) -> &dyn core::any::Any + +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::ArrayAdapter::dtype(&self) -> &vortex_array::dtype::DType + +pub fn vortex_array::ArrayAdapter::encoding_id(&self) -> vortex_array::vtable::ArrayId + +pub fn vortex_array::ArrayAdapter::filter(&self, mask: vortex_mask::Mask) -> vortex_error::VortexResult + +pub fn vortex_array::ArrayAdapter::invalid_count(&self) -> vortex_error::VortexResult + +pub fn vortex_array::ArrayAdapter::is_empty(&self) -> bool + +pub fn vortex_array::ArrayAdapter::is_invalid(&self, index: usize) -> vortex_error::VortexResult + +pub fn vortex_array::ArrayAdapter::is_valid(&self, index: usize) -> vortex_error::VortexResult + +pub fn vortex_array::ArrayAdapter::len(&self) -> usize + +pub fn vortex_array::ArrayAdapter::scalar_at(&self, index: usize) -> vortex_error::VortexResult + +pub fn vortex_array::ArrayAdapter::slice(&self, range: core::ops::range::Range) -> vortex_error::VortexResult + +pub fn vortex_array::ArrayAdapter::statistics(&self) -> vortex_array::stats::StatsSetRef<'_> + +pub fn vortex_array::ArrayAdapter::take(&self, indices: vortex_array::ArrayRef) -> vortex_error::VortexResult + +pub fn vortex_array::ArrayAdapter::to_array(&self) -> vortex_array::ArrayRef + +pub fn vortex_array::ArrayAdapter::to_canonical(&self) -> vortex_error::VortexResult + +pub fn vortex_array::ArrayAdapter::valid_count(&self) -> vortex_error::VortexResult + +pub fn vortex_array::ArrayAdapter::validity(&self) -> vortex_error::VortexResult + +pub fn vortex_array::ArrayAdapter::validity_mask(&self) -> vortex_error::VortexResult + +pub fn vortex_array::ArrayAdapter::vtable(&self) -> &dyn vortex_array::vtable::DynVTable + +pub fn vortex_array::ArrayAdapter::with_children(&self, children: alloc::vec::Vec) -> vortex_error::VortexResult + pub trait vortex_array::ArrayEq pub fn vortex_array::ArrayEq::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool -impl vortex_array::ArrayEq for (dyn vortex_array::DynArray + '_) +impl vortex_array::ArrayEq for (dyn vortex_array::Array + '_) -pub fn (dyn vortex_array::DynArray + '_)::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool +pub fn (dyn vortex_array::Array + '_)::array_eq(&self, other: &Self, precision: vortex_array::Precision) -> bool impl vortex_array::ArrayEq for vortex_array::ArrayRef @@ -18390,9 +18384,9 @@ pub trait vortex_array::ArrayHash pub fn vortex_array::ArrayHash::array_hash(&self, state: &mut H, precision: vortex_array::Precision) -impl vortex_array::ArrayHash for (dyn vortex_array::DynArray + '_) +impl vortex_array::ArrayHash for (dyn vortex_array::Array + '_) -pub fn (dyn vortex_array::DynArray + '_)::array_hash(&self, state: &mut H, precision: vortex_array::Precision) +pub fn (dyn vortex_array::Array + '_)::array_hash(&self, state: &mut H, precision: vortex_array::Precision) impl vortex_array::ArrayHash for vortex_array::ArrayRef @@ -18458,33 +18452,33 @@ pub fn vortex_array::ArrayVisitor::nchildren(&self) -> usize pub fn vortex_array::ArrayVisitor::nth_child(&self, idx: usize) -> core::option::Option -impl vortex_array::ArrayVisitor for alloc::sync::Arc +impl vortex_array::ArrayVisitor for alloc::sync::Arc -pub fn alloc::sync::Arc::buffer_handles(&self) -> alloc::vec::Vec +pub fn alloc::sync::Arc::buffer_handles(&self) -> alloc::vec::Vec -pub fn alloc::sync::Arc::buffer_names(&self) -> alloc::vec::Vec +pub fn alloc::sync::Arc::buffer_names(&self) -> alloc::vec::Vec -pub fn alloc::sync::Arc::buffers(&self) -> alloc::vec::Vec +pub fn alloc::sync::Arc::buffers(&self) -> alloc::vec::Vec -pub fn alloc::sync::Arc::children(&self) -> alloc::vec::Vec +pub fn alloc::sync::Arc::children(&self) -> alloc::vec::Vec -pub fn alloc::sync::Arc::children_names(&self) -> alloc::vec::Vec +pub fn alloc::sync::Arc::children_names(&self) -> alloc::vec::Vec -pub fn alloc::sync::Arc::is_host(&self) -> bool +pub fn alloc::sync::Arc::is_host(&self) -> bool -pub fn alloc::sync::Arc::metadata(&self) -> vortex_error::VortexResult>> +pub fn alloc::sync::Arc::metadata(&self) -> vortex_error::VortexResult>> -pub fn alloc::sync::Arc::metadata_fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result +pub fn alloc::sync::Arc::metadata_fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -pub fn alloc::sync::Arc::named_buffers(&self) -> alloc::vec::Vec<(alloc::string::String, vortex_array::buffer::BufferHandle)> +pub fn alloc::sync::Arc::named_buffers(&self) -> alloc::vec::Vec<(alloc::string::String, vortex_array::buffer::BufferHandle)> -pub fn alloc::sync::Arc::named_children(&self) -> alloc::vec::Vec<(alloc::string::String, vortex_array::ArrayRef)> +pub fn alloc::sync::Arc::named_children(&self) -> alloc::vec::Vec<(alloc::string::String, vortex_array::ArrayRef)> -pub fn alloc::sync::Arc::nbuffers(&self) -> usize +pub fn alloc::sync::Arc::nbuffers(&self) -> usize -pub fn alloc::sync::Arc::nchildren(&self) -> usize +pub fn alloc::sync::Arc::nchildren(&self) -> usize -pub fn alloc::sync::Arc::nth_child(&self, idx: usize) -> core::option::Option +pub fn alloc::sync::Arc::nth_child(&self, idx: usize) -> core::option::Option impl vortex_array::ArrayVisitor for vortex_array::ArrayAdapter @@ -18514,13 +18508,13 @@ pub fn vortex_array::ArrayAdapter::nchildren(&self) -> usize pub fn vortex_array::ArrayAdapter::nth_child(&self, idx: usize) -> core::option::Option -pub trait vortex_array::ArrayVisitorExt: vortex_array::DynArray +pub trait vortex_array::ArrayVisitorExt: vortex_array::Array pub fn vortex_array::ArrayVisitorExt::depth_first_traversal(&self) -> impl core::iter::traits::iterator::Iterator pub fn vortex_array::ArrayVisitorExt::nbuffers_recursive(&self) -> usize -impl vortex_array::ArrayVisitorExt for A +impl vortex_array::ArrayVisitorExt for A pub fn A::depth_first_traversal(&self) -> impl core::iter::traits::iterator::Iterator @@ -18550,156 +18544,6 @@ pub type vortex_array::ProstMetadata::Output = M pub fn vortex_array::ProstMetadata::deserialize(metadata: &[u8]) -> vortex_error::VortexResult -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::DynArray::all_invalid(&self) -> vortex_error::VortexResult - -pub fn vortex_array::DynArray::all_valid(&self) -> vortex_error::VortexResult - -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 fn vortex_array::DynArray::as_any(&self) -> &dyn core::any::Any - -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 fn vortex_array::DynArray::dtype(&self) -> &vortex_array::dtype::DType - -pub fn vortex_array::DynArray::encoding_id(&self) -> vortex_array::vtable::ArrayId - -pub fn vortex_array::DynArray::filter(&self, mask: vortex_mask::Mask) -> vortex_error::VortexResult - -pub fn vortex_array::DynArray::invalid_count(&self) -> vortex_error::VortexResult - -pub fn vortex_array::DynArray::is_empty(&self) -> bool - -pub fn vortex_array::DynArray::is_invalid(&self, index: usize) -> vortex_error::VortexResult - -pub fn vortex_array::DynArray::is_valid(&self, index: usize) -> vortex_error::VortexResult - -pub fn vortex_array::DynArray::len(&self) -> usize - -pub fn vortex_array::DynArray::scalar_at(&self, index: usize) -> vortex_error::VortexResult - -pub fn vortex_array::DynArray::slice(&self, range: core::ops::range::Range) -> vortex_error::VortexResult - -pub fn vortex_array::DynArray::statistics(&self) -> vortex_array::stats::StatsSetRef<'_> - -pub fn vortex_array::DynArray::take(&self, indices: vortex_array::ArrayRef) -> vortex_error::VortexResult - -pub fn vortex_array::DynArray::to_array(&self) -> vortex_array::ArrayRef - -pub fn vortex_array::DynArray::to_canonical(&self) -> vortex_error::VortexResult - -pub fn vortex_array::DynArray::valid_count(&self) -> vortex_error::VortexResult - -pub fn vortex_array::DynArray::validity(&self) -> vortex_error::VortexResult - -pub fn vortex_array::DynArray::validity_mask(&self) -> vortex_error::VortexResult - -pub fn vortex_array::DynArray::vtable(&self) -> &dyn vortex_array::vtable::DynVTable - -pub fn vortex_array::DynArray::with_children(&self, children: alloc::vec::Vec) -> vortex_error::VortexResult - -impl vortex_array::DynArray for alloc::sync::Arc - -pub fn alloc::sync::Arc::all_invalid(&self) -> vortex_error::VortexResult - -pub fn alloc::sync::Arc::all_valid(&self) -> 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 alloc::sync::Arc::as_any(&self) -> &dyn core::any::Any - -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 alloc::sync::Arc::dtype(&self) -> &vortex_array::dtype::DType - -pub fn alloc::sync::Arc::encoding_id(&self) -> vortex_array::vtable::ArrayId - -pub fn alloc::sync::Arc::filter(&self, mask: vortex_mask::Mask) -> vortex_error::VortexResult - -pub fn alloc::sync::Arc::invalid_count(&self) -> vortex_error::VortexResult - -pub fn alloc::sync::Arc::is_empty(&self) -> bool - -pub fn alloc::sync::Arc::is_invalid(&self, index: usize) -> vortex_error::VortexResult - -pub fn alloc::sync::Arc::is_valid(&self, index: usize) -> vortex_error::VortexResult - -pub fn alloc::sync::Arc::len(&self) -> usize - -pub fn alloc::sync::Arc::scalar_at(&self, index: usize) -> vortex_error::VortexResult - -pub fn alloc::sync::Arc::slice(&self, range: core::ops::range::Range) -> vortex_error::VortexResult - -pub fn alloc::sync::Arc::statistics(&self) -> vortex_array::stats::StatsSetRef<'_> - -pub fn alloc::sync::Arc::take(&self, indices: vortex_array::ArrayRef) -> vortex_error::VortexResult - -pub fn alloc::sync::Arc::to_array(&self) -> vortex_array::ArrayRef - -pub fn alloc::sync::Arc::to_canonical(&self) -> vortex_error::VortexResult - -pub fn alloc::sync::Arc::valid_count(&self) -> vortex_error::VortexResult - -pub fn alloc::sync::Arc::validity(&self) -> vortex_error::VortexResult - -pub fn alloc::sync::Arc::validity_mask(&self) -> vortex_error::VortexResult - -pub fn alloc::sync::Arc::vtable(&self) -> &dyn vortex_array::vtable::DynVTable - -pub fn alloc::sync::Arc::with_children(&self, children: alloc::vec::Vec) -> vortex_error::VortexResult - -impl vortex_array::DynArray for vortex_array::ArrayAdapter - -pub fn vortex_array::ArrayAdapter::all_invalid(&self) -> vortex_error::VortexResult - -pub fn vortex_array::ArrayAdapter::all_valid(&self) -> vortex_error::VortexResult - -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::ArrayAdapter::as_any(&self) -> &dyn core::any::Any - -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::ArrayAdapter::dtype(&self) -> &vortex_array::dtype::DType - -pub fn vortex_array::ArrayAdapter::encoding_id(&self) -> vortex_array::vtable::ArrayId - -pub fn vortex_array::ArrayAdapter::filter(&self, mask: vortex_mask::Mask) -> vortex_error::VortexResult - -pub fn vortex_array::ArrayAdapter::invalid_count(&self) -> vortex_error::VortexResult - -pub fn vortex_array::ArrayAdapter::is_empty(&self) -> bool - -pub fn vortex_array::ArrayAdapter::is_invalid(&self, index: usize) -> vortex_error::VortexResult - -pub fn vortex_array::ArrayAdapter::is_valid(&self, index: usize) -> vortex_error::VortexResult - -pub fn vortex_array::ArrayAdapter::len(&self) -> usize - -pub fn vortex_array::ArrayAdapter::scalar_at(&self, index: usize) -> vortex_error::VortexResult - -pub fn vortex_array::ArrayAdapter::slice(&self, range: core::ops::range::Range) -> vortex_error::VortexResult - -pub fn vortex_array::ArrayAdapter::statistics(&self) -> vortex_array::stats::StatsSetRef<'_> - -pub fn vortex_array::ArrayAdapter::take(&self, indices: vortex_array::ArrayRef) -> vortex_error::VortexResult - -pub fn vortex_array::ArrayAdapter::to_array(&self) -> vortex_array::ArrayRef - -pub fn vortex_array::ArrayAdapter::to_canonical(&self) -> vortex_error::VortexResult - -pub fn vortex_array::ArrayAdapter::valid_count(&self) -> vortex_error::VortexResult - -pub fn vortex_array::ArrayAdapter::validity(&self) -> vortex_error::VortexResult - -pub fn vortex_array::ArrayAdapter::validity_mask(&self) -> vortex_error::VortexResult - -pub fn vortex_array::ArrayAdapter::vtable(&self) -> &dyn vortex_array::vtable::DynVTable - -pub fn vortex_array::ArrayAdapter::with_children(&self, children: alloc::vec::Vec) -> vortex_error::VortexResult - pub trait vortex_array::DynArrayEq: vortex_array::hash::private::SealedEq pub fn vortex_array::DynArrayEq::dyn_array_eq(&self, other: &dyn core::any::Any, precision: vortex_array::Precision) -> bool @@ -18960,7 +18804,7 @@ pub fn vortex_array::ToCanonical::to_struct(&self) -> vortex_array::arrays::Stru pub fn vortex_array::ToCanonical::to_varbinview(&self) -> vortex_array::arrays::VarBinViewArray -impl vortex_array::ToCanonical for A +impl vortex_array::ToCanonical for A pub fn A::to_bool(&self) -> vortex_array::arrays::BoolArray @@ -18990,4 +18834,6 @@ pub fn vortex_session::VortexSession::create_execution_ctx(&self) -> vortex_arra pub type vortex_array::ArrayContext = vortex_session::registry::Context<&'static dyn vortex_array::vtable::DynVTable> -pub type vortex_array::ArrayRef = alloc::sync::Arc +pub type vortex_array::ArrayRef = alloc::sync::Arc + +pub type vortex_array::DonePredicate = fn(&dyn vortex_array::Array) -> bool diff --git a/vortex-array/src/array/mod.rs b/vortex-array/src/array/mod.rs index fc47631f35a..fa141141e33 100644 --- a/vortex-array/src/array/mod.rs +++ b/vortex-array/src/array/mod.rs @@ -353,6 +353,19 @@ impl dyn DynArray + '_ { pub fn is_canonical(&self) -> bool { self.is::() } + + /// Returns a new array with the child at `child_idx` replaced by `replacement`. + pub fn with_child(&self, child_idx: usize, replacement: ArrayRef) -> VortexResult { + let mut children: Vec = self.children(); + vortex_ensure!( + child_idx < children.len(), + "child index {} out of bounds for array with {} children", + child_idx, + children.len() + ); + children[child_idx] = replacement; + self.with_children(children) + } } /// Trait for converting a type into a Vortex [`ArrayRef`]. diff --git a/vortex-array/src/arrays/bool/vtable/mod.rs b/vortex-array/src/arrays/bool/vtable/mod.rs index f935f89236c..9063bd384bc 100644 --- a/vortex-array/src/arrays/bool/vtable/mod.rs +++ b/vortex-array/src/arrays/bool/vtable/mod.rs @@ -12,6 +12,7 @@ use vortex_session::VortexSession; use crate::ArrayRef; use crate::DeserializeMetadata; use crate::ExecutionCtx; +use crate::ExecutionStep; use crate::IntoArray; use crate::ProstMetadata; use crate::SerializeMetadata; @@ -184,8 +185,8 @@ impl VTable for BoolVTable { Ok(()) } - fn execute(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { - Ok(array.clone().into_array()) + fn execute(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { + Ok(ExecutionStep::Done(array.clone().into_array())) } fn reduce_parent( diff --git a/vortex-array/src/arrays/chunked/vtable/mod.rs b/vortex-array/src/arrays/chunked/vtable/mod.rs index ab05f262563..d5b6b6259da 100644 --- a/vortex-array/src/arrays/chunked/vtable/mod.rs +++ b/vortex-array/src/arrays/chunked/vtable/mod.rs @@ -15,6 +15,7 @@ use crate::ArrayRef; use crate::Canonical; use crate::EmptyMetadata; use crate::ExecutionCtx; +use crate::ExecutionStep; use crate::IntoArray; use crate::Precision; use crate::ToCanonical; @@ -239,8 +240,8 @@ impl VTable for ChunkedVTable { Ok(()) } - fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { - Ok(_canonicalize(array, ctx)?.into_array()) + fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { + Ok(ExecutionStep::Done(_canonicalize(array, ctx)?.into_array())) } fn reduce(array: &Self::Array) -> VortexResult> { diff --git a/vortex-array/src/arrays/constant/mod.rs b/vortex-array/src/arrays/constant/mod.rs index bb5bb519401..6aa94ab8565 100644 --- a/vortex-array/src/arrays/constant/mod.rs +++ b/vortex-array/src/arrays/constant/mod.rs @@ -8,7 +8,6 @@ pub use arbitrary::ArbitraryConstantArray; mod array; pub use array::ConstantArray; -pub(crate) use vtable::canonical::constant_canonicalize; pub(crate) mod compute; diff --git a/vortex-array/src/arrays/constant/vtable/mod.rs b/vortex-array/src/arrays/constant/vtable/mod.rs index 14017fd4044..12fee7869d2 100644 --- a/vortex-array/src/arrays/constant/vtable/mod.rs +++ b/vortex-array/src/arrays/constant/vtable/mod.rs @@ -13,6 +13,7 @@ use vortex_session::VortexSession; use crate::ArrayRef; use crate::ExecutionCtx; +use crate::ExecutionStep; use crate::IntoArray; use crate::Precision; use crate::arrays::ConstantArray; @@ -177,8 +178,10 @@ impl VTable for ConstantVTable { PARENT_RULES.evaluate(array, parent, child_idx) } - fn execute(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { - Ok(constant_canonicalize(array)?.into_array()) + fn execute(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { + Ok(ExecutionStep::Done( + constant_canonicalize(array)?.into_array(), + )) } fn append_to_builder( diff --git a/vortex-array/src/arrays/decimal/vtable/mod.rs b/vortex-array/src/arrays/decimal/vtable/mod.rs index 65cc99da536..cdb2ca198e5 100644 --- a/vortex-array/src/arrays/decimal/vtable/mod.rs +++ b/vortex-array/src/arrays/decimal/vtable/mod.rs @@ -13,6 +13,7 @@ use vortex_session::VortexSession; use crate::ArrayRef; use crate::DeserializeMetadata; use crate::ExecutionCtx; +use crate::ExecutionStep; use crate::IntoArray; use crate::ProstMetadata; use crate::SerializeMetadata; @@ -206,8 +207,8 @@ impl VTable for DecimalVTable { Ok(()) } - fn execute(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { - Ok(array.clone().into_array()) + fn execute(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { + Ok(ExecutionStep::Done(array.clone().into_array())) } fn reduce_parent( diff --git a/vortex-array/src/arrays/dict/vtable/mod.rs b/vortex-array/src/arrays/dict/vtable/mod.rs index 6c6555b596a..ffde0e4223b 100644 --- a/vortex-array/src/arrays/dict/vtable/mod.rs +++ b/vortex-array/src/arrays/dict/vtable/mod.rs @@ -29,6 +29,7 @@ use crate::dtype::DType; use crate::dtype::Nullability; use crate::dtype::PType; use crate::executor::ExecutionCtx; +use crate::executor::ExecutionStep; use crate::hash::ArrayEq; use crate::hash::ArrayHash; use crate::scalar::Scalar; @@ -190,9 +191,9 @@ impl VTable for DictVTable { Ok(()) } - fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { if let Some(canonical) = execute_fast_path(array, ctx)? { - return Ok(canonical); + return Ok(ExecutionStep::Done(canonical)); } // TODO(joe): if the values are constant return a constant @@ -208,7 +209,9 @@ impl VTable for DictVTable { // TODO(ngates): if indices min is quite high, we could slice self and offset the indices // such that canonicalize does less work. - Ok(take_canonical(values, &codes, ctx)?.into_array()) + Ok(ExecutionStep::Done( + take_canonical(values, &codes, ctx)?.into_array(), + )) } fn reduce_parent( diff --git a/vortex-array/src/arrays/extension/vtable/mod.rs b/vortex-array/src/arrays/extension/vtable/mod.rs index ceab73b456f..50c60f3624e 100644 --- a/vortex-array/src/arrays/extension/vtable/mod.rs +++ b/vortex-array/src/arrays/extension/vtable/mod.rs @@ -18,6 +18,7 @@ use vortex_session::VortexSession; use crate::ArrayRef; use crate::EmptyMetadata; use crate::ExecutionCtx; +use crate::ExecutionStep; use crate::IntoArray; use crate::Precision; use crate::arrays::extension::ExtensionArray; @@ -149,8 +150,8 @@ impl VTable for ExtensionVTable { Ok(()) } - fn execute(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { - Ok(array.clone().into_array()) + fn execute(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { + Ok(ExecutionStep::Done(array.clone().into_array())) } fn reduce_parent( diff --git a/vortex-array/src/arrays/filter/vtable.rs b/vortex-array/src/arrays/filter/vtable.rs index 23b22612873..28d31c60d2b 100644 --- a/vortex-array/src/arrays/filter/vtable.rs +++ b/vortex-array/src/arrays/filter/vtable.rs @@ -27,6 +27,7 @@ use crate::arrays::filter::rules::RULES; use crate::buffer::BufferHandle; use crate::dtype::DType; use crate::executor::ExecutionCtx; +use crate::executor::ExecutionStep; use crate::scalar::Scalar; use crate::serde::ArrayChildren; use crate::stats::StatsSetRef; @@ -154,9 +155,9 @@ impl VTable for FilterVTable { Ok(()) } - fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { if let Some(canonical) = execute_filter_fast_paths(array, ctx)? { - return Ok(canonical); + return Ok(ExecutionStep::Done(canonical)); } let Mask::Values(mask_values) = &array.mask else { unreachable!("`execute_filter_fast_paths` handles AllTrue and AllFalse") @@ -164,7 +165,9 @@ impl VTable for FilterVTable { // We rely on the optimization pass that runs prior to this execution for filter pushdown, // so now we can just execute the filter without worrying. - Ok(execute_filter(array.child.clone().execute(ctx)?, mask_values).into_array()) + Ok(ExecutionStep::Done( + execute_filter(array.child.clone().execute(ctx)?, mask_values).into_array(), + )) } fn reduce_parent( 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 4544dd976a4..6922bd12e7f 100644 --- a/vortex-array/src/arrays/fixed_size_list/vtable/mod.rs +++ b/vortex-array/src/arrays/fixed_size_list/vtable/mod.rs @@ -13,6 +13,7 @@ use vortex_session::VortexSession; use crate::ArrayRef; use crate::EmptyMetadata; use crate::ExecutionCtx; +use crate::ExecutionStep; use crate::IntoArray; use crate::Precision; use crate::arrays::FixedSizeListArray; @@ -218,7 +219,7 @@ impl VTable for FixedSizeListVTable { Ok(()) } - fn execute(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { - Ok(array.clone().into_array()) + fn execute(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { + Ok(ExecutionStep::Done(array.clone().into_array())) } } diff --git a/vortex-array/src/arrays/list/vtable/mod.rs b/vortex-array/src/arrays/list/vtable/mod.rs index 99c052565b2..55dc40cfa3c 100644 --- a/vortex-array/src/arrays/list/vtable/mod.rs +++ b/vortex-array/src/arrays/list/vtable/mod.rs @@ -13,6 +13,7 @@ use vortex_session::VortexSession; use crate::ArrayRef; use crate::DynArray; use crate::ExecutionCtx; +use crate::ExecutionStep; use crate::IntoArray; use crate::Precision; use crate::ProstMetadata; @@ -210,8 +211,10 @@ impl VTable for ListVTable { Ok(()) } - fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { - Ok(list_view_from_list(array.clone(), ctx)?.into_array()) + fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { + Ok(ExecutionStep::Done( + list_view_from_list(array.clone(), ctx)?.into_array(), + )) } fn execute_parent( diff --git a/vortex-array/src/arrays/listview/vtable/mod.rs b/vortex-array/src/arrays/listview/vtable/mod.rs index cbef285662e..45fd1f96cfb 100644 --- a/vortex-array/src/arrays/listview/vtable/mod.rs +++ b/vortex-array/src/arrays/listview/vtable/mod.rs @@ -13,6 +13,7 @@ use vortex_session::VortexSession; use crate::ArrayRef; use crate::DeserializeMetadata; use crate::ExecutionCtx; +use crate::ExecutionStep; use crate::IntoArray; use crate::Precision; use crate::ProstMetadata; @@ -238,8 +239,8 @@ impl VTable for ListViewVTable { Ok(()) } - fn execute(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { - Ok(array.clone().into_array()) + fn execute(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { + Ok(ExecutionStep::Done(array.clone().into_array())) } fn reduce_parent( diff --git a/vortex-array/src/arrays/masked/vtable/mod.rs b/vortex-array/src/arrays/masked/vtable/mod.rs index 3ba48543c85..e424192b212 100644 --- a/vortex-array/src/arrays/masked/vtable/mod.rs +++ b/vortex-array/src/arrays/masked/vtable/mod.rs @@ -25,6 +25,7 @@ use crate::arrays::masked::mask_validity_canonical; use crate::buffer::BufferHandle; use crate::dtype::DType; use crate::executor::ExecutionCtx; +use crate::executor::ExecutionStep; use crate::hash::ArrayEq; use crate::hash::ArrayHash; use crate::scalar::Scalar; @@ -160,15 +161,15 @@ impl VTable for MaskedVTable { MaskedArray::try_new(child, validity) } - fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: &Self::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( + return Ok(ExecutionStep::Done( ConstantArray::new(Scalar::null(array.dtype().as_nullable()), array.len()) .into_array(), - ); + )); } // NB: We intentionally do NOT have a fast path for `validity_mask.all_true()`. @@ -178,7 +179,9 @@ impl VTable for MaskedVTable { // `AllTrue` masks (no data copying), so there's no benefit. let child = array.child().clone().execute::(ctx)?; - Ok(mask_validity_canonical(child, &validity_mask, ctx)?.into_array()) + Ok(ExecutionStep::Done( + mask_validity_canonical(child, &validity_mask, ctx)?.into_array(), + )) } fn reduce_parent( diff --git a/vortex-array/src/arrays/null/mod.rs b/vortex-array/src/arrays/null/mod.rs index c3549fa9255..5b83164333a 100644 --- a/vortex-array/src/arrays/null/mod.rs +++ b/vortex-array/src/arrays/null/mod.rs @@ -11,6 +11,7 @@ use vortex_session::VortexSession; use crate::ArrayRef; use crate::EmptyMetadata; use crate::ExecutionCtx; +use crate::ExecutionStep; use crate::IntoArray; use crate::Precision; use crate::arrays::null::compute::rules::PARENT_RULES; @@ -131,8 +132,8 @@ impl VTable for NullVTable { PARENT_RULES.evaluate(array, parent, child_idx) } - fn execute(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { - Ok(array.clone().into_array()) + fn execute(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { + Ok(ExecutionStep::Done(array.clone().into_array())) } } diff --git a/vortex-array/src/arrays/primitive/vtable/mod.rs b/vortex-array/src/arrays/primitive/vtable/mod.rs index 479d05bb2d2..3418eb1f822 100644 --- a/vortex-array/src/arrays/primitive/vtable/mod.rs +++ b/vortex-array/src/arrays/primitive/vtable/mod.rs @@ -11,6 +11,7 @@ use vortex_error::vortex_panic; use crate::ArrayRef; use crate::EmptyMetadata; use crate::ExecutionCtx; +use crate::ExecutionStep; use crate::IntoArray; use crate::arrays::PrimitiveArray; use crate::buffer::BufferHandle; @@ -198,8 +199,8 @@ impl VTable for PrimitiveVTable { Ok(()) } - fn execute(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { - Ok(array.clone().into_array()) + fn execute(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { + Ok(ExecutionStep::Done(array.clone().into_array())) } fn reduce_parent( diff --git a/vortex-array/src/arrays/scalar_fn/vtable/mod.rs b/vortex-array/src/arrays/scalar_fn/vtable/mod.rs index 8e1debf9554..c1dca2b3168 100644 --- a/vortex-array/src/arrays/scalar_fn/vtable/mod.rs +++ b/vortex-array/src/arrays/scalar_fn/vtable/mod.rs @@ -30,6 +30,7 @@ use crate::arrays::scalar_fn::rules::RULES; use crate::buffer::BufferHandle; use crate::dtype::DType; use crate::executor::ExecutionCtx; +use crate::executor::ExecutionStep; use crate::expr::Expression; use crate::matcher::Matcher; use crate::scalar_fn; @@ -194,10 +195,10 @@ impl VTable for ScalarFnVTable { Ok(()) } - fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { ctx.log(format_args!("scalar_fn({}): executing", array.scalar_fn)); let args = VecExecutionArgs::new(array.children.clone(), array.len); - array.scalar_fn.execute(&args, ctx) + array.scalar_fn.execute(&args, ctx).map(ExecutionStep::Done) } fn reduce(array: &Self::Array) -> VortexResult> { diff --git a/vortex-array/src/arrays/shared/vtable.rs b/vortex-array/src/arrays/shared/vtable.rs index d79ca3de4d6..9a7ca38b263 100644 --- a/vortex-array/src/arrays/shared/vtable.rs +++ b/vortex-array/src/arrays/shared/vtable.rs @@ -12,6 +12,7 @@ use crate::ArrayRef; use crate::Canonical; use crate::EmptyMetadata; use crate::ExecutionCtx; +use crate::ExecutionStep; use crate::Precision; use crate::arrays::shared::SharedArray; use crate::buffer::BufferHandle; @@ -144,8 +145,10 @@ impl VTable for SharedVTable { Ok(()) } - fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { - array.get_or_compute(|source| source.clone().execute::(ctx)) + fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { + array + .get_or_compute(|source| source.clone().execute::(ctx)) + .map(ExecutionStep::Done) } } impl OperationsVTable for SharedVTable { diff --git a/vortex-array/src/arrays/slice/vtable.rs b/vortex-array/src/arrays/slice/vtable.rs index f90392f0dbb..a8aaafb1d61 100644 --- a/vortex-array/src/arrays/slice/vtable.rs +++ b/vortex-array/src/arrays/slice/vtable.rs @@ -26,6 +26,7 @@ use crate::arrays::slice::rules::PARENT_RULES; use crate::buffer::BufferHandle; use crate::dtype::DType; use crate::executor::ExecutionCtx; +use crate::executor::ExecutionStep; use crate::scalar::Scalar; use crate::serde::ArrayChildren; use crate::stats::StatsSetRef; @@ -154,7 +155,7 @@ impl VTable for SliceVTable { Ok(()) } - fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(array: &Self::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. @@ -162,13 +163,15 @@ impl VTable for SliceVTable { .child .clone() .execute::(ctx)? - .slice(array.slice_range().clone()); + .slice(array.slice_range().clone()) + .map(ExecutionStep::Done); }; // TODO(ngates): we should inline canonical slice logic here. Canonical::from(canonical) .as_ref() .slice(array.range.clone()) + .map(ExecutionStep::Done) } fn reduce_parent( diff --git a/vortex-array/src/arrays/struct_/vtable/mod.rs b/vortex-array/src/arrays/struct_/vtable/mod.rs index ca9f622b83d..df3bb52f2d9 100644 --- a/vortex-array/src/arrays/struct_/vtable/mod.rs +++ b/vortex-array/src/arrays/struct_/vtable/mod.rs @@ -15,6 +15,7 @@ use vortex_session::VortexSession; use crate::ArrayRef; use crate::EmptyMetadata; use crate::ExecutionCtx; +use crate::ExecutionStep; use crate::IntoArray; use crate::arrays::struct_::StructArray; use crate::arrays::struct_::compute::rules::PARENT_RULES; @@ -206,8 +207,8 @@ impl VTable for StructVTable { Ok(()) } - fn execute(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { - Ok(array.clone().into_array()) + fn execute(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { + Ok(ExecutionStep::Done(array.clone().into_array())) } fn reduce_parent( diff --git a/vortex-array/src/arrays/varbin/vtable/mod.rs b/vortex-array/src/arrays/varbin/vtable/mod.rs index 9b3d3a1ec71..369f72b9c10 100644 --- a/vortex-array/src/arrays/varbin/vtable/mod.rs +++ b/vortex-array/src/arrays/varbin/vtable/mod.rs @@ -10,6 +10,7 @@ use vortex_error::vortex_panic; use crate::ArrayRef; use crate::DeserializeMetadata; use crate::ExecutionCtx; +use crate::ExecutionStep; use crate::IntoArray; use crate::ProstMetadata; use crate::SerializeMetadata; @@ -218,8 +219,10 @@ impl VTable for VarBinVTable { PARENT_KERNELS.execute(array, parent, child_idx, ctx) } - fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { - Ok(varbin_to_canonical(array, ctx)?.into_array()) + fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult { + Ok(ExecutionStep::Done( + varbin_to_canonical(array, ctx)?.into_array(), + )) } } diff --git a/vortex-array/src/arrays/varbinview/vtable/mod.rs b/vortex-array/src/arrays/varbinview/vtable/mod.rs index ea958acca37..37dd590b25c 100644 --- a/vortex-array/src/arrays/varbinview/vtable/mod.rs +++ b/vortex-array/src/arrays/varbinview/vtable/mod.rs @@ -17,6 +17,7 @@ use vortex_session::VortexSession; use crate::ArrayRef; use crate::EmptyMetadata; use crate::ExecutionCtx; +use crate::ExecutionStep; use crate::IntoArray; use crate::Precision; use crate::arrays::BinaryView; @@ -242,7 +243,7 @@ impl VTable for VarBinViewVTable { PARENT_KERNELS.execute(array, parent, child_idx, ctx) } - fn execute(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { - Ok(array.clone().into_array()) + fn execute(array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { + Ok(ExecutionStep::Done(array.clone().into_array())) } } diff --git a/vortex-array/src/canonical.rs b/vortex-array/src/canonical.rs index bae2aadc542..7d9fb01ef3b 100644 --- a/vortex-array/src/canonical.rs +++ b/vortex-array/src/canonical.rs @@ -13,7 +13,6 @@ use vortex_error::vortex_ensure; use vortex_error::vortex_panic; use crate::ArrayRef; -use crate::Columnar; use crate::DynArray; use crate::Executable; use crate::ExecutionCtx; @@ -43,7 +42,6 @@ use crate::arrays::StructVTable; use crate::arrays::VarBinViewArray; use crate::arrays::VarBinViewArrayParts; use crate::arrays::VarBinViewVTable; -use crate::arrays::constant_canonicalize; use crate::dtype::DType; use crate::dtype::NativePType; use crate::dtype::Nullability; @@ -518,28 +516,18 @@ impl From for ArrayRef { } } -/// Recursively execute the array until it reaches canonical form. +/// Execute into [`Canonical`] by running `execute_until` with the [`AnyCanonical`] matcher. /// -/// Callers should prefer to execute into `Columnar` if they are able to optimize their use for -/// constant arrays. +/// Unlike executing into [`crate::Columnar`], this will fully expand constant arrays into their +/// canonical form. Callers should prefer to execute into `Columnar` if they are able to optimize +/// their use for constant arrays. impl Executable for Canonical { fn execute(array: ArrayRef, ctx: &mut ExecutionCtx) -> VortexResult { - if let Some(canonical) = array.as_opt::() { - return Ok(canonical.into()); - } - - // Invoke execute directly to avoid logging the call in the execution context. - Ok(match Columnar::execute(array.clone(), ctx)? { - Columnar::Canonical(c) => c, - Columnar::Constant(s) => { - let canonical = constant_canonicalize(&s)?; - canonical - .as_ref() - .statistics() - .inherit_from(array.statistics()); - canonical - } - }) + let result = array.execute_until::(ctx)?; + Ok(result + .as_opt::() + .map(Canonical::from) + .vortex_expect("execute_until:: must return a canonical array")) } } diff --git a/vortex-array/src/columnar.rs b/vortex-array/src/columnar.rs index ebfa8fe9c93..12142c82f8e 100644 --- a/vortex-array/src/columnar.rs +++ b/vortex-array/src/columnar.rs @@ -1,12 +1,8 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors -use std::env::VarError; -use std::sync::LazyLock; - +use vortex_error::VortexExpect; use vortex_error::VortexResult; -use vortex_error::vortex_bail; -use vortex_error::vortex_panic; use crate::AnyCanonical; use crate::ArrayRef; @@ -71,42 +67,20 @@ impl IntoArray for Columnar { } } -/// Executing into a [`Columnar`] is implemented by repeatedly executing the array until we -/// converge on either a constant or canonical. -/// -/// For safety, we will error when the number of execution iterations reaches 128. We may want this -/// to be configurable in the future in case of highly complex array trees, but in practice we -/// don't expect to ever reach this limit. +/// Execute into [`Columnar`] by running `execute_until` with the [`AnyColumnar`] matcher. impl Executable for Columnar { - fn execute(mut array: ArrayRef, 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| { - vortex_panic!("VORTEX_MAX_ITERATIONS is not a valid usize: {e}") - }), - Err(VarError::NotPresent) => 128, - Err(VarError::NotUnicode(_)) => { - vortex_panic!("VORTEX_MAX_ITERATIONS is not a valid unicode string") - } - }); - - for _ in 0..*MAX_ITERATIONS { - // Check for termination conditions - if let Some(constant) = array.as_opt::() { - ctx.log(format_args!("-> constant({})", constant.scalar())); - return Ok(Columnar::Constant(constant.clone())); - } - if let Some(canonical) = array.as_opt::() { - ctx.log(format_args!("-> canonical {}", array)); - return Ok(Columnar::Canonical(canonical.into())); - } - - // Otherwise execute the array one step - array = array.execute(ctx)?; + 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())) + } else { + Ok(Columnar::Canonical( + result + .as_opt::() + .map(Canonical::from) + .vortex_expect("execute_until:: must return a columnar array"), + )) } - - // If we reach here, we exceeded the maximum number of iterations, so error. - vortex_bail!("Exceeded maximum execution iterations while executing to Columnar") } } diff --git a/vortex-array/src/executor.rs b/vortex-array/src/executor.rs index bcb2fc550c7..020b8d61126 100644 --- a/vortex-array/src/executor.rs +++ b/vortex-array/src/executor.rs @@ -1,13 +1,17 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use std::env::VarError; use std::fmt; use std::fmt::Display; use std::sync::Arc; +use std::sync::LazyLock; use std::sync::atomic::AtomicUsize; use vortex_error::VortexExpect; use vortex_error::VortexResult; +use vortex_error::vortex_bail; +use vortex_error::vortex_panic; use vortex_session::VortexSession; use crate::AnyCanonical; @@ -15,6 +19,8 @@ use crate::ArrayRef; use crate::Canonical; use crate::DynArray; use crate::IntoArray; +use crate::matcher::Matcher; +use crate::optimizer::ArrayOptimizer; /// Marker trait for types that an [`ArrayRef`] can be executed into. /// @@ -43,6 +49,110 @@ impl dyn DynArray + '_ { ) -> VortexResult { E::execute(self, ctx) } + + /// Iteratively execute this array until the [`Matcher`] matches, using an explicit work + /// stack. + /// + /// The scheduler repeatedly: + /// 1. Checks if the current array matches `M` — if so, pops the stack or returns. + /// 2. Runs `execute_parent` on each child for child-driven optimizations. + /// 3. Calls `execute` which returns an [`ExecutionStep`]. + /// + /// Note: the returned array may not match `M`. If execution converges to a canonical form + /// that does not match `M`, the canonical array is returned since no further execution + /// progress is possible. + /// + /// 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 { + static MAX_ITERATIONS: LazyLock = + LazyLock::new(|| match std::env::var("VORTEX_MAX_ITERATIONS") { + Ok(val) => val.parse::().unwrap_or_else(|e| { + vortex_panic!("VORTEX_MAX_ITERATIONS is not a valid usize: {e}") + }), + Err(VarError::NotPresent) => 128, + Err(VarError::NotUnicode(_)) => { + vortex_panic!("VORTEX_MAX_ITERATIONS is not a valid unicode string") + } + }); + + let mut current = self.optimize()?; + // Stack frames: (parent, child_idx, done_predicate_for_child) + let mut stack: Vec<(ArrayRef, usize, DonePredicate)> = Vec::new(); + + for _ in 0..*MAX_ITERATIONS { + // Check for termination: use the stack frame's done predicate, or the root matcher. + let is_done = stack + .last() + .map_or(M::matches as DonePredicate, |frame| frame.2); + if is_done(current.as_ref()) { + match stack.pop() { + None => { + ctx.log(format_args!("-> {}", current)); + return Ok(current); + } + Some((parent, child_idx, _)) => { + current = parent.with_child(child_idx, current)?; + current = current.optimize()?; + continue; + } + } + } + + // If we've reached canonical form, we can't execute any further regardless + // of whether the matcher matched. + if AnyCanonical::matches(current.as_ref()) { + match stack.pop() { + None => { + ctx.log(format_args!("-> canonical (unmatched) {}", current)); + return Ok(current); + } + Some((parent, child_idx, _)) => { + current = parent.with_child(child_idx, current)?; + current = current.optimize()?; + continue; + } + } + } + + // Try execute_parent (child-driven optimized execution) + if let Some(rewritten) = try_execute_parent(¤t, ctx)? { + ctx.log(format_args!( + "execute_parent rewrote {} -> {}", + current, rewritten + )); + current = rewritten.optimize()?; + continue; + } + + // Execute the array itself + match current.vtable().execute(¤t, ctx)? { + ExecutionStep::ExecuteChild(i, done) => { + let child = current + .nth_child(i) + .vortex_expect("ExecuteChild index in bounds"); + ctx.log(format_args!( + "ExecuteChild({i}): pushing {}, focusing on {}", + current, child + )); + stack.push((current, i, done)); + current = child.optimize()?; + } + ExecutionStep::Done(result) => { + ctx.log(format_args!("Done: {} -> {}", current, result)); + current = result; + } + } + } + + vortex_bail!( + "Exceeded maximum execution iterations ({}) while executing array", + *MAX_ITERATIONS, + ) + } } /// Execution context for batch CPU compute. @@ -122,10 +232,10 @@ impl Drop for ExecutionCtx { /// /// The execution steps are as follows: /// 0. Check for canonical. -/// 1. Attempt to call `reduce_parent` on each child. -/// 2. Attempt to `reduce` the array with metadata-only optimizations. +/// 1. Attempt to `reduce` the array with metadata-only optimizations. +/// 2. Attempt to call `reduce_parent` on each child. /// 3. Attempt to call `execute_parent` on each child. -/// 4. Call `execute` on the array itself. +/// 4. Call `execute` on the array itself (which returns an [`ExecutionStep`]). /// /// Most users will not call this method directly, instead preferring to specify an executable /// target such as [`crate::Columnar`], [`Canonical`], or any of the canonical array types (such as @@ -182,16 +292,85 @@ impl Executable for ArrayRef { } } - // 4. execute (optimized execution) + // 4. execute (returns an ExecutionStep) ctx.log(format_args!("executing {}", array)); - let array = array + match array.vtable().execute(&array, ctx)? { + ExecutionStep::Done(result) => { + ctx.log(format_args!("-> {}", result.as_ref())); + Ok(result) + } + ExecutionStep::ExecuteChild(i, _) => { + // For single-step execution, handle ExecuteChild by executing the child, + // replacing it, and returning the updated array. + let child = array.nth_child(i).vortex_expect("valid child index"); + let executed_child = child.execute::(ctx)?; + array.with_child(i, executed_child) + } + } + } +} + +/// Try execute_parent on each child of the array. +fn try_execute_parent(array: &ArrayRef, ctx: &mut ExecutionCtx) -> VortexResult> { + for child_idx in 0..array.nchildren() { + let child = array + .nth_child(child_idx) + .vortex_expect("checked nchildren"); + if let Some(result) = child .vtable() - .execute(&array, ctx) - .map(|c| c.into_array())?; - array.statistics().inherit_from(array.statistics()); - ctx.log(format_args!("-> {}", array.as_ref())); + .execute_parent(&child, array, child_idx, ctx)? + { + result.statistics().inherit_from(array.statistics()); + return Ok(Some(result)); + } + } + Ok(None) +} + +/// A predicate that determines when an array has reached a desired form during execution. +pub type DonePredicate = fn(&dyn DynArray) -> bool; + +/// The result of a single execution step on an array encoding. +/// +/// Instead of recursively executing children, encodings return an `ExecutionStep` that tells the +/// scheduler what to do next. This enables the scheduler to manage execution iteratively using +/// an explicit work stack, run cross-step optimizations, and cache shared sub-expressions. +pub enum ExecutionStep { + /// Request that the scheduler execute child at the given index, using the provided + /// [`DonePredicate`] to determine when the child is "done", then replace the child in this + /// array and re-enter execution. + /// + /// Between steps, the scheduler runs reduce/reduce_parent rules to fixpoint, enabling + /// cross-step optimization (e.g., pushing scalar functions through newly-decoded children). + /// + /// Use [`ExecutionStep::execute_child`] instead of constructing this variant directly. + ExecuteChild(usize, DonePredicate), + + /// Execution is complete. The result may be in any encoding — not necessarily canonical. + /// The scheduler will continue executing the result if it has not yet reached the target form. + Done(ArrayRef), +} + +impl ExecutionStep { + /// Request execution of child at `child_idx` until it matches the given [`Matcher`]. + pub fn execute_child(child_idx: usize) -> Self { + ExecutionStep::ExecuteChild(child_idx, M::matches) + } - Ok(array) + /// Signal that execution is complete with the given result. + pub fn done(result: ArrayRef) -> Self { + ExecutionStep::Done(result) + } +} + +impl fmt::Debug for ExecutionStep { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + ExecutionStep::ExecuteChild(idx, _) => { + f.debug_tuple("ExecuteChild").field(idx).finish() + } + ExecutionStep::Done(result) => f.debug_tuple("Done").field(result).finish(), + } } } diff --git a/vortex-array/src/vtable/dyn_.rs b/vortex-array/src/vtable/dyn_.rs index 4b3bad9223a..64ca5e99c50 100644 --- a/vortex-array/src/vtable/dyn_.rs +++ b/vortex-array/src/vtable/dyn_.rs @@ -16,6 +16,7 @@ use vortex_session::VortexSession; use crate::ArrayAdapter; use crate::ArrayRef; use crate::DynArray; +use crate::ExecutionStep; use crate::IntoArray; use crate::buffer::BufferHandle; use crate::dtype::DType; @@ -60,7 +61,7 @@ pub trait DynVTable: 'static + private::Sealed + Send + Sync + Debug { ) -> VortexResult>; /// See [`VTable::execute`] - fn execute(&self, array: &ArrayRef, ctx: &mut ExecutionCtx) -> VortexResult; + fn execute(&self, array: &ArrayRef, ctx: &mut ExecutionCtx) -> VortexResult; /// See [`VTable::execute_parent`] fn execute_parent( @@ -145,29 +146,31 @@ impl DynVTable for ArrayVTableAdapter { Ok(Some(reduced)) } - fn execute(&self, array: &ArrayRef, ctx: &mut ExecutionCtx) -> VortexResult { - let result = V::execute(downcast::(array), ctx)?; - - if cfg!(debug_assertions) { - vortex_ensure!( - result.as_ref().len() == array.len(), - "Result length mismatch for {:?}", - self - ); - vortex_ensure!( - result.as_ref().dtype() == array.dtype(), - "Executed canonical dtype mismatch for {:?}", - self - ); + fn execute(&self, array: &ArrayRef, ctx: &mut ExecutionCtx) -> VortexResult { + let step = V::execute(downcast::(array), ctx)?; + + if let ExecutionStep::Done(ref result) = step { + if cfg!(debug_assertions) { + vortex_ensure!( + result.as_ref().len() == array.len(), + "Result length mismatch for {:?}", + self + ); + vortex_ensure!( + result.as_ref().dtype() == array.dtype(), + "Executed canonical dtype mismatch for {:?}", + self + ); + } + + // TODO(ngates): do we want to do this on every execution? We used to in to_canonical. + result + .as_ref() + .statistics() + .inherit_from(array.statistics()); } - // TODO(ngates): do we want to do this on every execution? We used to in to_canonical. - result - .as_ref() - .statistics() - .inherit_from(array.statistics()); - - Ok(result) + Ok(step) } fn execute_parent( diff --git a/vortex-array/src/vtable/mod.rs b/vortex-array/src/vtable/mod.rs index b8b20c04760..a038a83639a 100644 --- a/vortex-array/src/vtable/mod.rs +++ b/vortex-array/src/vtable/mod.rs @@ -22,6 +22,7 @@ use vortex_session::VortexSession; use crate::ArrayRef; use crate::Canonical; use crate::DynArray; +use crate::ExecutionStep; use crate::IntoArray; use crate::Precision; use crate::arrays::ConstantArray; @@ -180,30 +181,24 @@ pub trait VTable: 'static + Sized + Send + Sync + Debug { /// of children must be expected. fn with_children(array: &mut Self::Array, children: Vec) -> VortexResult<()>; - /// Execute this array to produce an [`ArrayRef`]. + /// Execute this array by returning an [`ExecutionStep`] that tells the scheduler what to + /// do next. + /// + /// Instead of recursively executing children, implementations should return + /// [`ExecutionStep::ExecuteChild(i)`] to request that the scheduler execute a child first, + /// or [`ExecutionStep::Done(result)`] when the + /// encoding can produce a result directly. /// /// Array execution is designed such that repeated execution of an array will eventually /// converge to a canonical representation. Implementations of this function should therefore /// ensure they make progress towards that goal. /// - /// This includes fully evaluating the array, such us decoding run-end encoding, or executing - /// one of the array's children and re-building the array with the executed child. - /// - /// It is recommended to only perform a single step of execution per call to this function, - /// such that surrounding arrays have an opportunity to perform their own parent reduction - /// or execution logic. - /// - /// The returned array must be logically equivalent to the input array. In other words, the - /// recursively canonicalized forms of both arrays must be equal. + /// The returned array (in `Done`) must be logically equivalent to the input array. In other + /// words, the recursively canonicalized forms of both arrays must be equal. /// /// Debug builds will panic if the returned array is of the wrong type, wrong length, or /// incorrectly contains null values. - /// - // TODO(ngates): in the future, we may pass a "target encoding hint" such that this array - // can produce a more optimal representation for the parent. This could be used to preserve - // varbin vs varbinview or list vs listview encodings when the parent knows it prefers - // one representation over another, such as when exporting to a specific Arrow array. - fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult; + fn execute(array: &Self::Array, ctx: &mut ExecutionCtx) -> VortexResult; /// Attempt to execute the parent of this array. /// diff --git a/vortex-python/src/arrays/py/vtable.rs b/vortex-python/src/arrays/py/vtable.rs index 83ebfa226cf..be3b2ad26a3 100644 --- a/vortex-python/src/arrays/py/vtable.rs +++ b/vortex-python/src/arrays/py/vtable.rs @@ -10,6 +10,7 @@ use pyo3::prelude::*; use pyo3::types::PyBytes; use vortex::array::ArrayRef; use vortex::array::ExecutionCtx; +use vortex::array::ExecutionStep; use vortex::array::Precision; use vortex::array::RawMetadata; use vortex::array::SerializeMetadata; @@ -155,7 +156,7 @@ impl VTable for PythonVTable { Ok(()) } - fn execute(_array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { + fn execute(_array: &Self::Array, _ctx: &mut ExecutionCtx) -> VortexResult { todo!() } }