pub struct IndexExprResult {
pub lower: RowAddrMask,
pub upper: RowAddrMask,
/* private fields */
}Expand description
Result of an index search after NULL rows have been dropped. This is what the read planner consumes.
Fields§
§lower: RowAddrMaskRows the index guarantees are in the answer.
upper: RowAddrMaskRows that may be in the answer. Rows outside upper are
guaranteed not in the answer.
Implementations§
Source§impl IndexExprResult
impl IndexExprResult
Sourcepub fn exact(mask: RowAddrMask) -> Self
pub fn exact(mask: RowAddrMask) -> Self
Precise result — every row in mask is in the answer and every
row outside is not. Equivalent to the old Exact variant.
Sourcepub fn at_most(mask: RowAddrMask) -> Self
pub fn at_most(mask: RowAddrMask) -> Self
Upper-bound-only result. Equivalent to the old AtMost variant.
Sourcepub fn at_least(mask: RowAddrMask) -> Self
pub fn at_least(mask: RowAddrMask) -> Self
Lower-bound-only result. Equivalent to the old AtLeast variant.
Sourcepub fn new(lower: RowAddrMask, upper: RowAddrMask) -> Self
pub fn new(lower: RowAddrMask, upper: RowAddrMask) -> Self
Construct a refined interval result — lower rows are guaranteed
matches and upper rows are candidates, with lower ⊆ upper.
Use Self::exact / Self::at_most / Self::at_least for
the three degenerate shapes; this constructor is only needed when
both endpoints are non-trivial.
Sourcepub fn is_exact(&self) -> bool
pub fn is_exact(&self) -> bool
True if the result is exact — the answer is precisely the lower
(== upper) mask. See NullableIndexExprResult::is_exact for the
structural-form caveat and the precedence convention shared with
Self::is_at_most / Self::is_at_least.
Sourcepub fn is_at_most(&self) -> bool
pub fn is_at_most(&self) -> bool
True if lower matches no rows (canonical AllowList(∅)) — the
index gives only an upper bound on the answer. See
NullableIndexExprResult::is_exact for caveats.
Sourcepub fn is_at_least(&self) -> bool
pub fn is_at_least(&self) -> bool
True if upper covers every row (canonical BlockList(∅)) — the
index gives only a lower bound on the answer. See
NullableIndexExprResult::is_at_least for the precedence
convention consumers should follow.
Source§impl IndexExprResult
impl IndexExprResult
pub fn serialize( &self, fragments_covered: &RoaringBitmap, format: IndexExprResultWireFormat, ) -> Result<RecordBatch>
Sourcepub fn deserialize(batch: &RecordBatch) -> Result<(Self, RoaringBitmap)>
pub fn deserialize(batch: &RecordBatch) -> Result<(Self, RoaringBitmap)>
Deserialize from a record batch produced by Self::serialize.
Trait Implementations§
Source§impl BitAnd for IndexExprResult
impl BitAnd for IndexExprResult
Source§impl BitOr for IndexExprResult
impl BitOr for IndexExprResult
Source§impl Clone for IndexExprResult
impl Clone for IndexExprResult
Source§fn clone(&self) -> IndexExprResult
fn clone(&self) -> IndexExprResult
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for IndexExprResult
impl Debug for IndexExprResult
Auto Trait Implementations§
impl Freeze for IndexExprResult
impl RefUnwindSafe for IndexExprResult
impl Send for IndexExprResult
impl Sync for IndexExprResult
impl Unpin for IndexExprResult
impl UnsafeUnpin for IndexExprResult
impl UnwindSafe for IndexExprResult
Blanket Implementations§
impl<T> Allocation for T
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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