pub struct HashJoinRel {
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 hash equijoin join operator will build a hash table out of the right input based on a set of join keys. It will then probe that hash table for incoming inputs, finding matches.
Two rows are a match if the comparison function returns true for all keys
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 hash function used for the keys.
In other words, the hash function must return the same hash code when the comparison returns true. For example, if the comparison function is “equals ignoring case” then the hash function must return the same hash code for strings that differ only by case. Note: the hash function is not specified here. It is the responsibility of the consumer to find an appropriate hash function for a given comparsion function or to reject the plan if it cannot do so.
post_join_filter: Option<Box<Expression>>
§type: i32
§advanced_extension: Option<AdvancedExtension>
Implementations§
Trait Implementations§
Source§impl Clone for HashJoinRel
impl Clone for HashJoinRel
Source§fn clone(&self) -> HashJoinRel
fn clone(&self) -> HashJoinRel
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for HashJoinRel
impl Debug for HashJoinRel
Source§impl Default for HashJoinRel
impl Default for HashJoinRel
§impl<'de> Deserialize<'de> for HashJoinRel
impl<'de> Deserialize<'de> for HashJoinRel
§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 HashJoinRel
impl Message for HashJoinRel
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
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(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
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(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self
. Read moreSource§fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self
.