JoinLeftData

Struct JoinLeftData 

Source
pub(super) struct JoinLeftData {
    pub(super) hash_map: Box<dyn JoinHashMapType>,
    batch: RecordBatch,
    values: Vec<ArrayRef>,
    visited_indices_bitmap: Mutex<BooleanBufferBuilder>,
    probe_threads_counter: AtomicUsize,
    _reservation: MemoryReservation,
    pub(super) bounds: Option<Vec<ColumnBounds>>,
}
Expand description

HashTable and input data for the left (build side) of a join

Fields§

§hash_map: Box<dyn JoinHashMapType>

The hash table with indices into batch

§batch: RecordBatch

The input rows for the build side

§values: Vec<ArrayRef>

The build side on expressions values

§visited_indices_bitmap: Mutex<BooleanBufferBuilder>

Shared bitmap builder for visited left indices

§probe_threads_counter: AtomicUsize

Counter of running probe-threads, potentially able to update visited_indices_bitmap

§_reservation: MemoryReservation

We need to keep this field to maintain accurate memory accounting, even though we don’t directly use it. Without holding onto this reservation, the recorded memory usage would become inconsistent with actual usage. This could hide potential out-of-memory issues, especially when upstream operators increase their memory consumption. The MemoryReservation ensures proper tracking of memory resources throughout the join operation’s lifecycle.

§bounds: Option<Vec<ColumnBounds>>

Bounds computed from the build side for dynamic filter pushdown

Implementations§

Source§

impl JoinLeftData

Source

pub(super) fn new( hash_map: Box<dyn JoinHashMapType>, batch: RecordBatch, values: Vec<ArrayRef>, visited_indices_bitmap: Mutex<BooleanBufferBuilder>, probe_threads_counter: AtomicUsize, reservation: MemoryReservation, bounds: Option<Vec<ColumnBounds>>, ) -> Self

Create a new JoinLeftData from its parts

Source

pub(super) fn hash_map(&self) -> &dyn JoinHashMapType

return a reference to the hash map

Source

pub(super) fn batch(&self) -> &RecordBatch

returns a reference to the build side batch

Source

pub(super) fn values(&self) -> &[ArrayRef]

returns a reference to the build side expressions values

Source

pub(super) fn visited_indices_bitmap(&self) -> &Mutex<BooleanBufferBuilder>

returns a reference to the visited indices bitmap

Source

pub(super) fn report_probe_completed(&self) -> bool

Decrements the counter of running threads, and returns true if caller is the last running thread

Auto Trait Implementations§

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> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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
§

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

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

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