vortex_layout/layouts/dict/
mod.rs1mod 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}