Skip to main content

HashJoin

Struct HashJoin 

Source
pub struct HashJoin<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> HashJoin<'a>

Source

pub fn new( left: Box<dyn PhysicalOperator + 'a>, right: Box<dyn PhysicalOperator + 'a>, kind: JoinKind, left_keys: Vec<ScalarExpr>, right_keys: Vec<ScalarExpr>, evaluator: SharedExpressionEvaluator<'a>, left_nulls: ResultRow, right_nulls: ResultRow, ) -> Self

Source

pub fn new_with_work_mem( left: Box<dyn PhysicalOperator + 'a>, right: Box<dyn PhysicalOperator + 'a>, kind: JoinKind, left_keys: Vec<ScalarExpr>, right_keys: Vec<ScalarExpr>, evaluator: SharedExpressionEvaluator<'a>, left_nulls: ResultRow, right_nulls: ResultRow, work_mem_bytes: usize, ) -> Self

Source

pub fn new_with_work_mem_and_predicate( left: Box<dyn PhysicalOperator + 'a>, right: Box<dyn PhysicalOperator + 'a>, kind: JoinKind, left_keys: Vec<ScalarExpr>, right_keys: Vec<ScalarExpr>, predicate: Option<ScalarExpr>, evaluator: SharedExpressionEvaluator<'a>, left_nulls: ResultRow, right_nulls: ResultRow, work_mem_bytes: usize, ) -> Self

Source

pub fn try_new_with_work_mem_and_predicate( left: Box<dyn PhysicalOperator + 'a>, right: Box<dyn PhysicalOperator + 'a>, kind: JoinKind, left_keys: Vec<ScalarExpr>, right_keys: Vec<ScalarExpr>, predicate: Option<ScalarExpr>, evaluator: SharedExpressionEvaluator<'a>, left_nulls: ResultRow, right_nulls: ResultRow, work_mem_bytes: usize, params: &[SQLParam], ) -> ExecResult<Self>

Construct a hash join while preparing supported residual predicates against its composite output schema. Parameters and constant LIKE patterns are folded exactly once before any candidate row is probed.

Source

pub fn output_has_spilled(&self) -> bool

Source

pub fn right_input_has_spilled(&self) -> bool

Source

pub fn hash_index_has_spilled(&self) -> bool

Source

pub fn builds_left_input(&self) -> bool

Trait Implementations§

Source§

impl PhysicalOperator for HashJoin<'_>

Source§

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>

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 open(&mut self) -> ExecResult<()>

Source§

fn next(&mut self) -> ExecResult<Option<Batch>>

Source§

fn close(&mut self) -> ExecResult<()>

Source§

fn schema(&self) -> &[String]

Schema column names in logical output order.
Source§

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>

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 HashJoin<'a>

§

impl<'a> !Sync for HashJoin<'a>

§

impl<'a> !UnwindSafe for HashJoin<'a>

§

impl<'a> Freeze for HashJoin<'a>

§

impl<'a> Send for HashJoin<'a>

§

impl<'a> Unpin for HashJoin<'a>

§

impl<'a> UnsafeUnpin for HashJoin<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.