pub enum TableReference<'a> {
Bare {
table: Cow<'a, str>,
},
Partial {
schema: Cow<'a, str>,
table: Cow<'a, str>,
},
Full {
catalog: Cow<'a, str>,
schema: Cow<'a, str>,
table: Cow<'a, str>,
},
}
Expand description
TableReference
s represent a multi part identifier (path) to a
table that may require further resolution.
Creating TableReference
When converting strings to TableReference
s, the string is
parsed as though it were a SQL identifier, normalizing (convert to
lowercase) any unquoted identifiers.
See TableReference::bare
to create 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
// (programatically 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”
Partial
A partially resolved table reference, e.g. “schema.table”
Full
Fields
A fully resolved table reference, e.g. “catalog.schema.table”
Implementations§
source§impl<'a> TableReference<'a>
impl<'a> TableReference<'a>
sourcepub fn none() -> Option<TableReference<'a>>
pub fn none() -> Option<TableReference<'a>>
Convenience method for creating a typed none None
sourcepub fn bare(table: impl Into<Cow<'a, str>>) -> TableReference<'a>
pub fn bare(table: impl Into<Cow<'a, str>>) -> TableReference<'a>
Convenience method for creating a TableReference::Bare
As described on TableReference
this does NO parsing at
all, so “Foo.Bar” stays as a reference to the table named
“Foo.Bar” (rather than “foo”.“bar”)
sourcepub fn partial(
schema: impl Into<Cow<'a, str>>,
table: impl Into<Cow<'a, str>>
) -> TableReference<'a>
pub fn partial( schema: impl Into<Cow<'a, str>>, table: impl Into<Cow<'a, str>> ) -> TableReference<'a>
Convenience method for creating a TableReference::Partial
.
As described on TableReference
this does NO parsing at all.
sourcepub fn full(
catalog: impl Into<Cow<'a, str>>,
schema: impl Into<Cow<'a, str>>,
table: impl Into<Cow<'a, str>>
) -> TableReference<'a>
pub fn full( catalog: impl Into<Cow<'a, str>>, schema: impl Into<Cow<'a, str>>, table: impl Into<Cow<'a, str>> ) -> TableReference<'a>
Convenience method for creating a TableReference::Full
As described on TableReference
this does NO parsing at all.
sourcepub fn schema(&self) -> Option<&str>
pub fn schema(&self) -> Option<&str>
Retrieve the schema name if in the Partial
or Full
qualification
sourcepub fn resolved_eq(&self, other: &Self) -> bool
pub fn resolved_eq(&self, other: &Self) -> bool
Compare with another TableReference
as if both are resolved.
This allows comparing across variants, where 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.
sourcepub fn resolve(
self,
default_catalog: &'a str,
default_schema: &'a str
) -> ResolvedTableReference<'a>
pub fn resolve( self, default_catalog: &'a str, default_schema: &'a str ) -> ResolvedTableReference<'a>
Given a default catalog and schema, ensure this table reference is fully resolved
sourcepub fn to_owned_reference(&self) -> OwnedTableReference
pub fn to_owned_reference(&self) -> OwnedTableReference
Converts directly into an OwnedTableReference
by cloning
the underlying data.
sourcepub fn to_quoted_string(&self) -> String
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""#);
sourcepub fn parse_str(s: &'a str) -> Self
pub fn parse_str(s: &'a str) -> Self
Forms a TableReference
by parsing s
as a multipart SQL
identifier. See docs on TableReference
for more details.
sourcepub fn to_vec(&self) -> Vec<String>
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<'a> Clone for TableReference<'a>
impl<'a> Clone for TableReference<'a>
source§fn clone(&self) -> TableReference<'a>
fn clone(&self) -> TableReference<'a>
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl<'a> Debug for TableReference<'a>
impl<'a> Debug for TableReference<'a>
source§impl Display for TableReference<'_>
impl Display for TableReference<'_>
source§impl<'a> From<&'a String> for TableReference<'a>
impl<'a> From<&'a String> for TableReference<'a>
source§impl<'a> From<&'a TableReference<'static>> for TableReference<'a>
impl<'a> From<&'a TableReference<'static>> for TableReference<'a>
source§fn from(value: &'a OwnedTableReference) -> Self
fn from(value: &'a OwnedTableReference) -> Self
source§impl<'a> From<&'a str> for TableReference<'a>
impl<'a> From<&'a str> for TableReference<'a>
Parse a string into a TableReference, normalizing where appropriate
See full details on TableReference::parse_str
source§impl<'a> From<ResolvedTableReference<'a>> for TableReference<'a>
impl<'a> From<ResolvedTableReference<'a>> for TableReference<'a>
source§fn from(resolved: ResolvedTableReference<'a>) -> Self
fn from(resolved: ResolvedTableReference<'a>) -> Self
source§impl<'a> Hash for TableReference<'a>
impl<'a> Hash for TableReference<'a>
source§impl<'a> Ord for TableReference<'a>
impl<'a> Ord for TableReference<'a>
source§fn cmp(&self, other: &TableReference<'a>) -> Ordering
fn cmp(&self, other: &TableReference<'a>) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere Self: Sized,
source§impl<'a> PartialEq<TableReference<'a>> for TableReference<'a>
impl<'a> PartialEq<TableReference<'a>> for TableReference<'a>
source§fn eq(&self, other: &TableReference<'a>) -> bool
fn eq(&self, other: &TableReference<'a>) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl<'a> PartialOrd<TableReference<'a>> for TableReference<'a>
impl<'a> PartialOrd<TableReference<'a>> for TableReference<'a>
source§fn partial_cmp(&self, other: &TableReference<'a>) -> Option<Ordering>
fn partial_cmp(&self, other: &TableReference<'a>) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moreimpl<'a> Eq for TableReference<'a>
impl<'a> StructuralEq for TableReference<'a>
impl<'a> StructuralPartialEq for TableReference<'a>
Auto Trait Implementations§
impl<'a> RefUnwindSafe for TableReference<'a>
impl<'a> Send for TableReference<'a>
impl<'a> Sync for TableReference<'a>
impl<'a> Unpin for TableReference<'a>
impl<'a> UnwindSafe for TableReference<'a>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.