vortex_layout/layouts/dict/
mod.rs

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