pub struct Project<'a> { /* private fields */ }Expand description
Per-row scalar projection. Each (alias, expr) pair is evaluated
against the input row and written under alias in the output. The
child schema is replaced with the output aliases.
Implementations§
Source§impl Project<'static>
impl Project<'static>
pub fn new( child: Box<dyn PhysicalOperator>, projections: Vec<(String, ScalarExpr)>, params: Vec<SQLParam>, ) -> Self
Sourcepub fn appending(
child: Box<dyn PhysicalOperator>,
projections: Vec<(String, ScalarExpr)>,
params: Vec<SQLParam>,
) -> Self
pub fn appending( child: Box<dyn PhysicalOperator>, projections: Vec<(String, ScalarExpr)>, params: Vec<SQLParam>, ) -> Self
Variant that keeps every input column in the output and appends the projections at the end. Used by aggregate / window paths.
Source§impl<'a> Project<'a>
impl<'a> Project<'a>
pub fn with_evaluator( child: Box<dyn PhysicalOperator + 'a>, projections: Vec<(String, ScalarExpr)>, evaluator: SharedExpressionEvaluator<'a>, ) -> Self
pub fn appending_with_evaluator( child: Box<dyn PhysicalOperator + 'a>, projections: Vec<(String, ScalarExpr)>, evaluator: SharedExpressionEvaluator<'a>, ) -> Self
Trait Implementations§
Source§impl PhysicalOperator for Project<'_>
impl PhysicalOperator for Project<'_>
Source§fn row_schema(&self) -> &RowSchema
fn row_schema(&self) -> &RowSchema
Complete logical-to-physical row layout emitted by this operator. Every
Batch returned by Self::next must carry this exact schema; operators must reject a child that violates that invariant.Source§fn output_ordering(&self) -> &[PhysicalOrder]
fn output_ordering(&self) -> &[PhysicalOrder]
Leading output ordering known to be preserved by this operator.
fn open(&mut self) -> ExecResult<()>
fn next(&mut self) -> ExecResult<Option<Batch>>
fn close(&mut self) -> ExecResult<()>
Source§fn estimated_cardinality(&self) -> Option<u64>
fn estimated_cardinality(&self) -> Option<u64>
Planner/runtime cardinality estimate for choosing physical strategies.
None means the operator cannot provide a useful estimate. The value
is advisory rather than a correctness bound.Source§fn consume_into_aggregate(
&mut self,
_executor: &mut dyn AggregateExecutor,
) -> ExecResult<bool>
fn consume_into_aggregate( &mut self, _executor: &mut dyn AggregateExecutor, ) -> ExecResult<bool>
Let a leaf consume its native projected rows directly into an
aggregate executor. Returning
false promises that no input was
consumed, so the caller can fall back to ordinary Batch pulls.Auto Trait Implementations§
impl<'a> !RefUnwindSafe for Project<'a>
impl<'a> !Sync for Project<'a>
impl<'a> !UnwindSafe for Project<'a>
impl<'a> Freeze for Project<'a>
impl<'a> Send for Project<'a>
impl<'a> Unpin for Project<'a>
impl<'a> UnsafeUnpin for Project<'a>
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
Mutably borrows from an owned value. Read more
impl<T> ErasedDestructor for Twhere
T: 'static,
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> ⓘ
Converts
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> ⓘ
Converts
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