pub struct JoinOutput<'a> { /* private fields */ }Expand description
Reorder and merge join columns while retaining the joined physical row. Inner, left, and right joins are schema-only remaps; a full join appends only the merged values that cannot be represented by one existing slot.
Implementations§
Source§impl<'a> JoinOutput<'a>
impl<'a> JoinOutput<'a>
Sourcepub fn try_schema(
input: &RowSchema,
columns: &[(String, ColumnIdentity, JoinOutputSource)],
aliases: &[(ColumnIdentity, JoinOutputSource)],
) -> ExecResult<RowSchema>
pub fn try_schema( input: &RowSchema, columns: &[(String, ColumnIdentity, JoinOutputSource)], aliases: &[(ColumnIdentity, JoinOutputSource)], ) -> ExecResult<RowSchema>
Compile the positional schema of a qualified join without constructing or executing an operator. Binders use this to expose the exact same merged-column identities and hidden qualified aliases as execution.
pub fn try_new( child: Box<dyn PhysicalOperator + 'a>, columns: Vec<(String, ColumnIdentity, JoinOutputSource)>, aliases: Vec<(ColumnIdentity, JoinOutputSource)>, ) -> ExecResult<Self>
Trait Implementations§
Source§impl PhysicalOperator for JoinOutput<'_>
impl PhysicalOperator for JoinOutput<'_>
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 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.fn open(&mut self) -> ExecResult<()>
fn next(&mut self) -> ExecResult<Option<Batch>>
fn close(&mut self) -> ExecResult<()>
Source§fn output_ordering(&self) -> &[PhysicalOrder]
fn output_ordering(&self) -> &[PhysicalOrder]
Leading output ordering known to be preserved by this operator.
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 JoinOutput<'a>
impl<'a> !Sync for JoinOutput<'a>
impl<'a> !UnwindSafe for JoinOutput<'a>
impl<'a> Freeze for JoinOutput<'a>
impl<'a> Send for JoinOutput<'a>
impl<'a> Unpin for JoinOutput<'a>
impl<'a> UnsafeUnpin for JoinOutput<'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