pub trait SchemaProvider:
Debug
+ Sync
+ Send {
// Required methods
fn as_any(&self) -> &dyn Any;
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 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 as_any(&self) -> &dyn Any
fn as_any(&self) -> &dyn Any
Returns this SchemaProvider
as Any
so that it can be downcast to a
specific implementation.
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 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).