datafusion_physical_expr::equivalence

Struct OrderingEquivalenceClass

Source
pub struct OrderingEquivalenceClass {
    pub orderings: Vec<LexOrdering>,
}
Expand description

An OrderingEquivalenceClass object keeps track of different alternative orderings than can describe a schema. For example, consider the following table:

|a|b|c|d|
|1|4|3|1|
|2|3|3|2|
|3|1|2|2|
|3|2|1|3|

Here, both vec![a ASC, b ASC] and vec![c DESC, d ASC] describe the table ordering. In this case, we say that these orderings are equivalent.

Fields§

§orderings: Vec<LexOrdering>

Implementations§

Source§

impl OrderingEquivalenceClass

Source

pub fn empty() -> Self

Creates new empty ordering equivalence class.

Source

pub fn clear(&mut self)

Clears (empties) this ordering equivalence class.

Source

pub fn new(orderings: Vec<LexOrdering>) -> Self

Creates new ordering equivalence class from the given orderings.

Source

pub fn contains(&self, ordering: &LexOrdering) -> bool

Checks whether ordering is a member of this equivalence class.

Source

pub fn is_empty(&self) -> bool

Checks whether this ordering equivalence class is empty.

Source

pub fn iter(&self) -> impl Iterator<Item = &LexOrdering>

Returns an iterator over the equivalent orderings in this class.

Source

pub fn len(&self) -> usize

Returns how many equivalent orderings there are in this class.

Source

pub fn extend(&mut self, other: Self)

Extend this ordering equivalence class with the other class.

Source

pub fn add_new_orderings( &mut self, orderings: impl IntoIterator<Item = LexOrdering>, )

Adds new orderings into this ordering equivalence class.

Source

pub fn add_new_ordering(&mut self, ordering: LexOrdering)

Adds a single ordering to the existing ordering equivalence class.

Source

pub fn output_ordering(&self) -> Option<LexOrdering>

Returns the concatenation of all the orderings. This enables merge operations to preserve all equivalent orderings simultaneously.

Source

pub fn join_suffix(self, other: &Self) -> Self

Source

pub fn add_offset(&mut self, offset: usize)

Adds offset value to the index of each expression inside this ordering equivalence class.

Source

pub fn get_options(&self, expr: &Arc<dyn PhysicalExpr>) -> Option<SortOptions>

Gets sort options associated with this expression if it is a leading ordering expression. Otherwise, returns None.

Trait Implementations§

Source§

impl Clone for OrderingEquivalenceClass

Source§

fn clone(&self) -> OrderingEquivalenceClass

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for OrderingEquivalenceClass

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for OrderingEquivalenceClass

Source§

fn default() -> OrderingEquivalenceClass

Returns the “default value” for a type. Read more
Source§

impl Display for OrderingEquivalenceClass

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Hash for OrderingEquivalenceClass

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl IntoIterator for OrderingEquivalenceClass

Source§

type Item = LexOrdering

The type of the elements being iterated over.
Source§

type IntoIter = IntoIter<LexOrdering>

Which kind of iterator are we turning this into?
Source§

fn into_iter(self) -> Self::IntoIter

Creates an iterator from a value. Read more
Source§

impl PartialEq for OrderingEquivalenceClass

Source§

fn eq(&self, other: &OrderingEquivalenceClass) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for OrderingEquivalenceClass

Source§

impl StructuralPartialEq for OrderingEquivalenceClass

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.