Skip to main content

TableReference

Enum TableReference 

Source
pub enum TableReference {
    Bare {
        table: Arc<str>,
    },
    Partial {
        schema: Arc<str>,
        table: Arc<str>,
    },
    Full {
        catalog: Arc<str>,
        schema: Arc<str>,
        table: Arc<str>,
    },
}
Expand description

A multi part identifier (path) to a table that may require further resolution (e.g. foo.bar).

TableReferences are cheap to clone() as they are implemented with Arc.

See ResolvedTableReference for a fully resolved table reference.

§Creating TableReference

When converting strings to TableReferences, the string is parsed as though it were a SQL identifier, normalizing (convert to lowercase) any unquoted identifiers. TableReference::bare creates references without applying normalization semantics.

§Examples

// Get a table reference to 'mytable'
let table_reference = TableReference::from("mytable");
assert_eq!(table_reference, TableReference::bare("mytable"));

// Get a table reference to 'mytable' (note the capitalization)
let table_reference = TableReference::from("MyTable");
assert_eq!(table_reference, TableReference::bare("mytable"));

// Get a table reference to 'MyTable' (note the capitalization) using double quotes
// (programmatically it is better to use `TableReference::bare` for this)
let table_reference = TableReference::from(r#""MyTable""#);
assert_eq!(table_reference, TableReference::bare("MyTable"));

// Get a table reference to 'myschema.mytable' (note the capitalization)
let table_reference = TableReference::from("MySchema.MyTable");
assert_eq!(
    table_reference,
    TableReference::partial("myschema", "mytable")
);

Variants§

§

Bare

An unqualified table reference, e.g. “table”

Fields

§table: Arc<str>

The table name

§

Partial

A partially resolved table reference, e.g. “schema.table”

Fields

§schema: Arc<str>

The schema containing the table

§table: Arc<str>

The table name

§

Full

A fully resolved table reference, e.g. “catalog.schema.table”

Fields

§catalog: Arc<str>

The catalog (aka database) containing the table

§schema: Arc<str>

The schema containing the table

§table: Arc<str>

The table name

Implementations§

Source§

impl TableReference

Source

pub fn none() -> Option<TableReference>

Convenience method for creating a typed none None

Source

pub fn bare(table: impl Into<Arc<str>>) -> TableReference

Convenience method for creating a TableReference::Bare

As described on TableReference this does NO normalization at all, so “Foo.Bar” stays as a reference to the table named “Foo.Bar” (rather than “foo”.“bar”)

Source

pub fn partial( schema: impl Into<Arc<str>>, table: impl Into<Arc<str>>, ) -> TableReference

Convenience method for creating a TableReference::Partial.

Note: NO normalization is applied to the schema or table name.

Source

pub fn full( catalog: impl Into<Arc<str>>, schema: impl Into<Arc<str>>, table: impl Into<Arc<str>>, ) -> TableReference

Convenience method for creating a TableReference::Full

Note: NO normalization is applied to the catalog, schema or table name.

Source

pub fn table(&self) -> &str

Retrieve the table name, regardless of qualification.

Source

pub fn schema(&self) -> Option<&str>

Retrieve the schema name if [Self::Partial] or [Self::Full], None` otherwise.

Source

pub fn catalog(&self) -> Option<&str>

Retrieve the catalog name if Self::Full, None otherwise.

Source

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

Compare with another TableReference as if both are resolved. This allows comparing across variants. If a field is not present in both variants being compared then it is ignored in the comparison.

e.g. this allows a TableReference::Bare to be considered equal to a fully qualified TableReference::Full if the table names match.

Source

pub fn resolve( self, default_catalog: &str, default_schema: &str, ) -> ResolvedTableReference

Given a default catalog and schema, ensure this table reference is fully resolved

Source

pub fn to_quoted_string(&self) -> String

Forms a string where the identifiers are quoted

§Example
let table_reference = TableReference::partial("myschema", "mytable");
assert_eq!(table_reference.to_quoted_string(), "myschema.mytable");

let table_reference = TableReference::partial("MySchema", "MyTable");
assert_eq!(
    table_reference.to_quoted_string(),
    r#""MySchema"."MyTable""#
);
Source

pub fn parse_str(s: &str) -> Self

Forms a TableReference by parsing s as a multipart SQL identifier, normalizing s to lowercase. See docs on TableReference for more details.

Source

pub fn parse_str_normalized(s: &str, ignore_case: bool) -> Self

Forms a TableReference by parsing s as a multipart SQL identifier, normalizing s to lowercase if ignore_case is false. See docs on TableReference for more details.

Source

pub fn to_vec(&self) -> Vec<String>

Decompose a TableReference to separate parts. The result vector contains at most three elements in the following sequence:

[<catalog>, <schema>, table]

Trait Implementations§

Source§

impl Clone for TableReference

Source§

fn clone(&self) -> TableReference

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 DFHeapSize for TableReference

Source§

fn heap_size(&self, ctx: &mut DFHeapSizeCtx) -> usize

Return the number of bytes this value has allocated on the heap, including heap memory owned transitively by nested values. Read more
Source§

impl Debug for TableReference

Source§

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

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

impl Display for TableReference

Source§

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

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

impl Eq for TableReference

Source§

impl<'a> From<&'a String> for TableReference

Source§

fn from(s: &'a String) -> Self

Converts to this type from the input type.
Source§

impl<'a> From<&'a str> for TableReference

Parse a string into a TableReference, normalizing where appropriate

See full details on TableReference::parse_str

Source§

fn from(s: &'a str) -> Self

Converts to this type from the input type.
Source§

impl From<ResolvedTableReference> for TableReference

Source§

fn from(resolved: ResolvedTableReference) -> Self

Converts to this type from the input type.
Source§

impl From<String> for TableReference

Source§

fn from(s: String) -> Self

Converts to this type from the input type.
Source§

impl Hash for TableReference

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 Ord for TableReference

Source§

fn cmp(&self, other: &TableReference) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 (const: unstable) · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 (const: unstable) · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 (const: unstable) · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

impl PartialEq for TableReference

Source§

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

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

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

Inequality operator !=. Read more
Source§

impl PartialOrd for TableReference

Source§

fn partial_cmp(&self, other: &TableReference) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 (const: unstable) · Source§

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

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 (const: unstable) · Source§

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

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 (const: unstable) · Source§

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

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 (const: unstable) · Source§

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

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl StructuralPartialEq for TableReference

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

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> Comparable<K> for Q
where Q: Ord + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn compare(&self, key: &K) -> Ordering

Compare self to key and return their ordering.
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> 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 = 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.