Skip to main content

Catalog

Trait Catalog 

Source
pub trait Catalog:
    Debug
    + Sync
    + Send {
    type Schema: Schema;

    // Required methods
    fn create_schema(
        &self,
        create: &CreateSchemaInfo,
    ) -> Result<Arc<Self::Schema>>;
    fn get_schema(&self, name: &str) -> Result<Option<Arc<Self::Schema>>>;
    fn drop_entry(&self, drop: &DropInfo) -> Result<Option<Arc<CatalogEntry>>>;
    fn plan_create_view(
        self: &Arc<Self>,
        id_gen: &mut OperatorIdGen,
        schema: &str,
        create: CreateViewInfo,
    ) -> Result<PlannedOperator>;
    fn plan_create_table(
        self: &Arc<Self>,
        storage: &Arc<StorageManager>,
        id_gen: &mut OperatorIdGen,
        schema: &str,
        create: CreateTableInfo,
    ) -> Result<PlannedOperator>;
    fn plan_create_table_as(
        self: &Arc<Self>,
        storage: &Arc<StorageManager>,
        id_gen: &mut OperatorIdGen,
        schema: &str,
        create: CreateTableInfo,
    ) -> Result<PlannedOperator>;
    fn plan_insert(
        self: &Arc<Self>,
        storage: &Arc<StorageManager>,
        id_gen: &mut OperatorIdGen,
        entry: Arc<CatalogEntry>,
    ) -> Result<PlannedOperator>;
    fn plan_create_schema(
        self: &Arc<Self>,
        id_gen: &mut OperatorIdGen,
        create: CreateSchemaInfo,
    ) -> Result<PlannedOperator>;
    fn plan_drop(
        self: &Arc<Self>,
        storage: &Arc<StorageManager>,
        id_gen: &mut OperatorIdGen,
        drop: DropInfo,
    ) -> Result<PlannedOperator>;
    fn list_schemas(
        self: &Arc<Self>,
    ) -> impl Stream<Item = Result<Vec<Arc<Self::Schema>>>> + Sync + Send + 'static;

    // Provided method
    fn require_get_schema(&self, name: &str) -> Result<Arc<Self::Schema>> { ... }
}

Required Associated Types§

Required Methods§

Source

fn create_schema(&self, create: &CreateSchemaInfo) -> Result<Arc<Self::Schema>>

Create a schema in the catalog.

Source

fn get_schema(&self, name: &str) -> Result<Option<Arc<Self::Schema>>>

Get a schema in the catalog.

Returns Ok(None) if a schema with the given name doesn’t exist.

Source

fn drop_entry(&self, drop: &DropInfo) -> Result<Option<Arc<CatalogEntry>>>

Drop an entry in the catalog.

Returns the dropped entry, if it exists.

Source

fn plan_create_view( self: &Arc<Self>, id_gen: &mut OperatorIdGen, schema: &str, create: CreateViewInfo, ) -> Result<PlannedOperator>

Source

fn plan_create_table( self: &Arc<Self>, storage: &Arc<StorageManager>, id_gen: &mut OperatorIdGen, schema: &str, create: CreateTableInfo, ) -> Result<PlannedOperator>

Source

fn plan_create_table_as( self: &Arc<Self>, storage: &Arc<StorageManager>, id_gen: &mut OperatorIdGen, schema: &str, create: CreateTableInfo, ) -> Result<PlannedOperator>

Source

fn plan_insert( self: &Arc<Self>, storage: &Arc<StorageManager>, id_gen: &mut OperatorIdGen, entry: Arc<CatalogEntry>, ) -> Result<PlannedOperator>

Source

fn plan_create_schema( self: &Arc<Self>, id_gen: &mut OperatorIdGen, create: CreateSchemaInfo, ) -> Result<PlannedOperator>

Source

fn plan_drop( self: &Arc<Self>, storage: &Arc<StorageManager>, id_gen: &mut OperatorIdGen, drop: DropInfo, ) -> Result<PlannedOperator>

Source

fn list_schemas( self: &Arc<Self>, ) -> impl Stream<Item = Result<Vec<Arc<Self::Schema>>>> + Sync + Send + 'static

Provided Methods§

Source

fn require_get_schema(&self, name: &str) -> Result<Arc<Self::Schema>>

Get a schema, returning an error if it doesn’t exist.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§