Skip to main content

SchemaProvider

Trait SchemaProvider 

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

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

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

Implementations§

Source§

impl dyn SchemaProvider

Source

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.

Source

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

Implementors§