pub mod analyze;
mod btree_index;
pub mod create_index;
pub mod drop_index;
mod expression_index;
pub mod reindex;
mod spatial_index;
mod validation;
mod vector_index;
pub use analyze::AnalyzeExecutor;
pub use create_index::CreateIndexExecutor;
pub use drop_index::DropIndexExecutor;
pub use reindex::ReindexExecutor;
use vibesql_ast::{CreateIndexStmt, DropIndexStmt, ReindexStmt};
use vibesql_storage::Database;
use crate::errors::ExecutorError;
pub(crate) fn schema_of_qualified(qualified_table_name: &str) -> &str {
qualified_table_name
.split_once('.')
.map(|(schema, _)| schema)
.unwrap_or(vibesql_catalog::DEFAULT_SCHEMA)
}
pub struct IndexExecutor;
impl IndexExecutor {
pub fn execute(
stmt: &CreateIndexStmt,
database: &mut Database,
) -> Result<String, ExecutorError> {
CreateIndexExecutor::execute(stmt, database)
}
pub fn execute_drop(
stmt: &DropIndexStmt,
database: &mut Database,
) -> Result<String, ExecutorError> {
DropIndexExecutor::execute(stmt, database)
}
pub fn execute_reindex(
stmt: &ReindexStmt,
database: &Database,
) -> Result<String, ExecutorError> {
ReindexExecutor::execute(stmt, database)
}
}