pub enum Condition {
Show 13 variants
Pk(Vec<u8>),
BitmapEq {
column_id: u16,
value: Vec<u8>,
},
BitmapIn {
column_id: u16,
values: Vec<Vec<u8>>,
},
BytesPrefix {
column_id: u16,
prefix: Vec<u8>,
},
Ann {
column_id: u16,
query: Vec<f32>,
k: usize,
},
FmContains {
column_id: u16,
pattern: Vec<u8>,
},
FmContainsAll {
column_id: u16,
patterns: Vec<Vec<u8>>,
},
Range {
column_id: u16,
lo: i64,
hi: i64,
},
RangeF64 {
column_id: u16,
lo: f64,
lo_inclusive: bool,
hi: f64,
hi_inclusive: bool,
},
SparseMatch {
column_id: u16,
query: Vec<(u32, f32)>,
k: usize,
},
MinHashSimilar {
column_id: u16,
query: Vec<u64>,
k: usize,
},
IsNull {
column_id: u16,
},
IsNotNull {
column_id: u16,
},
}Expand description
One predicate over the row-id space.
Variants§
Pk(Vec<u8>)
Primary-key exact match (encoded key bytes).
BitmapEq
Low-cardinality equality via the roaring bitmap index.
BitmapIn
Multi-value equality via the roaring bitmap index (Phase 13.5). Resolves
to the union of bitmap[col].get(v) for each value — the index-
accelerated equivalent of col IN (v1, v2, …) or a semi-join’s runtime
value set.
BytesPrefix
Prefix match on a Bytes column with a bitmap index: all row-ids whose
indexed value starts with prefix. Exact (no residual needed) — the
bitmap’s distinct keys are enumerated and filtered by prefix. Tighter
than FmContains for anchored LIKE 'prefix%'. (§5.6)
Ann
Semantic search via the binary-quantized ANN index.
FmContains
Arbitrary substring via the FM index (no tokenization).
FmContainsAll
Multi-segment FM intersection for LIKE '%seg1%seg2%...' (Priority 12).
Resolves to the intersection of FM lookups for each segment — a much
tighter superset than the single longest segment. DataFusion still
re-applies the real wildcard semantics (Inexact pushdown).
Range
Inclusive integer range (served by scanning the int column, later by the
learned PGM index / page-index pruning). Exclusive bounds (>,<) are
expressed exactly via ±1 in the translator.
RangeF64
Floating-point range with per-bound inclusivity (exact for >/</>=/
<=/BETWEEN), served the same way as Condition::Range.
SparseMatch
SPLADE-style sparse retrieval: top-k row ids by sparse dot product over
shared tokens. query is a sparse vector (token id → weight).
MinHashSimilar
MinHash/LSH set-similarity: candidate row ids whose set is similar to
query (a set of 64-bit token hashes), ranked by estimated Jaccard,
truncated to k. Approximate (LSH recall) — the caller re-verifies.
IsNull
Rows where column_id is NULL. Resolved by decoding the column and
collecting null positions — a column scan, but no row materialization.
Page-stat aware: pages with null_count == 0 are skipped.
IsNotNull
Rows where column_id is NOT NULL. The complement of Self::IsNull.
Page-stat aware: pages with null_count == row_count are skipped.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Condition
impl RefUnwindSafe for Condition
impl Send for Condition
impl Sync for Condition
impl Unpin for Condition
impl UnsafeUnpin for Condition
impl UnwindSafe for Condition
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more