diff --git a/vortex-cuda/src/layout.rs b/vortex-cuda/src/layout.rs index 5cc9106c535..a4483a3d8e7 100644 --- a/vortex-cuda/src/layout.rs +++ b/vortex-cuda/src/layout.rs @@ -180,6 +180,7 @@ impl VTable for CudaFlat { name: Arc, segment_source: Arc, session: &VortexSession, + _ctx: &vortex::layout::LayoutReaderContext, ) -> VortexResult { Ok(Arc::new(CudaFlatReader { layout: layout.clone(), diff --git a/vortex-file/src/file.rs b/vortex-file/src/file.rs index cbebe0297bb..4e5a9e99049 100644 --- a/vortex-file/src/file.rs +++ b/vortex-file/src/file.rs @@ -112,7 +112,12 @@ impl VortexFile { .footer .layout() // TODO(ngates): we may want to allow the user pass in a name here? - .new_reader("".into(), segment_source, &self.session)?; + .new_reader( + "".into(), + segment_source, + &self.session, + &Default::default(), + )?; Ok(if let Some(stats) = self.file_stats().cloned() { Arc::new(FileStatsLayoutReader::new( diff --git a/vortex-file/src/v2/file_stats_reader.rs b/vortex-file/src/v2/file_stats_reader.rs index a6ab9ec79df..0121c12b07d 100644 --- a/vortex-file/src/v2/file_stats_reader.rs +++ b/vortex-file/src/v2/file_stats_reader.rs @@ -310,7 +310,7 @@ mod tests { ) .await?; - let child = layout.new_reader("".into(), segments, &SESSION)?; + let child = layout.new_reader("".into(), segments, &SESSION, &Default::default())?; let reader = FileStatsLayoutReader::new(child, test_file_stats(0, 100), SESSION.clone()); @@ -349,7 +349,7 @@ mod tests { ) .await?; - let child = layout.new_reader("".into(), segments, &SESSION)?; + let child = layout.new_reader("".into(), segments, &SESSION, &Default::default())?; let reader = FileStatsLayoutReader::new(child, test_file_stats(0, 100), SESSION.clone()); @@ -400,7 +400,7 @@ mod tests { ) .await?; - let child = layout.new_reader("".into(), segments, &SESSION)?; + let child = layout.new_reader("".into(), segments, &SESSION, &Default::default())?; // File-level stats: 1 null in deleted_at. let mut stats = StatsSet::default(); @@ -449,7 +449,7 @@ mod tests { ) .await?; - let child = layout.new_reader("".into(), segments, &SESSION)?; + let child = layout.new_reader("".into(), segments, &SESSION, &Default::default())?; let reader = FileStatsLayoutReader::new(child, test_file_null_count_stats(5), SESSION.clone()); diff --git a/vortex-layout/public-api.lock b/vortex-layout/public-api.lock new file mode 100644 index 00000000000..c794e93aa41 --- /dev/null +++ b/vortex-layout/public-api.lock @@ -0,0 +1,2203 @@ +pub mod vortex_layout + +pub mod vortex_layout::aliases + +pub mod vortex_layout::aliases::paste + +pub use vortex_layout::aliases::paste::paste + +pub mod vortex_layout::display + +pub struct vortex_layout::display::DisplayLayoutTree + +impl vortex_layout::display::DisplayLayoutTree + +pub fn vortex_layout::display::DisplayLayoutTree::new(vortex_layout::LayoutRef, bool) -> Self + +impl core::fmt::Display for vortex_layout::display::DisplayLayoutTree + +pub fn vortex_layout::display::DisplayLayoutTree::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +pub mod vortex_layout::layouts + +pub mod vortex_layout::layouts::buffered + +pub struct vortex_layout::layouts::buffered::BufferedStrategy + +impl vortex_layout::layouts::buffered::BufferedStrategy + +pub fn vortex_layout::layouts::buffered::BufferedStrategy::new(S, u64) -> Self + +impl core::clone::Clone for vortex_layout::layouts::buffered::BufferedStrategy + +pub fn vortex_layout::layouts::buffered::BufferedStrategy::clone(&self) -> vortex_layout::layouts::buffered::BufferedStrategy + +impl vortex_layout::LayoutStrategy for vortex_layout::layouts::buffered::BufferedStrategy + +pub fn vortex_layout::layouts::buffered::BufferedStrategy::buffered_bytes(&self) -> u64 + +pub fn vortex_layout::layouts::buffered::BufferedStrategy::write_stream<'life0, 'life1, 'async_trait>(&'life0 self, vortex_array::ArrayContext, vortex_layout::segments::SegmentSinkRef, vortex_layout::sequence::SendableSequentialStream, vortex_layout::sequence::SequencePointer, &'life1 vortex_session::VortexSession) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait + +pub mod vortex_layout::layouts::chunked + +pub mod vortex_layout::layouts::chunked::writer + +pub struct vortex_layout::layouts::chunked::writer::ChunkedLayoutStrategy + +pub vortex_layout::layouts::chunked::writer::ChunkedLayoutStrategy::chunk_strategy: alloc::sync::Arc + +impl vortex_layout::layouts::chunked::writer::ChunkedLayoutStrategy + +pub fn vortex_layout::layouts::chunked::writer::ChunkedLayoutStrategy::new(S) -> Self + +impl core::clone::Clone for vortex_layout::layouts::chunked::writer::ChunkedLayoutStrategy + +pub fn vortex_layout::layouts::chunked::writer::ChunkedLayoutStrategy::clone(&self) -> vortex_layout::layouts::chunked::writer::ChunkedLayoutStrategy + +impl vortex_layout::LayoutStrategy for vortex_layout::layouts::chunked::writer::ChunkedLayoutStrategy + +pub fn vortex_layout::layouts::chunked::writer::ChunkedLayoutStrategy::buffered_bytes(&self) -> u64 + +pub fn vortex_layout::layouts::chunked::writer::ChunkedLayoutStrategy::write_stream<'life0, 'life1, 'async_trait>(&'life0 self, vortex_array::ArrayContext, vortex_layout::segments::SegmentSinkRef, vortex_layout::sequence::SendableSequentialStream, vortex_layout::sequence::SequencePointer, &'life1 vortex_session::VortexSession) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait + +pub struct vortex_layout::layouts::chunked::Chunked + +impl core::fmt::Debug for vortex_layout::layouts::chunked::Chunked + +pub fn vortex_layout::layouts::chunked::Chunked::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl vortex_layout::VTable for vortex_layout::layouts::chunked::Chunked + +pub type vortex_layout::layouts::chunked::Chunked::Encoding = vortex_layout::layouts::chunked::ChunkedLayoutEncoding + +pub type vortex_layout::layouts::chunked::Chunked::Layout = vortex_layout::layouts::chunked::ChunkedLayout + +pub type vortex_layout::layouts::chunked::Chunked::Metadata = vortex_array::metadata::EmptyMetadata + +pub fn vortex_layout::layouts::chunked::Chunked::build(&Self::Encoding, &vortex_array::dtype::DType, u64, &::Output, alloc::vec::Vec, &dyn vortex_layout::LayoutChildren, &vortex_session::registry::ReadContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::chunked::Chunked::child(&Self::Layout, usize) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::chunked::Chunked::child_type(&Self::Layout, usize) -> vortex_layout::LayoutChildType + +pub fn vortex_layout::layouts::chunked::Chunked::dtype(&Self::Layout) -> &vortex_array::dtype::DType + +pub fn vortex_layout::layouts::chunked::Chunked::encoding(&Self::Layout) -> vortex_layout::LayoutEncodingRef + +pub fn vortex_layout::layouts::chunked::Chunked::id(&Self::Encoding) -> vortex_layout::LayoutId + +pub fn vortex_layout::layouts::chunked::Chunked::metadata(&Self::Layout) -> Self::Metadata + +pub fn vortex_layout::layouts::chunked::Chunked::nchildren(&Self::Layout) -> usize + +pub fn vortex_layout::layouts::chunked::Chunked::new_reader(&Self::Layout, alloc::sync::Arc, alloc::sync::Arc, &vortex_session::VortexSession, &vortex_layout::LayoutReaderContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::chunked::Chunked::row_count(&Self::Layout) -> u64 + +pub fn vortex_layout::layouts::chunked::Chunked::segment_ids(&Self::Layout) -> alloc::vec::Vec + +pub fn vortex_layout::layouts::chunked::Chunked::with_children(&mut Self::Layout, alloc::vec::Vec) -> vortex_error::VortexResult<()> + +pub struct vortex_layout::layouts::chunked::ChunkedLayout + +impl vortex_layout::layouts::chunked::ChunkedLayout + +pub fn vortex_layout::layouts::chunked::ChunkedLayout::children(&self) -> &alloc::sync::Arc + +pub fn vortex_layout::layouts::chunked::ChunkedLayout::new(u64, vortex_array::dtype::DType, alloc::sync::Arc) -> Self + +impl core::clone::Clone for vortex_layout::layouts::chunked::ChunkedLayout + +pub fn vortex_layout::layouts::chunked::ChunkedLayout::clone(&self) -> vortex_layout::layouts::chunked::ChunkedLayout + +impl core::convert::AsRef for vortex_layout::layouts::chunked::ChunkedLayout + +pub fn vortex_layout::layouts::chunked::ChunkedLayout::as_ref(&self) -> &dyn vortex_layout::Layout + +impl core::convert::From for vortex_layout::LayoutRef + +pub fn vortex_layout::LayoutRef::from(vortex_layout::layouts::chunked::ChunkedLayout) -> vortex_layout::LayoutRef + +impl core::fmt::Debug for vortex_layout::layouts::chunked::ChunkedLayout + +pub fn vortex_layout::layouts::chunked::ChunkedLayout::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::ops::deref::Deref for vortex_layout::layouts::chunked::ChunkedLayout + +pub type vortex_layout::layouts::chunked::ChunkedLayout::Target = dyn vortex_layout::Layout + +pub fn vortex_layout::layouts::chunked::ChunkedLayout::deref(&self) -> &Self::Target + +impl vortex_layout::IntoLayout for vortex_layout::layouts::chunked::ChunkedLayout + +pub fn vortex_layout::layouts::chunked::ChunkedLayout::into_layout(self) -> vortex_layout::LayoutRef + +pub struct vortex_layout::layouts::chunked::ChunkedLayoutEncoding + +impl core::convert::AsRef for vortex_layout::layouts::chunked::ChunkedLayoutEncoding + +pub fn vortex_layout::layouts::chunked::ChunkedLayoutEncoding::as_ref(&self) -> &dyn vortex_layout::LayoutEncoding + +impl core::fmt::Debug for vortex_layout::layouts::chunked::ChunkedLayoutEncoding + +pub fn vortex_layout::layouts::chunked::ChunkedLayoutEncoding::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::ops::deref::Deref for vortex_layout::layouts::chunked::ChunkedLayoutEncoding + +pub type vortex_layout::layouts::chunked::ChunkedLayoutEncoding::Target = dyn vortex_layout::LayoutEncoding + +pub fn vortex_layout::layouts::chunked::ChunkedLayoutEncoding::deref(&self) -> &Self::Target + +pub mod vortex_layout::layouts::collect + +pub struct vortex_layout::layouts::collect::CollectStrategy + +impl vortex_layout::layouts::collect::CollectStrategy + +pub fn vortex_layout::layouts::collect::CollectStrategy::new(S) -> vortex_layout::layouts::collect::CollectStrategy + +impl vortex_layout::LayoutStrategy for vortex_layout::layouts::collect::CollectStrategy + +pub fn vortex_layout::layouts::collect::CollectStrategy::buffered_bytes(&self) -> u64 + +pub fn vortex_layout::layouts::collect::CollectStrategy::write_stream<'life0, 'life1, 'async_trait>(&'life0 self, vortex_array::ArrayContext, vortex_layout::segments::SegmentSinkRef, vortex_layout::sequence::SendableSequentialStream, vortex_layout::sequence::SequencePointer, &'life1 vortex_session::VortexSession) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait + +pub mod vortex_layout::layouts::compressed + +pub struct vortex_layout::layouts::compressed::CompressingStrategy + +impl vortex_layout::layouts::compressed::CompressingStrategy + +pub fn vortex_layout::layouts::compressed::CompressingStrategy::new(S, C) -> Self + +pub fn vortex_layout::layouts::compressed::CompressingStrategy::with_concurrency(self, usize) -> Self + +pub fn vortex_layout::layouts::compressed::CompressingStrategy::with_stats(self, &[vortex_array::expr::stats::Stat]) -> Self + +impl core::clone::Clone for vortex_layout::layouts::compressed::CompressingStrategy + +pub fn vortex_layout::layouts::compressed::CompressingStrategy::clone(&self) -> vortex_layout::layouts::compressed::CompressingStrategy + +impl vortex_layout::LayoutStrategy for vortex_layout::layouts::compressed::CompressingStrategy + +pub fn vortex_layout::layouts::compressed::CompressingStrategy::buffered_bytes(&self) -> u64 + +pub fn vortex_layout::layouts::compressed::CompressingStrategy::write_stream<'life0, 'life1, 'async_trait>(&'life0 self, vortex_array::ArrayContext, vortex_layout::segments::SegmentSinkRef, vortex_layout::sequence::SendableSequentialStream, vortex_layout::sequence::SequencePointer, &'life1 vortex_session::VortexSession) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait + +pub trait vortex_layout::layouts::compressed::CompressorPlugin: core::marker::Send + core::marker::Sync + 'static + +pub fn vortex_layout::layouts::compressed::CompressorPlugin::compress_chunk(&self, &vortex_array::array::erased::ArrayRef, &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult + +impl vortex_layout::layouts::compressed::CompressorPlugin for alloc::sync::Arc + +pub fn alloc::sync::Arc::compress_chunk(&self, &vortex_array::array::erased::ArrayRef, &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult + +impl vortex_layout::layouts::compressed::CompressorPlugin for vortex_btrblocks::canonical_compressor::BtrBlocksCompressor + +pub fn vortex_btrblocks::canonical_compressor::BtrBlocksCompressor::compress_chunk(&self, &vortex_array::array::erased::ArrayRef, &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult + +impl vortex_layout::layouts::compressed::CompressorPlugin for F where F: core::ops::function::Fn(&vortex_array::array::erased::ArrayRef, &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult + core::marker::Send + core::marker::Sync + 'static + +pub fn F::compress_chunk(&self, &vortex_array::array::erased::ArrayRef, &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult + +pub mod vortex_layout::layouts::dict + +pub mod vortex_layout::layouts::dict::writer + +pub struct vortex_layout::layouts::dict::writer::DictLayoutConstraints + +pub vortex_layout::layouts::dict::writer::DictLayoutConstraints::max_bytes: usize + +pub vortex_layout::layouts::dict::writer::DictLayoutConstraints::max_len: u16 + +impl core::clone::Clone for vortex_layout::layouts::dict::writer::DictLayoutConstraints + +pub fn vortex_layout::layouts::dict::writer::DictLayoutConstraints::clone(&self) -> vortex_layout::layouts::dict::writer::DictLayoutConstraints + +impl core::convert::From for vortex_array::builders::dict::DictConstraints + +pub fn vortex_array::builders::dict::DictConstraints::from(vortex_layout::layouts::dict::writer::DictLayoutConstraints) -> Self + +impl core::default::Default for vortex_layout::layouts::dict::writer::DictLayoutConstraints + +pub fn vortex_layout::layouts::dict::writer::DictLayoutConstraints::default() -> Self + +pub struct vortex_layout::layouts::dict::writer::DictLayoutMetadata + +impl vortex_layout::layouts::dict::writer::DictLayoutMetadata + +pub fn vortex_layout::layouts::dict::writer::DictLayoutMetadata::codes_ptype(&self) -> vortex_array::dtype::ptype::PType + +pub fn vortex_layout::layouts::dict::writer::DictLayoutMetadata::set_codes_ptype(&mut self, vortex_array::dtype::ptype::PType) + +impl vortex_layout::layouts::dict::writer::DictLayoutMetadata + +pub fn vortex_layout::layouts::dict::writer::DictLayoutMetadata::new(vortex_array::dtype::ptype::PType) -> Self + +impl core::default::Default for vortex_layout::layouts::dict::writer::DictLayoutMetadata + +pub fn vortex_layout::layouts::dict::writer::DictLayoutMetadata::default() -> Self + +impl core::fmt::Debug for vortex_layout::layouts::dict::writer::DictLayoutMetadata + +pub fn vortex_layout::layouts::dict::writer::DictLayoutMetadata::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl prost::message::Message for vortex_layout::layouts::dict::writer::DictLayoutMetadata + +pub fn vortex_layout::layouts::dict::writer::DictLayoutMetadata::clear(&mut self) + +pub fn vortex_layout::layouts::dict::writer::DictLayoutMetadata::encoded_len(&self) -> usize + +pub struct vortex_layout::layouts::dict::writer::DictLayoutOptions + +pub vortex_layout::layouts::dict::writer::DictLayoutOptions::constraints: vortex_layout::layouts::dict::writer::DictLayoutConstraints + +impl core::clone::Clone for vortex_layout::layouts::dict::writer::DictLayoutOptions + +pub fn vortex_layout::layouts::dict::writer::DictLayoutOptions::clone(&self) -> vortex_layout::layouts::dict::writer::DictLayoutOptions + +impl core::default::Default for vortex_layout::layouts::dict::writer::DictLayoutOptions + +pub fn vortex_layout::layouts::dict::writer::DictLayoutOptions::default() -> vortex_layout::layouts::dict::writer::DictLayoutOptions + +pub struct vortex_layout::layouts::dict::writer::DictStrategy + +impl vortex_layout::layouts::dict::writer::DictStrategy + +pub fn vortex_layout::layouts::dict::writer::DictStrategy::new(Codes, Values, Fallback, vortex_layout::layouts::dict::writer::DictLayoutOptions) -> Self + +impl core::clone::Clone for vortex_layout::layouts::dict::writer::DictStrategy + +pub fn vortex_layout::layouts::dict::writer::DictStrategy::clone(&self) -> vortex_layout::layouts::dict::writer::DictStrategy + +impl vortex_layout::LayoutStrategy for vortex_layout::layouts::dict::writer::DictStrategy + +pub fn vortex_layout::layouts::dict::writer::DictStrategy::buffered_bytes(&self) -> u64 + +pub fn vortex_layout::layouts::dict::writer::DictStrategy::write_stream<'life0, 'life1, 'async_trait>(&'life0 self, vortex_array::ArrayContext, vortex_layout::segments::SegmentSinkRef, vortex_layout::sequence::SendableSequentialStream, vortex_layout::sequence::SequencePointer, &'life1 vortex_session::VortexSession) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait + +pub fn vortex_layout::layouts::dict::writer::dict_layout_supported(&vortex_array::dtype::DType) -> bool + +pub struct vortex_layout::layouts::dict::Dict + +impl core::fmt::Debug for vortex_layout::layouts::dict::Dict + +pub fn vortex_layout::layouts::dict::Dict::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl vortex_layout::VTable for vortex_layout::layouts::dict::Dict + +pub type vortex_layout::layouts::dict::Dict::Encoding = vortex_layout::layouts::dict::DictLayoutEncoding + +pub type vortex_layout::layouts::dict::Dict::Layout = vortex_layout::layouts::dict::DictLayout + +pub type vortex_layout::layouts::dict::Dict::Metadata = vortex_array::metadata::ProstMetadata + +pub fn vortex_layout::layouts::dict::Dict::build(&Self::Encoding, &vortex_array::dtype::DType, u64, &::Output, alloc::vec::Vec, &dyn vortex_layout::LayoutChildren, &vortex_session::registry::ReadContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::dict::Dict::child(&Self::Layout, usize) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::dict::Dict::child_type(&Self::Layout, usize) -> vortex_layout::LayoutChildType + +pub fn vortex_layout::layouts::dict::Dict::dtype(&Self::Layout) -> &vortex_array::dtype::DType + +pub fn vortex_layout::layouts::dict::Dict::encoding(&Self::Layout) -> vortex_layout::LayoutEncodingRef + +pub fn vortex_layout::layouts::dict::Dict::id(&Self::Encoding) -> vortex_layout::LayoutId + +pub fn vortex_layout::layouts::dict::Dict::metadata(&Self::Layout) -> Self::Metadata + +pub fn vortex_layout::layouts::dict::Dict::nchildren(&Self::Layout) -> usize + +pub fn vortex_layout::layouts::dict::Dict::new_reader(&Self::Layout, alloc::sync::Arc, alloc::sync::Arc, &vortex_session::VortexSession, &vortex_layout::LayoutReaderContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::dict::Dict::row_count(&Self::Layout) -> u64 + +pub fn vortex_layout::layouts::dict::Dict::segment_ids(&Self::Layout) -> alloc::vec::Vec + +pub fn vortex_layout::layouts::dict::Dict::with_children(&mut Self::Layout, alloc::vec::Vec) -> vortex_error::VortexResult<()> + +pub struct vortex_layout::layouts::dict::DictLayout + +impl vortex_layout::layouts::dict::DictLayout + +pub fn vortex_layout::layouts::dict::DictLayout::has_all_values_referenced(&self) -> bool + +pub unsafe fn vortex_layout::layouts::dict::DictLayout::set_all_values_referenced(self, bool) -> Self + +impl core::clone::Clone for vortex_layout::layouts::dict::DictLayout + +pub fn vortex_layout::layouts::dict::DictLayout::clone(&self) -> vortex_layout::layouts::dict::DictLayout + +impl core::convert::AsRef for vortex_layout::layouts::dict::DictLayout + +pub fn vortex_layout::layouts::dict::DictLayout::as_ref(&self) -> &dyn vortex_layout::Layout + +impl core::convert::From for vortex_layout::LayoutRef + +pub fn vortex_layout::LayoutRef::from(vortex_layout::layouts::dict::DictLayout) -> vortex_layout::LayoutRef + +impl core::fmt::Debug for vortex_layout::layouts::dict::DictLayout + +pub fn vortex_layout::layouts::dict::DictLayout::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::ops::deref::Deref for vortex_layout::layouts::dict::DictLayout + +pub type vortex_layout::layouts::dict::DictLayout::Target = dyn vortex_layout::Layout + +pub fn vortex_layout::layouts::dict::DictLayout::deref(&self) -> &Self::Target + +impl vortex_layout::IntoLayout for vortex_layout::layouts::dict::DictLayout + +pub fn vortex_layout::layouts::dict::DictLayout::into_layout(self) -> vortex_layout::LayoutRef + +pub struct vortex_layout::layouts::dict::DictLayoutEncoding + +impl core::convert::AsRef for vortex_layout::layouts::dict::DictLayoutEncoding + +pub fn vortex_layout::layouts::dict::DictLayoutEncoding::as_ref(&self) -> &dyn vortex_layout::LayoutEncoding + +impl core::fmt::Debug for vortex_layout::layouts::dict::DictLayoutEncoding + +pub fn vortex_layout::layouts::dict::DictLayoutEncoding::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::ops::deref::Deref for vortex_layout::layouts::dict::DictLayoutEncoding + +pub type vortex_layout::layouts::dict::DictLayoutEncoding::Target = dyn vortex_layout::LayoutEncoding + +pub fn vortex_layout::layouts::dict::DictLayoutEncoding::deref(&self) -> &Self::Target + +pub struct vortex_layout::layouts::dict::DictLayoutMetadata + +impl vortex_layout::layouts::dict::DictLayoutMetadata + +pub fn vortex_layout::layouts::dict::DictLayoutMetadata::all_values_referenced(&self) -> bool + +pub fn vortex_layout::layouts::dict::DictLayoutMetadata::codes_ptype(&self) -> vortex_array::dtype::ptype::PType + +pub fn vortex_layout::layouts::dict::DictLayoutMetadata::is_nullable_codes(&self) -> bool + +pub fn vortex_layout::layouts::dict::DictLayoutMetadata::set_codes_ptype(&mut self, vortex_array::dtype::ptype::PType) + +impl vortex_layout::layouts::dict::DictLayoutMetadata + +pub fn vortex_layout::layouts::dict::DictLayoutMetadata::new(vortex_array::dtype::ptype::PType) -> Self + +impl core::default::Default for vortex_layout::layouts::dict::DictLayoutMetadata + +pub fn vortex_layout::layouts::dict::DictLayoutMetadata::default() -> Self + +impl core::fmt::Debug for vortex_layout::layouts::dict::DictLayoutMetadata + +pub fn vortex_layout::layouts::dict::DictLayoutMetadata::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl prost::message::Message for vortex_layout::layouts::dict::DictLayoutMetadata + +pub fn vortex_layout::layouts::dict::DictLayoutMetadata::clear(&mut self) + +pub fn vortex_layout::layouts::dict::DictLayoutMetadata::encoded_len(&self) -> usize + +pub mod vortex_layout::layouts::file_stats + +pub struct vortex_layout::layouts::file_stats::FileStatsAccumulator + +impl vortex_layout::layouts::file_stats::FileStatsAccumulator + +pub fn vortex_layout::layouts::file_stats::FileStatsAccumulator::stats_sets(&self) -> alloc::vec::Vec + +impl core::clone::Clone for vortex_layout::layouts::file_stats::FileStatsAccumulator + +pub fn vortex_layout::layouts::file_stats::FileStatsAccumulator::clone(&self) -> vortex_layout::layouts::file_stats::FileStatsAccumulator + +pub fn vortex_layout::layouts::file_stats::accumulate_stats(vortex_layout::sequence::SendableSequentialStream, alloc::sync::Arc<[vortex_array::expr::stats::Stat]>, usize, &vortex_session::VortexSession) -> (vortex_layout::layouts::file_stats::FileStatsAccumulator, vortex_layout::sequence::SendableSequentialStream) + +pub mod vortex_layout::layouts::flat + +pub mod vortex_layout::layouts::flat::writer + +pub struct vortex_layout::layouts::flat::writer::FlatLayoutStrategy + +pub vortex_layout::layouts::flat::writer::FlatLayoutStrategy::allowed_encodings: core::option::Option> + +pub vortex_layout::layouts::flat::writer::FlatLayoutStrategy::include_padding: bool + +pub vortex_layout::layouts::flat::writer::FlatLayoutStrategy::max_variable_length_statistics_size: usize + +impl vortex_layout::layouts::flat::writer::FlatLayoutStrategy + +pub fn vortex_layout::layouts::flat::writer::FlatLayoutStrategy::with_allow_encodings(self, vortex_utils::aliases::hash_set::HashSet) -> Self + +pub fn vortex_layout::layouts::flat::writer::FlatLayoutStrategy::with_include_padding(self, bool) -> Self + +pub fn vortex_layout::layouts::flat::writer::FlatLayoutStrategy::with_max_variable_length_statistics_size(self, usize) -> Self + +impl core::clone::Clone for vortex_layout::layouts::flat::writer::FlatLayoutStrategy + +pub fn vortex_layout::layouts::flat::writer::FlatLayoutStrategy::clone(&self) -> vortex_layout::layouts::flat::writer::FlatLayoutStrategy + +impl core::default::Default for vortex_layout::layouts::flat::writer::FlatLayoutStrategy + +pub fn vortex_layout::layouts::flat::writer::FlatLayoutStrategy::default() -> Self + +impl vortex_layout::LayoutStrategy for vortex_layout::layouts::flat::writer::FlatLayoutStrategy + +pub fn vortex_layout::layouts::flat::writer::FlatLayoutStrategy::buffered_bytes(&self) -> u64 + +pub fn vortex_layout::layouts::flat::writer::FlatLayoutStrategy::write_stream<'life0, 'life1, 'async_trait>(&'life0 self, vortex_array::ArrayContext, vortex_layout::segments::SegmentSinkRef, vortex_layout::sequence::SendableSequentialStream, vortex_layout::sequence::SequencePointer, &'life1 vortex_session::VortexSession) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait + +pub struct vortex_layout::layouts::flat::Flat + +impl core::fmt::Debug for vortex_layout::layouts::flat::Flat + +pub fn vortex_layout::layouts::flat::Flat::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl vortex_layout::VTable for vortex_layout::layouts::flat::Flat + +pub type vortex_layout::layouts::flat::Flat::Encoding = vortex_layout::layouts::flat::FlatLayoutEncoding + +pub type vortex_layout::layouts::flat::Flat::Layout = vortex_layout::layouts::flat::FlatLayout + +pub type vortex_layout::layouts::flat::Flat::Metadata = vortex_array::metadata::ProstMetadata + +pub fn vortex_layout::layouts::flat::Flat::build(&Self::Encoding, &vortex_array::dtype::DType, u64, &::Output, alloc::vec::Vec, &dyn vortex_layout::LayoutChildren, &vortex_session::registry::ReadContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::flat::Flat::child(&Self::Layout, usize) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::flat::Flat::child_type(&Self::Layout, usize) -> vortex_layout::LayoutChildType + +pub fn vortex_layout::layouts::flat::Flat::dtype(&Self::Layout) -> &vortex_array::dtype::DType + +pub fn vortex_layout::layouts::flat::Flat::encoding(&Self::Layout) -> vortex_layout::LayoutEncodingRef + +pub fn vortex_layout::layouts::flat::Flat::id(&Self::Encoding) -> vortex_layout::LayoutId + +pub fn vortex_layout::layouts::flat::Flat::metadata(&Self::Layout) -> Self::Metadata + +pub fn vortex_layout::layouts::flat::Flat::nchildren(&Self::Layout) -> usize + +pub fn vortex_layout::layouts::flat::Flat::new_reader(&Self::Layout, alloc::sync::Arc, alloc::sync::Arc, &vortex_session::VortexSession, &vortex_layout::LayoutReaderContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::flat::Flat::row_count(&Self::Layout) -> u64 + +pub fn vortex_layout::layouts::flat::Flat::segment_ids(&Self::Layout) -> alloc::vec::Vec + +pub fn vortex_layout::layouts::flat::Flat::with_children(&mut Self::Layout, alloc::vec::Vec) -> vortex_error::VortexResult<()> + +pub struct vortex_layout::layouts::flat::FlatLayout + +impl vortex_layout::layouts::flat::FlatLayout + +pub fn vortex_layout::layouts::flat::FlatLayout::array_ctx(&self) -> &vortex_session::registry::ReadContext + +pub fn vortex_layout::layouts::flat::FlatLayout::array_tree(&self) -> core::option::Option<&vortex_buffer::ByteBuffer> + +pub fn vortex_layout::layouts::flat::FlatLayout::new(u64, vortex_array::dtype::DType, vortex_layout::segments::SegmentId, vortex_session::registry::ReadContext) -> Self + +pub fn vortex_layout::layouts::flat::FlatLayout::new_with_metadata(u64, vortex_array::dtype::DType, vortex_layout::segments::SegmentId, vortex_session::registry::ReadContext, core::option::Option) -> Self + +pub fn vortex_layout::layouts::flat::FlatLayout::segment_id(&self) -> vortex_layout::segments::SegmentId + +impl core::clone::Clone for vortex_layout::layouts::flat::FlatLayout + +pub fn vortex_layout::layouts::flat::FlatLayout::clone(&self) -> vortex_layout::layouts::flat::FlatLayout + +impl core::convert::AsRef for vortex_layout::layouts::flat::FlatLayout + +pub fn vortex_layout::layouts::flat::FlatLayout::as_ref(&self) -> &dyn vortex_layout::Layout + +impl core::convert::From for vortex_layout::LayoutRef + +pub fn vortex_layout::LayoutRef::from(vortex_layout::layouts::flat::FlatLayout) -> vortex_layout::LayoutRef + +impl core::fmt::Debug for vortex_layout::layouts::flat::FlatLayout + +pub fn vortex_layout::layouts::flat::FlatLayout::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::ops::deref::Deref for vortex_layout::layouts::flat::FlatLayout + +pub type vortex_layout::layouts::flat::FlatLayout::Target = dyn vortex_layout::Layout + +pub fn vortex_layout::layouts::flat::FlatLayout::deref(&self) -> &Self::Target + +impl vortex_layout::IntoLayout for vortex_layout::layouts::flat::FlatLayout + +pub fn vortex_layout::layouts::flat::FlatLayout::into_layout(self) -> vortex_layout::LayoutRef + +pub struct vortex_layout::layouts::flat::FlatLayoutEncoding + +impl core::convert::AsRef for vortex_layout::layouts::flat::FlatLayoutEncoding + +pub fn vortex_layout::layouts::flat::FlatLayoutEncoding::as_ref(&self) -> &dyn vortex_layout::LayoutEncoding + +impl core::fmt::Debug for vortex_layout::layouts::flat::FlatLayoutEncoding + +pub fn vortex_layout::layouts::flat::FlatLayoutEncoding::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::ops::deref::Deref for vortex_layout::layouts::flat::FlatLayoutEncoding + +pub type vortex_layout::layouts::flat::FlatLayoutEncoding::Target = dyn vortex_layout::LayoutEncoding + +pub fn vortex_layout::layouts::flat::FlatLayoutEncoding::deref(&self) -> &Self::Target + +pub struct vortex_layout::layouts::flat::FlatLayoutMetadata + +pub vortex_layout::layouts::flat::FlatLayoutMetadata::array_encoding_tree: core::option::Option> + +impl vortex_layout::layouts::flat::FlatLayoutMetadata + +pub fn vortex_layout::layouts::flat::FlatLayoutMetadata::array_encoding_tree(&self) -> &[u8] + +impl core::default::Default for vortex_layout::layouts::flat::FlatLayoutMetadata + +pub fn vortex_layout::layouts::flat::FlatLayoutMetadata::default() -> Self + +impl core::fmt::Debug for vortex_layout::layouts::flat::FlatLayoutMetadata + +pub fn vortex_layout::layouts::flat::FlatLayoutMetadata::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl prost::message::Message for vortex_layout::layouts::flat::FlatLayoutMetadata + +pub fn vortex_layout::layouts::flat::FlatLayoutMetadata::clear(&mut self) + +pub fn vortex_layout::layouts::flat::FlatLayoutMetadata::encoded_len(&self) -> usize + +pub mod vortex_layout::layouts::repartition + +pub struct vortex_layout::layouts::repartition::RepartitionStrategy + +impl vortex_layout::layouts::repartition::RepartitionStrategy + +pub fn vortex_layout::layouts::repartition::RepartitionStrategy::new(S, vortex_layout::layouts::repartition::RepartitionWriterOptions) -> Self + +impl core::clone::Clone for vortex_layout::layouts::repartition::RepartitionStrategy + +pub fn vortex_layout::layouts::repartition::RepartitionStrategy::clone(&self) -> vortex_layout::layouts::repartition::RepartitionStrategy + +impl vortex_layout::LayoutStrategy for vortex_layout::layouts::repartition::RepartitionStrategy + +pub fn vortex_layout::layouts::repartition::RepartitionStrategy::buffered_bytes(&self) -> u64 + +pub fn vortex_layout::layouts::repartition::RepartitionStrategy::write_stream<'life0, 'life1, 'async_trait>(&'life0 self, vortex_array::ArrayContext, vortex_layout::segments::SegmentSinkRef, vortex_layout::sequence::SendableSequentialStream, vortex_layout::sequence::SequencePointer, &'life1 vortex_session::VortexSession) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait + +pub struct vortex_layout::layouts::repartition::RepartitionWriterOptions + +pub vortex_layout::layouts::repartition::RepartitionWriterOptions::block_len_multiple: usize + +pub vortex_layout::layouts::repartition::RepartitionWriterOptions::block_size_minimum: u64 + +pub vortex_layout::layouts::repartition::RepartitionWriterOptions::block_size_target: core::option::Option + +pub vortex_layout::layouts::repartition::RepartitionWriterOptions::canonicalize: bool + +impl core::clone::Clone for vortex_layout::layouts::repartition::RepartitionWriterOptions + +pub fn vortex_layout::layouts::repartition::RepartitionWriterOptions::clone(&self) -> vortex_layout::layouts::repartition::RepartitionWriterOptions + +pub mod vortex_layout::layouts::row_idx + +pub struct vortex_layout::layouts::row_idx::RowIdx + +impl core::clone::Clone for vortex_layout::layouts::row_idx::RowIdx + +pub fn vortex_layout::layouts::row_idx::RowIdx::clone(&self) -> vortex_layout::layouts::row_idx::RowIdx + +impl vortex_array::scalar_fn::vtable::ScalarFnVTable for vortex_layout::layouts::row_idx::RowIdx + +pub type vortex_layout::layouts::row_idx::RowIdx::Options = vortex_array::scalar_fn::vtable::EmptyOptions + +pub fn vortex_layout::layouts::row_idx::RowIdx::arity(&self, &Self::Options) -> vortex_array::scalar_fn::vtable::Arity + +pub fn vortex_layout::layouts::row_idx::RowIdx::child_name(&self, &Self::Options, usize) -> vortex_array::scalar_fn::vtable::ChildName + +pub fn vortex_layout::layouts::row_idx::RowIdx::execute(&self, &Self::Options, &dyn vortex_array::scalar_fn::vtable::ExecutionArgs, &mut vortex_array::executor::ExecutionCtx) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::row_idx::RowIdx::fmt_sql(&self, &Self::Options, &vortex_array::expr::expression::Expression, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +pub fn vortex_layout::layouts::row_idx::RowIdx::id(&self) -> vortex_array::scalar_fn::ScalarFnId + +pub fn vortex_layout::layouts::row_idx::RowIdx::return_dtype(&self, &Self::Options, &[vortex_array::dtype::DType]) -> vortex_error::VortexResult + +pub struct vortex_layout::layouts::row_idx::RowIdxLayoutReader + +impl vortex_layout::layouts::row_idx::RowIdxLayoutReader + +pub fn vortex_layout::layouts::row_idx::RowIdxLayoutReader::new(u64, alloc::sync::Arc, vortex_session::VortexSession) -> Self + +impl vortex_layout::LayoutReader for vortex_layout::layouts::row_idx::RowIdxLayoutReader + +pub fn vortex_layout::layouts::row_idx::RowIdxLayoutReader::as_any(&self) -> &dyn core::any::Any + +pub fn vortex_layout::layouts::row_idx::RowIdxLayoutReader::dtype(&self) -> &vortex_array::dtype::DType + +pub fn vortex_layout::layouts::row_idx::RowIdxLayoutReader::filter_evaluation(&self, &core::ops::range::Range, &vortex_array::expr::expression::Expression, vortex_array::mask_future::MaskFuture) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::row_idx::RowIdxLayoutReader::name(&self) -> &alloc::sync::Arc + +pub fn vortex_layout::layouts::row_idx::RowIdxLayoutReader::projection_evaluation(&self, &core::ops::range::Range, &vortex_array::expr::expression::Expression, vortex_array::mask_future::MaskFuture) -> vortex_error::VortexResult>> + +pub fn vortex_layout::layouts::row_idx::RowIdxLayoutReader::pruning_evaluation(&self, &core::ops::range::Range, &vortex_array::expr::expression::Expression, vortex_mask::Mask) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::row_idx::RowIdxLayoutReader::register_splits(&self, &[vortex_array::dtype::field_mask::FieldMask], &vortex_layout::SplitRange, &mut alloc::collections::btree::set::BTreeSet) -> vortex_error::VortexResult<()> + +pub fn vortex_layout::layouts::row_idx::RowIdxLayoutReader::row_count(&self) -> u64 + +pub fn vortex_layout::layouts::row_idx::row_idx() -> vortex_array::expr::expression::Expression + +pub mod vortex_layout::layouts::struct_ + +pub struct vortex_layout::layouts::struct_::Struct + +impl core::fmt::Debug for vortex_layout::layouts::struct_::Struct + +pub fn vortex_layout::layouts::struct_::Struct::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl vortex_layout::VTable for vortex_layout::layouts::struct_::Struct + +pub type vortex_layout::layouts::struct_::Struct::Encoding = vortex_layout::layouts::struct_::StructLayoutEncoding + +pub type vortex_layout::layouts::struct_::Struct::Layout = vortex_layout::layouts::struct_::StructLayout + +pub type vortex_layout::layouts::struct_::Struct::Metadata = vortex_array::metadata::EmptyMetadata + +pub fn vortex_layout::layouts::struct_::Struct::build(&Self::Encoding, &vortex_array::dtype::DType, u64, &::Output, alloc::vec::Vec, &dyn vortex_layout::LayoutChildren, &vortex_session::registry::ReadContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::struct_::Struct::child(&Self::Layout, usize) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::struct_::Struct::child_type(&Self::Layout, usize) -> vortex_layout::LayoutChildType + +pub fn vortex_layout::layouts::struct_::Struct::dtype(&Self::Layout) -> &vortex_array::dtype::DType + +pub fn vortex_layout::layouts::struct_::Struct::encoding(&Self::Layout) -> vortex_layout::LayoutEncodingRef + +pub fn vortex_layout::layouts::struct_::Struct::id(&Self::Encoding) -> vortex_layout::LayoutId + +pub fn vortex_layout::layouts::struct_::Struct::metadata(&Self::Layout) -> Self::Metadata + +pub fn vortex_layout::layouts::struct_::Struct::nchildren(&Self::Layout) -> usize + +pub fn vortex_layout::layouts::struct_::Struct::new_reader(&Self::Layout, alloc::sync::Arc, alloc::sync::Arc, &vortex_session::VortexSession, &vortex_layout::LayoutReaderContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::struct_::Struct::row_count(&Self::Layout) -> u64 + +pub fn vortex_layout::layouts::struct_::Struct::segment_ids(&Self::Layout) -> alloc::vec::Vec + +pub fn vortex_layout::layouts::struct_::Struct::with_children(&mut Self::Layout, alloc::vec::Vec) -> vortex_error::VortexResult<()> + +pub struct vortex_layout::layouts::struct_::StructLayout + +impl vortex_layout::layouts::struct_::StructLayout + +pub fn vortex_layout::layouts::struct_::StructLayout::children(&self) -> &alloc::sync::Arc + +pub fn vortex_layout::layouts::struct_::StructLayout::matching_fields(&self, &[vortex_array::dtype::field_mask::FieldMask], F) -> vortex_error::VortexResult<()> where F: core::ops::function::FnMut(vortex_array::dtype::field_mask::FieldMask, usize) -> vortex_error::VortexResult<()> + +pub fn vortex_layout::layouts::struct_::StructLayout::new(u64, vortex_array::dtype::DType, alloc::vec::Vec) -> Self + +pub fn vortex_layout::layouts::struct_::StructLayout::row_count(&self) -> u64 + +pub fn vortex_layout::layouts::struct_::StructLayout::struct_fields(&self) -> &vortex_array::dtype::struct_::StructFields + +impl core::clone::Clone for vortex_layout::layouts::struct_::StructLayout + +pub fn vortex_layout::layouts::struct_::StructLayout::clone(&self) -> vortex_layout::layouts::struct_::StructLayout + +impl core::convert::AsRef for vortex_layout::layouts::struct_::StructLayout + +pub fn vortex_layout::layouts::struct_::StructLayout::as_ref(&self) -> &dyn vortex_layout::Layout + +impl core::convert::From for vortex_layout::LayoutRef + +pub fn vortex_layout::LayoutRef::from(vortex_layout::layouts::struct_::StructLayout) -> vortex_layout::LayoutRef + +impl core::fmt::Debug for vortex_layout::layouts::struct_::StructLayout + +pub fn vortex_layout::layouts::struct_::StructLayout::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::ops::deref::Deref for vortex_layout::layouts::struct_::StructLayout + +pub type vortex_layout::layouts::struct_::StructLayout::Target = dyn vortex_layout::Layout + +pub fn vortex_layout::layouts::struct_::StructLayout::deref(&self) -> &Self::Target + +impl vortex_layout::IntoLayout for vortex_layout::layouts::struct_::StructLayout + +pub fn vortex_layout::layouts::struct_::StructLayout::into_layout(self) -> vortex_layout::LayoutRef + +pub struct vortex_layout::layouts::struct_::StructLayoutEncoding + +impl core::convert::AsRef for vortex_layout::layouts::struct_::StructLayoutEncoding + +pub fn vortex_layout::layouts::struct_::StructLayoutEncoding::as_ref(&self) -> &dyn vortex_layout::LayoutEncoding + +impl core::fmt::Debug for vortex_layout::layouts::struct_::StructLayoutEncoding + +pub fn vortex_layout::layouts::struct_::StructLayoutEncoding::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::ops::deref::Deref for vortex_layout::layouts::struct_::StructLayoutEncoding + +pub type vortex_layout::layouts::struct_::StructLayoutEncoding::Target = dyn vortex_layout::LayoutEncoding + +pub fn vortex_layout::layouts::struct_::StructLayoutEncoding::deref(&self) -> &Self::Target + +pub mod vortex_layout::layouts::table + +pub struct vortex_layout::layouts::table::TableStrategy + +impl vortex_layout::layouts::table::TableStrategy + +pub fn vortex_layout::layouts::table::TableStrategy::new(alloc::sync::Arc, alloc::sync::Arc) -> Self + +pub fn vortex_layout::layouts::table::TableStrategy::with_default_strategy(self, alloc::sync::Arc) -> Self + +pub fn vortex_layout::layouts::table::TableStrategy::with_field_writer(self, impl core::convert::Into, alloc::sync::Arc) -> Self + +pub fn vortex_layout::layouts::table::TableStrategy::with_field_writers(self, impl core::iter::traits::collect::IntoIterator)>) -> Self + +pub fn vortex_layout::layouts::table::TableStrategy::with_validity_strategy(self, alloc::sync::Arc) -> Self + +impl vortex_layout::LayoutStrategy for vortex_layout::layouts::table::TableStrategy + +pub fn vortex_layout::layouts::table::TableStrategy::buffered_bytes(&self) -> u64 + +pub fn vortex_layout::layouts::table::TableStrategy::write_stream<'life0, 'life1, 'async_trait>(&'life0 self, vortex_array::ArrayContext, vortex_layout::segments::SegmentSinkRef, vortex_layout::sequence::SendableSequentialStream, vortex_layout::sequence::SequencePointer, &'life1 vortex_session::VortexSession) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait + +pub mod vortex_layout::layouts::zoned + +pub mod vortex_layout::layouts::zoned::writer + +pub struct vortex_layout::layouts::zoned::writer::ZonedLayoutOptions + +pub vortex_layout::layouts::zoned::writer::ZonedLayoutOptions::block_size: usize + +pub vortex_layout::layouts::zoned::writer::ZonedLayoutOptions::concurrency: usize + +pub vortex_layout::layouts::zoned::writer::ZonedLayoutOptions::max_variable_length_statistics_size: usize + +pub vortex_layout::layouts::zoned::writer::ZonedLayoutOptions::stats: alloc::sync::Arc<[vortex_array::expr::stats::Stat]> + +impl core::default::Default for vortex_layout::layouts::zoned::writer::ZonedLayoutOptions + +pub fn vortex_layout::layouts::zoned::writer::ZonedLayoutOptions::default() -> Self + +pub struct vortex_layout::layouts::zoned::writer::ZonedStrategy + +impl vortex_layout::layouts::zoned::writer::ZonedStrategy + +pub fn vortex_layout::layouts::zoned::writer::ZonedStrategy::new(Child, Stats, vortex_layout::layouts::zoned::writer::ZonedLayoutOptions) -> Self + +impl vortex_layout::LayoutStrategy for vortex_layout::layouts::zoned::writer::ZonedStrategy + +pub fn vortex_layout::layouts::zoned::writer::ZonedStrategy::buffered_bytes(&self) -> u64 + +pub fn vortex_layout::layouts::zoned::writer::ZonedStrategy::write_stream<'life0, 'life1, 'async_trait>(&'life0 self, vortex_array::ArrayContext, vortex_layout::segments::SegmentSinkRef, vortex_layout::sequence::SendableSequentialStream, vortex_layout::sequence::SequencePointer, &'life1 vortex_session::VortexSession) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait + +pub mod vortex_layout::layouts::zoned::zone_map + +pub struct vortex_layout::layouts::zoned::zone_map::ZoneMap + +impl vortex_layout::layouts::zoned::zone_map::ZoneMap + +pub fn vortex_layout::layouts::zoned::zone_map::ZoneMap::dtype_for_stats_table(&vortex_array::dtype::DType, &[vortex_array::expr::stats::Stat]) -> vortex_array::dtype::DType + +pub unsafe fn vortex_layout::layouts::zoned::zone_map::ZoneMap::new_unchecked(vortex_array::arrays::struct_::vtable::StructArray, u64, u64) -> Self + +pub fn vortex_layout::layouts::zoned::zone_map::ZoneMap::prune(&self, &vortex_array::expr::expression::Expression, &vortex_session::VortexSession) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::zoned::zone_map::ZoneMap::try_new(vortex_array::dtype::DType, vortex_array::arrays::struct_::vtable::StructArray, alloc::sync::Arc<[vortex_array::expr::stats::Stat]>, u64, u64) -> vortex_error::VortexResult + +impl core::clone::Clone for vortex_layout::layouts::zoned::zone_map::ZoneMap + +pub fn vortex_layout::layouts::zoned::zone_map::ZoneMap::clone(&self) -> vortex_layout::layouts::zoned::zone_map::ZoneMap + +pub struct vortex_layout::layouts::zoned::Zoned + +impl core::fmt::Debug for vortex_layout::layouts::zoned::Zoned + +pub fn vortex_layout::layouts::zoned::Zoned::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl vortex_layout::VTable for vortex_layout::layouts::zoned::Zoned + +pub type vortex_layout::layouts::zoned::Zoned::Encoding = vortex_layout::layouts::zoned::ZonedLayoutEncoding + +pub type vortex_layout::layouts::zoned::Zoned::Layout = vortex_layout::layouts::zoned::ZonedLayout + +pub type vortex_layout::layouts::zoned::Zoned::Metadata = vortex_layout::layouts::zoned::ZonedMetadata + +pub fn vortex_layout::layouts::zoned::Zoned::build(&Self::Encoding, &vortex_array::dtype::DType, u64, &vortex_layout::layouts::zoned::ZonedMetadata, alloc::vec::Vec, &dyn vortex_layout::LayoutChildren, &vortex_session::registry::ReadContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::zoned::Zoned::child(&Self::Layout, usize) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::zoned::Zoned::child_type(&Self::Layout, usize) -> vortex_layout::LayoutChildType + +pub fn vortex_layout::layouts::zoned::Zoned::dtype(&Self::Layout) -> &vortex_array::dtype::DType + +pub fn vortex_layout::layouts::zoned::Zoned::encoding(&Self::Layout) -> vortex_layout::LayoutEncodingRef + +pub fn vortex_layout::layouts::zoned::Zoned::id(&Self::Encoding) -> vortex_layout::LayoutId + +pub fn vortex_layout::layouts::zoned::Zoned::metadata(&Self::Layout) -> Self::Metadata + +pub fn vortex_layout::layouts::zoned::Zoned::nchildren(&Self::Layout) -> usize + +pub fn vortex_layout::layouts::zoned::Zoned::new_reader(&Self::Layout, alloc::sync::Arc, alloc::sync::Arc, &vortex_session::VortexSession, &vortex_layout::LayoutReaderContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::zoned::Zoned::row_count(&Self::Layout) -> u64 + +pub fn vortex_layout::layouts::zoned::Zoned::segment_ids(&Self::Layout) -> alloc::vec::Vec + +pub fn vortex_layout::layouts::zoned::Zoned::with_children(&mut Self::Layout, alloc::vec::Vec) -> vortex_error::VortexResult<()> + +pub struct vortex_layout::layouts::zoned::ZonedLayout + +impl vortex_layout::layouts::zoned::ZonedLayout + +pub fn vortex_layout::layouts::zoned::ZonedLayout::new(vortex_layout::LayoutRef, vortex_layout::LayoutRef, usize, alloc::sync::Arc<[vortex_array::expr::stats::Stat]>) -> Self + +pub fn vortex_layout::layouts::zoned::ZonedLayout::nzones(&self) -> usize + +pub fn vortex_layout::layouts::zoned::ZonedLayout::present_stats(&self) -> &alloc::sync::Arc<[vortex_array::expr::stats::Stat]> + +pub fn vortex_layout::layouts::zoned::ZonedLayout::zone_len(&self) -> usize + +impl core::clone::Clone for vortex_layout::layouts::zoned::ZonedLayout + +pub fn vortex_layout::layouts::zoned::ZonedLayout::clone(&self) -> vortex_layout::layouts::zoned::ZonedLayout + +impl core::convert::AsRef for vortex_layout::layouts::zoned::ZonedLayout + +pub fn vortex_layout::layouts::zoned::ZonedLayout::as_ref(&self) -> &dyn vortex_layout::Layout + +impl core::convert::From for vortex_layout::LayoutRef + +pub fn vortex_layout::LayoutRef::from(vortex_layout::layouts::zoned::ZonedLayout) -> vortex_layout::LayoutRef + +impl core::fmt::Debug for vortex_layout::layouts::zoned::ZonedLayout + +pub fn vortex_layout::layouts::zoned::ZonedLayout::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::ops::deref::Deref for vortex_layout::layouts::zoned::ZonedLayout + +pub type vortex_layout::layouts::zoned::ZonedLayout::Target = dyn vortex_layout::Layout + +pub fn vortex_layout::layouts::zoned::ZonedLayout::deref(&self) -> &Self::Target + +impl vortex_layout::IntoLayout for vortex_layout::layouts::zoned::ZonedLayout + +pub fn vortex_layout::layouts::zoned::ZonedLayout::into_layout(self) -> vortex_layout::LayoutRef + +pub struct vortex_layout::layouts::zoned::ZonedLayoutEncoding + +impl core::convert::AsRef for vortex_layout::layouts::zoned::ZonedLayoutEncoding + +pub fn vortex_layout::layouts::zoned::ZonedLayoutEncoding::as_ref(&self) -> &dyn vortex_layout::LayoutEncoding + +impl core::fmt::Debug for vortex_layout::layouts::zoned::ZonedLayoutEncoding + +pub fn vortex_layout::layouts::zoned::ZonedLayoutEncoding::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::ops::deref::Deref for vortex_layout::layouts::zoned::ZonedLayoutEncoding + +pub type vortex_layout::layouts::zoned::ZonedLayoutEncoding::Target = dyn vortex_layout::LayoutEncoding + +pub fn vortex_layout::layouts::zoned::ZonedLayoutEncoding::deref(&self) -> &Self::Target + +pub struct vortex_layout::layouts::zoned::ZonedMetadata + +impl core::clone::Clone for vortex_layout::layouts::zoned::ZonedMetadata + +pub fn vortex_layout::layouts::zoned::ZonedMetadata::clone(&self) -> vortex_layout::layouts::zoned::ZonedMetadata + +impl core::cmp::Eq for vortex_layout::layouts::zoned::ZonedMetadata + +impl core::cmp::PartialEq for vortex_layout::layouts::zoned::ZonedMetadata + +pub fn vortex_layout::layouts::zoned::ZonedMetadata::eq(&self, &vortex_layout::layouts::zoned::ZonedMetadata) -> bool + +impl core::fmt::Debug for vortex_layout::layouts::zoned::ZonedMetadata + +pub fn vortex_layout::layouts::zoned::ZonedMetadata::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::marker::StructuralPartialEq for vortex_layout::layouts::zoned::ZonedMetadata + +impl vortex_array::metadata::DeserializeMetadata for vortex_layout::layouts::zoned::ZonedMetadata + +pub type vortex_layout::layouts::zoned::ZonedMetadata::Output = vortex_layout::layouts::zoned::ZonedMetadata + +pub fn vortex_layout::layouts::zoned::ZonedMetadata::deserialize(&[u8]) -> vortex_error::VortexResult + +impl vortex_array::metadata::SerializeMetadata for vortex_layout::layouts::zoned::ZonedMetadata + +pub fn vortex_layout::layouts::zoned::ZonedMetadata::serialize(self) -> alloc::vec::Vec + +pub const vortex_layout::layouts::zoned::MAX_IS_TRUNCATED: &str + +pub const vortex_layout::layouts::zoned::MIN_IS_TRUNCATED: &str + +pub type vortex_layout::layouts::SharedArrayFuture = futures_util::future::future::shared::Shared>> + +pub mod vortex_layout::scan + +pub mod vortex_layout::scan::arrow + +pub struct vortex_layout::scan::arrow::RecordBatchIteratorAdapter + +impl vortex_layout::scan::arrow::RecordBatchIteratorAdapter + +pub fn vortex_layout::scan::arrow::RecordBatchIteratorAdapter::new(I, arrow_schema::schema::SchemaRef) -> Self + +impl core::clone::Clone for vortex_layout::scan::arrow::RecordBatchIteratorAdapter + +pub fn vortex_layout::scan::arrow::RecordBatchIteratorAdapter::clone(&self) -> vortex_layout::scan::arrow::RecordBatchIteratorAdapter + +impl arrow_array::record_batch::RecordBatchReader for vortex_layout::scan::arrow::RecordBatchIteratorAdapter where I: core::iter::traits::iterator::Iterator> + +pub fn vortex_layout::scan::arrow::RecordBatchIteratorAdapter::schema(&self) -> arrow_schema::schema::SchemaRef + +impl core::iter::traits::iterator::Iterator for vortex_layout::scan::arrow::RecordBatchIteratorAdapter where I: core::iter::traits::iterator::Iterator> + +pub type vortex_layout::scan::arrow::RecordBatchIteratorAdapter::Item = core::result::Result + +pub fn vortex_layout::scan::arrow::RecordBatchIteratorAdapter::next(&mut self) -> core::option::Option + +pub mod vortex_layout::scan::layout + +pub struct vortex_layout::scan::layout::LayoutReaderDataSource + +impl vortex_layout::scan::layout::LayoutReaderDataSource + +pub fn vortex_layout::scan::layout::LayoutReaderDataSource::new(vortex_layout::LayoutReaderRef, vortex_session::VortexSession) -> Self + +pub fn vortex_layout::scan::layout::LayoutReaderDataSource::with_metrics_registry(self, alloc::sync::Arc) -> Self + +pub fn vortex_layout::scan::layout::LayoutReaderDataSource::with_some_metrics_registry(self, core::option::Option>) -> Self + +pub fn vortex_layout::scan::layout::LayoutReaderDataSource::with_split_max_row_count(self, u64) -> Self + +impl vortex_scan::DataSource for vortex_layout::scan::layout::LayoutReaderDataSource + +pub fn vortex_layout::scan::layout::LayoutReaderDataSource::byte_size(&self) -> core::option::Option> + +pub fn vortex_layout::scan::layout::LayoutReaderDataSource::deserialize_partition(&self, &[u8], &vortex_session::VortexSession) -> vortex_error::VortexResult + +pub fn vortex_layout::scan::layout::LayoutReaderDataSource::dtype(&self) -> &vortex_array::dtype::DType + +pub fn vortex_layout::scan::layout::LayoutReaderDataSource::field_statistics<'life0, 'life1, 'async_trait>(&'life0 self, &'life1 vortex_array::dtype::field::FieldPath) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait + +pub fn vortex_layout::scan::layout::LayoutReaderDataSource::row_count(&self) -> core::option::Option> + +pub fn vortex_layout::scan::layout::LayoutReaderDataSource::scan<'life0, 'async_trait>(&'life0 self, vortex_scan::ScanRequest) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait + +pub mod vortex_layout::scan::multi + +pub enum vortex_layout::scan::multi::MultiLayoutChild + +pub vortex_layout::scan::multi::MultiLayoutChild::Deferred(alloc::sync::Arc) + +pub vortex_layout::scan::multi::MultiLayoutChild::Opened(vortex_layout::LayoutReaderRef) + +pub struct vortex_layout::scan::multi::MultiLayoutDataSource + +impl vortex_layout::scan::multi::MultiLayoutDataSource + +pub fn vortex_layout::scan::multi::MultiLayoutDataSource::children(&self) -> &alloc::vec::Vec + +pub fn vortex_layout::scan::multi::MultiLayoutDataSource::new_deferred(vortex_array::dtype::DType, alloc::vec::Vec>, &vortex_session::VortexSession) -> Self + +pub fn vortex_layout::scan::multi::MultiLayoutDataSource::new_with_first(vortex_layout::LayoutReaderRef, alloc::vec::Vec>, &vortex_session::VortexSession) -> Self + +pub fn vortex_layout::scan::multi::MultiLayoutDataSource::with_concurrency(self, usize) -> Self + +impl vortex_scan::DataSource for vortex_layout::scan::multi::MultiLayoutDataSource + +pub fn vortex_layout::scan::multi::MultiLayoutDataSource::deserialize_partition(&self, &[u8], &vortex_session::VortexSession) -> vortex_error::VortexResult + +pub fn vortex_layout::scan::multi::MultiLayoutDataSource::dtype(&self) -> &vortex_array::dtype::DType + +pub fn vortex_layout::scan::multi::MultiLayoutDataSource::field_statistics<'life0, 'life1, 'async_trait>(&'life0 self, &'life1 vortex_array::dtype::field::FieldPath) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait + +pub fn vortex_layout::scan::multi::MultiLayoutDataSource::row_count(&self) -> core::option::Option> + +pub fn vortex_layout::scan::multi::MultiLayoutDataSource::scan<'life0, 'async_trait>(&'life0 self, vortex_scan::ScanRequest) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait + +pub trait vortex_layout::scan::multi::LayoutReaderFactory: 'static + core::marker::Send + core::marker::Sync + +pub fn vortex_layout::scan::multi::LayoutReaderFactory::open<'life0, 'async_trait>(&'life0 self) -> core::pin::Pin>> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait + +pub mod vortex_layout::scan::repeated_scan + +pub struct vortex_layout::scan::repeated_scan::RepeatedScan + +impl vortex_layout::scan::repeated_scan::RepeatedScan + +pub fn vortex_layout::scan::repeated_scan::RepeatedScan::dtype(&self) -> &vortex_array::dtype::DType + +pub fn vortex_layout::scan::repeated_scan::RepeatedScan::execute_array_iter(&self, core::option::Option>, &B) -> vortex_error::VortexResult + +pub fn vortex_layout::scan::repeated_scan::RepeatedScan::execute_array_stream(&self, core::option::Option>) -> vortex_error::VortexResult + +impl vortex_layout::scan::repeated_scan::RepeatedScan + +pub fn vortex_layout::scan::repeated_scan::RepeatedScan::execute(&self, core::option::Option>) -> vortex_error::VortexResult>>>> + +pub fn vortex_layout::scan::repeated_scan::RepeatedScan::execute_stream(&self, core::option::Option>) -> vortex_error::VortexResult> + core::marker::Send + 'static + use> + +pub fn vortex_layout::scan::repeated_scan::RepeatedScan::new(vortex_session::VortexSession, vortex_layout::LayoutReaderRef, vortex_array::expr::expression::Expression, core::option::Option, bool, core::option::Option>, vortex_scan::selection::Selection, vortex_layout::scan::splits::Splits, usize, alloc::sync::Arc<(dyn core::ops::function::Fn(vortex_array::array::erased::ArrayRef) -> vortex_error::VortexResult + core::marker::Send + core::marker::Sync)>, core::option::Option, vortex_array::dtype::DType) -> Self + +pub mod vortex_layout::scan::scan_builder + +pub struct vortex_layout::scan::scan_builder::ScanBuilder + +impl vortex_layout::scan::scan_builder::ScanBuilder + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::into_array_iter(self, &B) -> vortex_error::VortexResult + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::into_array_stream(self) -> vortex_error::VortexResult + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::new(vortex_session::VortexSession, alloc::sync::Arc) -> Self + +impl vortex_layout::scan::scan_builder::ScanBuilder + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::into_record_batch_reader(self, arrow_schema::schema::SchemaRef, &B) -> vortex_error::VortexResult + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::into_record_batch_stream(self, arrow_schema::schema::SchemaRef) -> vortex_error::VortexResult> + core::marker::Send + 'static> + +impl vortex_layout::scan::scan_builder::ScanBuilder + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::build(self) -> vortex_error::VortexResult>>>> + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::concurrency(&self) -> usize + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::dtype(&self) -> vortex_error::VortexResult + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::into_iter(self, &B) -> vortex_error::VortexResult> + 'static> + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::into_stream(self) -> vortex_error::VortexResult> + core::marker::Send + 'static + use> + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::map(self, impl core::ops::function::Fn(A) -> vortex_error::VortexResult + 'static + core::marker::Send + core::marker::Sync) -> vortex_layout::scan::scan_builder::ScanBuilder + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::ordered(&self) -> bool + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::prepare(self) -> vortex_error::VortexResult> + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::session(&self) -> &vortex_session::VortexSession + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::with_concurrency(self, usize) -> Self + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::with_filter(self, vortex_array::expr::expression::Expression) -> Self + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::with_limit(self, u64) -> Self + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::with_metrics_registry(self, alloc::sync::Arc) -> Self + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::with_ordered(self, bool) -> Self + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::with_projection(self, vortex_array::expr::expression::Expression) -> Self + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::with_row_indices(self, vortex_buffer::buffer::Buffer) -> Self + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::with_row_offset(self, u64) -> Self + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::with_row_range(self, core::ops::range::Range) -> Self + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::with_selection(self, vortex_scan::selection::Selection) -> Self + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::with_some_filter(self, core::option::Option) -> Self + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::with_some_limit(self, core::option::Option) -> Self + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::with_some_metrics_registry(self, core::option::Option>) -> Self + +pub fn vortex_layout::scan::scan_builder::ScanBuilder::with_split_by(self, vortex_layout::scan::split_by::SplitBy) -> Self + +pub fn vortex_layout::scan::scan_builder::filter_and_projection_masks(&vortex_array::expr::expression::Expression, core::option::Option<&vortex_array::expr::expression::Expression>, &vortex_array::dtype::DType) -> vortex_error::VortexResult<(alloc::vec::Vec, alloc::vec::Vec)> + +pub mod vortex_layout::scan::split_by + +pub enum vortex_layout::scan::split_by::SplitBy + +pub vortex_layout::scan::split_by::SplitBy::Layout + +pub vortex_layout::scan::split_by::SplitBy::RowCount(usize) + +impl vortex_layout::scan::split_by::SplitBy + +pub fn vortex_layout::scan::split_by::SplitBy::splits(&self, &dyn vortex_layout::LayoutReader, &core::ops::range::Range, &[vortex_array::dtype::field_mask::FieldMask]) -> vortex_error::VortexResult> + +impl core::clone::Clone for vortex_layout::scan::split_by::SplitBy + +pub fn vortex_layout::scan::split_by::SplitBy::clone(&self) -> vortex_layout::scan::split_by::SplitBy + +impl core::default::Default for vortex_layout::scan::split_by::SplitBy + +pub fn vortex_layout::scan::split_by::SplitBy::default() -> vortex_layout::scan::split_by::SplitBy + +impl core::fmt::Debug for vortex_layout::scan::split_by::SplitBy + +pub fn vortex_layout::scan::split_by::SplitBy::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::marker::Copy for vortex_layout::scan::split_by::SplitBy + +pub mod vortex_layout::segments + +pub struct vortex_layout::segments::InstrumentedSegmentCache + +impl vortex_layout::segments::InstrumentedSegmentCache + +pub fn vortex_layout::segments::InstrumentedSegmentCache::new(C, &dyn vortex_metrics::MetricsRegistry, alloc::vec::Vec) -> Self + +impl vortex_layout::segments::SegmentCache for vortex_layout::segments::InstrumentedSegmentCache + +pub fn vortex_layout::segments::InstrumentedSegmentCache::get<'life0, 'async_trait>(&'life0 self, vortex_layout::segments::SegmentId) -> core::pin::Pin>> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait + +pub fn vortex_layout::segments::InstrumentedSegmentCache::put<'life0, 'async_trait>(&'life0 self, vortex_layout::segments::SegmentId, vortex_buffer::ByteBuffer) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait + +pub struct vortex_layout::segments::MokaSegmentCache(_) + +impl vortex_layout::segments::MokaSegmentCache + +pub fn vortex_layout::segments::MokaSegmentCache::new(u64) -> Self + +impl vortex_layout::segments::SegmentCache for vortex_layout::segments::MokaSegmentCache + +pub fn vortex_layout::segments::MokaSegmentCache::get<'life0, 'async_trait>(&'life0 self, vortex_layout::segments::SegmentId) -> core::pin::Pin>> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait + +pub fn vortex_layout::segments::MokaSegmentCache::put<'life0, 'async_trait>(&'life0 self, vortex_layout::segments::SegmentId, vortex_buffer::ByteBuffer) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait + +pub struct vortex_layout::segments::NoOpSegmentCache + +impl vortex_layout::segments::SegmentCache for vortex_layout::segments::NoOpSegmentCache + +pub fn vortex_layout::segments::NoOpSegmentCache::get<'life0, 'async_trait>(&'life0 self, vortex_layout::segments::SegmentId) -> core::pin::Pin>> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait + +pub fn vortex_layout::segments::NoOpSegmentCache::put<'life0, 'async_trait>(&'life0 self, vortex_layout::segments::SegmentId, vortex_buffer::ByteBuffer) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait + +pub struct vortex_layout::segments::SegmentCacheSourceAdapter + +impl vortex_layout::segments::SegmentCacheSourceAdapter + +pub fn vortex_layout::segments::SegmentCacheSourceAdapter::new(alloc::sync::Arc, alloc::sync::Arc) -> Self + +impl vortex_layout::segments::SegmentSource for vortex_layout::segments::SegmentCacheSourceAdapter + +pub fn vortex_layout::segments::SegmentCacheSourceAdapter::request(&self, vortex_layout::segments::SegmentId) -> vortex_layout::segments::SegmentFuture + +pub struct vortex_layout::segments::SegmentId(_) + +impl core::clone::Clone for vortex_layout::segments::SegmentId + +pub fn vortex_layout::segments::SegmentId::clone(&self) -> vortex_layout::segments::SegmentId + +impl core::cmp::Eq for vortex_layout::segments::SegmentId + +impl core::cmp::Ord for vortex_layout::segments::SegmentId + +pub fn vortex_layout::segments::SegmentId::cmp(&self, &vortex_layout::segments::SegmentId) -> core::cmp::Ordering + +impl core::cmp::PartialEq for vortex_layout::segments::SegmentId + +pub fn vortex_layout::segments::SegmentId::eq(&self, &vortex_layout::segments::SegmentId) -> bool + +impl core::cmp::PartialOrd for vortex_layout::segments::SegmentId + +pub fn vortex_layout::segments::SegmentId::partial_cmp(&self, &vortex_layout::segments::SegmentId) -> core::option::Option + +impl core::convert::From for vortex_layout::segments::SegmentId + +pub fn vortex_layout::segments::SegmentId::from(u32) -> Self + +impl core::convert::TryFrom for vortex_layout::segments::SegmentId + +pub type vortex_layout::segments::SegmentId::Error = vortex_error::VortexError + +pub fn vortex_layout::segments::SegmentId::try_from(usize) -> core::result::Result + +impl core::default::Default for vortex_layout::segments::SegmentId + +pub fn vortex_layout::segments::SegmentId::default() -> vortex_layout::segments::SegmentId + +impl core::fmt::Debug for vortex_layout::segments::SegmentId + +pub fn vortex_layout::segments::SegmentId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::fmt::Display for vortex_layout::segments::SegmentId + +pub fn vortex_layout::segments::SegmentId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::hash::Hash for vortex_layout::segments::SegmentId + +pub fn vortex_layout::segments::SegmentId::hash<__H: core::hash::Hasher>(&self, &mut __H) + +impl core::marker::Copy for vortex_layout::segments::SegmentId + +impl core::marker::StructuralPartialEq for vortex_layout::segments::SegmentId + +impl core::ops::deref::Deref for vortex_layout::segments::SegmentId + +pub type vortex_layout::segments::SegmentId::Target = u32 + +pub fn vortex_layout::segments::SegmentId::deref(&self) -> &Self::Target + +pub struct vortex_layout::segments::SharedSegmentSource + +impl vortex_layout::segments::SharedSegmentSource + +pub fn vortex_layout::segments::SharedSegmentSource::new(S) -> Self + +impl vortex_layout::segments::SegmentSource for vortex_layout::segments::SharedSegmentSource + +pub fn vortex_layout::segments::SharedSegmentSource::request(&self, vortex_layout::segments::SegmentId) -> vortex_layout::segments::SegmentFuture + +pub trait vortex_layout::segments::SegmentCache: core::marker::Send + core::marker::Sync + +pub fn vortex_layout::segments::SegmentCache::get<'life0, 'async_trait>(&'life0 self, vortex_layout::segments::SegmentId) -> core::pin::Pin>> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait + +pub fn vortex_layout::segments::SegmentCache::put<'life0, 'async_trait>(&'life0 self, vortex_layout::segments::SegmentId, vortex_buffer::ByteBuffer) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait + +impl vortex_layout::segments::SegmentCache for vortex_layout::segments::MokaSegmentCache + +pub fn vortex_layout::segments::MokaSegmentCache::get<'life0, 'async_trait>(&'life0 self, vortex_layout::segments::SegmentId) -> core::pin::Pin>> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait + +pub fn vortex_layout::segments::MokaSegmentCache::put<'life0, 'async_trait>(&'life0 self, vortex_layout::segments::SegmentId, vortex_buffer::ByteBuffer) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait + +impl vortex_layout::segments::SegmentCache for vortex_layout::segments::NoOpSegmentCache + +pub fn vortex_layout::segments::NoOpSegmentCache::get<'life0, 'async_trait>(&'life0 self, vortex_layout::segments::SegmentId) -> core::pin::Pin>> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait + +pub fn vortex_layout::segments::NoOpSegmentCache::put<'life0, 'async_trait>(&'life0 self, vortex_layout::segments::SegmentId, vortex_buffer::ByteBuffer) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait + +impl vortex_layout::segments::SegmentCache for vortex_layout::segments::InstrumentedSegmentCache + +pub fn vortex_layout::segments::InstrumentedSegmentCache::get<'life0, 'async_trait>(&'life0 self, vortex_layout::segments::SegmentId) -> core::pin::Pin>> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait + +pub fn vortex_layout::segments::InstrumentedSegmentCache::put<'life0, 'async_trait>(&'life0 self, vortex_layout::segments::SegmentId, vortex_buffer::ByteBuffer) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait + +pub trait vortex_layout::segments::SegmentSink: core::marker::Send + core::marker::Sync + +pub fn vortex_layout::segments::SegmentSink::write<'life0, 'async_trait>(&'life0 self, vortex_layout::sequence::SequenceId, alloc::vec::Vec) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait + +pub trait vortex_layout::segments::SegmentSource: 'static + core::marker::Send + core::marker::Sync + +pub fn vortex_layout::segments::SegmentSource::request(&self, vortex_layout::segments::SegmentId) -> vortex_layout::segments::SegmentFuture + +impl vortex_layout::segments::SegmentSource for vortex_layout::segments::SegmentCacheSourceAdapter + +pub fn vortex_layout::segments::SegmentCacheSourceAdapter::request(&self, vortex_layout::segments::SegmentId) -> vortex_layout::segments::SegmentFuture + +impl vortex_layout::segments::SegmentSource for vortex_layout::segments::SharedSegmentSource + +pub fn vortex_layout::segments::SharedSegmentSource::request(&self, vortex_layout::segments::SegmentId) -> vortex_layout::segments::SegmentFuture + +pub type vortex_layout::segments::SegmentFuture = futures_core::future::BoxFuture<'static, vortex_error::VortexResult> + +pub type vortex_layout::segments::SegmentSinkRef = alloc::sync::Arc + +pub mod vortex_layout::sequence + +pub struct vortex_layout::sequence::SequenceId + +impl vortex_layout::sequence::SequenceId + +pub async fn vortex_layout::sequence::SequenceId::collapse(&mut self) + +pub fn vortex_layout::sequence::SequenceId::descend(self) -> vortex_layout::sequence::SequencePointer + +pub fn vortex_layout::sequence::SequenceId::root() -> vortex_layout::sequence::SequencePointer + +impl core::cmp::Eq for vortex_layout::sequence::SequenceId + +impl core::cmp::Ord for vortex_layout::sequence::SequenceId + +pub fn vortex_layout::sequence::SequenceId::cmp(&self, &Self) -> core::cmp::Ordering + +impl core::cmp::PartialEq for vortex_layout::sequence::SequenceId + +pub fn vortex_layout::sequence::SequenceId::eq(&self, &Self) -> bool + +impl core::cmp::PartialOrd for vortex_layout::sequence::SequenceId + +pub fn vortex_layout::sequence::SequenceId::partial_cmp(&self, &Self) -> core::option::Option + +impl core::fmt::Debug for vortex_layout::sequence::SequenceId + +pub fn vortex_layout::sequence::SequenceId::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::hash::Hash for vortex_layout::sequence::SequenceId + +pub fn vortex_layout::sequence::SequenceId::hash(&self, &mut H) + +impl core::ops::drop::Drop for vortex_layout::sequence::SequenceId + +pub fn vortex_layout::sequence::SequenceId::drop(&mut self) + +pub struct vortex_layout::sequence::SequencePointer(_) + +impl vortex_layout::sequence::SequencePointer + +pub fn vortex_layout::sequence::SequencePointer::advance(&mut self) -> vortex_layout::sequence::SequenceId + +pub fn vortex_layout::sequence::SequencePointer::downgrade(self) -> vortex_layout::sequence::SequenceId + +pub fn vortex_layout::sequence::SequencePointer::split(self) -> (vortex_layout::sequence::SequencePointer, vortex_layout::sequence::SequencePointer) + +pub fn vortex_layout::sequence::SequencePointer::split_off(&mut self) -> vortex_layout::sequence::SequencePointer + +impl core::fmt::Debug for vortex_layout::sequence::SequencePointer + +pub fn vortex_layout::sequence::SequencePointer::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +pub struct vortex_layout::sequence::SequentialStreamAdapter + +impl vortex_layout::sequence::SequentialStreamAdapter + +pub fn vortex_layout::sequence::SequentialStreamAdapter::new(vortex_array::dtype::DType, S) -> Self + +impl<'__pin, S> core::marker::Unpin for vortex_layout::sequence::SequentialStreamAdapter where pin_project_lite::__private::PinnedFieldsOf<__Origin<'__pin, S>>: core::marker::Unpin + +impl futures_core::stream::Stream for vortex_layout::sequence::SequentialStreamAdapter where S: futures_core::stream::Stream> + +pub type vortex_layout::sequence::SequentialStreamAdapter::Item = core::result::Result<(vortex_layout::sequence::SequenceId, vortex_array::array::erased::ArrayRef), vortex_error::VortexError> + +pub fn vortex_layout::sequence::SequentialStreamAdapter::poll_next(core::pin::Pin<&mut Self>, &mut core::task::wake::Context<'_>) -> core::task::poll::Poll> + +pub fn vortex_layout::sequence::SequentialStreamAdapter::size_hint(&self) -> (usize, core::option::Option) + +impl vortex_layout::sequence::SequentialStream for vortex_layout::sequence::SequentialStreamAdapter where S: futures_core::stream::Stream> + +pub fn vortex_layout::sequence::SequentialStreamAdapter::dtype(&self) -> &vortex_array::dtype::DType + +pub trait vortex_layout::sequence::SequentialArrayStreamExt: vortex_array::stream::ArrayStream + +pub fn vortex_layout::sequence::SequentialArrayStreamExt::sequenced(self, vortex_layout::sequence::SequencePointer) -> vortex_layout::sequence::SendableSequentialStream where Self: core::marker::Sized + core::marker::Send + 'static + +impl vortex_layout::sequence::SequentialArrayStreamExt for S + +pub fn S::sequenced(self, vortex_layout::sequence::SequencePointer) -> vortex_layout::sequence::SendableSequentialStream where Self: core::marker::Sized + core::marker::Send + 'static + +pub trait vortex_layout::sequence::SequentialStream: futures_core::stream::Stream> + +pub fn vortex_layout::sequence::SequentialStream::dtype(&self) -> &vortex_array::dtype::DType + +impl vortex_layout::sequence::SequentialStream for vortex_layout::sequence::SendableSequentialStream + +pub fn vortex_layout::sequence::SendableSequentialStream::dtype(&self) -> &vortex_array::dtype::DType + +impl vortex_layout::sequence::SequentialStream for vortex_layout::sequence::SequentialStreamAdapter where S: futures_core::stream::Stream> + +pub fn vortex_layout::sequence::SequentialStreamAdapter::dtype(&self) -> &vortex_array::dtype::DType + +pub trait vortex_layout::sequence::SequentialStreamExt: vortex_layout::sequence::SequentialStream + +pub fn vortex_layout::sequence::SequentialStreamExt::sendable(self) -> vortex_layout::sequence::SendableSequentialStream where Self: core::marker::Sized + core::marker::Send + 'static + +impl vortex_layout::sequence::SequentialStreamExt for S + +pub fn S::sendable(self) -> vortex_layout::sequence::SendableSequentialStream where Self: core::marker::Sized + core::marker::Send + 'static + +pub type vortex_layout::sequence::SendableSequentialStream = core::pin::Pin> + +pub mod vortex_layout::session + +pub struct vortex_layout::session::LayoutSession + +impl vortex_layout::session::LayoutSession + +pub fn vortex_layout::session::LayoutSession::register(&self, vortex_layout::LayoutEncodingRef) + +pub fn vortex_layout::session::LayoutSession::register_many(&self, impl core::iter::traits::collect::IntoIterator) + +pub fn vortex_layout::session::LayoutSession::registry(&self) -> &vortex_layout::session::LayoutRegistry + +impl core::default::Default for vortex_layout::session::LayoutSession + +pub fn vortex_layout::session::LayoutSession::default() -> Self + +impl core::fmt::Debug for vortex_layout::session::LayoutSession + +pub fn vortex_layout::session::LayoutSession::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl vortex_session::SessionVar for vortex_layout::session::LayoutSession + +pub fn vortex_layout::session::LayoutSession::as_any(&self) -> &dyn core::any::Any + +pub fn vortex_layout::session::LayoutSession::as_any_mut(&mut self) -> &mut dyn core::any::Any + +pub trait vortex_layout::session::LayoutSessionExt: vortex_session::SessionExt + +pub fn vortex_layout::session::LayoutSessionExt::layouts(&self) -> vortex_session::Ref<'_, vortex_layout::session::LayoutSession> + +impl vortex_layout::session::LayoutSessionExt for S + +pub fn S::layouts(&self) -> vortex_session::Ref<'_, vortex_layout::session::LayoutSession> + +pub type vortex_layout::session::LayoutRegistry = vortex_session::registry::Registry + +pub mod vortex_layout::vtable + +pub trait vortex_layout::vtable::VTable: 'static + core::marker::Sized + core::marker::Send + core::marker::Sync + core::fmt::Debug + +pub type vortex_layout::vtable::VTable::Encoding: 'static + core::marker::Send + core::marker::Sync + core::ops::deref::Deref + +pub type vortex_layout::vtable::VTable::Layout: 'static + core::marker::Send + core::marker::Sync + core::clone::Clone + core::fmt::Debug + core::ops::deref::Deref + vortex_layout::IntoLayout + +pub type vortex_layout::vtable::VTable::Metadata: vortex_array::metadata::SerializeMetadata + vortex_array::metadata::DeserializeMetadata + core::fmt::Debug + +pub fn vortex_layout::vtable::VTable::build(&Self::Encoding, &vortex_array::dtype::DType, u64, &::Output, alloc::vec::Vec, &dyn vortex_layout::LayoutChildren, &vortex_session::registry::ReadContext) -> vortex_error::VortexResult + +pub fn vortex_layout::vtable::VTable::child(&Self::Layout, usize) -> vortex_error::VortexResult + +pub fn vortex_layout::vtable::VTable::child_type(&Self::Layout, usize) -> vortex_layout::LayoutChildType + +pub fn vortex_layout::vtable::VTable::dtype(&Self::Layout) -> &vortex_array::dtype::DType + +pub fn vortex_layout::vtable::VTable::encoding(&Self::Layout) -> vortex_layout::LayoutEncodingRef + +pub fn vortex_layout::vtable::VTable::id(&Self::Encoding) -> vortex_layout::LayoutId + +pub fn vortex_layout::vtable::VTable::metadata(&Self::Layout) -> Self::Metadata + +pub fn vortex_layout::vtable::VTable::nchildren(&Self::Layout) -> usize + +pub fn vortex_layout::vtable::VTable::new_reader(&Self::Layout, alloc::sync::Arc, alloc::sync::Arc, &vortex_session::VortexSession, &vortex_layout::LayoutReaderContext) -> vortex_error::VortexResult + +pub fn vortex_layout::vtable::VTable::row_count(&Self::Layout) -> u64 + +pub fn vortex_layout::vtable::VTable::segment_ids(&Self::Layout) -> alloc::vec::Vec + +pub fn vortex_layout::vtable::VTable::with_children(&mut Self::Layout, alloc::vec::Vec) -> vortex_error::VortexResult<()> + +impl vortex_layout::VTable for vortex_layout::layouts::chunked::Chunked + +pub type vortex_layout::layouts::chunked::Chunked::Encoding = vortex_layout::layouts::chunked::ChunkedLayoutEncoding + +pub type vortex_layout::layouts::chunked::Chunked::Layout = vortex_layout::layouts::chunked::ChunkedLayout + +pub type vortex_layout::layouts::chunked::Chunked::Metadata = vortex_array::metadata::EmptyMetadata + +pub fn vortex_layout::layouts::chunked::Chunked::build(&Self::Encoding, &vortex_array::dtype::DType, u64, &::Output, alloc::vec::Vec, &dyn vortex_layout::LayoutChildren, &vortex_session::registry::ReadContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::chunked::Chunked::child(&Self::Layout, usize) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::chunked::Chunked::child_type(&Self::Layout, usize) -> vortex_layout::LayoutChildType + +pub fn vortex_layout::layouts::chunked::Chunked::dtype(&Self::Layout) -> &vortex_array::dtype::DType + +pub fn vortex_layout::layouts::chunked::Chunked::encoding(&Self::Layout) -> vortex_layout::LayoutEncodingRef + +pub fn vortex_layout::layouts::chunked::Chunked::id(&Self::Encoding) -> vortex_layout::LayoutId + +pub fn vortex_layout::layouts::chunked::Chunked::metadata(&Self::Layout) -> Self::Metadata + +pub fn vortex_layout::layouts::chunked::Chunked::nchildren(&Self::Layout) -> usize + +pub fn vortex_layout::layouts::chunked::Chunked::new_reader(&Self::Layout, alloc::sync::Arc, alloc::sync::Arc, &vortex_session::VortexSession, &vortex_layout::LayoutReaderContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::chunked::Chunked::row_count(&Self::Layout) -> u64 + +pub fn vortex_layout::layouts::chunked::Chunked::segment_ids(&Self::Layout) -> alloc::vec::Vec + +pub fn vortex_layout::layouts::chunked::Chunked::with_children(&mut Self::Layout, alloc::vec::Vec) -> vortex_error::VortexResult<()> + +impl vortex_layout::VTable for vortex_layout::layouts::dict::Dict + +pub type vortex_layout::layouts::dict::Dict::Encoding = vortex_layout::layouts::dict::DictLayoutEncoding + +pub type vortex_layout::layouts::dict::Dict::Layout = vortex_layout::layouts::dict::DictLayout + +pub type vortex_layout::layouts::dict::Dict::Metadata = vortex_array::metadata::ProstMetadata + +pub fn vortex_layout::layouts::dict::Dict::build(&Self::Encoding, &vortex_array::dtype::DType, u64, &::Output, alloc::vec::Vec, &dyn vortex_layout::LayoutChildren, &vortex_session::registry::ReadContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::dict::Dict::child(&Self::Layout, usize) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::dict::Dict::child_type(&Self::Layout, usize) -> vortex_layout::LayoutChildType + +pub fn vortex_layout::layouts::dict::Dict::dtype(&Self::Layout) -> &vortex_array::dtype::DType + +pub fn vortex_layout::layouts::dict::Dict::encoding(&Self::Layout) -> vortex_layout::LayoutEncodingRef + +pub fn vortex_layout::layouts::dict::Dict::id(&Self::Encoding) -> vortex_layout::LayoutId + +pub fn vortex_layout::layouts::dict::Dict::metadata(&Self::Layout) -> Self::Metadata + +pub fn vortex_layout::layouts::dict::Dict::nchildren(&Self::Layout) -> usize + +pub fn vortex_layout::layouts::dict::Dict::new_reader(&Self::Layout, alloc::sync::Arc, alloc::sync::Arc, &vortex_session::VortexSession, &vortex_layout::LayoutReaderContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::dict::Dict::row_count(&Self::Layout) -> u64 + +pub fn vortex_layout::layouts::dict::Dict::segment_ids(&Self::Layout) -> alloc::vec::Vec + +pub fn vortex_layout::layouts::dict::Dict::with_children(&mut Self::Layout, alloc::vec::Vec) -> vortex_error::VortexResult<()> + +impl vortex_layout::VTable for vortex_layout::layouts::flat::Flat + +pub type vortex_layout::layouts::flat::Flat::Encoding = vortex_layout::layouts::flat::FlatLayoutEncoding + +pub type vortex_layout::layouts::flat::Flat::Layout = vortex_layout::layouts::flat::FlatLayout + +pub type vortex_layout::layouts::flat::Flat::Metadata = vortex_array::metadata::ProstMetadata + +pub fn vortex_layout::layouts::flat::Flat::build(&Self::Encoding, &vortex_array::dtype::DType, u64, &::Output, alloc::vec::Vec, &dyn vortex_layout::LayoutChildren, &vortex_session::registry::ReadContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::flat::Flat::child(&Self::Layout, usize) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::flat::Flat::child_type(&Self::Layout, usize) -> vortex_layout::LayoutChildType + +pub fn vortex_layout::layouts::flat::Flat::dtype(&Self::Layout) -> &vortex_array::dtype::DType + +pub fn vortex_layout::layouts::flat::Flat::encoding(&Self::Layout) -> vortex_layout::LayoutEncodingRef + +pub fn vortex_layout::layouts::flat::Flat::id(&Self::Encoding) -> vortex_layout::LayoutId + +pub fn vortex_layout::layouts::flat::Flat::metadata(&Self::Layout) -> Self::Metadata + +pub fn vortex_layout::layouts::flat::Flat::nchildren(&Self::Layout) -> usize + +pub fn vortex_layout::layouts::flat::Flat::new_reader(&Self::Layout, alloc::sync::Arc, alloc::sync::Arc, &vortex_session::VortexSession, &vortex_layout::LayoutReaderContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::flat::Flat::row_count(&Self::Layout) -> u64 + +pub fn vortex_layout::layouts::flat::Flat::segment_ids(&Self::Layout) -> alloc::vec::Vec + +pub fn vortex_layout::layouts::flat::Flat::with_children(&mut Self::Layout, alloc::vec::Vec) -> vortex_error::VortexResult<()> + +impl vortex_layout::VTable for vortex_layout::layouts::struct_::Struct + +pub type vortex_layout::layouts::struct_::Struct::Encoding = vortex_layout::layouts::struct_::StructLayoutEncoding + +pub type vortex_layout::layouts::struct_::Struct::Layout = vortex_layout::layouts::struct_::StructLayout + +pub type vortex_layout::layouts::struct_::Struct::Metadata = vortex_array::metadata::EmptyMetadata + +pub fn vortex_layout::layouts::struct_::Struct::build(&Self::Encoding, &vortex_array::dtype::DType, u64, &::Output, alloc::vec::Vec, &dyn vortex_layout::LayoutChildren, &vortex_session::registry::ReadContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::struct_::Struct::child(&Self::Layout, usize) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::struct_::Struct::child_type(&Self::Layout, usize) -> vortex_layout::LayoutChildType + +pub fn vortex_layout::layouts::struct_::Struct::dtype(&Self::Layout) -> &vortex_array::dtype::DType + +pub fn vortex_layout::layouts::struct_::Struct::encoding(&Self::Layout) -> vortex_layout::LayoutEncodingRef + +pub fn vortex_layout::layouts::struct_::Struct::id(&Self::Encoding) -> vortex_layout::LayoutId + +pub fn vortex_layout::layouts::struct_::Struct::metadata(&Self::Layout) -> Self::Metadata + +pub fn vortex_layout::layouts::struct_::Struct::nchildren(&Self::Layout) -> usize + +pub fn vortex_layout::layouts::struct_::Struct::new_reader(&Self::Layout, alloc::sync::Arc, alloc::sync::Arc, &vortex_session::VortexSession, &vortex_layout::LayoutReaderContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::struct_::Struct::row_count(&Self::Layout) -> u64 + +pub fn vortex_layout::layouts::struct_::Struct::segment_ids(&Self::Layout) -> alloc::vec::Vec + +pub fn vortex_layout::layouts::struct_::Struct::with_children(&mut Self::Layout, alloc::vec::Vec) -> vortex_error::VortexResult<()> + +impl vortex_layout::VTable for vortex_layout::layouts::zoned::Zoned + +pub type vortex_layout::layouts::zoned::Zoned::Encoding = vortex_layout::layouts::zoned::ZonedLayoutEncoding + +pub type vortex_layout::layouts::zoned::Zoned::Layout = vortex_layout::layouts::zoned::ZonedLayout + +pub type vortex_layout::layouts::zoned::Zoned::Metadata = vortex_layout::layouts::zoned::ZonedMetadata + +pub fn vortex_layout::layouts::zoned::Zoned::build(&Self::Encoding, &vortex_array::dtype::DType, u64, &vortex_layout::layouts::zoned::ZonedMetadata, alloc::vec::Vec, &dyn vortex_layout::LayoutChildren, &vortex_session::registry::ReadContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::zoned::Zoned::child(&Self::Layout, usize) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::zoned::Zoned::child_type(&Self::Layout, usize) -> vortex_layout::LayoutChildType + +pub fn vortex_layout::layouts::zoned::Zoned::dtype(&Self::Layout) -> &vortex_array::dtype::DType + +pub fn vortex_layout::layouts::zoned::Zoned::encoding(&Self::Layout) -> vortex_layout::LayoutEncodingRef + +pub fn vortex_layout::layouts::zoned::Zoned::id(&Self::Encoding) -> vortex_layout::LayoutId + +pub fn vortex_layout::layouts::zoned::Zoned::metadata(&Self::Layout) -> Self::Metadata + +pub fn vortex_layout::layouts::zoned::Zoned::nchildren(&Self::Layout) -> usize + +pub fn vortex_layout::layouts::zoned::Zoned::new_reader(&Self::Layout, alloc::sync::Arc, alloc::sync::Arc, &vortex_session::VortexSession, &vortex_layout::LayoutReaderContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::zoned::Zoned::row_count(&Self::Layout) -> u64 + +pub fn vortex_layout::layouts::zoned::Zoned::segment_ids(&Self::Layout) -> alloc::vec::Vec + +pub fn vortex_layout::layouts::zoned::Zoned::with_children(&mut Self::Layout, alloc::vec::Vec) -> vortex_error::VortexResult<()> + +pub macro vortex_layout::vtable! + +pub enum vortex_layout::LayoutChildType + +pub vortex_layout::LayoutChildType::Auxiliary(alloc::sync::Arc) + +pub vortex_layout::LayoutChildType::Chunk((usize, u64)) + +pub vortex_layout::LayoutChildType::Field(vortex_array::dtype::field_names::FieldName) + +pub vortex_layout::LayoutChildType::Transparent(alloc::sync::Arc) + +impl vortex_layout::LayoutChildType + +pub fn vortex_layout::LayoutChildType::name(&self) -> alloc::sync::Arc + +pub fn vortex_layout::LayoutChildType::row_offset(&self) -> core::option::Option + +impl core::clone::Clone for vortex_layout::LayoutChildType + +pub fn vortex_layout::LayoutChildType::clone(&self) -> vortex_layout::LayoutChildType + +impl core::cmp::Eq for vortex_layout::LayoutChildType + +impl core::cmp::PartialEq for vortex_layout::LayoutChildType + +pub fn vortex_layout::LayoutChildType::eq(&self, &vortex_layout::LayoutChildType) -> bool + +impl core::fmt::Debug for vortex_layout::LayoutChildType + +pub fn vortex_layout::LayoutChildType::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::marker::StructuralPartialEq for vortex_layout::LayoutChildType + +#[repr(transparent)] pub struct vortex_layout::LayoutAdapter(_) + +impl core::fmt::Debug for vortex_layout::LayoutAdapter + +pub fn vortex_layout::LayoutAdapter::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl vortex_layout::Layout for vortex_layout::LayoutAdapter + +pub fn vortex_layout::LayoutAdapter::as_any(&self) -> &dyn core::any::Any + +pub fn vortex_layout::LayoutAdapter::as_any_arc(alloc::sync::Arc) -> alloc::sync::Arc<(dyn core::any::Any + core::marker::Send + core::marker::Sync)> + +pub fn vortex_layout::LayoutAdapter::child(&self, usize) -> vortex_error::VortexResult + +pub fn vortex_layout::LayoutAdapter::child_type(&self, usize) -> vortex_layout::LayoutChildType + +pub fn vortex_layout::LayoutAdapter::dtype(&self) -> &vortex_array::dtype::DType + +pub fn vortex_layout::LayoutAdapter::encoding(&self) -> vortex_layout::LayoutEncodingRef + +pub fn vortex_layout::LayoutAdapter::metadata(&self) -> alloc::vec::Vec + +pub fn vortex_layout::LayoutAdapter::nchildren(&self) -> usize + +pub fn vortex_layout::LayoutAdapter::new_reader(&self, alloc::sync::Arc, alloc::sync::Arc, &vortex_session::VortexSession, &vortex_layout::LayoutReaderContext) -> vortex_error::VortexResult + +pub fn vortex_layout::LayoutAdapter::row_count(&self) -> u64 + +pub fn vortex_layout::LayoutAdapter::segment_ids(&self) -> alloc::vec::Vec + +pub fn vortex_layout::LayoutAdapter::to_layout(&self) -> vortex_layout::LayoutRef + +#[repr(transparent)] pub struct vortex_layout::LayoutEncodingAdapter(_) + +impl core::fmt::Debug for vortex_layout::LayoutEncodingAdapter + +pub fn vortex_layout::LayoutEncodingAdapter::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl vortex_layout::LayoutEncoding for vortex_layout::LayoutEncodingAdapter + +pub fn vortex_layout::LayoutEncodingAdapter::as_any(&self) -> &dyn core::any::Any + +pub fn vortex_layout::LayoutEncodingAdapter::build(&self, &vortex_array::dtype::DType, u64, &[u8], alloc::vec::Vec, &dyn vortex_layout::LayoutChildren, &vortex_session::registry::ReadContext) -> vortex_error::VortexResult + +pub fn vortex_layout::LayoutEncodingAdapter::id(&self) -> vortex_layout::LayoutEncodingId + +pub struct vortex_layout::LayoutReaderContext + +impl vortex_layout::LayoutReaderContext + +pub fn vortex_layout::LayoutReaderContext::get(&self, vortex_session::registry::Id) -> core::option::Option> + +pub fn vortex_layout::LayoutReaderContext::new() -> Self + +pub fn vortex_layout::LayoutReaderContext::with(&self, vortex_session::registry::Id, alloc::sync::Arc) -> Self + +impl core::clone::Clone for vortex_layout::LayoutReaderContext + +pub fn vortex_layout::LayoutReaderContext::clone(&self) -> vortex_layout::LayoutReaderContext + +impl core::default::Default for vortex_layout::LayoutReaderContext + +pub fn vortex_layout::LayoutReaderContext::default() -> vortex_layout::LayoutReaderContext + +impl core::fmt::Debug for vortex_layout::LayoutReaderContext + +pub fn vortex_layout::LayoutReaderContext::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +pub struct vortex_layout::LazyReaderChildren + +impl vortex_layout::LazyReaderChildren + +pub fn vortex_layout::LazyReaderChildren::get(&self, usize) -> vortex_error::VortexResult<&vortex_layout::LayoutReaderRef> + +pub fn vortex_layout::LazyReaderChildren::new(alloc::sync::Arc, alloc::vec::Vec, alloc::vec::Vec>, alloc::sync::Arc, vortex_session::VortexSession, vortex_layout::LayoutReaderContext) -> Self + +pub struct vortex_layout::SplitRange + +impl vortex_layout::SplitRange + +pub fn vortex_layout::SplitRange::check_bounds(&self, u64) -> vortex_error::VortexResult<()> + +pub fn vortex_layout::SplitRange::is_empty(&self) -> bool + +pub fn vortex_layout::SplitRange::len(&self) -> u64 + +pub fn vortex_layout::SplitRange::root(core::ops::range::Range) -> vortex_error::VortexResult + +pub fn vortex_layout::SplitRange::root_row_range(&self) -> core::ops::range::Range + +pub fn vortex_layout::SplitRange::row_offset(&self) -> u64 + +pub fn vortex_layout::SplitRange::row_range(&self) -> &core::ops::range::Range + +pub fn vortex_layout::SplitRange::try_new(u64, core::ops::range::Range) -> vortex_error::VortexResult + +impl core::clone::Clone for vortex_layout::SplitRange + +pub fn vortex_layout::SplitRange::clone(&self) -> vortex_layout::SplitRange + +impl core::cmp::Eq for vortex_layout::SplitRange + +impl core::cmp::PartialEq for vortex_layout::SplitRange + +pub fn vortex_layout::SplitRange::eq(&self, &vortex_layout::SplitRange) -> bool + +impl core::fmt::Debug for vortex_layout::SplitRange + +pub fn vortex_layout::SplitRange::fmt(&self, &mut core::fmt::Formatter<'_>) -> core::fmt::Result + +impl core::marker::StructuralPartialEq for vortex_layout::SplitRange + +pub trait vortex_layout::ArrayFutureExt + +pub fn vortex_layout::ArrayFutureExt::masked(self, vortex_array::mask_future::MaskFuture) -> Self + +impl vortex_layout::ArrayFutureExt for vortex_layout::ArrayFuture + +pub fn vortex_layout::ArrayFuture::masked(self, vortex_array::mask_future::MaskFuture) -> Self + +pub trait vortex_layout::IntoLayout + +pub fn vortex_layout::IntoLayout::into_layout(self) -> vortex_layout::LayoutRef + +impl vortex_layout::IntoLayout for vortex_layout::layouts::chunked::ChunkedLayout + +pub fn vortex_layout::layouts::chunked::ChunkedLayout::into_layout(self) -> vortex_layout::LayoutRef + +impl vortex_layout::IntoLayout for vortex_layout::layouts::dict::DictLayout + +pub fn vortex_layout::layouts::dict::DictLayout::into_layout(self) -> vortex_layout::LayoutRef + +impl vortex_layout::IntoLayout for vortex_layout::layouts::flat::FlatLayout + +pub fn vortex_layout::layouts::flat::FlatLayout::into_layout(self) -> vortex_layout::LayoutRef + +impl vortex_layout::IntoLayout for vortex_layout::layouts::struct_::StructLayout + +pub fn vortex_layout::layouts::struct_::StructLayout::into_layout(self) -> vortex_layout::LayoutRef + +impl vortex_layout::IntoLayout for vortex_layout::layouts::zoned::ZonedLayout + +pub fn vortex_layout::layouts::zoned::ZonedLayout::into_layout(self) -> vortex_layout::LayoutRef + +pub trait vortex_layout::Layout: 'static + core::marker::Send + core::marker::Sync + core::fmt::Debug + vortex_layout::layout::private::Sealed + +pub fn vortex_layout::Layout::as_any(&self) -> &dyn core::any::Any + +pub fn vortex_layout::Layout::as_any_arc(alloc::sync::Arc) -> alloc::sync::Arc<(dyn core::any::Any + core::marker::Send + core::marker::Sync)> + +pub fn vortex_layout::Layout::child(&self, usize) -> vortex_error::VortexResult + +pub fn vortex_layout::Layout::child_type(&self, usize) -> vortex_layout::LayoutChildType + +pub fn vortex_layout::Layout::dtype(&self) -> &vortex_array::dtype::DType + +pub fn vortex_layout::Layout::encoding(&self) -> vortex_layout::LayoutEncodingRef + +pub fn vortex_layout::Layout::metadata(&self) -> alloc::vec::Vec + +pub fn vortex_layout::Layout::nchildren(&self) -> usize + +pub fn vortex_layout::Layout::new_reader(&self, alloc::sync::Arc, alloc::sync::Arc, &vortex_session::VortexSession, &vortex_layout::LayoutReaderContext) -> vortex_error::VortexResult + +pub fn vortex_layout::Layout::row_count(&self) -> u64 + +pub fn vortex_layout::Layout::segment_ids(&self) -> alloc::vec::Vec + +pub fn vortex_layout::Layout::to_layout(&self) -> vortex_layout::LayoutRef + +impl vortex_layout::Layout for vortex_layout::LayoutAdapter + +pub fn vortex_layout::LayoutAdapter::as_any(&self) -> &dyn core::any::Any + +pub fn vortex_layout::LayoutAdapter::as_any_arc(alloc::sync::Arc) -> alloc::sync::Arc<(dyn core::any::Any + core::marker::Send + core::marker::Sync)> + +pub fn vortex_layout::LayoutAdapter::child(&self, usize) -> vortex_error::VortexResult + +pub fn vortex_layout::LayoutAdapter::child_type(&self, usize) -> vortex_layout::LayoutChildType + +pub fn vortex_layout::LayoutAdapter::dtype(&self) -> &vortex_array::dtype::DType + +pub fn vortex_layout::LayoutAdapter::encoding(&self) -> vortex_layout::LayoutEncodingRef + +pub fn vortex_layout::LayoutAdapter::metadata(&self) -> alloc::vec::Vec + +pub fn vortex_layout::LayoutAdapter::nchildren(&self) -> usize + +pub fn vortex_layout::LayoutAdapter::new_reader(&self, alloc::sync::Arc, alloc::sync::Arc, &vortex_session::VortexSession, &vortex_layout::LayoutReaderContext) -> vortex_error::VortexResult + +pub fn vortex_layout::LayoutAdapter::row_count(&self) -> u64 + +pub fn vortex_layout::LayoutAdapter::segment_ids(&self) -> alloc::vec::Vec + +pub fn vortex_layout::LayoutAdapter::to_layout(&self) -> vortex_layout::LayoutRef + +pub trait vortex_layout::LayoutChildren: 'static + core::marker::Send + core::marker::Sync + +pub fn vortex_layout::LayoutChildren::child(&self, usize, &vortex_array::dtype::DType) -> vortex_error::VortexResult + +pub fn vortex_layout::LayoutChildren::child_row_count(&self, usize) -> u64 + +pub fn vortex_layout::LayoutChildren::nchildren(&self) -> usize + +pub fn vortex_layout::LayoutChildren::to_arc(&self) -> alloc::sync::Arc + +impl vortex_layout::LayoutChildren for alloc::sync::Arc + +pub fn alloc::sync::Arc::child(&self, usize, &vortex_array::dtype::DType) -> vortex_error::VortexResult + +pub fn alloc::sync::Arc::child_row_count(&self, usize) -> u64 + +pub fn alloc::sync::Arc::nchildren(&self) -> usize + +pub fn alloc::sync::Arc::to_arc(&self) -> alloc::sync::Arc + +pub trait vortex_layout::LayoutEncoding: 'static + core::marker::Send + core::marker::Sync + core::fmt::Debug + vortex_layout::encoding::private::Sealed + +pub fn vortex_layout::LayoutEncoding::as_any(&self) -> &dyn core::any::Any + +pub fn vortex_layout::LayoutEncoding::build(&self, &vortex_array::dtype::DType, u64, &[u8], alloc::vec::Vec, &dyn vortex_layout::LayoutChildren, &vortex_session::registry::ReadContext) -> vortex_error::VortexResult + +pub fn vortex_layout::LayoutEncoding::id(&self) -> vortex_layout::LayoutEncodingId + +impl vortex_layout::LayoutEncoding for vortex_layout::LayoutEncodingAdapter + +pub fn vortex_layout::LayoutEncodingAdapter::as_any(&self) -> &dyn core::any::Any + +pub fn vortex_layout::LayoutEncodingAdapter::build(&self, &vortex_array::dtype::DType, u64, &[u8], alloc::vec::Vec, &dyn vortex_layout::LayoutChildren, &vortex_session::registry::ReadContext) -> vortex_error::VortexResult + +pub fn vortex_layout::LayoutEncodingAdapter::id(&self) -> vortex_layout::LayoutEncodingId + +pub trait vortex_layout::LayoutReader: 'static + core::marker::Send + core::marker::Sync + +pub fn vortex_layout::LayoutReader::as_any(&self) -> &dyn core::any::Any + +pub fn vortex_layout::LayoutReader::dtype(&self) -> &vortex_array::dtype::DType + +pub fn vortex_layout::LayoutReader::filter_evaluation(&self, &core::ops::range::Range, &vortex_array::expr::expression::Expression, vortex_array::mask_future::MaskFuture) -> vortex_error::VortexResult + +pub fn vortex_layout::LayoutReader::name(&self) -> &alloc::sync::Arc + +pub fn vortex_layout::LayoutReader::projection_evaluation(&self, &core::ops::range::Range, &vortex_array::expr::expression::Expression, vortex_array::mask_future::MaskFuture) -> vortex_error::VortexResult + +pub fn vortex_layout::LayoutReader::pruning_evaluation(&self, &core::ops::range::Range, &vortex_array::expr::expression::Expression, vortex_mask::Mask) -> vortex_error::VortexResult + +pub fn vortex_layout::LayoutReader::register_splits(&self, &[vortex_array::dtype::field_mask::FieldMask], &vortex_layout::SplitRange, &mut alloc::collections::btree::set::BTreeSet) -> vortex_error::VortexResult<()> + +pub fn vortex_layout::LayoutReader::row_count(&self) -> u64 + +impl vortex_layout::LayoutReader for vortex_layout::layouts::row_idx::RowIdxLayoutReader + +pub fn vortex_layout::layouts::row_idx::RowIdxLayoutReader::as_any(&self) -> &dyn core::any::Any + +pub fn vortex_layout::layouts::row_idx::RowIdxLayoutReader::dtype(&self) -> &vortex_array::dtype::DType + +pub fn vortex_layout::layouts::row_idx::RowIdxLayoutReader::filter_evaluation(&self, &core::ops::range::Range, &vortex_array::expr::expression::Expression, vortex_array::mask_future::MaskFuture) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::row_idx::RowIdxLayoutReader::name(&self) -> &alloc::sync::Arc + +pub fn vortex_layout::layouts::row_idx::RowIdxLayoutReader::projection_evaluation(&self, &core::ops::range::Range, &vortex_array::expr::expression::Expression, vortex_array::mask_future::MaskFuture) -> vortex_error::VortexResult>> + +pub fn vortex_layout::layouts::row_idx::RowIdxLayoutReader::pruning_evaluation(&self, &core::ops::range::Range, &vortex_array::expr::expression::Expression, vortex_mask::Mask) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::row_idx::RowIdxLayoutReader::register_splits(&self, &[vortex_array::dtype::field_mask::FieldMask], &vortex_layout::SplitRange, &mut alloc::collections::btree::set::BTreeSet) -> vortex_error::VortexResult<()> + +pub fn vortex_layout::layouts::row_idx::RowIdxLayoutReader::row_count(&self) -> u64 + +pub trait vortex_layout::LayoutStrategy: 'static + core::marker::Send + core::marker::Sync + +pub fn vortex_layout::LayoutStrategy::buffered_bytes(&self) -> u64 + +pub fn vortex_layout::LayoutStrategy::write_stream<'life0, 'life1, 'async_trait>(&'life0 self, vortex_array::ArrayContext, vortex_layout::segments::SegmentSinkRef, vortex_layout::sequence::SendableSequentialStream, vortex_layout::sequence::SequencePointer, &'life1 vortex_session::VortexSession) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait + +impl vortex_layout::LayoutStrategy for alloc::sync::Arc + +pub fn alloc::sync::Arc::buffered_bytes(&self) -> u64 + +pub fn alloc::sync::Arc::write_stream<'life0, 'life1, 'async_trait>(&'life0 self, vortex_array::ArrayContext, vortex_layout::segments::SegmentSinkRef, vortex_layout::sequence::SendableSequentialStream, vortex_layout::sequence::SequencePointer, &'life1 vortex_session::VortexSession) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait + +impl vortex_layout::LayoutStrategy for vortex_layout::layouts::buffered::BufferedStrategy + +pub fn vortex_layout::layouts::buffered::BufferedStrategy::buffered_bytes(&self) -> u64 + +pub fn vortex_layout::layouts::buffered::BufferedStrategy::write_stream<'life0, 'life1, 'async_trait>(&'life0 self, vortex_array::ArrayContext, vortex_layout::segments::SegmentSinkRef, vortex_layout::sequence::SendableSequentialStream, vortex_layout::sequence::SequencePointer, &'life1 vortex_session::VortexSession) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait + +impl vortex_layout::LayoutStrategy for vortex_layout::layouts::chunked::writer::ChunkedLayoutStrategy + +pub fn vortex_layout::layouts::chunked::writer::ChunkedLayoutStrategy::buffered_bytes(&self) -> u64 + +pub fn vortex_layout::layouts::chunked::writer::ChunkedLayoutStrategy::write_stream<'life0, 'life1, 'async_trait>(&'life0 self, vortex_array::ArrayContext, vortex_layout::segments::SegmentSinkRef, vortex_layout::sequence::SendableSequentialStream, vortex_layout::sequence::SequencePointer, &'life1 vortex_session::VortexSession) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait + +impl vortex_layout::LayoutStrategy for vortex_layout::layouts::collect::CollectStrategy + +pub fn vortex_layout::layouts::collect::CollectStrategy::buffered_bytes(&self) -> u64 + +pub fn vortex_layout::layouts::collect::CollectStrategy::write_stream<'life0, 'life1, 'async_trait>(&'life0 self, vortex_array::ArrayContext, vortex_layout::segments::SegmentSinkRef, vortex_layout::sequence::SendableSequentialStream, vortex_layout::sequence::SequencePointer, &'life1 vortex_session::VortexSession) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait + +impl vortex_layout::LayoutStrategy for vortex_layout::layouts::compressed::CompressingStrategy + +pub fn vortex_layout::layouts::compressed::CompressingStrategy::buffered_bytes(&self) -> u64 + +pub fn vortex_layout::layouts::compressed::CompressingStrategy::write_stream<'life0, 'life1, 'async_trait>(&'life0 self, vortex_array::ArrayContext, vortex_layout::segments::SegmentSinkRef, vortex_layout::sequence::SendableSequentialStream, vortex_layout::sequence::SequencePointer, &'life1 vortex_session::VortexSession) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait + +impl vortex_layout::LayoutStrategy for vortex_layout::layouts::dict::writer::DictStrategy + +pub fn vortex_layout::layouts::dict::writer::DictStrategy::buffered_bytes(&self) -> u64 + +pub fn vortex_layout::layouts::dict::writer::DictStrategy::write_stream<'life0, 'life1, 'async_trait>(&'life0 self, vortex_array::ArrayContext, vortex_layout::segments::SegmentSinkRef, vortex_layout::sequence::SendableSequentialStream, vortex_layout::sequence::SequencePointer, &'life1 vortex_session::VortexSession) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait + +impl vortex_layout::LayoutStrategy for vortex_layout::layouts::flat::writer::FlatLayoutStrategy + +pub fn vortex_layout::layouts::flat::writer::FlatLayoutStrategy::buffered_bytes(&self) -> u64 + +pub fn vortex_layout::layouts::flat::writer::FlatLayoutStrategy::write_stream<'life0, 'life1, 'async_trait>(&'life0 self, vortex_array::ArrayContext, vortex_layout::segments::SegmentSinkRef, vortex_layout::sequence::SendableSequentialStream, vortex_layout::sequence::SequencePointer, &'life1 vortex_session::VortexSession) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait + +impl vortex_layout::LayoutStrategy for vortex_layout::layouts::repartition::RepartitionStrategy + +pub fn vortex_layout::layouts::repartition::RepartitionStrategy::buffered_bytes(&self) -> u64 + +pub fn vortex_layout::layouts::repartition::RepartitionStrategy::write_stream<'life0, 'life1, 'async_trait>(&'life0 self, vortex_array::ArrayContext, vortex_layout::segments::SegmentSinkRef, vortex_layout::sequence::SendableSequentialStream, vortex_layout::sequence::SequencePointer, &'life1 vortex_session::VortexSession) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait + +impl vortex_layout::LayoutStrategy for vortex_layout::layouts::table::TableStrategy + +pub fn vortex_layout::layouts::table::TableStrategy::buffered_bytes(&self) -> u64 + +pub fn vortex_layout::layouts::table::TableStrategy::write_stream<'life0, 'life1, 'async_trait>(&'life0 self, vortex_array::ArrayContext, vortex_layout::segments::SegmentSinkRef, vortex_layout::sequence::SendableSequentialStream, vortex_layout::sequence::SequencePointer, &'life1 vortex_session::VortexSession) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait + +impl vortex_layout::LayoutStrategy for vortex_layout::layouts::zoned::writer::ZonedStrategy + +pub fn vortex_layout::layouts::zoned::writer::ZonedStrategy::buffered_bytes(&self) -> u64 + +pub fn vortex_layout::layouts::zoned::writer::ZonedStrategy::write_stream<'life0, 'life1, 'async_trait>(&'life0 self, vortex_array::ArrayContext, vortex_layout::segments::SegmentSinkRef, vortex_layout::sequence::SendableSequentialStream, vortex_layout::sequence::SequencePointer, &'life1 vortex_session::VortexSession) -> core::pin::Pin> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait + +pub trait vortex_layout::VTable: 'static + core::marker::Sized + core::marker::Send + core::marker::Sync + core::fmt::Debug + +pub type vortex_layout::VTable::Encoding: 'static + core::marker::Send + core::marker::Sync + core::ops::deref::Deref + +pub type vortex_layout::VTable::Layout: 'static + core::marker::Send + core::marker::Sync + core::clone::Clone + core::fmt::Debug + core::ops::deref::Deref + vortex_layout::IntoLayout + +pub type vortex_layout::VTable::Metadata: vortex_array::metadata::SerializeMetadata + vortex_array::metadata::DeserializeMetadata + core::fmt::Debug + +pub fn vortex_layout::VTable::build(&Self::Encoding, &vortex_array::dtype::DType, u64, &::Output, alloc::vec::Vec, &dyn vortex_layout::LayoutChildren, &vortex_session::registry::ReadContext) -> vortex_error::VortexResult + +pub fn vortex_layout::VTable::child(&Self::Layout, usize) -> vortex_error::VortexResult + +pub fn vortex_layout::VTable::child_type(&Self::Layout, usize) -> vortex_layout::LayoutChildType + +pub fn vortex_layout::VTable::dtype(&Self::Layout) -> &vortex_array::dtype::DType + +pub fn vortex_layout::VTable::encoding(&Self::Layout) -> vortex_layout::LayoutEncodingRef + +pub fn vortex_layout::VTable::id(&Self::Encoding) -> vortex_layout::LayoutId + +pub fn vortex_layout::VTable::metadata(&Self::Layout) -> Self::Metadata + +pub fn vortex_layout::VTable::nchildren(&Self::Layout) -> usize + +pub fn vortex_layout::VTable::new_reader(&Self::Layout, alloc::sync::Arc, alloc::sync::Arc, &vortex_session::VortexSession, &vortex_layout::LayoutReaderContext) -> vortex_error::VortexResult + +pub fn vortex_layout::VTable::row_count(&Self::Layout) -> u64 + +pub fn vortex_layout::VTable::segment_ids(&Self::Layout) -> alloc::vec::Vec + +pub fn vortex_layout::VTable::with_children(&mut Self::Layout, alloc::vec::Vec) -> vortex_error::VortexResult<()> + +impl vortex_layout::VTable for vortex_layout::layouts::chunked::Chunked + +pub type vortex_layout::layouts::chunked::Chunked::Encoding = vortex_layout::layouts::chunked::ChunkedLayoutEncoding + +pub type vortex_layout::layouts::chunked::Chunked::Layout = vortex_layout::layouts::chunked::ChunkedLayout + +pub type vortex_layout::layouts::chunked::Chunked::Metadata = vortex_array::metadata::EmptyMetadata + +pub fn vortex_layout::layouts::chunked::Chunked::build(&Self::Encoding, &vortex_array::dtype::DType, u64, &::Output, alloc::vec::Vec, &dyn vortex_layout::LayoutChildren, &vortex_session::registry::ReadContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::chunked::Chunked::child(&Self::Layout, usize) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::chunked::Chunked::child_type(&Self::Layout, usize) -> vortex_layout::LayoutChildType + +pub fn vortex_layout::layouts::chunked::Chunked::dtype(&Self::Layout) -> &vortex_array::dtype::DType + +pub fn vortex_layout::layouts::chunked::Chunked::encoding(&Self::Layout) -> vortex_layout::LayoutEncodingRef + +pub fn vortex_layout::layouts::chunked::Chunked::id(&Self::Encoding) -> vortex_layout::LayoutId + +pub fn vortex_layout::layouts::chunked::Chunked::metadata(&Self::Layout) -> Self::Metadata + +pub fn vortex_layout::layouts::chunked::Chunked::nchildren(&Self::Layout) -> usize + +pub fn vortex_layout::layouts::chunked::Chunked::new_reader(&Self::Layout, alloc::sync::Arc, alloc::sync::Arc, &vortex_session::VortexSession, &vortex_layout::LayoutReaderContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::chunked::Chunked::row_count(&Self::Layout) -> u64 + +pub fn vortex_layout::layouts::chunked::Chunked::segment_ids(&Self::Layout) -> alloc::vec::Vec + +pub fn vortex_layout::layouts::chunked::Chunked::with_children(&mut Self::Layout, alloc::vec::Vec) -> vortex_error::VortexResult<()> + +impl vortex_layout::VTable for vortex_layout::layouts::dict::Dict + +pub type vortex_layout::layouts::dict::Dict::Encoding = vortex_layout::layouts::dict::DictLayoutEncoding + +pub type vortex_layout::layouts::dict::Dict::Layout = vortex_layout::layouts::dict::DictLayout + +pub type vortex_layout::layouts::dict::Dict::Metadata = vortex_array::metadata::ProstMetadata + +pub fn vortex_layout::layouts::dict::Dict::build(&Self::Encoding, &vortex_array::dtype::DType, u64, &::Output, alloc::vec::Vec, &dyn vortex_layout::LayoutChildren, &vortex_session::registry::ReadContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::dict::Dict::child(&Self::Layout, usize) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::dict::Dict::child_type(&Self::Layout, usize) -> vortex_layout::LayoutChildType + +pub fn vortex_layout::layouts::dict::Dict::dtype(&Self::Layout) -> &vortex_array::dtype::DType + +pub fn vortex_layout::layouts::dict::Dict::encoding(&Self::Layout) -> vortex_layout::LayoutEncodingRef + +pub fn vortex_layout::layouts::dict::Dict::id(&Self::Encoding) -> vortex_layout::LayoutId + +pub fn vortex_layout::layouts::dict::Dict::metadata(&Self::Layout) -> Self::Metadata + +pub fn vortex_layout::layouts::dict::Dict::nchildren(&Self::Layout) -> usize + +pub fn vortex_layout::layouts::dict::Dict::new_reader(&Self::Layout, alloc::sync::Arc, alloc::sync::Arc, &vortex_session::VortexSession, &vortex_layout::LayoutReaderContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::dict::Dict::row_count(&Self::Layout) -> u64 + +pub fn vortex_layout::layouts::dict::Dict::segment_ids(&Self::Layout) -> alloc::vec::Vec + +pub fn vortex_layout::layouts::dict::Dict::with_children(&mut Self::Layout, alloc::vec::Vec) -> vortex_error::VortexResult<()> + +impl vortex_layout::VTable for vortex_layout::layouts::flat::Flat + +pub type vortex_layout::layouts::flat::Flat::Encoding = vortex_layout::layouts::flat::FlatLayoutEncoding + +pub type vortex_layout::layouts::flat::Flat::Layout = vortex_layout::layouts::flat::FlatLayout + +pub type vortex_layout::layouts::flat::Flat::Metadata = vortex_array::metadata::ProstMetadata + +pub fn vortex_layout::layouts::flat::Flat::build(&Self::Encoding, &vortex_array::dtype::DType, u64, &::Output, alloc::vec::Vec, &dyn vortex_layout::LayoutChildren, &vortex_session::registry::ReadContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::flat::Flat::child(&Self::Layout, usize) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::flat::Flat::child_type(&Self::Layout, usize) -> vortex_layout::LayoutChildType + +pub fn vortex_layout::layouts::flat::Flat::dtype(&Self::Layout) -> &vortex_array::dtype::DType + +pub fn vortex_layout::layouts::flat::Flat::encoding(&Self::Layout) -> vortex_layout::LayoutEncodingRef + +pub fn vortex_layout::layouts::flat::Flat::id(&Self::Encoding) -> vortex_layout::LayoutId + +pub fn vortex_layout::layouts::flat::Flat::metadata(&Self::Layout) -> Self::Metadata + +pub fn vortex_layout::layouts::flat::Flat::nchildren(&Self::Layout) -> usize + +pub fn vortex_layout::layouts::flat::Flat::new_reader(&Self::Layout, alloc::sync::Arc, alloc::sync::Arc, &vortex_session::VortexSession, &vortex_layout::LayoutReaderContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::flat::Flat::row_count(&Self::Layout) -> u64 + +pub fn vortex_layout::layouts::flat::Flat::segment_ids(&Self::Layout) -> alloc::vec::Vec + +pub fn vortex_layout::layouts::flat::Flat::with_children(&mut Self::Layout, alloc::vec::Vec) -> vortex_error::VortexResult<()> + +impl vortex_layout::VTable for vortex_layout::layouts::struct_::Struct + +pub type vortex_layout::layouts::struct_::Struct::Encoding = vortex_layout::layouts::struct_::StructLayoutEncoding + +pub type vortex_layout::layouts::struct_::Struct::Layout = vortex_layout::layouts::struct_::StructLayout + +pub type vortex_layout::layouts::struct_::Struct::Metadata = vortex_array::metadata::EmptyMetadata + +pub fn vortex_layout::layouts::struct_::Struct::build(&Self::Encoding, &vortex_array::dtype::DType, u64, &::Output, alloc::vec::Vec, &dyn vortex_layout::LayoutChildren, &vortex_session::registry::ReadContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::struct_::Struct::child(&Self::Layout, usize) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::struct_::Struct::child_type(&Self::Layout, usize) -> vortex_layout::LayoutChildType + +pub fn vortex_layout::layouts::struct_::Struct::dtype(&Self::Layout) -> &vortex_array::dtype::DType + +pub fn vortex_layout::layouts::struct_::Struct::encoding(&Self::Layout) -> vortex_layout::LayoutEncodingRef + +pub fn vortex_layout::layouts::struct_::Struct::id(&Self::Encoding) -> vortex_layout::LayoutId + +pub fn vortex_layout::layouts::struct_::Struct::metadata(&Self::Layout) -> Self::Metadata + +pub fn vortex_layout::layouts::struct_::Struct::nchildren(&Self::Layout) -> usize + +pub fn vortex_layout::layouts::struct_::Struct::new_reader(&Self::Layout, alloc::sync::Arc, alloc::sync::Arc, &vortex_session::VortexSession, &vortex_layout::LayoutReaderContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::struct_::Struct::row_count(&Self::Layout) -> u64 + +pub fn vortex_layout::layouts::struct_::Struct::segment_ids(&Self::Layout) -> alloc::vec::Vec + +pub fn vortex_layout::layouts::struct_::Struct::with_children(&mut Self::Layout, alloc::vec::Vec) -> vortex_error::VortexResult<()> + +impl vortex_layout::VTable for vortex_layout::layouts::zoned::Zoned + +pub type vortex_layout::layouts::zoned::Zoned::Encoding = vortex_layout::layouts::zoned::ZonedLayoutEncoding + +pub type vortex_layout::layouts::zoned::Zoned::Layout = vortex_layout::layouts::zoned::ZonedLayout + +pub type vortex_layout::layouts::zoned::Zoned::Metadata = vortex_layout::layouts::zoned::ZonedMetadata + +pub fn vortex_layout::layouts::zoned::Zoned::build(&Self::Encoding, &vortex_array::dtype::DType, u64, &vortex_layout::layouts::zoned::ZonedMetadata, alloc::vec::Vec, &dyn vortex_layout::LayoutChildren, &vortex_session::registry::ReadContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::zoned::Zoned::child(&Self::Layout, usize) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::zoned::Zoned::child_type(&Self::Layout, usize) -> vortex_layout::LayoutChildType + +pub fn vortex_layout::layouts::zoned::Zoned::dtype(&Self::Layout) -> &vortex_array::dtype::DType + +pub fn vortex_layout::layouts::zoned::Zoned::encoding(&Self::Layout) -> vortex_layout::LayoutEncodingRef + +pub fn vortex_layout::layouts::zoned::Zoned::id(&Self::Encoding) -> vortex_layout::LayoutId + +pub fn vortex_layout::layouts::zoned::Zoned::metadata(&Self::Layout) -> Self::Metadata + +pub fn vortex_layout::layouts::zoned::Zoned::nchildren(&Self::Layout) -> usize + +pub fn vortex_layout::layouts::zoned::Zoned::new_reader(&Self::Layout, alloc::sync::Arc, alloc::sync::Arc, &vortex_session::VortexSession, &vortex_layout::LayoutReaderContext) -> vortex_error::VortexResult + +pub fn vortex_layout::layouts::zoned::Zoned::row_count(&Self::Layout) -> u64 + +pub fn vortex_layout::layouts::zoned::Zoned::segment_ids(&Self::Layout) -> alloc::vec::Vec + +pub fn vortex_layout::layouts::zoned::Zoned::with_children(&mut Self::Layout, alloc::vec::Vec) -> vortex_error::VortexResult<()> + +pub fn vortex_layout::layout_from_flatbuffer(vortex_flatbuffers::FlatBuffer, &vortex_array::dtype::DType, &vortex_session::registry::ReadContext, &vortex_session::registry::ReadContext, &vortex_layout::session::LayoutRegistry) -> vortex_error::VortexResult + +pub fn vortex_layout::layout_from_flatbuffer_with_options(vortex_flatbuffers::FlatBuffer, &vortex_array::dtype::DType, &vortex_session::registry::ReadContext, &vortex_session::registry::ReadContext, &vortex_layout::session::LayoutRegistry, bool) -> vortex_error::VortexResult + +pub type vortex_layout::ArrayFuture = futures_core::future::BoxFuture<'static, vortex_error::VortexResult> + +pub type vortex_layout::LayoutContext = vortex_session::registry::Context + +pub type vortex_layout::LayoutEncodingId = vortex_session::registry::Id + +pub type vortex_layout::LayoutEncodingRef = arcref::ArcRef + +pub type vortex_layout::LayoutId = vortex_session::registry::Id + +pub type vortex_layout::LayoutReaderRef = alloc::sync::Arc + +pub type vortex_layout::LayoutRef = alloc::sync::Arc diff --git a/vortex-layout/src/layout.rs b/vortex-layout/src/layout.rs index 11f0afd629c..7e4caaa1168 100644 --- a/vortex-layout/src/layout.rs +++ b/vortex-layout/src/layout.rs @@ -19,6 +19,7 @@ use vortex_session::registry::Id; use crate::LayoutEncodingId; use crate::LayoutEncodingRef; +use crate::LayoutReaderContext; use crate::LayoutReaderRef; use crate::VTable; use crate::display::DisplayLayoutTree; @@ -63,11 +64,26 @@ pub trait Layout: 'static + Send + Sync + Debug + private::Sealed { /// Get the segment IDs for this layout. fn segment_ids(&self) -> Vec; + /// Construct a new reader for this layout. + /// + /// - `name` — human-readable label for this reader, propagated to child readers + /// (typically by appending a path component) and surfaced in tracing/debug output. + /// - `segment_source` — source of segment bytes for this and any descendant readers + /// constructed from the returned reader; recursive callers should pass the same + /// source through. + /// - `session` — the [`VortexSession`] hosting the encoding/scalar/layout registries + /// and execution context the reader needs at evaluation time. + /// - `ctx` — id-keyed dependency registry threaded through reader construction (see + /// [`LayoutReaderContext`]). Top-level callers (file open, tests) typically pass + /// `&LayoutReaderContext::new()`; recursive callers inside layout implementations + /// must propagate the `ctx` they were handed so ancestor-published values reach + /// descendants. fn new_reader( &self, name: Arc, segment_source: Arc, session: &VortexSession, + ctx: &LayoutReaderContext, ) -> VortexResult; } @@ -311,8 +327,9 @@ impl Layout for LayoutAdapter { name: Arc, segment_source: Arc, session: &VortexSession, + ctx: &LayoutReaderContext, ) -> VortexResult { - V::new_reader(&self.0, name, segment_source, session) + V::new_reader(&self.0, name, segment_source, session, ctx) } } diff --git a/vortex-layout/src/layouts/chunked/mod.rs b/vortex-layout/src/layouts/chunked/mod.rs index 82fcb650607..e8dd3c06dc0 100644 --- a/vortex-layout/src/layouts/chunked/mod.rs +++ b/vortex-layout/src/layouts/chunked/mod.rs @@ -16,6 +16,7 @@ use vortex_session::registry::ReadContext; use crate::LayoutChildType; use crate::LayoutEncodingRef; use crate::LayoutId; +use crate::LayoutReaderContext; use crate::LayoutReaderRef; use crate::LayoutRef; use crate::VTable; @@ -74,12 +75,14 @@ impl VTable for Chunked { name: Arc, segment_source: Arc, session: &VortexSession, + ctx: &LayoutReaderContext, ) -> VortexResult { Ok(Arc::new(ChunkedReader::new( layout.clone(), name, segment_source, session, + ctx.clone(), ))) } diff --git a/vortex-layout/src/layouts/chunked/reader.rs b/vortex-layout/src/layouts/chunked/reader.rs index 39bd8b27b7c..51eb4f7a15d 100644 --- a/vortex-layout/src/layouts/chunked/reader.rs +++ b/vortex-layout/src/layouts/chunked/reader.rs @@ -26,6 +26,7 @@ use vortex_error::vortex_panic; use vortex_mask::Mask; use vortex_session::VortexSession; +use crate::LayoutReaderContext; use crate::LayoutReaderRef; use crate::LazyReaderChildren; use crate::layouts::chunked::ChunkedLayout; @@ -51,6 +52,7 @@ impl ChunkedReader { name: Arc, segment_source: Arc, session: &VortexSession, + ctx: LayoutReaderContext, ) -> Self { let nchildren = layout.nchildren(); @@ -78,6 +80,7 @@ impl ChunkedReader { names, segment_source, session.clone(), + ctx, ); Self { @@ -455,7 +458,12 @@ mod test { ) { let layout = nested_chunked_layout(); let reader = layout - .new_reader("".into(), Arc::new(TestSegments::default()), &SESSION) + .new_reader( + "".into(), + Arc::new(TestSegments::default()), + &SESSION, + &Default::default(), + ) .unwrap(); let splits = SplitBy::Layout @@ -471,7 +479,7 @@ mod test { ) { block_on(|_h| async { let result = layout - .new_reader("".into(), segments, &SESSION) + .new_reader("".into(), segments, &SESSION, &Default::default()) .unwrap() .projection_evaluation( &(0..layout.row_count()), diff --git a/vortex-layout/src/layouts/dict/mod.rs b/vortex-layout/src/layouts/dict/mod.rs index 7928b447fa9..5fb4ea080b4 100644 --- a/vortex-layout/src/layouts/dict/mod.rs +++ b/vortex-layout/src/layouts/dict/mod.rs @@ -92,12 +92,14 @@ impl VTable for Dict { name: Arc, segment_source: Arc, session: &VortexSession, + ctx: &crate::LayoutReaderContext, ) -> VortexResult { Ok(Arc::new(DictReader::try_new( layout.clone(), name, segment_source, session.clone(), + ctx.clone(), )?)) } diff --git a/vortex-layout/src/layouts/dict/reader.rs b/vortex-layout/src/layouts/dict/reader.rs index 5687274bd90..002b4b1e902 100644 --- a/vortex-layout/src/layouts/dict/reader.rs +++ b/vortex-layout/src/layouts/dict/reader.rs @@ -58,17 +58,21 @@ impl DictReader { name: Arc, segment_source: Arc, session: VortexSession, + ctx: crate::LayoutReaderContext, ) -> VortexResult { let values_len = usize::try_from(layout.values.row_count())?; let values = layout.values.new_reader( format!("{name}.values").into(), Arc::clone(&segment_source), &session, + &ctx, + )?; + let codes = layout.codes.new_reader( + format!("{name}.codes").into(), + segment_source, + &session, + &ctx, )?; - let codes = - layout - .codes - .new_reader(format!("{name}.codes").into(), segment_source, &session)?; Ok(Self { layout, @@ -370,7 +374,7 @@ mod tests { ); assert!(layout.encoding_id() == LayoutId::new("vortex.dict")); let actual = layout - .new_reader("".into(), segments, &session) + .new_reader("".into(), segments, &session, &Default::default()) .unwrap() .projection_evaluation( &(0..layout.row_count()), @@ -454,7 +458,7 @@ mod tests { )), ); let mask = layout - .new_reader("".into(), segments, &session) + .new_reader("".into(), segments, &session, &Default::default()) .unwrap() .filter_evaluation(&(0..3), &filter, MaskFuture::new_true(3)) .unwrap() @@ -515,7 +519,7 @@ mod tests { let expression = is_not_null(root()); assert_eq!(layout.encoding_id(), LayoutId::new("vortex.dict")); let actual = layout - .new_reader("".into(), segments, &session) + .new_reader("".into(), segments, &session, &Default::default()) .unwrap() .projection_evaluation( &(0..layout.row_count()), diff --git a/vortex-layout/src/layouts/flat/mod.rs b/vortex-layout/src/layouts/flat/mod.rs index b167e633170..a652f82fe61 100644 --- a/vortex-layout/src/layouts/flat/mod.rs +++ b/vortex-layout/src/layouts/flat/mod.rs @@ -87,6 +87,7 @@ impl VTable for Flat { name: Arc, segment_source: Arc, session: &VortexSession, + _ctx: &crate::LayoutReaderContext, ) -> VortexResult { Ok(Arc::new(FlatReader::new( layout.clone(), diff --git a/vortex-layout/src/layouts/flat/reader.rs b/vortex-layout/src/layouts/flat/reader.rs index 954bbe5ab5c..2af7b679a8f 100644 --- a/vortex-layout/src/layouts/flat/reader.rs +++ b/vortex-layout/src/layouts/flat/reader.rs @@ -276,7 +276,7 @@ mod test { ); let result = layout - .new_reader("".into(), segments, &SESSION)? + .new_reader("".into(), segments, &SESSION, &Default::default())? .projection_evaluation( &(0..layout.row_count()), &root(), @@ -313,7 +313,7 @@ mod test { let expr = gt(root(), lit(3i32)); let result = layout - .new_reader("".into(), segments, &SESSION) + .new_reader("".into(), segments, &SESSION, &Default::default()) .unwrap() .projection_evaluation( &(0..layout.row_count()), @@ -350,7 +350,7 @@ mod test { .unwrap(); let result = layout - .new_reader("".into(), segments, &SESSION) + .new_reader("".into(), segments, &SESSION, &Default::default()) .unwrap() .projection_evaluation(&(2..4), &root(), MaskFuture::new_true(2)) .unwrap() diff --git a/vortex-layout/src/layouts/flat/writer.rs b/vortex-layout/src/layouts/flat/writer.rs index a50d8a27416..f390555a4e7 100644 --- a/vortex-layout/src/layouts/flat/writer.rs +++ b/vortex-layout/src/layouts/flat/writer.rs @@ -260,7 +260,7 @@ mod tests { .unwrap(); let result = layout - .new_reader("".into(), segments, &SESSION) + .new_reader("".into(), segments, &SESSION, &Default::default()) .unwrap() .projection_evaluation( &(0..layout.row_count()), @@ -311,7 +311,7 @@ mod tests { .unwrap(); let result = layout - .new_reader("".into(), segments, &SESSION) + .new_reader("".into(), segments, &SESSION, &Default::default()) .unwrap() .projection_evaluation( &(0..layout.row_count()), @@ -384,7 +384,7 @@ mod tests { // We should be able to read the array we just wrote. let result: ArrayRef = layout - .new_reader("".into(), segments, &SESSION) + .new_reader("".into(), segments, &SESSION, &Default::default()) .unwrap() .projection_evaluation( &(0..layout.row_count()), diff --git a/vortex-layout/src/layouts/foreign/mod.rs b/vortex-layout/src/layouts/foreign/mod.rs index 9abacc8b26e..6e0a351b41b 100644 --- a/vortex-layout/src/layouts/foreign/mod.rs +++ b/vortex-layout/src/layouts/foreign/mod.rs @@ -171,6 +171,7 @@ impl Layout for ForeignLayout { _name: Arc, _segment_source: Arc, _session: &VortexSession, + _ctx: &crate::LayoutReaderContext, ) -> VortexResult { vortex_bail!( "Cannot read unknown layout encoding '{}'", diff --git a/vortex-layout/src/layouts/row_idx/mod.rs b/vortex-layout/src/layouts/row_idx/mod.rs index 90570101827..3814c2f8093 100644 --- a/vortex-layout/src/layouts/row_idx/mod.rs +++ b/vortex-layout/src/layouts/row_idx/mod.rs @@ -370,7 +370,9 @@ mod tests { let expr = eq(root(), lit(3i32)); let result = RowIdxLayoutReader::new( 0, - layout.new_reader("".into(), segments, &SESSION).unwrap(), + layout + .new_reader("".into(), segments, &SESSION, &Default::default()) + .unwrap(), SESSION.clone(), ) .projection_evaluation( @@ -411,7 +413,9 @@ mod tests { let expr = gt(row_idx(), lit(3u64)); let result = RowIdxLayoutReader::new( 0, - layout.new_reader("".into(), segments, &SESSION).unwrap(), + layout + .new_reader("".into(), segments, &SESSION, &Default::default()) + .unwrap(), SESSION.clone(), ) .projection_evaluation( @@ -456,7 +460,9 @@ mod tests { let result = RowIdxLayoutReader::new( 0, - layout.new_reader("".into(), segments, &SESSION).unwrap(), + layout + .new_reader("".into(), segments, &SESSION, &Default::default()) + .unwrap(), SESSION.clone(), ) .projection_evaluation( diff --git a/vortex-layout/src/layouts/struct_/mod.rs b/vortex-layout/src/layouts/struct_/mod.rs index 29843f096d8..39ada8ccaec 100644 --- a/vortex-layout/src/layouts/struct_/mod.rs +++ b/vortex-layout/src/layouts/struct_/mod.rs @@ -114,12 +114,14 @@ impl VTable for Struct { name: Arc, segment_source: Arc, session: &VortexSession, + ctx: &crate::LayoutReaderContext, ) -> VortexResult { Ok(Arc::new(StructReader::try_new( layout.clone(), name, segment_source, session.session(), + ctx.clone(), )?)) } diff --git a/vortex-layout/src/layouts/struct_/reader.rs b/vortex-layout/src/layouts/struct_/reader.rs index 6364d40b442..5261f85f9a8 100644 --- a/vortex-layout/src/layouts/struct_/reader.rs +++ b/vortex-layout/src/layouts/struct_/reader.rs @@ -68,6 +68,7 @@ impl StructReader { name: Arc, segment_source: Arc, session: VortexSession, + ctx: crate::LayoutReaderContext, ) -> VortexResult { let struct_dt = layout.struct_fields(); @@ -99,6 +100,7 @@ impl StructReader { names, Arc::clone(&segment_source), session.clone(), + ctx, ); // Create an expanded root expression that contains all fields of the struct. @@ -616,7 +618,9 @@ mod tests { fn test_struct_layout_or( #[from(struct_layout)] (segments, layout): (Arc, LayoutRef), ) { - let reader = layout.new_reader("".into(), segments, &SESSION).unwrap(); + let reader = layout + .new_reader("".into(), segments, &SESSION, &Default::default()) + .unwrap(); let filt = or( eq(col("a"), lit(7)), or(eq(col("b"), lit(5)), eq(col("a"), lit(3))), @@ -634,7 +638,9 @@ mod tests { fn test_struct_layout( #[from(struct_layout)] (segments, layout): (Arc, LayoutRef), ) { - let reader = layout.new_reader("".into(), segments, &SESSION).unwrap(); + let reader = layout + .new_reader("".into(), segments, &SESSION, &Default::default()) + .unwrap(); let expr = gt(get_item("a", root()), get_item("b", root())); let result = block_on(|_| { reader @@ -650,7 +656,9 @@ mod tests { fn test_struct_layout_row_mask( #[from(struct_layout)] (segments, layout): (Arc, LayoutRef), ) { - let reader = layout.new_reader("".into(), segments, &SESSION).unwrap(); + let reader = layout + .new_reader("".into(), segments, &SESSION, &Default::default()) + .unwrap(); let expr = gt(get_item("a", root()), get_item("b", root())); let result = block_on(|_| { reader @@ -672,7 +680,9 @@ mod tests { #[from(struct_layout)] (segments, layout): (Arc, LayoutRef), ) { let mut ctx = LEGACY_SESSION.create_execution_ctx(); - let reader = layout.new_reader("".into(), segments, &SESSION).unwrap(); + let reader = layout + .new_reader("".into(), segments, &SESSION, &Default::default()) + .unwrap(); let expr = pack( [("a", get_item("a", root())), ("b", get_item("b", root()))], Nullability::NonNullable, @@ -711,7 +721,9 @@ mod tests { #[from(null_struct_layout)] (segments, layout): (Arc, LayoutRef), ) { // Read the layout source from the top. - let reader = layout.new_reader("".into(), segments, &SESSION).unwrap(); + let reader = layout + .new_reader("".into(), segments, &SESSION, &Default::default()) + .unwrap(); let expr = get_item("a", root()); let project = reader .projection_evaluation(&(0..3), &expr, MaskFuture::new_true(3)) @@ -742,7 +754,9 @@ mod tests { // Project out the nested struct field. // The projection should preserve the nulls of the `b` struct when we select out the // child column `c`. - let reader = layout.new_reader("".into(), segments, &SESSION).unwrap(); + let reader = layout + .new_reader("".into(), segments, &SESSION, &Default::default()) + .unwrap(); let expr = select( vec![FieldName::from("c")], get_item("b", get_item("a", root())), @@ -803,7 +817,9 @@ mod tests { fn test_empty_struct( #[from(empty_struct)] (segments, layout): (Arc, LayoutRef), ) { - let reader = layout.new_reader("".into(), segments, &SESSION).unwrap(); + let reader = layout + .new_reader("".into(), segments, &SESSION, &Default::default()) + .unwrap(); let expr = pack(Vec::<(String, Expression)>::new(), Nullability::Nullable); let project = reader @@ -854,7 +870,9 @@ mod tests { }) .unwrap(); - let reader = layout.new_reader("".into(), segments, &SESSION).unwrap(); + let reader = layout + .new_reader("".into(), segments, &SESSION, &Default::default()) + .unwrap(); // DType mismatch: "age" is u8 but literal is i32 let filt = eq(col("age"), lit(67i32)); diff --git a/vortex-layout/src/layouts/zoned/mod.rs b/vortex-layout/src/layouts/zoned/mod.rs index 697e55e968c..43f9410e831 100644 --- a/vortex-layout/src/layouts/zoned/mod.rs +++ b/vortex-layout/src/layouts/zoned/mod.rs @@ -115,12 +115,14 @@ impl VTable for Zoned { name: Arc, segment_source: Arc, session: &VortexSession, + ctx: &crate::LayoutReaderContext, ) -> VortexResult { Ok(Arc::new(ZonedReader::try_new( layout.clone(), name, segment_source, session.clone(), + ctx.clone(), )?)) } diff --git a/vortex-layout/src/layouts/zoned/reader.rs b/vortex-layout/src/layouts/zoned/reader.rs index 7c3e7fbd1fe..6666be880ab 100644 --- a/vortex-layout/src/layouts/zoned/reader.rs +++ b/vortex-layout/src/layouts/zoned/reader.rs @@ -42,6 +42,7 @@ impl ZonedReader { name: Arc, segment_source: Arc, session: VortexSession, + ctx: crate::LayoutReaderContext, ) -> VortexResult { let dtypes = vec![ layout.dtype.clone(), @@ -54,6 +55,7 @@ impl ZonedReader { names, Arc::clone(&segment_source), session.clone(), + ctx, )); Ok(Self { @@ -307,7 +309,7 @@ mod test { block_on(|handle| async { let session = session_with_handle(handle); let result = layout - .new_reader("".into(), segments, &session) + .new_reader("".into(), segments, &session, &Default::default()) .unwrap() .projection_evaluation( &(0..layout.row_count()), @@ -330,7 +332,9 @@ mod test { block_on(|handle| async { let row_count = layout.row_count(); let session = session_with_handle(handle); - let reader = layout.new_reader("".into(), segments, &session).unwrap(); + let reader = layout + .new_reader("".into(), segments, &session, &Default::default()) + .unwrap(); // Choose a prune-able expression let expr = gt(root(), lit(7)); @@ -376,7 +380,8 @@ mod test { block_on(|handle| async { let row_count = legacy_layout.row_count(); let session = session_with_handle(handle); - let reader = legacy_layout.new_reader("".into(), segments, &session)?; + let reader = + legacy_layout.new_reader("".into(), segments, &session, &Default::default())?; let result = reader .pruning_evaluation( diff --git a/vortex-layout/src/lib.rs b/vortex-layout/src/lib.rs index be1bad67236..aca3d36c04a 100644 --- a/vortex-layout/src/lib.rs +++ b/vortex-layout/src/lib.rs @@ -8,6 +8,7 @@ pub use encoding::*; pub use flatbuffers::*; pub use layout::*; pub use reader::*; +pub use reader_context::*; pub use strategy::*; use vortex_session::registry::Context; pub use vtable::*; @@ -18,6 +19,7 @@ mod encoding; mod flatbuffers; mod layout; mod reader; +mod reader_context; pub mod scan; pub mod segments; pub mod sequence; diff --git a/vortex-layout/src/reader.rs b/vortex-layout/src/reader.rs index 5706fc0d964..c4f65c1c96c 100644 --- a/vortex-layout/src/reader.rs +++ b/vortex-layout/src/reader.rs @@ -20,6 +20,7 @@ use vortex_error::vortex_bail; use vortex_mask::Mask; use vortex_session::VortexSession; +use crate::LayoutReaderContext; use crate::children::LayoutChildren; use crate::segments::SegmentSource; @@ -207,6 +208,7 @@ pub struct LazyReaderChildren { names: Vec>, segment_source: Arc, session: VortexSession, + ctx: LayoutReaderContext, // TODO(ngates): we may want a hash map of some sort here? cache: Vec>, } @@ -218,6 +220,7 @@ impl LazyReaderChildren { names: Vec>, segment_source: Arc, session: VortexSession, + ctx: LayoutReaderContext, ) -> Self { let nchildren = children.nchildren(); let cache = (0..nchildren).map(|_| OnceCell::new()).collect(); @@ -227,6 +230,7 @@ impl LazyReaderChildren { names, segment_source, session, + ctx, cache, } } @@ -243,6 +247,7 @@ impl LazyReaderChildren { Arc::clone(&self.names[idx]), Arc::clone(&self.segment_source), &self.session, + &self.ctx, ) }) } diff --git a/vortex-layout/src/reader_context.rs b/vortex-layout/src/reader_context.rs new file mode 100644 index 00000000000..8c4cfed5c93 --- /dev/null +++ b/vortex-layout/src/reader_context.rs @@ -0,0 +1,60 @@ +// SPDX-License-Identifier: Apache-2.0 +// SPDX-FileCopyrightText: Copyright the Vortex contributors + +use std::any::Any; +use std::sync::Arc; + +use vortex_session::registry::Id; +use vortex_utils::aliases::hash_map::HashMap; + +/// Per-reader-tree dependency context, threaded through [`crate::VTable::new_reader`]. +/// +/// Holds an [`Id`]-keyed registry of `Arc` values. Ancestors publish via +/// [`Self::with`]; descendants retrieve via [`Self::get`]. This is a *read-only* channel +/// from the descendant's perspective — they can only consume what an ancestor chose to +/// publish. +/// +/// [`Self::with`] returns a derived context that copies the existing map and inserts or +/// replaces one entry — original unchanged, so concurrent reader-tree constructions each +/// derive their own context without races. Contexts are cheap to clone via internal `Arc` +/// and can be captured by lazy children helpers. +#[derive(Clone, Default)] +pub struct LayoutReaderContext { + values: Arc>>, +} + +impl std::fmt::Debug for LayoutReaderContext { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("LayoutReaderContext") + .field("ids", &self.values.keys().collect::>()) + .finish() + } +} + +impl LayoutReaderContext { + /// Creates a new, empty context. + pub fn new() -> Self { + Self::default() + } + + /// Returns a new context that publishes `value` under `id`. + /// + /// The original context is unchanged. If a value was already published under the + /// same `id`, the new one replaces it in the returned context — so two ancestors + /// using the same well-known static id give descendants "nearest ancestor wins". + pub fn with(&self, id: Id, value: Arc) -> Self { + let mut values = HashMap::clone(&self.values); + values.insert(id, value); + Self { + values: Arc::new(values), + } + } + + /// Returns the value published under `id`, downcast to `T`. Returns `None` if no + /// ancestor published under that id, or if the published value is not a `T`. + pub fn get(&self, id: Id) -> Option> { + self.values + .get(&id) + .and_then(|v| Arc::clone(v).downcast::().ok()) + } +} diff --git a/vortex-layout/src/scan/split_by.rs b/vortex-layout/src/scan/split_by.rs index 34b0edbf4c8..cdaf260cdb8 100644 --- a/vortex-layout/src/scan/split_by.rs +++ b/vortex-layout/src/scan/split_by.rs @@ -107,7 +107,7 @@ mod test { .unwrap(); layout - .new_reader("".into(), segments, &SCAN_SESSION) + .new_reader("".into(), segments, &SCAN_SESSION, &Default::default()) .unwrap() } diff --git a/vortex-layout/src/vtable.rs b/vortex-layout/src/vtable.rs index 9bb83fcf643..c48a9d33d1f 100644 --- a/vortex-layout/src/vtable.rs +++ b/vortex-layout/src/vtable.rs @@ -19,6 +19,7 @@ use crate::LayoutChildType; use crate::LayoutEncoding; use crate::LayoutEncodingRef; use crate::LayoutId; +use crate::LayoutReaderContext; use crate::LayoutReaderRef; use crate::LayoutRef; use crate::children::LayoutChildren; @@ -58,11 +59,20 @@ pub trait VTable: 'static + Sized + Send + Sync + Debug { fn child_type(layout: &Self::Layout, idx: usize) -> LayoutChildType; /// Create a new reader for the layout. + /// + /// **Layouts with children MUST propagate `ctx` to descendants** by passing it + /// through `Layout::new_reader` (or `LazyReaderChildren::new`) when constructing + /// child readers. If `ctx` is dropped at any link in the chain, ancestor-published + /// values won't reach affected descendants — a silent runtime regression for any + /// descendant that looked up an ancestor-published value via `ctx.get::()`. + /// There is no compile-time check that catches this; reviewer discipline + the + /// integration tests in `vortex-layout` are the only safety net. fn new_reader( layout: &Self::Layout, name: Arc, segment_source: Arc, session: &VortexSession, + ctx: &LayoutReaderContext, ) -> VortexResult; /// Construct a new [`Layout`] from the provided parts. diff --git a/vortex-test/compat-gen/src/adapter.rs b/vortex-test/compat-gen/src/adapter.rs index a97399dac79..bed1300b531 100644 --- a/vortex-test/compat-gen/src/adapter.rs +++ b/vortex-test/compat-gen/src/adapter.rs @@ -136,7 +136,12 @@ pub fn read_layout_tree(bytes: ByteBuffer) -> VortexResult<()> { if row_count == 0 { continue; } - let reader = layout.new_reader("".into(), Arc::clone(&segment_source), &session)?; + let reader = layout.new_reader( + "".into(), + Arc::clone(&segment_source), + &session, + &Default::default(), + )?; let len = usize::try_from(row_count).map_err(|e| vortex_err!("row count overflow: {e}"))?; reader diff --git a/vortex-tui/src/browse/app.rs b/vortex-tui/src/browse/app.rs index 0a7f13ab277..97e17bac205 100644 --- a/vortex-tui/src/browse/app.rs +++ b/vortex-tui/src/browse/app.rs @@ -360,7 +360,12 @@ impl AppState { // Load the array. let reader = layout - .new_reader("".into(), self.vxf.segment_source(), &self.session) + .new_reader( + "".into(), + self.vxf.segment_source(), + &self.session, + &Default::default(), + ) .vortex_expect("Failed to create reader"); let array = reader .projection_evaluation( diff --git a/vortex-tui/src/wasm.rs b/vortex-tui/src/wasm.rs index 8b643161fe2..5fd7dd9054b 100644 --- a/vortex-tui/src/wasm.rs +++ b/vortex-tui/src/wasm.rs @@ -78,7 +78,12 @@ async fn load_flat_array( row_count: u64, ) -> vortex::array::ArrayRef { let reader = layout - .new_reader("".into(), segment_source.clone(), session) + .new_reader( + "".into(), + segment_source.clone(), + session, + &Default::default(), + ) .vortex_expect("Failed to create reader"); reader .projection_evaluation( diff --git a/vortex-web/crate/src/wasm.rs b/vortex-web/crate/src/wasm.rs index 05e328e5341..f1bb4df791e 100644 --- a/vortex-web/crate/src/wasm.rs +++ b/vortex-web/crate/src/wasm.rs @@ -293,7 +293,12 @@ impl VortexFileHandle { let segment_source = self.vxf.segment_source(); let reader = layout - .new_reader(node_id.into(), segment_source, &self.session) + .new_reader( + node_id.into(), + segment_source, + &self.session, + &Default::default(), + ) .map_err(|e| JsValue::from_str(&e.to_string()))?; let stream = ScanBuilder::new(self.session.clone(), reader)