datafusion_catalog

Trait SchemaProvider

Source
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§

Source

fn as_any(&self) -> &dyn Any

Returns this SchemaProvider as Any so that it can be downcast to a specific implementation.

Source

fn table_names(&self) -> Vec<String>

Retrieves the list of available table names in this schema.

Source

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.

Source

fn table_exist(&self, name: &str) -> bool

Returns true if table exist in the schema provider, false otherwise.

Provided Methods§

Source

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

Source

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.

Source

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).

Implementors§