Enum mz_expr::relation::JoinImplementation
source · pub enum JoinImplementation {
Differential((usize, Option<Vec<MirScalarExpr>>, Option<JoinInputCharacteristics>), Vec<(usize, Vec<MirScalarExpr>, Option<JoinInputCharacteristics>)>),
DeltaQuery(Vec<Vec<(usize, Vec<MirScalarExpr>, Option<JoinInputCharacteristics>)>>),
IndexedFilter(GlobalId, GlobalId, Vec<MirScalarExpr>, Vec<Row>),
Unimplemented,
}
Expand description
Describe a join implementation in dataflow.
Variants§
Differential((usize, Option<Vec<MirScalarExpr>>, Option<JoinInputCharacteristics>), Vec<(usize, Vec<MirScalarExpr>, Option<JoinInputCharacteristics>)>)
Perform a sequence of binary differential dataflow joins.
The first argument indicates
- the index of the starting collection,
- if it should be arranged, the keys to arrange it by, and
- the characteristics of the starting collection (for EXPLAINing). The sequence that follows lists other relation indexes, and the key for the arrangement we should use when joining it in. The JoinInputCharacteristics are for EXPLAINing the characteristics that were used for join ordering.
Each collection index should occur exactly once, either as the starting collection or somewhere in the list.
DeltaQuery(Vec<Vec<(usize, Vec<MirScalarExpr>, Option<JoinInputCharacteristics>)>>)
Perform independent delta query dataflows for each input.
The argument is a sequence of plans, for the input collections in order. Each plan starts from the corresponding index, and then in sequence joins against collections identified by index and with the specified arrangement key. The JoinInputCharacteristics are for EXPLAINing the characteristics that were used for join ordering.
IndexedFilter(GlobalId, GlobalId, Vec<MirScalarExpr>, Vec<Row>)
Join a user-created index with a constant collection to speed up the evaluation of a
predicate such as (f1 = 3 AND f2 = 5) OR (f1 = 7 AND f2 = 9)
.
This gets translated to a Differential join during MIR -> LIR lowering, but we still want
to represent it in MIR, because the fast path detection wants to match on this.
Consists of (<coll_id>
, <index_id>
, <index_key>
, <constants>
)
Unimplemented
No implementation yet selected.
Implementations§
source§impl JoinImplementation
impl JoinImplementation
sourcepub fn is_implemented(&self) -> bool
pub fn is_implemented(&self) -> bool
Returns true
iff the value is not JoinImplementation::Unimplemented
.
sourcepub fn name(&self) -> Option<&'static str>
pub fn name(&self) -> Option<&'static str>
Returns an optional implementation name if the value is not JoinImplementation::Unimplemented
.
Trait Implementations§
source§impl Arbitrary for JoinImplementation
impl Arbitrary for JoinImplementation
§type Parameters = ((<(usize, Option<Vec<MirScalarExpr>>, Option<JoinInputCharacteristics>) as Arbitrary>::Parameters, <Vec<(usize, Vec<MirScalarExpr>, Option<JoinInputCharacteristics>)> as Arbitrary>::Parameters), <Vec<Vec<(usize, Vec<MirScalarExpr>, Option<JoinInputCharacteristics>)>> as Arbitrary>::Parameters, (<GlobalId as Arbitrary>::Parameters, <GlobalId as Arbitrary>::Parameters, <Vec<MirScalarExpr> as Arbitrary>::Parameters, <Vec<Row> as Arbitrary>::Parameters))
type Parameters = ((<(usize, Option<Vec<MirScalarExpr>>, Option<JoinInputCharacteristics>) as Arbitrary>::Parameters, <Vec<(usize, Vec<MirScalarExpr>, Option<JoinInputCharacteristics>)> as Arbitrary>::Parameters), <Vec<Vec<(usize, Vec<MirScalarExpr>, Option<JoinInputCharacteristics>)>> as Arbitrary>::Parameters, (<GlobalId as Arbitrary>::Parameters, <GlobalId as Arbitrary>::Parameters, <Vec<MirScalarExpr> as Arbitrary>::Parameters, <Vec<Row> as Arbitrary>::Parameters))
arbitrary_with
accepts for configuration
of the generated Strategy
. Parameters must implement Default
.§type Strategy = Union<BoxedStrategy<JoinImplementation>>
type Strategy = Union<BoxedStrategy<JoinImplementation>>
Strategy
used to generate values of type Self
.source§fn arbitrary_with(_top: Self::Parameters) -> Self::Strategy
fn arbitrary_with(_top: Self::Parameters) -> Self::Strategy
source§impl Clone for JoinImplementation
impl Clone for JoinImplementation
source§fn clone(&self) -> JoinImplementation
fn clone(&self) -> JoinImplementation
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for JoinImplementation
impl Debug for JoinImplementation
source§impl Default for JoinImplementation
impl Default for JoinImplementation
source§impl<'de> Deserialize<'de> for JoinImplementation
impl<'de> Deserialize<'de> for JoinImplementation
source§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 Hash for JoinImplementation
impl Hash for JoinImplementation
source§impl MzReflect for JoinImplementation
impl MzReflect for JoinImplementation
source§fn add_to_reflected_type_info(rti: &mut ReflectedTypeInfo)
fn add_to_reflected_type_info(rti: &mut ReflectedTypeInfo)
rti
. Read moresource§impl Ord for JoinImplementation
impl Ord for JoinImplementation
source§fn cmp(&self, other: &JoinImplementation) -> Ordering
fn cmp(&self, other: &JoinImplementation) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
source§impl PartialEq for JoinImplementation
impl PartialEq for JoinImplementation
source§impl PartialOrd for JoinImplementation
impl PartialOrd for JoinImplementation
source§impl Serialize for JoinImplementation
impl Serialize for JoinImplementation
impl Eq for JoinImplementation
impl StructuralPartialEq for JoinImplementation
Auto Trait Implementations§
impl Freeze for JoinImplementation
impl RefUnwindSafe for JoinImplementation
impl Send for JoinImplementation
impl Sync for JoinImplementation
impl Unpin for JoinImplementation
impl UnwindSafe for JoinImplementation
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
)source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.source§impl<T> FutureExt for T
impl<T> FutureExt for T
source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request
source§impl<T, U> OverrideFrom<Option<&T>> for Uwhere
U: OverrideFrom<T>,
impl<T, U> OverrideFrom<Option<&T>> for Uwhere
U: OverrideFrom<T>,
source§impl<T> Pointable for T
impl<T> Pointable for T
source§impl<T> PreferredContainer for T
impl<T> PreferredContainer for T
source§impl<T> ProgressEventTimestamp for T
impl<T> ProgressEventTimestamp for T
source§impl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
impl<P, R> ProtoType<R> for Pwhere
R: RustType<P>,
source§fn into_rust(self) -> Result<R, TryFromProtoError>
fn into_rust(self) -> Result<R, TryFromProtoError>
RustType::from_proto
.source§fn from_rust(rust: &R) -> P
fn from_rust(rust: &R) -> P
RustType::into_proto
.source§impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
impl<'a, S, T> Semigroup<&'a S> for Twhere
T: Semigroup<S>,
source§fn plus_equals(&mut self, rhs: &&'a S)
fn plus_equals(&mut self, rhs: &&'a S)
std::ops::AddAssign
, for types that do not implement AddAssign
.