vortex_layout/layouts/stats/
mod.rs1mod eval_expr;
2mod reader;
3pub mod stats_table;
4pub mod writer;
5
6use std::collections::BTreeSet;
7use std::sync::Arc;
8
9use vortex_array::ArrayContext;
10use vortex_dtype::FieldMask;
11use vortex_error::VortexResult;
12
13use crate::data::Layout;
14use crate::layouts::stats::reader::StatsReader;
15use crate::reader::{LayoutReader, LayoutReaderExt};
16use crate::segments::SegmentSource;
17use crate::vtable::LayoutVTable;
18use crate::{LayoutId, STATS_LAYOUT_ID};
19
20#[derive(Default, Debug)]
21pub struct StatsLayout;
22
23impl LayoutVTable for StatsLayout {
25 fn id(&self) -> LayoutId {
26 STATS_LAYOUT_ID
27 }
28
29 fn reader(
30 &self,
31 layout: Layout,
32 segment_source: &Arc<dyn SegmentSource>,
33 ctx: &ArrayContext,
34 ) -> VortexResult<Arc<dyn LayoutReader>> {
35 Ok(StatsReader::try_new(layout, segment_source, ctx)?.into_arc())
36 }
37
38 fn register_splits(
39 &self,
40 layout: &Layout,
41 field_mask: &[FieldMask],
42 row_offset: u64,
43 splits: &mut BTreeSet<u64>,
44 ) -> VortexResult<()> {
45 layout
46 .child(0, layout.dtype().clone(), "data")?
47 .register_splits(field_mask, row_offset, splits)
48 }
49}