pub trait SchemaProvider:
Any
+ Debug
+ Sync
+ Send {
// Required methods
fn table_names(&self) -> Vec<String>;
fn table<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<Arc<dyn TableProvider>>, DataFusionError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn table_exist(&self, name: &str) -> bool;
// Provided methods
fn owner_name(&self) -> Option<&str> { ... }
fn table_type<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<TableType>>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait { ... }
fn register_table(
&self,
name: String,
table: Arc<dyn TableProvider>,
) -> Result<Option<Arc<dyn TableProvider>>> { ... }
fn deregister_table(
&self,
name: &str,
) -> Result<Option<Arc<dyn TableProvider>>> { ... }
}Expand description
Represents a schema, comprising a number of named tables.
Please see CatalogProvider for details of implementing a custom catalog.
Required Methods§
Sourcefn table_names(&self) -> Vec<String>
fn table_names(&self) -> Vec<String>
Retrieves the list of available table names in this schema.
Sourcefn table<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<Arc<dyn TableProvider>>, DataFusionError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn table<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<Arc<dyn TableProvider>>, DataFusionError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Retrieves a specific table from the schema by name, if it exists,
otherwise returns None.
Sourcefn table_exist(&self, name: &str) -> bool
fn table_exist(&self, name: &str) -> bool
Returns true if table exist in the schema provider, false otherwise.
Provided Methods§
Sourcefn owner_name(&self) -> Option<&str>
fn owner_name(&self) -> Option<&str>
Returns the owner of the Schema, default is None. This value is reported as part of `information_tables.schemata
Sourcefn table_type<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<TableType>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn table_type<'life0, 'life1, 'async_trait>(
&'life0 self,
name: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<TableType>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Retrieves the type of a specific table from the schema by name, if it exists, otherwise
returns None. Implementations for which this operation is cheap but Self::table is
expensive can override this to improve operations that only need the type, e.g.
SELECT * FROM information_schema.tables.
Sourcefn register_table(
&self,
name: String,
table: Arc<dyn TableProvider>,
) -> Result<Option<Arc<dyn TableProvider>>>
fn register_table( &self, name: String, table: Arc<dyn TableProvider>, ) -> Result<Option<Arc<dyn TableProvider>>>
If supported by the implementation, adds a new table named name to
this schema.
If a table of the same name was already registered, returns “Table already exists” error.
Sourcefn deregister_table(&self, name: &str) -> Result<Option<Arc<dyn TableProvider>>>
fn deregister_table(&self, name: &str) -> Result<Option<Arc<dyn TableProvider>>>
If supported by the implementation, removes the name table from this
schema and returns the previously registered TableProvider, if any.
If no name table exists, returns Ok(None).
Implementations§
Source§impl dyn SchemaProvider
impl dyn SchemaProvider
Sourcepub fn is<T: SchemaProvider>(&self) -> bool
pub fn is<T: SchemaProvider>(&self) -> bool
Returns true if the schema provider is of type T.
Prefer this over downcast_ref::<T>().is_some(). Works correctly when
called on Arc<dyn SchemaProvider> via auto-deref.
Sourcepub fn downcast_ref<T: SchemaProvider>(&self) -> Option<&T>
pub fn downcast_ref<T: SchemaProvider>(&self) -> Option<&T>
Attempts to downcast this schema provider to a concrete type T,
returning None if the provider is not of that type.
Works correctly when called on Arc<dyn SchemaProvider> via auto-deref,
unlike (&arc as &dyn Any).downcast_ref::<T>() which would attempt to
downcast the Arc itself.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".