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: RecordBatchThe 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: AtomicUsizeCounter of running probe-threads, potentially
able to update visited_indices_bitmap
_reservation: MemoryReservationWe 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
impl JoinLeftData
Sourcepub(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
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
Sourcepub(super) fn hash_map(&self) -> &dyn JoinHashMapType
pub(super) fn hash_map(&self) -> &dyn JoinHashMapType
return a reference to the hash map
Sourcepub(super) fn values(&self) -> &[ArrayRef] ⓘ
pub(super) fn values(&self) -> &[ArrayRef] ⓘ
returns a reference to the build side expressions values
Sourcepub(super) fn visited_indices_bitmap(&self) -> &Mutex<BooleanBufferBuilder>
pub(super) fn visited_indices_bitmap(&self) -> &Mutex<BooleanBufferBuilder>
returns a reference to the visited indices bitmap
Sourcepub(super) fn report_probe_completed(&self) -> bool
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§
impl !Freeze for JoinLeftData
impl !RefUnwindSafe for JoinLeftData
impl Send for JoinLeftData
impl Sync for JoinLeftData
impl Unpin for JoinLeftData
impl !UnwindSafe for JoinLeftData
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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 more