diff --git a/encodings/alp/public-api.lock b/encodings/alp/public-api.lock index 3dabbc742b3..8d69a2296b9 100644 --- a/encodings/alp/public-api.lock +++ b/encodings/alp/public-api.lock @@ -102,7 +102,7 @@ pub fn vortex_alp::ALP::with_children(array: &mut Self::Array, children: alloc:: impl vortex_array::vtable::operations::OperationsVTable for vortex_alp::ALP -pub fn vortex_alp::ALP::scalar_at(array: &vortex_alp::ALPArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_alp::ALP::scalar_at(array: &vortex_alp::ALPArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::validity::ValidityChild for vortex_alp::ALP @@ -266,7 +266,7 @@ pub fn vortex_alp::ALPRD::with_children(array: &mut Self::Array, children: alloc impl vortex_array::vtable::operations::OperationsVTable for vortex_alp::ALPRD -pub fn vortex_alp::ALPRD::scalar_at(array: &vortex_alp::ALPRDArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_alp::ALPRD::scalar_at(array: &vortex_alp::ALPRDArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::validity::ValidityChild for vortex_alp::ALPRD diff --git a/encodings/alp/src/alp/ops.rs b/encodings/alp/src/alp/ops.rs index 37eab087d60..2877e2cb264 100644 --- a/encodings/alp/src/alp/ops.rs +++ b/encodings/alp/src/alp/ops.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ExecutionCtx; use vortex_array::scalar::Scalar; use vortex_array::vtable::OperationsVTable; use vortex_error::VortexExpect; @@ -12,7 +13,7 @@ use crate::ALPFloat; use crate::match_each_alp_float_ptype; impl OperationsVTable for ALP { - fn scalar_at(array: &ALPArray, index: usize) -> VortexResult { + fn scalar_at(array: &ALPArray, index: usize, _ctx: &mut ExecutionCtx) -> VortexResult { if let Some(patches) = array.patches() && let Some(patch) = patches.get_patched(index)? { diff --git a/encodings/alp/src/alp_rd/ops.rs b/encodings/alp/src/alp_rd/ops.rs index 7b4b0ad45dd..e27434a7979 100644 --- a/encodings/alp/src/alp_rd/ops.rs +++ b/encodings/alp/src/alp_rd/ops.rs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::DynArray; +use vortex_array::ExecutionCtx; use vortex_array::scalar::Scalar; use vortex_array::vtable::OperationsVTable; use vortex_error::VortexExpect; @@ -11,7 +12,11 @@ use crate::ALPRD; use crate::ALPRDArray; impl OperationsVTable for ALPRD { - fn scalar_at(array: &ALPRDArray, index: usize) -> VortexResult { + fn scalar_at( + array: &ALPRDArray, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { // The left value can either be a direct value, or an exception. // The exceptions array represents exception positions with non-null values. let maybe_patched_value = match array.left_parts_patches() { diff --git a/encodings/bytebool/public-api.lock b/encodings/bytebool/public-api.lock index 09ad3233a3d..860c57307fe 100644 --- a/encodings/bytebool/public-api.lock +++ b/encodings/bytebool/public-api.lock @@ -84,7 +84,7 @@ pub fn vortex_bytebool::ByteBool::with_children(array: &mut Self::Array, childre impl vortex_array::vtable::operations::OperationsVTable for vortex_bytebool::ByteBool -pub fn vortex_bytebool::ByteBool::scalar_at(array: &vortex_bytebool::ByteBoolArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_bytebool::ByteBool::scalar_at(array: &vortex_bytebool::ByteBoolArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult pub struct vortex_bytebool::ByteBoolArray diff --git a/encodings/bytebool/src/array.rs b/encodings/bytebool/src/array.rs index 37cedf941b5..8e9a7939fd8 100644 --- a/encodings/bytebool/src/array.rs +++ b/encodings/bytebool/src/array.rs @@ -266,7 +266,11 @@ impl ValidityHelper for ByteBoolArray { } impl OperationsVTable for ByteBool { - fn scalar_at(array: &ByteBoolArray, index: usize) -> VortexResult { + fn scalar_at( + array: &ByteBoolArray, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { Ok(Scalar::bool( array.buffer.as_host()[index] == 1, array.dtype().nullability(), diff --git a/encodings/datetime-parts/public-api.lock b/encodings/datetime-parts/public-api.lock index a4880f57a75..6651c16f5bf 100644 --- a/encodings/datetime-parts/public-api.lock +++ b/encodings/datetime-parts/public-api.lock @@ -92,7 +92,7 @@ pub fn vortex_datetime_parts::DateTimeParts::with_children(array: &mut Self::Arr impl vortex_array::vtable::operations::OperationsVTable for vortex_datetime_parts::DateTimeParts -pub fn vortex_datetime_parts::DateTimeParts::scalar_at(array: &vortex_datetime_parts::DateTimePartsArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_datetime_parts::DateTimeParts::scalar_at(array: &vortex_datetime_parts::DateTimePartsArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::validity::ValidityChild for vortex_datetime_parts::DateTimeParts diff --git a/encodings/datetime-parts/src/ops.rs b/encodings/datetime-parts/src/ops.rs index 7cc1e2fe902..167829b2fe0 100644 --- a/encodings/datetime-parts/src/ops.rs +++ b/encodings/datetime-parts/src/ops.rs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::DynArray; +use vortex_array::ExecutionCtx; use vortex_array::dtype::DType; use vortex_array::extension::datetime::Timestamp; use vortex_array::scalar::Scalar; @@ -16,7 +17,11 @@ use crate::timestamp; use crate::timestamp::TimestampParts; impl OperationsVTable for DateTimeParts { - fn scalar_at(array: &DateTimePartsArray, index: usize) -> VortexResult { + fn scalar_at( + array: &DateTimePartsArray, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { let DType::Extension(ext) = array.dtype().clone() else { vortex_panic!( "DateTimePartsArray must have extension dtype, found {}", diff --git a/encodings/decimal-byte-parts/public-api.lock b/encodings/decimal-byte-parts/public-api.lock index f300b2efd71..fc37dfbdf09 100644 --- a/encodings/decimal-byte-parts/public-api.lock +++ b/encodings/decimal-byte-parts/public-api.lock @@ -92,7 +92,7 @@ pub fn vortex_decimal_byte_parts::DecimalByteParts::with_children(array: &mut Se impl vortex_array::vtable::operations::OperationsVTable for vortex_decimal_byte_parts::DecimalByteParts -pub fn vortex_decimal_byte_parts::DecimalByteParts::scalar_at(array: &vortex_decimal_byte_parts::DecimalBytePartsArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_decimal_byte_parts::DecimalByteParts::scalar_at(array: &vortex_decimal_byte_parts::DecimalBytePartsArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::validity::ValidityChild for vortex_decimal_byte_parts::DecimalByteParts 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 0d41fe2bb22..281b9a131d2 100644 --- a/encodings/decimal-byte-parts/src/decimal_byte_parts/mod.rs +++ b/encodings/decimal-byte-parts/src/decimal_byte_parts/mod.rs @@ -307,7 +307,11 @@ fn to_canonical_decimal( } impl OperationsVTable for DecimalByteParts { - fn scalar_at(array: &DecimalBytePartsArray, index: usize) -> VortexResult { + fn scalar_at( + array: &DecimalBytePartsArray, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { // TODO(joe): support parts len != 1 let scalar = array.msp.scalar_at(index)?; diff --git a/encodings/fastlanes/public-api.lock b/encodings/fastlanes/public-api.lock index 83f2e4a573c..b32bcad0a19 100644 --- a/encodings/fastlanes/public-api.lock +++ b/encodings/fastlanes/public-api.lock @@ -202,7 +202,7 @@ pub fn vortex_fastlanes::BitPacked::with_children(array: &mut Self::Array, child impl vortex_array::vtable::operations::OperationsVTable for vortex_fastlanes::BitPacked -pub fn vortex_fastlanes::BitPacked::scalar_at(array: &vortex_fastlanes::BitPackedArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_fastlanes::BitPacked::scalar_at(array: &vortex_fastlanes::BitPackedArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult pub struct vortex_fastlanes::BitPackedArray @@ -356,7 +356,7 @@ pub fn vortex_fastlanes::Delta::with_children(array: &mut Self::Array, children: impl vortex_array::vtable::operations::OperationsVTable for vortex_fastlanes::Delta -pub fn vortex_fastlanes::Delta::scalar_at(array: &vortex_fastlanes::DeltaArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_fastlanes::Delta::scalar_at(array: &vortex_fastlanes::DeltaArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::validity::ValidityVTable for vortex_fastlanes::Delta @@ -502,7 +502,7 @@ pub fn vortex_fastlanes::FoR::with_children(array: &mut Self::Array, children: a impl vortex_array::vtable::operations::OperationsVTable for vortex_fastlanes::FoR -pub fn vortex_fastlanes::FoR::scalar_at(array: &vortex_fastlanes::FoRArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_fastlanes::FoR::scalar_at(array: &vortex_fastlanes::FoRArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::validity::ValidityChild for vortex_fastlanes::FoR @@ -632,7 +632,7 @@ pub fn vortex_fastlanes::RLE::with_children(array: &mut Self::Array, children: a impl vortex_array::vtable::operations::OperationsVTable for vortex_fastlanes::RLE -pub fn vortex_fastlanes::RLE::scalar_at(array: &vortex_fastlanes::RLEArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_fastlanes::RLE::scalar_at(array: &vortex_fastlanes::RLEArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::validity::ValidityChild for vortex_fastlanes::RLE diff --git a/encodings/fastlanes/src/bitpacking/vtable/operations.rs b/encodings/fastlanes/src/bitpacking/vtable/operations.rs index 0afcf03186b..da791e11f2a 100644 --- a/encodings/fastlanes/src/bitpacking/vtable/operations.rs +++ b/encodings/fastlanes/src/bitpacking/vtable/operations.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ExecutionCtx; use vortex_array::scalar::Scalar; use vortex_array::vtable::OperationsVTable; use vortex_error::VortexResult; @@ -10,7 +11,11 @@ use crate::BitPackedArray; use crate::bitpack_decompress; impl OperationsVTable for BitPacked { - fn scalar_at(array: &BitPackedArray, index: usize) -> VortexResult { + fn scalar_at( + array: &BitPackedArray, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { Ok( if let Some(patches) = array.patches() && let Some(patch) = patches.get_patched(index)? diff --git a/encodings/fastlanes/src/delta/vtable/operations.rs b/encodings/fastlanes/src/delta/vtable/operations.rs index f691cb5018e..91e7501b308 100644 --- a/encodings/fastlanes/src/delta/vtable/operations.rs +++ b/encodings/fastlanes/src/delta/vtable/operations.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ExecutionCtx; use vortex_array::ToCanonical; use vortex_array::scalar::Scalar; use vortex_array::vtable::OperationsVTable; @@ -10,7 +11,11 @@ use super::Delta; use crate::DeltaArray; impl OperationsVTable for Delta { - fn scalar_at(array: &DeltaArray, index: usize) -> VortexResult { + fn scalar_at( + array: &DeltaArray, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { let decompressed = array.slice(index..index + 1)?.to_primitive(); decompressed.scalar_at(0) } diff --git a/encodings/fastlanes/src/for/vtable/operations.rs b/encodings/fastlanes/src/for/vtable/operations.rs index 83c6e15fbf0..21f0fed5da9 100644 --- a/encodings/fastlanes/src/for/vtable/operations.rs +++ b/encodings/fastlanes/src/for/vtable/operations.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ExecutionCtx; use vortex_array::match_each_integer_ptype; use vortex_array::scalar::Scalar; use vortex_array::vtable::OperationsVTable; @@ -11,7 +12,7 @@ use super::FoR; use crate::FoRArray; impl OperationsVTable for FoR { - fn scalar_at(array: &FoRArray, index: usize) -> VortexResult { + fn scalar_at(array: &FoRArray, index: usize, _ctx: &mut ExecutionCtx) -> VortexResult { let encoded_pvalue = array.encoded().scalar_at(index)?; let encoded_pvalue = encoded_pvalue.as_primitive(); let reference = array.reference_scalar(); diff --git a/encodings/fastlanes/src/rle/vtable/operations.rs b/encodings/fastlanes/src/rle/vtable/operations.rs index 9807e36950a..9f00432c727 100644 --- a/encodings/fastlanes/src/rle/vtable/operations.rs +++ b/encodings/fastlanes/src/rle/vtable/operations.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ExecutionCtx; use vortex_array::scalar::Scalar; use vortex_array::vtable::OperationsVTable; use vortex_error::VortexExpect; @@ -11,7 +12,7 @@ use crate::FL_CHUNK_SIZE; use crate::RLEArray; impl OperationsVTable for RLE { - fn scalar_at(array: &RLEArray, index: usize) -> VortexResult { + fn scalar_at(array: &RLEArray, index: usize, _ctx: &mut ExecutionCtx) -> VortexResult { let offset_in_chunk = array.offset(); let chunk_relative_idx = array.indices().scalar_at(offset_in_chunk + index)?; diff --git a/encodings/fsst/public-api.lock b/encodings/fsst/public-api.lock index a500a228f9b..108e987bc3d 100644 --- a/encodings/fsst/public-api.lock +++ b/encodings/fsst/public-api.lock @@ -94,7 +94,7 @@ pub fn vortex_fsst::FSST::with_children(array: &mut Self::Array, children: alloc impl vortex_array::vtable::operations::OperationsVTable for vortex_fsst::FSST -pub fn vortex_fsst::FSST::scalar_at(array: &vortex_fsst::FSSTArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_fsst::FSST::scalar_at(array: &vortex_fsst::FSSTArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::validity::ValidityChild for vortex_fsst::FSST diff --git a/encodings/fsst/src/ops.rs b/encodings/fsst/src/ops.rs index daf66baa061..ba6c709d65e 100644 --- a/encodings/fsst/src/ops.rs +++ b/encodings/fsst/src/ops.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ExecutionCtx; use vortex_array::arrays::varbin::varbin_scalar; use vortex_array::scalar::Scalar; use vortex_array::vtable::OperationsVTable; @@ -12,7 +13,7 @@ use crate::FSST; use crate::FSSTArray; impl OperationsVTable for FSST { - fn scalar_at(array: &FSSTArray, index: usize) -> VortexResult { + fn scalar_at(array: &FSSTArray, index: usize, _ctx: &mut ExecutionCtx) -> VortexResult { let compressed = array.codes().scalar_at(index)?; let binary_datum = compressed.as_binary().value().vortex_expect("non-null"); diff --git a/encodings/pco/public-api.lock b/encodings/pco/public-api.lock index d83d4d68cd2..87b571f97eb 100644 --- a/encodings/pco/public-api.lock +++ b/encodings/pco/public-api.lock @@ -74,7 +74,7 @@ pub fn vortex_pco::Pco::with_children(array: &mut Self::Array, children: alloc:: impl vortex_array::vtable::operations::OperationsVTable for vortex_pco::Pco -pub fn vortex_pco::Pco::scalar_at(array: &vortex_pco::PcoArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_pco::Pco::scalar_at(array: &vortex_pco::PcoArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult pub struct vortex_pco::PcoArray diff --git a/encodings/pco/src/array.rs b/encodings/pco/src/array.rs index ad3ef76b60a..e2156eb106a 100644 --- a/encodings/pco/src/array.rs +++ b/encodings/pco/src/array.rs @@ -573,7 +573,7 @@ impl ValiditySliceHelper for PcoArray { } impl OperationsVTable for Pco { - fn scalar_at(array: &PcoArray, index: usize) -> VortexResult { + fn scalar_at(array: &PcoArray, index: usize, _ctx: &mut ExecutionCtx) -> VortexResult { let mut ctx = LEGACY_SESSION.create_execution_ctx(); array ._slice(index, index + 1) diff --git a/encodings/runend/public-api.lock b/encodings/runend/public-api.lock index 867bd1d4c47..6068b3bebc7 100644 --- a/encodings/runend/public-api.lock +++ b/encodings/runend/public-api.lock @@ -104,7 +104,7 @@ pub fn vortex_runend::RunEnd::with_children(array: &mut Self::Array, children: a impl vortex_array::vtable::operations::OperationsVTable for vortex_runend::RunEnd -pub fn vortex_runend::RunEnd::scalar_at(array: &vortex_runend::RunEndArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_runend::RunEnd::scalar_at(array: &vortex_runend::RunEndArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::validity::ValidityVTable for vortex_runend::RunEnd diff --git a/encodings/runend/src/ops.rs b/encodings/runend/src/ops.rs index b26ee6978a7..098f4b35051 100644 --- a/encodings/runend/src/ops.rs +++ b/encodings/runend/src/ops.rs @@ -2,6 +2,7 @@ // SPDX-FileCopyrightText: Copyright the Vortex contributors use vortex_array::ArrayRef; +use vortex_array::ExecutionCtx; use vortex_array::scalar::PValue; use vortex_array::scalar::Scalar; use vortex_array::search_sorted::SearchResult; @@ -14,7 +15,11 @@ use crate::RunEnd; use crate::RunEndArray; impl OperationsVTable for RunEnd { - fn scalar_at(array: &RunEndArray, index: usize) -> VortexResult { + fn scalar_at( + array: &RunEndArray, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { array.values().scalar_at(array.find_physical_index(index)?) } } diff --git a/encodings/sequence/public-api.lock b/encodings/sequence/public-api.lock index 5e11ee48bbf..8ebc2bcd2a6 100644 --- a/encodings/sequence/public-api.lock +++ b/encodings/sequence/public-api.lock @@ -92,7 +92,7 @@ pub fn vortex_sequence::Sequence::with_children(_array: &mut Self::Array, childr impl vortex_array::vtable::operations::OperationsVTable for vortex_sequence::Sequence -pub fn vortex_sequence::Sequence::scalar_at(array: &vortex_sequence::SequenceArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_sequence::Sequence::scalar_at(array: &vortex_sequence::SequenceArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::validity::ValidityVTable for vortex_sequence::Sequence diff --git a/encodings/sequence/src/array.rs b/encodings/sequence/src/array.rs index 9171f05e6ca..f39ca5d39b0 100644 --- a/encodings/sequence/src/array.rs +++ b/encodings/sequence/src/array.rs @@ -409,7 +409,11 @@ impl VTable for Sequence { } impl OperationsVTable for Sequence { - fn scalar_at(array: &SequenceArray, index: usize) -> VortexResult { + fn scalar_at( + array: &SequenceArray, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { Scalar::try_new( array.dtype().clone(), Some(ScalarValue::Primitive(array.index_value(index))), diff --git a/encodings/sparse/public-api.lock b/encodings/sparse/public-api.lock index a2023a04521..3ca8ebe0d89 100644 --- a/encodings/sparse/public-api.lock +++ b/encodings/sparse/public-api.lock @@ -108,7 +108,7 @@ pub fn vortex_sparse::Sparse::with_children(array: &mut Self::Array, children: a impl vortex_array::vtable::operations::OperationsVTable for vortex_sparse::Sparse -pub fn vortex_sparse::Sparse::scalar_at(array: &vortex_sparse::SparseArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_sparse::Sparse::scalar_at(array: &vortex_sparse::SparseArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::validity::ValidityVTable for vortex_sparse::Sparse diff --git a/encodings/sparse/src/ops.rs b/encodings/sparse/src/ops.rs index cc55df387c6..7371298a5f4 100644 --- a/encodings/sparse/src/ops.rs +++ b/encodings/sparse/src/ops.rs @@ -1,6 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::ExecutionCtx; use vortex_array::scalar::Scalar; use vortex_array::vtable::OperationsVTable; use vortex_error::VortexResult; @@ -9,7 +10,11 @@ use crate::Sparse; use crate::SparseArray; impl OperationsVTable for Sparse { - fn scalar_at(array: &SparseArray, index: usize) -> VortexResult { + fn scalar_at( + array: &SparseArray, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { Ok(array .patches() .get_patched(index)? diff --git a/encodings/zigzag/public-api.lock b/encodings/zigzag/public-api.lock index 6a337d79bbc..d60b175a07a 100644 --- a/encodings/zigzag/public-api.lock +++ b/encodings/zigzag/public-api.lock @@ -88,7 +88,7 @@ pub fn vortex_zigzag::ZigZag::with_children(array: &mut Self::Array, children: a impl vortex_array::vtable::operations::OperationsVTable for vortex_zigzag::ZigZag -pub fn vortex_zigzag::ZigZag::scalar_at(array: &vortex_zigzag::ZigZagArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_zigzag::ZigZag::scalar_at(array: &vortex_zigzag::ZigZagArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::validity::ValidityChild for vortex_zigzag::ZigZag diff --git a/encodings/zigzag/src/array.rs b/encodings/zigzag/src/array.rs index e0fdc2203b7..92ee5ebf41e 100644 --- a/encodings/zigzag/src/array.rs +++ b/encodings/zigzag/src/array.rs @@ -223,7 +223,11 @@ impl ZigZagArray { } impl OperationsVTable for ZigZag { - fn scalar_at(array: &ZigZagArray, index: usize) -> VortexResult { + fn scalar_at( + array: &ZigZagArray, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { let scalar = array.encoded().scalar_at(index)?; if scalar.is_null() { return scalar.primitive_reinterpret_cast(array.ptype()); diff --git a/encodings/zstd/public-api.lock b/encodings/zstd/public-api.lock index 144f0cb570d..66f39e12542 100644 --- a/encodings/zstd/public-api.lock +++ b/encodings/zstd/public-api.lock @@ -74,7 +74,7 @@ pub fn vortex_zstd::Zstd::with_children(array: &mut Self::Array, children: alloc impl vortex_array::vtable::operations::OperationsVTable for vortex_zstd::Zstd -pub fn vortex_zstd::Zstd::scalar_at(array: &vortex_zstd::ZstdArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_zstd::Zstd::scalar_at(array: &vortex_zstd::ZstdArray, index: usize, _ctx: &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult pub struct vortex_zstd::ZstdArray diff --git a/encodings/zstd/src/array.rs b/encodings/zstd/src/array.rs index bd9950cbc04..579f0bc7a23 100644 --- a/encodings/zstd/src/array.rs +++ b/encodings/zstd/src/array.rs @@ -962,7 +962,7 @@ impl ValiditySliceHelper for ZstdArray { } impl OperationsVTable for Zstd { - fn scalar_at(array: &ZstdArray, index: usize) -> VortexResult { + fn scalar_at(array: &ZstdArray, index: usize, _ctx: &mut ExecutionCtx) -> VortexResult { let mut ctx = LEGACY_SESSION.create_execution_ctx(); array ._slice(index, index + 1) diff --git a/encodings/zstd/src/zstd_buffers.rs b/encodings/zstd/src/zstd_buffers.rs index 0f9dee83e66..138c3ae285f 100644 --- a/encodings/zstd/src/zstd_buffers.rs +++ b/encodings/zstd/src/zstd_buffers.rs @@ -481,7 +481,11 @@ impl VTable for ZstdBuffers { } impl OperationsVTable for ZstdBuffers { - fn scalar_at(array: &ZstdBuffersArray, index: usize) -> VortexResult { + fn scalar_at( + array: &ZstdBuffersArray, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { // TODO(os): maybe we should not support scalar_at, it is really slow, and adding a cache // layer here is weird. Valid use of zstd buffers array would be by executing it first into // canonical diff --git a/vortex-array/public-api.lock b/vortex-array/public-api.lock index 88bdca80481..c1978e34477 100644 --- a/vortex-array/public-api.lock +++ b/vortex-array/public-api.lock @@ -888,7 +888,7 @@ pub fn vortex_array::arrays::Bool::mask(array: &vortex_array::arrays::BoolArray, impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Bool -pub fn vortex_array::arrays::Bool::scalar_at(array: &vortex_array::arrays::BoolArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Bool::scalar_at(array: &vortex_array::arrays::BoolArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::Bool @@ -1104,7 +1104,7 @@ pub fn vortex_array::arrays::Chunked::zip(if_true: &vortex_array::arrays::Chunke impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Chunked -pub fn vortex_array::arrays::Chunked::scalar_at(array: &vortex_array::arrays::ChunkedArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Chunked::scalar_at(array: &vortex_array::arrays::ChunkedArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::Chunked @@ -1278,7 +1278,7 @@ pub fn vortex_array::arrays::Constant::invert(array: &vortex_array::arrays::Cons impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Constant -pub fn vortex_array::arrays::Constant::scalar_at(array: &vortex_array::arrays::ConstantArray, _index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Constant::scalar_at(array: &vortex_array::arrays::ConstantArray, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::Constant @@ -1492,7 +1492,7 @@ pub fn vortex_array::arrays::Decimal::mask(array: &vortex_array::arrays::Decimal impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Decimal -pub fn vortex_array::arrays::Decimal::scalar_at(array: &vortex_array::arrays::DecimalArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Decimal::scalar_at(array: &vortex_array::arrays::DecimalArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::Decimal @@ -1708,7 +1708,7 @@ pub fn vortex_array::arrays::dict::Dict::mask(array: &vortex_array::arrays::dict impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::dict::Dict::scalar_at(array: &vortex_array::arrays::dict::DictArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::scalar_at(array: &vortex_array::arrays::dict::DictArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::dict::Dict @@ -1818,7 +1818,7 @@ pub fn vortex_array::arrays::dict::Dict::mask(array: &vortex_array::arrays::dict impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::dict::Dict::scalar_at(array: &vortex_array::arrays::dict::DictArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::scalar_at(array: &vortex_array::arrays::dict::DictArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::dict::Dict @@ -2122,7 +2122,7 @@ pub fn vortex_array::arrays::Extension::mask(array: &vortex_array::arrays::Exten impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Extension -pub fn vortex_array::arrays::Extension::scalar_at(array: &vortex_array::arrays::ExtensionArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Extension::scalar_at(array: &vortex_array::arrays::ExtensionArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::Extension @@ -2266,7 +2266,7 @@ pub fn vortex_array::arrays::Filter::fmt(&self, f: &mut core::fmt::Formatter<'_> impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Filter -pub fn vortex_array::arrays::Filter::scalar_at(array: &vortex_array::arrays::FilterArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Filter::scalar_at(array: &vortex_array::arrays::FilterArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::Filter @@ -2490,7 +2490,7 @@ pub fn vortex_array::arrays::FixedSizeList::mask(array: &vortex_array::arrays::F impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::FixedSizeList -pub fn vortex_array::arrays::FixedSizeList::scalar_at(array: &vortex_array::arrays::FixedSizeListArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::scalar_at(array: &vortex_array::arrays::FixedSizeListArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::FixedSizeList @@ -2646,7 +2646,7 @@ pub fn vortex_array::arrays::List::mask(array: &vortex_array::arrays::ListArray, impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::List -pub fn vortex_array::arrays::List::scalar_at(array: &vortex_array::arrays::ListArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::scalar_at(array: &vortex_array::arrays::ListArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::List @@ -2822,7 +2822,7 @@ pub fn vortex_array::arrays::ListView::mask(array: &vortex_array::arrays::ListVi impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::ListView -pub fn vortex_array::arrays::ListView::scalar_at(array: &vortex_array::arrays::ListViewArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ListView::scalar_at(array: &vortex_array::arrays::ListViewArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::ListView @@ -3008,7 +3008,7 @@ pub fn vortex_array::arrays::Masked::mask(array: &vortex_array::arrays::MaskedAr impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Masked -pub fn vortex_array::arrays::Masked::scalar_at(array: &vortex_array::arrays::MaskedArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Masked::scalar_at(array: &vortex_array::arrays::MaskedArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::Masked @@ -3154,7 +3154,7 @@ pub fn vortex_array::arrays::null::Null::mask(array: &vortex_array::arrays::null impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::null::Null -pub fn vortex_array::arrays::null::Null::scalar_at(_array: &vortex_array::arrays::null::NullArray, _index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::scalar_at(_array: &vortex_array::arrays::null::NullArray, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::null::Null @@ -3372,7 +3372,7 @@ pub fn vortex_array::arrays::Primitive::mask(array: &vortex_array::arrays::Primi impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Primitive -pub fn vortex_array::arrays::Primitive::scalar_at(array: &vortex_array::arrays::PrimitiveArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Primitive::scalar_at(array: &vortex_array::arrays::PrimitiveArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::Primitive @@ -3682,7 +3682,7 @@ pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::fmt(&self, f: &mut core: impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::scalar_fn::ScalarFnVTable -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::scalar_at(array: &vortex_array::arrays::scalar_fn::ScalarFnArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::scalar_at(array: &vortex_array::arrays::scalar_fn::ScalarFnArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::scalar_fn::ScalarFnVTable @@ -3770,7 +3770,7 @@ pub fn vortex_array::arrays::Shared::fmt(&self, f: &mut core::fmt::Formatter<'_> impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Shared -pub fn vortex_array::arrays::Shared::scalar_at(array: &vortex_array::arrays::SharedArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Shared::scalar_at(array: &vortex_array::arrays::SharedArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::Shared @@ -3896,7 +3896,7 @@ pub fn vortex_array::arrays::slice::Slice::slice(array: &Self::Array, range: cor impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::slice::Slice -pub fn vortex_array::arrays::slice::Slice::scalar_at(array: &vortex_array::arrays::slice::SliceArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::slice::Slice::scalar_at(array: &vortex_array::arrays::slice::SliceArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::slice::Slice @@ -4158,7 +4158,7 @@ pub fn vortex_array::arrays::Struct::zip(if_true: &vortex_array::arrays::StructA impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Struct -pub fn vortex_array::arrays::Struct::scalar_at(array: &vortex_array::arrays::StructArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Struct::scalar_at(array: &vortex_array::arrays::StructArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::Struct @@ -4382,7 +4382,7 @@ pub fn vortex_array::arrays::VarBin::mask(array: &vortex_array::arrays::VarBinAr impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::VarBin -pub fn vortex_array::arrays::VarBin::scalar_at(array: &vortex_array::arrays::VarBinArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBin::scalar_at(array: &vortex_array::arrays::VarBinArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::VarBin @@ -4792,7 +4792,7 @@ pub fn vortex_array::arrays::VarBinView::zip(if_true: &vortex_array::arrays::Var impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::VarBinView -pub fn vortex_array::arrays::VarBinView::scalar_at(array: &vortex_array::arrays::VarBinViewArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinView::scalar_at(array: &vortex_array::arrays::VarBinViewArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::VarBinView @@ -4990,7 +4990,7 @@ pub fn vortex_array::arrays::Variant::fmt(&self, f: &mut core::fmt::Formatter<'_ impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Variant -pub fn vortex_array::arrays::Variant::scalar_at(array: &::Array, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::scalar_at(array: &::Array, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::Variant @@ -5138,7 +5138,7 @@ pub fn vortex_array::arrays::Bool::mask(array: &vortex_array::arrays::BoolArray, impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Bool -pub fn vortex_array::arrays::Bool::scalar_at(array: &vortex_array::arrays::BoolArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Bool::scalar_at(array: &vortex_array::arrays::BoolArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::Bool @@ -5326,7 +5326,7 @@ pub fn vortex_array::arrays::Chunked::zip(if_true: &vortex_array::arrays::Chunke impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Chunked -pub fn vortex_array::arrays::Chunked::scalar_at(array: &vortex_array::arrays::ChunkedArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Chunked::scalar_at(array: &vortex_array::arrays::ChunkedArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::Chunked @@ -5498,7 +5498,7 @@ pub fn vortex_array::arrays::Constant::invert(array: &vortex_array::arrays::Cons impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Constant -pub fn vortex_array::arrays::Constant::scalar_at(array: &vortex_array::arrays::ConstantArray, _index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Constant::scalar_at(array: &vortex_array::arrays::ConstantArray, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::Constant @@ -5648,7 +5648,7 @@ pub fn vortex_array::arrays::Decimal::mask(array: &vortex_array::arrays::Decimal impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Decimal -pub fn vortex_array::arrays::Decimal::scalar_at(array: &vortex_array::arrays::DecimalArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Decimal::scalar_at(array: &vortex_array::arrays::DecimalArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::Decimal @@ -5832,7 +5832,7 @@ pub fn vortex_array::arrays::dict::Dict::mask(array: &vortex_array::arrays::dict impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::dict::Dict::scalar_at(array: &vortex_array::arrays::dict::DictArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::scalar_at(array: &vortex_array::arrays::dict::DictArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::dict::Dict @@ -5994,7 +5994,7 @@ pub fn vortex_array::arrays::Extension::mask(array: &vortex_array::arrays::Exten impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Extension -pub fn vortex_array::arrays::Extension::scalar_at(array: &vortex_array::arrays::ExtensionArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Extension::scalar_at(array: &vortex_array::arrays::ExtensionArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::Extension @@ -6136,7 +6136,7 @@ pub fn vortex_array::arrays::Filter::fmt(&self, f: &mut core::fmt::Formatter<'_> impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Filter -pub fn vortex_array::arrays::Filter::scalar_at(array: &vortex_array::arrays::FilterArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Filter::scalar_at(array: &vortex_array::arrays::FilterArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::Filter @@ -6276,7 +6276,7 @@ pub fn vortex_array::arrays::FixedSizeList::mask(array: &vortex_array::arrays::F impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::FixedSizeList -pub fn vortex_array::arrays::FixedSizeList::scalar_at(array: &vortex_array::arrays::FixedSizeListArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::scalar_at(array: &vortex_array::arrays::FixedSizeListArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::FixedSizeList @@ -6430,7 +6430,7 @@ pub fn vortex_array::arrays::List::mask(array: &vortex_array::arrays::ListArray, impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::List -pub fn vortex_array::arrays::List::scalar_at(array: &vortex_array::arrays::ListArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::scalar_at(array: &vortex_array::arrays::ListArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::List @@ -6584,7 +6584,7 @@ pub fn vortex_array::arrays::ListView::mask(array: &vortex_array::arrays::ListVi impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::ListView -pub fn vortex_array::arrays::ListView::scalar_at(array: &vortex_array::arrays::ListViewArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ListView::scalar_at(array: &vortex_array::arrays::ListViewArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::ListView @@ -6750,7 +6750,7 @@ pub fn vortex_array::arrays::Masked::mask(array: &vortex_array::arrays::MaskedAr impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Masked -pub fn vortex_array::arrays::Masked::scalar_at(array: &vortex_array::arrays::MaskedArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Masked::scalar_at(array: &vortex_array::arrays::MaskedArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::Masked @@ -6892,7 +6892,7 @@ pub fn vortex_array::arrays::null::Null::mask(array: &vortex_array::arrays::null impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::null::Null -pub fn vortex_array::arrays::null::Null::scalar_at(_array: &vortex_array::arrays::null::NullArray, _index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::scalar_at(_array: &vortex_array::arrays::null::NullArray, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::null::Null @@ -7042,7 +7042,7 @@ pub fn vortex_array::arrays::Primitive::mask(array: &vortex_array::arrays::Primi impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Primitive -pub fn vortex_array::arrays::Primitive::scalar_at(array: &vortex_array::arrays::PrimitiveArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Primitive::scalar_at(array: &vortex_array::arrays::PrimitiveArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::Primitive @@ -7278,7 +7278,7 @@ pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::fmt(&self, f: &mut core: impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::scalar_fn::ScalarFnVTable -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::scalar_at(array: &vortex_array::arrays::scalar_fn::ScalarFnArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::scalar_at(array: &vortex_array::arrays::scalar_fn::ScalarFnArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::scalar_fn::ScalarFnVTable @@ -7356,7 +7356,7 @@ pub fn vortex_array::arrays::Shared::fmt(&self, f: &mut core::fmt::Formatter<'_> impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Shared -pub fn vortex_array::arrays::Shared::scalar_at(array: &vortex_array::arrays::SharedArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Shared::scalar_at(array: &vortex_array::arrays::SharedArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::Shared @@ -7480,7 +7480,7 @@ pub fn vortex_array::arrays::slice::Slice::slice(array: &Self::Array, range: cor impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::slice::Slice -pub fn vortex_array::arrays::slice::Slice::scalar_at(array: &vortex_array::arrays::slice::SliceArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::slice::Slice::scalar_at(array: &vortex_array::arrays::slice::SliceArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::slice::Slice @@ -7624,7 +7624,7 @@ pub fn vortex_array::arrays::Struct::zip(if_true: &vortex_array::arrays::StructA impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Struct -pub fn vortex_array::arrays::Struct::scalar_at(array: &vortex_array::arrays::StructArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Struct::scalar_at(array: &vortex_array::arrays::StructArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::Struct @@ -7872,7 +7872,7 @@ pub fn vortex_array::arrays::VarBin::mask(array: &vortex_array::arrays::VarBinAr impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::VarBin -pub fn vortex_array::arrays::VarBin::scalar_at(array: &vortex_array::arrays::VarBinArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBin::scalar_at(array: &vortex_array::arrays::VarBinArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::VarBin @@ -8096,7 +8096,7 @@ pub fn vortex_array::arrays::VarBinView::zip(if_true: &vortex_array::arrays::Var impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::VarBinView -pub fn vortex_array::arrays::VarBinView::scalar_at(array: &vortex_array::arrays::VarBinViewArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinView::scalar_at(array: &vortex_array::arrays::VarBinViewArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::VarBinView @@ -8282,7 +8282,7 @@ pub fn vortex_array::arrays::Variant::fmt(&self, f: &mut core::fmt::Formatter<'_ impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Variant -pub fn vortex_array::arrays::Variant::scalar_at(array: &::Array, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::scalar_at(array: &::Array, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::VTable for vortex_array::arrays::Variant @@ -20834,7 +20834,7 @@ pub struct vortex_array::vtable::NotSupported impl vortex_array::vtable::OperationsVTable for vortex_array::vtable::NotSupported -pub fn vortex_array::vtable::NotSupported::scalar_at(array: &::Array, _index: usize) -> vortex_error::VortexResult +pub fn vortex_array::vtable::NotSupported::scalar_at(array: &::Array, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub struct vortex_array::vtable::ValidityVTableFromChild @@ -22070,91 +22070,91 @@ pub fn V::with_children(&self, array: &vortex_array::ArrayRef, children: alloc:: pub trait vortex_array::vtable::OperationsVTable -pub fn vortex_array::vtable::OperationsVTable::scalar_at(array: &::Array, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::vtable::OperationsVTable::scalar_at(array: &::Array, index: usize, ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Bool -pub fn vortex_array::arrays::Bool::scalar_at(array: &vortex_array::arrays::BoolArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Bool::scalar_at(array: &vortex_array::arrays::BoolArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Chunked -pub fn vortex_array::arrays::Chunked::scalar_at(array: &vortex_array::arrays::ChunkedArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Chunked::scalar_at(array: &vortex_array::arrays::ChunkedArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Constant -pub fn vortex_array::arrays::Constant::scalar_at(array: &vortex_array::arrays::ConstantArray, _index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Constant::scalar_at(array: &vortex_array::arrays::ConstantArray, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Decimal -pub fn vortex_array::arrays::Decimal::scalar_at(array: &vortex_array::arrays::DecimalArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Decimal::scalar_at(array: &vortex_array::arrays::DecimalArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Extension -pub fn vortex_array::arrays::Extension::scalar_at(array: &vortex_array::arrays::ExtensionArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Extension::scalar_at(array: &vortex_array::arrays::ExtensionArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Filter -pub fn vortex_array::arrays::Filter::scalar_at(array: &vortex_array::arrays::FilterArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Filter::scalar_at(array: &vortex_array::arrays::FilterArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::FixedSizeList -pub fn vortex_array::arrays::FixedSizeList::scalar_at(array: &vortex_array::arrays::FixedSizeListArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::FixedSizeList::scalar_at(array: &vortex_array::arrays::FixedSizeListArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::List -pub fn vortex_array::arrays::List::scalar_at(array: &vortex_array::arrays::ListArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::List::scalar_at(array: &vortex_array::arrays::ListArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::ListView -pub fn vortex_array::arrays::ListView::scalar_at(array: &vortex_array::arrays::ListViewArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::ListView::scalar_at(array: &vortex_array::arrays::ListViewArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Masked -pub fn vortex_array::arrays::Masked::scalar_at(array: &vortex_array::arrays::MaskedArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Masked::scalar_at(array: &vortex_array::arrays::MaskedArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Primitive -pub fn vortex_array::arrays::Primitive::scalar_at(array: &vortex_array::arrays::PrimitiveArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Primitive::scalar_at(array: &vortex_array::arrays::PrimitiveArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Shared -pub fn vortex_array::arrays::Shared::scalar_at(array: &vortex_array::arrays::SharedArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Shared::scalar_at(array: &vortex_array::arrays::SharedArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Struct -pub fn vortex_array::arrays::Struct::scalar_at(array: &vortex_array::arrays::StructArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Struct::scalar_at(array: &vortex_array::arrays::StructArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::VarBin -pub fn vortex_array::arrays::VarBin::scalar_at(array: &vortex_array::arrays::VarBinArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBin::scalar_at(array: &vortex_array::arrays::VarBinArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::VarBinView -pub fn vortex_array::arrays::VarBinView::scalar_at(array: &vortex_array::arrays::VarBinViewArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::VarBinView::scalar_at(array: &vortex_array::arrays::VarBinViewArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::Variant -pub fn vortex_array::arrays::Variant::scalar_at(array: &::Array, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::Variant::scalar_at(array: &::Array, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::dict::Dict -pub fn vortex_array::arrays::dict::Dict::scalar_at(array: &vortex_array::arrays::dict::DictArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::dict::Dict::scalar_at(array: &vortex_array::arrays::dict::DictArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::null::Null -pub fn vortex_array::arrays::null::Null::scalar_at(_array: &vortex_array::arrays::null::NullArray, _index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::null::Null::scalar_at(_array: &vortex_array::arrays::null::NullArray, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::scalar_fn::ScalarFnVTable -pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::scalar_at(array: &vortex_array::arrays::scalar_fn::ScalarFnArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::scalar_fn::ScalarFnVTable::scalar_at(array: &vortex_array::arrays::scalar_fn::ScalarFnArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::OperationsVTable for vortex_array::arrays::slice::Slice -pub fn vortex_array::arrays::slice::Slice::scalar_at(array: &vortex_array::arrays::slice::SliceArray, index: usize) -> vortex_error::VortexResult +pub fn vortex_array::arrays::slice::Slice::scalar_at(array: &vortex_array::arrays::slice::SliceArray, index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult impl vortex_array::vtable::OperationsVTable for vortex_array::vtable::NotSupported -pub fn vortex_array::vtable::NotSupported::scalar_at(array: &::Array, _index: usize) -> vortex_error::VortexResult +pub fn vortex_array::vtable::NotSupported::scalar_at(array: &::Array, _index: usize, _ctx: &mut vortex_array::ExecutionCtx) -> vortex_error::VortexResult pub trait vortex_array::vtable::VTable: 'static + core::clone::Clone + core::marker::Sized + core::marker::Send + core::marker::Sync + core::fmt::Debug diff --git a/vortex-array/src/array/mod.rs b/vortex-array/src/array/mod.rs index 94cd6f1d628..910b67fe7b1 100644 --- a/vortex-array/src/array/mod.rs +++ b/vortex-array/src/array/mod.rs @@ -501,7 +501,11 @@ impl DynArray for Array { if self.is_invalid(index)? { return Ok(Scalar::null(self.dtype.clone())); } - let scalar = >::scalar_at(&self.array, index)?; + let scalar = >::scalar_at( + &self.array, + index, + &mut LEGACY_SESSION.create_execution_ctx(), + )?; vortex_ensure!(&self.dtype == scalar.dtype(), "Scalar dtype mismatch"); Ok(scalar) } @@ -913,7 +917,9 @@ impl DynArray for ArrayAdapter { if self.is_invalid(index)? { return Ok(Scalar::null(self.dtype().clone())); } - let scalar = >::scalar_at(&self.0, index)?; + let mut ctx = LEGACY_SESSION.create_execution_ctx(); + let scalar = + >::scalar_at(&self.0, index, &mut ctx)?; vortex_ensure!(self.dtype() == scalar.dtype(), "Scalar dtype mismatch"); Ok(scalar) } diff --git a/vortex-array/src/arrays/bool/vtable/operations.rs b/vortex-array/src/arrays/bool/vtable/operations.rs index 7ce7b17eb34..7688d90bab5 100644 --- a/vortex-array/src/arrays/bool/vtable/operations.rs +++ b/vortex-array/src/arrays/bool/vtable/operations.rs @@ -3,13 +3,14 @@ use vortex_error::VortexResult; +use crate::ExecutionCtx; use crate::arrays::Bool; use crate::arrays::bool::vtable::BoolArray; use crate::scalar::Scalar; use crate::vtable::OperationsVTable; impl OperationsVTable for Bool { - fn scalar_at(array: &BoolArray, index: usize) -> VortexResult { + fn scalar_at(array: &BoolArray, index: usize, _ctx: &mut ExecutionCtx) -> VortexResult { Ok(Scalar::bool( array.to_bit_buffer().value(index), array.dtype().nullability(), diff --git a/vortex-array/src/arrays/chunked/vtable/operations.rs b/vortex-array/src/arrays/chunked/vtable/operations.rs index 5b6d77f401b..d5362013790 100644 --- a/vortex-array/src/arrays/chunked/vtable/operations.rs +++ b/vortex-array/src/arrays/chunked/vtable/operations.rs @@ -4,13 +4,18 @@ use vortex_error::VortexResult; use crate::DynArray; +use crate::ExecutionCtx; use crate::arrays::Chunked; use crate::arrays::chunked::vtable::ChunkedArray; use crate::scalar::Scalar; use crate::vtable::OperationsVTable; impl OperationsVTable for Chunked { - fn scalar_at(array: &ChunkedArray, index: usize) -> VortexResult { + fn scalar_at( + array: &ChunkedArray, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { let (chunk_index, chunk_offset) = array.find_chunk_idx(index)?; array.chunk(chunk_index).scalar_at(chunk_offset) } diff --git a/vortex-array/src/arrays/constant/vtable/operations.rs b/vortex-array/src/arrays/constant/vtable/operations.rs index 254d0bc3ada..7e0c1c939a4 100644 --- a/vortex-array/src/arrays/constant/vtable/operations.rs +++ b/vortex-array/src/arrays/constant/vtable/operations.rs @@ -3,13 +3,18 @@ use vortex_error::VortexResult; +use crate::ExecutionCtx; use crate::arrays::Constant; use crate::arrays::constant::vtable::ConstantArray; use crate::scalar::Scalar; use crate::vtable::OperationsVTable; impl OperationsVTable for Constant { - fn scalar_at(array: &ConstantArray, _index: usize) -> VortexResult { + fn scalar_at( + array: &ConstantArray, + _index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { Ok(array.scalar.clone()) } } diff --git a/vortex-array/src/arrays/decimal/vtable/operations.rs b/vortex-array/src/arrays/decimal/vtable/operations.rs index c6db9bbd152..a64be6bd393 100644 --- a/vortex-array/src/arrays/decimal/vtable/operations.rs +++ b/vortex-array/src/arrays/decimal/vtable/operations.rs @@ -3,6 +3,7 @@ use vortex_error::VortexResult; +use crate::ExecutionCtx; use crate::arrays::Decimal; use crate::arrays::decimal::vtable::DecimalArray; use crate::match_each_decimal_value_type; @@ -11,7 +12,11 @@ use crate::scalar::Scalar; use crate::vtable::OperationsVTable; impl OperationsVTable for Decimal { - fn scalar_at(array: &DecimalArray, index: usize) -> VortexResult { + fn scalar_at( + array: &DecimalArray, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { Ok(match_each_decimal_value_type!(array.values_type(), |D| { Scalar::decimal( DecimalValue::from(array.buffer::()[index]), diff --git a/vortex-array/src/arrays/dict/vtable/operations.rs b/vortex-array/src/arrays/dict/vtable/operations.rs index c2465f001d9..9fe33e8b9a3 100644 --- a/vortex-array/src/arrays/dict/vtable/operations.rs +++ b/vortex-array/src/arrays/dict/vtable/operations.rs @@ -6,12 +6,13 @@ use vortex_error::VortexResult; use super::Dict; use crate::DynArray; +use crate::ExecutionCtx; use crate::arrays::DictArray; use crate::scalar::Scalar; use crate::vtable::OperationsVTable; impl OperationsVTable for Dict { - fn scalar_at(array: &DictArray, index: usize) -> VortexResult { + fn scalar_at(array: &DictArray, index: usize, _ctx: &mut ExecutionCtx) -> VortexResult { let Some(dict_index) = array .codes() .scalar_at(index)? diff --git a/vortex-array/src/arrays/extension/vtable/operations.rs b/vortex-array/src/arrays/extension/vtable/operations.rs index df5df3611e6..eb5dd056633 100644 --- a/vortex-array/src/arrays/extension/vtable/operations.rs +++ b/vortex-array/src/arrays/extension/vtable/operations.rs @@ -4,13 +4,18 @@ use vortex_error::VortexResult; use crate::DynArray; +use crate::ExecutionCtx; use crate::arrays::Extension; use crate::arrays::ExtensionArray; use crate::scalar::Scalar; use crate::vtable::OperationsVTable; impl OperationsVTable for Extension { - fn scalar_at(array: &ExtensionArray, index: usize) -> VortexResult { + fn scalar_at( + array: &ExtensionArray, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { Ok(Scalar::extension_ref( array.ext_dtype().clone(), array.storage_array().scalar_at(index)?, diff --git a/vortex-array/src/arrays/filter/vtable.rs b/vortex-array/src/arrays/filter/vtable.rs index 02f2cce0a1d..a0b23e00cfd 100644 --- a/vortex-array/src/arrays/filter/vtable.rs +++ b/vortex-array/src/arrays/filter/vtable.rs @@ -188,7 +188,11 @@ impl VTable for Filter { } } impl OperationsVTable for Filter { - fn scalar_at(array: &FilterArray, index: usize) -> VortexResult { + fn scalar_at( + array: &FilterArray, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { let rank_idx = array.mask.rank(index); array.child.scalar_at(rank_idx) } diff --git a/vortex-array/src/arrays/fixed_size_list/vtable/operations.rs b/vortex-array/src/arrays/fixed_size_list/vtable/operations.rs index 40a3946c9f7..9b7a66349bd 100644 --- a/vortex-array/src/arrays/fixed_size_list/vtable/operations.rs +++ b/vortex-array/src/arrays/fixed_size_list/vtable/operations.rs @@ -3,13 +3,18 @@ use vortex_error::VortexResult; +use crate::ExecutionCtx; use crate::arrays::FixedSizeList; use crate::arrays::fixed_size_list::vtable::FixedSizeListArray; use crate::scalar::Scalar; use crate::vtable::OperationsVTable; impl OperationsVTable for FixedSizeList { - fn scalar_at(array: &FixedSizeListArray, index: usize) -> VortexResult { + fn scalar_at( + array: &FixedSizeListArray, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { // By the preconditions we know that the list scalar is not null. let list = array.fixed_size_list_elements_at(index)?; let children_elements: Vec = (0..list.len()) diff --git a/vortex-array/src/arrays/list/vtable/operations.rs b/vortex-array/src/arrays/list/vtable/operations.rs index 6e73c562c52..dd938a36c4d 100644 --- a/vortex-array/src/arrays/list/vtable/operations.rs +++ b/vortex-array/src/arrays/list/vtable/operations.rs @@ -5,13 +5,14 @@ use std::sync::Arc; use vortex_error::VortexResult; +use crate::ExecutionCtx; use crate::arrays::List; use crate::arrays::list::vtable::ListArray; use crate::scalar::Scalar; use crate::vtable::OperationsVTable; impl OperationsVTable for List { - fn scalar_at(array: &ListArray, index: usize) -> VortexResult { + fn scalar_at(array: &ListArray, index: usize, _ctx: &mut ExecutionCtx) -> VortexResult { // By the preconditions we know that the list scalar is not null. let elems = array.list_elements_at(index)?; let scalars: Vec = (0..elems.len()) diff --git a/vortex-array/src/arrays/listview/vtable/operations.rs b/vortex-array/src/arrays/listview/vtable/operations.rs index a74200dcdcf..340a5ff5f06 100644 --- a/vortex-array/src/arrays/listview/vtable/operations.rs +++ b/vortex-array/src/arrays/listview/vtable/operations.rs @@ -5,13 +5,18 @@ use std::sync::Arc; use vortex_error::VortexResult; +use crate::ExecutionCtx; use crate::arrays::ListView; use crate::arrays::listview::vtable::ListViewArray; use crate::scalar::Scalar; use crate::vtable::OperationsVTable; impl OperationsVTable for ListView { - fn scalar_at(array: &ListViewArray, index: usize) -> VortexResult { + fn scalar_at( + array: &ListViewArray, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { // By the preconditions we know that the list scalar is not null. let list = array.list_elements_at(index)?; let children: Vec = (0..list.len()) diff --git a/vortex-array/src/arrays/masked/vtable/operations.rs b/vortex-array/src/arrays/masked/vtable/operations.rs index 220afcf291f..5437bfde917 100644 --- a/vortex-array/src/arrays/masked/vtable/operations.rs +++ b/vortex-array/src/arrays/masked/vtable/operations.rs @@ -4,13 +4,18 @@ use vortex_error::VortexResult; use crate::DynArray; +use crate::ExecutionCtx; use crate::arrays::Masked; use crate::arrays::MaskedArray; use crate::scalar::Scalar; use crate::vtable::OperationsVTable; impl OperationsVTable for Masked { - fn scalar_at(array: &MaskedArray, index: usize) -> VortexResult { + fn scalar_at( + array: &MaskedArray, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { // Invalid indices are handled by the entrypoint function. Ok(array.child.scalar_at(index)?.into_nullable()) } diff --git a/vortex-array/src/arrays/null/mod.rs b/vortex-array/src/arrays/null/mod.rs index 38dd3665f5e..b5e34050ea1 100644 --- a/vortex-array/src/arrays/null/mod.rs +++ b/vortex-array/src/arrays/null/mod.rs @@ -190,7 +190,11 @@ impl NullArray { } } impl OperationsVTable for Null { - fn scalar_at(_array: &NullArray, _index: usize) -> VortexResult { + fn scalar_at( + _array: &NullArray, + _index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { Ok(Scalar::null(DType::Null)) } } diff --git a/vortex-array/src/arrays/primitive/vtable/operations.rs b/vortex-array/src/arrays/primitive/vtable/operations.rs index 2893eaae0d4..89e6ce7acf9 100644 --- a/vortex-array/src/arrays/primitive/vtable/operations.rs +++ b/vortex-array/src/arrays/primitive/vtable/operations.rs @@ -3,6 +3,7 @@ use vortex_error::VortexResult; +use crate::ExecutionCtx; use crate::arrays::Primitive; use crate::arrays::primitive::vtable::PrimitiveArray; use crate::match_each_native_ptype; @@ -10,7 +11,11 @@ use crate::scalar::Scalar; use crate::vtable::OperationsVTable; impl OperationsVTable for Primitive { - fn scalar_at(array: &PrimitiveArray, index: usize) -> VortexResult { + fn scalar_at( + array: &PrimitiveArray, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { Ok(match_each_native_ptype!(array.ptype(), |T| { Scalar::primitive(array.as_slice::()[index], array.dtype().nullability()) })) diff --git a/vortex-array/src/arrays/scalar_fn/vtable/operations.rs b/vortex-array/src/arrays/scalar_fn/vtable/operations.rs index 71761541093..3b05537e015 100644 --- a/vortex-array/src/arrays/scalar_fn/vtable/operations.rs +++ b/vortex-array/src/arrays/scalar_fn/vtable/operations.rs @@ -4,6 +4,7 @@ use vortex_error::VortexResult; use crate::DynArray; +use crate::ExecutionCtx; use crate::IntoArray; use crate::LEGACY_SESSION; use crate::VortexSessionExecute; @@ -16,7 +17,11 @@ use crate::scalar_fn::VecExecutionArgs; use crate::vtable::OperationsVTable; impl OperationsVTable for ScalarFnVTable { - fn scalar_at(array: &ScalarFnArray, index: usize) -> VortexResult { + fn scalar_at( + array: &ScalarFnArray, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { let inputs: Vec<_> = array .children .iter() diff --git a/vortex-array/src/arrays/shared/vtable.rs b/vortex-array/src/arrays/shared/vtable.rs index ba5ea8f5e3f..63cdea7f734 100644 --- a/vortex-array/src/arrays/shared/vtable.rs +++ b/vortex-array/src/arrays/shared/vtable.rs @@ -157,7 +157,11 @@ impl VTable for Shared { } } impl OperationsVTable for Shared { - fn scalar_at(array: &SharedArray, index: usize) -> VortexResult { + fn scalar_at( + array: &SharedArray, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { array.current_array_ref().scalar_at(index) } } diff --git a/vortex-array/src/arrays/slice/vtable.rs b/vortex-array/src/arrays/slice/vtable.rs index 74d31023f50..74c33760f16 100644 --- a/vortex-array/src/arrays/slice/vtable.rs +++ b/vortex-array/src/arrays/slice/vtable.rs @@ -188,7 +188,11 @@ impl VTable for Slice { } } impl OperationsVTable for Slice { - fn scalar_at(array: &SliceArray, index: usize) -> VortexResult { + fn scalar_at( + array: &SliceArray, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { array.child.scalar_at(array.range.start + index) } } diff --git a/vortex-array/src/arrays/struct_/vtable/operations.rs b/vortex-array/src/arrays/struct_/vtable/operations.rs index 5db676dca76..a1b8549b838 100644 --- a/vortex-array/src/arrays/struct_/vtable/operations.rs +++ b/vortex-array/src/arrays/struct_/vtable/operations.rs @@ -4,13 +4,18 @@ use vortex_error::VortexResult; use crate::DynArray; +use crate::ExecutionCtx; use crate::arrays::Struct; use crate::arrays::StructArray; use crate::scalar::Scalar; use crate::vtable::OperationsVTable; impl OperationsVTable for Struct { - fn scalar_at(array: &StructArray, index: usize) -> VortexResult { + fn scalar_at( + array: &StructArray, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { let field_scalars: VortexResult> = array .unmasked_fields() .iter() diff --git a/vortex-array/src/arrays/varbin/vtable/operations.rs b/vortex-array/src/arrays/varbin/vtable/operations.rs index c2c4858cd09..caf484be143 100644 --- a/vortex-array/src/arrays/varbin/vtable/operations.rs +++ b/vortex-array/src/arrays/varbin/vtable/operations.rs @@ -3,6 +3,7 @@ use vortex_error::VortexResult; +use crate::ExecutionCtx; use crate::arrays::VarBin; use crate::arrays::VarBinArray; use crate::arrays::varbin::varbin_scalar; @@ -10,7 +11,11 @@ use crate::scalar::Scalar; use crate::vtable::OperationsVTable; impl OperationsVTable for VarBin { - fn scalar_at(array: &VarBinArray, index: usize) -> VortexResult { + fn scalar_at( + array: &VarBinArray, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { Ok(varbin_scalar(array.bytes_at(index), array.dtype())) } } diff --git a/vortex-array/src/arrays/varbinview/vtable/operations.rs b/vortex-array/src/arrays/varbinview/vtable/operations.rs index 803fcb2e0bb..095015c449a 100644 --- a/vortex-array/src/arrays/varbinview/vtable/operations.rs +++ b/vortex-array/src/arrays/varbinview/vtable/operations.rs @@ -3,6 +3,7 @@ use vortex_error::VortexResult; +use crate::ExecutionCtx; use crate::arrays::VarBinView; use crate::arrays::VarBinViewArray; use crate::arrays::varbin::varbin_scalar; @@ -10,7 +11,11 @@ use crate::scalar::Scalar; use crate::vtable::OperationsVTable; impl OperationsVTable for VarBinView { - fn scalar_at(array: &VarBinViewArray, index: usize) -> VortexResult { + fn scalar_at( + array: &VarBinViewArray, + index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { Ok(varbin_scalar(array.bytes_at(index), array.dtype())) } } diff --git a/vortex-array/src/arrays/variant/vtable/operations.rs b/vortex-array/src/arrays/variant/vtable/operations.rs index 5884b43319d..e2e29921a52 100644 --- a/vortex-array/src/arrays/variant/vtable/operations.rs +++ b/vortex-array/src/arrays/variant/vtable/operations.rs @@ -3,6 +3,7 @@ use vortex_error::VortexResult; +use crate::ExecutionCtx; use crate::arrays::Variant; use crate::scalar::Scalar; use crate::vtable::OperationsVTable; @@ -11,6 +12,7 @@ impl OperationsVTable for Variant { fn scalar_at( array: &::Array, index: usize, + _ctx: &mut ExecutionCtx, ) -> VortexResult { array.child().scalar_at(index) } diff --git a/vortex-array/src/vtable/operations.rs b/vortex-array/src/vtable/operations.rs index 3189651e423..bdda1b3675a 100644 --- a/vortex-array/src/vtable/operations.rs +++ b/vortex-array/src/vtable/operations.rs @@ -4,6 +4,7 @@ use vortex_error::VortexResult; use vortex_error::vortex_bail; +use crate::ExecutionCtx; use crate::scalar::Scalar; use crate::vtable::NotSupported; use crate::vtable::VTable; @@ -15,11 +16,11 @@ pub trait OperationsVTable { /// /// Bounds-checking has already been performed by the time this function is called, /// and the index is guaranteed to be non-null. - fn scalar_at(array: &V::Array, index: usize) -> VortexResult; + fn scalar_at(array: &V::Array, index: usize, ctx: &mut ExecutionCtx) -> VortexResult; } impl OperationsVTable for NotSupported { - fn scalar_at(array: &V::Array, _index: usize) -> VortexResult { + fn scalar_at(array: &V::Array, _index: usize, _ctx: &mut ExecutionCtx) -> VortexResult { vortex_bail!( "Legacy scalar_at operation is not supported for {} arrays", array.encoding_id() diff --git a/vortex-ffi/src/array.rs b/vortex-ffi/src/array.rs index c42ba0e8454..92a5bcba100 100644 --- a/vortex-ffi/src/array.rs +++ b/vortex-ffi/src/array.rs @@ -208,6 +208,8 @@ mod tests { use crate::string::vx_string_free; #[test] + // TODO(joe): enable once this is fixed https://github.com/Amanieu/parking_lot/issues/477 + #[cfg_attr(miri, ignore)] fn test_simple() { unsafe { let primitive = PrimitiveArray::new(buffer![1i32, 2i32, 3i32], Validity::NonNullable); @@ -230,6 +232,8 @@ mod tests { } #[test] + // TODO(joe): enable once this is fixed https://github.com/Amanieu/parking_lot/issues/477 + #[cfg_attr(miri, ignore)] fn test_slice() { unsafe { let primitive = @@ -250,8 +254,8 @@ mod tests { } #[test] - #[cfg_attr(miri, ignore)] // TODO(joe): enable once this is fixed https://github.com/Amanieu/parking_lot/issues/477 + #[cfg_attr(miri, ignore)] fn test_null_operations() { unsafe { let primitive = PrimitiveArray::new( @@ -277,8 +281,8 @@ mod tests { } #[test] - #[cfg_attr(miri, ignore)] // TODO(joe): enable once this is fixed https://github.com/Amanieu/parking_lot/issues/477 + #[cfg_attr(miri, ignore)] fn test_get_field() { unsafe { let names = VarBinViewArray::from_iter_str(["Alice", "Bob", "Charlie"]); @@ -317,6 +321,8 @@ mod tests { } #[test] + // TODO(joe): enable once this is fixed https://github.com/Amanieu/parking_lot/issues/477 + #[cfg_attr(miri, ignore)] fn test_primitive_getters() { unsafe { // Test a representative sample of primitive types @@ -367,6 +373,8 @@ mod tests { } #[test] + // TODO(joe): enable once this is fixed https://github.com/Amanieu/parking_lot/issues/477 + #[cfg_attr(miri, ignore)] fn test_get_utf8() { unsafe { let utf8_array = VarBinViewArray::from_iter_str(["hello", "world", "test"]); @@ -389,6 +397,8 @@ mod tests { } #[test] + // TODO(joe): enable once this is fixed https://github.com/Amanieu/parking_lot/issues/477 + #[cfg_attr(miri, ignore)] fn test_get_binary() { unsafe { let binary_array = VarBinViewArray::from_iter_bin(vec![ diff --git a/vortex-python/src/arrays/py/vtable.rs b/vortex-python/src/arrays/py/vtable.rs index d25d2510c62..99459d8c286 100644 --- a/vortex-python/src/arrays/py/vtable.rs +++ b/vortex-python/src/arrays/py/vtable.rs @@ -167,7 +167,11 @@ impl VTable for PythonVTable { } impl OperationsVTable for PythonVTable { - fn scalar_at(_array: &PythonArray, _index: usize) -> VortexResult { + fn scalar_at( + _array: &PythonArray, + _index: usize, + _ctx: &mut ExecutionCtx, + ) -> VortexResult { todo!() } }