Skip to main content

arrow_view_state/
lib.rs

1//! High-performance columnar view-state engine for Apache Arrow.
2//!
3//! # Architecture
4//!
5//! Pure indexing engine — no I/O, no column names, no pagination.
6//!
7//! ## Core types
8//! - [`PermutationIndex`] — sorted permutation: virtual row → physical row ID.
9//! - [`FilterIndex`] — sparse filter with set algebra.
10//! - [`PhysicalSelection`] — physical row IDs for late materialisation.
11//!
12//! ## Builders
13//! - [`SortBuilder`] — streaming multi-column sort builder.
14//!
15//! ## Optional features
16//! - `evaluate` — SIMD predicate evaluation → `FilterIndex`.
17//! - `hash-index` — O(1) equality lookup index.
18//! - `inverted-index` — token-based text search index.
19//! - `persist` — save/load indices via mmap persistence.
20
21// ── Modules ────────────────────────────────────────────────────────────────
22
23pub mod error;
24pub mod filter;
25pub mod permutation;
26pub mod scalar_value;
27pub mod selection;
28pub mod sort_builder;
29
30pub(crate) mod storage;
31
32#[cfg(feature = "mmap")]
33pub(crate) mod mmap_builder;
34
35#[cfg(feature = "evaluate")]
36pub mod evaluate;
37
38#[cfg(feature = "hash-index")]
39pub mod hash_index;
40
41#[cfg(feature = "inverted-index")]
42pub mod inverted_index;
43
44#[cfg(feature = "persist")]
45pub mod persist;
46
47#[cfg(test)]
48mod tests;
49
50// ── Re-exports ─────────────────────────────────────────────────────────────
51
52pub use error::IndexError;
53pub use filter::FilterIndex;
54pub use permutation::PermutationIndex;
55pub use scalar_value::OwnedScalar;
56pub use selection::PhysicalSelection;
57pub use sort_builder::SortBuilder;
58
59#[cfg(feature = "evaluate")]
60pub use evaluate::{ScalarPredicate, ScalarValue, evaluate, evaluate_batches};
61
62#[cfg(feature = "hash-index")]
63pub use hash_index::HashIndex;
64
65#[cfg(feature = "inverted-index")]
66pub use inverted_index::{InvertedIndex, NgramTokenizer, Tokenizer, WhitespaceTokenizer};
67
68#[cfg(feature = "persist")]
69pub use persist::{load_filter, load_permutation, save_filter, save_permutation};