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§
Sourcefn create_schema(&self, create: &CreateSchemaInfo) -> Result<Arc<Self::Schema>>
fn create_schema(&self, create: &CreateSchemaInfo) -> Result<Arc<Self::Schema>>
Create a schema in the catalog.
Sourcefn get_schema(&self, name: &str) -> Result<Option<Arc<Self::Schema>>>
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.
Sourcefn drop_entry(&self, drop: &DropInfo) -> Result<Option<Arc<CatalogEntry>>>
fn drop_entry(&self, drop: &DropInfo) -> Result<Option<Arc<CatalogEntry>>>
Drop an entry in the catalog.
Returns the dropped entry, if it exists.
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 Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".