Struct mz_expr::JoinInputCharacteristics
source · pub struct JoinInputCharacteristics {
pub unique_key: bool,
pub key_length: usize,
pub arranged: bool,
pub cardinality: Option<Reverse<usize>>,
pub filters: FilterCharacteristics,
pub input: Reverse<usize>,
}
Expand description
Characteristics of a join order candidate collection.
A candidate is described by a collection and a key, and may have various liabilities. Primarily, the candidate may risk substantial inflation of records, which is something that concerns us greatly. Additionally the candidate may be unarranged, and we would prefer candidates that do not require additional memory. Finally, we prefer lower id collections in the interest of consistent tie-breaking.
Fields§
§unique_key: bool
An excellent indication that record count will not increase.
key_length: usize
A weaker signal that record count will not increase.
arranged: bool
Indicates that there will be no additional in-memory footprint.
cardinality: Option<Reverse<usize>>
Estimated cardinality (lower is better)
filters: FilterCharacteristics
Characteristics of the filter that is applied at this input.
input: Reverse<usize>
We want to prefer input earlier in the input list, for stability of ordering.
Implementations§
Trait Implementations§
source§impl Arbitrary for JoinInputCharacteristics
impl Arbitrary for JoinInputCharacteristics
§type Parameters = (<bool as Arbitrary>::Parameters, <usize as Arbitrary>::Parameters, <bool as Arbitrary>::Parameters, <Option<Reverse<usize>> as Arbitrary>::Parameters, <FilterCharacteristics as Arbitrary>::Parameters, <Reverse<usize> as Arbitrary>::Parameters)
type Parameters = (<bool as Arbitrary>::Parameters, <usize as Arbitrary>::Parameters, <bool as Arbitrary>::Parameters, <Option<Reverse<usize>> as Arbitrary>::Parameters, <FilterCharacteristics as Arbitrary>::Parameters, <Reverse<usize> as Arbitrary>::Parameters)
arbitrary_with
accepts for configuration
of the generated Strategy
. Parameters must implement Default
.§type Strategy = Map<(<bool as Arbitrary>::Strategy, <usize as Arbitrary>::Strategy, <bool as Arbitrary>::Strategy, <Option<Reverse<usize>> as Arbitrary>::Strategy, <FilterCharacteristics as Arbitrary>::Strategy, <Reverse<usize> as Arbitrary>::Strategy), fn(_: (bool, usize, bool, Option<Reverse<usize>>, FilterCharacteristics, Reverse<usize>)) -> JoinInputCharacteristics>
type Strategy = Map<(<bool as Arbitrary>::Strategy, <usize as Arbitrary>::Strategy, <bool as Arbitrary>::Strategy, <Option<Reverse<usize>> as Arbitrary>::Strategy, <FilterCharacteristics as Arbitrary>::Strategy, <Reverse<usize> as Arbitrary>::Strategy), fn(_: (bool, usize, bool, Option<Reverse<usize>>, FilterCharacteristics, Reverse<usize>)) -> JoinInputCharacteristics>
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 JoinInputCharacteristics
impl Clone for JoinInputCharacteristics
source§fn clone(&self) -> JoinInputCharacteristics
fn clone(&self) -> JoinInputCharacteristics
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for JoinInputCharacteristics
impl Debug for JoinInputCharacteristics
source§impl<'de> Deserialize<'de> for JoinInputCharacteristics
impl<'de> Deserialize<'de> for JoinInputCharacteristics
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 JoinInputCharacteristics
impl Hash for JoinInputCharacteristics
source§impl MzReflect for JoinInputCharacteristics
impl MzReflect for JoinInputCharacteristics
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 JoinInputCharacteristics
impl Ord for JoinInputCharacteristics
source§fn cmp(&self, other: &JoinInputCharacteristics) -> Ordering
fn cmp(&self, other: &JoinInputCharacteristics) -> 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 JoinInputCharacteristics
impl PartialEq for JoinInputCharacteristics
source§impl PartialOrd for JoinInputCharacteristics
impl PartialOrd for JoinInputCharacteristics
source§impl Serialize for JoinInputCharacteristics
impl Serialize for JoinInputCharacteristics
impl Eq for JoinInputCharacteristics
impl StructuralPartialEq for JoinInputCharacteristics
Auto Trait Implementations§
impl Freeze for JoinInputCharacteristics
impl RefUnwindSafe for JoinInputCharacteristics
impl Send for JoinInputCharacteristics
impl Sync for JoinInputCharacteristics
impl Unpin for JoinInputCharacteristics
impl UnwindSafe for JoinInputCharacteristics
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
.