Struct substrait::proto::MergeJoinRel
source · pub struct MergeJoinRel {
pub common: Option<RelCommon>,
pub left: Option<Box<Rel>>,
pub right: Option<Box<Rel>>,
pub left_keys: Vec<FieldReference>,
pub right_keys: Vec<FieldReference>,
pub keys: Vec<ComparisonJoinKey>,
pub post_join_filter: Option<Box<Expression>>,
pub type: i32,
pub advanced_extension: Option<AdvancedExtension>,
}
Expand description
The merge equijoin does a join by taking advantage of two sets that are sorted on the join keys. This allows the join operation to be done in a streaming fashion.
Fields§
§common: Option<RelCommon>
§left: Option<Box<Rel>>
§right: Option<Box<Rel>>
§left_keys: Vec<FieldReference>
These fields are deprecated in favor of keys
. If they are set then
the two lists (left_keys and right_keys) must have the same length and
the comparion function is considered to be SimpleEqualityType::EQ
right_keys: Vec<FieldReference>
keys: Vec<ComparisonJoinKey>
One or more keys to join on. The relation is invalid if this is empty (unless the deprecated left_keys/right_keys fields are being used).
If a custom comparison function is used then it must be consistent with the ordering of the input data. For example, if the comparison function is “<” then we generally expect the data to be sorted in ascending order.
If the comparison function is something like “less than ignoring case” then the data should be sorted appropriately (e.g. both “A” and “a” should come before “b”)
The sort order is not specified here. It is typically the responsibility of the producer to ensure the plan sorts the data if needed (although the consumer is free to do so as well). If possible, the consumer should verify the sort order and reject invalid plans.
post_join_filter: Option<Box<Expression>>
§type: i32
§advanced_extension: Option<AdvancedExtension>
Implementations§
Trait Implementations§
source§impl Clone for MergeJoinRel
impl Clone for MergeJoinRel
source§fn clone(&self) -> MergeJoinRel
fn clone(&self) -> MergeJoinRel
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for MergeJoinRel
impl Debug for MergeJoinRel
source§impl Default for MergeJoinRel
impl Default for MergeJoinRel
§impl<'de> Deserialize<'de> for MergeJoinRel
impl<'de> Deserialize<'de> for MergeJoinRel
§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
source§impl Message for MergeJoinRel
impl Message for MergeJoinRel
source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
source§fn encode<B>(&self, buf: &mut B) -> Result<(), EncodeError>
fn encode<B>(&self, buf: &mut B) -> Result<(), EncodeError>
source§fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
source§fn encode_length_delimited<B>(&self, buf: &mut B) -> Result<(), EncodeError>
fn encode_length_delimited<B>(&self, buf: &mut B) -> Result<(), EncodeError>
source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
source§fn decode<B>(buf: B) -> Result<Self, DecodeError>
fn decode<B>(buf: B) -> Result<Self, DecodeError>
source§fn decode_length_delimited<B>(buf: B) -> Result<Self, DecodeError>
fn decode_length_delimited<B>(buf: B) -> Result<Self, DecodeError>
source§fn merge<B>(&mut self, buf: B) -> Result<(), DecodeError>
fn merge<B>(&mut self, buf: B) -> Result<(), DecodeError>
self
. Read moresource§fn merge_length_delimited<B>(&mut self, buf: B) -> Result<(), DecodeError>
fn merge_length_delimited<B>(&mut self, buf: B) -> Result<(), DecodeError>
self
.source§impl PartialEq for MergeJoinRel
impl PartialEq for MergeJoinRel
source§fn eq(&self, other: &MergeJoinRel) -> bool
fn eq(&self, other: &MergeJoinRel) -> bool
self
and other
values to be equal, and is used
by ==
.§impl Serialize for MergeJoinRel
impl Serialize for MergeJoinRel
impl StructuralPartialEq for MergeJoinRel
Auto Trait Implementations§
impl !Freeze for MergeJoinRel
impl RefUnwindSafe for MergeJoinRel
impl Send for MergeJoinRel
impl Sync for MergeJoinRel
impl Unpin for MergeJoinRel
impl UnwindSafe for MergeJoinRel
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
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)