pub struct HashJoinRel {
pub common: Option<RelCommon>,
pub left: Option<Box<Rel>>,
pub right: Option<Box<Rel>>,
pub keys: Vec<ComparisonJoinKey>,
pub post_join_filter: Option<Box<Expression>>,
pub type: i32,
pub build_input: i32,
pub residual_expression: Option<Box<Expression>>,
pub advanced_extension: Option<AdvancedExtension>,
}Expand description
The hash join operator will build a hash table out of one input (default
right) based on a set of join keys. It will then probe that hash table for
the other input (default left), finding matches.
Two rows are a match if every key comparison returns true and, when
specified, residual_expression also evaluates to true.
Fields§
§common: Option<RelCommon>§left: Option<Box<Rel>>§right: Option<Box<Rel>>§keys: Vec<ComparisonJoinKey>One or more keys to join on. The relation is invalid if this is empty.
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>>An optional boolean filter applied to each output record after join-type-specific output formation is complete. Semantically equivalent to placing a FilterRel directly above this join.
type: i32§build_input: i32Specifies which side of input to build the hash table for this hash join.
Defaults to BUILD_INPUT_RIGHT.
residual_expression: Option<Box<Expression>>An optional boolean expression evaluated on each candidate key-match to
determine whether it is a true match. A candidate is only considered a
match when all keys comparisons AND this expression evaluate to true.
This expression interacts with join-type semantics: for example, in a
left outer join, a left row that has key matches but no candidate
satisfying this expression will be emitted with nulls for the right side.
advanced_extension: Option<AdvancedExtension>Implementations§
Source§impl HashJoinRel
impl HashJoinRel
Sourcepub fn type(&self) -> JoinType
pub fn type(&self) -> JoinType
Returns the enum value of type, or the default if the field is set to an invalid enum value.
Sourcepub fn build_input(&self) -> BuildInput
pub fn build_input(&self) -> BuildInput
Returns the enum value of build_input, or the default if the field is set to an invalid enum value.
Sourcepub fn set_build_input(&mut self, value: BuildInput)
pub fn set_build_input(&mut self, value: BuildInput)
Sets build_input to the provided enum value.
Trait Implementations§
Source§impl Clone for HashJoinRel
impl Clone for HashJoinRel
Source§fn clone(&self) -> HashJoinRel
fn clone(&self) -> HashJoinRel
1.0.0 (const: unstable) · 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
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.Source§impl Name for HashJoinRel
impl Name for HashJoinRel
Source§const NAME: &'static str = "HashJoinRel"
const NAME: &'static str = "HashJoinRel"
Message.
This name is the same as it appears in the source .proto file, e.g. FooBar.Source§const PACKAGE: &'static str = "substrait"
const PACKAGE: &'static str = "substrait"
., e.g. google.protobuf.Source§fn full_name() -> String
fn full_name() -> String
Message.
It’s prefixed with the package name and names of any parent messages,
e.g. google.rpc.BadRequest.FieldViolation.
By default, this is the package name followed by the message name.
Fully-qualified names must be unique within a domain of Type URLs.