Skip to main content

Cardinality

Enum Cardinality 

Source
pub enum Cardinality {
    ExactlyOne,
    AtMostOne,
    Unverified,
}
Expand description

How many parent rows a child row can match.

The three cases are not decoration. Each licenses a different rewrite in section 5, and the difference between the first two is the difference between a LEFT JOIN that can be turned into an inner one and one that cannot.

Variants§

§

ExactlyOne

Every child row matches exactly one parent row: the key is not null anywhere and every value is present in the parent. This licenses pushing an aggregate through the relationship and turns a LEFT JOIN into an inner join.

§

AtMostOne

Every child row matches at most one parent row, which is the ordinary case: a null key or a key with no parent row matches nothing.

§

Unverified

The parent side was not unique, or verification did not run. No link is built. The planner is told so that it plans an ordinary hash join rather than waiting for a structure that is never going to arrive.

Implementations§

Source§

impl Cardinality

Whether a link may be built for a relationship of this cardinality.

Source

pub fn total(self) -> bool

Whether every child row is guaranteed a parent row, which is what licenses the aggregate push-through and the LEFT JOIN rewrite.

Source

pub fn tag(self) -> u8

The tag this cardinality takes in a section header.

Source

pub fn label(self) -> &'static str

What this cardinality is called where a person reads it, which is rudb_links().

Source

pub fn from_tag(tag: u8) -> Result<Self>

The cardinality a header tag names.

§Errors

If the tag is not one of the three, which means a file from a later build. The caller drops the section, per the rule in section 3.2 that a reader ignores what it does not know.

Trait Implementations§

Source§

impl Clone for Cardinality

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Copy for Cardinality

Source§

impl Debug for Cardinality

Source§

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

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

impl Display for Cardinality

Source§

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

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

impl Eq for Cardinality

Source§

impl PartialEq for Cardinality

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Cardinality

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<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> ToString for T
where T: Display + ?Sized,

Source§

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 = !

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

fn try_from(value: U) -> Result<T, !>

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.