use crate::catalog::manager::CatalogManager;
use crate::exec::write_stmt::{ExecutionContext, StatementExecutor};
use crate::exec::ExecutionError;
use crate::storage::StorageManager;
pub trait DDLStatementExecutor: StatementExecutor {
fn execute_ddl_operation(
&self,
context: &ExecutionContext,
catalog_manager: &mut CatalogManager,
storage: &StorageManager,
) -> Result<(String, usize), ExecutionError>;
fn execute(
&self,
context: &ExecutionContext,
catalog_manager: &mut CatalogManager,
storage: &StorageManager,
) -> Result<(String, usize), ExecutionError> {
self.pre_execute(context)?;
let (message, affected) = self.execute_ddl_operation(context, catalog_manager, storage)?;
self.post_execute(context, affected)?;
Ok((message, affected))
}
}
#[derive(Debug, Clone, Copy)]
#[allow(dead_code)] pub enum DDLStatementType {
CreateSchema,
DropSchema,
CreateGraph,
DropGraph,
CreateGraphType,
DropGraphType,
TruncateGraph,
ClearGraph,
CreateUser,
DropUser,
CreateRole,
DropRole,
CreateIndex,
DropIndex,
AlterIndex,
OptimizeIndex,
}