pub struct Scanner { /* private fields */ }Expand description
Represents a scan operation to read data from a set of rows, with an optional filter expression, and a projection expression.
A scan operation can be broken into many RangeScanner operations, each of which leverages
shared statistics from the parent Scanner to optimize the order in which filter and projection
operations are applied.
For example, if a filter expression has a top-level AND clause, it may be the case that one
clause is significantly more selective than the other. In this case, we may want to compute the
most selective filter first, then prune rows using result of the filter, before evaluating
the second filter over the reduced set of rows.
Implementations§
Source§impl Scanner
impl Scanner
Sourcepub fn new(
dtype: DType,
projection: ExprRef,
filter: Option<ExprRef>,
) -> VortexResult<Self>
pub fn new( dtype: DType, projection: ExprRef, filter: Option<ExprRef>, ) -> VortexResult<Self>
Create a new scan with the given projection and optional filter.
Sourcepub fn projection(&self) -> &ExprRef
pub fn projection(&self) -> &ExprRef
Returns the projection expression.
Sourcepub fn result_dtype(&self) -> &DType
pub fn result_dtype(&self) -> &DType
Compute the result dtype of the scan given the input dtype.
Sourcepub fn range_scanner(
self: Arc<Self>,
row_mask: RowMask,
) -> VortexResult<RangeScanner>
pub fn range_scanner( self: Arc<Self>, row_mask: RowMask, ) -> VortexResult<RangeScanner>
Instantiate a new scan for a specific range. The range scan will share statistics with this parent scan in order to optimize future range scans.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Scanner
impl !RefUnwindSafe for Scanner
impl Send for Scanner
impl Sync for Scanner
impl Unpin for Scanner
impl !UnwindSafe for Scanner
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
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 moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.