fn create_page_index()

in crates/iceberg/src/expr/visitors/page_index_evaluator.rs [1318:1419]


    fn create_page_index() -> Result<(Vec<Index>, Vec<OffsetIndexMetaData>)> {
        let idx_float = Index::FLOAT(NativeIndex::<f32> {
            indexes: vec![
                PageIndex {
                    min: None,
                    max: None,
                    null_count: Some(1024),
                    repetition_level_histogram: None,
                    definition_level_histogram: None,
                },
                PageIndex {
                    min: Some(0.0),
                    max: Some(10.0),
                    null_count: Some(0),
                    repetition_level_histogram: None,
                    definition_level_histogram: None,
                },
                PageIndex {
                    min: Some(10.0),
                    max: Some(20.0),
                    null_count: Some(1),
                    repetition_level_histogram: None,
                    definition_level_histogram: None,
                },
                PageIndex {
                    min: None,
                    max: None,
                    null_count: None,
                    repetition_level_histogram: None,
                    definition_level_histogram: None,
                },
            ],
            boundary_order: BoundaryOrder(0), // UNORDERED
        });

        let idx_string = Index::BYTE_ARRAY(NativeIndex::<ByteArray> {
            indexes: vec![
                PageIndex {
                    min: Some("AA".into()),
                    max: Some("DD".into()),
                    null_count: Some(0),
                    repetition_level_histogram: None,
                    definition_level_histogram: None,
                },
                PageIndex {
                    min: Some("DE".into()),
                    max: Some("DE".into()),
                    null_count: Some(0),
                    repetition_level_histogram: None,
                    definition_level_histogram: None,
                },
                PageIndex {
                    min: Some("DF".into()),
                    max: Some("UJ".into()),
                    null_count: Some(1),
                    repetition_level_histogram: None,
                    definition_level_histogram: None,
                },
                PageIndex {
                    min: None,
                    max: None,
                    null_count: Some(48),
                    repetition_level_histogram: None,
                    definition_level_histogram: None,
                },
                PageIndex {
                    min: None,
                    max: None,
                    null_count: None,
                    repetition_level_histogram: None,
                    definition_level_histogram: None,
                },
            ],
            boundary_order: BoundaryOrder(0), // UNORDERED
        });

        let page_locs_float = vec![
            PageLocation::new(0, 1024, 0),
            PageLocation::new(1024, 1024, 1024),
            PageLocation::new(2048, 1024, 2048),
            PageLocation::new(3072, 1024, 3072),
        ];

        let page_locs_string = vec![
            PageLocation::new(0, 512, 0),
            PageLocation::new(512, 512, 512),
            PageLocation::new(1024, 2976, 1024),
            PageLocation::new(4000, 48, 4000),
            PageLocation::new(4048, 48, 4048),
        ];

        Ok((vec![idx_float, idx_string], vec![
            OffsetIndexMetaData {
                page_locations: page_locs_float,
                unencoded_byte_array_data_bytes: None,
            },
            OffsetIndexMetaData {
                page_locations: page_locs_string,
                unencoded_byte_array_data_bytes: None,
            },
        ]))
    }