pub struct OrderingEquivalenceClass {
    pub orderings: Vec<Vec<PhysicalSortExpr>>,
}
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<Vec<PhysicalSortExpr>>

Implementations§

source§

impl OrderingEquivalenceClass

source

pub fn empty() -> OrderingEquivalenceClass

Creates new empty ordering equivalence class.

source

pub fn clear(&mut self)

Clears (empties) this ordering equivalence class.

source

pub fn new(orderings: Vec<Vec<PhysicalSortExpr>>) -> OrderingEquivalenceClass

Creates new ordering equivalence class from the given orderings.

source

pub fn contains(&self, ordering: &Vec<PhysicalSortExpr>) -> 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 = &Vec<PhysicalSortExpr>>

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: OrderingEquivalenceClass)

Extend this ordering equivalence class with the other class.

source

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

Adds new orderings into this ordering equivalence class.

source

pub fn output_ordering(&self) -> Option<Vec<PhysicalSortExpr>>

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

source

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

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<(), Error>

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

impl Hash for OrderingEquivalenceClass

source§

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

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 PartialEq for OrderingEquivalenceClass

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method 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<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> Instrument for T

source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

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

§

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, U> TryFrom<U> for T
where U: Into<T>,

§

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>,

§

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.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
source§

impl<T> Ungil for T
where T: Send,