mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-06-01 04:40:39 +00:00
feat: support ALTER TABLE ... MODIFY COLUMN ... ... (#3796)
* feat: support `ALTER COLUMN xxx TYPE xxx` * fix: test `test_parse_alter_change_column_type` * style: code fmt * style: move to new test: `test_make_alter_column_type_region_request` * style: simplify the code * style: remove `v1::region::ChangeColumnType` * resolve conflicts * fix: test `test_make_alter_column_type_region_request` * style: simplify the code * rebase * rebase * rebase * fix: `ALTER COLUMN ... TYPE` -> `MODIFY COLUMN` * fix: `parser` -> `self.parser` * Apply suggestions from code review --------- Co-authored-by: Ruihang Xia <waynestxia@gmail.com> Co-authored-by: WenyXu <wenymedia@gmail.com>
This commit is contained in:
@@ -13,8 +13,9 @@
|
||||
// limitations under the License.
|
||||
|
||||
use std::collections::HashMap;
|
||||
use std::fmt::{self};
|
||||
use std::fmt;
|
||||
|
||||
use api::helper::ColumnDataTypeWrapper;
|
||||
use api::v1::add_column_location::LocationType;
|
||||
use api::v1::region::{
|
||||
alter_request, region_request, AlterRequest, AlterRequests, CloseRequest, CompactRequest,
|
||||
@@ -457,13 +458,18 @@ impl TryFrom<alter_request::Kind> for AlterKind {
|
||||
.collect::<Result<Vec<_>>>()?;
|
||||
AlterKind::AddColumns { columns }
|
||||
}
|
||||
alter_request::Kind::ChangeColumnTypes(x) => {
|
||||
let columns = x
|
||||
.change_column_types
|
||||
.into_iter()
|
||||
.map(|x| x.into())
|
||||
.collect::<Vec<_>>();
|
||||
AlterKind::ChangeColumnTypes { columns }
|
||||
}
|
||||
alter_request::Kind::DropColumns(x) => {
|
||||
let names = x.drop_columns.into_iter().map(|x| x.name).collect();
|
||||
AlterKind::DropColumns { names }
|
||||
}
|
||||
alter_request::Kind::ChangeColumnTypes(_) => {
|
||||
unimplemented!()
|
||||
}
|
||||
};
|
||||
|
||||
Ok(alter_kind)
|
||||
@@ -615,6 +621,21 @@ impl ChangeColumnType {
|
||||
}
|
||||
}
|
||||
|
||||
impl From<v1::ChangeColumnType> for ChangeColumnType {
|
||||
fn from(change_column_type: v1::ChangeColumnType) -> Self {
|
||||
let target_type = ColumnDataTypeWrapper::new(
|
||||
change_column_type.target_type(),
|
||||
change_column_type.target_type_extension,
|
||||
)
|
||||
.into();
|
||||
|
||||
ChangeColumnType {
|
||||
column_name: change_column_type.column_name,
|
||||
target_type,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Default)]
|
||||
pub struct RegionFlushRequest {
|
||||
pub row_group_size: Option<usize>,
|
||||
|
||||
Reference in New Issue
Block a user