Skip to main content

DistinctMode

Enum DistinctMode 

Source
pub enum DistinctMode {
    Ordered,
    Grouped,
    Distinct,
}
Expand description

Describes the requirements of the virtual table query.

This value is retured by IndexInfo::distinct_mode. It allows the virtual table implementation to decide if it is safe to consume the order_by fields using IndexInfo::set_order_by_consumed.

The levels described here are progressively less demanding. If the virtual table implementation meets the requirements of DistinctMode::Ordered, then it is always safe to consume the order_by fields.

For the purposes of comparing virtual table output values to see if the values are same value for sorting purposes, two NULL values are considered to be the same. In other words, the comparison operator is “IS” (or “IS NOT DISTINCT FROM”) and not “==”.

Variants§

§

Ordered

The virtual table must return all rows in the correct order according to the order_by fields.

§

Grouped

The virtual table may return rows in any order, but all rows that are in the same group must be adjacent to one another. A group is defined as all rows for which all of the columns in order_by are equal. This is the mode used when planning a GROUP BY query.

§

Distinct

The same as DistinctMode::Grouped, however the virtual table is allowed (but not required) to skip all but a single row within each group. This is the mode used when planning a DISTINCT query.

Trait Implementations§

Source§

impl Clone for DistinctMode

Source§

fn clone(&self) -> DistinctMode

Returns a duplicate 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 DistinctMode

Source§

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

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

impl PartialEq for DistinctMode

Source§

fn eq(&self, other: &DistinctMode) -> 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 Copy for DistinctMode

Source§

impl Eq for DistinctMode

Source§

impl StructuralPartialEq for DistinctMode

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, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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<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> 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, 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.