pub enum ScanMode {
Unknown,
CountMetadata,
CountSurvivors,
ArrowShadow,
NativePageCursor,
MultiRunCursor,
NativePushdown,
Materialized,
DirectDispatch,
ExternalModule,
}Expand description
Which physical scan path served a query. Recorded by the SQL scan
([crate::scan]) and the native query entry points. Used in benchmarks and
path-sensitive tests to assert that the expected path was taken.
Variants§
Unknown
The trace was never filled (no recording site ran). Indicates a path that has not yet been instrumented.
CountMetadata
COUNT(*) / empty projection answered from the maintained live_count
metadata in O(1) — no run read, no index resolve.
CountSurvivors
COUNT(*) with a pushed WHERE answered from survivor set cardinality
via crate::engine::Table::count_conditions — index resolve only, no
column decode.
ArrowShadow
Zero-copy Arrow IPC shadow read — no per-column decode at all (clean single-run unfiltered table).
NativePageCursor
Single-run lazy page cursor: fused predicate + page skip + late
materialization (crate::cursor::NativePageCursor).
MultiRunCursor
Multi-run k-way merge cursor (crate::cursor::MultiRunCursor).
NativePushdown
Index pushdown fast path: survivors resolved then gathered column-wise
from a single reader (crate::engine::Table::query_columns_native
fast path — no cursor streaming, but no row materialization either).
Materialized
Full materialization fallback: visible_columns_native or
rows_for_rids — rows go through the Row { HashMap } shape. This is
the path optimizations try to avoid.
DirectDispatch
§5.3 direct SQL dispatch: a simple single-table SELECT recognized from
the raw SQL (sqlparser AST) and served straight from the native column
cursor, bypassing DataFusion parse+plan+optimize entirely.
ExternalModule
DataFusion scan served by an external table module / virtual table provider rather than a native MongrelDB storage table.
Trait Implementations§
impl Copy for ScanMode
impl Eq for ScanMode
impl StructuralPartialEq for ScanMode
Auto Trait Implementations§
impl Freeze for ScanMode
impl RefUnwindSafe for ScanMode
impl Send for ScanMode
impl Sync for ScanMode
impl Unpin for ScanMode
impl UnsafeUnpin for ScanMode
impl UnwindSafe for ScanMode
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