feat: Implement procedure to alter a table for mito engine (#1259)

* feat: wip

* fix: Fix CreateMitoTable::table_schema not initialized from json

* feat: Implement AlterMitoTable procedure

* test: Add test for alter procedure

* feat: Register alter procedure

* fix: Recover procedures after catalog manager is started

* feat: Simplify usage of table schema in create table procedure

* test: Add rename test

* test: Add drop columns test
This commit is contained in:
Yingwen
2023-03-31 14:40:54 +08:00
committed by GitHub
parent 563adbabe9
commit dee20144d7
10 changed files with 637 additions and 32 deletions

View File

@@ -121,6 +121,13 @@ pub trait TableEngineProcedure: Send + Sync {
ctx: &EngineContext,
request: CreateTableRequest,
) -> Result<BoxedProcedure>;
/// Returns a procedure that alters table by specific `request`.
fn alter_table_procedure(
&self,
ctx: &EngineContext,
request: AlterTableRequest,
) -> Result<BoxedProcedure>;
}
pub type TableEngineProcedureRef = Arc<dyn TableEngineProcedure>;

View File

@@ -136,7 +136,7 @@ pub struct OpenTableRequest {
}
/// Alter table request
#[derive(Debug)]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AlterTableRequest {
pub catalog_name: String,
pub schema_name: String,
@@ -151,13 +151,13 @@ impl AlterTableRequest {
}
/// Add column request
#[derive(Debug, Clone)]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AddColumnRequest {
pub column_schema: ColumnSchema,
pub is_key: bool,
}
#[derive(Debug, Clone)]
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum AlterKind {
AddColumns { columns: Vec<AddColumnRequest> },
DropColumns { names: Vec<String> },