Struct mz_expr::scalar::FilterCharacteristics
source · pub struct FilterCharacteristics {
literal_equality: bool,
like: bool,
is_null: bool,
literal_inequality: usize,
any_filter: bool,
}
Expand description
Filter characteristics that are used for ordering join inputs.
This can be created for a Vec<MirScalarExpr>
, which represents an AND of predicates.
The fields are ordered based on heuristic assumptions about their typical selectivity, so that Ord gives the right ordering for join inputs. Bigger is better, i.e., will tend to come earlier than other inputs.
Fields§
§literal_equality: bool
§like: bool
§is_null: bool
§literal_inequality: usize
§any_filter: bool
Any filter, except ones involving IS NOT NULL
, because those are too common.
Can be true by itself, or any other field being true can also make this true.
NOT LIKE
is only in this category.
!=
is only in this category.
NOT (a = b)
is turned into !=
by reduce
before us!
Implementations§
source§impl FilterCharacteristics
impl FilterCharacteristics
pub fn none() -> FilterCharacteristics
pub fn explain(&self) -> String
pub fn filter_characteristics( filters: &Vec<MirScalarExpr>, ) -> Result<FilterCharacteristics, RecursionLimitError>
pub fn add_literal_equality(&mut self)
pub fn worst_case_scaling_factor(&self) -> f64
Trait Implementations§
source§impl Arbitrary for FilterCharacteristics
impl Arbitrary for FilterCharacteristics
§type Parameters = (<bool as Arbitrary>::Parameters, <bool as Arbitrary>::Parameters, <bool as Arbitrary>::Parameters, <usize as Arbitrary>::Parameters, <bool as Arbitrary>::Parameters)
type Parameters = (<bool as Arbitrary>::Parameters, <bool as Arbitrary>::Parameters, <bool as Arbitrary>::Parameters, <usize as Arbitrary>::Parameters, <bool as Arbitrary>::Parameters)
The type of parameters that
arbitrary_with
accepts for configuration
of the generated Strategy
. Parameters must implement Default
.§type Strategy = Map<(<bool as Arbitrary>::Strategy, <bool as Arbitrary>::Strategy, <bool as Arbitrary>::Strategy, <usize as Arbitrary>::Strategy, <bool as Arbitrary>::Strategy), fn(_: (bool, bool, bool, usize, bool)) -> FilterCharacteristics>
type Strategy = Map<(<bool as Arbitrary>::Strategy, <bool as Arbitrary>::Strategy, <bool as Arbitrary>::Strategy, <usize as Arbitrary>::Strategy, <bool as Arbitrary>::Strategy), fn(_: (bool, bool, bool, usize, bool)) -> FilterCharacteristics>
The type of
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 BitOrAssign for FilterCharacteristics
impl BitOrAssign for FilterCharacteristics
source§fn bitor_assign(&mut self, rhs: Self)
fn bitor_assign(&mut self, rhs: Self)
Performs the
|=
operation. Read moresource§impl Clone for FilterCharacteristics
impl Clone for FilterCharacteristics
source§fn clone(&self) -> FilterCharacteristics
fn clone(&self) -> FilterCharacteristics
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moresource§impl Debug for FilterCharacteristics
impl Debug for FilterCharacteristics
source§impl<'de> Deserialize<'de> for FilterCharacteristics
impl<'de> Deserialize<'de> for FilterCharacteristics
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>,
Deserialize this value from the given Serde deserializer. Read more
source§impl Hash for FilterCharacteristics
impl Hash for FilterCharacteristics
source§impl MzReflect for FilterCharacteristics
impl MzReflect for FilterCharacteristics
source§fn add_to_reflected_type_info(rti: &mut ReflectedTypeInfo)
fn add_to_reflected_type_info(rti: &mut ReflectedTypeInfo)
Adds names and types of the fields of the struct or enum to
rti
. Read moresource§impl Ord for FilterCharacteristics
impl Ord for FilterCharacteristics
source§fn cmp(&self, other: &FilterCharacteristics) -> Ordering
fn cmp(&self, other: &FilterCharacteristics) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
source§impl PartialEq for FilterCharacteristics
impl PartialEq for FilterCharacteristics
source§impl PartialOrd for FilterCharacteristics
impl PartialOrd for FilterCharacteristics
source§impl Serialize for FilterCharacteristics
impl Serialize for FilterCharacteristics
impl Eq for FilterCharacteristics
impl StructuralPartialEq for FilterCharacteristics
Auto Trait Implementations§
impl Freeze for FilterCharacteristics
impl RefUnwindSafe for FilterCharacteristics
impl Send for FilterCharacteristics
impl Sync for FilterCharacteristics
impl Unpin for FilterCharacteristics
impl UnwindSafe for FilterCharacteristics
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
Mutably borrows from an owned value. Read more
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)
🔬This is a nightly-only experimental API. (
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
Compare self to
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
Compare self to
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<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>
Wrap the input message
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>
See
RustType::from_proto
.source§fn from_rust(rust: &R) -> P
fn from_rust(rust: &R) -> P
See
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)
The method of
std::ops::AddAssign
, for types that do not implement AddAssign
.