From 58a7b1534e1e9321847a538d8ec5e683182f5b56 Mon Sep 17 00:00:00 2001 From: "Lei, HUANG" Date: Wed, 16 Oct 2024 21:01:03 -0700 Subject: [PATCH 1/4] feat: add expr for altering table attributes --- c++/greptime/v1/ddl.pb.cc | 481 ++++++-- c++/greptime/v1/ddl.pb.h | 385 +++++- go/greptime/v1/ddl.pb.go | 499 ++++---- java/src/main/java/io/greptime/v1/Ddl.java | 1250 +++++++++++++++++--- proto/greptime/v1/ddl.proto | 6 + 5 files changed, 2202 insertions(+), 419 deletions(-) diff --git a/c++/greptime/v1/ddl.pb.cc b/c++/greptime/v1/ddl.pb.cc index e7672ccd..7e9c2398 100644 --- a/c++/greptime/v1/ddl.pb.cc +++ b/c++/greptime/v1/ddl.pb.cc @@ -331,6 +331,20 @@ struct ChangeColumnTypeDefaultTypeInternal { }; }; PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ChangeColumnTypeDefaultTypeInternal _ChangeColumnType_default_instance_; +PROTOBUF_CONSTEXPR ChangeTableAttributes::ChangeTableAttributes( + ::_pbi::ConstantInitialized): _impl_{ + /*decltype(_impl_.attr_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}} + , /*decltype(_impl_.attr_value_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}} + , /*decltype(_impl_._cached_size_)*/{}} {} +struct ChangeTableAttributesDefaultTypeInternal { + PROTOBUF_CONSTEXPR ChangeTableAttributesDefaultTypeInternal() + : _instance(::_pbi::ConstantInitialized{}) {} + ~ChangeTableAttributesDefaultTypeInternal() {} + union { + ChangeTableAttributes _instance; + }; +}; +PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ChangeTableAttributesDefaultTypeInternal _ChangeTableAttributes_default_instance_; PROTOBUF_CONSTEXPR DropColumn::DropColumn( ::_pbi::ConstantInitialized): _impl_{ /*decltype(_impl_.name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}} @@ -406,7 +420,7 @@ struct AddColumnLocationDefaultTypeInternal { PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AddColumnLocationDefaultTypeInternal _AddColumnLocation_default_instance_; } // namespace v1 } // namespace greptime -static ::_pb::Metadata file_level_metadata_greptime_2fv1_2fddl_2eproto[25]; +static ::_pb::Metadata file_level_metadata_greptime_2fv1_2fddl_2eproto[26]; static const ::_pb::EnumDescriptor* file_level_enum_descriptors_greptime_2fv1_2fddl_2eproto[1]; static constexpr ::_pb::ServiceDescriptor const** file_level_service_descriptors_greptime_2fv1_2fddl_2eproto = nullptr; @@ -530,6 +544,7 @@ const uint32_t TableStruct_greptime_2fv1_2fddl_2eproto::offsets[] PROTOBUF_SECTI ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, + ::_pbi::kInvalidFieldOffsetTag, PROTOBUF_FIELD_OFFSET(::greptime::v1::AlterExpr, _impl_.kind_), ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::greptime::v1::DropTableExpr, _internal_metadata_), @@ -627,6 +642,14 @@ const uint32_t TableStruct_greptime_2fv1_2fddl_2eproto::offsets[] PROTOBUF_SECTI PROTOBUF_FIELD_OFFSET(::greptime::v1::ChangeColumnType, _impl_.target_type_), PROTOBUF_FIELD_OFFSET(::greptime::v1::ChangeColumnType, _impl_.target_type_extension_), ~0u, // no _has_bits_ + PROTOBUF_FIELD_OFFSET(::greptime::v1::ChangeTableAttributes, _internal_metadata_), + ~0u, // no _extensions_ + ~0u, // no _oneof_case_ + ~0u, // no _weak_field_map_ + ~0u, // no _inlined_string_donated_ + PROTOBUF_FIELD_OFFSET(::greptime::v1::ChangeTableAttributes, _impl_.attr_name_), + PROTOBUF_FIELD_OFFSET(::greptime::v1::ChangeTableAttributes, _impl_.attr_value_), + ~0u, // no _has_bits_ PROTOBUF_FIELD_OFFSET(::greptime::v1::DropColumn, _internal_metadata_), ~0u, // no _extensions_ ~0u, // no _oneof_case_ @@ -680,22 +703,23 @@ static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protode { 79, 87, -1, sizeof(::greptime::v1::CreateTableExpr_TableOptionsEntry_DoNotUse)}, { 89, -1, -1, sizeof(::greptime::v1::CreateTableExpr)}, { 106, -1, -1, sizeof(::greptime::v1::AlterExpr)}, - { 120, -1, -1, sizeof(::greptime::v1::DropTableExpr)}, - { 131, 139, -1, sizeof(::greptime::v1::CreateDatabaseExpr_OptionsEntry_DoNotUse)}, - { 141, -1, -1, sizeof(::greptime::v1::CreateDatabaseExpr)}, - { 151, -1, -1, sizeof(::greptime::v1::TruncateTableExpr)}, - { 161, -1, -1, sizeof(::greptime::v1::DropDatabaseExpr)}, - { 170, -1, -1, sizeof(::greptime::v1::AddColumns)}, - { 177, -1, -1, sizeof(::greptime::v1::DropColumns)}, - { 184, -1, -1, sizeof(::greptime::v1::ChangeColumnTypes)}, - { 191, -1, -1, sizeof(::greptime::v1::RenameTable)}, - { 198, -1, -1, sizeof(::greptime::v1::AddColumn)}, - { 206, -1, -1, sizeof(::greptime::v1::ChangeColumnType)}, - { 215, -1, -1, sizeof(::greptime::v1::DropColumn)}, - { 222, -1, -1, sizeof(::greptime::v1::TableId)}, - { 229, -1, -1, sizeof(::greptime::v1::FlowId)}, - { 236, -1, -1, sizeof(::greptime::v1::ColumnDef)}, - { 250, -1, -1, sizeof(::greptime::v1::AddColumnLocation)}, + { 121, -1, -1, sizeof(::greptime::v1::DropTableExpr)}, + { 132, 140, -1, sizeof(::greptime::v1::CreateDatabaseExpr_OptionsEntry_DoNotUse)}, + { 142, -1, -1, sizeof(::greptime::v1::CreateDatabaseExpr)}, + { 152, -1, -1, sizeof(::greptime::v1::TruncateTableExpr)}, + { 162, -1, -1, sizeof(::greptime::v1::DropDatabaseExpr)}, + { 171, -1, -1, sizeof(::greptime::v1::AddColumns)}, + { 178, -1, -1, sizeof(::greptime::v1::DropColumns)}, + { 185, -1, -1, sizeof(::greptime::v1::ChangeColumnTypes)}, + { 192, -1, -1, sizeof(::greptime::v1::RenameTable)}, + { 199, -1, -1, sizeof(::greptime::v1::AddColumn)}, + { 207, -1, -1, sizeof(::greptime::v1::ChangeColumnType)}, + { 216, -1, -1, sizeof(::greptime::v1::ChangeTableAttributes)}, + { 224, -1, -1, sizeof(::greptime::v1::DropColumn)}, + { 231, -1, -1, sizeof(::greptime::v1::TableId)}, + { 238, -1, -1, sizeof(::greptime::v1::FlowId)}, + { 245, -1, -1, sizeof(::greptime::v1::ColumnDef)}, + { 259, -1, -1, sizeof(::greptime::v1::AddColumnLocation)}, }; static const ::_pb::Message* const file_default_instances[] = { @@ -719,6 +743,7 @@ static const ::_pb::Message* const file_default_instances[] = { &::greptime::v1::_RenameTable_default_instance_._instance, &::greptime::v1::_AddColumn_default_instance_._instance, &::greptime::v1::_ChangeColumnType_default_instance_._instance, + &::greptime::v1::_ChangeTableAttributes_default_instance_._instance, &::greptime::v1::_DropColumn_default_instance_._instance, &::greptime::v1::_TableId_default_instance_._instance, &::greptime::v1::_FlowId_default_instance_._instance, @@ -773,66 +798,69 @@ const char descriptor_table_protodef_greptime_2fv1_2fddl_2eproto[] PROTOBUF_SECT "ime.v1.CreateTableExpr.TableOptionsEntry" "\022&\n\010table_id\030\n \001(\0132\024.greptime.v1.TableId" "\022\016\n\006engine\030\014 \001(\t\0323\n\021TableOptionsEntry\022\013\n" - "\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\245\002\n\tAlterE" + "\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\353\002\n\tAlterE" "xpr\022\024\n\014catalog_name\030\001 \001(\t\022\023\n\013schema_name" "\030\002 \001(\t\022\022\n\ntable_name\030\003 \001(\t\022.\n\013add_column" "s\030\004 \001(\0132\027.greptime.v1.AddColumnsH\000\0220\n\014dr" "op_columns\030\005 \001(\0132\030.greptime.v1.DropColum" "nsH\000\0220\n\014rename_table\030\006 \001(\0132\030.greptime.v1" ".RenameTableH\000\022=\n\023change_column_types\030\007 " - "\001(\0132\036.greptime.v1.ChangeColumnTypesH\000B\006\n" - "\004kind\"\216\001\n\rDropTableExpr\022\024\n\014catalog_name\030" - "\001 \001(\t\022\023\n\013schema_name\030\002 \001(\t\022\022\n\ntable_name" - "\030\003 \001(\t\022&\n\010table_id\030\004 \001(\0132\024.greptime.v1.T" - "ableId\022\026\n\016drop_if_exists\030\005 \001(\010\"\314\001\n\022Creat" - "eDatabaseExpr\022\024\n\014catalog_name\030\001 \001(\t\022\023\n\013s" - "chema_name\030\002 \001(\t\022\034\n\024create_if_not_exists" - "\030\003 \001(\010\022=\n\007options\030\004 \003(\0132,.greptime.v1.Cr" - "eateDatabaseExpr.OptionsEntry\032.\n\014Options" - "Entry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"z\n" - "\021TruncateTableExpr\022\024\n\014catalog_name\030\001 \001(\t" - "\022\023\n\013schema_name\030\002 \001(\t\022\022\n\ntable_name\030\003 \001(" - "\t\022&\n\010table_id\030\004 \001(\0132\024.greptime.v1.TableI" - "d\"U\n\020DropDatabaseExpr\022\024\n\014catalog_name\030\001 " - "\001(\t\022\023\n\013schema_name\030\002 \001(\t\022\026\n\016drop_if_exis" - "ts\030\003 \001(\010\"9\n\nAddColumns\022+\n\013add_columns\030\001 " - "\003(\0132\026.greptime.v1.AddColumn\"<\n\013DropColum" - "ns\022-\n\014drop_columns\030\001 \003(\0132\027.greptime.v1.D" - "ropColumn\"O\n\021ChangeColumnTypes\022:\n\023change" - "_column_types\030\001 \003(\0132\035.greptime.v1.Change" - "ColumnType\"%\n\013RenameTable\022\026\n\016new_table_n" - "ame\030\001 \001(\t\"i\n\tAddColumn\022*\n\ncolumn_def\030\001 \001" - "(\0132\026.greptime.v1.ColumnDef\0220\n\010location\030\003" - " \001(\0132\036.greptime.v1.AddColumnLocation\"\236\001\n" - "\020ChangeColumnType\022\023\n\013column_name\030\001 \001(\t\0220" - "\n\013target_type\030\002 \001(\0162\033.greptime.v1.Column" - "DataType\022C\n\025target_type_extension\030\003 \001(\0132" - "$.greptime.v1.ColumnDataTypeExtension\"\032\n" - "\nDropColumn\022\014\n\004name\030\001 \001(\t\"\025\n\007TableId\022\n\n\002" - "id\030\001 \001(\r\"\024\n\006FlowId\022\n\n\002id\030\001 \001(\r\"\254\002\n\tColum" - "nDef\022\014\n\004name\030\001 \001(\t\022.\n\tdata_type\030\002 \001(\0162\033." - "greptime.v1.ColumnDataType\022\023\n\013is_nullabl" - "e\030\003 \001(\010\022\032\n\022default_constraint\030\004 \001(\014\0220\n\rs" - "emantic_type\030\005 \001(\0162\031.greptime.v1.Semanti" - "cType\022\017\n\007comment\030\006 \001(\t\022@\n\022datatype_exten" - "sion\030\007 \001(\0132$.greptime.v1.ColumnDataTypeE" - "xtension\022+\n\007options\030\010 \001(\0132\032.greptime.v1." - "ColumnOptions\"\230\001\n\021AddColumnLocation\022B\n\rl" - "ocation_type\030\001 \001(\0162+.greptime.v1.AddColu" - "mnLocation.LocationType\022\031\n\021after_column_" - "name\030\002 \001(\t\"$\n\014LocationType\022\t\n\005FIRST\020\000\022\t\n" - "\005AFTER\020\001BL\n\016io.greptime.v1B\003DdlZ5github." - "com/GreptimeTeam/greptime-proto/go/grept" - "ime/v1b\006proto3" + "\001(\0132\036.greptime.v1.ChangeColumnTypesH\000\022D\n" + "\026change_tableAttributes\030\010 \001(\0132\".greptime" + ".v1.ChangeTableAttributesH\000B\006\n\004kind\"\216\001\n\r" + "DropTableExpr\022\024\n\014catalog_name\030\001 \001(\t\022\023\n\013s" + "chema_name\030\002 \001(\t\022\022\n\ntable_name\030\003 \001(\t\022&\n\010" + "table_id\030\004 \001(\0132\024.greptime.v1.TableId\022\026\n\016" + "drop_if_exists\030\005 \001(\010\"\314\001\n\022CreateDatabaseE" + "xpr\022\024\n\014catalog_name\030\001 \001(\t\022\023\n\013schema_name" + "\030\002 \001(\t\022\034\n\024create_if_not_exists\030\003 \001(\010\022=\n\007" + "options\030\004 \003(\0132,.greptime.v1.CreateDataba" + "seExpr.OptionsEntry\032.\n\014OptionsEntry\022\013\n\003k" + "ey\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"z\n\021TruncateT" + "ableExpr\022\024\n\014catalog_name\030\001 \001(\t\022\023\n\013schema" + "_name\030\002 \001(\t\022\022\n\ntable_name\030\003 \001(\t\022&\n\010table" + "_id\030\004 \001(\0132\024.greptime.v1.TableId\"U\n\020DropD" + "atabaseExpr\022\024\n\014catalog_name\030\001 \001(\t\022\023\n\013sch" + "ema_name\030\002 \001(\t\022\026\n\016drop_if_exists\030\003 \001(\010\"9" + "\n\nAddColumns\022+\n\013add_columns\030\001 \003(\0132\026.grep" + "time.v1.AddColumn\"<\n\013DropColumns\022-\n\014drop" + "_columns\030\001 \003(\0132\027.greptime.v1.DropColumn\"" + "O\n\021ChangeColumnTypes\022:\n\023change_column_ty" + "pes\030\001 \003(\0132\035.greptime.v1.ChangeColumnType" + "\"%\n\013RenameTable\022\026\n\016new_table_name\030\001 \001(\t\"" + "i\n\tAddColumn\022*\n\ncolumn_def\030\001 \001(\0132\026.grept" + "ime.v1.ColumnDef\0220\n\010location\030\003 \001(\0132\036.gre" + "ptime.v1.AddColumnLocation\"\236\001\n\020ChangeCol" + "umnType\022\023\n\013column_name\030\001 \001(\t\0220\n\013target_t" + "ype\030\002 \001(\0162\033.greptime.v1.ColumnDataType\022C" + "\n\025target_type_extension\030\003 \001(\0132$.greptime" + ".v1.ColumnDataTypeExtension\">\n\025ChangeTab" + "leAttributes\022\021\n\tattr_name\030\001 \001(\t\022\022\n\nattr_" + "value\030\002 \001(\t\"\032\n\nDropColumn\022\014\n\004name\030\001 \001(\t\"" + "\025\n\007TableId\022\n\n\002id\030\001 \001(\r\"\024\n\006FlowId\022\n\n\002id\030\001" + " \001(\r\"\254\002\n\tColumnDef\022\014\n\004name\030\001 \001(\t\022.\n\tdata" + "_type\030\002 \001(\0162\033.greptime.v1.ColumnDataType" + "\022\023\n\013is_nullable\030\003 \001(\010\022\032\n\022default_constra" + "int\030\004 \001(\014\0220\n\rsemantic_type\030\005 \001(\0162\031.grept" + "ime.v1.SemanticType\022\017\n\007comment\030\006 \001(\t\022@\n\022" + "datatype_extension\030\007 \001(\0132$.greptime.v1.C" + "olumnDataTypeExtension\022+\n\007options\030\010 \001(\0132" + "\032.greptime.v1.ColumnOptions\"\230\001\n\021AddColum" + "nLocation\022B\n\rlocation_type\030\001 \001(\0162+.grept" + "ime.v1.AddColumnLocation.LocationType\022\031\n" + "\021after_column_name\030\002 \001(\t\"$\n\014LocationType" + "\022\t\n\005FIRST\020\000\022\t\n\005AFTER\020\001BL\n\016io.greptime.v1" + "B\003DdlZ5github.com/GreptimeTeam/greptime-" + "proto/go/greptime/v1b\006proto3" ; static const ::_pbi::DescriptorTable* const descriptor_table_greptime_2fv1_2fddl_2eproto_deps[1] = { &::descriptor_table_greptime_2fv1_2fcommon_2eproto, }; static ::_pbi::once_flag descriptor_table_greptime_2fv1_2fddl_2eproto_once; const ::_pbi::DescriptorTable descriptor_table_greptime_2fv1_2fddl_2eproto = { - false, false, 3854, descriptor_table_protodef_greptime_2fv1_2fddl_2eproto, + false, false, 3988, descriptor_table_protodef_greptime_2fv1_2fddl_2eproto, "greptime/v1/ddl.proto", - &descriptor_table_greptime_2fv1_2fddl_2eproto_once, descriptor_table_greptime_2fv1_2fddl_2eproto_deps, 1, 25, + &descriptor_table_greptime_2fv1_2fddl_2eproto_once, descriptor_table_greptime_2fv1_2fddl_2eproto_deps, 1, 26, schemas, file_default_instances, TableStruct_greptime_2fv1_2fddl_2eproto::offsets, file_level_metadata_greptime_2fv1_2fddl_2eproto, file_level_enum_descriptors_greptime_2fv1_2fddl_2eproto, file_level_service_descriptors_greptime_2fv1_2fddl_2eproto, @@ -4168,6 +4196,7 @@ class AlterExpr::_Internal { static const ::greptime::v1::DropColumns& drop_columns(const AlterExpr* msg); static const ::greptime::v1::RenameTable& rename_table(const AlterExpr* msg); static const ::greptime::v1::ChangeColumnTypes& change_column_types(const AlterExpr* msg); + static const ::greptime::v1::ChangeTableAttributes& change_tableattributes(const AlterExpr* msg); }; const ::greptime::v1::AddColumns& @@ -4186,6 +4215,10 @@ const ::greptime::v1::ChangeColumnTypes& AlterExpr::_Internal::change_column_types(const AlterExpr* msg) { return *msg->_impl_.kind_.change_column_types_; } +const ::greptime::v1::ChangeTableAttributes& +AlterExpr::_Internal::change_tableattributes(const AlterExpr* msg) { + return *msg->_impl_.kind_.change_tableattributes_; +} void AlterExpr::set_allocated_add_columns(::greptime::v1::AddColumns* add_columns) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); clear_kind(); @@ -4246,6 +4279,21 @@ void AlterExpr::set_allocated_change_column_types(::greptime::v1::ChangeColumnTy } // @@protoc_insertion_point(field_set_allocated:greptime.v1.AlterExpr.change_column_types) } +void AlterExpr::set_allocated_change_tableattributes(::greptime::v1::ChangeTableAttributes* change_tableattributes) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); + clear_kind(); + if (change_tableattributes) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(change_tableattributes); + if (message_arena != submessage_arena) { + change_tableattributes = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, change_tableattributes, submessage_arena); + } + set_has_change_tableattributes(); + _impl_.kind_.change_tableattributes_ = change_tableattributes; + } + // @@protoc_insertion_point(field_set_allocated:greptime.v1.AlterExpr.change_tableAttributes) +} AlterExpr::AlterExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned) : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) { @@ -4310,6 +4358,11 @@ AlterExpr::AlterExpr(const AlterExpr& from) from._internal_change_column_types()); break; } + case kChangeTableAttributes: { + _this->_internal_mutable_change_tableattributes()->::greptime::v1::ChangeTableAttributes::MergeFrom( + from._internal_change_tableattributes()); + break; + } case KIND_NOT_SET: { break; } @@ -4394,6 +4447,12 @@ void AlterExpr::clear_kind() { } break; } + case kChangeTableAttributes: { + if (GetArenaForAllocation() == nullptr) { + delete _impl_.kind_.change_tableattributes_; + } + break; + } case KIND_NOT_SET: { break; } @@ -4483,6 +4542,14 @@ const char* AlterExpr::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx } else goto handle_unusual; continue; + // .greptime.v1.ChangeTableAttributes change_tableAttributes = 8; + case 8: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 66)) { + ptr = ctx->ParseMessage(_internal_mutable_change_tableattributes(), ptr); + CHK_(ptr); + } else + goto handle_unusual; + continue; default: goto handle_unusual; } // switch @@ -4570,6 +4637,13 @@ uint8_t* AlterExpr::_InternalSerialize( _Internal::change_column_types(this).GetCachedSize(), target, stream); } + // .greptime.v1.ChangeTableAttributes change_tableAttributes = 8; + if (_internal_has_change_tableattributes()) { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: + InternalWriteMessage(8, _Internal::change_tableattributes(this), + _Internal::change_tableattributes(this).GetCachedSize(), target, stream); + } + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); @@ -4636,6 +4710,13 @@ size_t AlterExpr::ByteSizeLong() const { *_impl_.kind_.change_column_types_); break; } + // .greptime.v1.ChangeTableAttributes change_tableAttributes = 8; + case kChangeTableAttributes: { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( + *_impl_.kind_.change_tableattributes_); + break; + } case KIND_NOT_SET: { break; } @@ -4688,6 +4769,11 @@ void AlterExpr::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROT from._internal_change_column_types()); break; } + case kChangeTableAttributes: { + _this->_internal_mutable_change_tableattributes()->::greptime::v1::ChangeTableAttributes::MergeFrom( + from._internal_change_tableattributes()); + break; + } case KIND_NOT_SET: { break; } @@ -7380,6 +7466,259 @@ ::PROTOBUF_NAMESPACE_ID::Metadata ChangeColumnType::GetMetadata() const { // =================================================================== +class ChangeTableAttributes::_Internal { + public: +}; + +ChangeTableAttributes::ChangeTableAttributes(::PROTOBUF_NAMESPACE_ID::Arena* arena, + bool is_message_owned) + : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) { + SharedCtor(arena, is_message_owned); + // @@protoc_insertion_point(arena_constructor:greptime.v1.ChangeTableAttributes) +} +ChangeTableAttributes::ChangeTableAttributes(const ChangeTableAttributes& from) + : ::PROTOBUF_NAMESPACE_ID::Message() { + ChangeTableAttributes* const _this = this; (void)_this; + new (&_impl_) Impl_{ + decltype(_impl_.attr_name_){} + , decltype(_impl_.attr_value_){} + , /*decltype(_impl_._cached_size_)*/{}}; + + _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); + _impl_.attr_name_.InitDefault(); + #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING + _impl_.attr_name_.Set("", GetArenaForAllocation()); + #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING + if (!from._internal_attr_name().empty()) { + _this->_impl_.attr_name_.Set(from._internal_attr_name(), + _this->GetArenaForAllocation()); + } + _impl_.attr_value_.InitDefault(); + #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING + _impl_.attr_value_.Set("", GetArenaForAllocation()); + #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING + if (!from._internal_attr_value().empty()) { + _this->_impl_.attr_value_.Set(from._internal_attr_value(), + _this->GetArenaForAllocation()); + } + // @@protoc_insertion_point(copy_constructor:greptime.v1.ChangeTableAttributes) +} + +inline void ChangeTableAttributes::SharedCtor( + ::_pb::Arena* arena, bool is_message_owned) { + (void)arena; + (void)is_message_owned; + new (&_impl_) Impl_{ + decltype(_impl_.attr_name_){} + , decltype(_impl_.attr_value_){} + , /*decltype(_impl_._cached_size_)*/{} + }; + _impl_.attr_name_.InitDefault(); + #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING + _impl_.attr_name_.Set("", GetArenaForAllocation()); + #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING + _impl_.attr_value_.InitDefault(); + #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING + _impl_.attr_value_.Set("", GetArenaForAllocation()); + #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING +} + +ChangeTableAttributes::~ChangeTableAttributes() { + // @@protoc_insertion_point(destructor:greptime.v1.ChangeTableAttributes) + if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) { + (void)arena; + return; + } + SharedDtor(); +} + +inline void ChangeTableAttributes::SharedDtor() { + GOOGLE_DCHECK(GetArenaForAllocation() == nullptr); + _impl_.attr_name_.Destroy(); + _impl_.attr_value_.Destroy(); +} + +void ChangeTableAttributes::SetCachedSize(int size) const { + _impl_._cached_size_.Set(size); +} + +void ChangeTableAttributes::Clear() { +// @@protoc_insertion_point(message_clear_start:greptime.v1.ChangeTableAttributes) + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + _impl_.attr_name_.ClearToEmpty(); + _impl_.attr_value_.ClearToEmpty(); + _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(); +} + +const char* ChangeTableAttributes::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) { +#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure + while (!ctx->Done(&ptr)) { + uint32_t tag; + ptr = ::_pbi::ReadTag(ptr, &tag); + switch (tag >> 3) { + // string attr_name = 1; + case 1: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 10)) { + auto str = _internal_mutable_attr_name(); + ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx); + CHK_(ptr); + CHK_(::_pbi::VerifyUTF8(str, "greptime.v1.ChangeTableAttributes.attr_name")); + } else + goto handle_unusual; + continue; + // string attr_value = 2; + case 2: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 18)) { + auto str = _internal_mutable_attr_value(); + ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx); + CHK_(ptr); + CHK_(::_pbi::VerifyUTF8(str, "greptime.v1.ChangeTableAttributes.attr_value")); + } else + goto handle_unusual; + continue; + default: + goto handle_unusual; + } // switch + handle_unusual: + if ((tag == 0) || ((tag & 7) == 4)) { + CHK_(ptr); + ctx->SetLastTag(tag); + goto message_done; + } + ptr = UnknownFieldParse( + tag, + _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(), + ptr, ctx); + CHK_(ptr != nullptr); + } // while +message_done: + return ptr; +failure: + ptr = nullptr; + goto message_done; +#undef CHK_ +} + +uint8_t* ChangeTableAttributes::_InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const { + // @@protoc_insertion_point(serialize_to_array_start:greptime.v1.ChangeTableAttributes) + uint32_t cached_has_bits = 0; + (void) cached_has_bits; + + // string attr_name = 1; + if (!this->_internal_attr_name().empty()) { + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( + this->_internal_attr_name().data(), static_cast(this->_internal_attr_name().length()), + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, + "greptime.v1.ChangeTableAttributes.attr_name"); + target = stream->WriteStringMaybeAliased( + 1, this->_internal_attr_name(), target); + } + + // string attr_value = 2; + if (!this->_internal_attr_value().empty()) { + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String( + this->_internal_attr_value().data(), static_cast(this->_internal_attr_value().length()), + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE, + "greptime.v1.ChangeTableAttributes.attr_value"); + target = stream->WriteStringMaybeAliased( + 2, this->_internal_attr_value(), target); + } + + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { + target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( + _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); + } + // @@protoc_insertion_point(serialize_to_array_end:greptime.v1.ChangeTableAttributes) + return target; +} + +size_t ChangeTableAttributes::ByteSizeLong() const { +// @@protoc_insertion_point(message_byte_size_start:greptime.v1.ChangeTableAttributes) + size_t total_size = 0; + + uint32_t cached_has_bits = 0; + // Prevent compiler warnings about cached_has_bits being unused + (void) cached_has_bits; + + // string attr_name = 1; + if (!this->_internal_attr_name().empty()) { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( + this->_internal_attr_name()); + } + + // string attr_value = 2; + if (!this->_internal_attr_value().empty()) { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize( + this->_internal_attr_value()); + } + + return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_); +} + +const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ChangeTableAttributes::_class_data_ = { + ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck, + ChangeTableAttributes::MergeImpl +}; +const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ChangeTableAttributes::GetClassData() const { return &_class_data_; } + + +void ChangeTableAttributes::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) { + auto* const _this = static_cast(&to_msg); + auto& from = static_cast(from_msg); + // @@protoc_insertion_point(class_specific_merge_from_start:greptime.v1.ChangeTableAttributes) + GOOGLE_DCHECK_NE(&from, _this); + uint32_t cached_has_bits = 0; + (void) cached_has_bits; + + if (!from._internal_attr_name().empty()) { + _this->_internal_set_attr_name(from._internal_attr_name()); + } + if (!from._internal_attr_value().empty()) { + _this->_internal_set_attr_value(from._internal_attr_value()); + } + _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_); +} + +void ChangeTableAttributes::CopyFrom(const ChangeTableAttributes& from) { +// @@protoc_insertion_point(class_specific_copy_from_start:greptime.v1.ChangeTableAttributes) + if (&from == this) return; + Clear(); + MergeFrom(from); +} + +bool ChangeTableAttributes::IsInitialized() const { + return true; +} + +void ChangeTableAttributes::InternalSwap(ChangeTableAttributes* other) { + using std::swap; + auto* lhs_arena = GetArenaForAllocation(); + auto* rhs_arena = other->GetArenaForAllocation(); + _internal_metadata_.InternalSwap(&other->_internal_metadata_); + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap( + &_impl_.attr_name_, lhs_arena, + &other->_impl_.attr_name_, rhs_arena + ); + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap( + &_impl_.attr_value_, lhs_arena, + &other->_impl_.attr_value_, rhs_arena + ); +} + +::PROTOBUF_NAMESPACE_ID::Metadata ChangeTableAttributes::GetMetadata() const { + return ::_pbi::AssignDescriptors( + &descriptor_table_greptime_2fv1_2fddl_2eproto_getter, &descriptor_table_greptime_2fv1_2fddl_2eproto_once, + file_level_metadata_greptime_2fv1_2fddl_2eproto[20]); +} + +// =================================================================== + class DropColumn::_Internal { public: }; @@ -7578,7 +7917,7 @@ void DropColumn::InternalSwap(DropColumn* other) { ::PROTOBUF_NAMESPACE_ID::Metadata DropColumn::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_greptime_2fv1_2fddl_2eproto_getter, &descriptor_table_greptime_2fv1_2fddl_2eproto_once, - file_level_metadata_greptime_2fv1_2fddl_2eproto[20]); + file_level_metadata_greptime_2fv1_2fddl_2eproto[21]); } // =================================================================== @@ -7756,7 +8095,7 @@ void TableId::InternalSwap(TableId* other) { ::PROTOBUF_NAMESPACE_ID::Metadata TableId::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_greptime_2fv1_2fddl_2eproto_getter, &descriptor_table_greptime_2fv1_2fddl_2eproto_once, - file_level_metadata_greptime_2fv1_2fddl_2eproto[21]); + file_level_metadata_greptime_2fv1_2fddl_2eproto[22]); } // =================================================================== @@ -7934,7 +8273,7 @@ void FlowId::InternalSwap(FlowId* other) { ::PROTOBUF_NAMESPACE_ID::Metadata FlowId::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_greptime_2fv1_2fddl_2eproto_getter, &descriptor_table_greptime_2fv1_2fddl_2eproto_once, - file_level_metadata_greptime_2fv1_2fddl_2eproto[22]); + file_level_metadata_greptime_2fv1_2fddl_2eproto[23]); } // =================================================================== @@ -8416,7 +8755,7 @@ void ColumnDef::InternalSwap(ColumnDef* other) { ::PROTOBUF_NAMESPACE_ID::Metadata ColumnDef::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_greptime_2fv1_2fddl_2eproto_getter, &descriptor_table_greptime_2fv1_2fddl_2eproto_once, - file_level_metadata_greptime_2fv1_2fddl_2eproto[23]); + file_level_metadata_greptime_2fv1_2fddl_2eproto[24]); } // =================================================================== @@ -8649,7 +8988,7 @@ void AddColumnLocation::InternalSwap(AddColumnLocation* other) { ::PROTOBUF_NAMESPACE_ID::Metadata AddColumnLocation::GetMetadata() const { return ::_pbi::AssignDescriptors( &descriptor_table_greptime_2fv1_2fddl_2eproto_getter, &descriptor_table_greptime_2fv1_2fddl_2eproto_once, - file_level_metadata_greptime_2fv1_2fddl_2eproto[24]); + file_level_metadata_greptime_2fv1_2fddl_2eproto[25]); } // @@protoc_insertion_point(namespace_scope) @@ -8736,6 +9075,10 @@ template<> PROTOBUF_NOINLINE ::greptime::v1::ChangeColumnType* Arena::CreateMaybeMessage< ::greptime::v1::ChangeColumnType >(Arena* arena) { return Arena::CreateMessageInternal< ::greptime::v1::ChangeColumnType >(arena); } +template<> PROTOBUF_NOINLINE ::greptime::v1::ChangeTableAttributes* +Arena::CreateMaybeMessage< ::greptime::v1::ChangeTableAttributes >(Arena* arena) { + return Arena::CreateMessageInternal< ::greptime::v1::ChangeTableAttributes >(arena); +} template<> PROTOBUF_NOINLINE ::greptime::v1::DropColumn* Arena::CreateMaybeMessage< ::greptime::v1::DropColumn >(Arena* arena) { return Arena::CreateMessageInternal< ::greptime::v1::DropColumn >(arena); diff --git a/c++/greptime/v1/ddl.pb.h b/c++/greptime/v1/ddl.pb.h index 875e85d4..eae56bcf 100644 --- a/c++/greptime/v1/ddl.pb.h +++ b/c++/greptime/v1/ddl.pb.h @@ -69,6 +69,9 @@ extern ChangeColumnTypeDefaultTypeInternal _ChangeColumnType_default_instance_; class ChangeColumnTypes; struct ChangeColumnTypesDefaultTypeInternal; extern ChangeColumnTypesDefaultTypeInternal _ChangeColumnTypes_default_instance_; +class ChangeTableAttributes; +struct ChangeTableAttributesDefaultTypeInternal; +extern ChangeTableAttributesDefaultTypeInternal _ChangeTableAttributes_default_instance_; class ColumnDef; struct ColumnDefDefaultTypeInternal; extern ColumnDefDefaultTypeInternal _ColumnDef_default_instance_; @@ -135,6 +138,7 @@ template<> ::greptime::v1::AddColumns* Arena::CreateMaybeMessage<::greptime::v1: template<> ::greptime::v1::AlterExpr* Arena::CreateMaybeMessage<::greptime::v1::AlterExpr>(Arena*); template<> ::greptime::v1::ChangeColumnType* Arena::CreateMaybeMessage<::greptime::v1::ChangeColumnType>(Arena*); template<> ::greptime::v1::ChangeColumnTypes* Arena::CreateMaybeMessage<::greptime::v1::ChangeColumnTypes>(Arena*); +template<> ::greptime::v1::ChangeTableAttributes* Arena::CreateMaybeMessage<::greptime::v1::ChangeTableAttributes>(Arena*); template<> ::greptime::v1::ColumnDef* Arena::CreateMaybeMessage<::greptime::v1::ColumnDef>(Arena*); template<> ::greptime::v1::CreateDatabaseExpr* Arena::CreateMaybeMessage<::greptime::v1::CreateDatabaseExpr>(Arena*); template<> ::greptime::v1::CreateDatabaseExpr_OptionsEntry_DoNotUse* Arena::CreateMaybeMessage<::greptime::v1::CreateDatabaseExpr_OptionsEntry_DoNotUse>(Arena*); @@ -2011,6 +2015,7 @@ class AlterExpr final : kDropColumns = 5, kRenameTable = 6, kChangeColumnTypes = 7, + kChangeTableAttributes = 8, KIND_NOT_SET = 0, }; @@ -2099,6 +2104,7 @@ class AlterExpr final : kDropColumnsFieldNumber = 5, kRenameTableFieldNumber = 6, kChangeColumnTypesFieldNumber = 7, + kChangeTableAttributesFieldNumber = 8, }; // string catalog_name = 1; void clear_catalog_name(); @@ -2214,6 +2220,24 @@ class AlterExpr final : ::greptime::v1::ChangeColumnTypes* change_column_types); ::greptime::v1::ChangeColumnTypes* unsafe_arena_release_change_column_types(); + // .greptime.v1.ChangeTableAttributes change_tableAttributes = 8; + bool has_change_tableattributes() const; + private: + bool _internal_has_change_tableattributes() const; + public: + void clear_change_tableattributes(); + const ::greptime::v1::ChangeTableAttributes& change_tableattributes() const; + PROTOBUF_NODISCARD ::greptime::v1::ChangeTableAttributes* release_change_tableattributes(); + ::greptime::v1::ChangeTableAttributes* mutable_change_tableattributes(); + void set_allocated_change_tableattributes(::greptime::v1::ChangeTableAttributes* change_tableattributes); + private: + const ::greptime::v1::ChangeTableAttributes& _internal_change_tableattributes() const; + ::greptime::v1::ChangeTableAttributes* _internal_mutable_change_tableattributes(); + public: + void unsafe_arena_set_allocated_change_tableattributes( + ::greptime::v1::ChangeTableAttributes* change_tableattributes); + ::greptime::v1::ChangeTableAttributes* unsafe_arena_release_change_tableattributes(); + void clear_kind(); KindCase kind_case() const; // @@protoc_insertion_point(class_scope:greptime.v1.AlterExpr) @@ -2223,6 +2247,7 @@ class AlterExpr final : void set_has_drop_columns(); void set_has_rename_table(); void set_has_change_column_types(); + void set_has_change_tableattributes(); inline bool has_kind() const; inline void clear_has_kind(); @@ -2241,6 +2266,7 @@ class AlterExpr final : ::greptime::v1::DropColumns* drop_columns_; ::greptime::v1::RenameTable* rename_table_; ::greptime::v1::ChangeColumnTypes* change_column_types_; + ::greptime::v1::ChangeTableAttributes* change_tableattributes_; } kind_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; uint32_t _oneof_case_[1]; @@ -4071,6 +4097,175 @@ class ChangeColumnType final : }; // ------------------------------------------------------------------- +class ChangeTableAttributes final : + public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:greptime.v1.ChangeTableAttributes) */ { + public: + inline ChangeTableAttributes() : ChangeTableAttributes(nullptr) {} + ~ChangeTableAttributes() override; + explicit PROTOBUF_CONSTEXPR ChangeTableAttributes(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized); + + ChangeTableAttributes(const ChangeTableAttributes& from); + ChangeTableAttributes(ChangeTableAttributes&& from) noexcept + : ChangeTableAttributes() { + *this = ::std::move(from); + } + + inline ChangeTableAttributes& operator=(const ChangeTableAttributes& from) { + CopyFrom(from); + return *this; + } + inline ChangeTableAttributes& operator=(ChangeTableAttributes&& from) noexcept { + if (this == &from) return *this; + if (GetOwningArena() == from.GetOwningArena() + #ifdef PROTOBUF_FORCE_COPY_IN_MOVE + && GetOwningArena() != nullptr + #endif // !PROTOBUF_FORCE_COPY_IN_MOVE + ) { + InternalSwap(&from); + } else { + CopyFrom(from); + } + return *this; + } + + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() { + return GetDescriptor(); + } + static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() { + return default_instance().GetMetadata().descriptor; + } + static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() { + return default_instance().GetMetadata().reflection; + } + static const ChangeTableAttributes& default_instance() { + return *internal_default_instance(); + } + static inline const ChangeTableAttributes* internal_default_instance() { + return reinterpret_cast( + &_ChangeTableAttributes_default_instance_); + } + static constexpr int kIndexInFileMessages = + 20; + + friend void swap(ChangeTableAttributes& a, ChangeTableAttributes& b) { + a.Swap(&b); + } + inline void Swap(ChangeTableAttributes* other) { + if (other == this) return; + #ifdef PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() != nullptr && + GetOwningArena() == other->GetOwningArena()) { + #else // PROTOBUF_FORCE_COPY_IN_SWAP + if (GetOwningArena() == other->GetOwningArena()) { + #endif // !PROTOBUF_FORCE_COPY_IN_SWAP + InternalSwap(other); + } else { + ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other); + } + } + void UnsafeArenaSwap(ChangeTableAttributes* other) { + if (other == this) return; + GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena()); + InternalSwap(other); + } + + // implements Message ---------------------------------------------- + + ChangeTableAttributes* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final { + return CreateMaybeMessage(arena); + } + using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom; + void CopyFrom(const ChangeTableAttributes& from); + using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom; + void MergeFrom( const ChangeTableAttributes& from) { + ChangeTableAttributes::MergeImpl(*this, from); + } + private: + static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg); + public: + PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final; + bool IsInitialized() const final; + + size_t ByteSizeLong() const final; + const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final; + uint8_t* _InternalSerialize( + uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final; + int GetCachedSize() const final { return _impl_._cached_size_.Get(); } + + private: + void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned); + void SharedDtor(); + void SetCachedSize(int size) const final; + void InternalSwap(ChangeTableAttributes* other); + + private: + friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata; + static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() { + return "greptime.v1.ChangeTableAttributes"; + } + protected: + explicit ChangeTableAttributes(::PROTOBUF_NAMESPACE_ID::Arena* arena, + bool is_message_owned = false); + public: + + static const ClassData _class_data_; + const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final; + + ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final; + + // nested types ---------------------------------------------------- + + // accessors ------------------------------------------------------- + + enum : int { + kAttrNameFieldNumber = 1, + kAttrValueFieldNumber = 2, + }; + // string attr_name = 1; + void clear_attr_name(); + const std::string& attr_name() const; + template + void set_attr_name(ArgT0&& arg0, ArgT... args); + std::string* mutable_attr_name(); + PROTOBUF_NODISCARD std::string* release_attr_name(); + void set_allocated_attr_name(std::string* attr_name); + private: + const std::string& _internal_attr_name() const; + inline PROTOBUF_ALWAYS_INLINE void _internal_set_attr_name(const std::string& value); + std::string* _internal_mutable_attr_name(); + public: + + // string attr_value = 2; + void clear_attr_value(); + const std::string& attr_value() const; + template + void set_attr_value(ArgT0&& arg0, ArgT... args); + std::string* mutable_attr_value(); + PROTOBUF_NODISCARD std::string* release_attr_value(); + void set_allocated_attr_value(std::string* attr_value); + private: + const std::string& _internal_attr_value() const; + inline PROTOBUF_ALWAYS_INLINE void _internal_set_attr_value(const std::string& value); + std::string* _internal_mutable_attr_value(); + public: + + // @@protoc_insertion_point(class_scope:greptime.v1.ChangeTableAttributes) + private: + class _Internal; + + template friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper; + typedef void InternalArenaConstructable_; + typedef void DestructorSkippable_; + struct Impl_ { + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr attr_name_; + ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr attr_value_; + mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; + }; + union { Impl_ _impl_; }; + friend struct ::TableStruct_greptime_2fv1_2fddl_2eproto; +}; +// ------------------------------------------------------------------- + class DropColumn final : public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:greptime.v1.DropColumn) */ { public: @@ -4119,7 +4314,7 @@ class DropColumn final : &_DropColumn_default_instance_); } static constexpr int kIndexInFileMessages = - 20; + 21; friend void swap(DropColumn& a, DropColumn& b) { a.Swap(&b); @@ -4272,7 +4467,7 @@ class TableId final : &_TableId_default_instance_); } static constexpr int kIndexInFileMessages = - 21; + 22; friend void swap(TableId& a, TableId& b) { a.Swap(&b); @@ -4420,7 +4615,7 @@ class FlowId final : &_FlowId_default_instance_); } static constexpr int kIndexInFileMessages = - 22; + 23; friend void swap(FlowId& a, FlowId& b) { a.Swap(&b); @@ -4568,7 +4763,7 @@ class ColumnDef final : &_ColumnDef_default_instance_); } static constexpr int kIndexInFileMessages = - 23; + 24; friend void swap(ColumnDef& a, ColumnDef& b) { a.Swap(&b); @@ -4826,7 +5021,7 @@ class AddColumnLocation final : &_AddColumnLocation_default_instance_); } static constexpr int kIndexInFileMessages = - 24; + 25; friend void swap(AddColumnLocation& a, AddColumnLocation& b) { a.Swap(&b); @@ -8107,6 +8302,80 @@ inline ::greptime::v1::ChangeColumnTypes* AlterExpr::mutable_change_column_types return _msg; } +// .greptime.v1.ChangeTableAttributes change_tableAttributes = 8; +inline bool AlterExpr::_internal_has_change_tableattributes() const { + return kind_case() == kChangeTableAttributes; +} +inline bool AlterExpr::has_change_tableattributes() const { + return _internal_has_change_tableattributes(); +} +inline void AlterExpr::set_has_change_tableattributes() { + _impl_._oneof_case_[0] = kChangeTableAttributes; +} +inline void AlterExpr::clear_change_tableattributes() { + if (_internal_has_change_tableattributes()) { + if (GetArenaForAllocation() == nullptr) { + delete _impl_.kind_.change_tableattributes_; + } + clear_has_kind(); + } +} +inline ::greptime::v1::ChangeTableAttributes* AlterExpr::release_change_tableattributes() { + // @@protoc_insertion_point(field_release:greptime.v1.AlterExpr.change_tableAttributes) + if (_internal_has_change_tableattributes()) { + clear_has_kind(); + ::greptime::v1::ChangeTableAttributes* temp = _impl_.kind_.change_tableattributes_; + if (GetArenaForAllocation() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + _impl_.kind_.change_tableattributes_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::greptime::v1::ChangeTableAttributes& AlterExpr::_internal_change_tableattributes() const { + return _internal_has_change_tableattributes() + ? *_impl_.kind_.change_tableattributes_ + : reinterpret_cast< ::greptime::v1::ChangeTableAttributes&>(::greptime::v1::_ChangeTableAttributes_default_instance_); +} +inline const ::greptime::v1::ChangeTableAttributes& AlterExpr::change_tableattributes() const { + // @@protoc_insertion_point(field_get:greptime.v1.AlterExpr.change_tableAttributes) + return _internal_change_tableattributes(); +} +inline ::greptime::v1::ChangeTableAttributes* AlterExpr::unsafe_arena_release_change_tableattributes() { + // @@protoc_insertion_point(field_unsafe_arena_release:greptime.v1.AlterExpr.change_tableAttributes) + if (_internal_has_change_tableattributes()) { + clear_has_kind(); + ::greptime::v1::ChangeTableAttributes* temp = _impl_.kind_.change_tableattributes_; + _impl_.kind_.change_tableattributes_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void AlterExpr::unsafe_arena_set_allocated_change_tableattributes(::greptime::v1::ChangeTableAttributes* change_tableattributes) { + clear_kind(); + if (change_tableattributes) { + set_has_change_tableattributes(); + _impl_.kind_.change_tableattributes_ = change_tableattributes; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:greptime.v1.AlterExpr.change_tableAttributes) +} +inline ::greptime::v1::ChangeTableAttributes* AlterExpr::_internal_mutable_change_tableattributes() { + if (!_internal_has_change_tableattributes()) { + clear_kind(); + set_has_change_tableattributes(); + _impl_.kind_.change_tableattributes_ = CreateMaybeMessage< ::greptime::v1::ChangeTableAttributes >(GetArenaForAllocation()); + } + return _impl_.kind_.change_tableattributes_; +} +inline ::greptime::v1::ChangeTableAttributes* AlterExpr::mutable_change_tableattributes() { + ::greptime::v1::ChangeTableAttributes* _msg = _internal_mutable_change_tableattributes(); + // @@protoc_insertion_point(field_mutable:greptime.v1.AlterExpr.change_tableAttributes) + return _msg; +} + inline bool AlterExpr::has_kind() const { return kind_case() != KIND_NOT_SET; } @@ -9434,6 +9703,110 @@ inline void ChangeColumnType::set_allocated_target_type_extension(::greptime::v1 // ------------------------------------------------------------------- +// ChangeTableAttributes + +// string attr_name = 1; +inline void ChangeTableAttributes::clear_attr_name() { + _impl_.attr_name_.ClearToEmpty(); +} +inline const std::string& ChangeTableAttributes::attr_name() const { + // @@protoc_insertion_point(field_get:greptime.v1.ChangeTableAttributes.attr_name) + return _internal_attr_name(); +} +template +inline PROTOBUF_ALWAYS_INLINE +void ChangeTableAttributes::set_attr_name(ArgT0&& arg0, ArgT... args) { + + _impl_.attr_name_.Set(static_cast(arg0), args..., GetArenaForAllocation()); + // @@protoc_insertion_point(field_set:greptime.v1.ChangeTableAttributes.attr_name) +} +inline std::string* ChangeTableAttributes::mutable_attr_name() { + std::string* _s = _internal_mutable_attr_name(); + // @@protoc_insertion_point(field_mutable:greptime.v1.ChangeTableAttributes.attr_name) + return _s; +} +inline const std::string& ChangeTableAttributes::_internal_attr_name() const { + return _impl_.attr_name_.Get(); +} +inline void ChangeTableAttributes::_internal_set_attr_name(const std::string& value) { + + _impl_.attr_name_.Set(value, GetArenaForAllocation()); +} +inline std::string* ChangeTableAttributes::_internal_mutable_attr_name() { + + return _impl_.attr_name_.Mutable(GetArenaForAllocation()); +} +inline std::string* ChangeTableAttributes::release_attr_name() { + // @@protoc_insertion_point(field_release:greptime.v1.ChangeTableAttributes.attr_name) + return _impl_.attr_name_.Release(); +} +inline void ChangeTableAttributes::set_allocated_attr_name(std::string* attr_name) { + if (attr_name != nullptr) { + + } else { + + } + _impl_.attr_name_.SetAllocated(attr_name, GetArenaForAllocation()); +#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING + if (_impl_.attr_name_.IsDefault()) { + _impl_.attr_name_.Set("", GetArenaForAllocation()); + } +#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING + // @@protoc_insertion_point(field_set_allocated:greptime.v1.ChangeTableAttributes.attr_name) +} + +// string attr_value = 2; +inline void ChangeTableAttributes::clear_attr_value() { + _impl_.attr_value_.ClearToEmpty(); +} +inline const std::string& ChangeTableAttributes::attr_value() const { + // @@protoc_insertion_point(field_get:greptime.v1.ChangeTableAttributes.attr_value) + return _internal_attr_value(); +} +template +inline PROTOBUF_ALWAYS_INLINE +void ChangeTableAttributes::set_attr_value(ArgT0&& arg0, ArgT... args) { + + _impl_.attr_value_.Set(static_cast(arg0), args..., GetArenaForAllocation()); + // @@protoc_insertion_point(field_set:greptime.v1.ChangeTableAttributes.attr_value) +} +inline std::string* ChangeTableAttributes::mutable_attr_value() { + std::string* _s = _internal_mutable_attr_value(); + // @@protoc_insertion_point(field_mutable:greptime.v1.ChangeTableAttributes.attr_value) + return _s; +} +inline const std::string& ChangeTableAttributes::_internal_attr_value() const { + return _impl_.attr_value_.Get(); +} +inline void ChangeTableAttributes::_internal_set_attr_value(const std::string& value) { + + _impl_.attr_value_.Set(value, GetArenaForAllocation()); +} +inline std::string* ChangeTableAttributes::_internal_mutable_attr_value() { + + return _impl_.attr_value_.Mutable(GetArenaForAllocation()); +} +inline std::string* ChangeTableAttributes::release_attr_value() { + // @@protoc_insertion_point(field_release:greptime.v1.ChangeTableAttributes.attr_value) + return _impl_.attr_value_.Release(); +} +inline void ChangeTableAttributes::set_allocated_attr_value(std::string* attr_value) { + if (attr_value != nullptr) { + + } else { + + } + _impl_.attr_value_.SetAllocated(attr_value, GetArenaForAllocation()); +#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING + if (_impl_.attr_value_.IsDefault()) { + _impl_.attr_value_.Set("", GetArenaForAllocation()); + } +#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING + // @@protoc_insertion_point(field_set_allocated:greptime.v1.ChangeTableAttributes.attr_value) +} + +// ------------------------------------------------------------------- + // DropColumn // string name = 1; @@ -10043,6 +10416,8 @@ inline void AddColumnLocation::set_allocated_after_column_name(std::string* afte // ------------------------------------------------------------------- +// ------------------------------------------------------------------- + // @@protoc_insertion_point(namespace_scope) diff --git a/go/greptime/v1/ddl.pb.go b/go/greptime/v1/ddl.pb.go index 6e9b5f3a..7664190e 100644 --- a/go/greptime/v1/ddl.pb.go +++ b/go/greptime/v1/ddl.pb.go @@ -77,7 +77,7 @@ func (x AddColumnLocation_LocationType) Number() protoreflect.EnumNumber { // Deprecated: Use AddColumnLocation_LocationType.Descriptor instead. func (AddColumnLocation_LocationType) EnumDescriptor() ([]byte, []int) { - return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{21, 0} + return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{22, 0} } // "Data Definition Language" requests, that create, modify or delete the @@ -797,6 +797,7 @@ type AlterExpr struct { // *AlterExpr_DropColumns // *AlterExpr_RenameTable // *AlterExpr_ChangeColumnTypes + // *AlterExpr_ChangeTableAttributes Kind isAlterExpr_Kind `protobuf_oneof:"kind"` } @@ -888,6 +889,13 @@ func (x *AlterExpr) GetChangeColumnTypes() *ChangeColumnTypes { return nil } +func (x *AlterExpr) GetChangeTableAttributes() *ChangeTableAttributes { + if x, ok := x.GetKind().(*AlterExpr_ChangeTableAttributes); ok { + return x.ChangeTableAttributes + } + return nil +} + type isAlterExpr_Kind interface { isAlterExpr_Kind() } @@ -908,6 +916,10 @@ type AlterExpr_ChangeColumnTypes struct { ChangeColumnTypes *ChangeColumnTypes `protobuf:"bytes,7,opt,name=change_column_types,json=changeColumnTypes,proto3,oneof"` } +type AlterExpr_ChangeTableAttributes struct { + ChangeTableAttributes *ChangeTableAttributes `protobuf:"bytes,8,opt,name=change_tableAttributes,json=changeTableAttributes,proto3,oneof"` +} + func (*AlterExpr_AddColumns) isAlterExpr_Kind() {} func (*AlterExpr_DropColumns) isAlterExpr_Kind() {} @@ -916,6 +928,8 @@ func (*AlterExpr_RenameTable) isAlterExpr_Kind() {} func (*AlterExpr_ChangeColumnTypes) isAlterExpr_Kind() {} +func (*AlterExpr_ChangeTableAttributes) isAlterExpr_Kind() {} + type DropTableExpr struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1506,6 +1520,61 @@ func (x *ChangeColumnType) GetTargetTypeExtension() *ColumnDataTypeExtension { return nil } +type ChangeTableAttributes struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AttrName string `protobuf:"bytes,1,opt,name=attr_name,json=attrName,proto3" json:"attr_name,omitempty"` + AttrValue string `protobuf:"bytes,2,opt,name=attr_value,json=attrValue,proto3" json:"attr_value,omitempty"` +} + +func (x *ChangeTableAttributes) Reset() { + *x = ChangeTableAttributes{} + if protoimpl.UnsafeEnabled { + mi := &file_greptime_v1_ddl_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChangeTableAttributes) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChangeTableAttributes) ProtoMessage() {} + +func (x *ChangeTableAttributes) ProtoReflect() protoreflect.Message { + mi := &file_greptime_v1_ddl_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ChangeTableAttributes.ProtoReflect.Descriptor instead. +func (*ChangeTableAttributes) Descriptor() ([]byte, []int) { + return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{17} +} + +func (x *ChangeTableAttributes) GetAttrName() string { + if x != nil { + return x.AttrName + } + return "" +} + +func (x *ChangeTableAttributes) GetAttrValue() string { + if x != nil { + return x.AttrValue + } + return "" +} + type DropColumn struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1517,7 +1586,7 @@ type DropColumn struct { func (x *DropColumn) Reset() { *x = DropColumn{} if protoimpl.UnsafeEnabled { - mi := &file_greptime_v1_ddl_proto_msgTypes[17] + mi := &file_greptime_v1_ddl_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1530,7 +1599,7 @@ func (x *DropColumn) String() string { func (*DropColumn) ProtoMessage() {} func (x *DropColumn) ProtoReflect() protoreflect.Message { - mi := &file_greptime_v1_ddl_proto_msgTypes[17] + mi := &file_greptime_v1_ddl_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1543,7 +1612,7 @@ func (x *DropColumn) ProtoReflect() protoreflect.Message { // Deprecated: Use DropColumn.ProtoReflect.Descriptor instead. func (*DropColumn) Descriptor() ([]byte, []int) { - return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{17} + return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{18} } func (x *DropColumn) GetName() string { @@ -1564,7 +1633,7 @@ type TableId struct { func (x *TableId) Reset() { *x = TableId{} if protoimpl.UnsafeEnabled { - mi := &file_greptime_v1_ddl_proto_msgTypes[18] + mi := &file_greptime_v1_ddl_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1577,7 +1646,7 @@ func (x *TableId) String() string { func (*TableId) ProtoMessage() {} func (x *TableId) ProtoReflect() protoreflect.Message { - mi := &file_greptime_v1_ddl_proto_msgTypes[18] + mi := &file_greptime_v1_ddl_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1590,7 +1659,7 @@ func (x *TableId) ProtoReflect() protoreflect.Message { // Deprecated: Use TableId.ProtoReflect.Descriptor instead. func (*TableId) Descriptor() ([]byte, []int) { - return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{18} + return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{19} } func (x *TableId) GetId() uint32 { @@ -1611,7 +1680,7 @@ type FlowId struct { func (x *FlowId) Reset() { *x = FlowId{} if protoimpl.UnsafeEnabled { - mi := &file_greptime_v1_ddl_proto_msgTypes[19] + mi := &file_greptime_v1_ddl_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1624,7 +1693,7 @@ func (x *FlowId) String() string { func (*FlowId) ProtoMessage() {} func (x *FlowId) ProtoReflect() protoreflect.Message { - mi := &file_greptime_v1_ddl_proto_msgTypes[19] + mi := &file_greptime_v1_ddl_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1637,7 +1706,7 @@ func (x *FlowId) ProtoReflect() protoreflect.Message { // Deprecated: Use FlowId.ProtoReflect.Descriptor instead. func (*FlowId) Descriptor() ([]byte, []int) { - return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{19} + return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{20} } func (x *FlowId) GetId() uint32 { @@ -1667,7 +1736,7 @@ type ColumnDef struct { func (x *ColumnDef) Reset() { *x = ColumnDef{} if protoimpl.UnsafeEnabled { - mi := &file_greptime_v1_ddl_proto_msgTypes[20] + mi := &file_greptime_v1_ddl_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1680,7 +1749,7 @@ func (x *ColumnDef) String() string { func (*ColumnDef) ProtoMessage() {} func (x *ColumnDef) ProtoReflect() protoreflect.Message { - mi := &file_greptime_v1_ddl_proto_msgTypes[20] + mi := &file_greptime_v1_ddl_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1693,7 +1762,7 @@ func (x *ColumnDef) ProtoReflect() protoreflect.Message { // Deprecated: Use ColumnDef.ProtoReflect.Descriptor instead. func (*ColumnDef) Descriptor() ([]byte, []int) { - return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{20} + return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{21} } func (x *ColumnDef) GetName() string { @@ -1764,7 +1833,7 @@ type AddColumnLocation struct { func (x *AddColumnLocation) Reset() { *x = AddColumnLocation{} if protoimpl.UnsafeEnabled { - mi := &file_greptime_v1_ddl_proto_msgTypes[21] + mi := &file_greptime_v1_ddl_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1777,7 +1846,7 @@ func (x *AddColumnLocation) String() string { func (*AddColumnLocation) ProtoMessage() {} func (x *AddColumnLocation) ProtoReflect() protoreflect.Message { - mi := &file_greptime_v1_ddl_proto_msgTypes[21] + mi := &file_greptime_v1_ddl_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1790,7 +1859,7 @@ func (x *AddColumnLocation) ProtoReflect() protoreflect.Message { // Deprecated: Use AddColumnLocation.ProtoReflect.Descriptor instead. func (*AddColumnLocation) Descriptor() ([]byte, []int) { - return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{21} + return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{22} } func (x *AddColumnLocation) GetLocationType() AddColumnLocation_LocationType { @@ -1965,7 +2034,7 @@ var file_greptime_v1_ddl_proto_rawDesc = []byte{ 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x22, 0x82, 0x03, 0x0a, 0x09, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x78, 0x70, 0x72, 0x12, 0x21, + 0x22, 0xdf, 0x03, 0x0a, 0x09, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x78, 0x70, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, @@ -1988,143 +2057,154 @@ var file_greptime_v1_ddl_proto_rawDesc = []byte{ 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x48, 0x00, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x42, 0x06, 0x0a, - 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0xc9, 0x01, 0x0a, 0x0d, 0x44, 0x72, 0x6f, 0x70, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x61, 0x74, 0x61, 0x6c, - 0x6f, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, - 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, - 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x49, 0x64, 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x64, - 0x72, 0x6f, 0x70, 0x5f, 0x69, 0x66, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0c, 0x64, 0x72, 0x6f, 0x70, 0x49, 0x66, 0x45, 0x78, 0x69, 0x73, 0x74, - 0x73, 0x22, 0x8d, 0x02, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, - 0x62, 0x61, 0x73, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x61, 0x74, 0x61, - 0x6c, 0x6f, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x14, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x66, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x78, - 0x69, 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x49, 0x66, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x46, 0x0a, - 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, - 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x78, 0x70, 0x72, 0x2e, - 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0xa7, 0x01, 0x0a, 0x11, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x61, 0x74, 0x61, 0x6c, - 0x6f, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, - 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, - 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x49, 0x64, 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x7c, 0x0a, 0x10, 0x44, - 0x72, 0x6f, 0x70, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, - 0x21, 0x0a, 0x0c, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x69, 0x66, 0x5f, 0x65, - 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x64, 0x72, 0x6f, - 0x70, 0x49, 0x66, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0x45, 0x0a, 0x0a, 0x41, 0x64, 0x64, - 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x0b, 0x61, 0x64, 0x64, 0x5f, 0x63, - 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, - 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, - 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x0a, 0x61, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, - 0x22, 0x49, 0x0a, 0x0b, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, - 0x3a, 0x0a, 0x0c, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x0b, - 0x64, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x22, 0x62, 0x0a, 0x11, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, - 0x12, 0x4d, 0x0a, 0x13, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, - 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, + 0x67, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x5b, 0x0a, + 0x16, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x11, 0x63, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, - 0x33, 0x0a, 0x0b, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x24, - 0x0a, 0x0e, 0x6e, 0x65, 0x77, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x65, 0x77, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x7e, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, - 0x6e, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x65, 0x66, 0x52, 0x09, 0x63, - 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x65, 0x66, 0x12, 0x3a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x65, - 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x75, - 0x6d, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xcb, 0x01, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, - 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, - 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x74, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x1b, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, - 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x58, 0x0a, 0x15, 0x74, 0x61, 0x72, 0x67, - 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x61, 0x74, 0x61, - 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x74, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x22, 0x20, 0x0a, 0x0a, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x19, 0x0a, 0x07, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, - 0x18, 0x0a, 0x06, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, 0x8e, 0x03, 0x0a, 0x09, 0x43, 0x6f, - 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x65, 0x66, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x64, - 0x61, 0x74, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, - 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, - 0x75, 0x6d, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, - 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, - 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x4e, 0x75, - 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, - 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0c, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x6e, 0x73, 0x74, - 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x0d, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, - 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, - 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6d, 0x61, 0x6e, - 0x74, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, - 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, - 0x53, 0x0a, 0x12, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, - 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, - 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x52, 0x11, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, - 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb7, 0x01, 0x0a, 0x11, 0x41, - 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x50, 0x0a, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, + 0x67, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x48, 0x00, 0x52, 0x15, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, + 0x6e, 0x64, 0x22, 0xc9, 0x01, 0x0a, 0x0d, 0x44, 0x72, 0x6f, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x45, 0x78, 0x70, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x61, 0x74, 0x61, + 0x6c, 0x6f, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x72, 0x65, 0x70, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x52, + 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x64, 0x72, 0x6f, 0x70, + 0x5f, 0x69, 0x66, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0c, 0x64, 0x72, 0x6f, 0x70, 0x49, 0x66, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0x8d, + 0x02, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, + 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x61, 0x74, + 0x61, 0x6c, 0x6f, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x65, + 0x6d, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x14, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x5f, 0x69, 0x66, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, + 0x66, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x46, 0x0a, 0x07, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x72, + 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x78, 0x70, 0x72, 0x2e, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa7, + 0x01, 0x0a, 0x11, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x45, 0x78, 0x70, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x61, 0x74, 0x61, + 0x6c, 0x6f, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x6d, + 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x72, 0x65, 0x70, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x52, + 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x7c, 0x0a, 0x10, 0x44, 0x72, 0x6f, 0x70, + 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x21, 0x0a, 0x0c, + 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x24, 0x0a, 0x0e, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x69, 0x66, 0x5f, 0x65, 0x78, 0x69, 0x73, + 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x64, 0x72, 0x6f, 0x70, 0x49, 0x66, + 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0x45, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6c, + 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x0b, 0x61, 0x64, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x75, + 0x6d, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x72, 0x65, 0x70, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, + 0x6e, 0x52, 0x0a, 0x61, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x22, 0x49, 0x0a, + 0x0b, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x0c, + 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x0b, 0x64, 0x72, 0x6f, + 0x70, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x22, 0x62, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x4d, 0x0a, + 0x13, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x65, + 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, + 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x33, 0x0a, 0x0b, + 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6e, + 0x65, 0x77, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x65, 0x77, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x22, 0x7e, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x35, + 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x65, 0x66, 0x52, 0x09, 0x63, 0x6f, 0x6c, 0x75, + 0x6d, 0x6e, 0x44, 0x65, 0x66, 0x12, 0x3a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4c, - 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6c, 0x75, - 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, - 0x66, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x24, - 0x0a, 0x0c, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, - 0x0a, 0x05, 0x46, 0x49, 0x52, 0x53, 0x54, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x46, 0x54, - 0x45, 0x52, 0x10, 0x01, 0x42, 0x4c, 0x0a, 0x0e, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x03, 0x44, 0x64, 0x6c, 0x5a, 0x35, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, - 0x54, 0x65, 0x61, 0x6d, 0x2f, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2d, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2f, - 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0xcb, 0x01, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6c, 0x75, + 0x6d, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, + 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, + 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, + 0x6e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x58, 0x0a, 0x15, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, + 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x74, 0x61, 0x72, 0x67, + 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, + 0x53, 0x0a, 0x15, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x74, 0x74, + 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0x20, 0x0a, 0x0a, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x6c, 0x75, + 0x6d, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x19, 0x0a, 0x07, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x49, + 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, + 0x64, 0x22, 0x18, 0x0a, 0x06, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, 0x8e, 0x03, 0x0a, 0x09, + 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x65, 0x66, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, + 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x64, + 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x6e, 0x75, + 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, + 0x4e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, + 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x6e, + 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x0d, 0x73, 0x65, 0x6d, 0x61, 0x6e, + 0x74, 0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, + 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6d, + 0x61, 0x6e, 0x74, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x73, 0x65, 0x6d, 0x61, 0x6e, + 0x74, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, + 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, + 0x74, 0x12, 0x53, 0x0a, 0x12, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x65, 0x78, + 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, + 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, + 0x6d, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb7, 0x01, 0x0a, + 0x11, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x50, 0x0a, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x72, 0x65, 0x70, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, + 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, + 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, + 0x22, 0x24, 0x0a, 0x0c, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x09, 0x0a, 0x05, 0x46, 0x49, 0x52, 0x53, 0x54, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x41, + 0x46, 0x54, 0x45, 0x52, 0x10, 0x01, 0x42, 0x4c, 0x0a, 0x0e, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x65, + 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x03, 0x44, 0x64, 0x6c, 0x5a, 0x35, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x72, 0x65, 0x70, 0x74, 0x69, + 0x6d, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x2f, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2d, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, + 0x65, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2140,7 +2220,7 @@ func file_greptime_v1_ddl_proto_rawDescGZIP() []byte { } var file_greptime_v1_ddl_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_greptime_v1_ddl_proto_msgTypes = make([]protoimpl.MessageInfo, 25) +var file_greptime_v1_ddl_proto_msgTypes = make([]protoimpl.MessageInfo, 26) var file_greptime_v1_ddl_proto_goTypes = []interface{}{ (AddColumnLocation_LocationType)(0), // 0: greptime.v1.AddColumnLocation.LocationType (*DdlRequest)(nil), // 1: greptime.v1.DdlRequest @@ -2160,20 +2240,21 @@ var file_greptime_v1_ddl_proto_goTypes = []interface{}{ (*RenameTable)(nil), // 15: greptime.v1.RenameTable (*AddColumn)(nil), // 16: greptime.v1.AddColumn (*ChangeColumnType)(nil), // 17: greptime.v1.ChangeColumnType - (*DropColumn)(nil), // 18: greptime.v1.DropColumn - (*TableId)(nil), // 19: greptime.v1.TableId - (*FlowId)(nil), // 20: greptime.v1.FlowId - (*ColumnDef)(nil), // 21: greptime.v1.ColumnDef - (*AddColumnLocation)(nil), // 22: greptime.v1.AddColumnLocation - nil, // 23: greptime.v1.CreateFlowExpr.FlowOptionsEntry - nil, // 24: greptime.v1.CreateTableExpr.TableOptionsEntry - nil, // 25: greptime.v1.CreateDatabaseExpr.OptionsEntry - (*TableName)(nil), // 26: greptime.v1.TableName - (*ExpireAfter)(nil), // 27: greptime.v1.ExpireAfter - (ColumnDataType)(0), // 28: greptime.v1.ColumnDataType - (*ColumnDataTypeExtension)(nil), // 29: greptime.v1.ColumnDataTypeExtension - (SemanticType)(0), // 30: greptime.v1.SemanticType - (*ColumnOptions)(nil), // 31: greptime.v1.ColumnOptions + (*ChangeTableAttributes)(nil), // 18: greptime.v1.ChangeTableAttributes + (*DropColumn)(nil), // 19: greptime.v1.DropColumn + (*TableId)(nil), // 20: greptime.v1.TableId + (*FlowId)(nil), // 21: greptime.v1.FlowId + (*ColumnDef)(nil), // 22: greptime.v1.ColumnDef + (*AddColumnLocation)(nil), // 23: greptime.v1.AddColumnLocation + nil, // 24: greptime.v1.CreateFlowExpr.FlowOptionsEntry + nil, // 25: greptime.v1.CreateTableExpr.TableOptionsEntry + nil, // 26: greptime.v1.CreateDatabaseExpr.OptionsEntry + (*TableName)(nil), // 27: greptime.v1.TableName + (*ExpireAfter)(nil), // 28: greptime.v1.ExpireAfter + (ColumnDataType)(0), // 29: greptime.v1.ColumnDataType + (*ColumnDataTypeExtension)(nil), // 30: greptime.v1.ColumnDataTypeExtension + (SemanticType)(0), // 31: greptime.v1.SemanticType + (*ColumnOptions)(nil), // 32: greptime.v1.ColumnOptions } var file_greptime_v1_ddl_proto_depIdxs = []int32{ 9, // 0: greptime.v1.DdlRequest.create_database:type_name -> greptime.v1.CreateDatabaseExpr @@ -2185,40 +2266,41 @@ var file_greptime_v1_ddl_proto_depIdxs = []int32{ 3, // 6: greptime.v1.DdlRequest.drop_flow:type_name -> greptime.v1.DropFlowExpr 4, // 7: greptime.v1.DdlRequest.create_view:type_name -> greptime.v1.CreateViewExpr 5, // 8: greptime.v1.DdlRequest.drop_view:type_name -> greptime.v1.DropViewExpr - 26, // 9: greptime.v1.CreateFlowExpr.source_table_names:type_name -> greptime.v1.TableName - 26, // 10: greptime.v1.CreateFlowExpr.sink_table_name:type_name -> greptime.v1.TableName - 27, // 11: greptime.v1.CreateFlowExpr.expire_after:type_name -> greptime.v1.ExpireAfter - 23, // 12: greptime.v1.CreateFlowExpr.flow_options:type_name -> greptime.v1.CreateFlowExpr.FlowOptionsEntry - 20, // 13: greptime.v1.DropFlowExpr.flow_id:type_name -> greptime.v1.FlowId - 26, // 14: greptime.v1.CreateViewExpr.table_names:type_name -> greptime.v1.TableName - 19, // 15: greptime.v1.DropViewExpr.view_id:type_name -> greptime.v1.TableId - 21, // 16: greptime.v1.CreateTableExpr.column_defs:type_name -> greptime.v1.ColumnDef - 24, // 17: greptime.v1.CreateTableExpr.table_options:type_name -> greptime.v1.CreateTableExpr.TableOptionsEntry - 19, // 18: greptime.v1.CreateTableExpr.table_id:type_name -> greptime.v1.TableId + 27, // 9: greptime.v1.CreateFlowExpr.source_table_names:type_name -> greptime.v1.TableName + 27, // 10: greptime.v1.CreateFlowExpr.sink_table_name:type_name -> greptime.v1.TableName + 28, // 11: greptime.v1.CreateFlowExpr.expire_after:type_name -> greptime.v1.ExpireAfter + 24, // 12: greptime.v1.CreateFlowExpr.flow_options:type_name -> greptime.v1.CreateFlowExpr.FlowOptionsEntry + 21, // 13: greptime.v1.DropFlowExpr.flow_id:type_name -> greptime.v1.FlowId + 27, // 14: greptime.v1.CreateViewExpr.table_names:type_name -> greptime.v1.TableName + 20, // 15: greptime.v1.DropViewExpr.view_id:type_name -> greptime.v1.TableId + 22, // 16: greptime.v1.CreateTableExpr.column_defs:type_name -> greptime.v1.ColumnDef + 25, // 17: greptime.v1.CreateTableExpr.table_options:type_name -> greptime.v1.CreateTableExpr.TableOptionsEntry + 20, // 18: greptime.v1.CreateTableExpr.table_id:type_name -> greptime.v1.TableId 12, // 19: greptime.v1.AlterExpr.add_columns:type_name -> greptime.v1.AddColumns 13, // 20: greptime.v1.AlterExpr.drop_columns:type_name -> greptime.v1.DropColumns 15, // 21: greptime.v1.AlterExpr.rename_table:type_name -> greptime.v1.RenameTable 14, // 22: greptime.v1.AlterExpr.change_column_types:type_name -> greptime.v1.ChangeColumnTypes - 19, // 23: greptime.v1.DropTableExpr.table_id:type_name -> greptime.v1.TableId - 25, // 24: greptime.v1.CreateDatabaseExpr.options:type_name -> greptime.v1.CreateDatabaseExpr.OptionsEntry - 19, // 25: greptime.v1.TruncateTableExpr.table_id:type_name -> greptime.v1.TableId - 16, // 26: greptime.v1.AddColumns.add_columns:type_name -> greptime.v1.AddColumn - 18, // 27: greptime.v1.DropColumns.drop_columns:type_name -> greptime.v1.DropColumn - 17, // 28: greptime.v1.ChangeColumnTypes.change_column_types:type_name -> greptime.v1.ChangeColumnType - 21, // 29: greptime.v1.AddColumn.column_def:type_name -> greptime.v1.ColumnDef - 22, // 30: greptime.v1.AddColumn.location:type_name -> greptime.v1.AddColumnLocation - 28, // 31: greptime.v1.ChangeColumnType.target_type:type_name -> greptime.v1.ColumnDataType - 29, // 32: greptime.v1.ChangeColumnType.target_type_extension:type_name -> greptime.v1.ColumnDataTypeExtension - 28, // 33: greptime.v1.ColumnDef.data_type:type_name -> greptime.v1.ColumnDataType - 30, // 34: greptime.v1.ColumnDef.semantic_type:type_name -> greptime.v1.SemanticType - 29, // 35: greptime.v1.ColumnDef.datatype_extension:type_name -> greptime.v1.ColumnDataTypeExtension - 31, // 36: greptime.v1.ColumnDef.options:type_name -> greptime.v1.ColumnOptions - 0, // 37: greptime.v1.AddColumnLocation.location_type:type_name -> greptime.v1.AddColumnLocation.LocationType - 38, // [38:38] is the sub-list for method output_type - 38, // [38:38] is the sub-list for method input_type - 38, // [38:38] is the sub-list for extension type_name - 38, // [38:38] is the sub-list for extension extendee - 0, // [0:38] is the sub-list for field type_name + 18, // 23: greptime.v1.AlterExpr.change_tableAttributes:type_name -> greptime.v1.ChangeTableAttributes + 20, // 24: greptime.v1.DropTableExpr.table_id:type_name -> greptime.v1.TableId + 26, // 25: greptime.v1.CreateDatabaseExpr.options:type_name -> greptime.v1.CreateDatabaseExpr.OptionsEntry + 20, // 26: greptime.v1.TruncateTableExpr.table_id:type_name -> greptime.v1.TableId + 16, // 27: greptime.v1.AddColumns.add_columns:type_name -> greptime.v1.AddColumn + 19, // 28: greptime.v1.DropColumns.drop_columns:type_name -> greptime.v1.DropColumn + 17, // 29: greptime.v1.ChangeColumnTypes.change_column_types:type_name -> greptime.v1.ChangeColumnType + 22, // 30: greptime.v1.AddColumn.column_def:type_name -> greptime.v1.ColumnDef + 23, // 31: greptime.v1.AddColumn.location:type_name -> greptime.v1.AddColumnLocation + 29, // 32: greptime.v1.ChangeColumnType.target_type:type_name -> greptime.v1.ColumnDataType + 30, // 33: greptime.v1.ChangeColumnType.target_type_extension:type_name -> greptime.v1.ColumnDataTypeExtension + 29, // 34: greptime.v1.ColumnDef.data_type:type_name -> greptime.v1.ColumnDataType + 31, // 35: greptime.v1.ColumnDef.semantic_type:type_name -> greptime.v1.SemanticType + 30, // 36: greptime.v1.ColumnDef.datatype_extension:type_name -> greptime.v1.ColumnDataTypeExtension + 32, // 37: greptime.v1.ColumnDef.options:type_name -> greptime.v1.ColumnOptions + 0, // 38: greptime.v1.AddColumnLocation.location_type:type_name -> greptime.v1.AddColumnLocation.LocationType + 39, // [39:39] is the sub-list for method output_type + 39, // [39:39] is the sub-list for method input_type + 39, // [39:39] is the sub-list for extension type_name + 39, // [39:39] is the sub-list for extension extendee + 0, // [0:39] is the sub-list for field type_name } func init() { file_greptime_v1_ddl_proto_init() } @@ -2433,7 +2515,7 @@ func file_greptime_v1_ddl_proto_init() { } } file_greptime_v1_ddl_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DropColumn); i { + switch v := v.(*ChangeTableAttributes); i { case 0: return &v.state case 1: @@ -2445,7 +2527,7 @@ func file_greptime_v1_ddl_proto_init() { } } file_greptime_v1_ddl_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TableId); i { + switch v := v.(*DropColumn); i { case 0: return &v.state case 1: @@ -2457,7 +2539,7 @@ func file_greptime_v1_ddl_proto_init() { } } file_greptime_v1_ddl_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FlowId); i { + switch v := v.(*TableId); i { case 0: return &v.state case 1: @@ -2469,7 +2551,7 @@ func file_greptime_v1_ddl_proto_init() { } } file_greptime_v1_ddl_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ColumnDef); i { + switch v := v.(*FlowId); i { case 0: return &v.state case 1: @@ -2481,6 +2563,18 @@ func file_greptime_v1_ddl_proto_init() { } } file_greptime_v1_ddl_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ColumnDef); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_greptime_v1_ddl_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddColumnLocation); i { case 0: return &v.state @@ -2509,6 +2603,7 @@ func file_greptime_v1_ddl_proto_init() { (*AlterExpr_DropColumns)(nil), (*AlterExpr_RenameTable)(nil), (*AlterExpr_ChangeColumnTypes)(nil), + (*AlterExpr_ChangeTableAttributes)(nil), } type x struct{} out := protoimpl.TypeBuilder{ @@ -2516,7 +2611,7 @@ func file_greptime_v1_ddl_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_greptime_v1_ddl_proto_rawDesc, NumEnums: 1, - NumMessages: 25, + NumMessages: 26, NumExtensions: 0, NumServices: 0, }, diff --git a/java/src/main/java/io/greptime/v1/Ddl.java b/java/src/main/java/io/greptime/v1/Ddl.java index f42b65de..82bbea29 100644 --- a/java/src/main/java/io/greptime/v1/Ddl.java +++ b/java/src/main/java/io/greptime/v1/Ddl.java @@ -11737,6 +11737,21 @@ public interface AlterExprOrBuilder extends */ io.greptime.v1.Ddl.ChangeColumnTypesOrBuilder getChangeColumnTypesOrBuilder(); + /** + * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8; + * @return Whether the changeTableAttributes field is set. + */ + boolean hasChangeTableAttributes(); + /** + * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8; + * @return The changeTableAttributes. + */ + io.greptime.v1.Ddl.ChangeTableAttributes getChangeTableAttributes(); + /** + * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8; + */ + io.greptime.v1.Ddl.ChangeTableAttributesOrBuilder getChangeTableAttributesOrBuilder(); + public io.greptime.v1.Ddl.AlterExpr.KindCase getKindCase(); } /** @@ -11861,6 +11876,20 @@ private AlterExpr( kindCase_ = 7; break; } + case 66: { + io.greptime.v1.Ddl.ChangeTableAttributes.Builder subBuilder = null; + if (kindCase_ == 8) { + subBuilder = ((io.greptime.v1.Ddl.ChangeTableAttributes) kind_).toBuilder(); + } + kind_ = + input.readMessage(io.greptime.v1.Ddl.ChangeTableAttributes.parser(), extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom((io.greptime.v1.Ddl.ChangeTableAttributes) kind_); + kind_ = subBuilder.buildPartial(); + } + kindCase_ = 8; + break; + } default: { if (!parseUnknownField( input, unknownFields, extensionRegistry, tag)) { @@ -11904,6 +11933,7 @@ public enum KindCase DROP_COLUMNS(5), RENAME_TABLE(6), CHANGE_COLUMN_TYPES(7), + CHANGE_TABLEATTRIBUTES(8), KIND_NOT_SET(0); private final int value; private KindCase(int value) { @@ -11925,6 +11955,7 @@ public static KindCase forNumber(int value) { case 5: return DROP_COLUMNS; case 6: return RENAME_TABLE; case 7: return CHANGE_COLUMN_TYPES; + case 8: return CHANGE_TABLEATTRIBUTES; case 0: return KIND_NOT_SET; default: return null; } @@ -12178,6 +12209,37 @@ public io.greptime.v1.Ddl.ChangeColumnTypesOrBuilder getChangeColumnTypesOrBuild return io.greptime.v1.Ddl.ChangeColumnTypes.getDefaultInstance(); } + public static final int CHANGE_TABLEATTRIBUTES_FIELD_NUMBER = 8; + /** + * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8; + * @return Whether the changeTableAttributes field is set. + */ + @java.lang.Override + public boolean hasChangeTableAttributes() { + return kindCase_ == 8; + } + /** + * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8; + * @return The changeTableAttributes. + */ + @java.lang.Override + public io.greptime.v1.Ddl.ChangeTableAttributes getChangeTableAttributes() { + if (kindCase_ == 8) { + return (io.greptime.v1.Ddl.ChangeTableAttributes) kind_; + } + return io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance(); + } + /** + * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8; + */ + @java.lang.Override + public io.greptime.v1.Ddl.ChangeTableAttributesOrBuilder getChangeTableAttributesOrBuilder() { + if (kindCase_ == 8) { + return (io.greptime.v1.Ddl.ChangeTableAttributes) kind_; + } + return io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance(); + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -12213,6 +12275,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (kindCase_ == 7) { output.writeMessage(7, (io.greptime.v1.Ddl.ChangeColumnTypes) kind_); } + if (kindCase_ == 8) { + output.writeMessage(8, (io.greptime.v1.Ddl.ChangeTableAttributes) kind_); + } unknownFields.writeTo(output); } @@ -12247,6 +12312,10 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(7, (io.greptime.v1.Ddl.ChangeColumnTypes) kind_); } + if (kindCase_ == 8) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(8, (io.greptime.v1.Ddl.ChangeTableAttributes) kind_); + } size += unknownFields.getSerializedSize(); memoizedSize = size; return size; @@ -12286,6 +12355,10 @@ public boolean equals(final java.lang.Object obj) { if (!getChangeColumnTypes() .equals(other.getChangeColumnTypes())) return false; break; + case 8: + if (!getChangeTableAttributes() + .equals(other.getChangeTableAttributes())) return false; + break; case 0: default: } @@ -12323,6 +12396,10 @@ public int hashCode() { hash = (37 * hash) + CHANGE_COLUMN_TYPES_FIELD_NUMBER; hash = (53 * hash) + getChangeColumnTypes().hashCode(); break; + case 8: + hash = (37 * hash) + CHANGE_TABLEATTRIBUTES_FIELD_NUMBER; + hash = (53 * hash) + getChangeTableAttributes().hashCode(); + break; case 0: default: } @@ -12524,6 +12601,13 @@ public io.greptime.v1.Ddl.AlterExpr buildPartial() { result.kind_ = changeColumnTypesBuilder_.build(); } } + if (kindCase_ == 8) { + if (changeTableAttributesBuilder_ == null) { + result.kind_ = kind_; + } else { + result.kind_ = changeTableAttributesBuilder_.build(); + } + } result.kindCase_ = kindCase_; onBuilt(); return result; @@ -12602,6 +12686,10 @@ public Builder mergeFrom(io.greptime.v1.Ddl.AlterExpr other) { mergeChangeColumnTypes(other.getChangeColumnTypes()); break; } + case CHANGE_TABLEATTRIBUTES: { + mergeChangeTableAttributes(other.getChangeTableAttributes()); + break; + } case KIND_NOT_SET: { break; } @@ -13445,6 +13533,148 @@ public io.greptime.v1.Ddl.ChangeColumnTypesOrBuilder getChangeColumnTypesOrBuild onChanged();; return changeColumnTypesBuilder_; } + + private com.google.protobuf.SingleFieldBuilderV3< + io.greptime.v1.Ddl.ChangeTableAttributes, io.greptime.v1.Ddl.ChangeTableAttributes.Builder, io.greptime.v1.Ddl.ChangeTableAttributesOrBuilder> changeTableAttributesBuilder_; + /** + * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8; + * @return Whether the changeTableAttributes field is set. + */ + @java.lang.Override + public boolean hasChangeTableAttributes() { + return kindCase_ == 8; + } + /** + * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8; + * @return The changeTableAttributes. + */ + @java.lang.Override + public io.greptime.v1.Ddl.ChangeTableAttributes getChangeTableAttributes() { + if (changeTableAttributesBuilder_ == null) { + if (kindCase_ == 8) { + return (io.greptime.v1.Ddl.ChangeTableAttributes) kind_; + } + return io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance(); + } else { + if (kindCase_ == 8) { + return changeTableAttributesBuilder_.getMessage(); + } + return io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance(); + } + } + /** + * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8; + */ + public Builder setChangeTableAttributes(io.greptime.v1.Ddl.ChangeTableAttributes value) { + if (changeTableAttributesBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + kind_ = value; + onChanged(); + } else { + changeTableAttributesBuilder_.setMessage(value); + } + kindCase_ = 8; + return this; + } + /** + * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8; + */ + public Builder setChangeTableAttributes( + io.greptime.v1.Ddl.ChangeTableAttributes.Builder builderForValue) { + if (changeTableAttributesBuilder_ == null) { + kind_ = builderForValue.build(); + onChanged(); + } else { + changeTableAttributesBuilder_.setMessage(builderForValue.build()); + } + kindCase_ = 8; + return this; + } + /** + * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8; + */ + public Builder mergeChangeTableAttributes(io.greptime.v1.Ddl.ChangeTableAttributes value) { + if (changeTableAttributesBuilder_ == null) { + if (kindCase_ == 8 && + kind_ != io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance()) { + kind_ = io.greptime.v1.Ddl.ChangeTableAttributes.newBuilder((io.greptime.v1.Ddl.ChangeTableAttributes) kind_) + .mergeFrom(value).buildPartial(); + } else { + kind_ = value; + } + onChanged(); + } else { + if (kindCase_ == 8) { + changeTableAttributesBuilder_.mergeFrom(value); + } else { + changeTableAttributesBuilder_.setMessage(value); + } + } + kindCase_ = 8; + return this; + } + /** + * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8; + */ + public Builder clearChangeTableAttributes() { + if (changeTableAttributesBuilder_ == null) { + if (kindCase_ == 8) { + kindCase_ = 0; + kind_ = null; + onChanged(); + } + } else { + if (kindCase_ == 8) { + kindCase_ = 0; + kind_ = null; + } + changeTableAttributesBuilder_.clear(); + } + return this; + } + /** + * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8; + */ + public io.greptime.v1.Ddl.ChangeTableAttributes.Builder getChangeTableAttributesBuilder() { + return getChangeTableAttributesFieldBuilder().getBuilder(); + } + /** + * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8; + */ + @java.lang.Override + public io.greptime.v1.Ddl.ChangeTableAttributesOrBuilder getChangeTableAttributesOrBuilder() { + if ((kindCase_ == 8) && (changeTableAttributesBuilder_ != null)) { + return changeTableAttributesBuilder_.getMessageOrBuilder(); + } else { + if (kindCase_ == 8) { + return (io.greptime.v1.Ddl.ChangeTableAttributes) kind_; + } + return io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance(); + } + } + /** + * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8; + */ + private com.google.protobuf.SingleFieldBuilderV3< + io.greptime.v1.Ddl.ChangeTableAttributes, io.greptime.v1.Ddl.ChangeTableAttributes.Builder, io.greptime.v1.Ddl.ChangeTableAttributesOrBuilder> + getChangeTableAttributesFieldBuilder() { + if (changeTableAttributesBuilder_ == null) { + if (!(kindCase_ == 8)) { + kind_ = io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance(); + } + changeTableAttributesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + io.greptime.v1.Ddl.ChangeTableAttributes, io.greptime.v1.Ddl.ChangeTableAttributes.Builder, io.greptime.v1.Ddl.ChangeTableAttributesOrBuilder>( + (io.greptime.v1.Ddl.ChangeTableAttributes) kind_, + getParentForChildren(), + isClean()); + kind_ = null; + } + kindCase_ = 8; + onChanged();; + return changeTableAttributesBuilder_; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { @@ -22283,43 +22513,56 @@ public io.greptime.v1.Ddl.ChangeColumnType getDefaultInstanceForType() { } - public interface DropColumnOrBuilder extends - // @@protoc_insertion_point(interface_extends:greptime.v1.DropColumn) + public interface ChangeTableAttributesOrBuilder extends + // @@protoc_insertion_point(interface_extends:greptime.v1.ChangeTableAttributes) com.google.protobuf.MessageOrBuilder { /** - * string name = 1; - * @return The name. + * string attr_name = 1; + * @return The attrName. */ - java.lang.String getName(); + java.lang.String getAttrName(); /** - * string name = 1; - * @return The bytes for name. + * string attr_name = 1; + * @return The bytes for attrName. */ com.google.protobuf.ByteString - getNameBytes(); + getAttrNameBytes(); + + /** + * string attr_value = 2; + * @return The attrValue. + */ + java.lang.String getAttrValue(); + /** + * string attr_value = 2; + * @return The bytes for attrValue. + */ + com.google.protobuf.ByteString + getAttrValueBytes(); } /** - * Protobuf type {@code greptime.v1.DropColumn} + * Protobuf type {@code greptime.v1.ChangeTableAttributes} */ - public static final class DropColumn extends + public static final class ChangeTableAttributes extends com.google.protobuf.GeneratedMessageV3 implements - // @@protoc_insertion_point(message_implements:greptime.v1.DropColumn) - DropColumnOrBuilder { + // @@protoc_insertion_point(message_implements:greptime.v1.ChangeTableAttributes) + ChangeTableAttributesOrBuilder { private static final long serialVersionUID = 0L; - // Use DropColumn.newBuilder() to construct. - private DropColumn(com.google.protobuf.GeneratedMessageV3.Builder builder) { + // Use ChangeTableAttributes.newBuilder() to construct. + private ChangeTableAttributes(com.google.protobuf.GeneratedMessageV3.Builder builder) { super(builder); } - private DropColumn() { - name_ = ""; + private ChangeTableAttributes() { + attrName_ = ""; + attrValue_ = ""; } @java.lang.Override @SuppressWarnings({"unused"}) protected java.lang.Object newInstance( UnusedPrivateParameter unused) { - return new DropColumn(); + return new ChangeTableAttributes(); } @java.lang.Override @@ -22327,7 +22570,7 @@ protected java.lang.Object newInstance( getUnknownFields() { return this.unknownFields; } - private DropColumn( + private ChangeTableAttributes( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { @@ -22348,7 +22591,13 @@ private DropColumn( case 10: { java.lang.String s = input.readStringRequireUtf8(); - name_ = s; + attrName_ = s; + break; + } + case 18: { + java.lang.String s = input.readStringRequireUtf8(); + + attrValue_ = s; break; } default: { @@ -22374,49 +22623,87 @@ private DropColumn( } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.greptime.v1.Ddl.internal_static_greptime_v1_DropColumn_descriptor; + return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableAttributes_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return io.greptime.v1.Ddl.internal_static_greptime_v1_DropColumn_fieldAccessorTable + return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableAttributes_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.greptime.v1.Ddl.DropColumn.class, io.greptime.v1.Ddl.DropColumn.Builder.class); + io.greptime.v1.Ddl.ChangeTableAttributes.class, io.greptime.v1.Ddl.ChangeTableAttributes.Builder.class); } - public static final int NAME_FIELD_NUMBER = 1; - private volatile java.lang.Object name_; + public static final int ATTR_NAME_FIELD_NUMBER = 1; + private volatile java.lang.Object attrName_; /** - * string name = 1; - * @return The name. + * string attr_name = 1; + * @return The attrName. */ @java.lang.Override - public java.lang.String getName() { - java.lang.Object ref = name_; + public java.lang.String getAttrName() { + java.lang.Object ref = attrName_; if (ref instanceof java.lang.String) { return (java.lang.String) ref; } else { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); - name_ = s; + attrName_ = s; return s; } } /** - * string name = 1; - * @return The bytes for name. + * string attr_name = 1; + * @return The bytes for attrName. */ @java.lang.Override public com.google.protobuf.ByteString - getNameBytes() { - java.lang.Object ref = name_; + getAttrNameBytes() { + java.lang.Object ref = attrName_; if (ref instanceof java.lang.String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); - name_ = b; + attrName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int ATTR_VALUE_FIELD_NUMBER = 2; + private volatile java.lang.Object attrValue_; + /** + * string attr_value = 2; + * @return The attrValue. + */ + @java.lang.Override + public java.lang.String getAttrValue() { + java.lang.Object ref = attrValue_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + attrValue_ = s; + return s; + } + } + /** + * string attr_value = 2; + * @return The bytes for attrValue. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getAttrValueBytes() { + java.lang.Object ref = attrValue_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + attrValue_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; @@ -22437,8 +22724,11 @@ public final boolean isInitialized() { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_); + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(attrName_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, attrName_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(attrValue_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, attrValue_); } unknownFields.writeTo(output); } @@ -22449,8 +22739,11 @@ public int getSerializedSize() { if (size != -1) return size; size = 0; - if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_); + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(attrName_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, attrName_); + } + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(attrValue_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, attrValue_); } size += unknownFields.getSerializedSize(); memoizedSize = size; @@ -22462,13 +22755,15 @@ public boolean equals(final java.lang.Object obj) { if (obj == this) { return true; } - if (!(obj instanceof io.greptime.v1.Ddl.DropColumn)) { + if (!(obj instanceof io.greptime.v1.Ddl.ChangeTableAttributes)) { return super.equals(obj); } - io.greptime.v1.Ddl.DropColumn other = (io.greptime.v1.Ddl.DropColumn) obj; + io.greptime.v1.Ddl.ChangeTableAttributes other = (io.greptime.v1.Ddl.ChangeTableAttributes) obj; - if (!getName() - .equals(other.getName())) return false; + if (!getAttrName() + .equals(other.getAttrName())) return false; + if (!getAttrValue() + .equals(other.getAttrValue())) return false; if (!unknownFields.equals(other.unknownFields)) return false; return true; } @@ -22480,76 +22775,78 @@ public int hashCode() { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); - hash = (37 * hash) + NAME_FIELD_NUMBER; - hash = (53 * hash) + getName().hashCode(); + hash = (37 * hash) + ATTR_NAME_FIELD_NUMBER; + hash = (53 * hash) + getAttrName().hashCode(); + hash = (37 * hash) + ATTR_VALUE_FIELD_NUMBER; + hash = (53 * hash) + getAttrValue().hashCode(); hash = (29 * hash) + unknownFields.hashCode(); memoizedHashCode = hash; return hash; } - public static io.greptime.v1.Ddl.DropColumn parseFrom( + public static io.greptime.v1.Ddl.ChangeTableAttributes parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.greptime.v1.Ddl.DropColumn parseFrom( + public static io.greptime.v1.Ddl.ChangeTableAttributes parseFrom( java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.greptime.v1.Ddl.DropColumn parseFrom( + public static io.greptime.v1.Ddl.ChangeTableAttributes parseFrom( com.google.protobuf.ByteString data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.greptime.v1.Ddl.DropColumn parseFrom( + public static io.greptime.v1.Ddl.ChangeTableAttributes parseFrom( com.google.protobuf.ByteString data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.greptime.v1.Ddl.DropColumn parseFrom(byte[] data) + public static io.greptime.v1.Ddl.ChangeTableAttributes parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data); } - public static io.greptime.v1.Ddl.DropColumn parseFrom( + public static io.greptime.v1.Ddl.ChangeTableAttributes parseFrom( byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws com.google.protobuf.InvalidProtocolBufferException { return PARSER.parseFrom(data, extensionRegistry); } - public static io.greptime.v1.Ddl.DropColumn parseFrom(java.io.InputStream input) + public static io.greptime.v1.Ddl.ChangeTableAttributes parseFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } - public static io.greptime.v1.Ddl.DropColumn parseFrom( + public static io.greptime.v1.Ddl.ChangeTableAttributes parseFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input, extensionRegistry); } - public static io.greptime.v1.Ddl.DropColumn parseDelimitedFrom(java.io.InputStream input) + public static io.greptime.v1.Ddl.ChangeTableAttributes parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input); } - public static io.greptime.v1.Ddl.DropColumn parseDelimitedFrom( + public static io.greptime.v1.Ddl.ChangeTableAttributes parseDelimitedFrom( java.io.InputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseDelimitedWithIOException(PARSER, input, extensionRegistry); } - public static io.greptime.v1.Ddl.DropColumn parseFrom( + public static io.greptime.v1.Ddl.ChangeTableAttributes parseFrom( com.google.protobuf.CodedInputStream input) throws java.io.IOException { return com.google.protobuf.GeneratedMessageV3 .parseWithIOException(PARSER, input); } - public static io.greptime.v1.Ddl.DropColumn parseFrom( + public static io.greptime.v1.Ddl.ChangeTableAttributes parseFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { @@ -22562,7 +22859,7 @@ public static io.greptime.v1.Ddl.DropColumn parseFrom( public static Builder newBuilder() { return DEFAULT_INSTANCE.toBuilder(); } - public static Builder newBuilder(io.greptime.v1.Ddl.DropColumn prototype) { + public static Builder newBuilder(io.greptime.v1.Ddl.ChangeTableAttributes prototype) { return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); } @java.lang.Override @@ -22578,26 +22875,26 @@ protected Builder newBuilderForType( return builder; } /** - * Protobuf type {@code greptime.v1.DropColumn} + * Protobuf type {@code greptime.v1.ChangeTableAttributes} */ public static final class Builder extends com.google.protobuf.GeneratedMessageV3.Builder implements - // @@protoc_insertion_point(builder_implements:greptime.v1.DropColumn) - io.greptime.v1.Ddl.DropColumnOrBuilder { + // @@protoc_insertion_point(builder_implements:greptime.v1.ChangeTableAttributes) + io.greptime.v1.Ddl.ChangeTableAttributesOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return io.greptime.v1.Ddl.internal_static_greptime_v1_DropColumn_descriptor; + return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableAttributes_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return io.greptime.v1.Ddl.internal_static_greptime_v1_DropColumn_fieldAccessorTable + return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableAttributes_fieldAccessorTable .ensureFieldAccessorsInitialized( - io.greptime.v1.Ddl.DropColumn.class, io.greptime.v1.Ddl.DropColumn.Builder.class); + io.greptime.v1.Ddl.ChangeTableAttributes.class, io.greptime.v1.Ddl.ChangeTableAttributes.Builder.class); } - // Construct using io.greptime.v1.Ddl.DropColumn.newBuilder() + // Construct using io.greptime.v1.Ddl.ChangeTableAttributes.newBuilder() private Builder() { maybeForceBuilderInitialization(); } @@ -22615,7 +22912,9 @@ private void maybeForceBuilderInitialization() { @java.lang.Override public Builder clear() { super.clear(); - name_ = ""; + attrName_ = ""; + + attrValue_ = ""; return this; } @@ -22623,17 +22922,17 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return io.greptime.v1.Ddl.internal_static_greptime_v1_DropColumn_descriptor; + return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableAttributes_descriptor; } @java.lang.Override - public io.greptime.v1.Ddl.DropColumn getDefaultInstanceForType() { - return io.greptime.v1.Ddl.DropColumn.getDefaultInstance(); + public io.greptime.v1.Ddl.ChangeTableAttributes getDefaultInstanceForType() { + return io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance(); } @java.lang.Override - public io.greptime.v1.Ddl.DropColumn build() { - io.greptime.v1.Ddl.DropColumn result = buildPartial(); + public io.greptime.v1.Ddl.ChangeTableAttributes build() { + io.greptime.v1.Ddl.ChangeTableAttributes result = buildPartial(); if (!result.isInitialized()) { throw newUninitializedMessageException(result); } @@ -22641,9 +22940,10 @@ public io.greptime.v1.Ddl.DropColumn build() { } @java.lang.Override - public io.greptime.v1.Ddl.DropColumn buildPartial() { - io.greptime.v1.Ddl.DropColumn result = new io.greptime.v1.Ddl.DropColumn(this); - result.name_ = name_; + public io.greptime.v1.Ddl.ChangeTableAttributes buildPartial() { + io.greptime.v1.Ddl.ChangeTableAttributes result = new io.greptime.v1.Ddl.ChangeTableAttributes(this); + result.attrName_ = attrName_; + result.attrValue_ = attrValue_; onBuilt(); return result; } @@ -22682,18 +22982,22 @@ public Builder addRepeatedField( } @java.lang.Override public Builder mergeFrom(com.google.protobuf.Message other) { - if (other instanceof io.greptime.v1.Ddl.DropColumn) { - return mergeFrom((io.greptime.v1.Ddl.DropColumn)other); + if (other instanceof io.greptime.v1.Ddl.ChangeTableAttributes) { + return mergeFrom((io.greptime.v1.Ddl.ChangeTableAttributes)other); } else { super.mergeFrom(other); return this; } } - public Builder mergeFrom(io.greptime.v1.Ddl.DropColumn other) { - if (other == io.greptime.v1.Ddl.DropColumn.getDefaultInstance()) return this; - if (!other.getName().isEmpty()) { - name_ = other.name_; + public Builder mergeFrom(io.greptime.v1.Ddl.ChangeTableAttributes other) { + if (other == io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance()) return this; + if (!other.getAttrName().isEmpty()) { + attrName_ = other.attrName_; + onChanged(); + } + if (!other.getAttrValue().isEmpty()) { + attrValue_ = other.attrValue_; onChanged(); } this.mergeUnknownFields(other.unknownFields); @@ -22711,11 +23015,11 @@ public Builder mergeFrom( com.google.protobuf.CodedInputStream input, com.google.protobuf.ExtensionRegistryLite extensionRegistry) throws java.io.IOException { - io.greptime.v1.Ddl.DropColumn parsedMessage = null; + io.greptime.v1.Ddl.ChangeTableAttributes parsedMessage = null; try { parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); } catch (com.google.protobuf.InvalidProtocolBufferException e) { - parsedMessage = (io.greptime.v1.Ddl.DropColumn) e.getUnfinishedMessage(); + parsedMessage = (io.greptime.v1.Ddl.ChangeTableAttributes) e.getUnfinishedMessage(); throw e.unwrapIOException(); } finally { if (parsedMessage != null) { @@ -22725,35 +23029,681 @@ public Builder mergeFrom( return this; } - private java.lang.Object name_ = ""; + private java.lang.Object attrName_ = ""; /** - * string name = 1; - * @return The name. + * string attr_name = 1; + * @return The attrName. */ - public java.lang.String getName() { - java.lang.Object ref = name_; + public java.lang.String getAttrName() { + java.lang.Object ref = attrName_; if (!(ref instanceof java.lang.String)) { com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref; java.lang.String s = bs.toStringUtf8(); - name_ = s; + attrName_ = s; return s; } else { return (java.lang.String) ref; } } /** - * string name = 1; - * @return The bytes for name. + * string attr_name = 1; + * @return The bytes for attrName. */ public com.google.protobuf.ByteString - getNameBytes() { - java.lang.Object ref = name_; + getAttrNameBytes() { + java.lang.Object ref = attrName_; if (ref instanceof String) { com.google.protobuf.ByteString b = com.google.protobuf.ByteString.copyFromUtf8( (java.lang.String) ref); - name_ = b; + attrName_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string attr_name = 1; + * @param value The attrName to set. + * @return This builder for chaining. + */ + public Builder setAttrName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + attrName_ = value; + onChanged(); + return this; + } + /** + * string attr_name = 1; + * @return This builder for chaining. + */ + public Builder clearAttrName() { + + attrName_ = getDefaultInstance().getAttrName(); + onChanged(); + return this; + } + /** + * string attr_name = 1; + * @param value The bytes for attrName to set. + * @return This builder for chaining. + */ + public Builder setAttrNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + attrName_ = value; + onChanged(); + return this; + } + + private java.lang.Object attrValue_ = ""; + /** + * string attr_value = 2; + * @return The attrValue. + */ + public java.lang.String getAttrValue() { + java.lang.Object ref = attrValue_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + attrValue_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string attr_value = 2; + * @return The bytes for attrValue. + */ + public com.google.protobuf.ByteString + getAttrValueBytes() { + java.lang.Object ref = attrValue_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + attrValue_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string attr_value = 2; + * @param value The attrValue to set. + * @return This builder for chaining. + */ + public Builder setAttrValue( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + attrValue_ = value; + onChanged(); + return this; + } + /** + * string attr_value = 2; + * @return This builder for chaining. + */ + public Builder clearAttrValue() { + + attrValue_ = getDefaultInstance().getAttrValue(); + onChanged(); + return this; + } + /** + * string attr_value = 2; + * @param value The bytes for attrValue to set. + * @return This builder for chaining. + */ + public Builder setAttrValueBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + attrValue_ = value; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:greptime.v1.ChangeTableAttributes) + } + + // @@protoc_insertion_point(class_scope:greptime.v1.ChangeTableAttributes) + private static final io.greptime.v1.Ddl.ChangeTableAttributes DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new io.greptime.v1.Ddl.ChangeTableAttributes(); + } + + public static io.greptime.v1.Ddl.ChangeTableAttributes getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public ChangeTableAttributes parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ChangeTableAttributes(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public io.greptime.v1.Ddl.ChangeTableAttributes getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + public interface DropColumnOrBuilder extends + // @@protoc_insertion_point(interface_extends:greptime.v1.DropColumn) + com.google.protobuf.MessageOrBuilder { + + /** + * string name = 1; + * @return The name. + */ + java.lang.String getName(); + /** + * string name = 1; + * @return The bytes for name. + */ + com.google.protobuf.ByteString + getNameBytes(); + } + /** + * Protobuf type {@code greptime.v1.DropColumn} + */ + public static final class DropColumn extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:greptime.v1.DropColumn) + DropColumnOrBuilder { + private static final long serialVersionUID = 0L; + // Use DropColumn.newBuilder() to construct. + private DropColumn(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private DropColumn() { + name_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new DropColumn(); + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private DropColumn( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + com.google.protobuf.UnknownFieldSet.Builder unknownFields = + com.google.protobuf.UnknownFieldSet.newBuilder(); + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + java.lang.String s = input.readStringRequireUtf8(); + + name_ = s; + break; + } + default: { + if (!parseUnknownField( + input, unknownFields, extensionRegistry, tag)) { + done = true; + } + break; + } + } + } + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(this); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException( + e).setUnfinishedMessage(this); + } finally { + this.unknownFields = unknownFields.build(); + makeExtensionsImmutable(); + } + } + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return io.greptime.v1.Ddl.internal_static_greptime_v1_DropColumn_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return io.greptime.v1.Ddl.internal_static_greptime_v1_DropColumn_fieldAccessorTable + .ensureFieldAccessorsInitialized( + io.greptime.v1.Ddl.DropColumn.class, io.greptime.v1.Ddl.DropColumn.Builder.class); + } + + public static final int NAME_FIELD_NUMBER = 1; + private volatile java.lang.Object name_; + /** + * string name = 1; + * @return The name. + */ + @java.lang.Override + public java.lang.String getName() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } + } + /** + * string name = 1; + * @return The bytes for name. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_); + } + unknownFields.writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_); + } + size += unknownFields.getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof io.greptime.v1.Ddl.DropColumn)) { + return super.equals(obj); + } + io.greptime.v1.Ddl.DropColumn other = (io.greptime.v1.Ddl.DropColumn) obj; + + if (!getName() + .equals(other.getName())) return false; + if (!unknownFields.equals(other.unknownFields)) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + NAME_FIELD_NUMBER; + hash = (53 * hash) + getName().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static io.greptime.v1.Ddl.DropColumn parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static io.greptime.v1.Ddl.DropColumn parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static io.greptime.v1.Ddl.DropColumn parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static io.greptime.v1.Ddl.DropColumn parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static io.greptime.v1.Ddl.DropColumn parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static io.greptime.v1.Ddl.DropColumn parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static io.greptime.v1.Ddl.DropColumn parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static io.greptime.v1.Ddl.DropColumn parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + public static io.greptime.v1.Ddl.DropColumn parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static io.greptime.v1.Ddl.DropColumn parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static io.greptime.v1.Ddl.DropColumn parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static io.greptime.v1.Ddl.DropColumn parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(io.greptime.v1.Ddl.DropColumn prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code greptime.v1.DropColumn} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:greptime.v1.DropColumn) + io.greptime.v1.Ddl.DropColumnOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return io.greptime.v1.Ddl.internal_static_greptime_v1_DropColumn_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return io.greptime.v1.Ddl.internal_static_greptime_v1_DropColumn_fieldAccessorTable + .ensureFieldAccessorsInitialized( + io.greptime.v1.Ddl.DropColumn.class, io.greptime.v1.Ddl.DropColumn.Builder.class); + } + + // Construct using io.greptime.v1.Ddl.DropColumn.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + name_ = ""; + + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return io.greptime.v1.Ddl.internal_static_greptime_v1_DropColumn_descriptor; + } + + @java.lang.Override + public io.greptime.v1.Ddl.DropColumn getDefaultInstanceForType() { + return io.greptime.v1.Ddl.DropColumn.getDefaultInstance(); + } + + @java.lang.Override + public io.greptime.v1.Ddl.DropColumn build() { + io.greptime.v1.Ddl.DropColumn result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public io.greptime.v1.Ddl.DropColumn buildPartial() { + io.greptime.v1.Ddl.DropColumn result = new io.greptime.v1.Ddl.DropColumn(this); + result.name_ = name_; + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof io.greptime.v1.Ddl.DropColumn) { + return mergeFrom((io.greptime.v1.Ddl.DropColumn)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(io.greptime.v1.Ddl.DropColumn other) { + if (other == io.greptime.v1.Ddl.DropColumn.getDefaultInstance()) return this; + if (!other.getName().isEmpty()) { + name_ = other.name_; + onChanged(); + } + this.mergeUnknownFields(other.unknownFields); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + io.greptime.v1.Ddl.DropColumn parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (io.greptime.v1.Ddl.DropColumn) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object name_ = ""; + /** + * string name = 1; + * @return The name. + */ + public java.lang.String getName() { + java.lang.Object ref = name_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + name_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string name = 1; + * @return The bytes for name. + */ + public com.google.protobuf.ByteString + getNameBytes() { + java.lang.Object ref = name_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + name_ = b; return b; } else { return (com.google.protobuf.ByteString) ref; @@ -26323,6 +27273,11 @@ public io.greptime.v1.Ddl.AddColumnLocation getDefaultInstanceForType() { private static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_greptime_v1_ChangeColumnType_fieldAccessorTable; + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_greptime_v1_ChangeTableAttributes_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_greptime_v1_ChangeTableAttributes_fieldAccessorTable; private static final com.google.protobuf.Descriptors.Descriptor internal_static_greptime_v1_DropColumn_descriptor; private static final @@ -26403,57 +27358,60 @@ public io.greptime.v1.Ddl.AddColumnLocation getDefaultInstanceForType() { "ime.v1.CreateTableExpr.TableOptionsEntry" + "\022&\n\010table_id\030\n \001(\0132\024.greptime.v1.TableId" + "\022\016\n\006engine\030\014 \001(\t\0323\n\021TableOptionsEntry\022\013\n" + - "\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\245\002\n\tAlterE" + + "\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\353\002\n\tAlterE" + "xpr\022\024\n\014catalog_name\030\001 \001(\t\022\023\n\013schema_name" + "\030\002 \001(\t\022\022\n\ntable_name\030\003 \001(\t\022.\n\013add_column" + "s\030\004 \001(\0132\027.greptime.v1.AddColumnsH\000\0220\n\014dr" + "op_columns\030\005 \001(\0132\030.greptime.v1.DropColum" + "nsH\000\0220\n\014rename_table\030\006 \001(\0132\030.greptime.v1" + ".RenameTableH\000\022=\n\023change_column_types\030\007 " + - "\001(\0132\036.greptime.v1.ChangeColumnTypesH\000B\006\n" + - "\004kind\"\216\001\n\rDropTableExpr\022\024\n\014catalog_name\030" + - "\001 \001(\t\022\023\n\013schema_name\030\002 \001(\t\022\022\n\ntable_name" + - "\030\003 \001(\t\022&\n\010table_id\030\004 \001(\0132\024.greptime.v1.T" + - "ableId\022\026\n\016drop_if_exists\030\005 \001(\010\"\314\001\n\022Creat" + - "eDatabaseExpr\022\024\n\014catalog_name\030\001 \001(\t\022\023\n\013s" + - "chema_name\030\002 \001(\t\022\034\n\024create_if_not_exists" + - "\030\003 \001(\010\022=\n\007options\030\004 \003(\0132,.greptime.v1.Cr" + - "eateDatabaseExpr.OptionsEntry\032.\n\014Options" + - "Entry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"z\n" + - "\021TruncateTableExpr\022\024\n\014catalog_name\030\001 \001(\t" + - "\022\023\n\013schema_name\030\002 \001(\t\022\022\n\ntable_name\030\003 \001(" + - "\t\022&\n\010table_id\030\004 \001(\0132\024.greptime.v1.TableI" + - "d\"U\n\020DropDatabaseExpr\022\024\n\014catalog_name\030\001 " + - "\001(\t\022\023\n\013schema_name\030\002 \001(\t\022\026\n\016drop_if_exis" + - "ts\030\003 \001(\010\"9\n\nAddColumns\022+\n\013add_columns\030\001 " + - "\003(\0132\026.greptime.v1.AddColumn\"<\n\013DropColum" + - "ns\022-\n\014drop_columns\030\001 \003(\0132\027.greptime.v1.D" + - "ropColumn\"O\n\021ChangeColumnTypes\022:\n\023change" + - "_column_types\030\001 \003(\0132\035.greptime.v1.Change" + - "ColumnType\"%\n\013RenameTable\022\026\n\016new_table_n" + - "ame\030\001 \001(\t\"i\n\tAddColumn\022*\n\ncolumn_def\030\001 \001" + - "(\0132\026.greptime.v1.ColumnDef\0220\n\010location\030\003" + - " \001(\0132\036.greptime.v1.AddColumnLocation\"\236\001\n" + - "\020ChangeColumnType\022\023\n\013column_name\030\001 \001(\t\0220" + - "\n\013target_type\030\002 \001(\0162\033.greptime.v1.Column" + - "DataType\022C\n\025target_type_extension\030\003 \001(\0132" + - "$.greptime.v1.ColumnDataTypeExtension\"\032\n" + - "\nDropColumn\022\014\n\004name\030\001 \001(\t\"\025\n\007TableId\022\n\n\002" + - "id\030\001 \001(\r\"\024\n\006FlowId\022\n\n\002id\030\001 \001(\r\"\254\002\n\tColum" + - "nDef\022\014\n\004name\030\001 \001(\t\022.\n\tdata_type\030\002 \001(\0162\033." + - "greptime.v1.ColumnDataType\022\023\n\013is_nullabl" + - "e\030\003 \001(\010\022\032\n\022default_constraint\030\004 \001(\014\0220\n\rs" + - "emantic_type\030\005 \001(\0162\031.greptime.v1.Semanti" + - "cType\022\017\n\007comment\030\006 \001(\t\022@\n\022datatype_exten" + - "sion\030\007 \001(\0132$.greptime.v1.ColumnDataTypeE" + - "xtension\022+\n\007options\030\010 \001(\0132\032.greptime.v1." + - "ColumnOptions\"\230\001\n\021AddColumnLocation\022B\n\rl" + - "ocation_type\030\001 \001(\0162+.greptime.v1.AddColu" + - "mnLocation.LocationType\022\031\n\021after_column_" + - "name\030\002 \001(\t\"$\n\014LocationType\022\t\n\005FIRST\020\000\022\t\n" + - "\005AFTER\020\001BL\n\016io.greptime.v1B\003DdlZ5github." + - "com/GreptimeTeam/greptime-proto/go/grept" + - "ime/v1b\006proto3" + "\001(\0132\036.greptime.v1.ChangeColumnTypesH\000\022D\n" + + "\026change_tableAttributes\030\010 \001(\0132\".greptime" + + ".v1.ChangeTableAttributesH\000B\006\n\004kind\"\216\001\n\r" + + "DropTableExpr\022\024\n\014catalog_name\030\001 \001(\t\022\023\n\013s" + + "chema_name\030\002 \001(\t\022\022\n\ntable_name\030\003 \001(\t\022&\n\010" + + "table_id\030\004 \001(\0132\024.greptime.v1.TableId\022\026\n\016" + + "drop_if_exists\030\005 \001(\010\"\314\001\n\022CreateDatabaseE" + + "xpr\022\024\n\014catalog_name\030\001 \001(\t\022\023\n\013schema_name" + + "\030\002 \001(\t\022\034\n\024create_if_not_exists\030\003 \001(\010\022=\n\007" + + "options\030\004 \003(\0132,.greptime.v1.CreateDataba" + + "seExpr.OptionsEntry\032.\n\014OptionsEntry\022\013\n\003k" + + "ey\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"z\n\021TruncateT" + + "ableExpr\022\024\n\014catalog_name\030\001 \001(\t\022\023\n\013schema" + + "_name\030\002 \001(\t\022\022\n\ntable_name\030\003 \001(\t\022&\n\010table" + + "_id\030\004 \001(\0132\024.greptime.v1.TableId\"U\n\020DropD" + + "atabaseExpr\022\024\n\014catalog_name\030\001 \001(\t\022\023\n\013sch" + + "ema_name\030\002 \001(\t\022\026\n\016drop_if_exists\030\003 \001(\010\"9" + + "\n\nAddColumns\022+\n\013add_columns\030\001 \003(\0132\026.grep" + + "time.v1.AddColumn\"<\n\013DropColumns\022-\n\014drop" + + "_columns\030\001 \003(\0132\027.greptime.v1.DropColumn\"" + + "O\n\021ChangeColumnTypes\022:\n\023change_column_ty" + + "pes\030\001 \003(\0132\035.greptime.v1.ChangeColumnType" + + "\"%\n\013RenameTable\022\026\n\016new_table_name\030\001 \001(\t\"" + + "i\n\tAddColumn\022*\n\ncolumn_def\030\001 \001(\0132\026.grept" + + "ime.v1.ColumnDef\0220\n\010location\030\003 \001(\0132\036.gre" + + "ptime.v1.AddColumnLocation\"\236\001\n\020ChangeCol" + + "umnType\022\023\n\013column_name\030\001 \001(\t\0220\n\013target_t" + + "ype\030\002 \001(\0162\033.greptime.v1.ColumnDataType\022C" + + "\n\025target_type_extension\030\003 \001(\0132$.greptime" + + ".v1.ColumnDataTypeExtension\">\n\025ChangeTab" + + "leAttributes\022\021\n\tattr_name\030\001 \001(\t\022\022\n\nattr_" + + "value\030\002 \001(\t\"\032\n\nDropColumn\022\014\n\004name\030\001 \001(\t\"" + + "\025\n\007TableId\022\n\n\002id\030\001 \001(\r\"\024\n\006FlowId\022\n\n\002id\030\001" + + " \001(\r\"\254\002\n\tColumnDef\022\014\n\004name\030\001 \001(\t\022.\n\tdata" + + "_type\030\002 \001(\0162\033.greptime.v1.ColumnDataType" + + "\022\023\n\013is_nullable\030\003 \001(\010\022\032\n\022default_constra" + + "int\030\004 \001(\014\0220\n\rsemantic_type\030\005 \001(\0162\031.grept" + + "ime.v1.SemanticType\022\017\n\007comment\030\006 \001(\t\022@\n\022" + + "datatype_extension\030\007 \001(\0132$.greptime.v1.C" + + "olumnDataTypeExtension\022+\n\007options\030\010 \001(\0132" + + "\032.greptime.v1.ColumnOptions\"\230\001\n\021AddColum" + + "nLocation\022B\n\rlocation_type\030\001 \001(\0162+.grept" + + "ime.v1.AddColumnLocation.LocationType\022\031\n" + + "\021after_column_name\030\002 \001(\t\"$\n\014LocationType" + + "\022\t\n\005FIRST\020\000\022\t\n\005AFTER\020\001BL\n\016io.greptime.v1" + + "B\003DdlZ5github.com/GreptimeTeam/greptime-" + + "proto/go/greptime/v1b\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, @@ -26513,7 +27471,7 @@ public io.greptime.v1.Ddl.AddColumnLocation getDefaultInstanceForType() { internal_static_greptime_v1_AlterExpr_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_greptime_v1_AlterExpr_descriptor, - new java.lang.String[] { "CatalogName", "SchemaName", "TableName", "AddColumns", "DropColumns", "RenameTable", "ChangeColumnTypes", "Kind", }); + new java.lang.String[] { "CatalogName", "SchemaName", "TableName", "AddColumns", "DropColumns", "RenameTable", "ChangeColumnTypes", "ChangeTableAttributes", "Kind", }); internal_static_greptime_v1_DropTableExpr_descriptor = getDescriptor().getMessageTypes().get(7); internal_static_greptime_v1_DropTableExpr_fieldAccessorTable = new @@ -26580,32 +27538,38 @@ public io.greptime.v1.Ddl.AddColumnLocation getDefaultInstanceForType() { com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_greptime_v1_ChangeColumnType_descriptor, new java.lang.String[] { "ColumnName", "TargetType", "TargetTypeExtension", }); - internal_static_greptime_v1_DropColumn_descriptor = + internal_static_greptime_v1_ChangeTableAttributes_descriptor = getDescriptor().getMessageTypes().get(17); + internal_static_greptime_v1_ChangeTableAttributes_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_greptime_v1_ChangeTableAttributes_descriptor, + new java.lang.String[] { "AttrName", "AttrValue", }); + internal_static_greptime_v1_DropColumn_descriptor = + getDescriptor().getMessageTypes().get(18); internal_static_greptime_v1_DropColumn_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_greptime_v1_DropColumn_descriptor, new java.lang.String[] { "Name", }); internal_static_greptime_v1_TableId_descriptor = - getDescriptor().getMessageTypes().get(18); + getDescriptor().getMessageTypes().get(19); internal_static_greptime_v1_TableId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_greptime_v1_TableId_descriptor, new java.lang.String[] { "Id", }); internal_static_greptime_v1_FlowId_descriptor = - getDescriptor().getMessageTypes().get(19); + getDescriptor().getMessageTypes().get(20); internal_static_greptime_v1_FlowId_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_greptime_v1_FlowId_descriptor, new java.lang.String[] { "Id", }); internal_static_greptime_v1_ColumnDef_descriptor = - getDescriptor().getMessageTypes().get(20); + getDescriptor().getMessageTypes().get(21); internal_static_greptime_v1_ColumnDef_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_greptime_v1_ColumnDef_descriptor, new java.lang.String[] { "Name", "DataType", "IsNullable", "DefaultConstraint", "SemanticType", "Comment", "DatatypeExtension", "Options", }); internal_static_greptime_v1_AddColumnLocation_descriptor = - getDescriptor().getMessageTypes().get(21); + getDescriptor().getMessageTypes().get(22); internal_static_greptime_v1_AddColumnLocation_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_greptime_v1_AddColumnLocation_descriptor, diff --git a/proto/greptime/v1/ddl.proto b/proto/greptime/v1/ddl.proto index 989bf668..94e7317b 100644 --- a/proto/greptime/v1/ddl.proto +++ b/proto/greptime/v1/ddl.proto @@ -109,6 +109,7 @@ message AlterExpr { DropColumns drop_columns = 5; RenameTable rename_table = 6; ChangeColumnTypes change_column_types = 7; + ChangeTableAttributes change_tableAttributes = 8; } } @@ -159,6 +160,11 @@ message ChangeColumnType { ColumnDataTypeExtension target_type_extension = 3; } +message ChangeTableAttributes { + string attr_name = 1; + string attr_value = 2; +} + message DropColumn { string name = 1; } message TableId { uint32 id = 1; } From 5713980f755fdf2b26a7bd073f77b6b1454ad626 Mon Sep 17 00:00:00 2001 From: "Lei, HUANG" Date: Wed, 16 Oct 2024 22:46:48 -0700 Subject: [PATCH 2/4] feat/add-modify-table-attr-expr: Added ChangeTableAttributes to AlterRequest in server.proto - Introduced ChangeTableAttributes message handling in AlterRequest. - Updated server.pb.cc and server.pb.h to include logic for new ChangeTableAttributes. - Altered Java Server class to support ChangeTableAttributes. - Incremented descriptor sizes and adjusted field offsets in server.pb.cc. --- c++/greptime/v1/region/server.pb.cc | 138 ++++++--- c++/greptime/v1/region/server.pb.h | 88 ++++++ .../java/io/greptime/v1/region/Server.java | 280 ++++++++++++++++-- proto/greptime/v1/region/server.proto | 1 + 4 files changed, 449 insertions(+), 58 deletions(-) diff --git a/c++/greptime/v1/region/server.pb.cc b/c++/greptime/v1/region/server.pb.cc index 14a8ba56..39f473b5 100644 --- a/c++/greptime/v1/region/server.pb.cc +++ b/c++/greptime/v1/region/server.pb.cc @@ -622,6 +622,7 @@ const uint32_t TableStruct_greptime_2fv1_2fregion_2fserver_2eproto::offsets[] PR ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, ::_pbi::kInvalidFieldOffsetTag, + ::_pbi::kInvalidFieldOffsetTag, PROTOBUF_FIELD_OFFSET(::greptime::v1::region::AlterRequest, _impl_.schema_version_), PROTOBUF_FIELD_OFFSET(::greptime::v1::region::AlterRequest, _impl_.kind_), ~0u, // no _has_bits_ @@ -720,16 +721,16 @@ static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protode { 161, -1, -1, sizeof(::greptime::v1::region::CloseRequest)}, { 168, -1, -1, sizeof(::greptime::v1::region::AlterRequests)}, { 175, -1, -1, sizeof(::greptime::v1::region::AlterRequest)}, - { 187, -1, -1, sizeof(::greptime::v1::region::AddColumns)}, - { 194, -1, -1, sizeof(::greptime::v1::region::DropColumns)}, - { 201, -1, -1, sizeof(::greptime::v1::region::AddColumn)}, - { 209, -1, -1, sizeof(::greptime::v1::region::DropColumn)}, - { 216, -1, -1, sizeof(::greptime::v1::region::FlushRequest)}, - { 223, -1, -1, sizeof(::greptime::v1::region::Regular)}, - { 229, -1, -1, sizeof(::greptime::v1::region::StrictWindow)}, - { 236, -1, -1, sizeof(::greptime::v1::region::CompactRequest)}, - { 246, -1, -1, sizeof(::greptime::v1::region::TruncateRequest)}, - { 253, -1, -1, sizeof(::greptime::v1::region::RegionColumnDef)}, + { 188, -1, -1, sizeof(::greptime::v1::region::AddColumns)}, + { 195, -1, -1, sizeof(::greptime::v1::region::DropColumns)}, + { 202, -1, -1, sizeof(::greptime::v1::region::AddColumn)}, + { 210, -1, -1, sizeof(::greptime::v1::region::DropColumn)}, + { 217, -1, -1, sizeof(::greptime::v1::region::FlushRequest)}, + { 224, -1, -1, sizeof(::greptime::v1::region::Regular)}, + { 230, -1, -1, sizeof(::greptime::v1::region::StrictWindow)}, + { 237, -1, -1, sizeof(::greptime::v1::region::CompactRequest)}, + { 247, -1, -1, sizeof(::greptime::v1::region::TruncateRequest)}, + { 254, -1, -1, sizeof(::greptime::v1::region::RegionColumnDef)}, }; static const ::_pb::Message* const file_default_instances[] = { @@ -826,34 +827,36 @@ const char descriptor_table_protodef_greptime_2fv1_2fregion_2fserver_2eproto[] P ".\n\014OptionsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 " "\001(\t:\0028\001\"!\n\014CloseRequest\022\021\n\tregion_id\030\001 \001" "(\004\"C\n\rAlterRequests\0222\n\010requests\030\001 \003(\0132 ." - "greptime.v1.region.AlterRequest\"\360\001\n\014Alte" + "greptime.v1.region.AlterRequest\"\267\002\n\014Alte" "rRequest\022\021\n\tregion_id\030\001 \001(\004\0225\n\013add_colum" "ns\030\002 \001(\0132\036.greptime.v1.region.AddColumns" "H\000\0227\n\014drop_columns\030\003 \001(\0132\037.greptime.v1.r" "egion.DropColumnsH\000\022=\n\023change_column_typ" "es\030\005 \001(\0132\036.greptime.v1.ChangeColumnTypes" - "H\000\022\026\n\016schema_version\030\004 \001(\004B\006\n\004kind\"@\n\nAd" - "dColumns\0222\n\013add_columns\030\001 \003(\0132\035.greptime" - ".v1.region.AddColumn\"C\n\013DropColumns\0224\n\014d" - "rop_columns\030\001 \003(\0132\036.greptime.v1.region.D" - "ropColumn\"v\n\tAddColumn\0227\n\ncolumn_def\030\001 \001" - "(\0132#.greptime.v1.region.RegionColumnDef\022" - "0\n\010location\030\003 \001(\0132\036.greptime.v1.AddColum" - "nLocation\"\032\n\nDropColumn\022\014\n\004name\030\001 \001(\t\"!\n" - "\014FlushRequest\022\021\n\tregion_id\030\001 \001(\004\"\t\n\007Regu" - "lar\"&\n\014StrictWindow\022\026\n\016window_seconds\030\001 " - "\001(\003\"\231\001\n\016CompactRequest\022\021\n\tregion_id\030\001 \001(" - "\004\022.\n\007regular\030\002 \001(\0132\033.greptime.v1.region." - "RegularH\000\0229\n\rstrict_window\030\003 \001(\0132 .grept" - "ime.v1.region.StrictWindowH\000B\t\n\007options\"" - "$\n\017TruncateRequest\022\021\n\tregion_id\030\001 \001(\004\"P\n" - "\017RegionColumnDef\022*\n\ncolumn_def\030\001 \001(\0132\026.g" - "reptime.v1.ColumnDef\022\021\n\tcolumn_id\030\002 \001(\r2" - "Y\n\006Region\022O\n\006Handle\022!.greptime.v1.region" - ".RegionRequest\032\".greptime.v1.region.Regi" - "onResponseB]\n\025io.greptime.v1.regionB\006Ser" - "verZ_impl_.kind_.change_column_types_; } +const ::greptime::v1::ChangeTableAttributes& +AlterRequest::_Internal::change_table_attributes(const AlterRequest* msg) { + return *msg->_impl_.kind_.change_table_attributes_; +} void AlterRequest::set_allocated_add_columns(::greptime::v1::region::AddColumns* add_columns) { ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); clear_kind(); @@ -5392,6 +5400,30 @@ void AlterRequest::clear_change_column_types() { clear_has_kind(); } } +void AlterRequest::set_allocated_change_table_attributes(::greptime::v1::ChangeTableAttributes* change_table_attributes) { + ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation(); + clear_kind(); + if (change_table_attributes) { + ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena = + ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena( + reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(change_table_attributes)); + if (message_arena != submessage_arena) { + change_table_attributes = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage( + message_arena, change_table_attributes, submessage_arena); + } + set_has_change_table_attributes(); + _impl_.kind_.change_table_attributes_ = change_table_attributes; + } + // @@protoc_insertion_point(field_set_allocated:greptime.v1.region.AlterRequest.change_table_attributes) +} +void AlterRequest::clear_change_table_attributes() { + if (_internal_has_change_table_attributes()) { + if (GetArenaForAllocation() == nullptr) { + delete _impl_.kind_.change_table_attributes_; + } + clear_has_kind(); + } +} AlterRequest::AlterRequest(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned) : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) { @@ -5429,6 +5461,11 @@ AlterRequest::AlterRequest(const AlterRequest& from) from._internal_change_column_types()); break; } + case kChangeTableAttributes: { + _this->_internal_mutable_change_table_attributes()->::greptime::v1::ChangeTableAttributes::MergeFrom( + from._internal_change_table_attributes()); + break; + } case KIND_NOT_SET: { break; } @@ -5491,6 +5528,12 @@ void AlterRequest::clear_kind() { } break; } + case kChangeTableAttributes: { + if (GetArenaForAllocation() == nullptr) { + delete _impl_.kind_.change_table_attributes_; + } + break; + } case KIND_NOT_SET: { break; } @@ -5558,6 +5601,14 @@ const char* AlterRequest::_InternalParse(const char* ptr, ::_pbi::ParseContext* } else goto handle_unusual; continue; + // .greptime.v1.ChangeTableAttributes change_table_attributes = 6; + case 6: + if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 50)) { + ptr = ctx->ParseMessage(_internal_mutable_change_table_attributes(), ptr); + CHK_(ptr); + } else + goto handle_unusual; + continue; default: goto handle_unusual; } // switch @@ -5620,6 +5671,13 @@ uint8_t* AlterRequest::_InternalSerialize( _Internal::change_column_types(this).GetCachedSize(), target, stream); } + // .greptime.v1.ChangeTableAttributes change_table_attributes = 6; + if (_internal_has_change_table_attributes()) { + target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite:: + InternalWriteMessage(6, _Internal::change_table_attributes(this), + _Internal::change_table_attributes(this).GetCachedSize(), target, stream); + } + if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) { target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray( _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream); @@ -5668,6 +5726,13 @@ size_t AlterRequest::ByteSizeLong() const { *_impl_.kind_.change_column_types_); break; } + // .greptime.v1.ChangeTableAttributes change_table_attributes = 6; + case kChangeTableAttributes: { + total_size += 1 + + ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize( + *_impl_.kind_.change_table_attributes_); + break; + } case KIND_NOT_SET: { break; } @@ -5712,6 +5777,11 @@ void AlterRequest::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::P from._internal_change_column_types()); break; } + case kChangeTableAttributes: { + _this->_internal_mutable_change_table_attributes()->::greptime::v1::ChangeTableAttributes::MergeFrom( + from._internal_change_table_attributes()); + break; + } case KIND_NOT_SET: { break; } diff --git a/c++/greptime/v1/region/server.pb.h b/c++/greptime/v1/region/server.pb.h index 3a9366a6..300511dc 100644 --- a/c++/greptime/v1/region/server.pb.h +++ b/c++/greptime/v1/region/server.pb.h @@ -3251,6 +3251,7 @@ class AlterRequest final : kAddColumns = 2, kDropColumns = 3, kChangeColumnTypes = 5, + kChangeTableAttributes = 6, KIND_NOT_SET = 0, }; @@ -3337,6 +3338,7 @@ class AlterRequest final : kAddColumnsFieldNumber = 2, kDropColumnsFieldNumber = 3, kChangeColumnTypesFieldNumber = 5, + kChangeTableAttributesFieldNumber = 6, }; // uint64 region_id = 1; void clear_region_id(); @@ -3410,6 +3412,24 @@ class AlterRequest final : ::greptime::v1::ChangeColumnTypes* change_column_types); ::greptime::v1::ChangeColumnTypes* unsafe_arena_release_change_column_types(); + // .greptime.v1.ChangeTableAttributes change_table_attributes = 6; + bool has_change_table_attributes() const; + private: + bool _internal_has_change_table_attributes() const; + public: + void clear_change_table_attributes(); + const ::greptime::v1::ChangeTableAttributes& change_table_attributes() const; + PROTOBUF_NODISCARD ::greptime::v1::ChangeTableAttributes* release_change_table_attributes(); + ::greptime::v1::ChangeTableAttributes* mutable_change_table_attributes(); + void set_allocated_change_table_attributes(::greptime::v1::ChangeTableAttributes* change_table_attributes); + private: + const ::greptime::v1::ChangeTableAttributes& _internal_change_table_attributes() const; + ::greptime::v1::ChangeTableAttributes* _internal_mutable_change_table_attributes(); + public: + void unsafe_arena_set_allocated_change_table_attributes( + ::greptime::v1::ChangeTableAttributes* change_table_attributes); + ::greptime::v1::ChangeTableAttributes* unsafe_arena_release_change_table_attributes(); + void clear_kind(); KindCase kind_case() const; // @@protoc_insertion_point(class_scope:greptime.v1.region.AlterRequest) @@ -3418,6 +3438,7 @@ class AlterRequest final : void set_has_add_columns(); void set_has_drop_columns(); void set_has_change_column_types(); + void set_has_change_table_attributes(); inline bool has_kind() const; inline void clear_has_kind(); @@ -3434,6 +3455,7 @@ class AlterRequest final : ::greptime::v1::region::AddColumns* add_columns_; ::greptime::v1::region::DropColumns* drop_columns_; ::greptime::v1::ChangeColumnTypes* change_column_types_; + ::greptime::v1::ChangeTableAttributes* change_table_attributes_; } kind_; mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_; uint32_t _oneof_case_[1]; @@ -7690,6 +7712,72 @@ inline ::greptime::v1::ChangeColumnTypes* AlterRequest::mutable_change_column_ty return _msg; } +// .greptime.v1.ChangeTableAttributes change_table_attributes = 6; +inline bool AlterRequest::_internal_has_change_table_attributes() const { + return kind_case() == kChangeTableAttributes; +} +inline bool AlterRequest::has_change_table_attributes() const { + return _internal_has_change_table_attributes(); +} +inline void AlterRequest::set_has_change_table_attributes() { + _impl_._oneof_case_[0] = kChangeTableAttributes; +} +inline ::greptime::v1::ChangeTableAttributes* AlterRequest::release_change_table_attributes() { + // @@protoc_insertion_point(field_release:greptime.v1.region.AlterRequest.change_table_attributes) + if (_internal_has_change_table_attributes()) { + clear_has_kind(); + ::greptime::v1::ChangeTableAttributes* temp = _impl_.kind_.change_table_attributes_; + if (GetArenaForAllocation() != nullptr) { + temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp); + } + _impl_.kind_.change_table_attributes_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline const ::greptime::v1::ChangeTableAttributes& AlterRequest::_internal_change_table_attributes() const { + return _internal_has_change_table_attributes() + ? *_impl_.kind_.change_table_attributes_ + : reinterpret_cast< ::greptime::v1::ChangeTableAttributes&>(::greptime::v1::_ChangeTableAttributes_default_instance_); +} +inline const ::greptime::v1::ChangeTableAttributes& AlterRequest::change_table_attributes() const { + // @@protoc_insertion_point(field_get:greptime.v1.region.AlterRequest.change_table_attributes) + return _internal_change_table_attributes(); +} +inline ::greptime::v1::ChangeTableAttributes* AlterRequest::unsafe_arena_release_change_table_attributes() { + // @@protoc_insertion_point(field_unsafe_arena_release:greptime.v1.region.AlterRequest.change_table_attributes) + if (_internal_has_change_table_attributes()) { + clear_has_kind(); + ::greptime::v1::ChangeTableAttributes* temp = _impl_.kind_.change_table_attributes_; + _impl_.kind_.change_table_attributes_ = nullptr; + return temp; + } else { + return nullptr; + } +} +inline void AlterRequest::unsafe_arena_set_allocated_change_table_attributes(::greptime::v1::ChangeTableAttributes* change_table_attributes) { + clear_kind(); + if (change_table_attributes) { + set_has_change_table_attributes(); + _impl_.kind_.change_table_attributes_ = change_table_attributes; + } + // @@protoc_insertion_point(field_unsafe_arena_set_allocated:greptime.v1.region.AlterRequest.change_table_attributes) +} +inline ::greptime::v1::ChangeTableAttributes* AlterRequest::_internal_mutable_change_table_attributes() { + if (!_internal_has_change_table_attributes()) { + clear_kind(); + set_has_change_table_attributes(); + _impl_.kind_.change_table_attributes_ = CreateMaybeMessage< ::greptime::v1::ChangeTableAttributes >(GetArenaForAllocation()); + } + return _impl_.kind_.change_table_attributes_; +} +inline ::greptime::v1::ChangeTableAttributes* AlterRequest::mutable_change_table_attributes() { + ::greptime::v1::ChangeTableAttributes* _msg = _internal_mutable_change_table_attributes(); + // @@protoc_insertion_point(field_mutable:greptime.v1.region.AlterRequest.change_table_attributes) + return _msg; +} + // uint64 schema_version = 4; inline void AlterRequest::clear_schema_version() { _impl_.schema_version_ = uint64_t{0u}; diff --git a/java/src/main/java/io/greptime/v1/region/Server.java b/java/src/main/java/io/greptime/v1/region/Server.java index 755a4fe1..581107a0 100644 --- a/java/src/main/java/io/greptime/v1/region/Server.java +++ b/java/src/main/java/io/greptime/v1/region/Server.java @@ -16433,6 +16433,21 @@ public interface AlterRequestOrBuilder extends */ io.greptime.v1.Ddl.ChangeColumnTypesOrBuilder getChangeColumnTypesOrBuilder(); + /** + * .greptime.v1.ChangeTableAttributes change_table_attributes = 6; + * @return Whether the changeTableAttributes field is set. + */ + boolean hasChangeTableAttributes(); + /** + * .greptime.v1.ChangeTableAttributes change_table_attributes = 6; + * @return The changeTableAttributes. + */ + io.greptime.v1.Ddl.ChangeTableAttributes getChangeTableAttributes(); + /** + * .greptime.v1.ChangeTableAttributes change_table_attributes = 6; + */ + io.greptime.v1.Ddl.ChangeTableAttributesOrBuilder getChangeTableAttributesOrBuilder(); + /** *
      * The version of the schema before applying the alteration.
@@ -16542,6 +16557,20 @@ private AlterRequest(
               kindCase_ = 5;
               break;
             }
+            case 50: {
+              io.greptime.v1.Ddl.ChangeTableAttributes.Builder subBuilder = null;
+              if (kindCase_ == 6) {
+                subBuilder = ((io.greptime.v1.Ddl.ChangeTableAttributes) kind_).toBuilder();
+              }
+              kind_ =
+                  input.readMessage(io.greptime.v1.Ddl.ChangeTableAttributes.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom((io.greptime.v1.Ddl.ChangeTableAttributes) kind_);
+                kind_ = subBuilder.buildPartial();
+              }
+              kindCase_ = 6;
+              break;
+            }
             default: {
               if (!parseUnknownField(
                   input, unknownFields, extensionRegistry, tag)) {
@@ -16584,6 +16613,7 @@ public enum KindCase
       ADD_COLUMNS(2),
       DROP_COLUMNS(3),
       CHANGE_COLUMN_TYPES(5),
+      CHANGE_TABLE_ATTRIBUTES(6),
       KIND_NOT_SET(0);
       private final int value;
       private KindCase(int value) {
@@ -16604,6 +16634,7 @@ public static KindCase forNumber(int value) {
           case 2: return ADD_COLUMNS;
           case 3: return DROP_COLUMNS;
           case 5: return CHANGE_COLUMN_TYPES;
+          case 6: return CHANGE_TABLE_ATTRIBUTES;
           case 0: return KIND_NOT_SET;
           default: return null;
         }
@@ -16723,6 +16754,37 @@ public io.greptime.v1.Ddl.ChangeColumnTypesOrBuilder getChangeColumnTypesOrBuild
       return io.greptime.v1.Ddl.ChangeColumnTypes.getDefaultInstance();
     }
 
+    public static final int CHANGE_TABLE_ATTRIBUTES_FIELD_NUMBER = 6;
+    /**
+     * .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
+     * @return Whether the changeTableAttributes field is set.
+     */
+    @java.lang.Override
+    public boolean hasChangeTableAttributes() {
+      return kindCase_ == 6;
+    }
+    /**
+     * .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
+     * @return The changeTableAttributes.
+     */
+    @java.lang.Override
+    public io.greptime.v1.Ddl.ChangeTableAttributes getChangeTableAttributes() {
+      if (kindCase_ == 6) {
+         return (io.greptime.v1.Ddl.ChangeTableAttributes) kind_;
+      }
+      return io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance();
+    }
+    /**
+     * .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
+     */
+    @java.lang.Override
+    public io.greptime.v1.Ddl.ChangeTableAttributesOrBuilder getChangeTableAttributesOrBuilder() {
+      if (kindCase_ == 6) {
+         return (io.greptime.v1.Ddl.ChangeTableAttributes) kind_;
+      }
+      return io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance();
+    }
+
     public static final int SCHEMA_VERSION_FIELD_NUMBER = 4;
     private long schemaVersion_;
     /**
@@ -16767,6 +16829,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output)
       if (kindCase_ == 5) {
         output.writeMessage(5, (io.greptime.v1.Ddl.ChangeColumnTypes) kind_);
       }
+      if (kindCase_ == 6) {
+        output.writeMessage(6, (io.greptime.v1.Ddl.ChangeTableAttributes) kind_);
+      }
       unknownFields.writeTo(output);
     }
 
@@ -16796,6 +16861,10 @@ public int getSerializedSize() {
         size += com.google.protobuf.CodedOutputStream
           .computeMessageSize(5, (io.greptime.v1.Ddl.ChangeColumnTypes) kind_);
       }
+      if (kindCase_ == 6) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(6, (io.greptime.v1.Ddl.ChangeTableAttributes) kind_);
+      }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
@@ -16829,6 +16898,10 @@ public boolean equals(final java.lang.Object obj) {
           if (!getChangeColumnTypes()
               .equals(other.getChangeColumnTypes())) return false;
           break;
+        case 6:
+          if (!getChangeTableAttributes()
+              .equals(other.getChangeTableAttributes())) return false;
+          break;
         case 0:
         default:
       }
@@ -16862,6 +16935,10 @@ public int hashCode() {
           hash = (37 * hash) + CHANGE_COLUMN_TYPES_FIELD_NUMBER;
           hash = (53 * hash) + getChangeColumnTypes().hashCode();
           break;
+        case 6:
+          hash = (37 * hash) + CHANGE_TABLE_ATTRIBUTES_FIELD_NUMBER;
+          hash = (53 * hash) + getChangeTableAttributes().hashCode();
+          break;
         case 0:
         default:
       }
@@ -17052,6 +17129,13 @@ public io.greptime.v1.region.Server.AlterRequest buildPartial() {
             result.kind_ = changeColumnTypesBuilder_.build();
           }
         }
+        if (kindCase_ == 6) {
+          if (changeTableAttributesBuilder_ == null) {
+            result.kind_ = kind_;
+          } else {
+            result.kind_ = changeTableAttributesBuilder_.build();
+          }
+        }
         result.schemaVersion_ = schemaVersion_;
         result.kindCase_ = kindCase_;
         onBuilt();
@@ -17121,6 +17205,10 @@ public Builder mergeFrom(io.greptime.v1.region.Server.AlterRequest other) {
             mergeChangeColumnTypes(other.getChangeColumnTypes());
             break;
           }
+          case CHANGE_TABLE_ATTRIBUTES: {
+            mergeChangeTableAttributes(other.getChangeTableAttributes());
+            break;
+          }
           case KIND_NOT_SET: {
             break;
           }
@@ -17626,6 +17714,148 @@ public io.greptime.v1.Ddl.ChangeColumnTypesOrBuilder getChangeColumnTypesOrBuild
         return changeColumnTypesBuilder_;
       }
 
+      private com.google.protobuf.SingleFieldBuilderV3<
+          io.greptime.v1.Ddl.ChangeTableAttributes, io.greptime.v1.Ddl.ChangeTableAttributes.Builder, io.greptime.v1.Ddl.ChangeTableAttributesOrBuilder> changeTableAttributesBuilder_;
+      /**
+       * .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
+       * @return Whether the changeTableAttributes field is set.
+       */
+      @java.lang.Override
+      public boolean hasChangeTableAttributes() {
+        return kindCase_ == 6;
+      }
+      /**
+       * .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
+       * @return The changeTableAttributes.
+       */
+      @java.lang.Override
+      public io.greptime.v1.Ddl.ChangeTableAttributes getChangeTableAttributes() {
+        if (changeTableAttributesBuilder_ == null) {
+          if (kindCase_ == 6) {
+            return (io.greptime.v1.Ddl.ChangeTableAttributes) kind_;
+          }
+          return io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance();
+        } else {
+          if (kindCase_ == 6) {
+            return changeTableAttributesBuilder_.getMessage();
+          }
+          return io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance();
+        }
+      }
+      /**
+       * .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
+       */
+      public Builder setChangeTableAttributes(io.greptime.v1.Ddl.ChangeTableAttributes value) {
+        if (changeTableAttributesBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          kind_ = value;
+          onChanged();
+        } else {
+          changeTableAttributesBuilder_.setMessage(value);
+        }
+        kindCase_ = 6;
+        return this;
+      }
+      /**
+       * .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
+       */
+      public Builder setChangeTableAttributes(
+          io.greptime.v1.Ddl.ChangeTableAttributes.Builder builderForValue) {
+        if (changeTableAttributesBuilder_ == null) {
+          kind_ = builderForValue.build();
+          onChanged();
+        } else {
+          changeTableAttributesBuilder_.setMessage(builderForValue.build());
+        }
+        kindCase_ = 6;
+        return this;
+      }
+      /**
+       * .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
+       */
+      public Builder mergeChangeTableAttributes(io.greptime.v1.Ddl.ChangeTableAttributes value) {
+        if (changeTableAttributesBuilder_ == null) {
+          if (kindCase_ == 6 &&
+              kind_ != io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance()) {
+            kind_ = io.greptime.v1.Ddl.ChangeTableAttributes.newBuilder((io.greptime.v1.Ddl.ChangeTableAttributes) kind_)
+                .mergeFrom(value).buildPartial();
+          } else {
+            kind_ = value;
+          }
+          onChanged();
+        } else {
+          if (kindCase_ == 6) {
+            changeTableAttributesBuilder_.mergeFrom(value);
+          } else {
+            changeTableAttributesBuilder_.setMessage(value);
+          }
+        }
+        kindCase_ = 6;
+        return this;
+      }
+      /**
+       * .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
+       */
+      public Builder clearChangeTableAttributes() {
+        if (changeTableAttributesBuilder_ == null) {
+          if (kindCase_ == 6) {
+            kindCase_ = 0;
+            kind_ = null;
+            onChanged();
+          }
+        } else {
+          if (kindCase_ == 6) {
+            kindCase_ = 0;
+            kind_ = null;
+          }
+          changeTableAttributesBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
+       */
+      public io.greptime.v1.Ddl.ChangeTableAttributes.Builder getChangeTableAttributesBuilder() {
+        return getChangeTableAttributesFieldBuilder().getBuilder();
+      }
+      /**
+       * .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
+       */
+      @java.lang.Override
+      public io.greptime.v1.Ddl.ChangeTableAttributesOrBuilder getChangeTableAttributesOrBuilder() {
+        if ((kindCase_ == 6) && (changeTableAttributesBuilder_ != null)) {
+          return changeTableAttributesBuilder_.getMessageOrBuilder();
+        } else {
+          if (kindCase_ == 6) {
+            return (io.greptime.v1.Ddl.ChangeTableAttributes) kind_;
+          }
+          return io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance();
+        }
+      }
+      /**
+       * .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
+       */
+      private com.google.protobuf.SingleFieldBuilderV3<
+          io.greptime.v1.Ddl.ChangeTableAttributes, io.greptime.v1.Ddl.ChangeTableAttributes.Builder, io.greptime.v1.Ddl.ChangeTableAttributesOrBuilder> 
+          getChangeTableAttributesFieldBuilder() {
+        if (changeTableAttributesBuilder_ == null) {
+          if (!(kindCase_ == 6)) {
+            kind_ = io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance();
+          }
+          changeTableAttributesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              io.greptime.v1.Ddl.ChangeTableAttributes, io.greptime.v1.Ddl.ChangeTableAttributes.Builder, io.greptime.v1.Ddl.ChangeTableAttributesOrBuilder>(
+                  (io.greptime.v1.Ddl.ChangeTableAttributes) kind_,
+                  getParentForChildren(),
+                  isClean());
+          kind_ = null;
+        }
+        kindCase_ = 6;
+        onChanged();;
+        return changeTableAttributesBuilder_;
+      }
+
       private long schemaVersion_ ;
       /**
        * 
@@ -24564,34 +24794,36 @@ public io.greptime.v1.region.Server.RegionColumnDef getDefaultInstanceForType()
       ".\n\014OptionsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 " +
       "\001(\t:\0028\001\"!\n\014CloseRequest\022\021\n\tregion_id\030\001 \001" +
       "(\004\"C\n\rAlterRequests\0222\n\010requests\030\001 \003(\0132 ." +
-      "greptime.v1.region.AlterRequest\"\360\001\n\014Alte" +
+      "greptime.v1.region.AlterRequest\"\267\002\n\014Alte" +
       "rRequest\022\021\n\tregion_id\030\001 \001(\004\0225\n\013add_colum" +
       "ns\030\002 \001(\0132\036.greptime.v1.region.AddColumns" +
       "H\000\0227\n\014drop_columns\030\003 \001(\0132\037.greptime.v1.r" +
       "egion.DropColumnsH\000\022=\n\023change_column_typ" +
       "es\030\005 \001(\0132\036.greptime.v1.ChangeColumnTypes" +
-      "H\000\022\026\n\016schema_version\030\004 \001(\004B\006\n\004kind\"@\n\nAd" +
-      "dColumns\0222\n\013add_columns\030\001 \003(\0132\035.greptime" +
-      ".v1.region.AddColumn\"C\n\013DropColumns\0224\n\014d" +
-      "rop_columns\030\001 \003(\0132\036.greptime.v1.region.D" +
-      "ropColumn\"v\n\tAddColumn\0227\n\ncolumn_def\030\001 \001" +
-      "(\0132#.greptime.v1.region.RegionColumnDef\022" +
-      "0\n\010location\030\003 \001(\0132\036.greptime.v1.AddColum" +
-      "nLocation\"\032\n\nDropColumn\022\014\n\004name\030\001 \001(\t\"!\n" +
-      "\014FlushRequest\022\021\n\tregion_id\030\001 \001(\004\"\t\n\007Regu" +
-      "lar\"&\n\014StrictWindow\022\026\n\016window_seconds\030\001 " +
-      "\001(\003\"\231\001\n\016CompactRequest\022\021\n\tregion_id\030\001 \001(" +
-      "\004\022.\n\007regular\030\002 \001(\0132\033.greptime.v1.region." +
-      "RegularH\000\0229\n\rstrict_window\030\003 \001(\0132 .grept" +
-      "ime.v1.region.StrictWindowH\000B\t\n\007options\"" +
-      "$\n\017TruncateRequest\022\021\n\tregion_id\030\001 \001(\004\"P\n" +
-      "\017RegionColumnDef\022*\n\ncolumn_def\030\001 \001(\0132\026.g" +
-      "reptime.v1.ColumnDef\022\021\n\tcolumn_id\030\002 \001(\r2" +
-      "Y\n\006Region\022O\n\006Handle\022!.greptime.v1.region" +
-      ".RegionRequest\032\".greptime.v1.region.Regi" +
-      "onResponseB]\n\025io.greptime.v1.regionB\006Ser" +
-      "verZ
Date: Thu, 17 Oct 2024 11:28:27 -0700
Subject: [PATCH 3/4] chore: rename

---
 c++/greptime/v1/ddl.pb.cc                     | 346 +++++-----
 c++/greptime/v1/ddl.pb.h                      | 332 +++++-----
 c++/greptime/v1/region/server.pb.cc           | 116 ++--
 c++/greptime/v1/region/server.pb.h            | 108 +--
 go/greptime/v1/ddl.pb.go                      | 334 +++++-----
 java/src/main/java/io/greptime/v1/Ddl.java    | 618 +++++++++---------
 .../java/io/greptime/v1/region/Server.java    | 226 +++----
 proto/greptime/v1/ddl.proto                   |   8 +-
 proto/greptime/v1/region/server.proto         |   2 +-
 9 files changed, 1044 insertions(+), 1046 deletions(-)

diff --git a/c++/greptime/v1/ddl.pb.cc b/c++/greptime/v1/ddl.pb.cc
index 7e9c2398..351d2bb8 100644
--- a/c++/greptime/v1/ddl.pb.cc
+++ b/c++/greptime/v1/ddl.pb.cc
@@ -331,20 +331,20 @@ struct ChangeColumnTypeDefaultTypeInternal {
   };
 };
 PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ChangeColumnTypeDefaultTypeInternal _ChangeColumnType_default_instance_;
-PROTOBUF_CONSTEXPR ChangeTableAttributes::ChangeTableAttributes(
+PROTOBUF_CONSTEXPR ChangeTableOptions::ChangeTableOptions(
     ::_pbi::ConstantInitialized): _impl_{
-    /*decltype(_impl_.attr_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
-  , /*decltype(_impl_.attr_value_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
+    /*decltype(_impl_.key_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
+  , /*decltype(_impl_.value_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
   , /*decltype(_impl_._cached_size_)*/{}} {}
-struct ChangeTableAttributesDefaultTypeInternal {
-  PROTOBUF_CONSTEXPR ChangeTableAttributesDefaultTypeInternal()
+struct ChangeTableOptionsDefaultTypeInternal {
+  PROTOBUF_CONSTEXPR ChangeTableOptionsDefaultTypeInternal()
       : _instance(::_pbi::ConstantInitialized{}) {}
-  ~ChangeTableAttributesDefaultTypeInternal() {}
+  ~ChangeTableOptionsDefaultTypeInternal() {}
   union {
-    ChangeTableAttributes _instance;
+    ChangeTableOptions _instance;
   };
 };
-PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ChangeTableAttributesDefaultTypeInternal _ChangeTableAttributes_default_instance_;
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ChangeTableOptionsDefaultTypeInternal _ChangeTableOptions_default_instance_;
 PROTOBUF_CONSTEXPR DropColumn::DropColumn(
     ::_pbi::ConstantInitialized): _impl_{
     /*decltype(_impl_.name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
@@ -642,13 +642,13 @@ const uint32_t TableStruct_greptime_2fv1_2fddl_2eproto::offsets[] PROTOBUF_SECTI
   PROTOBUF_FIELD_OFFSET(::greptime::v1::ChangeColumnType, _impl_.target_type_),
   PROTOBUF_FIELD_OFFSET(::greptime::v1::ChangeColumnType, _impl_.target_type_extension_),
   ~0u,  // no _has_bits_
-  PROTOBUF_FIELD_OFFSET(::greptime::v1::ChangeTableAttributes, _internal_metadata_),
+  PROTOBUF_FIELD_OFFSET(::greptime::v1::ChangeTableOptions, _internal_metadata_),
   ~0u,  // no _extensions_
   ~0u,  // no _oneof_case_
   ~0u,  // no _weak_field_map_
   ~0u,  // no _inlined_string_donated_
-  PROTOBUF_FIELD_OFFSET(::greptime::v1::ChangeTableAttributes, _impl_.attr_name_),
-  PROTOBUF_FIELD_OFFSET(::greptime::v1::ChangeTableAttributes, _impl_.attr_value_),
+  PROTOBUF_FIELD_OFFSET(::greptime::v1::ChangeTableOptions, _impl_.key_),
+  PROTOBUF_FIELD_OFFSET(::greptime::v1::ChangeTableOptions, _impl_.value_),
   ~0u,  // no _has_bits_
   PROTOBUF_FIELD_OFFSET(::greptime::v1::DropColumn, _internal_metadata_),
   ~0u,  // no _extensions_
@@ -714,7 +714,7 @@ static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protode
   { 192, -1, -1, sizeof(::greptime::v1::RenameTable)},
   { 199, -1, -1, sizeof(::greptime::v1::AddColumn)},
   { 207, -1, -1, sizeof(::greptime::v1::ChangeColumnType)},
-  { 216, -1, -1, sizeof(::greptime::v1::ChangeTableAttributes)},
+  { 216, -1, -1, sizeof(::greptime::v1::ChangeTableOptions)},
   { 224, -1, -1, sizeof(::greptime::v1::DropColumn)},
   { 231, -1, -1, sizeof(::greptime::v1::TableId)},
   { 238, -1, -1, sizeof(::greptime::v1::FlowId)},
@@ -743,7 +743,7 @@ static const ::_pb::Message* const file_default_instances[] = {
   &::greptime::v1::_RenameTable_default_instance_._instance,
   &::greptime::v1::_AddColumn_default_instance_._instance,
   &::greptime::v1::_ChangeColumnType_default_instance_._instance,
-  &::greptime::v1::_ChangeTableAttributes_default_instance_._instance,
+  &::greptime::v1::_ChangeTableOptions_default_instance_._instance,
   &::greptime::v1::_DropColumn_default_instance_._instance,
   &::greptime::v1::_TableId_default_instance_._instance,
   &::greptime::v1::_FlowId_default_instance_._instance,
@@ -798,67 +798,67 @@ const char descriptor_table_protodef_greptime_2fv1_2fddl_2eproto[] PROTOBUF_SECT
   "ime.v1.CreateTableExpr.TableOptionsEntry"
   "\022&\n\010table_id\030\n \001(\0132\024.greptime.v1.TableId"
   "\022\016\n\006engine\030\014 \001(\t\0323\n\021TableOptionsEntry\022\013\n"
-  "\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\353\002\n\tAlterE"
+  "\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\346\002\n\tAlterE"
   "xpr\022\024\n\014catalog_name\030\001 \001(\t\022\023\n\013schema_name"
   "\030\002 \001(\t\022\022\n\ntable_name\030\003 \001(\t\022.\n\013add_column"
   "s\030\004 \001(\0132\027.greptime.v1.AddColumnsH\000\0220\n\014dr"
   "op_columns\030\005 \001(\0132\030.greptime.v1.DropColum"
   "nsH\000\0220\n\014rename_table\030\006 \001(\0132\030.greptime.v1"
   ".RenameTableH\000\022=\n\023change_column_types\030\007 "
-  "\001(\0132\036.greptime.v1.ChangeColumnTypesH\000\022D\n"
-  "\026change_tableAttributes\030\010 \001(\0132\".greptime"
-  ".v1.ChangeTableAttributesH\000B\006\n\004kind\"\216\001\n\r"
-  "DropTableExpr\022\024\n\014catalog_name\030\001 \001(\t\022\023\n\013s"
-  "chema_name\030\002 \001(\t\022\022\n\ntable_name\030\003 \001(\t\022&\n\010"
-  "table_id\030\004 \001(\0132\024.greptime.v1.TableId\022\026\n\016"
-  "drop_if_exists\030\005 \001(\010\"\314\001\n\022CreateDatabaseE"
-  "xpr\022\024\n\014catalog_name\030\001 \001(\t\022\023\n\013schema_name"
-  "\030\002 \001(\t\022\034\n\024create_if_not_exists\030\003 \001(\010\022=\n\007"
-  "options\030\004 \003(\0132,.greptime.v1.CreateDataba"
-  "seExpr.OptionsEntry\032.\n\014OptionsEntry\022\013\n\003k"
-  "ey\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"z\n\021TruncateT"
+  "\001(\0132\036.greptime.v1.ChangeColumnTypesH\000\022\?\n"
+  "\024change_table_options\030\010 \001(\0132\037.greptime.v"
+  "1.ChangeTableOptionsH\000B\006\n\004kind\"\216\001\n\rDropT"
   "ableExpr\022\024\n\014catalog_name\030\001 \001(\t\022\023\n\013schema"
   "_name\030\002 \001(\t\022\022\n\ntable_name\030\003 \001(\t\022&\n\010table"
-  "_id\030\004 \001(\0132\024.greptime.v1.TableId\"U\n\020DropD"
-  "atabaseExpr\022\024\n\014catalog_name\030\001 \001(\t\022\023\n\013sch"
-  "ema_name\030\002 \001(\t\022\026\n\016drop_if_exists\030\003 \001(\010\"9"
-  "\n\nAddColumns\022+\n\013add_columns\030\001 \003(\0132\026.grep"
-  "time.v1.AddColumn\"<\n\013DropColumns\022-\n\014drop"
-  "_columns\030\001 \003(\0132\027.greptime.v1.DropColumn\""
-  "O\n\021ChangeColumnTypes\022:\n\023change_column_ty"
-  "pes\030\001 \003(\0132\035.greptime.v1.ChangeColumnType"
-  "\"%\n\013RenameTable\022\026\n\016new_table_name\030\001 \001(\t\""
-  "i\n\tAddColumn\022*\n\ncolumn_def\030\001 \001(\0132\026.grept"
-  "ime.v1.ColumnDef\0220\n\010location\030\003 \001(\0132\036.gre"
-  "ptime.v1.AddColumnLocation\"\236\001\n\020ChangeCol"
-  "umnType\022\023\n\013column_name\030\001 \001(\t\0220\n\013target_t"
-  "ype\030\002 \001(\0162\033.greptime.v1.ColumnDataType\022C"
-  "\n\025target_type_extension\030\003 \001(\0132$.greptime"
-  ".v1.ColumnDataTypeExtension\">\n\025ChangeTab"
-  "leAttributes\022\021\n\tattr_name\030\001 \001(\t\022\022\n\nattr_"
-  "value\030\002 \001(\t\"\032\n\nDropColumn\022\014\n\004name\030\001 \001(\t\""
-  "\025\n\007TableId\022\n\n\002id\030\001 \001(\r\"\024\n\006FlowId\022\n\n\002id\030\001"
-  " \001(\r\"\254\002\n\tColumnDef\022\014\n\004name\030\001 \001(\t\022.\n\tdata"
-  "_type\030\002 \001(\0162\033.greptime.v1.ColumnDataType"
-  "\022\023\n\013is_nullable\030\003 \001(\010\022\032\n\022default_constra"
-  "int\030\004 \001(\014\0220\n\rsemantic_type\030\005 \001(\0162\031.grept"
-  "ime.v1.SemanticType\022\017\n\007comment\030\006 \001(\t\022@\n\022"
-  "datatype_extension\030\007 \001(\0132$.greptime.v1.C"
-  "olumnDataTypeExtension\022+\n\007options\030\010 \001(\0132"
-  "\032.greptime.v1.ColumnOptions\"\230\001\n\021AddColum"
-  "nLocation\022B\n\rlocation_type\030\001 \001(\0162+.grept"
-  "ime.v1.AddColumnLocation.LocationType\022\031\n"
-  "\021after_column_name\030\002 \001(\t\"$\n\014LocationType"
-  "\022\t\n\005FIRST\020\000\022\t\n\005AFTER\020\001BL\n\016io.greptime.v1"
-  "B\003DdlZ5github.com/GreptimeTeam/greptime-"
-  "proto/go/greptime/v1b\006proto3"
+  "_id\030\004 \001(\0132\024.greptime.v1.TableId\022\026\n\016drop_"
+  "if_exists\030\005 \001(\010\"\314\001\n\022CreateDatabaseExpr\022\024"
+  "\n\014catalog_name\030\001 \001(\t\022\023\n\013schema_name\030\002 \001("
+  "\t\022\034\n\024create_if_not_exists\030\003 \001(\010\022=\n\007optio"
+  "ns\030\004 \003(\0132,.greptime.v1.CreateDatabaseExp"
+  "r.OptionsEntry\032.\n\014OptionsEntry\022\013\n\003key\030\001 "
+  "\001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"z\n\021TruncateTableE"
+  "xpr\022\024\n\014catalog_name\030\001 \001(\t\022\023\n\013schema_name"
+  "\030\002 \001(\t\022\022\n\ntable_name\030\003 \001(\t\022&\n\010table_id\030\004"
+  " \001(\0132\024.greptime.v1.TableId\"U\n\020DropDataba"
+  "seExpr\022\024\n\014catalog_name\030\001 \001(\t\022\023\n\013schema_n"
+  "ame\030\002 \001(\t\022\026\n\016drop_if_exists\030\003 \001(\010\"9\n\nAdd"
+  "Columns\022+\n\013add_columns\030\001 \003(\0132\026.greptime."
+  "v1.AddColumn\"<\n\013DropColumns\022-\n\014drop_colu"
+  "mns\030\001 \003(\0132\027.greptime.v1.DropColumn\"O\n\021Ch"
+  "angeColumnTypes\022:\n\023change_column_types\030\001"
+  " \003(\0132\035.greptime.v1.ChangeColumnType\"%\n\013R"
+  "enameTable\022\026\n\016new_table_name\030\001 \001(\t\"i\n\tAd"
+  "dColumn\022*\n\ncolumn_def\030\001 \001(\0132\026.greptime.v"
+  "1.ColumnDef\0220\n\010location\030\003 \001(\0132\036.greptime"
+  ".v1.AddColumnLocation\"\236\001\n\020ChangeColumnTy"
+  "pe\022\023\n\013column_name\030\001 \001(\t\0220\n\013target_type\030\002"
+  " \001(\0162\033.greptime.v1.ColumnDataType\022C\n\025tar"
+  "get_type_extension\030\003 \001(\0132$.greptime.v1.C"
+  "olumnDataTypeExtension\"0\n\022ChangeTableOpt"
+  "ions\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t\"\032\n\nDrop"
+  "Column\022\014\n\004name\030\001 \001(\t\"\025\n\007TableId\022\n\n\002id\030\001 "
+  "\001(\r\"\024\n\006FlowId\022\n\n\002id\030\001 \001(\r\"\254\002\n\tColumnDef\022"
+  "\014\n\004name\030\001 \001(\t\022.\n\tdata_type\030\002 \001(\0162\033.grept"
+  "ime.v1.ColumnDataType\022\023\n\013is_nullable\030\003 \001"
+  "(\010\022\032\n\022default_constraint\030\004 \001(\014\0220\n\rsemant"
+  "ic_type\030\005 \001(\0162\031.greptime.v1.SemanticType"
+  "\022\017\n\007comment\030\006 \001(\t\022@\n\022datatype_extension\030"
+  "\007 \001(\0132$.greptime.v1.ColumnDataTypeExtens"
+  "ion\022+\n\007options\030\010 \001(\0132\032.greptime.v1.Colum"
+  "nOptions\"\230\001\n\021AddColumnLocation\022B\n\rlocati"
+  "on_type\030\001 \001(\0162+.greptime.v1.AddColumnLoc"
+  "ation.LocationType\022\031\n\021after_column_name\030"
+  "\002 \001(\t\"$\n\014LocationType\022\t\n\005FIRST\020\000\022\t\n\005AFTE"
+  "R\020\001BL\n\016io.greptime.v1B\003DdlZ5github.com/G"
+  "reptimeTeam/greptime-proto/go/greptime/v"
+  "1b\006proto3"
   ;
 static const ::_pbi::DescriptorTable* const descriptor_table_greptime_2fv1_2fddl_2eproto_deps[1] = {
   &::descriptor_table_greptime_2fv1_2fcommon_2eproto,
 };
 static ::_pbi::once_flag descriptor_table_greptime_2fv1_2fddl_2eproto_once;
 const ::_pbi::DescriptorTable descriptor_table_greptime_2fv1_2fddl_2eproto = {
-    false, false, 3988, descriptor_table_protodef_greptime_2fv1_2fddl_2eproto,
+    false, false, 3969, descriptor_table_protodef_greptime_2fv1_2fddl_2eproto,
     "greptime/v1/ddl.proto",
     &descriptor_table_greptime_2fv1_2fddl_2eproto_once, descriptor_table_greptime_2fv1_2fddl_2eproto_deps, 1, 26,
     schemas, file_default_instances, TableStruct_greptime_2fv1_2fddl_2eproto::offsets,
@@ -4196,7 +4196,7 @@ class AlterExpr::_Internal {
   static const ::greptime::v1::DropColumns& drop_columns(const AlterExpr* msg);
   static const ::greptime::v1::RenameTable& rename_table(const AlterExpr* msg);
   static const ::greptime::v1::ChangeColumnTypes& change_column_types(const AlterExpr* msg);
-  static const ::greptime::v1::ChangeTableAttributes& change_tableattributes(const AlterExpr* msg);
+  static const ::greptime::v1::ChangeTableOptions& change_table_options(const AlterExpr* msg);
 };
 
 const ::greptime::v1::AddColumns&
@@ -4215,9 +4215,9 @@ const ::greptime::v1::ChangeColumnTypes&
 AlterExpr::_Internal::change_column_types(const AlterExpr* msg) {
   return *msg->_impl_.kind_.change_column_types_;
 }
-const ::greptime::v1::ChangeTableAttributes&
-AlterExpr::_Internal::change_tableattributes(const AlterExpr* msg) {
-  return *msg->_impl_.kind_.change_tableattributes_;
+const ::greptime::v1::ChangeTableOptions&
+AlterExpr::_Internal::change_table_options(const AlterExpr* msg) {
+  return *msg->_impl_.kind_.change_table_options_;
 }
 void AlterExpr::set_allocated_add_columns(::greptime::v1::AddColumns* add_columns) {
   ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
@@ -4279,20 +4279,20 @@ void AlterExpr::set_allocated_change_column_types(::greptime::v1::ChangeColumnTy
   }
   // @@protoc_insertion_point(field_set_allocated:greptime.v1.AlterExpr.change_column_types)
 }
-void AlterExpr::set_allocated_change_tableattributes(::greptime::v1::ChangeTableAttributes* change_tableattributes) {
+void AlterExpr::set_allocated_change_table_options(::greptime::v1::ChangeTableOptions* change_table_options) {
   ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
   clear_kind();
-  if (change_tableattributes) {
+  if (change_table_options) {
     ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
-      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(change_tableattributes);
+      ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(change_table_options);
     if (message_arena != submessage_arena) {
-      change_tableattributes = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
-          message_arena, change_tableattributes, submessage_arena);
+      change_table_options = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
+          message_arena, change_table_options, submessage_arena);
     }
-    set_has_change_tableattributes();
-    _impl_.kind_.change_tableattributes_ = change_tableattributes;
+    set_has_change_table_options();
+    _impl_.kind_.change_table_options_ = change_table_options;
   }
-  // @@protoc_insertion_point(field_set_allocated:greptime.v1.AlterExpr.change_tableAttributes)
+  // @@protoc_insertion_point(field_set_allocated:greptime.v1.AlterExpr.change_table_options)
 }
 AlterExpr::AlterExpr(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                          bool is_message_owned)
@@ -4358,9 +4358,9 @@ AlterExpr::AlterExpr(const AlterExpr& from)
           from._internal_change_column_types());
       break;
     }
-    case kChangeTableAttributes: {
-      _this->_internal_mutable_change_tableattributes()->::greptime::v1::ChangeTableAttributes::MergeFrom(
-          from._internal_change_tableattributes());
+    case kChangeTableOptions: {
+      _this->_internal_mutable_change_table_options()->::greptime::v1::ChangeTableOptions::MergeFrom(
+          from._internal_change_table_options());
       break;
     }
     case KIND_NOT_SET: {
@@ -4447,9 +4447,9 @@ void AlterExpr::clear_kind() {
       }
       break;
     }
-    case kChangeTableAttributes: {
+    case kChangeTableOptions: {
       if (GetArenaForAllocation() == nullptr) {
-        delete _impl_.kind_.change_tableattributes_;
+        delete _impl_.kind_.change_table_options_;
       }
       break;
     }
@@ -4542,10 +4542,10 @@ const char* AlterExpr::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx
         } else
           goto handle_unusual;
         continue;
-      // .greptime.v1.ChangeTableAttributes change_tableAttributes = 8;
+      // .greptime.v1.ChangeTableOptions change_table_options = 8;
       case 8:
         if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 66)) {
-          ptr = ctx->ParseMessage(_internal_mutable_change_tableattributes(), ptr);
+          ptr = ctx->ParseMessage(_internal_mutable_change_table_options(), ptr);
           CHK_(ptr);
         } else
           goto handle_unusual;
@@ -4637,11 +4637,11 @@ uint8_t* AlterExpr::_InternalSerialize(
         _Internal::change_column_types(this).GetCachedSize(), target, stream);
   }
 
-  // .greptime.v1.ChangeTableAttributes change_tableAttributes = 8;
-  if (_internal_has_change_tableattributes()) {
+  // .greptime.v1.ChangeTableOptions change_table_options = 8;
+  if (_internal_has_change_table_options()) {
     target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
-      InternalWriteMessage(8, _Internal::change_tableattributes(this),
-        _Internal::change_tableattributes(this).GetCachedSize(), target, stream);
+      InternalWriteMessage(8, _Internal::change_table_options(this),
+        _Internal::change_table_options(this).GetCachedSize(), target, stream);
   }
 
   if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
@@ -4710,11 +4710,11 @@ size_t AlterExpr::ByteSizeLong() const {
           *_impl_.kind_.change_column_types_);
       break;
     }
-    // .greptime.v1.ChangeTableAttributes change_tableAttributes = 8;
-    case kChangeTableAttributes: {
+    // .greptime.v1.ChangeTableOptions change_table_options = 8;
+    case kChangeTableOptions: {
       total_size += 1 +
         ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
-          *_impl_.kind_.change_tableattributes_);
+          *_impl_.kind_.change_table_options_);
       break;
     }
     case KIND_NOT_SET: {
@@ -4769,9 +4769,9 @@ void AlterExpr::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROT
           from._internal_change_column_types());
       break;
     }
-    case kChangeTableAttributes: {
-      _this->_internal_mutable_change_tableattributes()->::greptime::v1::ChangeTableAttributes::MergeFrom(
-          from._internal_change_tableattributes());
+    case kChangeTableOptions: {
+      _this->_internal_mutable_change_table_options()->::greptime::v1::ChangeTableOptions::MergeFrom(
+          from._internal_change_table_options());
       break;
     }
     case KIND_NOT_SET: {
@@ -7466,65 +7466,65 @@ ::PROTOBUF_NAMESPACE_ID::Metadata ChangeColumnType::GetMetadata() const {
 
 // ===================================================================
 
-class ChangeTableAttributes::_Internal {
+class ChangeTableOptions::_Internal {
  public:
 };
 
-ChangeTableAttributes::ChangeTableAttributes(::PROTOBUF_NAMESPACE_ID::Arena* arena,
+ChangeTableOptions::ChangeTableOptions(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                          bool is_message_owned)
   : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
   SharedCtor(arena, is_message_owned);
-  // @@protoc_insertion_point(arena_constructor:greptime.v1.ChangeTableAttributes)
+  // @@protoc_insertion_point(arena_constructor:greptime.v1.ChangeTableOptions)
 }
-ChangeTableAttributes::ChangeTableAttributes(const ChangeTableAttributes& from)
+ChangeTableOptions::ChangeTableOptions(const ChangeTableOptions& from)
   : ::PROTOBUF_NAMESPACE_ID::Message() {
-  ChangeTableAttributes* const _this = this; (void)_this;
+  ChangeTableOptions* const _this = this; (void)_this;
   new (&_impl_) Impl_{
-      decltype(_impl_.attr_name_){}
-    , decltype(_impl_.attr_value_){}
+      decltype(_impl_.key_){}
+    , decltype(_impl_.value_){}
     , /*decltype(_impl_._cached_size_)*/{}};
 
   _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
-  _impl_.attr_name_.InitDefault();
+  _impl_.key_.InitDefault();
   #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
-    _impl_.attr_name_.Set("", GetArenaForAllocation());
+    _impl_.key_.Set("", GetArenaForAllocation());
   #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
-  if (!from._internal_attr_name().empty()) {
-    _this->_impl_.attr_name_.Set(from._internal_attr_name(), 
+  if (!from._internal_key().empty()) {
+    _this->_impl_.key_.Set(from._internal_key(), 
       _this->GetArenaForAllocation());
   }
-  _impl_.attr_value_.InitDefault();
+  _impl_.value_.InitDefault();
   #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
-    _impl_.attr_value_.Set("", GetArenaForAllocation());
+    _impl_.value_.Set("", GetArenaForAllocation());
   #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
-  if (!from._internal_attr_value().empty()) {
-    _this->_impl_.attr_value_.Set(from._internal_attr_value(), 
+  if (!from._internal_value().empty()) {
+    _this->_impl_.value_.Set(from._internal_value(), 
       _this->GetArenaForAllocation());
   }
-  // @@protoc_insertion_point(copy_constructor:greptime.v1.ChangeTableAttributes)
+  // @@protoc_insertion_point(copy_constructor:greptime.v1.ChangeTableOptions)
 }
 
-inline void ChangeTableAttributes::SharedCtor(
+inline void ChangeTableOptions::SharedCtor(
     ::_pb::Arena* arena, bool is_message_owned) {
   (void)arena;
   (void)is_message_owned;
   new (&_impl_) Impl_{
-      decltype(_impl_.attr_name_){}
-    , decltype(_impl_.attr_value_){}
+      decltype(_impl_.key_){}
+    , decltype(_impl_.value_){}
     , /*decltype(_impl_._cached_size_)*/{}
   };
-  _impl_.attr_name_.InitDefault();
+  _impl_.key_.InitDefault();
   #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
-    _impl_.attr_name_.Set("", GetArenaForAllocation());
+    _impl_.key_.Set("", GetArenaForAllocation());
   #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
-  _impl_.attr_value_.InitDefault();
+  _impl_.value_.InitDefault();
   #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
-    _impl_.attr_value_.Set("", GetArenaForAllocation());
+    _impl_.value_.Set("", GetArenaForAllocation());
   #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 }
 
-ChangeTableAttributes::~ChangeTableAttributes() {
-  // @@protoc_insertion_point(destructor:greptime.v1.ChangeTableAttributes)
+ChangeTableOptions::~ChangeTableOptions() {
+  // @@protoc_insertion_point(destructor:greptime.v1.ChangeTableOptions)
   if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
   (void)arena;
     return;
@@ -7532,50 +7532,50 @@ ChangeTableAttributes::~ChangeTableAttributes() {
   SharedDtor();
 }
 
-inline void ChangeTableAttributes::SharedDtor() {
+inline void ChangeTableOptions::SharedDtor() {
   GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
-  _impl_.attr_name_.Destroy();
-  _impl_.attr_value_.Destroy();
+  _impl_.key_.Destroy();
+  _impl_.value_.Destroy();
 }
 
-void ChangeTableAttributes::SetCachedSize(int size) const {
+void ChangeTableOptions::SetCachedSize(int size) const {
   _impl_._cached_size_.Set(size);
 }
 
-void ChangeTableAttributes::Clear() {
-// @@protoc_insertion_point(message_clear_start:greptime.v1.ChangeTableAttributes)
+void ChangeTableOptions::Clear() {
+// @@protoc_insertion_point(message_clear_start:greptime.v1.ChangeTableOptions)
   uint32_t cached_has_bits = 0;
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
 
-  _impl_.attr_name_.ClearToEmpty();
-  _impl_.attr_value_.ClearToEmpty();
+  _impl_.key_.ClearToEmpty();
+  _impl_.value_.ClearToEmpty();
   _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
 }
 
-const char* ChangeTableAttributes::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
+const char* ChangeTableOptions::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   while (!ctx->Done(&ptr)) {
     uint32_t tag;
     ptr = ::_pbi::ReadTag(ptr, &tag);
     switch (tag >> 3) {
-      // string attr_name = 1;
+      // string key = 1;
       case 1:
         if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 10)) {
-          auto str = _internal_mutable_attr_name();
+          auto str = _internal_mutable_key();
           ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
           CHK_(ptr);
-          CHK_(::_pbi::VerifyUTF8(str, "greptime.v1.ChangeTableAttributes.attr_name"));
+          CHK_(::_pbi::VerifyUTF8(str, "greptime.v1.ChangeTableOptions.key"));
         } else
           goto handle_unusual;
         continue;
-      // string attr_value = 2;
+      // string value = 2;
       case 2:
         if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 18)) {
-          auto str = _internal_mutable_attr_value();
+          auto str = _internal_mutable_value();
           ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
           CHK_(ptr);
-          CHK_(::_pbi::VerifyUTF8(str, "greptime.v1.ChangeTableAttributes.attr_value"));
+          CHK_(::_pbi::VerifyUTF8(str, "greptime.v1.ChangeTableOptions.value"));
         } else
           goto handle_unusual;
         continue;
@@ -7602,116 +7602,116 @@ const char* ChangeTableAttributes::_InternalParse(const char* ptr, ::_pbi::Parse
 #undef CHK_
 }
 
-uint8_t* ChangeTableAttributes::_InternalSerialize(
+uint8_t* ChangeTableOptions::_InternalSerialize(
     uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:greptime.v1.ChangeTableAttributes)
+  // @@protoc_insertion_point(serialize_to_array_start:greptime.v1.ChangeTableOptions)
   uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
 
-  // string attr_name = 1;
-  if (!this->_internal_attr_name().empty()) {
+  // string key = 1;
+  if (!this->_internal_key().empty()) {
     ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
-      this->_internal_attr_name().data(), static_cast(this->_internal_attr_name().length()),
+      this->_internal_key().data(), static_cast(this->_internal_key().length()),
       ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
-      "greptime.v1.ChangeTableAttributes.attr_name");
+      "greptime.v1.ChangeTableOptions.key");
     target = stream->WriteStringMaybeAliased(
-        1, this->_internal_attr_name(), target);
+        1, this->_internal_key(), target);
   }
 
-  // string attr_value = 2;
-  if (!this->_internal_attr_value().empty()) {
+  // string value = 2;
+  if (!this->_internal_value().empty()) {
     ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
-      this->_internal_attr_value().data(), static_cast(this->_internal_attr_value().length()),
+      this->_internal_value().data(), static_cast(this->_internal_value().length()),
       ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
-      "greptime.v1.ChangeTableAttributes.attr_value");
+      "greptime.v1.ChangeTableOptions.value");
     target = stream->WriteStringMaybeAliased(
-        2, this->_internal_attr_value(), target);
+        2, this->_internal_value(), target);
   }
 
   if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
     target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
         _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
   }
-  // @@protoc_insertion_point(serialize_to_array_end:greptime.v1.ChangeTableAttributes)
+  // @@protoc_insertion_point(serialize_to_array_end:greptime.v1.ChangeTableOptions)
   return target;
 }
 
-size_t ChangeTableAttributes::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:greptime.v1.ChangeTableAttributes)
+size_t ChangeTableOptions::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:greptime.v1.ChangeTableOptions)
   size_t total_size = 0;
 
   uint32_t cached_has_bits = 0;
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
 
-  // string attr_name = 1;
-  if (!this->_internal_attr_name().empty()) {
+  // string key = 1;
+  if (!this->_internal_key().empty()) {
     total_size += 1 +
       ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
-        this->_internal_attr_name());
+        this->_internal_key());
   }
 
-  // string attr_value = 2;
-  if (!this->_internal_attr_value().empty()) {
+  // string value = 2;
+  if (!this->_internal_value().empty()) {
     total_size += 1 +
       ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
-        this->_internal_attr_value());
+        this->_internal_value());
   }
 
   return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
 }
 
-const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ChangeTableAttributes::_class_data_ = {
+const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ChangeTableOptions::_class_data_ = {
     ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
-    ChangeTableAttributes::MergeImpl
+    ChangeTableOptions::MergeImpl
 };
-const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ChangeTableAttributes::GetClassData() const { return &_class_data_; }
+const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ChangeTableOptions::GetClassData() const { return &_class_data_; }
 
 
-void ChangeTableAttributes::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
-  auto* const _this = static_cast(&to_msg);
-  auto& from = static_cast(from_msg);
-  // @@protoc_insertion_point(class_specific_merge_from_start:greptime.v1.ChangeTableAttributes)
+void ChangeTableOptions::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
+  auto* const _this = static_cast(&to_msg);
+  auto& from = static_cast(from_msg);
+  // @@protoc_insertion_point(class_specific_merge_from_start:greptime.v1.ChangeTableOptions)
   GOOGLE_DCHECK_NE(&from, _this);
   uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
 
-  if (!from._internal_attr_name().empty()) {
-    _this->_internal_set_attr_name(from._internal_attr_name());
+  if (!from._internal_key().empty()) {
+    _this->_internal_set_key(from._internal_key());
   }
-  if (!from._internal_attr_value().empty()) {
-    _this->_internal_set_attr_value(from._internal_attr_value());
+  if (!from._internal_value().empty()) {
+    _this->_internal_set_value(from._internal_value());
   }
   _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
 }
 
-void ChangeTableAttributes::CopyFrom(const ChangeTableAttributes& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:greptime.v1.ChangeTableAttributes)
+void ChangeTableOptions::CopyFrom(const ChangeTableOptions& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:greptime.v1.ChangeTableOptions)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-bool ChangeTableAttributes::IsInitialized() const {
+bool ChangeTableOptions::IsInitialized() const {
   return true;
 }
 
-void ChangeTableAttributes::InternalSwap(ChangeTableAttributes* other) {
+void ChangeTableOptions::InternalSwap(ChangeTableOptions* other) {
   using std::swap;
   auto* lhs_arena = GetArenaForAllocation();
   auto* rhs_arena = other->GetArenaForAllocation();
   _internal_metadata_.InternalSwap(&other->_internal_metadata_);
   ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
-      &_impl_.attr_name_, lhs_arena,
-      &other->_impl_.attr_name_, rhs_arena
+      &_impl_.key_, lhs_arena,
+      &other->_impl_.key_, rhs_arena
   );
   ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
-      &_impl_.attr_value_, lhs_arena,
-      &other->_impl_.attr_value_, rhs_arena
+      &_impl_.value_, lhs_arena,
+      &other->_impl_.value_, rhs_arena
   );
 }
 
-::PROTOBUF_NAMESPACE_ID::Metadata ChangeTableAttributes::GetMetadata() const {
+::PROTOBUF_NAMESPACE_ID::Metadata ChangeTableOptions::GetMetadata() const {
   return ::_pbi::AssignDescriptors(
       &descriptor_table_greptime_2fv1_2fddl_2eproto_getter, &descriptor_table_greptime_2fv1_2fddl_2eproto_once,
       file_level_metadata_greptime_2fv1_2fddl_2eproto[20]);
@@ -9075,9 +9075,9 @@ template<> PROTOBUF_NOINLINE ::greptime::v1::ChangeColumnType*
 Arena::CreateMaybeMessage< ::greptime::v1::ChangeColumnType >(Arena* arena) {
   return Arena::CreateMessageInternal< ::greptime::v1::ChangeColumnType >(arena);
 }
-template<> PROTOBUF_NOINLINE ::greptime::v1::ChangeTableAttributes*
-Arena::CreateMaybeMessage< ::greptime::v1::ChangeTableAttributes >(Arena* arena) {
-  return Arena::CreateMessageInternal< ::greptime::v1::ChangeTableAttributes >(arena);
+template<> PROTOBUF_NOINLINE ::greptime::v1::ChangeTableOptions*
+Arena::CreateMaybeMessage< ::greptime::v1::ChangeTableOptions >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::greptime::v1::ChangeTableOptions >(arena);
 }
 template<> PROTOBUF_NOINLINE ::greptime::v1::DropColumn*
 Arena::CreateMaybeMessage< ::greptime::v1::DropColumn >(Arena* arena) {
diff --git a/c++/greptime/v1/ddl.pb.h b/c++/greptime/v1/ddl.pb.h
index eae56bcf..1107db47 100644
--- a/c++/greptime/v1/ddl.pb.h
+++ b/c++/greptime/v1/ddl.pb.h
@@ -69,9 +69,9 @@ extern ChangeColumnTypeDefaultTypeInternal _ChangeColumnType_default_instance_;
 class ChangeColumnTypes;
 struct ChangeColumnTypesDefaultTypeInternal;
 extern ChangeColumnTypesDefaultTypeInternal _ChangeColumnTypes_default_instance_;
-class ChangeTableAttributes;
-struct ChangeTableAttributesDefaultTypeInternal;
-extern ChangeTableAttributesDefaultTypeInternal _ChangeTableAttributes_default_instance_;
+class ChangeTableOptions;
+struct ChangeTableOptionsDefaultTypeInternal;
+extern ChangeTableOptionsDefaultTypeInternal _ChangeTableOptions_default_instance_;
 class ColumnDef;
 struct ColumnDefDefaultTypeInternal;
 extern ColumnDefDefaultTypeInternal _ColumnDef_default_instance_;
@@ -138,7 +138,7 @@ template<> ::greptime::v1::AddColumns* Arena::CreateMaybeMessage<::greptime::v1:
 template<> ::greptime::v1::AlterExpr* Arena::CreateMaybeMessage<::greptime::v1::AlterExpr>(Arena*);
 template<> ::greptime::v1::ChangeColumnType* Arena::CreateMaybeMessage<::greptime::v1::ChangeColumnType>(Arena*);
 template<> ::greptime::v1::ChangeColumnTypes* Arena::CreateMaybeMessage<::greptime::v1::ChangeColumnTypes>(Arena*);
-template<> ::greptime::v1::ChangeTableAttributes* Arena::CreateMaybeMessage<::greptime::v1::ChangeTableAttributes>(Arena*);
+template<> ::greptime::v1::ChangeTableOptions* Arena::CreateMaybeMessage<::greptime::v1::ChangeTableOptions>(Arena*);
 template<> ::greptime::v1::ColumnDef* Arena::CreateMaybeMessage<::greptime::v1::ColumnDef>(Arena*);
 template<> ::greptime::v1::CreateDatabaseExpr* Arena::CreateMaybeMessage<::greptime::v1::CreateDatabaseExpr>(Arena*);
 template<> ::greptime::v1::CreateDatabaseExpr_OptionsEntry_DoNotUse* Arena::CreateMaybeMessage<::greptime::v1::CreateDatabaseExpr_OptionsEntry_DoNotUse>(Arena*);
@@ -2015,7 +2015,7 @@ class AlterExpr final :
     kDropColumns = 5,
     kRenameTable = 6,
     kChangeColumnTypes = 7,
-    kChangeTableAttributes = 8,
+    kChangeTableOptions = 8,
     KIND_NOT_SET = 0,
   };
 
@@ -2104,7 +2104,7 @@ class AlterExpr final :
     kDropColumnsFieldNumber = 5,
     kRenameTableFieldNumber = 6,
     kChangeColumnTypesFieldNumber = 7,
-    kChangeTableAttributesFieldNumber = 8,
+    kChangeTableOptionsFieldNumber = 8,
   };
   // string catalog_name = 1;
   void clear_catalog_name();
@@ -2220,23 +2220,23 @@ class AlterExpr final :
       ::greptime::v1::ChangeColumnTypes* change_column_types);
   ::greptime::v1::ChangeColumnTypes* unsafe_arena_release_change_column_types();
 
-  // .greptime.v1.ChangeTableAttributes change_tableAttributes = 8;
-  bool has_change_tableattributes() const;
+  // .greptime.v1.ChangeTableOptions change_table_options = 8;
+  bool has_change_table_options() const;
   private:
-  bool _internal_has_change_tableattributes() const;
+  bool _internal_has_change_table_options() const;
   public:
-  void clear_change_tableattributes();
-  const ::greptime::v1::ChangeTableAttributes& change_tableattributes() const;
-  PROTOBUF_NODISCARD ::greptime::v1::ChangeTableAttributes* release_change_tableattributes();
-  ::greptime::v1::ChangeTableAttributes* mutable_change_tableattributes();
-  void set_allocated_change_tableattributes(::greptime::v1::ChangeTableAttributes* change_tableattributes);
+  void clear_change_table_options();
+  const ::greptime::v1::ChangeTableOptions& change_table_options() const;
+  PROTOBUF_NODISCARD ::greptime::v1::ChangeTableOptions* release_change_table_options();
+  ::greptime::v1::ChangeTableOptions* mutable_change_table_options();
+  void set_allocated_change_table_options(::greptime::v1::ChangeTableOptions* change_table_options);
   private:
-  const ::greptime::v1::ChangeTableAttributes& _internal_change_tableattributes() const;
-  ::greptime::v1::ChangeTableAttributes* _internal_mutable_change_tableattributes();
+  const ::greptime::v1::ChangeTableOptions& _internal_change_table_options() const;
+  ::greptime::v1::ChangeTableOptions* _internal_mutable_change_table_options();
   public:
-  void unsafe_arena_set_allocated_change_tableattributes(
-      ::greptime::v1::ChangeTableAttributes* change_tableattributes);
-  ::greptime::v1::ChangeTableAttributes* unsafe_arena_release_change_tableattributes();
+  void unsafe_arena_set_allocated_change_table_options(
+      ::greptime::v1::ChangeTableOptions* change_table_options);
+  ::greptime::v1::ChangeTableOptions* unsafe_arena_release_change_table_options();
 
   void clear_kind();
   KindCase kind_case() const;
@@ -2247,7 +2247,7 @@ class AlterExpr final :
   void set_has_drop_columns();
   void set_has_rename_table();
   void set_has_change_column_types();
-  void set_has_change_tableattributes();
+  void set_has_change_table_options();
 
   inline bool has_kind() const;
   inline void clear_has_kind();
@@ -2266,7 +2266,7 @@ class AlterExpr final :
       ::greptime::v1::DropColumns* drop_columns_;
       ::greptime::v1::RenameTable* rename_table_;
       ::greptime::v1::ChangeColumnTypes* change_column_types_;
-      ::greptime::v1::ChangeTableAttributes* change_tableattributes_;
+      ::greptime::v1::ChangeTableOptions* change_table_options_;
     } kind_;
     mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
     uint32_t _oneof_case_[1];
@@ -4097,24 +4097,24 @@ class ChangeColumnType final :
 };
 // -------------------------------------------------------------------
 
-class ChangeTableAttributes final :
-    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:greptime.v1.ChangeTableAttributes) */ {
+class ChangeTableOptions final :
+    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:greptime.v1.ChangeTableOptions) */ {
  public:
-  inline ChangeTableAttributes() : ChangeTableAttributes(nullptr) {}
-  ~ChangeTableAttributes() override;
-  explicit PROTOBUF_CONSTEXPR ChangeTableAttributes(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
+  inline ChangeTableOptions() : ChangeTableOptions(nullptr) {}
+  ~ChangeTableOptions() override;
+  explicit PROTOBUF_CONSTEXPR ChangeTableOptions(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
 
-  ChangeTableAttributes(const ChangeTableAttributes& from);
-  ChangeTableAttributes(ChangeTableAttributes&& from) noexcept
-    : ChangeTableAttributes() {
+  ChangeTableOptions(const ChangeTableOptions& from);
+  ChangeTableOptions(ChangeTableOptions&& from) noexcept
+    : ChangeTableOptions() {
     *this = ::std::move(from);
   }
 
-  inline ChangeTableAttributes& operator=(const ChangeTableAttributes& from) {
+  inline ChangeTableOptions& operator=(const ChangeTableOptions& from) {
     CopyFrom(from);
     return *this;
   }
-  inline ChangeTableAttributes& operator=(ChangeTableAttributes&& from) noexcept {
+  inline ChangeTableOptions& operator=(ChangeTableOptions&& from) noexcept {
     if (this == &from) return *this;
     if (GetOwningArena() == from.GetOwningArena()
   #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
@@ -4137,20 +4137,20 @@ class ChangeTableAttributes final :
   static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
     return default_instance().GetMetadata().reflection;
   }
-  static const ChangeTableAttributes& default_instance() {
+  static const ChangeTableOptions& default_instance() {
     return *internal_default_instance();
   }
-  static inline const ChangeTableAttributes* internal_default_instance() {
-    return reinterpret_cast(
-               &_ChangeTableAttributes_default_instance_);
+  static inline const ChangeTableOptions* internal_default_instance() {
+    return reinterpret_cast(
+               &_ChangeTableOptions_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
     20;
 
-  friend void swap(ChangeTableAttributes& a, ChangeTableAttributes& b) {
+  friend void swap(ChangeTableOptions& a, ChangeTableOptions& b) {
     a.Swap(&b);
   }
-  inline void Swap(ChangeTableAttributes* other) {
+  inline void Swap(ChangeTableOptions* other) {
     if (other == this) return;
   #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
     if (GetOwningArena() != nullptr &&
@@ -4163,7 +4163,7 @@ class ChangeTableAttributes final :
       ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
     }
   }
-  void UnsafeArenaSwap(ChangeTableAttributes* other) {
+  void UnsafeArenaSwap(ChangeTableOptions* other) {
     if (other == this) return;
     GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
     InternalSwap(other);
@@ -4171,14 +4171,14 @@ class ChangeTableAttributes final :
 
   // implements Message ----------------------------------------------
 
-  ChangeTableAttributes* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
-    return CreateMaybeMessage(arena);
+  ChangeTableOptions* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
+    return CreateMaybeMessage(arena);
   }
   using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
-  void CopyFrom(const ChangeTableAttributes& from);
+  void CopyFrom(const ChangeTableOptions& from);
   using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
-  void MergeFrom( const ChangeTableAttributes& from) {
-    ChangeTableAttributes::MergeImpl(*this, from);
+  void MergeFrom( const ChangeTableOptions& from) {
+    ChangeTableOptions::MergeImpl(*this, from);
   }
   private:
   static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
@@ -4196,15 +4196,15 @@ class ChangeTableAttributes final :
   void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
   void SharedDtor();
   void SetCachedSize(int size) const final;
-  void InternalSwap(ChangeTableAttributes* other);
+  void InternalSwap(ChangeTableOptions* other);
 
   private:
   friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
   static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
-    return "greptime.v1.ChangeTableAttributes";
+    return "greptime.v1.ChangeTableOptions";
   }
   protected:
-  explicit ChangeTableAttributes(::PROTOBUF_NAMESPACE_ID::Arena* arena,
+  explicit ChangeTableOptions(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                        bool is_message_owned = false);
   public:
 
@@ -4218,38 +4218,38 @@ class ChangeTableAttributes final :
   // accessors -------------------------------------------------------
 
   enum : int {
-    kAttrNameFieldNumber = 1,
-    kAttrValueFieldNumber = 2,
+    kKeyFieldNumber = 1,
+    kValueFieldNumber = 2,
   };
-  // string attr_name = 1;
-  void clear_attr_name();
-  const std::string& attr_name() const;
+  // string key = 1;
+  void clear_key();
+  const std::string& key() const;
   template 
-  void set_attr_name(ArgT0&& arg0, ArgT... args);
-  std::string* mutable_attr_name();
-  PROTOBUF_NODISCARD std::string* release_attr_name();
-  void set_allocated_attr_name(std::string* attr_name);
+  void set_key(ArgT0&& arg0, ArgT... args);
+  std::string* mutable_key();
+  PROTOBUF_NODISCARD std::string* release_key();
+  void set_allocated_key(std::string* key);
   private:
-  const std::string& _internal_attr_name() const;
-  inline PROTOBUF_ALWAYS_INLINE void _internal_set_attr_name(const std::string& value);
-  std::string* _internal_mutable_attr_name();
+  const std::string& _internal_key() const;
+  inline PROTOBUF_ALWAYS_INLINE void _internal_set_key(const std::string& value);
+  std::string* _internal_mutable_key();
   public:
 
-  // string attr_value = 2;
-  void clear_attr_value();
-  const std::string& attr_value() const;
+  // string value = 2;
+  void clear_value();
+  const std::string& value() const;
   template 
-  void set_attr_value(ArgT0&& arg0, ArgT... args);
-  std::string* mutable_attr_value();
-  PROTOBUF_NODISCARD std::string* release_attr_value();
-  void set_allocated_attr_value(std::string* attr_value);
+  void set_value(ArgT0&& arg0, ArgT... args);
+  std::string* mutable_value();
+  PROTOBUF_NODISCARD std::string* release_value();
+  void set_allocated_value(std::string* value);
   private:
-  const std::string& _internal_attr_value() const;
-  inline PROTOBUF_ALWAYS_INLINE void _internal_set_attr_value(const std::string& value);
-  std::string* _internal_mutable_attr_value();
+  const std::string& _internal_value() const;
+  inline PROTOBUF_ALWAYS_INLINE void _internal_set_value(const std::string& value);
+  std::string* _internal_mutable_value();
   public:
 
-  // @@protoc_insertion_point(class_scope:greptime.v1.ChangeTableAttributes)
+  // @@protoc_insertion_point(class_scope:greptime.v1.ChangeTableOptions)
  private:
   class _Internal;
 
@@ -4257,8 +4257,8 @@ class ChangeTableAttributes final :
   typedef void InternalArenaConstructable_;
   typedef void DestructorSkippable_;
   struct Impl_ {
-    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr attr_name_;
-    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr attr_value_;
+    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr key_;
+    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr value_;
     mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
   };
   union { Impl_ _impl_; };
@@ -8302,77 +8302,77 @@ inline ::greptime::v1::ChangeColumnTypes* AlterExpr::mutable_change_column_types
   return _msg;
 }
 
-// .greptime.v1.ChangeTableAttributes change_tableAttributes = 8;
-inline bool AlterExpr::_internal_has_change_tableattributes() const {
-  return kind_case() == kChangeTableAttributes;
+// .greptime.v1.ChangeTableOptions change_table_options = 8;
+inline bool AlterExpr::_internal_has_change_table_options() const {
+  return kind_case() == kChangeTableOptions;
 }
-inline bool AlterExpr::has_change_tableattributes() const {
-  return _internal_has_change_tableattributes();
+inline bool AlterExpr::has_change_table_options() const {
+  return _internal_has_change_table_options();
 }
-inline void AlterExpr::set_has_change_tableattributes() {
-  _impl_._oneof_case_[0] = kChangeTableAttributes;
+inline void AlterExpr::set_has_change_table_options() {
+  _impl_._oneof_case_[0] = kChangeTableOptions;
 }
-inline void AlterExpr::clear_change_tableattributes() {
-  if (_internal_has_change_tableattributes()) {
+inline void AlterExpr::clear_change_table_options() {
+  if (_internal_has_change_table_options()) {
     if (GetArenaForAllocation() == nullptr) {
-      delete _impl_.kind_.change_tableattributes_;
+      delete _impl_.kind_.change_table_options_;
     }
     clear_has_kind();
   }
 }
-inline ::greptime::v1::ChangeTableAttributes* AlterExpr::release_change_tableattributes() {
-  // @@protoc_insertion_point(field_release:greptime.v1.AlterExpr.change_tableAttributes)
-  if (_internal_has_change_tableattributes()) {
+inline ::greptime::v1::ChangeTableOptions* AlterExpr::release_change_table_options() {
+  // @@protoc_insertion_point(field_release:greptime.v1.AlterExpr.change_table_options)
+  if (_internal_has_change_table_options()) {
     clear_has_kind();
-    ::greptime::v1::ChangeTableAttributes* temp = _impl_.kind_.change_tableattributes_;
+    ::greptime::v1::ChangeTableOptions* temp = _impl_.kind_.change_table_options_;
     if (GetArenaForAllocation() != nullptr) {
       temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
     }
-    _impl_.kind_.change_tableattributes_ = nullptr;
+    _impl_.kind_.change_table_options_ = nullptr;
     return temp;
   } else {
     return nullptr;
   }
 }
-inline const ::greptime::v1::ChangeTableAttributes& AlterExpr::_internal_change_tableattributes() const {
-  return _internal_has_change_tableattributes()
-      ? *_impl_.kind_.change_tableattributes_
-      : reinterpret_cast< ::greptime::v1::ChangeTableAttributes&>(::greptime::v1::_ChangeTableAttributes_default_instance_);
+inline const ::greptime::v1::ChangeTableOptions& AlterExpr::_internal_change_table_options() const {
+  return _internal_has_change_table_options()
+      ? *_impl_.kind_.change_table_options_
+      : reinterpret_cast< ::greptime::v1::ChangeTableOptions&>(::greptime::v1::_ChangeTableOptions_default_instance_);
 }
-inline const ::greptime::v1::ChangeTableAttributes& AlterExpr::change_tableattributes() const {
-  // @@protoc_insertion_point(field_get:greptime.v1.AlterExpr.change_tableAttributes)
-  return _internal_change_tableattributes();
+inline const ::greptime::v1::ChangeTableOptions& AlterExpr::change_table_options() const {
+  // @@protoc_insertion_point(field_get:greptime.v1.AlterExpr.change_table_options)
+  return _internal_change_table_options();
 }
-inline ::greptime::v1::ChangeTableAttributes* AlterExpr::unsafe_arena_release_change_tableattributes() {
-  // @@protoc_insertion_point(field_unsafe_arena_release:greptime.v1.AlterExpr.change_tableAttributes)
-  if (_internal_has_change_tableattributes()) {
+inline ::greptime::v1::ChangeTableOptions* AlterExpr::unsafe_arena_release_change_table_options() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:greptime.v1.AlterExpr.change_table_options)
+  if (_internal_has_change_table_options()) {
     clear_has_kind();
-    ::greptime::v1::ChangeTableAttributes* temp = _impl_.kind_.change_tableattributes_;
-    _impl_.kind_.change_tableattributes_ = nullptr;
+    ::greptime::v1::ChangeTableOptions* temp = _impl_.kind_.change_table_options_;
+    _impl_.kind_.change_table_options_ = nullptr;
     return temp;
   } else {
     return nullptr;
   }
 }
-inline void AlterExpr::unsafe_arena_set_allocated_change_tableattributes(::greptime::v1::ChangeTableAttributes* change_tableattributes) {
+inline void AlterExpr::unsafe_arena_set_allocated_change_table_options(::greptime::v1::ChangeTableOptions* change_table_options) {
   clear_kind();
-  if (change_tableattributes) {
-    set_has_change_tableattributes();
-    _impl_.kind_.change_tableattributes_ = change_tableattributes;
+  if (change_table_options) {
+    set_has_change_table_options();
+    _impl_.kind_.change_table_options_ = change_table_options;
   }
-  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:greptime.v1.AlterExpr.change_tableAttributes)
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:greptime.v1.AlterExpr.change_table_options)
 }
-inline ::greptime::v1::ChangeTableAttributes* AlterExpr::_internal_mutable_change_tableattributes() {
-  if (!_internal_has_change_tableattributes()) {
+inline ::greptime::v1::ChangeTableOptions* AlterExpr::_internal_mutable_change_table_options() {
+  if (!_internal_has_change_table_options()) {
     clear_kind();
-    set_has_change_tableattributes();
-    _impl_.kind_.change_tableattributes_ = CreateMaybeMessage< ::greptime::v1::ChangeTableAttributes >(GetArenaForAllocation());
+    set_has_change_table_options();
+    _impl_.kind_.change_table_options_ = CreateMaybeMessage< ::greptime::v1::ChangeTableOptions >(GetArenaForAllocation());
   }
-  return _impl_.kind_.change_tableattributes_;
+  return _impl_.kind_.change_table_options_;
 }
-inline ::greptime::v1::ChangeTableAttributes* AlterExpr::mutable_change_tableattributes() {
-  ::greptime::v1::ChangeTableAttributes* _msg = _internal_mutable_change_tableattributes();
-  // @@protoc_insertion_point(field_mutable:greptime.v1.AlterExpr.change_tableAttributes)
+inline ::greptime::v1::ChangeTableOptions* AlterExpr::mutable_change_table_options() {
+  ::greptime::v1::ChangeTableOptions* _msg = _internal_mutable_change_table_options();
+  // @@protoc_insertion_point(field_mutable:greptime.v1.AlterExpr.change_table_options)
   return _msg;
 }
 
@@ -9703,106 +9703,106 @@ inline void ChangeColumnType::set_allocated_target_type_extension(::greptime::v1
 
 // -------------------------------------------------------------------
 
-// ChangeTableAttributes
+// ChangeTableOptions
 
-// string attr_name = 1;
-inline void ChangeTableAttributes::clear_attr_name() {
-  _impl_.attr_name_.ClearToEmpty();
+// string key = 1;
+inline void ChangeTableOptions::clear_key() {
+  _impl_.key_.ClearToEmpty();
 }
-inline const std::string& ChangeTableAttributes::attr_name() const {
-  // @@protoc_insertion_point(field_get:greptime.v1.ChangeTableAttributes.attr_name)
-  return _internal_attr_name();
+inline const std::string& ChangeTableOptions::key() const {
+  // @@protoc_insertion_point(field_get:greptime.v1.ChangeTableOptions.key)
+  return _internal_key();
 }
 template 
 inline PROTOBUF_ALWAYS_INLINE
-void ChangeTableAttributes::set_attr_name(ArgT0&& arg0, ArgT... args) {
+void ChangeTableOptions::set_key(ArgT0&& arg0, ArgT... args) {
  
- _impl_.attr_name_.Set(static_cast(arg0), args..., GetArenaForAllocation());
-  // @@protoc_insertion_point(field_set:greptime.v1.ChangeTableAttributes.attr_name)
+ _impl_.key_.Set(static_cast(arg0), args..., GetArenaForAllocation());
+  // @@protoc_insertion_point(field_set:greptime.v1.ChangeTableOptions.key)
 }
-inline std::string* ChangeTableAttributes::mutable_attr_name() {
-  std::string* _s = _internal_mutable_attr_name();
-  // @@protoc_insertion_point(field_mutable:greptime.v1.ChangeTableAttributes.attr_name)
+inline std::string* ChangeTableOptions::mutable_key() {
+  std::string* _s = _internal_mutable_key();
+  // @@protoc_insertion_point(field_mutable:greptime.v1.ChangeTableOptions.key)
   return _s;
 }
-inline const std::string& ChangeTableAttributes::_internal_attr_name() const {
-  return _impl_.attr_name_.Get();
+inline const std::string& ChangeTableOptions::_internal_key() const {
+  return _impl_.key_.Get();
 }
-inline void ChangeTableAttributes::_internal_set_attr_name(const std::string& value) {
+inline void ChangeTableOptions::_internal_set_key(const std::string& value) {
   
-  _impl_.attr_name_.Set(value, GetArenaForAllocation());
+  _impl_.key_.Set(value, GetArenaForAllocation());
 }
-inline std::string* ChangeTableAttributes::_internal_mutable_attr_name() {
+inline std::string* ChangeTableOptions::_internal_mutable_key() {
   
-  return _impl_.attr_name_.Mutable(GetArenaForAllocation());
+  return _impl_.key_.Mutable(GetArenaForAllocation());
 }
-inline std::string* ChangeTableAttributes::release_attr_name() {
-  // @@protoc_insertion_point(field_release:greptime.v1.ChangeTableAttributes.attr_name)
-  return _impl_.attr_name_.Release();
+inline std::string* ChangeTableOptions::release_key() {
+  // @@protoc_insertion_point(field_release:greptime.v1.ChangeTableOptions.key)
+  return _impl_.key_.Release();
 }
-inline void ChangeTableAttributes::set_allocated_attr_name(std::string* attr_name) {
-  if (attr_name != nullptr) {
+inline void ChangeTableOptions::set_allocated_key(std::string* key) {
+  if (key != nullptr) {
     
   } else {
     
   }
-  _impl_.attr_name_.SetAllocated(attr_name, GetArenaForAllocation());
+  _impl_.key_.SetAllocated(key, GetArenaForAllocation());
 #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
-  if (_impl_.attr_name_.IsDefault()) {
-    _impl_.attr_name_.Set("", GetArenaForAllocation());
+  if (_impl_.key_.IsDefault()) {
+    _impl_.key_.Set("", GetArenaForAllocation());
   }
 #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
-  // @@protoc_insertion_point(field_set_allocated:greptime.v1.ChangeTableAttributes.attr_name)
+  // @@protoc_insertion_point(field_set_allocated:greptime.v1.ChangeTableOptions.key)
 }
 
-// string attr_value = 2;
-inline void ChangeTableAttributes::clear_attr_value() {
-  _impl_.attr_value_.ClearToEmpty();
+// string value = 2;
+inline void ChangeTableOptions::clear_value() {
+  _impl_.value_.ClearToEmpty();
 }
-inline const std::string& ChangeTableAttributes::attr_value() const {
-  // @@protoc_insertion_point(field_get:greptime.v1.ChangeTableAttributes.attr_value)
-  return _internal_attr_value();
+inline const std::string& ChangeTableOptions::value() const {
+  // @@protoc_insertion_point(field_get:greptime.v1.ChangeTableOptions.value)
+  return _internal_value();
 }
 template 
 inline PROTOBUF_ALWAYS_INLINE
-void ChangeTableAttributes::set_attr_value(ArgT0&& arg0, ArgT... args) {
+void ChangeTableOptions::set_value(ArgT0&& arg0, ArgT... args) {
  
- _impl_.attr_value_.Set(static_cast(arg0), args..., GetArenaForAllocation());
-  // @@protoc_insertion_point(field_set:greptime.v1.ChangeTableAttributes.attr_value)
+ _impl_.value_.Set(static_cast(arg0), args..., GetArenaForAllocation());
+  // @@protoc_insertion_point(field_set:greptime.v1.ChangeTableOptions.value)
 }
-inline std::string* ChangeTableAttributes::mutable_attr_value() {
-  std::string* _s = _internal_mutable_attr_value();
-  // @@protoc_insertion_point(field_mutable:greptime.v1.ChangeTableAttributes.attr_value)
+inline std::string* ChangeTableOptions::mutable_value() {
+  std::string* _s = _internal_mutable_value();
+  // @@protoc_insertion_point(field_mutable:greptime.v1.ChangeTableOptions.value)
   return _s;
 }
-inline const std::string& ChangeTableAttributes::_internal_attr_value() const {
-  return _impl_.attr_value_.Get();
+inline const std::string& ChangeTableOptions::_internal_value() const {
+  return _impl_.value_.Get();
 }
-inline void ChangeTableAttributes::_internal_set_attr_value(const std::string& value) {
+inline void ChangeTableOptions::_internal_set_value(const std::string& value) {
   
-  _impl_.attr_value_.Set(value, GetArenaForAllocation());
+  _impl_.value_.Set(value, GetArenaForAllocation());
 }
-inline std::string* ChangeTableAttributes::_internal_mutable_attr_value() {
+inline std::string* ChangeTableOptions::_internal_mutable_value() {
   
-  return _impl_.attr_value_.Mutable(GetArenaForAllocation());
+  return _impl_.value_.Mutable(GetArenaForAllocation());
 }
-inline std::string* ChangeTableAttributes::release_attr_value() {
-  // @@protoc_insertion_point(field_release:greptime.v1.ChangeTableAttributes.attr_value)
-  return _impl_.attr_value_.Release();
+inline std::string* ChangeTableOptions::release_value() {
+  // @@protoc_insertion_point(field_release:greptime.v1.ChangeTableOptions.value)
+  return _impl_.value_.Release();
 }
-inline void ChangeTableAttributes::set_allocated_attr_value(std::string* attr_value) {
-  if (attr_value != nullptr) {
+inline void ChangeTableOptions::set_allocated_value(std::string* value) {
+  if (value != nullptr) {
     
   } else {
     
   }
-  _impl_.attr_value_.SetAllocated(attr_value, GetArenaForAllocation());
+  _impl_.value_.SetAllocated(value, GetArenaForAllocation());
 #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
-  if (_impl_.attr_value_.IsDefault()) {
-    _impl_.attr_value_.Set("", GetArenaForAllocation());
+  if (_impl_.value_.IsDefault()) {
+    _impl_.value_.Set("", GetArenaForAllocation());
   }
 #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
-  // @@protoc_insertion_point(field_set_allocated:greptime.v1.ChangeTableAttributes.attr_value)
+  // @@protoc_insertion_point(field_set_allocated:greptime.v1.ChangeTableOptions.value)
 }
 
 // -------------------------------------------------------------------
diff --git a/c++/greptime/v1/region/server.pb.cc b/c++/greptime/v1/region/server.pb.cc
index 39f473b5..00c2aa41 100644
--- a/c++/greptime/v1/region/server.pb.cc
+++ b/c++/greptime/v1/region/server.pb.cc
@@ -827,36 +827,36 @@ const char descriptor_table_protodef_greptime_2fv1_2fregion_2fserver_2eproto[] P
   ".\n\014OptionsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 "
   "\001(\t:\0028\001\"!\n\014CloseRequest\022\021\n\tregion_id\030\001 \001"
   "(\004\"C\n\rAlterRequests\0222\n\010requests\030\001 \003(\0132 ."
-  "greptime.v1.region.AlterRequest\"\267\002\n\014Alte"
+  "greptime.v1.region.AlterRequest\"\261\002\n\014Alte"
   "rRequest\022\021\n\tregion_id\030\001 \001(\004\0225\n\013add_colum"
   "ns\030\002 \001(\0132\036.greptime.v1.region.AddColumns"
   "H\000\0227\n\014drop_columns\030\003 \001(\0132\037.greptime.v1.r"
   "egion.DropColumnsH\000\022=\n\023change_column_typ"
   "es\030\005 \001(\0132\036.greptime.v1.ChangeColumnTypes"
-  "H\000\022E\n\027change_table_attributes\030\006 \001(\0132\".gr"
-  "eptime.v1.ChangeTableAttributesH\000\022\026\n\016sch"
-  "ema_version\030\004 \001(\004B\006\n\004kind\"@\n\nAddColumns\022"
-  "2\n\013add_columns\030\001 \003(\0132\035.greptime.v1.regio"
-  "n.AddColumn\"C\n\013DropColumns\0224\n\014drop_colum"
-  "ns\030\001 \003(\0132\036.greptime.v1.region.DropColumn"
-  "\"v\n\tAddColumn\0227\n\ncolumn_def\030\001 \001(\0132#.grep"
-  "time.v1.region.RegionColumnDef\0220\n\010locati"
-  "on\030\003 \001(\0132\036.greptime.v1.AddColumnLocation"
-  "\"\032\n\nDropColumn\022\014\n\004name\030\001 \001(\t\"!\n\014FlushReq"
-  "uest\022\021\n\tregion_id\030\001 \001(\004\"\t\n\007Regular\"&\n\014St"
-  "rictWindow\022\026\n\016window_seconds\030\001 \001(\003\"\231\001\n\016C"
-  "ompactRequest\022\021\n\tregion_id\030\001 \001(\004\022.\n\007regu"
-  "lar\030\002 \001(\0132\033.greptime.v1.region.RegularH\000"
-  "\0229\n\rstrict_window\030\003 \001(\0132 .greptime.v1.re"
-  "gion.StrictWindowH\000B\t\n\007options\"$\n\017Trunca"
-  "teRequest\022\021\n\tregion_id\030\001 \001(\004\"P\n\017RegionCo"
-  "lumnDef\022*\n\ncolumn_def\030\001 \001(\0132\026.greptime.v"
-  "1.ColumnDef\022\021\n\tcolumn_id\030\002 \001(\r2Y\n\006Region"
-  "\022O\n\006Handle\022!.greptime.v1.region.RegionRe"
-  "quest\032\".greptime.v1.region.RegionRespons"
-  "eB]\n\025io.greptime.v1.regionB\006ServerZ_impl_.kind_.change_column_types_;
 }
-const ::greptime::v1::ChangeTableAttributes&
-AlterRequest::_Internal::change_table_attributes(const AlterRequest* msg) {
-  return *msg->_impl_.kind_.change_table_attributes_;
+const ::greptime::v1::ChangeTableOptions&
+AlterRequest::_Internal::change_table_options(const AlterRequest* msg) {
+  return *msg->_impl_.kind_.change_table_options_;
 }
 void AlterRequest::set_allocated_add_columns(::greptime::v1::region::AddColumns* add_columns) {
   ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
@@ -5400,26 +5400,26 @@ void AlterRequest::clear_change_column_types() {
     clear_has_kind();
   }
 }
-void AlterRequest::set_allocated_change_table_attributes(::greptime::v1::ChangeTableAttributes* change_table_attributes) {
+void AlterRequest::set_allocated_change_table_options(::greptime::v1::ChangeTableOptions* change_table_options) {
   ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
   clear_kind();
-  if (change_table_attributes) {
+  if (change_table_options) {
     ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
         ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(
-                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(change_table_attributes));
+                reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(change_table_options));
     if (message_arena != submessage_arena) {
-      change_table_attributes = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
-          message_arena, change_table_attributes, submessage_arena);
+      change_table_options = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
+          message_arena, change_table_options, submessage_arena);
     }
-    set_has_change_table_attributes();
-    _impl_.kind_.change_table_attributes_ = change_table_attributes;
+    set_has_change_table_options();
+    _impl_.kind_.change_table_options_ = change_table_options;
   }
-  // @@protoc_insertion_point(field_set_allocated:greptime.v1.region.AlterRequest.change_table_attributes)
+  // @@protoc_insertion_point(field_set_allocated:greptime.v1.region.AlterRequest.change_table_options)
 }
-void AlterRequest::clear_change_table_attributes() {
-  if (_internal_has_change_table_attributes()) {
+void AlterRequest::clear_change_table_options() {
+  if (_internal_has_change_table_options()) {
     if (GetArenaForAllocation() == nullptr) {
-      delete _impl_.kind_.change_table_attributes_;
+      delete _impl_.kind_.change_table_options_;
     }
     clear_has_kind();
   }
@@ -5461,9 +5461,9 @@ AlterRequest::AlterRequest(const AlterRequest& from)
           from._internal_change_column_types());
       break;
     }
-    case kChangeTableAttributes: {
-      _this->_internal_mutable_change_table_attributes()->::greptime::v1::ChangeTableAttributes::MergeFrom(
-          from._internal_change_table_attributes());
+    case kChangeTableOptions: {
+      _this->_internal_mutable_change_table_options()->::greptime::v1::ChangeTableOptions::MergeFrom(
+          from._internal_change_table_options());
       break;
     }
     case KIND_NOT_SET: {
@@ -5528,9 +5528,9 @@ void AlterRequest::clear_kind() {
       }
       break;
     }
-    case kChangeTableAttributes: {
+    case kChangeTableOptions: {
       if (GetArenaForAllocation() == nullptr) {
-        delete _impl_.kind_.change_table_attributes_;
+        delete _impl_.kind_.change_table_options_;
       }
       break;
     }
@@ -5601,10 +5601,10 @@ const char* AlterRequest::_InternalParse(const char* ptr, ::_pbi::ParseContext*
         } else
           goto handle_unusual;
         continue;
-      // .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
+      // .greptime.v1.ChangeTableOptions change_table_options = 6;
       case 6:
         if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 50)) {
-          ptr = ctx->ParseMessage(_internal_mutable_change_table_attributes(), ptr);
+          ptr = ctx->ParseMessage(_internal_mutable_change_table_options(), ptr);
           CHK_(ptr);
         } else
           goto handle_unusual;
@@ -5671,11 +5671,11 @@ uint8_t* AlterRequest::_InternalSerialize(
         _Internal::change_column_types(this).GetCachedSize(), target, stream);
   }
 
-  // .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
-  if (_internal_has_change_table_attributes()) {
+  // .greptime.v1.ChangeTableOptions change_table_options = 6;
+  if (_internal_has_change_table_options()) {
     target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
-      InternalWriteMessage(6, _Internal::change_table_attributes(this),
-        _Internal::change_table_attributes(this).GetCachedSize(), target, stream);
+      InternalWriteMessage(6, _Internal::change_table_options(this),
+        _Internal::change_table_options(this).GetCachedSize(), target, stream);
   }
 
   if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
@@ -5726,11 +5726,11 @@ size_t AlterRequest::ByteSizeLong() const {
           *_impl_.kind_.change_column_types_);
       break;
     }
-    // .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
-    case kChangeTableAttributes: {
+    // .greptime.v1.ChangeTableOptions change_table_options = 6;
+    case kChangeTableOptions: {
       total_size += 1 +
         ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
-          *_impl_.kind_.change_table_attributes_);
+          *_impl_.kind_.change_table_options_);
       break;
     }
     case KIND_NOT_SET: {
@@ -5777,9 +5777,9 @@ void AlterRequest::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::P
           from._internal_change_column_types());
       break;
     }
-    case kChangeTableAttributes: {
-      _this->_internal_mutable_change_table_attributes()->::greptime::v1::ChangeTableAttributes::MergeFrom(
-          from._internal_change_table_attributes());
+    case kChangeTableOptions: {
+      _this->_internal_mutable_change_table_options()->::greptime::v1::ChangeTableOptions::MergeFrom(
+          from._internal_change_table_options());
       break;
     }
     case KIND_NOT_SET: {
diff --git a/c++/greptime/v1/region/server.pb.h b/c++/greptime/v1/region/server.pb.h
index 300511dc..e92fc67e 100644
--- a/c++/greptime/v1/region/server.pb.h
+++ b/c++/greptime/v1/region/server.pb.h
@@ -3251,7 +3251,7 @@ class AlterRequest final :
     kAddColumns = 2,
     kDropColumns = 3,
     kChangeColumnTypes = 5,
-    kChangeTableAttributes = 6,
+    kChangeTableOptions = 6,
     KIND_NOT_SET = 0,
   };
 
@@ -3338,7 +3338,7 @@ class AlterRequest final :
     kAddColumnsFieldNumber = 2,
     kDropColumnsFieldNumber = 3,
     kChangeColumnTypesFieldNumber = 5,
-    kChangeTableAttributesFieldNumber = 6,
+    kChangeTableOptionsFieldNumber = 6,
   };
   // uint64 region_id = 1;
   void clear_region_id();
@@ -3412,23 +3412,23 @@ class AlterRequest final :
       ::greptime::v1::ChangeColumnTypes* change_column_types);
   ::greptime::v1::ChangeColumnTypes* unsafe_arena_release_change_column_types();
 
-  // .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
-  bool has_change_table_attributes() const;
+  // .greptime.v1.ChangeTableOptions change_table_options = 6;
+  bool has_change_table_options() const;
   private:
-  bool _internal_has_change_table_attributes() const;
+  bool _internal_has_change_table_options() const;
   public:
-  void clear_change_table_attributes();
-  const ::greptime::v1::ChangeTableAttributes& change_table_attributes() const;
-  PROTOBUF_NODISCARD ::greptime::v1::ChangeTableAttributes* release_change_table_attributes();
-  ::greptime::v1::ChangeTableAttributes* mutable_change_table_attributes();
-  void set_allocated_change_table_attributes(::greptime::v1::ChangeTableAttributes* change_table_attributes);
+  void clear_change_table_options();
+  const ::greptime::v1::ChangeTableOptions& change_table_options() const;
+  PROTOBUF_NODISCARD ::greptime::v1::ChangeTableOptions* release_change_table_options();
+  ::greptime::v1::ChangeTableOptions* mutable_change_table_options();
+  void set_allocated_change_table_options(::greptime::v1::ChangeTableOptions* change_table_options);
   private:
-  const ::greptime::v1::ChangeTableAttributes& _internal_change_table_attributes() const;
-  ::greptime::v1::ChangeTableAttributes* _internal_mutable_change_table_attributes();
+  const ::greptime::v1::ChangeTableOptions& _internal_change_table_options() const;
+  ::greptime::v1::ChangeTableOptions* _internal_mutable_change_table_options();
   public:
-  void unsafe_arena_set_allocated_change_table_attributes(
-      ::greptime::v1::ChangeTableAttributes* change_table_attributes);
-  ::greptime::v1::ChangeTableAttributes* unsafe_arena_release_change_table_attributes();
+  void unsafe_arena_set_allocated_change_table_options(
+      ::greptime::v1::ChangeTableOptions* change_table_options);
+  ::greptime::v1::ChangeTableOptions* unsafe_arena_release_change_table_options();
 
   void clear_kind();
   KindCase kind_case() const;
@@ -3438,7 +3438,7 @@ class AlterRequest final :
   void set_has_add_columns();
   void set_has_drop_columns();
   void set_has_change_column_types();
-  void set_has_change_table_attributes();
+  void set_has_change_table_options();
 
   inline bool has_kind() const;
   inline void clear_has_kind();
@@ -3455,7 +3455,7 @@ class AlterRequest final :
       ::greptime::v1::region::AddColumns* add_columns_;
       ::greptime::v1::region::DropColumns* drop_columns_;
       ::greptime::v1::ChangeColumnTypes* change_column_types_;
-      ::greptime::v1::ChangeTableAttributes* change_table_attributes_;
+      ::greptime::v1::ChangeTableOptions* change_table_options_;
     } kind_;
     mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
     uint32_t _oneof_case_[1];
@@ -7712,69 +7712,69 @@ inline ::greptime::v1::ChangeColumnTypes* AlterRequest::mutable_change_column_ty
   return _msg;
 }
 
-// .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
-inline bool AlterRequest::_internal_has_change_table_attributes() const {
-  return kind_case() == kChangeTableAttributes;
+// .greptime.v1.ChangeTableOptions change_table_options = 6;
+inline bool AlterRequest::_internal_has_change_table_options() const {
+  return kind_case() == kChangeTableOptions;
 }
-inline bool AlterRequest::has_change_table_attributes() const {
-  return _internal_has_change_table_attributes();
+inline bool AlterRequest::has_change_table_options() const {
+  return _internal_has_change_table_options();
 }
-inline void AlterRequest::set_has_change_table_attributes() {
-  _impl_._oneof_case_[0] = kChangeTableAttributes;
+inline void AlterRequest::set_has_change_table_options() {
+  _impl_._oneof_case_[0] = kChangeTableOptions;
 }
-inline ::greptime::v1::ChangeTableAttributes* AlterRequest::release_change_table_attributes() {
-  // @@protoc_insertion_point(field_release:greptime.v1.region.AlterRequest.change_table_attributes)
-  if (_internal_has_change_table_attributes()) {
+inline ::greptime::v1::ChangeTableOptions* AlterRequest::release_change_table_options() {
+  // @@protoc_insertion_point(field_release:greptime.v1.region.AlterRequest.change_table_options)
+  if (_internal_has_change_table_options()) {
     clear_has_kind();
-    ::greptime::v1::ChangeTableAttributes* temp = _impl_.kind_.change_table_attributes_;
+    ::greptime::v1::ChangeTableOptions* temp = _impl_.kind_.change_table_options_;
     if (GetArenaForAllocation() != nullptr) {
       temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
     }
-    _impl_.kind_.change_table_attributes_ = nullptr;
+    _impl_.kind_.change_table_options_ = nullptr;
     return temp;
   } else {
     return nullptr;
   }
 }
-inline const ::greptime::v1::ChangeTableAttributes& AlterRequest::_internal_change_table_attributes() const {
-  return _internal_has_change_table_attributes()
-      ? *_impl_.kind_.change_table_attributes_
-      : reinterpret_cast< ::greptime::v1::ChangeTableAttributes&>(::greptime::v1::_ChangeTableAttributes_default_instance_);
+inline const ::greptime::v1::ChangeTableOptions& AlterRequest::_internal_change_table_options() const {
+  return _internal_has_change_table_options()
+      ? *_impl_.kind_.change_table_options_
+      : reinterpret_cast< ::greptime::v1::ChangeTableOptions&>(::greptime::v1::_ChangeTableOptions_default_instance_);
 }
-inline const ::greptime::v1::ChangeTableAttributes& AlterRequest::change_table_attributes() const {
-  // @@protoc_insertion_point(field_get:greptime.v1.region.AlterRequest.change_table_attributes)
-  return _internal_change_table_attributes();
+inline const ::greptime::v1::ChangeTableOptions& AlterRequest::change_table_options() const {
+  // @@protoc_insertion_point(field_get:greptime.v1.region.AlterRequest.change_table_options)
+  return _internal_change_table_options();
 }
-inline ::greptime::v1::ChangeTableAttributes* AlterRequest::unsafe_arena_release_change_table_attributes() {
-  // @@protoc_insertion_point(field_unsafe_arena_release:greptime.v1.region.AlterRequest.change_table_attributes)
-  if (_internal_has_change_table_attributes()) {
+inline ::greptime::v1::ChangeTableOptions* AlterRequest::unsafe_arena_release_change_table_options() {
+  // @@protoc_insertion_point(field_unsafe_arena_release:greptime.v1.region.AlterRequest.change_table_options)
+  if (_internal_has_change_table_options()) {
     clear_has_kind();
-    ::greptime::v1::ChangeTableAttributes* temp = _impl_.kind_.change_table_attributes_;
-    _impl_.kind_.change_table_attributes_ = nullptr;
+    ::greptime::v1::ChangeTableOptions* temp = _impl_.kind_.change_table_options_;
+    _impl_.kind_.change_table_options_ = nullptr;
     return temp;
   } else {
     return nullptr;
   }
 }
-inline void AlterRequest::unsafe_arena_set_allocated_change_table_attributes(::greptime::v1::ChangeTableAttributes* change_table_attributes) {
+inline void AlterRequest::unsafe_arena_set_allocated_change_table_options(::greptime::v1::ChangeTableOptions* change_table_options) {
   clear_kind();
-  if (change_table_attributes) {
-    set_has_change_table_attributes();
-    _impl_.kind_.change_table_attributes_ = change_table_attributes;
+  if (change_table_options) {
+    set_has_change_table_options();
+    _impl_.kind_.change_table_options_ = change_table_options;
   }
-  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:greptime.v1.region.AlterRequest.change_table_attributes)
+  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:greptime.v1.region.AlterRequest.change_table_options)
 }
-inline ::greptime::v1::ChangeTableAttributes* AlterRequest::_internal_mutable_change_table_attributes() {
-  if (!_internal_has_change_table_attributes()) {
+inline ::greptime::v1::ChangeTableOptions* AlterRequest::_internal_mutable_change_table_options() {
+  if (!_internal_has_change_table_options()) {
     clear_kind();
-    set_has_change_table_attributes();
-    _impl_.kind_.change_table_attributes_ = CreateMaybeMessage< ::greptime::v1::ChangeTableAttributes >(GetArenaForAllocation());
+    set_has_change_table_options();
+    _impl_.kind_.change_table_options_ = CreateMaybeMessage< ::greptime::v1::ChangeTableOptions >(GetArenaForAllocation());
   }
-  return _impl_.kind_.change_table_attributes_;
+  return _impl_.kind_.change_table_options_;
 }
-inline ::greptime::v1::ChangeTableAttributes* AlterRequest::mutable_change_table_attributes() {
-  ::greptime::v1::ChangeTableAttributes* _msg = _internal_mutable_change_table_attributes();
-  // @@protoc_insertion_point(field_mutable:greptime.v1.region.AlterRequest.change_table_attributes)
+inline ::greptime::v1::ChangeTableOptions* AlterRequest::mutable_change_table_options() {
+  ::greptime::v1::ChangeTableOptions* _msg = _internal_mutable_change_table_options();
+  // @@protoc_insertion_point(field_mutable:greptime.v1.region.AlterRequest.change_table_options)
   return _msg;
 }
 
diff --git a/go/greptime/v1/ddl.pb.go b/go/greptime/v1/ddl.pb.go
index 7664190e..8abeaf1d 100644
--- a/go/greptime/v1/ddl.pb.go
+++ b/go/greptime/v1/ddl.pb.go
@@ -797,7 +797,7 @@ type AlterExpr struct {
 	//	*AlterExpr_DropColumns
 	//	*AlterExpr_RenameTable
 	//	*AlterExpr_ChangeColumnTypes
-	//	*AlterExpr_ChangeTableAttributes
+	//	*AlterExpr_ChangeTableOptions
 	Kind isAlterExpr_Kind `protobuf_oneof:"kind"`
 }
 
@@ -889,9 +889,9 @@ func (x *AlterExpr) GetChangeColumnTypes() *ChangeColumnTypes {
 	return nil
 }
 
-func (x *AlterExpr) GetChangeTableAttributes() *ChangeTableAttributes {
-	if x, ok := x.GetKind().(*AlterExpr_ChangeTableAttributes); ok {
-		return x.ChangeTableAttributes
+func (x *AlterExpr) GetChangeTableOptions() *ChangeTableOptions {
+	if x, ok := x.GetKind().(*AlterExpr_ChangeTableOptions); ok {
+		return x.ChangeTableOptions
 	}
 	return nil
 }
@@ -916,8 +916,8 @@ type AlterExpr_ChangeColumnTypes struct {
 	ChangeColumnTypes *ChangeColumnTypes `protobuf:"bytes,7,opt,name=change_column_types,json=changeColumnTypes,proto3,oneof"`
 }
 
-type AlterExpr_ChangeTableAttributes struct {
-	ChangeTableAttributes *ChangeTableAttributes `protobuf:"bytes,8,opt,name=change_tableAttributes,json=changeTableAttributes,proto3,oneof"`
+type AlterExpr_ChangeTableOptions struct {
+	ChangeTableOptions *ChangeTableOptions `protobuf:"bytes,8,opt,name=change_table_options,json=changeTableOptions,proto3,oneof"`
 }
 
 func (*AlterExpr_AddColumns) isAlterExpr_Kind() {}
@@ -928,7 +928,7 @@ func (*AlterExpr_RenameTable) isAlterExpr_Kind() {}
 
 func (*AlterExpr_ChangeColumnTypes) isAlterExpr_Kind() {}
 
-func (*AlterExpr_ChangeTableAttributes) isAlterExpr_Kind() {}
+func (*AlterExpr_ChangeTableOptions) isAlterExpr_Kind() {}
 
 type DropTableExpr struct {
 	state         protoimpl.MessageState
@@ -1520,17 +1520,17 @@ func (x *ChangeColumnType) GetTargetTypeExtension() *ColumnDataTypeExtension {
 	return nil
 }
 
-type ChangeTableAttributes struct {
+type ChangeTableOptions struct {
 	state         protoimpl.MessageState
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	AttrName  string `protobuf:"bytes,1,opt,name=attr_name,json=attrName,proto3" json:"attr_name,omitempty"`
-	AttrValue string `protobuf:"bytes,2,opt,name=attr_value,json=attrValue,proto3" json:"attr_value,omitempty"`
+	Key   string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
 }
 
-func (x *ChangeTableAttributes) Reset() {
-	*x = ChangeTableAttributes{}
+func (x *ChangeTableOptions) Reset() {
+	*x = ChangeTableOptions{}
 	if protoimpl.UnsafeEnabled {
 		mi := &file_greptime_v1_ddl_proto_msgTypes[17]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1538,13 +1538,13 @@ func (x *ChangeTableAttributes) Reset() {
 	}
 }
 
-func (x *ChangeTableAttributes) String() string {
+func (x *ChangeTableOptions) String() string {
 	return protoimpl.X.MessageStringOf(x)
 }
 
-func (*ChangeTableAttributes) ProtoMessage() {}
+func (*ChangeTableOptions) ProtoMessage() {}
 
-func (x *ChangeTableAttributes) ProtoReflect() protoreflect.Message {
+func (x *ChangeTableOptions) ProtoReflect() protoreflect.Message {
 	mi := &file_greptime_v1_ddl_proto_msgTypes[17]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@@ -1556,21 +1556,21 @@ func (x *ChangeTableAttributes) ProtoReflect() protoreflect.Message {
 	return mi.MessageOf(x)
 }
 
-// Deprecated: Use ChangeTableAttributes.ProtoReflect.Descriptor instead.
-func (*ChangeTableAttributes) Descriptor() ([]byte, []int) {
+// Deprecated: Use ChangeTableOptions.ProtoReflect.Descriptor instead.
+func (*ChangeTableOptions) Descriptor() ([]byte, []int) {
 	return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{17}
 }
 
-func (x *ChangeTableAttributes) GetAttrName() string {
+func (x *ChangeTableOptions) GetKey() string {
 	if x != nil {
-		return x.AttrName
+		return x.Key
 	}
 	return ""
 }
 
-func (x *ChangeTableAttributes) GetAttrValue() string {
+func (x *ChangeTableOptions) GetValue() string {
 	if x != nil {
-		return x.AttrValue
+		return x.Value
 	}
 	return ""
 }
@@ -2034,7 +2034,7 @@ var file_greptime_v1_ddl_proto_rawDesc = []byte{
 	0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
 	0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
 	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
-	0x22, 0xdf, 0x03, 0x0a, 0x09, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x78, 0x70, 0x72, 0x12, 0x21,
+	0x22, 0xd7, 0x03, 0x0a, 0x09, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x45, 0x78, 0x70, 0x72, 0x12, 0x21,
 	0x0a, 0x0c, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01,
 	0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4e, 0x61, 0x6d,
 	0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65,
@@ -2057,154 +2057,152 @@ var file_greptime_v1_ddl_proto_rawDesc = []byte{
 	0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74,
 	0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6c,
 	0x75, 0x6d, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x48, 0x00, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e,
-	0x67, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x5b, 0x0a,
-	0x16, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74,
-	0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e,
-	0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e,
-	0x67, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65,
-	0x73, 0x48, 0x00, 0x52, 0x15, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65,
-	0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69,
-	0x6e, 0x64, 0x22, 0xc9, 0x01, 0x0a, 0x0d, 0x44, 0x72, 0x6f, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65,
-	0x45, 0x78, 0x70, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x5f,
-	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x61, 0x74, 0x61,
-	0x6c, 0x6f, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x6d,
-	0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63,
-	0x68, 0x65, 0x6d, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c,
-	0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61,
-	0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65,
-	0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x72, 0x65, 0x70,
-	0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x52,
-	0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x64, 0x72, 0x6f, 0x70,
-	0x5f, 0x69, 0x66, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08,
-	0x52, 0x0c, 0x64, 0x72, 0x6f, 0x70, 0x49, 0x66, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0x8d,
-	0x02, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73,
-	0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67,
-	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x61, 0x74,
-	0x61, 0x6c, 0x6f, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x65,
-	0x6d, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73,
-	0x63, 0x68, 0x65, 0x6d, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x14, 0x63, 0x72, 0x65,
-	0x61, 0x74, 0x65, 0x5f, 0x69, 0x66, 0x5f, 0x6e, 0x6f, 0x74, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74,
-	0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49,
-	0x66, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x12, 0x46, 0x0a, 0x07, 0x6f, 0x70,
-	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x72,
-	0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
-	0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x78, 0x70, 0x72, 0x2e, 0x4f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74,
-	0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa7,
-	0x01, 0x0a, 0x11, 0x54, 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65,
-	0x45, 0x78, 0x70, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x5f,
-	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x61, 0x74, 0x61,
-	0x6c, 0x6f, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x6d,
-	0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63,
-	0x68, 0x65, 0x6d, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c,
-	0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61,
-	0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65,
-	0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x67, 0x72, 0x65, 0x70,
-	0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x52,
-	0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x7c, 0x0a, 0x10, 0x44, 0x72, 0x6f, 0x70,
-	0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x21, 0x0a, 0x0c,
+	0x67, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x53, 0x0a,
+	0x14, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x67, 0x72,
+	0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
+	0x54, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x12,
+	0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0xc9, 0x01, 0x0a, 0x0d, 0x44,
+	0x72, 0x6f, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x21, 0x0a, 0x0c,
 	0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
 	0x28, 0x09, 0x52, 0x0b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12,
 	0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
 	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4e, 0x61, 0x6d, 0x65,
+	0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12,
+	0x2f, 0x0a, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x14, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e,
+	0x54, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64,
 	0x12, 0x24, 0x0a, 0x0e, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x69, 0x66, 0x5f, 0x65, 0x78, 0x69, 0x73,
-	0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x64, 0x72, 0x6f, 0x70, 0x49, 0x66,
-	0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0x45, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6c,
-	0x75, 0x6d, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x0b, 0x61, 0x64, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x75,
-	0x6d, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x72, 0x65, 0x70,
-	0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d,
-	0x6e, 0x52, 0x0a, 0x61, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x22, 0x49, 0x0a,
-	0x0b, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x0c,
-	0x64, 0x72, 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03,
-	0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31,
-	0x2e, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x0b, 0x64, 0x72, 0x6f,
-	0x70, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x22, 0x62, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x6e,
-	0x67, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x4d, 0x0a,
-	0x13, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x74,
-	0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x65,
-	0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43,
-	0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e, 0x67,
-	0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x33, 0x0a, 0x0b,
-	0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6e,
-	0x65, 0x77, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x65, 0x77, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d,
-	0x65, 0x22, 0x7e, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x35,
-	0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x64, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31,
-	0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x65, 0x66, 0x52, 0x09, 0x63, 0x6f, 0x6c, 0x75,
-	0x6d, 0x6e, 0x44, 0x65, 0x66, 0x12, 0x3a, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
-	0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69,
-	0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4c,
-	0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
-	0x6e, 0x22, 0xcb, 0x01, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6c, 0x75,
-	0x6d, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
-	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c,
-	0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65,
-	0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67,
-	0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d,
-	0x6e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65,
-	0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x58, 0x0a, 0x15, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f,
-	0x74, 0x79, 0x70, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03,
-	0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e,
+	0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x64, 0x72, 0x6f, 0x70, 0x49, 0x66,
+	0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0x8d, 0x02, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74,
+	0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x21, 0x0a,
+	0x0c, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4e, 0x61, 0x6d, 0x65,
+	0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4e, 0x61, 0x6d,
+	0x65, 0x12, 0x2f, 0x0a, 0x14, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x66, 0x5f, 0x6e,
+	0x6f, 0x74, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52,
+	0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x66, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73,
+	0x74, 0x73, 0x12, 0x46, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20,
+	0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76,
+	0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65,
+	0x45, 0x78, 0x70, 0x72, 0x2e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72,
+	0x79, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x4f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
+	0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c,
+	0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa7, 0x01, 0x0a, 0x11, 0x54, 0x72, 0x75, 0x6e, 0x63,
+	0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x45, 0x78, 0x70, 0x72, 0x12, 0x21, 0x0a, 0x0c,
+	0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01,
+	0x28, 0x09, 0x52, 0x0b, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12,
+	0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x4e, 0x61, 0x6d, 0x65,
+	0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12,
+	0x2f, 0x0a, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28,
+	0x0b, 0x32, 0x14, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e,
+	0x54, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x52, 0x07, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64,
+	0x22, 0x7c, 0x0a, 0x10, 0x44, 0x72, 0x6f, 0x70, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65,
+	0x45, 0x78, 0x70, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x5f,
+	0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x61, 0x74, 0x61,
+	0x6c, 0x6f, 0x67, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x63, 0x68, 0x65, 0x6d,
+	0x61, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x63,
+	0x68, 0x65, 0x6d, 0x61, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x64, 0x72, 0x6f, 0x70,
+	0x5f, 0x69, 0x66, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08,
+	0x52, 0x0c, 0x64, 0x72, 0x6f, 0x70, 0x49, 0x66, 0x45, 0x78, 0x69, 0x73, 0x74, 0x73, 0x22, 0x45,
+	0x0a, 0x0a, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x37, 0x0a, 0x0b,
+	0x61, 0x64, 0x64, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
+	0x0b, 0x32, 0x16, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e,
+	0x41, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x0a, 0x61, 0x64, 0x64, 0x43, 0x6f,
+	0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x22, 0x49, 0x0a, 0x0b, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x6c,
+	0x75, 0x6d, 0x6e, 0x73, 0x12, 0x3a, 0x0a, 0x0c, 0x64, 0x72, 0x6f, 0x70, 0x5f, 0x63, 0x6f, 0x6c,
+	0x75, 0x6d, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x72, 0x65,
+	0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x6c,
+	0x75, 0x6d, 0x6e, 0x52, 0x0b, 0x64, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73,
+	0x22, 0x62, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
+	0x54, 0x79, 0x70, 0x65, 0x73, 0x12, 0x4d, 0x0a, 0x13, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f,
+	0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03,
+	0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31,
+	0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x54, 0x79, 0x70,
+	0x65, 0x52, 0x11, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x54,
+	0x79, 0x70, 0x65, 0x73, 0x22, 0x33, 0x0a, 0x0b, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x54, 0x61,
+	0x62, 0x6c, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x6e, 0x65, 0x77, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65,
+	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6e, 0x65, 0x77,
+	0x54, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x7e, 0x0a, 0x09, 0x41, 0x64, 0x64,
+	0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e,
+	0x5f, 0x64, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x72, 0x65,
+	0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44,
+	0x65, 0x66, 0x52, 0x09, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x65, 0x66, 0x12, 0x3a, 0x0a,
+	0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x1e, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64,
+	0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52,
+	0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xcb, 0x01, 0x0a, 0x10, 0x43, 0x68,
+	0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f,
+	0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20,
+	0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12,
+	0x3c, 0x0a, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02,
+	0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e,
 	0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70,
-	0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x13, 0x74, 0x61, 0x72, 0x67,
-	0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22,
-	0x53, 0x0a, 0x15, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x41, 0x74,
-	0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72,
-	0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x74, 0x74,
-	0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x5f, 0x76, 0x61,
-	0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x56,
-	0x61, 0x6c, 0x75, 0x65, 0x22, 0x20, 0x0a, 0x0a, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x6c, 0x75,
-	0x6d, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x19, 0x0a, 0x07, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x49,
-	0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69,
-	0x64, 0x22, 0x18, 0x0a, 0x06, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69,
-	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, 0x8e, 0x03, 0x0a, 0x09,
-	0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x65, 0x66, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
-	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a,
-	0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
-	0x32, 0x1b, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43,
-	0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x64,
-	0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x6e, 0x75,
-	0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73,
-	0x4e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61,
-	0x75, 0x6c, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x6e,
-	0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x0d, 0x73, 0x65, 0x6d, 0x61, 0x6e,
-	0x74, 0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19,
-	0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6d,
-	0x61, 0x6e, 0x74, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x73, 0x65, 0x6d, 0x61, 0x6e,
-	0x74, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
-	0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e,
-	0x74, 0x12, 0x53, 0x0a, 0x12, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x65, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e,
-	0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75,
-	0x6d, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73,
-	0x69, 0x6f, 0x6e, 0x52, 0x11, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74,
-	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e,
-	0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69,
-	0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4f, 0x70, 0x74, 0x69,
-	0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb7, 0x01, 0x0a,
-	0x11, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69,
-	0x6f, 0x6e, 0x12, 0x50, 0x0a, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74,
-	0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x72, 0x65, 0x70,
-	0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d,
-	0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69,
-	0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e,
-	0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f,
-	0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x0f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65,
-	0x22, 0x24, 0x0a, 0x0c, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65,
-	0x12, 0x09, 0x0a, 0x05, 0x46, 0x49, 0x52, 0x53, 0x54, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x41,
-	0x46, 0x54, 0x45, 0x52, 0x10, 0x01, 0x42, 0x4c, 0x0a, 0x0e, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x65,
-	0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x03, 0x44, 0x64, 0x6c, 0x5a, 0x35, 0x67,
-	0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x72, 0x65, 0x70, 0x74, 0x69,
-	0x6d, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x2f, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2d,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d,
-	0x65, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x65, 0x52, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x58, 0x0a,
+	0x15, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x65, 0x78, 0x74,
+	0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67,
+	0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d,
+	0x6e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
+	0x6f, 0x6e, 0x52, 0x13, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x3c, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6e, 0x67,
+	0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x10, 0x0a,
+	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
+	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
+	0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x20, 0x0a, 0x0a, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x6c,
+	0x75, 0x6d, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x19, 0x0a, 0x07, 0x54, 0x61, 0x62, 0x6c, 0x65,
+	0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02,
+	0x69, 0x64, 0x22, 0x18, 0x0a, 0x06, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02,
+	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, 0x8e, 0x03, 0x0a,
+	0x09, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x65, 0x66, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
+	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38,
+	0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
+	0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e,
+	0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08,
+	0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x6e,
+	0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69,
+	0x73, 0x4e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x64, 0x65, 0x66,
+	0x61, 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x18,
+	0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x6f,
+	0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x0d, 0x73, 0x65, 0x6d, 0x61,
+	0x6e, 0x74, 0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32,
+	0x19, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65,
+	0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x73, 0x65, 0x6d, 0x61,
+	0x6e, 0x74, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d,
+	0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
+	0x6e, 0x74, 0x12, 0x53, 0x0a, 0x12, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x65,
+	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24,
+	0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c,
+	0x75, 0x6d, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e,
+	0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x45, 0x78,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f,
+	0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74,
+	0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb7, 0x01,
+	0x0a, 0x11, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x12, 0x50, 0x0a, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
+	0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x72, 0x65,
+	0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x75,
+	0x6d, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74,
+	0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x63,
+	0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x0f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d,
+	0x65, 0x22, 0x24, 0x0a, 0x0c, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70,
+	0x65, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x49, 0x52, 0x53, 0x54, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05,
+	0x41, 0x46, 0x54, 0x45, 0x52, 0x10, 0x01, 0x42, 0x4c, 0x0a, 0x0e, 0x69, 0x6f, 0x2e, 0x67, 0x72,
+	0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x03, 0x44, 0x64, 0x6c, 0x5a, 0x35,
+	0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x72, 0x65, 0x70, 0x74,
+	0x69, 0x6d, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x2f, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65,
+	0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69,
+	0x6d, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
@@ -2240,7 +2238,7 @@ var file_greptime_v1_ddl_proto_goTypes = []interface{}{
 	(*RenameTable)(nil),                 // 15: greptime.v1.RenameTable
 	(*AddColumn)(nil),                   // 16: greptime.v1.AddColumn
 	(*ChangeColumnType)(nil),            // 17: greptime.v1.ChangeColumnType
-	(*ChangeTableAttributes)(nil),       // 18: greptime.v1.ChangeTableAttributes
+	(*ChangeTableOptions)(nil),          // 18: greptime.v1.ChangeTableOptions
 	(*DropColumn)(nil),                  // 19: greptime.v1.DropColumn
 	(*TableId)(nil),                     // 20: greptime.v1.TableId
 	(*FlowId)(nil),                      // 21: greptime.v1.FlowId
@@ -2280,7 +2278,7 @@ var file_greptime_v1_ddl_proto_depIdxs = []int32{
 	13, // 20: greptime.v1.AlterExpr.drop_columns:type_name -> greptime.v1.DropColumns
 	15, // 21: greptime.v1.AlterExpr.rename_table:type_name -> greptime.v1.RenameTable
 	14, // 22: greptime.v1.AlterExpr.change_column_types:type_name -> greptime.v1.ChangeColumnTypes
-	18, // 23: greptime.v1.AlterExpr.change_tableAttributes:type_name -> greptime.v1.ChangeTableAttributes
+	18, // 23: greptime.v1.AlterExpr.change_table_options:type_name -> greptime.v1.ChangeTableOptions
 	20, // 24: greptime.v1.DropTableExpr.table_id:type_name -> greptime.v1.TableId
 	26, // 25: greptime.v1.CreateDatabaseExpr.options:type_name -> greptime.v1.CreateDatabaseExpr.OptionsEntry
 	20, // 26: greptime.v1.TruncateTableExpr.table_id:type_name -> greptime.v1.TableId
@@ -2515,7 +2513,7 @@ func file_greptime_v1_ddl_proto_init() {
 			}
 		}
 		file_greptime_v1_ddl_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ChangeTableAttributes); i {
+			switch v := v.(*ChangeTableOptions); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -2603,7 +2601,7 @@ func file_greptime_v1_ddl_proto_init() {
 		(*AlterExpr_DropColumns)(nil),
 		(*AlterExpr_RenameTable)(nil),
 		(*AlterExpr_ChangeColumnTypes)(nil),
-		(*AlterExpr_ChangeTableAttributes)(nil),
+		(*AlterExpr_ChangeTableOptions)(nil),
 	}
 	type x struct{}
 	out := protoimpl.TypeBuilder{
diff --git a/java/src/main/java/io/greptime/v1/Ddl.java b/java/src/main/java/io/greptime/v1/Ddl.java
index 82bbea29..56d41a6b 100644
--- a/java/src/main/java/io/greptime/v1/Ddl.java
+++ b/java/src/main/java/io/greptime/v1/Ddl.java
@@ -11738,19 +11738,19 @@ public interface AlterExprOrBuilder extends
     io.greptime.v1.Ddl.ChangeColumnTypesOrBuilder getChangeColumnTypesOrBuilder();
 
     /**
-     * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8;
-     * @return Whether the changeTableAttributes field is set.
+     * .greptime.v1.ChangeTableOptions change_table_options = 8;
+     * @return Whether the changeTableOptions field is set.
      */
-    boolean hasChangeTableAttributes();
+    boolean hasChangeTableOptions();
     /**
-     * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8;
-     * @return The changeTableAttributes.
+     * .greptime.v1.ChangeTableOptions change_table_options = 8;
+     * @return The changeTableOptions.
      */
-    io.greptime.v1.Ddl.ChangeTableAttributes getChangeTableAttributes();
+    io.greptime.v1.Ddl.ChangeTableOptions getChangeTableOptions();
     /**
-     * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8;
+     * .greptime.v1.ChangeTableOptions change_table_options = 8;
      */
-    io.greptime.v1.Ddl.ChangeTableAttributesOrBuilder getChangeTableAttributesOrBuilder();
+    io.greptime.v1.Ddl.ChangeTableOptionsOrBuilder getChangeTableOptionsOrBuilder();
 
     public io.greptime.v1.Ddl.AlterExpr.KindCase getKindCase();
   }
@@ -11877,14 +11877,14 @@ private AlterExpr(
               break;
             }
             case 66: {
-              io.greptime.v1.Ddl.ChangeTableAttributes.Builder subBuilder = null;
+              io.greptime.v1.Ddl.ChangeTableOptions.Builder subBuilder = null;
               if (kindCase_ == 8) {
-                subBuilder = ((io.greptime.v1.Ddl.ChangeTableAttributes) kind_).toBuilder();
+                subBuilder = ((io.greptime.v1.Ddl.ChangeTableOptions) kind_).toBuilder();
               }
               kind_ =
-                  input.readMessage(io.greptime.v1.Ddl.ChangeTableAttributes.parser(), extensionRegistry);
+                  input.readMessage(io.greptime.v1.Ddl.ChangeTableOptions.parser(), extensionRegistry);
               if (subBuilder != null) {
-                subBuilder.mergeFrom((io.greptime.v1.Ddl.ChangeTableAttributes) kind_);
+                subBuilder.mergeFrom((io.greptime.v1.Ddl.ChangeTableOptions) kind_);
                 kind_ = subBuilder.buildPartial();
               }
               kindCase_ = 8;
@@ -11933,7 +11933,7 @@ public enum KindCase
       DROP_COLUMNS(5),
       RENAME_TABLE(6),
       CHANGE_COLUMN_TYPES(7),
-      CHANGE_TABLEATTRIBUTES(8),
+      CHANGE_TABLE_OPTIONS(8),
       KIND_NOT_SET(0);
       private final int value;
       private KindCase(int value) {
@@ -11955,7 +11955,7 @@ public static KindCase forNumber(int value) {
           case 5: return DROP_COLUMNS;
           case 6: return RENAME_TABLE;
           case 7: return CHANGE_COLUMN_TYPES;
-          case 8: return CHANGE_TABLEATTRIBUTES;
+          case 8: return CHANGE_TABLE_OPTIONS;
           case 0: return KIND_NOT_SET;
           default: return null;
         }
@@ -12209,35 +12209,35 @@ public io.greptime.v1.Ddl.ChangeColumnTypesOrBuilder getChangeColumnTypesOrBuild
       return io.greptime.v1.Ddl.ChangeColumnTypes.getDefaultInstance();
     }
 
-    public static final int CHANGE_TABLEATTRIBUTES_FIELD_NUMBER = 8;
+    public static final int CHANGE_TABLE_OPTIONS_FIELD_NUMBER = 8;
     /**
-     * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8;
-     * @return Whether the changeTableAttributes field is set.
+     * .greptime.v1.ChangeTableOptions change_table_options = 8;
+     * @return Whether the changeTableOptions field is set.
      */
     @java.lang.Override
-    public boolean hasChangeTableAttributes() {
+    public boolean hasChangeTableOptions() {
       return kindCase_ == 8;
     }
     /**
-     * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8;
-     * @return The changeTableAttributes.
+     * .greptime.v1.ChangeTableOptions change_table_options = 8;
+     * @return The changeTableOptions.
      */
     @java.lang.Override
-    public io.greptime.v1.Ddl.ChangeTableAttributes getChangeTableAttributes() {
+    public io.greptime.v1.Ddl.ChangeTableOptions getChangeTableOptions() {
       if (kindCase_ == 8) {
-         return (io.greptime.v1.Ddl.ChangeTableAttributes) kind_;
+         return (io.greptime.v1.Ddl.ChangeTableOptions) kind_;
       }
-      return io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance();
+      return io.greptime.v1.Ddl.ChangeTableOptions.getDefaultInstance();
     }
     /**
-     * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8;
+     * .greptime.v1.ChangeTableOptions change_table_options = 8;
      */
     @java.lang.Override
-    public io.greptime.v1.Ddl.ChangeTableAttributesOrBuilder getChangeTableAttributesOrBuilder() {
+    public io.greptime.v1.Ddl.ChangeTableOptionsOrBuilder getChangeTableOptionsOrBuilder() {
       if (kindCase_ == 8) {
-         return (io.greptime.v1.Ddl.ChangeTableAttributes) kind_;
+         return (io.greptime.v1.Ddl.ChangeTableOptions) kind_;
       }
-      return io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance();
+      return io.greptime.v1.Ddl.ChangeTableOptions.getDefaultInstance();
     }
 
     private byte memoizedIsInitialized = -1;
@@ -12276,7 +12276,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output)
         output.writeMessage(7, (io.greptime.v1.Ddl.ChangeColumnTypes) kind_);
       }
       if (kindCase_ == 8) {
-        output.writeMessage(8, (io.greptime.v1.Ddl.ChangeTableAttributes) kind_);
+        output.writeMessage(8, (io.greptime.v1.Ddl.ChangeTableOptions) kind_);
       }
       unknownFields.writeTo(output);
     }
@@ -12314,7 +12314,7 @@ public int getSerializedSize() {
       }
       if (kindCase_ == 8) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(8, (io.greptime.v1.Ddl.ChangeTableAttributes) kind_);
+          .computeMessageSize(8, (io.greptime.v1.Ddl.ChangeTableOptions) kind_);
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -12356,8 +12356,8 @@ public boolean equals(final java.lang.Object obj) {
               .equals(other.getChangeColumnTypes())) return false;
           break;
         case 8:
-          if (!getChangeTableAttributes()
-              .equals(other.getChangeTableAttributes())) return false;
+          if (!getChangeTableOptions()
+              .equals(other.getChangeTableOptions())) return false;
           break;
         case 0:
         default:
@@ -12397,8 +12397,8 @@ public int hashCode() {
           hash = (53 * hash) + getChangeColumnTypes().hashCode();
           break;
         case 8:
-          hash = (37 * hash) + CHANGE_TABLEATTRIBUTES_FIELD_NUMBER;
-          hash = (53 * hash) + getChangeTableAttributes().hashCode();
+          hash = (37 * hash) + CHANGE_TABLE_OPTIONS_FIELD_NUMBER;
+          hash = (53 * hash) + getChangeTableOptions().hashCode();
           break;
         case 0:
         default:
@@ -12602,10 +12602,10 @@ public io.greptime.v1.Ddl.AlterExpr buildPartial() {
           }
         }
         if (kindCase_ == 8) {
-          if (changeTableAttributesBuilder_ == null) {
+          if (changeTableOptionsBuilder_ == null) {
             result.kind_ = kind_;
           } else {
-            result.kind_ = changeTableAttributesBuilder_.build();
+            result.kind_ = changeTableOptionsBuilder_.build();
           }
         }
         result.kindCase_ = kindCase_;
@@ -12686,8 +12686,8 @@ public Builder mergeFrom(io.greptime.v1.Ddl.AlterExpr other) {
             mergeChangeColumnTypes(other.getChangeColumnTypes());
             break;
           }
-          case CHANGE_TABLEATTRIBUTES: {
-            mergeChangeTableAttributes(other.getChangeTableAttributes());
+          case CHANGE_TABLE_OPTIONS: {
+            mergeChangeTableOptions(other.getChangeTableOptions());
             break;
           }
           case KIND_NOT_SET: {
@@ -13535,71 +13535,71 @@ public io.greptime.v1.Ddl.ChangeColumnTypesOrBuilder getChangeColumnTypesOrBuild
       }
 
       private com.google.protobuf.SingleFieldBuilderV3<
-          io.greptime.v1.Ddl.ChangeTableAttributes, io.greptime.v1.Ddl.ChangeTableAttributes.Builder, io.greptime.v1.Ddl.ChangeTableAttributesOrBuilder> changeTableAttributesBuilder_;
+          io.greptime.v1.Ddl.ChangeTableOptions, io.greptime.v1.Ddl.ChangeTableOptions.Builder, io.greptime.v1.Ddl.ChangeTableOptionsOrBuilder> changeTableOptionsBuilder_;
       /**
-       * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8;
-       * @return Whether the changeTableAttributes field is set.
+       * .greptime.v1.ChangeTableOptions change_table_options = 8;
+       * @return Whether the changeTableOptions field is set.
        */
       @java.lang.Override
-      public boolean hasChangeTableAttributes() {
+      public boolean hasChangeTableOptions() {
         return kindCase_ == 8;
       }
       /**
-       * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8;
-       * @return The changeTableAttributes.
+       * .greptime.v1.ChangeTableOptions change_table_options = 8;
+       * @return The changeTableOptions.
        */
       @java.lang.Override
-      public io.greptime.v1.Ddl.ChangeTableAttributes getChangeTableAttributes() {
-        if (changeTableAttributesBuilder_ == null) {
+      public io.greptime.v1.Ddl.ChangeTableOptions getChangeTableOptions() {
+        if (changeTableOptionsBuilder_ == null) {
           if (kindCase_ == 8) {
-            return (io.greptime.v1.Ddl.ChangeTableAttributes) kind_;
+            return (io.greptime.v1.Ddl.ChangeTableOptions) kind_;
           }
-          return io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance();
+          return io.greptime.v1.Ddl.ChangeTableOptions.getDefaultInstance();
         } else {
           if (kindCase_ == 8) {
-            return changeTableAttributesBuilder_.getMessage();
+            return changeTableOptionsBuilder_.getMessage();
           }
-          return io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance();
+          return io.greptime.v1.Ddl.ChangeTableOptions.getDefaultInstance();
         }
       }
       /**
-       * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8;
+       * .greptime.v1.ChangeTableOptions change_table_options = 8;
        */
-      public Builder setChangeTableAttributes(io.greptime.v1.Ddl.ChangeTableAttributes value) {
-        if (changeTableAttributesBuilder_ == null) {
+      public Builder setChangeTableOptions(io.greptime.v1.Ddl.ChangeTableOptions value) {
+        if (changeTableOptionsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
           kind_ = value;
           onChanged();
         } else {
-          changeTableAttributesBuilder_.setMessage(value);
+          changeTableOptionsBuilder_.setMessage(value);
         }
         kindCase_ = 8;
         return this;
       }
       /**
-       * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8;
+       * .greptime.v1.ChangeTableOptions change_table_options = 8;
        */
-      public Builder setChangeTableAttributes(
-          io.greptime.v1.Ddl.ChangeTableAttributes.Builder builderForValue) {
-        if (changeTableAttributesBuilder_ == null) {
+      public Builder setChangeTableOptions(
+          io.greptime.v1.Ddl.ChangeTableOptions.Builder builderForValue) {
+        if (changeTableOptionsBuilder_ == null) {
           kind_ = builderForValue.build();
           onChanged();
         } else {
-          changeTableAttributesBuilder_.setMessage(builderForValue.build());
+          changeTableOptionsBuilder_.setMessage(builderForValue.build());
         }
         kindCase_ = 8;
         return this;
       }
       /**
-       * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8;
+       * .greptime.v1.ChangeTableOptions change_table_options = 8;
        */
-      public Builder mergeChangeTableAttributes(io.greptime.v1.Ddl.ChangeTableAttributes value) {
-        if (changeTableAttributesBuilder_ == null) {
+      public Builder mergeChangeTableOptions(io.greptime.v1.Ddl.ChangeTableOptions value) {
+        if (changeTableOptionsBuilder_ == null) {
           if (kindCase_ == 8 &&
-              kind_ != io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance()) {
-            kind_ = io.greptime.v1.Ddl.ChangeTableAttributes.newBuilder((io.greptime.v1.Ddl.ChangeTableAttributes) kind_)
+              kind_ != io.greptime.v1.Ddl.ChangeTableOptions.getDefaultInstance()) {
+            kind_ = io.greptime.v1.Ddl.ChangeTableOptions.newBuilder((io.greptime.v1.Ddl.ChangeTableOptions) kind_)
                 .mergeFrom(value).buildPartial();
           } else {
             kind_ = value;
@@ -13607,19 +13607,19 @@ public Builder mergeChangeTableAttributes(io.greptime.v1.Ddl.ChangeTableAttribut
           onChanged();
         } else {
           if (kindCase_ == 8) {
-            changeTableAttributesBuilder_.mergeFrom(value);
+            changeTableOptionsBuilder_.mergeFrom(value);
           } else {
-            changeTableAttributesBuilder_.setMessage(value);
+            changeTableOptionsBuilder_.setMessage(value);
           }
         }
         kindCase_ = 8;
         return this;
       }
       /**
-       * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8;
+       * .greptime.v1.ChangeTableOptions change_table_options = 8;
        */
-      public Builder clearChangeTableAttributes() {
-        if (changeTableAttributesBuilder_ == null) {
+      public Builder clearChangeTableOptions() {
+        if (changeTableOptionsBuilder_ == null) {
           if (kindCase_ == 8) {
             kindCase_ = 0;
             kind_ = null;
@@ -13630,50 +13630,50 @@ public Builder clearChangeTableAttributes() {
             kindCase_ = 0;
             kind_ = null;
           }
-          changeTableAttributesBuilder_.clear();
+          changeTableOptionsBuilder_.clear();
         }
         return this;
       }
       /**
-       * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8;
+       * .greptime.v1.ChangeTableOptions change_table_options = 8;
        */
-      public io.greptime.v1.Ddl.ChangeTableAttributes.Builder getChangeTableAttributesBuilder() {
-        return getChangeTableAttributesFieldBuilder().getBuilder();
+      public io.greptime.v1.Ddl.ChangeTableOptions.Builder getChangeTableOptionsBuilder() {
+        return getChangeTableOptionsFieldBuilder().getBuilder();
       }
       /**
-       * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8;
+       * .greptime.v1.ChangeTableOptions change_table_options = 8;
        */
       @java.lang.Override
-      public io.greptime.v1.Ddl.ChangeTableAttributesOrBuilder getChangeTableAttributesOrBuilder() {
-        if ((kindCase_ == 8) && (changeTableAttributesBuilder_ != null)) {
-          return changeTableAttributesBuilder_.getMessageOrBuilder();
+      public io.greptime.v1.Ddl.ChangeTableOptionsOrBuilder getChangeTableOptionsOrBuilder() {
+        if ((kindCase_ == 8) && (changeTableOptionsBuilder_ != null)) {
+          return changeTableOptionsBuilder_.getMessageOrBuilder();
         } else {
           if (kindCase_ == 8) {
-            return (io.greptime.v1.Ddl.ChangeTableAttributes) kind_;
+            return (io.greptime.v1.Ddl.ChangeTableOptions) kind_;
           }
-          return io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance();
+          return io.greptime.v1.Ddl.ChangeTableOptions.getDefaultInstance();
         }
       }
       /**
-       * .greptime.v1.ChangeTableAttributes change_tableAttributes = 8;
+       * .greptime.v1.ChangeTableOptions change_table_options = 8;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          io.greptime.v1.Ddl.ChangeTableAttributes, io.greptime.v1.Ddl.ChangeTableAttributes.Builder, io.greptime.v1.Ddl.ChangeTableAttributesOrBuilder> 
-          getChangeTableAttributesFieldBuilder() {
-        if (changeTableAttributesBuilder_ == null) {
+          io.greptime.v1.Ddl.ChangeTableOptions, io.greptime.v1.Ddl.ChangeTableOptions.Builder, io.greptime.v1.Ddl.ChangeTableOptionsOrBuilder> 
+          getChangeTableOptionsFieldBuilder() {
+        if (changeTableOptionsBuilder_ == null) {
           if (!(kindCase_ == 8)) {
-            kind_ = io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance();
+            kind_ = io.greptime.v1.Ddl.ChangeTableOptions.getDefaultInstance();
           }
-          changeTableAttributesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              io.greptime.v1.Ddl.ChangeTableAttributes, io.greptime.v1.Ddl.ChangeTableAttributes.Builder, io.greptime.v1.Ddl.ChangeTableAttributesOrBuilder>(
-                  (io.greptime.v1.Ddl.ChangeTableAttributes) kind_,
+          changeTableOptionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              io.greptime.v1.Ddl.ChangeTableOptions, io.greptime.v1.Ddl.ChangeTableOptions.Builder, io.greptime.v1.Ddl.ChangeTableOptionsOrBuilder>(
+                  (io.greptime.v1.Ddl.ChangeTableOptions) kind_,
                   getParentForChildren(),
                   isClean());
           kind_ = null;
         }
         kindCase_ = 8;
         onChanged();;
-        return changeTableAttributesBuilder_;
+        return changeTableOptionsBuilder_;
       }
       @java.lang.Override
       public final Builder setUnknownFields(
@@ -22513,56 +22513,56 @@ public io.greptime.v1.Ddl.ChangeColumnType getDefaultInstanceForType() {
 
   }
 
-  public interface ChangeTableAttributesOrBuilder extends
-      // @@protoc_insertion_point(interface_extends:greptime.v1.ChangeTableAttributes)
+  public interface ChangeTableOptionsOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:greptime.v1.ChangeTableOptions)
       com.google.protobuf.MessageOrBuilder {
 
     /**
-     * string attr_name = 1;
-     * @return The attrName.
+     * string key = 1;
+     * @return The key.
      */
-    java.lang.String getAttrName();
+    java.lang.String getKey();
     /**
-     * string attr_name = 1;
-     * @return The bytes for attrName.
+     * string key = 1;
+     * @return The bytes for key.
      */
     com.google.protobuf.ByteString
-        getAttrNameBytes();
+        getKeyBytes();
 
     /**
-     * string attr_value = 2;
-     * @return The attrValue.
+     * string value = 2;
+     * @return The value.
      */
-    java.lang.String getAttrValue();
+    java.lang.String getValue();
     /**
-     * string attr_value = 2;
-     * @return The bytes for attrValue.
+     * string value = 2;
+     * @return The bytes for value.
      */
     com.google.protobuf.ByteString
-        getAttrValueBytes();
+        getValueBytes();
   }
   /**
-   * Protobuf type {@code greptime.v1.ChangeTableAttributes}
+   * Protobuf type {@code greptime.v1.ChangeTableOptions}
    */
-  public static final class ChangeTableAttributes extends
+  public static final class ChangeTableOptions extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:greptime.v1.ChangeTableAttributes)
-      ChangeTableAttributesOrBuilder {
+      // @@protoc_insertion_point(message_implements:greptime.v1.ChangeTableOptions)
+      ChangeTableOptionsOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use ChangeTableAttributes.newBuilder() to construct.
-    private ChangeTableAttributes(com.google.protobuf.GeneratedMessageV3.Builder builder) {
+    // Use ChangeTableOptions.newBuilder() to construct.
+    private ChangeTableOptions(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
-    private ChangeTableAttributes() {
-      attrName_ = "";
-      attrValue_ = "";
+    private ChangeTableOptions() {
+      key_ = "";
+      value_ = "";
     }
 
     @java.lang.Override
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new ChangeTableAttributes();
+      return new ChangeTableOptions();
     }
 
     @java.lang.Override
@@ -22570,7 +22570,7 @@ protected java.lang.Object newInstance(
     getUnknownFields() {
       return this.unknownFields;
     }
-    private ChangeTableAttributes(
+    private ChangeTableOptions(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -22591,13 +22591,13 @@ private ChangeTableAttributes(
             case 10: {
               java.lang.String s = input.readStringRequireUtf8();
 
-              attrName_ = s;
+              key_ = s;
               break;
             }
             case 18: {
               java.lang.String s = input.readStringRequireUtf8();
 
-              attrValue_ = s;
+              value_ = s;
               break;
             }
             default: {
@@ -22623,87 +22623,87 @@ private ChangeTableAttributes(
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableAttributes_descriptor;
+      return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableOptions_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableAttributes_fieldAccessorTable
+      return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableOptions_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.greptime.v1.Ddl.ChangeTableAttributes.class, io.greptime.v1.Ddl.ChangeTableAttributes.Builder.class);
+              io.greptime.v1.Ddl.ChangeTableOptions.class, io.greptime.v1.Ddl.ChangeTableOptions.Builder.class);
     }
 
-    public static final int ATTR_NAME_FIELD_NUMBER = 1;
-    private volatile java.lang.Object attrName_;
+    public static final int KEY_FIELD_NUMBER = 1;
+    private volatile java.lang.Object key_;
     /**
-     * string attr_name = 1;
-     * @return The attrName.
+     * string key = 1;
+     * @return The key.
      */
     @java.lang.Override
-    public java.lang.String getAttrName() {
-      java.lang.Object ref = attrName_;
+    public java.lang.String getKey() {
+      java.lang.Object ref = key_;
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
         com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
-        attrName_ = s;
+        key_ = s;
         return s;
       }
     }
     /**
-     * string attr_name = 1;
-     * @return The bytes for attrName.
+     * string key = 1;
+     * @return The bytes for key.
      */
     @java.lang.Override
     public com.google.protobuf.ByteString
-        getAttrNameBytes() {
-      java.lang.Object ref = attrName_;
+        getKeyBytes() {
+      java.lang.Object ref = key_;
       if (ref instanceof java.lang.String) {
         com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
-        attrName_ = b;
+        key_ = b;
         return b;
       } else {
         return (com.google.protobuf.ByteString) ref;
       }
     }
 
-    public static final int ATTR_VALUE_FIELD_NUMBER = 2;
-    private volatile java.lang.Object attrValue_;
+    public static final int VALUE_FIELD_NUMBER = 2;
+    private volatile java.lang.Object value_;
     /**
-     * string attr_value = 2;
-     * @return The attrValue.
+     * string value = 2;
+     * @return The value.
      */
     @java.lang.Override
-    public java.lang.String getAttrValue() {
-      java.lang.Object ref = attrValue_;
+    public java.lang.String getValue() {
+      java.lang.Object ref = value_;
       if (ref instanceof java.lang.String) {
         return (java.lang.String) ref;
       } else {
         com.google.protobuf.ByteString bs = 
             (com.google.protobuf.ByteString) ref;
         java.lang.String s = bs.toStringUtf8();
-        attrValue_ = s;
+        value_ = s;
         return s;
       }
     }
     /**
-     * string attr_value = 2;
-     * @return The bytes for attrValue.
+     * string value = 2;
+     * @return The bytes for value.
      */
     @java.lang.Override
     public com.google.protobuf.ByteString
-        getAttrValueBytes() {
-      java.lang.Object ref = attrValue_;
+        getValueBytes() {
+      java.lang.Object ref = value_;
       if (ref instanceof java.lang.String) {
         com.google.protobuf.ByteString b = 
             com.google.protobuf.ByteString.copyFromUtf8(
                 (java.lang.String) ref);
-        attrValue_ = b;
+        value_ = b;
         return b;
       } else {
         return (com.google.protobuf.ByteString) ref;
@@ -22724,11 +22724,11 @@ public final boolean isInitialized() {
     @java.lang.Override
     public void writeTo(com.google.protobuf.CodedOutputStream output)
                         throws java.io.IOException {
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(attrName_)) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, attrName_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(key_)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, key_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(attrValue_)) {
-        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, attrValue_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(value_)) {
+        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, value_);
       }
       unknownFields.writeTo(output);
     }
@@ -22739,11 +22739,11 @@ public int getSerializedSize() {
       if (size != -1) return size;
 
       size = 0;
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(attrName_)) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, attrName_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(key_)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, key_);
       }
-      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(attrValue_)) {
-        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, attrValue_);
+      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(value_)) {
+        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, value_);
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -22755,15 +22755,15 @@ public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof io.greptime.v1.Ddl.ChangeTableAttributes)) {
+      if (!(obj instanceof io.greptime.v1.Ddl.ChangeTableOptions)) {
         return super.equals(obj);
       }
-      io.greptime.v1.Ddl.ChangeTableAttributes other = (io.greptime.v1.Ddl.ChangeTableAttributes) obj;
+      io.greptime.v1.Ddl.ChangeTableOptions other = (io.greptime.v1.Ddl.ChangeTableOptions) obj;
 
-      if (!getAttrName()
-          .equals(other.getAttrName())) return false;
-      if (!getAttrValue()
-          .equals(other.getAttrValue())) return false;
+      if (!getKey()
+          .equals(other.getKey())) return false;
+      if (!getValue()
+          .equals(other.getValue())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -22775,78 +22775,78 @@ public int hashCode() {
       }
       int hash = 41;
       hash = (19 * hash) + getDescriptor().hashCode();
-      hash = (37 * hash) + ATTR_NAME_FIELD_NUMBER;
-      hash = (53 * hash) + getAttrName().hashCode();
-      hash = (37 * hash) + ATTR_VALUE_FIELD_NUMBER;
-      hash = (53 * hash) + getAttrValue().hashCode();
+      hash = (37 * hash) + KEY_FIELD_NUMBER;
+      hash = (53 * hash) + getKey().hashCode();
+      hash = (37 * hash) + VALUE_FIELD_NUMBER;
+      hash = (53 * hash) + getValue().hashCode();
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
     }
 
-    public static io.greptime.v1.Ddl.ChangeTableAttributes parseFrom(
+    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.greptime.v1.Ddl.ChangeTableAttributes parseFrom(
+    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.greptime.v1.Ddl.ChangeTableAttributes parseFrom(
+    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.greptime.v1.Ddl.ChangeTableAttributes parseFrom(
+    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.greptime.v1.Ddl.ChangeTableAttributes parseFrom(byte[] data)
+    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.greptime.v1.Ddl.ChangeTableAttributes parseFrom(
+    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.greptime.v1.Ddl.ChangeTableAttributes parseFrom(java.io.InputStream input)
+    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static io.greptime.v1.Ddl.ChangeTableAttributes parseFrom(
+    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.greptime.v1.Ddl.ChangeTableAttributes parseDelimitedFrom(java.io.InputStream input)
+    public static io.greptime.v1.Ddl.ChangeTableOptions parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
-    public static io.greptime.v1.Ddl.ChangeTableAttributes parseDelimitedFrom(
+    public static io.greptime.v1.Ddl.ChangeTableOptions parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.greptime.v1.Ddl.ChangeTableAttributes parseFrom(
+    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static io.greptime.v1.Ddl.ChangeTableAttributes parseFrom(
+    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -22859,7 +22859,7 @@ public static io.greptime.v1.Ddl.ChangeTableAttributes parseFrom(
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(io.greptime.v1.Ddl.ChangeTableAttributes prototype) {
+    public static Builder newBuilder(io.greptime.v1.Ddl.ChangeTableOptions prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -22875,26 +22875,26 @@ protected Builder newBuilderForType(
       return builder;
     }
     /**
-     * Protobuf type {@code greptime.v1.ChangeTableAttributes}
+     * Protobuf type {@code greptime.v1.ChangeTableOptions}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder implements
-        // @@protoc_insertion_point(builder_implements:greptime.v1.ChangeTableAttributes)
-        io.greptime.v1.Ddl.ChangeTableAttributesOrBuilder {
+        // @@protoc_insertion_point(builder_implements:greptime.v1.ChangeTableOptions)
+        io.greptime.v1.Ddl.ChangeTableOptionsOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableAttributes_descriptor;
+        return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableOptions_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableAttributes_fieldAccessorTable
+        return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableOptions_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                io.greptime.v1.Ddl.ChangeTableAttributes.class, io.greptime.v1.Ddl.ChangeTableAttributes.Builder.class);
+                io.greptime.v1.Ddl.ChangeTableOptions.class, io.greptime.v1.Ddl.ChangeTableOptions.Builder.class);
       }
 
-      // Construct using io.greptime.v1.Ddl.ChangeTableAttributes.newBuilder()
+      // Construct using io.greptime.v1.Ddl.ChangeTableOptions.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -22912,9 +22912,9 @@ private void maybeForceBuilderInitialization() {
       @java.lang.Override
       public Builder clear() {
         super.clear();
-        attrName_ = "";
+        key_ = "";
 
-        attrValue_ = "";
+        value_ = "";
 
         return this;
       }
@@ -22922,17 +22922,17 @@ public Builder clear() {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableAttributes_descriptor;
+        return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableOptions_descriptor;
       }
 
       @java.lang.Override
-      public io.greptime.v1.Ddl.ChangeTableAttributes getDefaultInstanceForType() {
-        return io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance();
+      public io.greptime.v1.Ddl.ChangeTableOptions getDefaultInstanceForType() {
+        return io.greptime.v1.Ddl.ChangeTableOptions.getDefaultInstance();
       }
 
       @java.lang.Override
-      public io.greptime.v1.Ddl.ChangeTableAttributes build() {
-        io.greptime.v1.Ddl.ChangeTableAttributes result = buildPartial();
+      public io.greptime.v1.Ddl.ChangeTableOptions build() {
+        io.greptime.v1.Ddl.ChangeTableOptions result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -22940,10 +22940,10 @@ public io.greptime.v1.Ddl.ChangeTableAttributes build() {
       }
 
       @java.lang.Override
-      public io.greptime.v1.Ddl.ChangeTableAttributes buildPartial() {
-        io.greptime.v1.Ddl.ChangeTableAttributes result = new io.greptime.v1.Ddl.ChangeTableAttributes(this);
-        result.attrName_ = attrName_;
-        result.attrValue_ = attrValue_;
+      public io.greptime.v1.Ddl.ChangeTableOptions buildPartial() {
+        io.greptime.v1.Ddl.ChangeTableOptions result = new io.greptime.v1.Ddl.ChangeTableOptions(this);
+        result.key_ = key_;
+        result.value_ = value_;
         onBuilt();
         return result;
       }
@@ -22982,22 +22982,22 @@ public Builder addRepeatedField(
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof io.greptime.v1.Ddl.ChangeTableAttributes) {
-          return mergeFrom((io.greptime.v1.Ddl.ChangeTableAttributes)other);
+        if (other instanceof io.greptime.v1.Ddl.ChangeTableOptions) {
+          return mergeFrom((io.greptime.v1.Ddl.ChangeTableOptions)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(io.greptime.v1.Ddl.ChangeTableAttributes other) {
-        if (other == io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance()) return this;
-        if (!other.getAttrName().isEmpty()) {
-          attrName_ = other.attrName_;
+      public Builder mergeFrom(io.greptime.v1.Ddl.ChangeTableOptions other) {
+        if (other == io.greptime.v1.Ddl.ChangeTableOptions.getDefaultInstance()) return this;
+        if (!other.getKey().isEmpty()) {
+          key_ = other.key_;
           onChanged();
         }
-        if (!other.getAttrValue().isEmpty()) {
-          attrValue_ = other.attrValue_;
+        if (!other.getValue().isEmpty()) {
+          value_ = other.value_;
           onChanged();
         }
         this.mergeUnknownFields(other.unknownFields);
@@ -23015,11 +23015,11 @@ public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        io.greptime.v1.Ddl.ChangeTableAttributes parsedMessage = null;
+        io.greptime.v1.Ddl.ChangeTableOptions parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (io.greptime.v1.Ddl.ChangeTableAttributes) e.getUnfinishedMessage();
+          parsedMessage = (io.greptime.v1.Ddl.ChangeTableOptions) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -23029,154 +23029,154 @@ public Builder mergeFrom(
         return this;
       }
 
-      private java.lang.Object attrName_ = "";
+      private java.lang.Object key_ = "";
       /**
-       * string attr_name = 1;
-       * @return The attrName.
+       * string key = 1;
+       * @return The key.
        */
-      public java.lang.String getAttrName() {
-        java.lang.Object ref = attrName_;
+      public java.lang.String getKey() {
+        java.lang.Object ref = key_;
         if (!(ref instanceof java.lang.String)) {
           com.google.protobuf.ByteString bs =
               (com.google.protobuf.ByteString) ref;
           java.lang.String s = bs.toStringUtf8();
-          attrName_ = s;
+          key_ = s;
           return s;
         } else {
           return (java.lang.String) ref;
         }
       }
       /**
-       * string attr_name = 1;
-       * @return The bytes for attrName.
+       * string key = 1;
+       * @return The bytes for key.
        */
       public com.google.protobuf.ByteString
-          getAttrNameBytes() {
-        java.lang.Object ref = attrName_;
+          getKeyBytes() {
+        java.lang.Object ref = key_;
         if (ref instanceof String) {
           com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
-          attrName_ = b;
+          key_ = b;
           return b;
         } else {
           return (com.google.protobuf.ByteString) ref;
         }
       }
       /**
-       * string attr_name = 1;
-       * @param value The attrName to set.
+       * string key = 1;
+       * @param value The key to set.
        * @return This builder for chaining.
        */
-      public Builder setAttrName(
+      public Builder setKey(
           java.lang.String value) {
         if (value == null) {
     throw new NullPointerException();
   }
   
-        attrName_ = value;
+        key_ = value;
         onChanged();
         return this;
       }
       /**
-       * string attr_name = 1;
+       * string key = 1;
        * @return This builder for chaining.
        */
-      public Builder clearAttrName() {
+      public Builder clearKey() {
         
-        attrName_ = getDefaultInstance().getAttrName();
+        key_ = getDefaultInstance().getKey();
         onChanged();
         return this;
       }
       /**
-       * string attr_name = 1;
-       * @param value The bytes for attrName to set.
+       * string key = 1;
+       * @param value The bytes for key to set.
        * @return This builder for chaining.
        */
-      public Builder setAttrNameBytes(
+      public Builder setKeyBytes(
           com.google.protobuf.ByteString value) {
         if (value == null) {
     throw new NullPointerException();
   }
   checkByteStringIsUtf8(value);
         
-        attrName_ = value;
+        key_ = value;
         onChanged();
         return this;
       }
 
-      private java.lang.Object attrValue_ = "";
+      private java.lang.Object value_ = "";
       /**
-       * string attr_value = 2;
-       * @return The attrValue.
+       * string value = 2;
+       * @return The value.
        */
-      public java.lang.String getAttrValue() {
-        java.lang.Object ref = attrValue_;
+      public java.lang.String getValue() {
+        java.lang.Object ref = value_;
         if (!(ref instanceof java.lang.String)) {
           com.google.protobuf.ByteString bs =
               (com.google.protobuf.ByteString) ref;
           java.lang.String s = bs.toStringUtf8();
-          attrValue_ = s;
+          value_ = s;
           return s;
         } else {
           return (java.lang.String) ref;
         }
       }
       /**
-       * string attr_value = 2;
-       * @return The bytes for attrValue.
+       * string value = 2;
+       * @return The bytes for value.
        */
       public com.google.protobuf.ByteString
-          getAttrValueBytes() {
-        java.lang.Object ref = attrValue_;
+          getValueBytes() {
+        java.lang.Object ref = value_;
         if (ref instanceof String) {
           com.google.protobuf.ByteString b = 
               com.google.protobuf.ByteString.copyFromUtf8(
                   (java.lang.String) ref);
-          attrValue_ = b;
+          value_ = b;
           return b;
         } else {
           return (com.google.protobuf.ByteString) ref;
         }
       }
       /**
-       * string attr_value = 2;
-       * @param value The attrValue to set.
+       * string value = 2;
+       * @param value The value to set.
        * @return This builder for chaining.
        */
-      public Builder setAttrValue(
+      public Builder setValue(
           java.lang.String value) {
         if (value == null) {
     throw new NullPointerException();
   }
   
-        attrValue_ = value;
+        value_ = value;
         onChanged();
         return this;
       }
       /**
-       * string attr_value = 2;
+       * string value = 2;
        * @return This builder for chaining.
        */
-      public Builder clearAttrValue() {
+      public Builder clearValue() {
         
-        attrValue_ = getDefaultInstance().getAttrValue();
+        value_ = getDefaultInstance().getValue();
         onChanged();
         return this;
       }
       /**
-       * string attr_value = 2;
-       * @param value The bytes for attrValue to set.
+       * string value = 2;
+       * @param value The bytes for value to set.
        * @return This builder for chaining.
        */
-      public Builder setAttrValueBytes(
+      public Builder setValueBytes(
           com.google.protobuf.ByteString value) {
         if (value == null) {
     throw new NullPointerException();
   }
   checkByteStringIsUtf8(value);
         
-        attrValue_ = value;
+        value_ = value;
         onChanged();
         return this;
       }
@@ -23193,41 +23193,41 @@ public final Builder mergeUnknownFields(
       }
 
 
-      // @@protoc_insertion_point(builder_scope:greptime.v1.ChangeTableAttributes)
+      // @@protoc_insertion_point(builder_scope:greptime.v1.ChangeTableOptions)
     }
 
-    // @@protoc_insertion_point(class_scope:greptime.v1.ChangeTableAttributes)
-    private static final io.greptime.v1.Ddl.ChangeTableAttributes DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:greptime.v1.ChangeTableOptions)
+    private static final io.greptime.v1.Ddl.ChangeTableOptions DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new io.greptime.v1.Ddl.ChangeTableAttributes();
+      DEFAULT_INSTANCE = new io.greptime.v1.Ddl.ChangeTableOptions();
     }
 
-    public static io.greptime.v1.Ddl.ChangeTableAttributes getDefaultInstance() {
+    public static io.greptime.v1.Ddl.ChangeTableOptions getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser
-        PARSER = new com.google.protobuf.AbstractParser() {
+    private static final com.google.protobuf.Parser
+        PARSER = new com.google.protobuf.AbstractParser() {
       @java.lang.Override
-      public ChangeTableAttributes parsePartialFrom(
+      public ChangeTableOptions parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ChangeTableAttributes(input, extensionRegistry);
+        return new ChangeTableOptions(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser parser() {
+    public static com.google.protobuf.Parser parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser getParserForType() {
+    public com.google.protobuf.Parser getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public io.greptime.v1.Ddl.ChangeTableAttributes getDefaultInstanceForType() {
+    public io.greptime.v1.Ddl.ChangeTableOptions getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -27274,10 +27274,10 @@ public io.greptime.v1.Ddl.AddColumnLocation getDefaultInstanceForType() {
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_greptime_v1_ChangeColumnType_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
-    internal_static_greptime_v1_ChangeTableAttributes_descriptor;
+    internal_static_greptime_v1_ChangeTableOptions_descriptor;
   private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-      internal_static_greptime_v1_ChangeTableAttributes_fieldAccessorTable;
+      internal_static_greptime_v1_ChangeTableOptions_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_greptime_v1_DropColumn_descriptor;
   private static final 
@@ -27358,60 +27358,60 @@ public io.greptime.v1.Ddl.AddColumnLocation getDefaultInstanceForType() {
       "ime.v1.CreateTableExpr.TableOptionsEntry" +
       "\022&\n\010table_id\030\n \001(\0132\024.greptime.v1.TableId" +
       "\022\016\n\006engine\030\014 \001(\t\0323\n\021TableOptionsEntry\022\013\n" +
-      "\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\353\002\n\tAlterE" +
+      "\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\346\002\n\tAlterE" +
       "xpr\022\024\n\014catalog_name\030\001 \001(\t\022\023\n\013schema_name" +
       "\030\002 \001(\t\022\022\n\ntable_name\030\003 \001(\t\022.\n\013add_column" +
       "s\030\004 \001(\0132\027.greptime.v1.AddColumnsH\000\0220\n\014dr" +
       "op_columns\030\005 \001(\0132\030.greptime.v1.DropColum" +
       "nsH\000\0220\n\014rename_table\030\006 \001(\0132\030.greptime.v1" +
       ".RenameTableH\000\022=\n\023change_column_types\030\007 " +
-      "\001(\0132\036.greptime.v1.ChangeColumnTypesH\000\022D\n" +
-      "\026change_tableAttributes\030\010 \001(\0132\".greptime" +
-      ".v1.ChangeTableAttributesH\000B\006\n\004kind\"\216\001\n\r" +
-      "DropTableExpr\022\024\n\014catalog_name\030\001 \001(\t\022\023\n\013s" +
-      "chema_name\030\002 \001(\t\022\022\n\ntable_name\030\003 \001(\t\022&\n\010" +
-      "table_id\030\004 \001(\0132\024.greptime.v1.TableId\022\026\n\016" +
-      "drop_if_exists\030\005 \001(\010\"\314\001\n\022CreateDatabaseE" +
-      "xpr\022\024\n\014catalog_name\030\001 \001(\t\022\023\n\013schema_name" +
-      "\030\002 \001(\t\022\034\n\024create_if_not_exists\030\003 \001(\010\022=\n\007" +
-      "options\030\004 \003(\0132,.greptime.v1.CreateDataba" +
-      "seExpr.OptionsEntry\032.\n\014OptionsEntry\022\013\n\003k" +
-      "ey\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"z\n\021TruncateT" +
+      "\001(\0132\036.greptime.v1.ChangeColumnTypesH\000\022?\n" +
+      "\024change_table_options\030\010 \001(\0132\037.greptime.v" +
+      "1.ChangeTableOptionsH\000B\006\n\004kind\"\216\001\n\rDropT" +
       "ableExpr\022\024\n\014catalog_name\030\001 \001(\t\022\023\n\013schema" +
       "_name\030\002 \001(\t\022\022\n\ntable_name\030\003 \001(\t\022&\n\010table" +
-      "_id\030\004 \001(\0132\024.greptime.v1.TableId\"U\n\020DropD" +
-      "atabaseExpr\022\024\n\014catalog_name\030\001 \001(\t\022\023\n\013sch" +
-      "ema_name\030\002 \001(\t\022\026\n\016drop_if_exists\030\003 \001(\010\"9" +
-      "\n\nAddColumns\022+\n\013add_columns\030\001 \003(\0132\026.grep" +
-      "time.v1.AddColumn\"<\n\013DropColumns\022-\n\014drop" +
-      "_columns\030\001 \003(\0132\027.greptime.v1.DropColumn\"" +
-      "O\n\021ChangeColumnTypes\022:\n\023change_column_ty" +
-      "pes\030\001 \003(\0132\035.greptime.v1.ChangeColumnType" +
-      "\"%\n\013RenameTable\022\026\n\016new_table_name\030\001 \001(\t\"" +
-      "i\n\tAddColumn\022*\n\ncolumn_def\030\001 \001(\0132\026.grept" +
-      "ime.v1.ColumnDef\0220\n\010location\030\003 \001(\0132\036.gre" +
-      "ptime.v1.AddColumnLocation\"\236\001\n\020ChangeCol" +
-      "umnType\022\023\n\013column_name\030\001 \001(\t\0220\n\013target_t" +
-      "ype\030\002 \001(\0162\033.greptime.v1.ColumnDataType\022C" +
-      "\n\025target_type_extension\030\003 \001(\0132$.greptime" +
-      ".v1.ColumnDataTypeExtension\">\n\025ChangeTab" +
-      "leAttributes\022\021\n\tattr_name\030\001 \001(\t\022\022\n\nattr_" +
-      "value\030\002 \001(\t\"\032\n\nDropColumn\022\014\n\004name\030\001 \001(\t\"" +
-      "\025\n\007TableId\022\n\n\002id\030\001 \001(\r\"\024\n\006FlowId\022\n\n\002id\030\001" +
-      " \001(\r\"\254\002\n\tColumnDef\022\014\n\004name\030\001 \001(\t\022.\n\tdata" +
-      "_type\030\002 \001(\0162\033.greptime.v1.ColumnDataType" +
-      "\022\023\n\013is_nullable\030\003 \001(\010\022\032\n\022default_constra" +
-      "int\030\004 \001(\014\0220\n\rsemantic_type\030\005 \001(\0162\031.grept" +
-      "ime.v1.SemanticType\022\017\n\007comment\030\006 \001(\t\022@\n\022" +
-      "datatype_extension\030\007 \001(\0132$.greptime.v1.C" +
-      "olumnDataTypeExtension\022+\n\007options\030\010 \001(\0132" +
-      "\032.greptime.v1.ColumnOptions\"\230\001\n\021AddColum" +
-      "nLocation\022B\n\rlocation_type\030\001 \001(\0162+.grept" +
-      "ime.v1.AddColumnLocation.LocationType\022\031\n" +
-      "\021after_column_name\030\002 \001(\t\"$\n\014LocationType" +
-      "\022\t\n\005FIRST\020\000\022\t\n\005AFTER\020\001BL\n\016io.greptime.v1" +
-      "B\003DdlZ5github.com/GreptimeTeam/greptime-" +
-      "proto/go/greptime/v1b\006proto3"
+      "_id\030\004 \001(\0132\024.greptime.v1.TableId\022\026\n\016drop_" +
+      "if_exists\030\005 \001(\010\"\314\001\n\022CreateDatabaseExpr\022\024" +
+      "\n\014catalog_name\030\001 \001(\t\022\023\n\013schema_name\030\002 \001(" +
+      "\t\022\034\n\024create_if_not_exists\030\003 \001(\010\022=\n\007optio" +
+      "ns\030\004 \003(\0132,.greptime.v1.CreateDatabaseExp" +
+      "r.OptionsEntry\032.\n\014OptionsEntry\022\013\n\003key\030\001 " +
+      "\001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"z\n\021TruncateTableE" +
+      "xpr\022\024\n\014catalog_name\030\001 \001(\t\022\023\n\013schema_name" +
+      "\030\002 \001(\t\022\022\n\ntable_name\030\003 \001(\t\022&\n\010table_id\030\004" +
+      " \001(\0132\024.greptime.v1.TableId\"U\n\020DropDataba" +
+      "seExpr\022\024\n\014catalog_name\030\001 \001(\t\022\023\n\013schema_n" +
+      "ame\030\002 \001(\t\022\026\n\016drop_if_exists\030\003 \001(\010\"9\n\nAdd" +
+      "Columns\022+\n\013add_columns\030\001 \003(\0132\026.greptime." +
+      "v1.AddColumn\"<\n\013DropColumns\022-\n\014drop_colu" +
+      "mns\030\001 \003(\0132\027.greptime.v1.DropColumn\"O\n\021Ch" +
+      "angeColumnTypes\022:\n\023change_column_types\030\001" +
+      " \003(\0132\035.greptime.v1.ChangeColumnType\"%\n\013R" +
+      "enameTable\022\026\n\016new_table_name\030\001 \001(\t\"i\n\tAd" +
+      "dColumn\022*\n\ncolumn_def\030\001 \001(\0132\026.greptime.v" +
+      "1.ColumnDef\0220\n\010location\030\003 \001(\0132\036.greptime" +
+      ".v1.AddColumnLocation\"\236\001\n\020ChangeColumnTy" +
+      "pe\022\023\n\013column_name\030\001 \001(\t\0220\n\013target_type\030\002" +
+      " \001(\0162\033.greptime.v1.ColumnDataType\022C\n\025tar" +
+      "get_type_extension\030\003 \001(\0132$.greptime.v1.C" +
+      "olumnDataTypeExtension\"0\n\022ChangeTableOpt" +
+      "ions\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t\"\032\n\nDrop" +
+      "Column\022\014\n\004name\030\001 \001(\t\"\025\n\007TableId\022\n\n\002id\030\001 " +
+      "\001(\r\"\024\n\006FlowId\022\n\n\002id\030\001 \001(\r\"\254\002\n\tColumnDef\022" +
+      "\014\n\004name\030\001 \001(\t\022.\n\tdata_type\030\002 \001(\0162\033.grept" +
+      "ime.v1.ColumnDataType\022\023\n\013is_nullable\030\003 \001" +
+      "(\010\022\032\n\022default_constraint\030\004 \001(\014\0220\n\rsemant" +
+      "ic_type\030\005 \001(\0162\031.greptime.v1.SemanticType" +
+      "\022\017\n\007comment\030\006 \001(\t\022@\n\022datatype_extension\030" +
+      "\007 \001(\0132$.greptime.v1.ColumnDataTypeExtens" +
+      "ion\022+\n\007options\030\010 \001(\0132\032.greptime.v1.Colum" +
+      "nOptions\"\230\001\n\021AddColumnLocation\022B\n\rlocati" +
+      "on_type\030\001 \001(\0162+.greptime.v1.AddColumnLoc" +
+      "ation.LocationType\022\031\n\021after_column_name\030" +
+      "\002 \001(\t\"$\n\014LocationType\022\t\n\005FIRST\020\000\022\t\n\005AFTE" +
+      "R\020\001BL\n\016io.greptime.v1B\003DdlZ5github.com/G" +
+      "reptimeTeam/greptime-proto/go/greptime/v" +
+      "1b\006proto3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
@@ -27471,7 +27471,7 @@ public io.greptime.v1.Ddl.AddColumnLocation getDefaultInstanceForType() {
     internal_static_greptime_v1_AlterExpr_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_greptime_v1_AlterExpr_descriptor,
-        new java.lang.String[] { "CatalogName", "SchemaName", "TableName", "AddColumns", "DropColumns", "RenameTable", "ChangeColumnTypes", "ChangeTableAttributes", "Kind", });
+        new java.lang.String[] { "CatalogName", "SchemaName", "TableName", "AddColumns", "DropColumns", "RenameTable", "ChangeColumnTypes", "ChangeTableOptions", "Kind", });
     internal_static_greptime_v1_DropTableExpr_descriptor =
       getDescriptor().getMessageTypes().get(7);
     internal_static_greptime_v1_DropTableExpr_fieldAccessorTable = new
@@ -27538,12 +27538,12 @@ public io.greptime.v1.Ddl.AddColumnLocation getDefaultInstanceForType() {
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_greptime_v1_ChangeColumnType_descriptor,
         new java.lang.String[] { "ColumnName", "TargetType", "TargetTypeExtension", });
-    internal_static_greptime_v1_ChangeTableAttributes_descriptor =
+    internal_static_greptime_v1_ChangeTableOptions_descriptor =
       getDescriptor().getMessageTypes().get(17);
-    internal_static_greptime_v1_ChangeTableAttributes_fieldAccessorTable = new
+    internal_static_greptime_v1_ChangeTableOptions_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
-        internal_static_greptime_v1_ChangeTableAttributes_descriptor,
-        new java.lang.String[] { "AttrName", "AttrValue", });
+        internal_static_greptime_v1_ChangeTableOptions_descriptor,
+        new java.lang.String[] { "Key", "Value", });
     internal_static_greptime_v1_DropColumn_descriptor =
       getDescriptor().getMessageTypes().get(18);
     internal_static_greptime_v1_DropColumn_fieldAccessorTable = new
diff --git a/java/src/main/java/io/greptime/v1/region/Server.java b/java/src/main/java/io/greptime/v1/region/Server.java
index 581107a0..52a2b24d 100644
--- a/java/src/main/java/io/greptime/v1/region/Server.java
+++ b/java/src/main/java/io/greptime/v1/region/Server.java
@@ -16434,19 +16434,19 @@ public interface AlterRequestOrBuilder extends
     io.greptime.v1.Ddl.ChangeColumnTypesOrBuilder getChangeColumnTypesOrBuilder();
 
     /**
-     * .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
-     * @return Whether the changeTableAttributes field is set.
+     * .greptime.v1.ChangeTableOptions change_table_options = 6;
+     * @return Whether the changeTableOptions field is set.
      */
-    boolean hasChangeTableAttributes();
+    boolean hasChangeTableOptions();
     /**
-     * .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
-     * @return The changeTableAttributes.
+     * .greptime.v1.ChangeTableOptions change_table_options = 6;
+     * @return The changeTableOptions.
      */
-    io.greptime.v1.Ddl.ChangeTableAttributes getChangeTableAttributes();
+    io.greptime.v1.Ddl.ChangeTableOptions getChangeTableOptions();
     /**
-     * .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
+     * .greptime.v1.ChangeTableOptions change_table_options = 6;
      */
-    io.greptime.v1.Ddl.ChangeTableAttributesOrBuilder getChangeTableAttributesOrBuilder();
+    io.greptime.v1.Ddl.ChangeTableOptionsOrBuilder getChangeTableOptionsOrBuilder();
 
     /**
      * 
@@ -16558,14 +16558,14 @@ private AlterRequest(
               break;
             }
             case 50: {
-              io.greptime.v1.Ddl.ChangeTableAttributes.Builder subBuilder = null;
+              io.greptime.v1.Ddl.ChangeTableOptions.Builder subBuilder = null;
               if (kindCase_ == 6) {
-                subBuilder = ((io.greptime.v1.Ddl.ChangeTableAttributes) kind_).toBuilder();
+                subBuilder = ((io.greptime.v1.Ddl.ChangeTableOptions) kind_).toBuilder();
               }
               kind_ =
-                  input.readMessage(io.greptime.v1.Ddl.ChangeTableAttributes.parser(), extensionRegistry);
+                  input.readMessage(io.greptime.v1.Ddl.ChangeTableOptions.parser(), extensionRegistry);
               if (subBuilder != null) {
-                subBuilder.mergeFrom((io.greptime.v1.Ddl.ChangeTableAttributes) kind_);
+                subBuilder.mergeFrom((io.greptime.v1.Ddl.ChangeTableOptions) kind_);
                 kind_ = subBuilder.buildPartial();
               }
               kindCase_ = 6;
@@ -16613,7 +16613,7 @@ public enum KindCase
       ADD_COLUMNS(2),
       DROP_COLUMNS(3),
       CHANGE_COLUMN_TYPES(5),
-      CHANGE_TABLE_ATTRIBUTES(6),
+      CHANGE_TABLE_OPTIONS(6),
       KIND_NOT_SET(0);
       private final int value;
       private KindCase(int value) {
@@ -16634,7 +16634,7 @@ public static KindCase forNumber(int value) {
           case 2: return ADD_COLUMNS;
           case 3: return DROP_COLUMNS;
           case 5: return CHANGE_COLUMN_TYPES;
-          case 6: return CHANGE_TABLE_ATTRIBUTES;
+          case 6: return CHANGE_TABLE_OPTIONS;
           case 0: return KIND_NOT_SET;
           default: return null;
         }
@@ -16754,35 +16754,35 @@ public io.greptime.v1.Ddl.ChangeColumnTypesOrBuilder getChangeColumnTypesOrBuild
       return io.greptime.v1.Ddl.ChangeColumnTypes.getDefaultInstance();
     }
 
-    public static final int CHANGE_TABLE_ATTRIBUTES_FIELD_NUMBER = 6;
+    public static final int CHANGE_TABLE_OPTIONS_FIELD_NUMBER = 6;
     /**
-     * .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
-     * @return Whether the changeTableAttributes field is set.
+     * .greptime.v1.ChangeTableOptions change_table_options = 6;
+     * @return Whether the changeTableOptions field is set.
      */
     @java.lang.Override
-    public boolean hasChangeTableAttributes() {
+    public boolean hasChangeTableOptions() {
       return kindCase_ == 6;
     }
     /**
-     * .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
-     * @return The changeTableAttributes.
+     * .greptime.v1.ChangeTableOptions change_table_options = 6;
+     * @return The changeTableOptions.
      */
     @java.lang.Override
-    public io.greptime.v1.Ddl.ChangeTableAttributes getChangeTableAttributes() {
+    public io.greptime.v1.Ddl.ChangeTableOptions getChangeTableOptions() {
       if (kindCase_ == 6) {
-         return (io.greptime.v1.Ddl.ChangeTableAttributes) kind_;
+         return (io.greptime.v1.Ddl.ChangeTableOptions) kind_;
       }
-      return io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance();
+      return io.greptime.v1.Ddl.ChangeTableOptions.getDefaultInstance();
     }
     /**
-     * .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
+     * .greptime.v1.ChangeTableOptions change_table_options = 6;
      */
     @java.lang.Override
-    public io.greptime.v1.Ddl.ChangeTableAttributesOrBuilder getChangeTableAttributesOrBuilder() {
+    public io.greptime.v1.Ddl.ChangeTableOptionsOrBuilder getChangeTableOptionsOrBuilder() {
       if (kindCase_ == 6) {
-         return (io.greptime.v1.Ddl.ChangeTableAttributes) kind_;
+         return (io.greptime.v1.Ddl.ChangeTableOptions) kind_;
       }
-      return io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance();
+      return io.greptime.v1.Ddl.ChangeTableOptions.getDefaultInstance();
     }
 
     public static final int SCHEMA_VERSION_FIELD_NUMBER = 4;
@@ -16830,7 +16830,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output)
         output.writeMessage(5, (io.greptime.v1.Ddl.ChangeColumnTypes) kind_);
       }
       if (kindCase_ == 6) {
-        output.writeMessage(6, (io.greptime.v1.Ddl.ChangeTableAttributes) kind_);
+        output.writeMessage(6, (io.greptime.v1.Ddl.ChangeTableOptions) kind_);
       }
       unknownFields.writeTo(output);
     }
@@ -16863,7 +16863,7 @@ public int getSerializedSize() {
       }
       if (kindCase_ == 6) {
         size += com.google.protobuf.CodedOutputStream
-          .computeMessageSize(6, (io.greptime.v1.Ddl.ChangeTableAttributes) kind_);
+          .computeMessageSize(6, (io.greptime.v1.Ddl.ChangeTableOptions) kind_);
       }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
@@ -16899,8 +16899,8 @@ public boolean equals(final java.lang.Object obj) {
               .equals(other.getChangeColumnTypes())) return false;
           break;
         case 6:
-          if (!getChangeTableAttributes()
-              .equals(other.getChangeTableAttributes())) return false;
+          if (!getChangeTableOptions()
+              .equals(other.getChangeTableOptions())) return false;
           break;
         case 0:
         default:
@@ -16936,8 +16936,8 @@ public int hashCode() {
           hash = (53 * hash) + getChangeColumnTypes().hashCode();
           break;
         case 6:
-          hash = (37 * hash) + CHANGE_TABLE_ATTRIBUTES_FIELD_NUMBER;
-          hash = (53 * hash) + getChangeTableAttributes().hashCode();
+          hash = (37 * hash) + CHANGE_TABLE_OPTIONS_FIELD_NUMBER;
+          hash = (53 * hash) + getChangeTableOptions().hashCode();
           break;
         case 0:
         default:
@@ -17130,10 +17130,10 @@ public io.greptime.v1.region.Server.AlterRequest buildPartial() {
           }
         }
         if (kindCase_ == 6) {
-          if (changeTableAttributesBuilder_ == null) {
+          if (changeTableOptionsBuilder_ == null) {
             result.kind_ = kind_;
           } else {
-            result.kind_ = changeTableAttributesBuilder_.build();
+            result.kind_ = changeTableOptionsBuilder_.build();
           }
         }
         result.schemaVersion_ = schemaVersion_;
@@ -17205,8 +17205,8 @@ public Builder mergeFrom(io.greptime.v1.region.Server.AlterRequest other) {
             mergeChangeColumnTypes(other.getChangeColumnTypes());
             break;
           }
-          case CHANGE_TABLE_ATTRIBUTES: {
-            mergeChangeTableAttributes(other.getChangeTableAttributes());
+          case CHANGE_TABLE_OPTIONS: {
+            mergeChangeTableOptions(other.getChangeTableOptions());
             break;
           }
           case KIND_NOT_SET: {
@@ -17715,71 +17715,71 @@ public io.greptime.v1.Ddl.ChangeColumnTypesOrBuilder getChangeColumnTypesOrBuild
       }
 
       private com.google.protobuf.SingleFieldBuilderV3<
-          io.greptime.v1.Ddl.ChangeTableAttributes, io.greptime.v1.Ddl.ChangeTableAttributes.Builder, io.greptime.v1.Ddl.ChangeTableAttributesOrBuilder> changeTableAttributesBuilder_;
+          io.greptime.v1.Ddl.ChangeTableOptions, io.greptime.v1.Ddl.ChangeTableOptions.Builder, io.greptime.v1.Ddl.ChangeTableOptionsOrBuilder> changeTableOptionsBuilder_;
       /**
-       * .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
-       * @return Whether the changeTableAttributes field is set.
+       * .greptime.v1.ChangeTableOptions change_table_options = 6;
+       * @return Whether the changeTableOptions field is set.
        */
       @java.lang.Override
-      public boolean hasChangeTableAttributes() {
+      public boolean hasChangeTableOptions() {
         return kindCase_ == 6;
       }
       /**
-       * .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
-       * @return The changeTableAttributes.
+       * .greptime.v1.ChangeTableOptions change_table_options = 6;
+       * @return The changeTableOptions.
        */
       @java.lang.Override
-      public io.greptime.v1.Ddl.ChangeTableAttributes getChangeTableAttributes() {
-        if (changeTableAttributesBuilder_ == null) {
+      public io.greptime.v1.Ddl.ChangeTableOptions getChangeTableOptions() {
+        if (changeTableOptionsBuilder_ == null) {
           if (kindCase_ == 6) {
-            return (io.greptime.v1.Ddl.ChangeTableAttributes) kind_;
+            return (io.greptime.v1.Ddl.ChangeTableOptions) kind_;
           }
-          return io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance();
+          return io.greptime.v1.Ddl.ChangeTableOptions.getDefaultInstance();
         } else {
           if (kindCase_ == 6) {
-            return changeTableAttributesBuilder_.getMessage();
+            return changeTableOptionsBuilder_.getMessage();
           }
-          return io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance();
+          return io.greptime.v1.Ddl.ChangeTableOptions.getDefaultInstance();
         }
       }
       /**
-       * .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
+       * .greptime.v1.ChangeTableOptions change_table_options = 6;
        */
-      public Builder setChangeTableAttributes(io.greptime.v1.Ddl.ChangeTableAttributes value) {
-        if (changeTableAttributesBuilder_ == null) {
+      public Builder setChangeTableOptions(io.greptime.v1.Ddl.ChangeTableOptions value) {
+        if (changeTableOptionsBuilder_ == null) {
           if (value == null) {
             throw new NullPointerException();
           }
           kind_ = value;
           onChanged();
         } else {
-          changeTableAttributesBuilder_.setMessage(value);
+          changeTableOptionsBuilder_.setMessage(value);
         }
         kindCase_ = 6;
         return this;
       }
       /**
-       * .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
+       * .greptime.v1.ChangeTableOptions change_table_options = 6;
        */
-      public Builder setChangeTableAttributes(
-          io.greptime.v1.Ddl.ChangeTableAttributes.Builder builderForValue) {
-        if (changeTableAttributesBuilder_ == null) {
+      public Builder setChangeTableOptions(
+          io.greptime.v1.Ddl.ChangeTableOptions.Builder builderForValue) {
+        if (changeTableOptionsBuilder_ == null) {
           kind_ = builderForValue.build();
           onChanged();
         } else {
-          changeTableAttributesBuilder_.setMessage(builderForValue.build());
+          changeTableOptionsBuilder_.setMessage(builderForValue.build());
         }
         kindCase_ = 6;
         return this;
       }
       /**
-       * .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
+       * .greptime.v1.ChangeTableOptions change_table_options = 6;
        */
-      public Builder mergeChangeTableAttributes(io.greptime.v1.Ddl.ChangeTableAttributes value) {
-        if (changeTableAttributesBuilder_ == null) {
+      public Builder mergeChangeTableOptions(io.greptime.v1.Ddl.ChangeTableOptions value) {
+        if (changeTableOptionsBuilder_ == null) {
           if (kindCase_ == 6 &&
-              kind_ != io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance()) {
-            kind_ = io.greptime.v1.Ddl.ChangeTableAttributes.newBuilder((io.greptime.v1.Ddl.ChangeTableAttributes) kind_)
+              kind_ != io.greptime.v1.Ddl.ChangeTableOptions.getDefaultInstance()) {
+            kind_ = io.greptime.v1.Ddl.ChangeTableOptions.newBuilder((io.greptime.v1.Ddl.ChangeTableOptions) kind_)
                 .mergeFrom(value).buildPartial();
           } else {
             kind_ = value;
@@ -17787,19 +17787,19 @@ public Builder mergeChangeTableAttributes(io.greptime.v1.Ddl.ChangeTableAttribut
           onChanged();
         } else {
           if (kindCase_ == 6) {
-            changeTableAttributesBuilder_.mergeFrom(value);
+            changeTableOptionsBuilder_.mergeFrom(value);
           } else {
-            changeTableAttributesBuilder_.setMessage(value);
+            changeTableOptionsBuilder_.setMessage(value);
           }
         }
         kindCase_ = 6;
         return this;
       }
       /**
-       * .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
+       * .greptime.v1.ChangeTableOptions change_table_options = 6;
        */
-      public Builder clearChangeTableAttributes() {
-        if (changeTableAttributesBuilder_ == null) {
+      public Builder clearChangeTableOptions() {
+        if (changeTableOptionsBuilder_ == null) {
           if (kindCase_ == 6) {
             kindCase_ = 0;
             kind_ = null;
@@ -17810,50 +17810,50 @@ public Builder clearChangeTableAttributes() {
             kindCase_ = 0;
             kind_ = null;
           }
-          changeTableAttributesBuilder_.clear();
+          changeTableOptionsBuilder_.clear();
         }
         return this;
       }
       /**
-       * .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
+       * .greptime.v1.ChangeTableOptions change_table_options = 6;
        */
-      public io.greptime.v1.Ddl.ChangeTableAttributes.Builder getChangeTableAttributesBuilder() {
-        return getChangeTableAttributesFieldBuilder().getBuilder();
+      public io.greptime.v1.Ddl.ChangeTableOptions.Builder getChangeTableOptionsBuilder() {
+        return getChangeTableOptionsFieldBuilder().getBuilder();
       }
       /**
-       * .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
+       * .greptime.v1.ChangeTableOptions change_table_options = 6;
        */
       @java.lang.Override
-      public io.greptime.v1.Ddl.ChangeTableAttributesOrBuilder getChangeTableAttributesOrBuilder() {
-        if ((kindCase_ == 6) && (changeTableAttributesBuilder_ != null)) {
-          return changeTableAttributesBuilder_.getMessageOrBuilder();
+      public io.greptime.v1.Ddl.ChangeTableOptionsOrBuilder getChangeTableOptionsOrBuilder() {
+        if ((kindCase_ == 6) && (changeTableOptionsBuilder_ != null)) {
+          return changeTableOptionsBuilder_.getMessageOrBuilder();
         } else {
           if (kindCase_ == 6) {
-            return (io.greptime.v1.Ddl.ChangeTableAttributes) kind_;
+            return (io.greptime.v1.Ddl.ChangeTableOptions) kind_;
           }
-          return io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance();
+          return io.greptime.v1.Ddl.ChangeTableOptions.getDefaultInstance();
         }
       }
       /**
-       * .greptime.v1.ChangeTableAttributes change_table_attributes = 6;
+       * .greptime.v1.ChangeTableOptions change_table_options = 6;
        */
       private com.google.protobuf.SingleFieldBuilderV3<
-          io.greptime.v1.Ddl.ChangeTableAttributes, io.greptime.v1.Ddl.ChangeTableAttributes.Builder, io.greptime.v1.Ddl.ChangeTableAttributesOrBuilder> 
-          getChangeTableAttributesFieldBuilder() {
-        if (changeTableAttributesBuilder_ == null) {
+          io.greptime.v1.Ddl.ChangeTableOptions, io.greptime.v1.Ddl.ChangeTableOptions.Builder, io.greptime.v1.Ddl.ChangeTableOptionsOrBuilder> 
+          getChangeTableOptionsFieldBuilder() {
+        if (changeTableOptionsBuilder_ == null) {
           if (!(kindCase_ == 6)) {
-            kind_ = io.greptime.v1.Ddl.ChangeTableAttributes.getDefaultInstance();
+            kind_ = io.greptime.v1.Ddl.ChangeTableOptions.getDefaultInstance();
           }
-          changeTableAttributesBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
-              io.greptime.v1.Ddl.ChangeTableAttributes, io.greptime.v1.Ddl.ChangeTableAttributes.Builder, io.greptime.v1.Ddl.ChangeTableAttributesOrBuilder>(
-                  (io.greptime.v1.Ddl.ChangeTableAttributes) kind_,
+          changeTableOptionsBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+              io.greptime.v1.Ddl.ChangeTableOptions, io.greptime.v1.Ddl.ChangeTableOptions.Builder, io.greptime.v1.Ddl.ChangeTableOptionsOrBuilder>(
+                  (io.greptime.v1.Ddl.ChangeTableOptions) kind_,
                   getParentForChildren(),
                   isClean());
           kind_ = null;
         }
         kindCase_ = 6;
         onChanged();;
-        return changeTableAttributesBuilder_;
+        return changeTableOptionsBuilder_;
       }
 
       private long schemaVersion_ ;
@@ -24794,36 +24794,36 @@ public io.greptime.v1.region.Server.RegionColumnDef getDefaultInstanceForType()
       ".\n\014OptionsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 " +
       "\001(\t:\0028\001\"!\n\014CloseRequest\022\021\n\tregion_id\030\001 \001" +
       "(\004\"C\n\rAlterRequests\0222\n\010requests\030\001 \003(\0132 ." +
-      "greptime.v1.region.AlterRequest\"\267\002\n\014Alte" +
+      "greptime.v1.region.AlterRequest\"\261\002\n\014Alte" +
       "rRequest\022\021\n\tregion_id\030\001 \001(\004\0225\n\013add_colum" +
       "ns\030\002 \001(\0132\036.greptime.v1.region.AddColumns" +
       "H\000\0227\n\014drop_columns\030\003 \001(\0132\037.greptime.v1.r" +
       "egion.DropColumnsH\000\022=\n\023change_column_typ" +
       "es\030\005 \001(\0132\036.greptime.v1.ChangeColumnTypes" +
-      "H\000\022E\n\027change_table_attributes\030\006 \001(\0132\".gr" +
-      "eptime.v1.ChangeTableAttributesH\000\022\026\n\016sch" +
-      "ema_version\030\004 \001(\004B\006\n\004kind\"@\n\nAddColumns\022" +
-      "2\n\013add_columns\030\001 \003(\0132\035.greptime.v1.regio" +
-      "n.AddColumn\"C\n\013DropColumns\0224\n\014drop_colum" +
-      "ns\030\001 \003(\0132\036.greptime.v1.region.DropColumn" +
-      "\"v\n\tAddColumn\0227\n\ncolumn_def\030\001 \001(\0132#.grep" +
-      "time.v1.region.RegionColumnDef\0220\n\010locati" +
-      "on\030\003 \001(\0132\036.greptime.v1.AddColumnLocation" +
-      "\"\032\n\nDropColumn\022\014\n\004name\030\001 \001(\t\"!\n\014FlushReq" +
-      "uest\022\021\n\tregion_id\030\001 \001(\004\"\t\n\007Regular\"&\n\014St" +
-      "rictWindow\022\026\n\016window_seconds\030\001 \001(\003\"\231\001\n\016C" +
-      "ompactRequest\022\021\n\tregion_id\030\001 \001(\004\022.\n\007regu" +
-      "lar\030\002 \001(\0132\033.greptime.v1.region.RegularH\000" +
-      "\0229\n\rstrict_window\030\003 \001(\0132 .greptime.v1.re" +
-      "gion.StrictWindowH\000B\t\n\007options\"$\n\017Trunca" +
-      "teRequest\022\021\n\tregion_id\030\001 \001(\004\"P\n\017RegionCo" +
-      "lumnDef\022*\n\ncolumn_def\030\001 \001(\0132\026.greptime.v" +
-      "1.ColumnDef\022\021\n\tcolumn_id\030\002 \001(\r2Y\n\006Region" +
-      "\022O\n\006Handle\022!.greptime.v1.region.RegionRe" +
-      "quest\032\".greptime.v1.region.RegionRespons" +
-      "eB]\n\025io.greptime.v1.regionB\006ServerZ
Date: Thu, 17 Oct 2024 11:34:05 -0700
Subject: [PATCH 4/4] update: allow multiple options

---
 c++/greptime/v1/ddl.pb.cc                  | 345 ++++++--
 c++/greptime/v1/ddl.pb.h                   | 275 +++++-
 go/greptime/v1/ddl.pb.go                   | 308 ++++---
 java/src/main/java/io/greptime/v1/Ddl.java | 972 +++++++++++++++++++--
 proto/greptime/v1/ddl.proto                |   4 +
 5 files changed, 1602 insertions(+), 302 deletions(-)

diff --git a/c++/greptime/v1/ddl.pb.cc b/c++/greptime/v1/ddl.pb.cc
index 351d2bb8..29c563e5 100644
--- a/c++/greptime/v1/ddl.pb.cc
+++ b/c++/greptime/v1/ddl.pb.cc
@@ -333,8 +333,7 @@ struct ChangeColumnTypeDefaultTypeInternal {
 PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ChangeColumnTypeDefaultTypeInternal _ChangeColumnType_default_instance_;
 PROTOBUF_CONSTEXPR ChangeTableOptions::ChangeTableOptions(
     ::_pbi::ConstantInitialized): _impl_{
-    /*decltype(_impl_.key_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
-  , /*decltype(_impl_.value_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
+    /*decltype(_impl_.change_table_options_)*/{}
   , /*decltype(_impl_._cached_size_)*/{}} {}
 struct ChangeTableOptionsDefaultTypeInternal {
   PROTOBUF_CONSTEXPR ChangeTableOptionsDefaultTypeInternal()
@@ -345,6 +344,20 @@ struct ChangeTableOptionsDefaultTypeInternal {
   };
 };
 PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ChangeTableOptionsDefaultTypeInternal _ChangeTableOptions_default_instance_;
+PROTOBUF_CONSTEXPR ChangeTableOption::ChangeTableOption(
+    ::_pbi::ConstantInitialized): _impl_{
+    /*decltype(_impl_.key_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
+  , /*decltype(_impl_.value_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
+  , /*decltype(_impl_._cached_size_)*/{}} {}
+struct ChangeTableOptionDefaultTypeInternal {
+  PROTOBUF_CONSTEXPR ChangeTableOptionDefaultTypeInternal()
+      : _instance(::_pbi::ConstantInitialized{}) {}
+  ~ChangeTableOptionDefaultTypeInternal() {}
+  union {
+    ChangeTableOption _instance;
+  };
+};
+PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 ChangeTableOptionDefaultTypeInternal _ChangeTableOption_default_instance_;
 PROTOBUF_CONSTEXPR DropColumn::DropColumn(
     ::_pbi::ConstantInitialized): _impl_{
     /*decltype(_impl_.name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
@@ -420,7 +433,7 @@ struct AddColumnLocationDefaultTypeInternal {
 PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORITY1 AddColumnLocationDefaultTypeInternal _AddColumnLocation_default_instance_;
 }  // namespace v1
 }  // namespace greptime
-static ::_pb::Metadata file_level_metadata_greptime_2fv1_2fddl_2eproto[26];
+static ::_pb::Metadata file_level_metadata_greptime_2fv1_2fddl_2eproto[27];
 static const ::_pb::EnumDescriptor* file_level_enum_descriptors_greptime_2fv1_2fddl_2eproto[1];
 static constexpr ::_pb::ServiceDescriptor const** file_level_service_descriptors_greptime_2fv1_2fddl_2eproto = nullptr;
 
@@ -647,8 +660,15 @@ const uint32_t TableStruct_greptime_2fv1_2fddl_2eproto::offsets[] PROTOBUF_SECTI
   ~0u,  // no _oneof_case_
   ~0u,  // no _weak_field_map_
   ~0u,  // no _inlined_string_donated_
-  PROTOBUF_FIELD_OFFSET(::greptime::v1::ChangeTableOptions, _impl_.key_),
-  PROTOBUF_FIELD_OFFSET(::greptime::v1::ChangeTableOptions, _impl_.value_),
+  PROTOBUF_FIELD_OFFSET(::greptime::v1::ChangeTableOptions, _impl_.change_table_options_),
+  ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::greptime::v1::ChangeTableOption, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  ~0u,  // no _inlined_string_donated_
+  PROTOBUF_FIELD_OFFSET(::greptime::v1::ChangeTableOption, _impl_.key_),
+  PROTOBUF_FIELD_OFFSET(::greptime::v1::ChangeTableOption, _impl_.value_),
   ~0u,  // no _has_bits_
   PROTOBUF_FIELD_OFFSET(::greptime::v1::DropColumn, _internal_metadata_),
   ~0u,  // no _extensions_
@@ -715,11 +735,12 @@ static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protode
   { 199, -1, -1, sizeof(::greptime::v1::AddColumn)},
   { 207, -1, -1, sizeof(::greptime::v1::ChangeColumnType)},
   { 216, -1, -1, sizeof(::greptime::v1::ChangeTableOptions)},
-  { 224, -1, -1, sizeof(::greptime::v1::DropColumn)},
-  { 231, -1, -1, sizeof(::greptime::v1::TableId)},
-  { 238, -1, -1, sizeof(::greptime::v1::FlowId)},
-  { 245, -1, -1, sizeof(::greptime::v1::ColumnDef)},
-  { 259, -1, -1, sizeof(::greptime::v1::AddColumnLocation)},
+  { 223, -1, -1, sizeof(::greptime::v1::ChangeTableOption)},
+  { 231, -1, -1, sizeof(::greptime::v1::DropColumn)},
+  { 238, -1, -1, sizeof(::greptime::v1::TableId)},
+  { 245, -1, -1, sizeof(::greptime::v1::FlowId)},
+  { 252, -1, -1, sizeof(::greptime::v1::ColumnDef)},
+  { 266, -1, -1, sizeof(::greptime::v1::AddColumnLocation)},
 };
 
 static const ::_pb::Message* const file_default_instances[] = {
@@ -744,6 +765,7 @@ static const ::_pb::Message* const file_default_instances[] = {
   &::greptime::v1::_AddColumn_default_instance_._instance,
   &::greptime::v1::_ChangeColumnType_default_instance_._instance,
   &::greptime::v1::_ChangeTableOptions_default_instance_._instance,
+  &::greptime::v1::_ChangeTableOption_default_instance_._instance,
   &::greptime::v1::_DropColumn_default_instance_._instance,
   &::greptime::v1::_TableId_default_instance_._instance,
   &::greptime::v1::_FlowId_default_instance_._instance,
@@ -834,33 +856,35 @@ const char descriptor_table_protodef_greptime_2fv1_2fddl_2eproto[] PROTOBUF_SECT
   "pe\022\023\n\013column_name\030\001 \001(\t\0220\n\013target_type\030\002"
   " \001(\0162\033.greptime.v1.ColumnDataType\022C\n\025tar"
   "get_type_extension\030\003 \001(\0132$.greptime.v1.C"
-  "olumnDataTypeExtension\"0\n\022ChangeTableOpt"
-  "ions\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t\"\032\n\nDrop"
-  "Column\022\014\n\004name\030\001 \001(\t\"\025\n\007TableId\022\n\n\002id\030\001 "
-  "\001(\r\"\024\n\006FlowId\022\n\n\002id\030\001 \001(\r\"\254\002\n\tColumnDef\022"
-  "\014\n\004name\030\001 \001(\t\022.\n\tdata_type\030\002 \001(\0162\033.grept"
-  "ime.v1.ColumnDataType\022\023\n\013is_nullable\030\003 \001"
-  "(\010\022\032\n\022default_constraint\030\004 \001(\014\0220\n\rsemant"
-  "ic_type\030\005 \001(\0162\031.greptime.v1.SemanticType"
-  "\022\017\n\007comment\030\006 \001(\t\022@\n\022datatype_extension\030"
-  "\007 \001(\0132$.greptime.v1.ColumnDataTypeExtens"
-  "ion\022+\n\007options\030\010 \001(\0132\032.greptime.v1.Colum"
-  "nOptions\"\230\001\n\021AddColumnLocation\022B\n\rlocati"
-  "on_type\030\001 \001(\0162+.greptime.v1.AddColumnLoc"
-  "ation.LocationType\022\031\n\021after_column_name\030"
-  "\002 \001(\t\"$\n\014LocationType\022\t\n\005FIRST\020\000\022\t\n\005AFTE"
-  "R\020\001BL\n\016io.greptime.v1B\003DdlZ5github.com/G"
-  "reptimeTeam/greptime-proto/go/greptime/v"
-  "1b\006proto3"
+  "olumnDataTypeExtension\"R\n\022ChangeTableOpt"
+  "ions\022<\n\024change_table_options\030\001 \003(\0132\036.gre"
+  "ptime.v1.ChangeTableOption\"/\n\021ChangeTabl"
+  "eOption\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t\"\032\n\nD"
+  "ropColumn\022\014\n\004name\030\001 \001(\t\"\025\n\007TableId\022\n\n\002id"
+  "\030\001 \001(\r\"\024\n\006FlowId\022\n\n\002id\030\001 \001(\r\"\254\002\n\tColumnD"
+  "ef\022\014\n\004name\030\001 \001(\t\022.\n\tdata_type\030\002 \001(\0162\033.gr"
+  "eptime.v1.ColumnDataType\022\023\n\013is_nullable\030"
+  "\003 \001(\010\022\032\n\022default_constraint\030\004 \001(\014\0220\n\rsem"
+  "antic_type\030\005 \001(\0162\031.greptime.v1.SemanticT"
+  "ype\022\017\n\007comment\030\006 \001(\t\022@\n\022datatype_extensi"
+  "on\030\007 \001(\0132$.greptime.v1.ColumnDataTypeExt"
+  "ension\022+\n\007options\030\010 \001(\0132\032.greptime.v1.Co"
+  "lumnOptions\"\230\001\n\021AddColumnLocation\022B\n\rloc"
+  "ation_type\030\001 \001(\0162+.greptime.v1.AddColumn"
+  "Location.LocationType\022\031\n\021after_column_na"
+  "me\030\002 \001(\t\"$\n\014LocationType\022\t\n\005FIRST\020\000\022\t\n\005A"
+  "FTER\020\001BL\n\016io.greptime.v1B\003DdlZ5github.co"
+  "m/GreptimeTeam/greptime-proto/go/greptim"
+  "e/v1b\006proto3"
   ;
 static const ::_pbi::DescriptorTable* const descriptor_table_greptime_2fv1_2fddl_2eproto_deps[1] = {
   &::descriptor_table_greptime_2fv1_2fcommon_2eproto,
 };
 static ::_pbi::once_flag descriptor_table_greptime_2fv1_2fddl_2eproto_once;
 const ::_pbi::DescriptorTable descriptor_table_greptime_2fv1_2fddl_2eproto = {
-    false, false, 3969, descriptor_table_protodef_greptime_2fv1_2fddl_2eproto,
+    false, false, 4052, descriptor_table_protodef_greptime_2fv1_2fddl_2eproto,
     "greptime/v1/ddl.proto",
-    &descriptor_table_greptime_2fv1_2fddl_2eproto_once, descriptor_table_greptime_2fv1_2fddl_2eproto_deps, 1, 26,
+    &descriptor_table_greptime_2fv1_2fddl_2eproto_once, descriptor_table_greptime_2fv1_2fddl_2eproto_deps, 1, 27,
     schemas, file_default_instances, TableStruct_greptime_2fv1_2fddl_2eproto::offsets,
     file_level_metadata_greptime_2fv1_2fddl_2eproto, file_level_enum_descriptors_greptime_2fv1_2fddl_2eproto,
     file_level_service_descriptors_greptime_2fv1_2fddl_2eproto,
@@ -7479,6 +7503,191 @@ ChangeTableOptions::ChangeTableOptions(::PROTOBUF_NAMESPACE_ID::Arena* arena,
 ChangeTableOptions::ChangeTableOptions(const ChangeTableOptions& from)
   : ::PROTOBUF_NAMESPACE_ID::Message() {
   ChangeTableOptions* const _this = this; (void)_this;
+  new (&_impl_) Impl_{
+      decltype(_impl_.change_table_options_){from._impl_.change_table_options_}
+    , /*decltype(_impl_._cached_size_)*/{}};
+
+  _internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
+  // @@protoc_insertion_point(copy_constructor:greptime.v1.ChangeTableOptions)
+}
+
+inline void ChangeTableOptions::SharedCtor(
+    ::_pb::Arena* arena, bool is_message_owned) {
+  (void)arena;
+  (void)is_message_owned;
+  new (&_impl_) Impl_{
+      decltype(_impl_.change_table_options_){arena}
+    , /*decltype(_impl_._cached_size_)*/{}
+  };
+}
+
+ChangeTableOptions::~ChangeTableOptions() {
+  // @@protoc_insertion_point(destructor:greptime.v1.ChangeTableOptions)
+  if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
+  (void)arena;
+    return;
+  }
+  SharedDtor();
+}
+
+inline void ChangeTableOptions::SharedDtor() {
+  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
+  _impl_.change_table_options_.~RepeatedPtrField();
+}
+
+void ChangeTableOptions::SetCachedSize(int size) const {
+  _impl_._cached_size_.Set(size);
+}
+
+void ChangeTableOptions::Clear() {
+// @@protoc_insertion_point(message_clear_start:greptime.v1.ChangeTableOptions)
+  uint32_t cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  _impl_.change_table_options_.Clear();
+  _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
+}
+
+const char* ChangeTableOptions::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
+#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
+  while (!ctx->Done(&ptr)) {
+    uint32_t tag;
+    ptr = ::_pbi::ReadTag(ptr, &tag);
+    switch (tag >> 3) {
+      // repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+      case 1:
+        if (PROTOBUF_PREDICT_TRUE(static_cast(tag) == 10)) {
+          ptr -= 1;
+          do {
+            ptr += 1;
+            ptr = ctx->ParseMessage(_internal_add_change_table_options(), ptr);
+            CHK_(ptr);
+            if (!ctx->DataAvailable(ptr)) break;
+          } while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<10>(ptr));
+        } else
+          goto handle_unusual;
+        continue;
+      default:
+        goto handle_unusual;
+    }  // switch
+  handle_unusual:
+    if ((tag == 0) || ((tag & 7) == 4)) {
+      CHK_(ptr);
+      ctx->SetLastTag(tag);
+      goto message_done;
+    }
+    ptr = UnknownFieldParse(
+        tag,
+        _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(),
+        ptr, ctx);
+    CHK_(ptr != nullptr);
+  }  // while
+message_done:
+  return ptr;
+failure:
+  ptr = nullptr;
+  goto message_done;
+#undef CHK_
+}
+
+uint8_t* ChangeTableOptions::_InternalSerialize(
+    uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
+  // @@protoc_insertion_point(serialize_to_array_start:greptime.v1.ChangeTableOptions)
+  uint32_t cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+  for (unsigned i = 0,
+      n = static_cast(this->_internal_change_table_options_size()); i < n; i++) {
+    const auto& repfield = this->_internal_change_table_options(i);
+    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
+        InternalWriteMessage(1, repfield, repfield.GetCachedSize(), target, stream);
+  }
+
+  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
+    target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:greptime.v1.ChangeTableOptions)
+  return target;
+}
+
+size_t ChangeTableOptions::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:greptime.v1.ChangeTableOptions)
+  size_t total_size = 0;
+
+  uint32_t cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+  total_size += 1UL * this->_internal_change_table_options_size();
+  for (const auto& msg : this->_impl_.change_table_options_) {
+    total_size +=
+      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(msg);
+  }
+
+  return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
+}
+
+const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ChangeTableOptions::_class_data_ = {
+    ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
+    ChangeTableOptions::MergeImpl
+};
+const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ChangeTableOptions::GetClassData() const { return &_class_data_; }
+
+
+void ChangeTableOptions::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
+  auto* const _this = static_cast(&to_msg);
+  auto& from = static_cast(from_msg);
+  // @@protoc_insertion_point(class_specific_merge_from_start:greptime.v1.ChangeTableOptions)
+  GOOGLE_DCHECK_NE(&from, _this);
+  uint32_t cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  _this->_impl_.change_table_options_.MergeFrom(from._impl_.change_table_options_);
+  _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
+}
+
+void ChangeTableOptions::CopyFrom(const ChangeTableOptions& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:greptime.v1.ChangeTableOptions)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool ChangeTableOptions::IsInitialized() const {
+  return true;
+}
+
+void ChangeTableOptions::InternalSwap(ChangeTableOptions* other) {
+  using std::swap;
+  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
+  _impl_.change_table_options_.InternalSwap(&other->_impl_.change_table_options_);
+}
+
+::PROTOBUF_NAMESPACE_ID::Metadata ChangeTableOptions::GetMetadata() const {
+  return ::_pbi::AssignDescriptors(
+      &descriptor_table_greptime_2fv1_2fddl_2eproto_getter, &descriptor_table_greptime_2fv1_2fddl_2eproto_once,
+      file_level_metadata_greptime_2fv1_2fddl_2eproto[20]);
+}
+
+// ===================================================================
+
+class ChangeTableOption::_Internal {
+ public:
+};
+
+ChangeTableOption::ChangeTableOption(::PROTOBUF_NAMESPACE_ID::Arena* arena,
+                         bool is_message_owned)
+  : ::PROTOBUF_NAMESPACE_ID::Message(arena, is_message_owned) {
+  SharedCtor(arena, is_message_owned);
+  // @@protoc_insertion_point(arena_constructor:greptime.v1.ChangeTableOption)
+}
+ChangeTableOption::ChangeTableOption(const ChangeTableOption& from)
+  : ::PROTOBUF_NAMESPACE_ID::Message() {
+  ChangeTableOption* const _this = this; (void)_this;
   new (&_impl_) Impl_{
       decltype(_impl_.key_){}
     , decltype(_impl_.value_){}
@@ -7501,10 +7710,10 @@ ChangeTableOptions::ChangeTableOptions(const ChangeTableOptions& from)
     _this->_impl_.value_.Set(from._internal_value(), 
       _this->GetArenaForAllocation());
   }
-  // @@protoc_insertion_point(copy_constructor:greptime.v1.ChangeTableOptions)
+  // @@protoc_insertion_point(copy_constructor:greptime.v1.ChangeTableOption)
 }
 
-inline void ChangeTableOptions::SharedCtor(
+inline void ChangeTableOption::SharedCtor(
     ::_pb::Arena* arena, bool is_message_owned) {
   (void)arena;
   (void)is_message_owned;
@@ -7523,8 +7732,8 @@ inline void ChangeTableOptions::SharedCtor(
   #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
 }
 
-ChangeTableOptions::~ChangeTableOptions() {
-  // @@protoc_insertion_point(destructor:greptime.v1.ChangeTableOptions)
+ChangeTableOption::~ChangeTableOption() {
+  // @@protoc_insertion_point(destructor:greptime.v1.ChangeTableOption)
   if (auto *arena = _internal_metadata_.DeleteReturnArena<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>()) {
   (void)arena;
     return;
@@ -7532,18 +7741,18 @@ ChangeTableOptions::~ChangeTableOptions() {
   SharedDtor();
 }
 
-inline void ChangeTableOptions::SharedDtor() {
+inline void ChangeTableOption::SharedDtor() {
   GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
   _impl_.key_.Destroy();
   _impl_.value_.Destroy();
 }
 
-void ChangeTableOptions::SetCachedSize(int size) const {
+void ChangeTableOption::SetCachedSize(int size) const {
   _impl_._cached_size_.Set(size);
 }
 
-void ChangeTableOptions::Clear() {
-// @@protoc_insertion_point(message_clear_start:greptime.v1.ChangeTableOptions)
+void ChangeTableOption::Clear() {
+// @@protoc_insertion_point(message_clear_start:greptime.v1.ChangeTableOption)
   uint32_t cached_has_bits = 0;
   // Prevent compiler warnings about cached_has_bits being unused
   (void) cached_has_bits;
@@ -7553,7 +7762,7 @@ void ChangeTableOptions::Clear() {
   _internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
 }
 
-const char* ChangeTableOptions::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
+const char* ChangeTableOption::_InternalParse(const char* ptr, ::_pbi::ParseContext* ctx) {
 #define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
   while (!ctx->Done(&ptr)) {
     uint32_t tag;
@@ -7565,7 +7774,7 @@ const char* ChangeTableOptions::_InternalParse(const char* ptr, ::_pbi::ParseCon
           auto str = _internal_mutable_key();
           ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
           CHK_(ptr);
-          CHK_(::_pbi::VerifyUTF8(str, "greptime.v1.ChangeTableOptions.key"));
+          CHK_(::_pbi::VerifyUTF8(str, "greptime.v1.ChangeTableOption.key"));
         } else
           goto handle_unusual;
         continue;
@@ -7575,7 +7784,7 @@ const char* ChangeTableOptions::_InternalParse(const char* ptr, ::_pbi::ParseCon
           auto str = _internal_mutable_value();
           ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
           CHK_(ptr);
-          CHK_(::_pbi::VerifyUTF8(str, "greptime.v1.ChangeTableOptions.value"));
+          CHK_(::_pbi::VerifyUTF8(str, "greptime.v1.ChangeTableOption.value"));
         } else
           goto handle_unusual;
         continue;
@@ -7602,9 +7811,9 @@ const char* ChangeTableOptions::_InternalParse(const char* ptr, ::_pbi::ParseCon
 #undef CHK_
 }
 
-uint8_t* ChangeTableOptions::_InternalSerialize(
+uint8_t* ChangeTableOption::_InternalSerialize(
     uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
-  // @@protoc_insertion_point(serialize_to_array_start:greptime.v1.ChangeTableOptions)
+  // @@protoc_insertion_point(serialize_to_array_start:greptime.v1.ChangeTableOption)
   uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
 
@@ -7613,7 +7822,7 @@ uint8_t* ChangeTableOptions::_InternalSerialize(
     ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
       this->_internal_key().data(), static_cast(this->_internal_key().length()),
       ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
-      "greptime.v1.ChangeTableOptions.key");
+      "greptime.v1.ChangeTableOption.key");
     target = stream->WriteStringMaybeAliased(
         1, this->_internal_key(), target);
   }
@@ -7623,7 +7832,7 @@ uint8_t* ChangeTableOptions::_InternalSerialize(
     ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
       this->_internal_value().data(), static_cast(this->_internal_value().length()),
       ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
-      "greptime.v1.ChangeTableOptions.value");
+      "greptime.v1.ChangeTableOption.value");
     target = stream->WriteStringMaybeAliased(
         2, this->_internal_value(), target);
   }
@@ -7632,12 +7841,12 @@ uint8_t* ChangeTableOptions::_InternalSerialize(
     target = ::_pbi::WireFormat::InternalSerializeUnknownFieldsToArray(
         _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance), target, stream);
   }
-  // @@protoc_insertion_point(serialize_to_array_end:greptime.v1.ChangeTableOptions)
+  // @@protoc_insertion_point(serialize_to_array_end:greptime.v1.ChangeTableOption)
   return target;
 }
 
-size_t ChangeTableOptions::ByteSizeLong() const {
-// @@protoc_insertion_point(message_byte_size_start:greptime.v1.ChangeTableOptions)
+size_t ChangeTableOption::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:greptime.v1.ChangeTableOption)
   size_t total_size = 0;
 
   uint32_t cached_has_bits = 0;
@@ -7661,17 +7870,17 @@ size_t ChangeTableOptions::ByteSizeLong() const {
   return MaybeComputeUnknownFieldsSize(total_size, &_impl_._cached_size_);
 }
 
-const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ChangeTableOptions::_class_data_ = {
+const ::PROTOBUF_NAMESPACE_ID::Message::ClassData ChangeTableOption::_class_data_ = {
     ::PROTOBUF_NAMESPACE_ID::Message::CopyWithSourceCheck,
-    ChangeTableOptions::MergeImpl
+    ChangeTableOption::MergeImpl
 };
-const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ChangeTableOptions::GetClassData() const { return &_class_data_; }
+const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*ChangeTableOption::GetClassData() const { return &_class_data_; }
 
 
-void ChangeTableOptions::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
-  auto* const _this = static_cast(&to_msg);
-  auto& from = static_cast(from_msg);
-  // @@protoc_insertion_point(class_specific_merge_from_start:greptime.v1.ChangeTableOptions)
+void ChangeTableOption::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg) {
+  auto* const _this = static_cast(&to_msg);
+  auto& from = static_cast(from_msg);
+  // @@protoc_insertion_point(class_specific_merge_from_start:greptime.v1.ChangeTableOption)
   GOOGLE_DCHECK_NE(&from, _this);
   uint32_t cached_has_bits = 0;
   (void) cached_has_bits;
@@ -7685,18 +7894,18 @@ void ChangeTableOptions::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, con
   _this->_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
 }
 
-void ChangeTableOptions::CopyFrom(const ChangeTableOptions& from) {
-// @@protoc_insertion_point(class_specific_copy_from_start:greptime.v1.ChangeTableOptions)
+void ChangeTableOption::CopyFrom(const ChangeTableOption& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:greptime.v1.ChangeTableOption)
   if (&from == this) return;
   Clear();
   MergeFrom(from);
 }
 
-bool ChangeTableOptions::IsInitialized() const {
+bool ChangeTableOption::IsInitialized() const {
   return true;
 }
 
-void ChangeTableOptions::InternalSwap(ChangeTableOptions* other) {
+void ChangeTableOption::InternalSwap(ChangeTableOption* other) {
   using std::swap;
   auto* lhs_arena = GetArenaForAllocation();
   auto* rhs_arena = other->GetArenaForAllocation();
@@ -7711,10 +7920,10 @@ void ChangeTableOptions::InternalSwap(ChangeTableOptions* other) {
   );
 }
 
-::PROTOBUF_NAMESPACE_ID::Metadata ChangeTableOptions::GetMetadata() const {
+::PROTOBUF_NAMESPACE_ID::Metadata ChangeTableOption::GetMetadata() const {
   return ::_pbi::AssignDescriptors(
       &descriptor_table_greptime_2fv1_2fddl_2eproto_getter, &descriptor_table_greptime_2fv1_2fddl_2eproto_once,
-      file_level_metadata_greptime_2fv1_2fddl_2eproto[20]);
+      file_level_metadata_greptime_2fv1_2fddl_2eproto[21]);
 }
 
 // ===================================================================
@@ -7917,7 +8126,7 @@ void DropColumn::InternalSwap(DropColumn* other) {
 ::PROTOBUF_NAMESPACE_ID::Metadata DropColumn::GetMetadata() const {
   return ::_pbi::AssignDescriptors(
       &descriptor_table_greptime_2fv1_2fddl_2eproto_getter, &descriptor_table_greptime_2fv1_2fddl_2eproto_once,
-      file_level_metadata_greptime_2fv1_2fddl_2eproto[21]);
+      file_level_metadata_greptime_2fv1_2fddl_2eproto[22]);
 }
 
 // ===================================================================
@@ -8095,7 +8304,7 @@ void TableId::InternalSwap(TableId* other) {
 ::PROTOBUF_NAMESPACE_ID::Metadata TableId::GetMetadata() const {
   return ::_pbi::AssignDescriptors(
       &descriptor_table_greptime_2fv1_2fddl_2eproto_getter, &descriptor_table_greptime_2fv1_2fddl_2eproto_once,
-      file_level_metadata_greptime_2fv1_2fddl_2eproto[22]);
+      file_level_metadata_greptime_2fv1_2fddl_2eproto[23]);
 }
 
 // ===================================================================
@@ -8273,7 +8482,7 @@ void FlowId::InternalSwap(FlowId* other) {
 ::PROTOBUF_NAMESPACE_ID::Metadata FlowId::GetMetadata() const {
   return ::_pbi::AssignDescriptors(
       &descriptor_table_greptime_2fv1_2fddl_2eproto_getter, &descriptor_table_greptime_2fv1_2fddl_2eproto_once,
-      file_level_metadata_greptime_2fv1_2fddl_2eproto[23]);
+      file_level_metadata_greptime_2fv1_2fddl_2eproto[24]);
 }
 
 // ===================================================================
@@ -8755,7 +8964,7 @@ void ColumnDef::InternalSwap(ColumnDef* other) {
 ::PROTOBUF_NAMESPACE_ID::Metadata ColumnDef::GetMetadata() const {
   return ::_pbi::AssignDescriptors(
       &descriptor_table_greptime_2fv1_2fddl_2eproto_getter, &descriptor_table_greptime_2fv1_2fddl_2eproto_once,
-      file_level_metadata_greptime_2fv1_2fddl_2eproto[24]);
+      file_level_metadata_greptime_2fv1_2fddl_2eproto[25]);
 }
 
 // ===================================================================
@@ -8988,7 +9197,7 @@ void AddColumnLocation::InternalSwap(AddColumnLocation* other) {
 ::PROTOBUF_NAMESPACE_ID::Metadata AddColumnLocation::GetMetadata() const {
   return ::_pbi::AssignDescriptors(
       &descriptor_table_greptime_2fv1_2fddl_2eproto_getter, &descriptor_table_greptime_2fv1_2fddl_2eproto_once,
-      file_level_metadata_greptime_2fv1_2fddl_2eproto[25]);
+      file_level_metadata_greptime_2fv1_2fddl_2eproto[26]);
 }
 
 // @@protoc_insertion_point(namespace_scope)
@@ -9079,6 +9288,10 @@ template<> PROTOBUF_NOINLINE ::greptime::v1::ChangeTableOptions*
 Arena::CreateMaybeMessage< ::greptime::v1::ChangeTableOptions >(Arena* arena) {
   return Arena::CreateMessageInternal< ::greptime::v1::ChangeTableOptions >(arena);
 }
+template<> PROTOBUF_NOINLINE ::greptime::v1::ChangeTableOption*
+Arena::CreateMaybeMessage< ::greptime::v1::ChangeTableOption >(Arena* arena) {
+  return Arena::CreateMessageInternal< ::greptime::v1::ChangeTableOption >(arena);
+}
 template<> PROTOBUF_NOINLINE ::greptime::v1::DropColumn*
 Arena::CreateMaybeMessage< ::greptime::v1::DropColumn >(Arena* arena) {
   return Arena::CreateMessageInternal< ::greptime::v1::DropColumn >(arena);
diff --git a/c++/greptime/v1/ddl.pb.h b/c++/greptime/v1/ddl.pb.h
index 1107db47..67b893b2 100644
--- a/c++/greptime/v1/ddl.pb.h
+++ b/c++/greptime/v1/ddl.pb.h
@@ -69,6 +69,9 @@ extern ChangeColumnTypeDefaultTypeInternal _ChangeColumnType_default_instance_;
 class ChangeColumnTypes;
 struct ChangeColumnTypesDefaultTypeInternal;
 extern ChangeColumnTypesDefaultTypeInternal _ChangeColumnTypes_default_instance_;
+class ChangeTableOption;
+struct ChangeTableOptionDefaultTypeInternal;
+extern ChangeTableOptionDefaultTypeInternal _ChangeTableOption_default_instance_;
 class ChangeTableOptions;
 struct ChangeTableOptionsDefaultTypeInternal;
 extern ChangeTableOptionsDefaultTypeInternal _ChangeTableOptions_default_instance_;
@@ -138,6 +141,7 @@ template<> ::greptime::v1::AddColumns* Arena::CreateMaybeMessage<::greptime::v1:
 template<> ::greptime::v1::AlterExpr* Arena::CreateMaybeMessage<::greptime::v1::AlterExpr>(Arena*);
 template<> ::greptime::v1::ChangeColumnType* Arena::CreateMaybeMessage<::greptime::v1::ChangeColumnType>(Arena*);
 template<> ::greptime::v1::ChangeColumnTypes* Arena::CreateMaybeMessage<::greptime::v1::ChangeColumnTypes>(Arena*);
+template<> ::greptime::v1::ChangeTableOption* Arena::CreateMaybeMessage<::greptime::v1::ChangeTableOption>(Arena*);
 template<> ::greptime::v1::ChangeTableOptions* Arena::CreateMaybeMessage<::greptime::v1::ChangeTableOptions>(Arena*);
 template<> ::greptime::v1::ColumnDef* Arena::CreateMaybeMessage<::greptime::v1::ColumnDef>(Arena*);
 template<> ::greptime::v1::CreateDatabaseExpr* Arena::CreateMaybeMessage<::greptime::v1::CreateDatabaseExpr>(Arena*);
@@ -4217,6 +4221,163 @@ class ChangeTableOptions final :
 
   // accessors -------------------------------------------------------
 
+  enum : int {
+    kChangeTableOptionsFieldNumber = 1,
+  };
+  // repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+  int change_table_options_size() const;
+  private:
+  int _internal_change_table_options_size() const;
+  public:
+  void clear_change_table_options();
+  ::greptime::v1::ChangeTableOption* mutable_change_table_options(int index);
+  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::greptime::v1::ChangeTableOption >*
+      mutable_change_table_options();
+  private:
+  const ::greptime::v1::ChangeTableOption& _internal_change_table_options(int index) const;
+  ::greptime::v1::ChangeTableOption* _internal_add_change_table_options();
+  public:
+  const ::greptime::v1::ChangeTableOption& change_table_options(int index) const;
+  ::greptime::v1::ChangeTableOption* add_change_table_options();
+  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::greptime::v1::ChangeTableOption >&
+      change_table_options() const;
+
+  // @@protoc_insertion_point(class_scope:greptime.v1.ChangeTableOptions)
+ private:
+  class _Internal;
+
+  template  friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
+  typedef void InternalArenaConstructable_;
+  typedef void DestructorSkippable_;
+  struct Impl_ {
+    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::greptime::v1::ChangeTableOption > change_table_options_;
+    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
+  };
+  union { Impl_ _impl_; };
+  friend struct ::TableStruct_greptime_2fv1_2fddl_2eproto;
+};
+// -------------------------------------------------------------------
+
+class ChangeTableOption final :
+    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:greptime.v1.ChangeTableOption) */ {
+ public:
+  inline ChangeTableOption() : ChangeTableOption(nullptr) {}
+  ~ChangeTableOption() override;
+  explicit PROTOBUF_CONSTEXPR ChangeTableOption(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);
+
+  ChangeTableOption(const ChangeTableOption& from);
+  ChangeTableOption(ChangeTableOption&& from) noexcept
+    : ChangeTableOption() {
+    *this = ::std::move(from);
+  }
+
+  inline ChangeTableOption& operator=(const ChangeTableOption& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  inline ChangeTableOption& operator=(ChangeTableOption&& from) noexcept {
+    if (this == &from) return *this;
+    if (GetOwningArena() == from.GetOwningArena()
+  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
+        && GetOwningArena() != nullptr
+  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
+    ) {
+      InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+
+  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
+    return GetDescriptor();
+  }
+  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
+    return default_instance().GetMetadata().descriptor;
+  }
+  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
+    return default_instance().GetMetadata().reflection;
+  }
+  static const ChangeTableOption& default_instance() {
+    return *internal_default_instance();
+  }
+  static inline const ChangeTableOption* internal_default_instance() {
+    return reinterpret_cast(
+               &_ChangeTableOption_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    21;
+
+  friend void swap(ChangeTableOption& a, ChangeTableOption& b) {
+    a.Swap(&b);
+  }
+  inline void Swap(ChangeTableOption* other) {
+    if (other == this) return;
+  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
+    if (GetOwningArena() != nullptr &&
+        GetOwningArena() == other->GetOwningArena()) {
+   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
+    if (GetOwningArena() == other->GetOwningArena()) {
+  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
+      InternalSwap(other);
+    } else {
+      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
+    }
+  }
+  void UnsafeArenaSwap(ChangeTableOption* other) {
+    if (other == this) return;
+    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
+    InternalSwap(other);
+  }
+
+  // implements Message ----------------------------------------------
+
+  ChangeTableOption* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
+    return CreateMaybeMessage(arena);
+  }
+  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
+  void CopyFrom(const ChangeTableOption& from);
+  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
+  void MergeFrom( const ChangeTableOption& from) {
+    ChangeTableOption::MergeImpl(*this, from);
+  }
+  private:
+  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
+  public:
+  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
+  uint8_t* _InternalSerialize(
+      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
+  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }
+
+  private:
+  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(ChangeTableOption* other);
+
+  private:
+  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
+  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
+    return "greptime.v1.ChangeTableOption";
+  }
+  protected:
+  explicit ChangeTableOption(::PROTOBUF_NAMESPACE_ID::Arena* arena,
+                       bool is_message_owned = false);
+  public:
+
+  static const ClassData _class_data_;
+  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;
+
+  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  // accessors -------------------------------------------------------
+
   enum : int {
     kKeyFieldNumber = 1,
     kValueFieldNumber = 2,
@@ -4249,7 +4410,7 @@ class ChangeTableOptions final :
   std::string* _internal_mutable_value();
   public:
 
-  // @@protoc_insertion_point(class_scope:greptime.v1.ChangeTableOptions)
+  // @@protoc_insertion_point(class_scope:greptime.v1.ChangeTableOption)
  private:
   class _Internal;
 
@@ -4314,7 +4475,7 @@ class DropColumn final :
                &_DropColumn_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    21;
+    22;
 
   friend void swap(DropColumn& a, DropColumn& b) {
     a.Swap(&b);
@@ -4467,7 +4628,7 @@ class TableId final :
                &_TableId_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    22;
+    23;
 
   friend void swap(TableId& a, TableId& b) {
     a.Swap(&b);
@@ -4615,7 +4776,7 @@ class FlowId final :
                &_FlowId_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    23;
+    24;
 
   friend void swap(FlowId& a, FlowId& b) {
     a.Swap(&b);
@@ -4763,7 +4924,7 @@ class ColumnDef final :
                &_ColumnDef_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    24;
+    25;
 
   friend void swap(ColumnDef& a, ColumnDef& b) {
     a.Swap(&b);
@@ -5021,7 +5182,7 @@ class AddColumnLocation final :
                &_AddColumnLocation_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    25;
+    26;
 
   friend void swap(AddColumnLocation& a, AddColumnLocation& b) {
     a.Swap(&b);
@@ -9705,42 +9866,86 @@ inline void ChangeColumnType::set_allocated_target_type_extension(::greptime::v1
 
 // ChangeTableOptions
 
+// repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+inline int ChangeTableOptions::_internal_change_table_options_size() const {
+  return _impl_.change_table_options_.size();
+}
+inline int ChangeTableOptions::change_table_options_size() const {
+  return _internal_change_table_options_size();
+}
+inline void ChangeTableOptions::clear_change_table_options() {
+  _impl_.change_table_options_.Clear();
+}
+inline ::greptime::v1::ChangeTableOption* ChangeTableOptions::mutable_change_table_options(int index) {
+  // @@protoc_insertion_point(field_mutable:greptime.v1.ChangeTableOptions.change_table_options)
+  return _impl_.change_table_options_.Mutable(index);
+}
+inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::greptime::v1::ChangeTableOption >*
+ChangeTableOptions::mutable_change_table_options() {
+  // @@protoc_insertion_point(field_mutable_list:greptime.v1.ChangeTableOptions.change_table_options)
+  return &_impl_.change_table_options_;
+}
+inline const ::greptime::v1::ChangeTableOption& ChangeTableOptions::_internal_change_table_options(int index) const {
+  return _impl_.change_table_options_.Get(index);
+}
+inline const ::greptime::v1::ChangeTableOption& ChangeTableOptions::change_table_options(int index) const {
+  // @@protoc_insertion_point(field_get:greptime.v1.ChangeTableOptions.change_table_options)
+  return _internal_change_table_options(index);
+}
+inline ::greptime::v1::ChangeTableOption* ChangeTableOptions::_internal_add_change_table_options() {
+  return _impl_.change_table_options_.Add();
+}
+inline ::greptime::v1::ChangeTableOption* ChangeTableOptions::add_change_table_options() {
+  ::greptime::v1::ChangeTableOption* _add = _internal_add_change_table_options();
+  // @@protoc_insertion_point(field_add:greptime.v1.ChangeTableOptions.change_table_options)
+  return _add;
+}
+inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::greptime::v1::ChangeTableOption >&
+ChangeTableOptions::change_table_options() const {
+  // @@protoc_insertion_point(field_list:greptime.v1.ChangeTableOptions.change_table_options)
+  return _impl_.change_table_options_;
+}
+
+// -------------------------------------------------------------------
+
+// ChangeTableOption
+
 // string key = 1;
-inline void ChangeTableOptions::clear_key() {
+inline void ChangeTableOption::clear_key() {
   _impl_.key_.ClearToEmpty();
 }
-inline const std::string& ChangeTableOptions::key() const {
-  // @@protoc_insertion_point(field_get:greptime.v1.ChangeTableOptions.key)
+inline const std::string& ChangeTableOption::key() const {
+  // @@protoc_insertion_point(field_get:greptime.v1.ChangeTableOption.key)
   return _internal_key();
 }
 template 
 inline PROTOBUF_ALWAYS_INLINE
-void ChangeTableOptions::set_key(ArgT0&& arg0, ArgT... args) {
+void ChangeTableOption::set_key(ArgT0&& arg0, ArgT... args) {
  
  _impl_.key_.Set(static_cast(arg0), args..., GetArenaForAllocation());
-  // @@protoc_insertion_point(field_set:greptime.v1.ChangeTableOptions.key)
+  // @@protoc_insertion_point(field_set:greptime.v1.ChangeTableOption.key)
 }
-inline std::string* ChangeTableOptions::mutable_key() {
+inline std::string* ChangeTableOption::mutable_key() {
   std::string* _s = _internal_mutable_key();
-  // @@protoc_insertion_point(field_mutable:greptime.v1.ChangeTableOptions.key)
+  // @@protoc_insertion_point(field_mutable:greptime.v1.ChangeTableOption.key)
   return _s;
 }
-inline const std::string& ChangeTableOptions::_internal_key() const {
+inline const std::string& ChangeTableOption::_internal_key() const {
   return _impl_.key_.Get();
 }
-inline void ChangeTableOptions::_internal_set_key(const std::string& value) {
+inline void ChangeTableOption::_internal_set_key(const std::string& value) {
   
   _impl_.key_.Set(value, GetArenaForAllocation());
 }
-inline std::string* ChangeTableOptions::_internal_mutable_key() {
+inline std::string* ChangeTableOption::_internal_mutable_key() {
   
   return _impl_.key_.Mutable(GetArenaForAllocation());
 }
-inline std::string* ChangeTableOptions::release_key() {
-  // @@protoc_insertion_point(field_release:greptime.v1.ChangeTableOptions.key)
+inline std::string* ChangeTableOption::release_key() {
+  // @@protoc_insertion_point(field_release:greptime.v1.ChangeTableOption.key)
   return _impl_.key_.Release();
 }
-inline void ChangeTableOptions::set_allocated_key(std::string* key) {
+inline void ChangeTableOption::set_allocated_key(std::string* key) {
   if (key != nullptr) {
     
   } else {
@@ -9752,45 +9957,45 @@ inline void ChangeTableOptions::set_allocated_key(std::string* key) {
     _impl_.key_.Set("", GetArenaForAllocation());
   }
 #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
-  // @@protoc_insertion_point(field_set_allocated:greptime.v1.ChangeTableOptions.key)
+  // @@protoc_insertion_point(field_set_allocated:greptime.v1.ChangeTableOption.key)
 }
 
 // string value = 2;
-inline void ChangeTableOptions::clear_value() {
+inline void ChangeTableOption::clear_value() {
   _impl_.value_.ClearToEmpty();
 }
-inline const std::string& ChangeTableOptions::value() const {
-  // @@protoc_insertion_point(field_get:greptime.v1.ChangeTableOptions.value)
+inline const std::string& ChangeTableOption::value() const {
+  // @@protoc_insertion_point(field_get:greptime.v1.ChangeTableOption.value)
   return _internal_value();
 }
 template 
 inline PROTOBUF_ALWAYS_INLINE
-void ChangeTableOptions::set_value(ArgT0&& arg0, ArgT... args) {
+void ChangeTableOption::set_value(ArgT0&& arg0, ArgT... args) {
  
  _impl_.value_.Set(static_cast(arg0), args..., GetArenaForAllocation());
-  // @@protoc_insertion_point(field_set:greptime.v1.ChangeTableOptions.value)
+  // @@protoc_insertion_point(field_set:greptime.v1.ChangeTableOption.value)
 }
-inline std::string* ChangeTableOptions::mutable_value() {
+inline std::string* ChangeTableOption::mutable_value() {
   std::string* _s = _internal_mutable_value();
-  // @@protoc_insertion_point(field_mutable:greptime.v1.ChangeTableOptions.value)
+  // @@protoc_insertion_point(field_mutable:greptime.v1.ChangeTableOption.value)
   return _s;
 }
-inline const std::string& ChangeTableOptions::_internal_value() const {
+inline const std::string& ChangeTableOption::_internal_value() const {
   return _impl_.value_.Get();
 }
-inline void ChangeTableOptions::_internal_set_value(const std::string& value) {
+inline void ChangeTableOption::_internal_set_value(const std::string& value) {
   
   _impl_.value_.Set(value, GetArenaForAllocation());
 }
-inline std::string* ChangeTableOptions::_internal_mutable_value() {
+inline std::string* ChangeTableOption::_internal_mutable_value() {
   
   return _impl_.value_.Mutable(GetArenaForAllocation());
 }
-inline std::string* ChangeTableOptions::release_value() {
-  // @@protoc_insertion_point(field_release:greptime.v1.ChangeTableOptions.value)
+inline std::string* ChangeTableOption::release_value() {
+  // @@protoc_insertion_point(field_release:greptime.v1.ChangeTableOption.value)
   return _impl_.value_.Release();
 }
-inline void ChangeTableOptions::set_allocated_value(std::string* value) {
+inline void ChangeTableOption::set_allocated_value(std::string* value) {
   if (value != nullptr) {
     
   } else {
@@ -9802,7 +10007,7 @@ inline void ChangeTableOptions::set_allocated_value(std::string* value) {
     _impl_.value_.Set("", GetArenaForAllocation());
   }
 #endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
-  // @@protoc_insertion_point(field_set_allocated:greptime.v1.ChangeTableOptions.value)
+  // @@protoc_insertion_point(field_set_allocated:greptime.v1.ChangeTableOption.value)
 }
 
 // -------------------------------------------------------------------
@@ -10418,6 +10623,8 @@ inline void AddColumnLocation::set_allocated_after_column_name(std::string* afte
 
 // -------------------------------------------------------------------
 
+// -------------------------------------------------------------------
+
 
 // @@protoc_insertion_point(namespace_scope)
 
diff --git a/go/greptime/v1/ddl.pb.go b/go/greptime/v1/ddl.pb.go
index 8abeaf1d..49696c72 100644
--- a/go/greptime/v1/ddl.pb.go
+++ b/go/greptime/v1/ddl.pb.go
@@ -77,7 +77,7 @@ func (x AddColumnLocation_LocationType) Number() protoreflect.EnumNumber {
 
 // Deprecated: Use AddColumnLocation_LocationType.Descriptor instead.
 func (AddColumnLocation_LocationType) EnumDescriptor() ([]byte, []int) {
-	return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{22, 0}
+	return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{23, 0}
 }
 
 // "Data Definition Language" requests, that create, modify or delete the
@@ -1525,8 +1525,7 @@ type ChangeTableOptions struct {
 	sizeCache     protoimpl.SizeCache
 	unknownFields protoimpl.UnknownFields
 
-	Key   string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
-	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+	ChangeTableOptions []*ChangeTableOption `protobuf:"bytes,1,rep,name=change_table_options,json=changeTableOptions,proto3" json:"change_table_options,omitempty"`
 }
 
 func (x *ChangeTableOptions) Reset() {
@@ -1561,14 +1560,62 @@ func (*ChangeTableOptions) Descriptor() ([]byte, []int) {
 	return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{17}
 }
 
-func (x *ChangeTableOptions) GetKey() string {
+func (x *ChangeTableOptions) GetChangeTableOptions() []*ChangeTableOption {
+	if x != nil {
+		return x.ChangeTableOptions
+	}
+	return nil
+}
+
+type ChangeTableOption struct {
+	state         protoimpl.MessageState
+	sizeCache     protoimpl.SizeCache
+	unknownFields protoimpl.UnknownFields
+
+	Key   string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+	Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+}
+
+func (x *ChangeTableOption) Reset() {
+	*x = ChangeTableOption{}
+	if protoimpl.UnsafeEnabled {
+		mi := &file_greptime_v1_ddl_proto_msgTypes[18]
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		ms.StoreMessageInfo(mi)
+	}
+}
+
+func (x *ChangeTableOption) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ChangeTableOption) ProtoMessage() {}
+
+func (x *ChangeTableOption) ProtoReflect() protoreflect.Message {
+	mi := &file_greptime_v1_ddl_proto_msgTypes[18]
+	if protoimpl.UnsafeEnabled && x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ChangeTableOption.ProtoReflect.Descriptor instead.
+func (*ChangeTableOption) Descriptor() ([]byte, []int) {
+	return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{18}
+}
+
+func (x *ChangeTableOption) GetKey() string {
 	if x != nil {
 		return x.Key
 	}
 	return ""
 }
 
-func (x *ChangeTableOptions) GetValue() string {
+func (x *ChangeTableOption) GetValue() string {
 	if x != nil {
 		return x.Value
 	}
@@ -1586,7 +1633,7 @@ type DropColumn struct {
 func (x *DropColumn) Reset() {
 	*x = DropColumn{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_greptime_v1_ddl_proto_msgTypes[18]
+		mi := &file_greptime_v1_ddl_proto_msgTypes[19]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1599,7 +1646,7 @@ func (x *DropColumn) String() string {
 func (*DropColumn) ProtoMessage() {}
 
 func (x *DropColumn) ProtoReflect() protoreflect.Message {
-	mi := &file_greptime_v1_ddl_proto_msgTypes[18]
+	mi := &file_greptime_v1_ddl_proto_msgTypes[19]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1612,7 +1659,7 @@ func (x *DropColumn) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use DropColumn.ProtoReflect.Descriptor instead.
 func (*DropColumn) Descriptor() ([]byte, []int) {
-	return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{18}
+	return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{19}
 }
 
 func (x *DropColumn) GetName() string {
@@ -1633,7 +1680,7 @@ type TableId struct {
 func (x *TableId) Reset() {
 	*x = TableId{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_greptime_v1_ddl_proto_msgTypes[19]
+		mi := &file_greptime_v1_ddl_proto_msgTypes[20]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1646,7 +1693,7 @@ func (x *TableId) String() string {
 func (*TableId) ProtoMessage() {}
 
 func (x *TableId) ProtoReflect() protoreflect.Message {
-	mi := &file_greptime_v1_ddl_proto_msgTypes[19]
+	mi := &file_greptime_v1_ddl_proto_msgTypes[20]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1659,7 +1706,7 @@ func (x *TableId) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use TableId.ProtoReflect.Descriptor instead.
 func (*TableId) Descriptor() ([]byte, []int) {
-	return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{19}
+	return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{20}
 }
 
 func (x *TableId) GetId() uint32 {
@@ -1680,7 +1727,7 @@ type FlowId struct {
 func (x *FlowId) Reset() {
 	*x = FlowId{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_greptime_v1_ddl_proto_msgTypes[20]
+		mi := &file_greptime_v1_ddl_proto_msgTypes[21]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1693,7 +1740,7 @@ func (x *FlowId) String() string {
 func (*FlowId) ProtoMessage() {}
 
 func (x *FlowId) ProtoReflect() protoreflect.Message {
-	mi := &file_greptime_v1_ddl_proto_msgTypes[20]
+	mi := &file_greptime_v1_ddl_proto_msgTypes[21]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1706,7 +1753,7 @@ func (x *FlowId) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use FlowId.ProtoReflect.Descriptor instead.
 func (*FlowId) Descriptor() ([]byte, []int) {
-	return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{20}
+	return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{21}
 }
 
 func (x *FlowId) GetId() uint32 {
@@ -1736,7 +1783,7 @@ type ColumnDef struct {
 func (x *ColumnDef) Reset() {
 	*x = ColumnDef{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_greptime_v1_ddl_proto_msgTypes[21]
+		mi := &file_greptime_v1_ddl_proto_msgTypes[22]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1749,7 +1796,7 @@ func (x *ColumnDef) String() string {
 func (*ColumnDef) ProtoMessage() {}
 
 func (x *ColumnDef) ProtoReflect() protoreflect.Message {
-	mi := &file_greptime_v1_ddl_proto_msgTypes[21]
+	mi := &file_greptime_v1_ddl_proto_msgTypes[22]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1762,7 +1809,7 @@ func (x *ColumnDef) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use ColumnDef.ProtoReflect.Descriptor instead.
 func (*ColumnDef) Descriptor() ([]byte, []int) {
-	return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{21}
+	return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{22}
 }
 
 func (x *ColumnDef) GetName() string {
@@ -1833,7 +1880,7 @@ type AddColumnLocation struct {
 func (x *AddColumnLocation) Reset() {
 	*x = AddColumnLocation{}
 	if protoimpl.UnsafeEnabled {
-		mi := &file_greptime_v1_ddl_proto_msgTypes[22]
+		mi := &file_greptime_v1_ddl_proto_msgTypes[23]
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		ms.StoreMessageInfo(mi)
 	}
@@ -1846,7 +1893,7 @@ func (x *AddColumnLocation) String() string {
 func (*AddColumnLocation) ProtoMessage() {}
 
 func (x *AddColumnLocation) ProtoReflect() protoreflect.Message {
-	mi := &file_greptime_v1_ddl_proto_msgTypes[22]
+	mi := &file_greptime_v1_ddl_proto_msgTypes[23]
 	if protoimpl.UnsafeEnabled && x != nil {
 		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
 		if ms.LoadMessageInfo() == nil {
@@ -1859,7 +1906,7 @@ func (x *AddColumnLocation) ProtoReflect() protoreflect.Message {
 
 // Deprecated: Use AddColumnLocation.ProtoReflect.Descriptor instead.
 func (*AddColumnLocation) Descriptor() ([]byte, []int) {
-	return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{22}
+	return file_greptime_v1_ddl_proto_rawDescGZIP(), []int{23}
 }
 
 func (x *AddColumnLocation) GetLocationType() AddColumnLocation_LocationType {
@@ -2151,58 +2198,65 @@ var file_greptime_v1_ddl_proto_rawDesc = []byte{
 	0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d,
 	0x6e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69,
 	0x6f, 0x6e, 0x52, 0x13, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x3c, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6e, 0x67,
-	0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x10, 0x0a,
-	0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
-	0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
-	0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x20, 0x0a, 0x0a, 0x44, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x6c,
-	0x75, 0x6d, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x19, 0x0a, 0x07, 0x54, 0x61, 0x62, 0x6c, 0x65,
-	0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02,
-	0x69, 0x64, 0x22, 0x18, 0x0a, 0x06, 0x46, 0x6c, 0x6f, 0x77, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02,
-	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, 0x8e, 0x03, 0x0a,
-	0x09, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x65, 0x66, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
-	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38,
-	0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
-	0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e,
-	0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08,
-	0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x6e,
-	0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69,
-	0x73, 0x4e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2d, 0x0a, 0x12, 0x64, 0x65, 0x66,
-	0x61, 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x18,
-	0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x6f,
-	0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12, 0x3e, 0x0a, 0x0d, 0x73, 0x65, 0x6d, 0x61,
-	0x6e, 0x74, 0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32,
-	0x19, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65,
-	0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x73, 0x65, 0x6d, 0x61,
-	0x6e, 0x74, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d,
-	0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65,
-	0x6e, 0x74, 0x12, 0x53, 0x0a, 0x12, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x65,
-	0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24,
-	0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c,
-	0x75, 0x6d, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e,
-	0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x64, 0x61, 0x74, 0x61, 0x74, 0x79, 0x70, 0x65, 0x45, 0x78,
-	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f,
-	0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74,
-	0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4f, 0x70, 0x74,
-	0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb7, 0x01,
-	0x0a, 0x11, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74,
-	0x69, 0x6f, 0x6e, 0x12, 0x50, 0x0a, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
-	0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x72, 0x65,
-	0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x75,
-	0x6d, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74,
-	0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
-	0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x63,
-	0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d,
-	0x65, 0x22, 0x24, 0x0a, 0x0c, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70,
-	0x65, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x49, 0x52, 0x53, 0x54, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05,
-	0x41, 0x46, 0x54, 0x45, 0x52, 0x10, 0x01, 0x42, 0x4c, 0x0a, 0x0e, 0x69, 0x6f, 0x2e, 0x67, 0x72,
-	0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x03, 0x44, 0x64, 0x6c, 0x5a, 0x35,
-	0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x72, 0x65, 0x70, 0x74,
-	0x69, 0x6d, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x2f, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65,
-	0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69,
-	0x6d, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
+	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x66, 0x0a, 0x12, 0x43, 0x68, 0x61, 0x6e, 0x67,
+	0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x50, 0x0a,
+	0x14, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x67, 0x72,
+	0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
+	0x54, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x12, 0x63, 0x68, 0x61,
+	0x6e, 0x67, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22,
+	0x3b, 0x0a, 0x11, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x4f, 0x70,
+	0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
+	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x20, 0x0a, 0x0a,
+	0x44, 0x72, 0x6f, 0x70, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61,
+	0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x19,
+	0x0a, 0x07, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18,
+	0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x22, 0x18, 0x0a, 0x06, 0x46, 0x6c, 0x6f,
+	0x77, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52,
+	0x02, 0x69, 0x64, 0x22, 0x8e, 0x03, 0x0a, 0x09, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x65,
+	0x66, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
+	0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x79,
+	0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74,
+	0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x61, 0x74,
+	0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12,
+	0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03,
+	0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x4e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65,
+	0x12, 0x2d, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x63, 0x6f, 0x6e, 0x73,
+	0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x11, 0x64, 0x65,
+	0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x74, 0x12,
+	0x3e, 0x0a, 0x0d, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65,
+	0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d,
+	0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x54, 0x79, 0x70,
+	0x65, 0x52, 0x0c, 0x73, 0x65, 0x6d, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12,
+	0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
+	0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x53, 0x0a, 0x12, 0x64, 0x61, 0x74,
+	0x61, 0x74, 0x79, 0x70, 0x65, 0x5f, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18,
+	0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65,
+	0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79,
+	0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x11, 0x64, 0x61, 0x74,
+	0x61, 0x74, 0x79, 0x70, 0x65, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x34,
+	0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32,
+	0x1a, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f,
+	0x6c, 0x75, 0x6d, 0x6e, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x07, 0x6f, 0x70, 0x74,
+	0x69, 0x6f, 0x6e, 0x73, 0x22, 0xb7, 0x01, 0x0a, 0x11, 0x41, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x75,
+	0x6d, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x50, 0x0a, 0x0d, 0x6c, 0x6f,
+	0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
+	0x0e, 0x32, 0x2b, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e,
+	0x41, 0x64, 0x64, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f,
+	0x6e, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c,
+	0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x11,
+	0x61, 0x66, 0x74, 0x65, 0x72, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d,
+	0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x61, 0x66, 0x74, 0x65, 0x72, 0x43, 0x6f,
+	0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x24, 0x0a, 0x0c, 0x4c, 0x6f, 0x63, 0x61,
+	0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x46, 0x49, 0x52, 0x53,
+	0x54, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x46, 0x54, 0x45, 0x52, 0x10, 0x01, 0x42, 0x4c,
+	0x0a, 0x0e, 0x69, 0x6f, 0x2e, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31,
+	0x42, 0x03, 0x44, 0x64, 0x6c, 0x5a, 0x35, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f,
+	0x6d, 0x2f, 0x47, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x2f, 0x67,
+	0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f,
+	0x2f, 0x67, 0x72, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x62, 0x06, 0x70, 0x72,
+	0x6f, 0x74, 0x6f, 0x33,
 }
 
 var (
@@ -2218,7 +2272,7 @@ func file_greptime_v1_ddl_proto_rawDescGZIP() []byte {
 }
 
 var file_greptime_v1_ddl_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_greptime_v1_ddl_proto_msgTypes = make([]protoimpl.MessageInfo, 26)
+var file_greptime_v1_ddl_proto_msgTypes = make([]protoimpl.MessageInfo, 27)
 var file_greptime_v1_ddl_proto_goTypes = []interface{}{
 	(AddColumnLocation_LocationType)(0), // 0: greptime.v1.AddColumnLocation.LocationType
 	(*DdlRequest)(nil),                  // 1: greptime.v1.DdlRequest
@@ -2239,20 +2293,21 @@ var file_greptime_v1_ddl_proto_goTypes = []interface{}{
 	(*AddColumn)(nil),                   // 16: greptime.v1.AddColumn
 	(*ChangeColumnType)(nil),            // 17: greptime.v1.ChangeColumnType
 	(*ChangeTableOptions)(nil),          // 18: greptime.v1.ChangeTableOptions
-	(*DropColumn)(nil),                  // 19: greptime.v1.DropColumn
-	(*TableId)(nil),                     // 20: greptime.v1.TableId
-	(*FlowId)(nil),                      // 21: greptime.v1.FlowId
-	(*ColumnDef)(nil),                   // 22: greptime.v1.ColumnDef
-	(*AddColumnLocation)(nil),           // 23: greptime.v1.AddColumnLocation
-	nil,                                 // 24: greptime.v1.CreateFlowExpr.FlowOptionsEntry
-	nil,                                 // 25: greptime.v1.CreateTableExpr.TableOptionsEntry
-	nil,                                 // 26: greptime.v1.CreateDatabaseExpr.OptionsEntry
-	(*TableName)(nil),                   // 27: greptime.v1.TableName
-	(*ExpireAfter)(nil),                 // 28: greptime.v1.ExpireAfter
-	(ColumnDataType)(0),                 // 29: greptime.v1.ColumnDataType
-	(*ColumnDataTypeExtension)(nil),     // 30: greptime.v1.ColumnDataTypeExtension
-	(SemanticType)(0),                   // 31: greptime.v1.SemanticType
-	(*ColumnOptions)(nil),               // 32: greptime.v1.ColumnOptions
+	(*ChangeTableOption)(nil),           // 19: greptime.v1.ChangeTableOption
+	(*DropColumn)(nil),                  // 20: greptime.v1.DropColumn
+	(*TableId)(nil),                     // 21: greptime.v1.TableId
+	(*FlowId)(nil),                      // 22: greptime.v1.FlowId
+	(*ColumnDef)(nil),                   // 23: greptime.v1.ColumnDef
+	(*AddColumnLocation)(nil),           // 24: greptime.v1.AddColumnLocation
+	nil,                                 // 25: greptime.v1.CreateFlowExpr.FlowOptionsEntry
+	nil,                                 // 26: greptime.v1.CreateTableExpr.TableOptionsEntry
+	nil,                                 // 27: greptime.v1.CreateDatabaseExpr.OptionsEntry
+	(*TableName)(nil),                   // 28: greptime.v1.TableName
+	(*ExpireAfter)(nil),                 // 29: greptime.v1.ExpireAfter
+	(ColumnDataType)(0),                 // 30: greptime.v1.ColumnDataType
+	(*ColumnDataTypeExtension)(nil),     // 31: greptime.v1.ColumnDataTypeExtension
+	(SemanticType)(0),                   // 32: greptime.v1.SemanticType
+	(*ColumnOptions)(nil),               // 33: greptime.v1.ColumnOptions
 }
 var file_greptime_v1_ddl_proto_depIdxs = []int32{
 	9,  // 0: greptime.v1.DdlRequest.create_database:type_name -> greptime.v1.CreateDatabaseExpr
@@ -2264,41 +2319,42 @@ var file_greptime_v1_ddl_proto_depIdxs = []int32{
 	3,  // 6: greptime.v1.DdlRequest.drop_flow:type_name -> greptime.v1.DropFlowExpr
 	4,  // 7: greptime.v1.DdlRequest.create_view:type_name -> greptime.v1.CreateViewExpr
 	5,  // 8: greptime.v1.DdlRequest.drop_view:type_name -> greptime.v1.DropViewExpr
-	27, // 9: greptime.v1.CreateFlowExpr.source_table_names:type_name -> greptime.v1.TableName
-	27, // 10: greptime.v1.CreateFlowExpr.sink_table_name:type_name -> greptime.v1.TableName
-	28, // 11: greptime.v1.CreateFlowExpr.expire_after:type_name -> greptime.v1.ExpireAfter
-	24, // 12: greptime.v1.CreateFlowExpr.flow_options:type_name -> greptime.v1.CreateFlowExpr.FlowOptionsEntry
-	21, // 13: greptime.v1.DropFlowExpr.flow_id:type_name -> greptime.v1.FlowId
-	27, // 14: greptime.v1.CreateViewExpr.table_names:type_name -> greptime.v1.TableName
-	20, // 15: greptime.v1.DropViewExpr.view_id:type_name -> greptime.v1.TableId
-	22, // 16: greptime.v1.CreateTableExpr.column_defs:type_name -> greptime.v1.ColumnDef
-	25, // 17: greptime.v1.CreateTableExpr.table_options:type_name -> greptime.v1.CreateTableExpr.TableOptionsEntry
-	20, // 18: greptime.v1.CreateTableExpr.table_id:type_name -> greptime.v1.TableId
+	28, // 9: greptime.v1.CreateFlowExpr.source_table_names:type_name -> greptime.v1.TableName
+	28, // 10: greptime.v1.CreateFlowExpr.sink_table_name:type_name -> greptime.v1.TableName
+	29, // 11: greptime.v1.CreateFlowExpr.expire_after:type_name -> greptime.v1.ExpireAfter
+	25, // 12: greptime.v1.CreateFlowExpr.flow_options:type_name -> greptime.v1.CreateFlowExpr.FlowOptionsEntry
+	22, // 13: greptime.v1.DropFlowExpr.flow_id:type_name -> greptime.v1.FlowId
+	28, // 14: greptime.v1.CreateViewExpr.table_names:type_name -> greptime.v1.TableName
+	21, // 15: greptime.v1.DropViewExpr.view_id:type_name -> greptime.v1.TableId
+	23, // 16: greptime.v1.CreateTableExpr.column_defs:type_name -> greptime.v1.ColumnDef
+	26, // 17: greptime.v1.CreateTableExpr.table_options:type_name -> greptime.v1.CreateTableExpr.TableOptionsEntry
+	21, // 18: greptime.v1.CreateTableExpr.table_id:type_name -> greptime.v1.TableId
 	12, // 19: greptime.v1.AlterExpr.add_columns:type_name -> greptime.v1.AddColumns
 	13, // 20: greptime.v1.AlterExpr.drop_columns:type_name -> greptime.v1.DropColumns
 	15, // 21: greptime.v1.AlterExpr.rename_table:type_name -> greptime.v1.RenameTable
 	14, // 22: greptime.v1.AlterExpr.change_column_types:type_name -> greptime.v1.ChangeColumnTypes
 	18, // 23: greptime.v1.AlterExpr.change_table_options:type_name -> greptime.v1.ChangeTableOptions
-	20, // 24: greptime.v1.DropTableExpr.table_id:type_name -> greptime.v1.TableId
-	26, // 25: greptime.v1.CreateDatabaseExpr.options:type_name -> greptime.v1.CreateDatabaseExpr.OptionsEntry
-	20, // 26: greptime.v1.TruncateTableExpr.table_id:type_name -> greptime.v1.TableId
+	21, // 24: greptime.v1.DropTableExpr.table_id:type_name -> greptime.v1.TableId
+	27, // 25: greptime.v1.CreateDatabaseExpr.options:type_name -> greptime.v1.CreateDatabaseExpr.OptionsEntry
+	21, // 26: greptime.v1.TruncateTableExpr.table_id:type_name -> greptime.v1.TableId
 	16, // 27: greptime.v1.AddColumns.add_columns:type_name -> greptime.v1.AddColumn
-	19, // 28: greptime.v1.DropColumns.drop_columns:type_name -> greptime.v1.DropColumn
+	20, // 28: greptime.v1.DropColumns.drop_columns:type_name -> greptime.v1.DropColumn
 	17, // 29: greptime.v1.ChangeColumnTypes.change_column_types:type_name -> greptime.v1.ChangeColumnType
-	22, // 30: greptime.v1.AddColumn.column_def:type_name -> greptime.v1.ColumnDef
-	23, // 31: greptime.v1.AddColumn.location:type_name -> greptime.v1.AddColumnLocation
-	29, // 32: greptime.v1.ChangeColumnType.target_type:type_name -> greptime.v1.ColumnDataType
-	30, // 33: greptime.v1.ChangeColumnType.target_type_extension:type_name -> greptime.v1.ColumnDataTypeExtension
-	29, // 34: greptime.v1.ColumnDef.data_type:type_name -> greptime.v1.ColumnDataType
-	31, // 35: greptime.v1.ColumnDef.semantic_type:type_name -> greptime.v1.SemanticType
-	30, // 36: greptime.v1.ColumnDef.datatype_extension:type_name -> greptime.v1.ColumnDataTypeExtension
-	32, // 37: greptime.v1.ColumnDef.options:type_name -> greptime.v1.ColumnOptions
-	0,  // 38: greptime.v1.AddColumnLocation.location_type:type_name -> greptime.v1.AddColumnLocation.LocationType
-	39, // [39:39] is the sub-list for method output_type
-	39, // [39:39] is the sub-list for method input_type
-	39, // [39:39] is the sub-list for extension type_name
-	39, // [39:39] is the sub-list for extension extendee
-	0,  // [0:39] is the sub-list for field type_name
+	23, // 30: greptime.v1.AddColumn.column_def:type_name -> greptime.v1.ColumnDef
+	24, // 31: greptime.v1.AddColumn.location:type_name -> greptime.v1.AddColumnLocation
+	30, // 32: greptime.v1.ChangeColumnType.target_type:type_name -> greptime.v1.ColumnDataType
+	31, // 33: greptime.v1.ChangeColumnType.target_type_extension:type_name -> greptime.v1.ColumnDataTypeExtension
+	19, // 34: greptime.v1.ChangeTableOptions.change_table_options:type_name -> greptime.v1.ChangeTableOption
+	30, // 35: greptime.v1.ColumnDef.data_type:type_name -> greptime.v1.ColumnDataType
+	32, // 36: greptime.v1.ColumnDef.semantic_type:type_name -> greptime.v1.SemanticType
+	31, // 37: greptime.v1.ColumnDef.datatype_extension:type_name -> greptime.v1.ColumnDataTypeExtension
+	33, // 38: greptime.v1.ColumnDef.options:type_name -> greptime.v1.ColumnOptions
+	0,  // 39: greptime.v1.AddColumnLocation.location_type:type_name -> greptime.v1.AddColumnLocation.LocationType
+	40, // [40:40] is the sub-list for method output_type
+	40, // [40:40] is the sub-list for method input_type
+	40, // [40:40] is the sub-list for extension type_name
+	40, // [40:40] is the sub-list for extension extendee
+	0,  // [0:40] is the sub-list for field type_name
 }
 
 func init() { file_greptime_v1_ddl_proto_init() }
@@ -2525,7 +2581,7 @@ func file_greptime_v1_ddl_proto_init() {
 			}
 		}
 		file_greptime_v1_ddl_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*DropColumn); i {
+			switch v := v.(*ChangeTableOption); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -2537,7 +2593,7 @@ func file_greptime_v1_ddl_proto_init() {
 			}
 		}
 		file_greptime_v1_ddl_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*TableId); i {
+			switch v := v.(*DropColumn); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -2549,7 +2605,7 @@ func file_greptime_v1_ddl_proto_init() {
 			}
 		}
 		file_greptime_v1_ddl_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*FlowId); i {
+			switch v := v.(*TableId); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -2561,7 +2617,7 @@ func file_greptime_v1_ddl_proto_init() {
 			}
 		}
 		file_greptime_v1_ddl_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*ColumnDef); i {
+			switch v := v.(*FlowId); i {
 			case 0:
 				return &v.state
 			case 1:
@@ -2573,6 +2629,18 @@ func file_greptime_v1_ddl_proto_init() {
 			}
 		}
 		file_greptime_v1_ddl_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
+			switch v := v.(*ColumnDef); i {
+			case 0:
+				return &v.state
+			case 1:
+				return &v.sizeCache
+			case 2:
+				return &v.unknownFields
+			default:
+				return nil
+			}
+		}
+		file_greptime_v1_ddl_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
 			switch v := v.(*AddColumnLocation); i {
 			case 0:
 				return &v.state
@@ -2609,7 +2677,7 @@ func file_greptime_v1_ddl_proto_init() {
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: file_greptime_v1_ddl_proto_rawDesc,
 			NumEnums:      1,
-			NumMessages:   26,
+			NumMessages:   27,
 			NumExtensions: 0,
 			NumServices:   0,
 		},
diff --git a/java/src/main/java/io/greptime/v1/Ddl.java b/java/src/main/java/io/greptime/v1/Ddl.java
index 56d41a6b..7b685ea2 100644
--- a/java/src/main/java/io/greptime/v1/Ddl.java
+++ b/java/src/main/java/io/greptime/v1/Ddl.java
@@ -22517,6 +22517,801 @@ public interface ChangeTableOptionsOrBuilder extends
       // @@protoc_insertion_point(interface_extends:greptime.v1.ChangeTableOptions)
       com.google.protobuf.MessageOrBuilder {
 
+    /**
+     * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+     */
+    java.util.List 
+        getChangeTableOptionsList();
+    /**
+     * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+     */
+    io.greptime.v1.Ddl.ChangeTableOption getChangeTableOptions(int index);
+    /**
+     * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+     */
+    int getChangeTableOptionsCount();
+    /**
+     * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+     */
+    java.util.List 
+        getChangeTableOptionsOrBuilderList();
+    /**
+     * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+     */
+    io.greptime.v1.Ddl.ChangeTableOptionOrBuilder getChangeTableOptionsOrBuilder(
+        int index);
+  }
+  /**
+   * Protobuf type {@code greptime.v1.ChangeTableOptions}
+   */
+  public static final class ChangeTableOptions extends
+      com.google.protobuf.GeneratedMessageV3 implements
+      // @@protoc_insertion_point(message_implements:greptime.v1.ChangeTableOptions)
+      ChangeTableOptionsOrBuilder {
+  private static final long serialVersionUID = 0L;
+    // Use ChangeTableOptions.newBuilder() to construct.
+    private ChangeTableOptions(com.google.protobuf.GeneratedMessageV3.Builder builder) {
+      super(builder);
+    }
+    private ChangeTableOptions() {
+      changeTableOptions_ = java.util.Collections.emptyList();
+    }
+
+    @java.lang.Override
+    @SuppressWarnings({"unused"})
+    protected java.lang.Object newInstance(
+        UnusedPrivateParameter unused) {
+      return new ChangeTableOptions();
+    }
+
+    @java.lang.Override
+    public final com.google.protobuf.UnknownFieldSet
+    getUnknownFields() {
+      return this.unknownFields;
+    }
+    private ChangeTableOptions(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      this();
+      if (extensionRegistry == null) {
+        throw new java.lang.NullPointerException();
+      }
+      int mutable_bitField0_ = 0;
+      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+          com.google.protobuf.UnknownFieldSet.newBuilder();
+      try {
+        boolean done = false;
+        while (!done) {
+          int tag = input.readTag();
+          switch (tag) {
+            case 0:
+              done = true;
+              break;
+            case 10: {
+              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
+                changeTableOptions_ = new java.util.ArrayList();
+                mutable_bitField0_ |= 0x00000001;
+              }
+              changeTableOptions_.add(
+                  input.readMessage(io.greptime.v1.Ddl.ChangeTableOption.parser(), extensionRegistry));
+              break;
+            }
+            default: {
+              if (!parseUnknownField(
+                  input, unknownFields, extensionRegistry, tag)) {
+                done = true;
+              }
+              break;
+            }
+          }
+        }
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(
+            e).setUnfinishedMessage(this);
+      } finally {
+        if (((mutable_bitField0_ & 0x00000001) != 0)) {
+          changeTableOptions_ = java.util.Collections.unmodifiableList(changeTableOptions_);
+        }
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+    public static final com.google.protobuf.Descriptors.Descriptor
+        getDescriptor() {
+      return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableOptions_descriptor;
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableOptions_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              io.greptime.v1.Ddl.ChangeTableOptions.class, io.greptime.v1.Ddl.ChangeTableOptions.Builder.class);
+    }
+
+    public static final int CHANGE_TABLE_OPTIONS_FIELD_NUMBER = 1;
+    private java.util.List changeTableOptions_;
+    /**
+     * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+     */
+    @java.lang.Override
+    public java.util.List getChangeTableOptionsList() {
+      return changeTableOptions_;
+    }
+    /**
+     * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+     */
+    @java.lang.Override
+    public java.util.List 
+        getChangeTableOptionsOrBuilderList() {
+      return changeTableOptions_;
+    }
+    /**
+     * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+     */
+    @java.lang.Override
+    public int getChangeTableOptionsCount() {
+      return changeTableOptions_.size();
+    }
+    /**
+     * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+     */
+    @java.lang.Override
+    public io.greptime.v1.Ddl.ChangeTableOption getChangeTableOptions(int index) {
+      return changeTableOptions_.get(index);
+    }
+    /**
+     * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+     */
+    @java.lang.Override
+    public io.greptime.v1.Ddl.ChangeTableOptionOrBuilder getChangeTableOptionsOrBuilder(
+        int index) {
+      return changeTableOptions_.get(index);
+    }
+
+    private byte memoizedIsInitialized = -1;
+    @java.lang.Override
+    public final boolean isInitialized() {
+      byte isInitialized = memoizedIsInitialized;
+      if (isInitialized == 1) return true;
+      if (isInitialized == 0) return false;
+
+      memoizedIsInitialized = 1;
+      return true;
+    }
+
+    @java.lang.Override
+    public void writeTo(com.google.protobuf.CodedOutputStream output)
+                        throws java.io.IOException {
+      for (int i = 0; i < changeTableOptions_.size(); i++) {
+        output.writeMessage(1, changeTableOptions_.get(i));
+      }
+      unknownFields.writeTo(output);
+    }
+
+    @java.lang.Override
+    public int getSerializedSize() {
+      int size = memoizedSize;
+      if (size != -1) return size;
+
+      size = 0;
+      for (int i = 0; i < changeTableOptions_.size(); i++) {
+        size += com.google.protobuf.CodedOutputStream
+          .computeMessageSize(1, changeTableOptions_.get(i));
+      }
+      size += unknownFields.getSerializedSize();
+      memoizedSize = size;
+      return size;
+    }
+
+    @java.lang.Override
+    public boolean equals(final java.lang.Object obj) {
+      if (obj == this) {
+       return true;
+      }
+      if (!(obj instanceof io.greptime.v1.Ddl.ChangeTableOptions)) {
+        return super.equals(obj);
+      }
+      io.greptime.v1.Ddl.ChangeTableOptions other = (io.greptime.v1.Ddl.ChangeTableOptions) obj;
+
+      if (!getChangeTableOptionsList()
+          .equals(other.getChangeTableOptionsList())) return false;
+      if (!unknownFields.equals(other.unknownFields)) return false;
+      return true;
+    }
+
+    @java.lang.Override
+    public int hashCode() {
+      if (memoizedHashCode != 0) {
+        return memoizedHashCode;
+      }
+      int hash = 41;
+      hash = (19 * hash) + getDescriptor().hashCode();
+      if (getChangeTableOptionsCount() > 0) {
+        hash = (37 * hash) + CHANGE_TABLE_OPTIONS_FIELD_NUMBER;
+        hash = (53 * hash) + getChangeTableOptionsList().hashCode();
+      }
+      hash = (29 * hash) + unknownFields.hashCode();
+      memoizedHashCode = hash;
+      return hash;
+    }
+
+    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(
+        java.nio.ByteBuffer data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(
+        java.nio.ByteBuffer data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(
+        com.google.protobuf.ByteString data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(
+        com.google.protobuf.ByteString data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(byte[] data)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data);
+    }
+    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(
+        byte[] data,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws com.google.protobuf.InvalidProtocolBufferException {
+      return PARSER.parseFrom(data, extensionRegistry);
+    }
+    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static io.greptime.v1.Ddl.ChangeTableOptions parseDelimitedFrom(java.io.InputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input);
+    }
+    public static io.greptime.v1.Ddl.ChangeTableOptions parseDelimitedFrom(
+        java.io.InputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+    }
+    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(
+        com.google.protobuf.CodedInputStream input)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input);
+    }
+    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(
+        com.google.protobuf.CodedInputStream input,
+        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+        throws java.io.IOException {
+      return com.google.protobuf.GeneratedMessageV3
+          .parseWithIOException(PARSER, input, extensionRegistry);
+    }
+
+    @java.lang.Override
+    public Builder newBuilderForType() { return newBuilder(); }
+    public static Builder newBuilder() {
+      return DEFAULT_INSTANCE.toBuilder();
+    }
+    public static Builder newBuilder(io.greptime.v1.Ddl.ChangeTableOptions prototype) {
+      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+    }
+    @java.lang.Override
+    public Builder toBuilder() {
+      return this == DEFAULT_INSTANCE
+          ? new Builder() : new Builder().mergeFrom(this);
+    }
+
+    @java.lang.Override
+    protected Builder newBuilderForType(
+        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+      Builder builder = new Builder(parent);
+      return builder;
+    }
+    /**
+     * Protobuf type {@code greptime.v1.ChangeTableOptions}
+     */
+    public static final class Builder extends
+        com.google.protobuf.GeneratedMessageV3.Builder implements
+        // @@protoc_insertion_point(builder_implements:greptime.v1.ChangeTableOptions)
+        io.greptime.v1.Ddl.ChangeTableOptionsOrBuilder {
+      public static final com.google.protobuf.Descriptors.Descriptor
+          getDescriptor() {
+        return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableOptions_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableOptions_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                io.greptime.v1.Ddl.ChangeTableOptions.class, io.greptime.v1.Ddl.ChangeTableOptions.Builder.class);
+      }
+
+      // Construct using io.greptime.v1.Ddl.ChangeTableOptions.newBuilder()
+      private Builder() {
+        maybeForceBuilderInitialization();
+      }
+
+      private Builder(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        super(parent);
+        maybeForceBuilderInitialization();
+      }
+      private void maybeForceBuilderInitialization() {
+        if (com.google.protobuf.GeneratedMessageV3
+                .alwaysUseFieldBuilders) {
+          getChangeTableOptionsFieldBuilder();
+        }
+      }
+      @java.lang.Override
+      public Builder clear() {
+        super.clear();
+        if (changeTableOptionsBuilder_ == null) {
+          changeTableOptions_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+        } else {
+          changeTableOptionsBuilder_.clear();
+        }
+        return this;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Descriptors.Descriptor
+          getDescriptorForType() {
+        return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableOptions_descriptor;
+      }
+
+      @java.lang.Override
+      public io.greptime.v1.Ddl.ChangeTableOptions getDefaultInstanceForType() {
+        return io.greptime.v1.Ddl.ChangeTableOptions.getDefaultInstance();
+      }
+
+      @java.lang.Override
+      public io.greptime.v1.Ddl.ChangeTableOptions build() {
+        io.greptime.v1.Ddl.ChangeTableOptions result = buildPartial();
+        if (!result.isInitialized()) {
+          throw newUninitializedMessageException(result);
+        }
+        return result;
+      }
+
+      @java.lang.Override
+      public io.greptime.v1.Ddl.ChangeTableOptions buildPartial() {
+        io.greptime.v1.Ddl.ChangeTableOptions result = new io.greptime.v1.Ddl.ChangeTableOptions(this);
+        int from_bitField0_ = bitField0_;
+        if (changeTableOptionsBuilder_ == null) {
+          if (((bitField0_ & 0x00000001) != 0)) {
+            changeTableOptions_ = java.util.Collections.unmodifiableList(changeTableOptions_);
+            bitField0_ = (bitField0_ & ~0x00000001);
+          }
+          result.changeTableOptions_ = changeTableOptions_;
+        } else {
+          result.changeTableOptions_ = changeTableOptionsBuilder_.build();
+        }
+        onBuilt();
+        return result;
+      }
+
+      @java.lang.Override
+      public Builder clone() {
+        return super.clone();
+      }
+      @java.lang.Override
+      public Builder setField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.setField(field, value);
+      }
+      @java.lang.Override
+      public Builder clearField(
+          com.google.protobuf.Descriptors.FieldDescriptor field) {
+        return super.clearField(field);
+      }
+      @java.lang.Override
+      public Builder clearOneof(
+          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+        return super.clearOneof(oneof);
+      }
+      @java.lang.Override
+      public Builder setRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          int index, java.lang.Object value) {
+        return super.setRepeatedField(field, index, value);
+      }
+      @java.lang.Override
+      public Builder addRepeatedField(
+          com.google.protobuf.Descriptors.FieldDescriptor field,
+          java.lang.Object value) {
+        return super.addRepeatedField(field, value);
+      }
+      @java.lang.Override
+      public Builder mergeFrom(com.google.protobuf.Message other) {
+        if (other instanceof io.greptime.v1.Ddl.ChangeTableOptions) {
+          return mergeFrom((io.greptime.v1.Ddl.ChangeTableOptions)other);
+        } else {
+          super.mergeFrom(other);
+          return this;
+        }
+      }
+
+      public Builder mergeFrom(io.greptime.v1.Ddl.ChangeTableOptions other) {
+        if (other == io.greptime.v1.Ddl.ChangeTableOptions.getDefaultInstance()) return this;
+        if (changeTableOptionsBuilder_ == null) {
+          if (!other.changeTableOptions_.isEmpty()) {
+            if (changeTableOptions_.isEmpty()) {
+              changeTableOptions_ = other.changeTableOptions_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+            } else {
+              ensureChangeTableOptionsIsMutable();
+              changeTableOptions_.addAll(other.changeTableOptions_);
+            }
+            onChanged();
+          }
+        } else {
+          if (!other.changeTableOptions_.isEmpty()) {
+            if (changeTableOptionsBuilder_.isEmpty()) {
+              changeTableOptionsBuilder_.dispose();
+              changeTableOptionsBuilder_ = null;
+              changeTableOptions_ = other.changeTableOptions_;
+              bitField0_ = (bitField0_ & ~0x00000001);
+              changeTableOptionsBuilder_ = 
+                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
+                   getChangeTableOptionsFieldBuilder() : null;
+            } else {
+              changeTableOptionsBuilder_.addAllMessages(other.changeTableOptions_);
+            }
+          }
+        }
+        this.mergeUnknownFields(other.unknownFields);
+        onChanged();
+        return this;
+      }
+
+      @java.lang.Override
+      public final boolean isInitialized() {
+        return true;
+      }
+
+      @java.lang.Override
+      public Builder mergeFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws java.io.IOException {
+        io.greptime.v1.Ddl.ChangeTableOptions parsedMessage = null;
+        try {
+          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          parsedMessage = (io.greptime.v1.Ddl.ChangeTableOptions) e.getUnfinishedMessage();
+          throw e.unwrapIOException();
+        } finally {
+          if (parsedMessage != null) {
+            mergeFrom(parsedMessage);
+          }
+        }
+        return this;
+      }
+      private int bitField0_;
+
+      private java.util.List changeTableOptions_ =
+        java.util.Collections.emptyList();
+      private void ensureChangeTableOptionsIsMutable() {
+        if (!((bitField0_ & 0x00000001) != 0)) {
+          changeTableOptions_ = new java.util.ArrayList(changeTableOptions_);
+          bitField0_ |= 0x00000001;
+         }
+      }
+
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          io.greptime.v1.Ddl.ChangeTableOption, io.greptime.v1.Ddl.ChangeTableOption.Builder, io.greptime.v1.Ddl.ChangeTableOptionOrBuilder> changeTableOptionsBuilder_;
+
+      /**
+       * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+       */
+      public java.util.List getChangeTableOptionsList() {
+        if (changeTableOptionsBuilder_ == null) {
+          return java.util.Collections.unmodifiableList(changeTableOptions_);
+        } else {
+          return changeTableOptionsBuilder_.getMessageList();
+        }
+      }
+      /**
+       * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+       */
+      public int getChangeTableOptionsCount() {
+        if (changeTableOptionsBuilder_ == null) {
+          return changeTableOptions_.size();
+        } else {
+          return changeTableOptionsBuilder_.getCount();
+        }
+      }
+      /**
+       * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+       */
+      public io.greptime.v1.Ddl.ChangeTableOption getChangeTableOptions(int index) {
+        if (changeTableOptionsBuilder_ == null) {
+          return changeTableOptions_.get(index);
+        } else {
+          return changeTableOptionsBuilder_.getMessage(index);
+        }
+      }
+      /**
+       * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+       */
+      public Builder setChangeTableOptions(
+          int index, io.greptime.v1.Ddl.ChangeTableOption value) {
+        if (changeTableOptionsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureChangeTableOptionsIsMutable();
+          changeTableOptions_.set(index, value);
+          onChanged();
+        } else {
+          changeTableOptionsBuilder_.setMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+       */
+      public Builder setChangeTableOptions(
+          int index, io.greptime.v1.Ddl.ChangeTableOption.Builder builderForValue) {
+        if (changeTableOptionsBuilder_ == null) {
+          ensureChangeTableOptionsIsMutable();
+          changeTableOptions_.set(index, builderForValue.build());
+          onChanged();
+        } else {
+          changeTableOptionsBuilder_.setMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+       */
+      public Builder addChangeTableOptions(io.greptime.v1.Ddl.ChangeTableOption value) {
+        if (changeTableOptionsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureChangeTableOptionsIsMutable();
+          changeTableOptions_.add(value);
+          onChanged();
+        } else {
+          changeTableOptionsBuilder_.addMessage(value);
+        }
+        return this;
+      }
+      /**
+       * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+       */
+      public Builder addChangeTableOptions(
+          int index, io.greptime.v1.Ddl.ChangeTableOption value) {
+        if (changeTableOptionsBuilder_ == null) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          ensureChangeTableOptionsIsMutable();
+          changeTableOptions_.add(index, value);
+          onChanged();
+        } else {
+          changeTableOptionsBuilder_.addMessage(index, value);
+        }
+        return this;
+      }
+      /**
+       * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+       */
+      public Builder addChangeTableOptions(
+          io.greptime.v1.Ddl.ChangeTableOption.Builder builderForValue) {
+        if (changeTableOptionsBuilder_ == null) {
+          ensureChangeTableOptionsIsMutable();
+          changeTableOptions_.add(builderForValue.build());
+          onChanged();
+        } else {
+          changeTableOptionsBuilder_.addMessage(builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+       */
+      public Builder addChangeTableOptions(
+          int index, io.greptime.v1.Ddl.ChangeTableOption.Builder builderForValue) {
+        if (changeTableOptionsBuilder_ == null) {
+          ensureChangeTableOptionsIsMutable();
+          changeTableOptions_.add(index, builderForValue.build());
+          onChanged();
+        } else {
+          changeTableOptionsBuilder_.addMessage(index, builderForValue.build());
+        }
+        return this;
+      }
+      /**
+       * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+       */
+      public Builder addAllChangeTableOptions(
+          java.lang.Iterable values) {
+        if (changeTableOptionsBuilder_ == null) {
+          ensureChangeTableOptionsIsMutable();
+          com.google.protobuf.AbstractMessageLite.Builder.addAll(
+              values, changeTableOptions_);
+          onChanged();
+        } else {
+          changeTableOptionsBuilder_.addAllMessages(values);
+        }
+        return this;
+      }
+      /**
+       * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+       */
+      public Builder clearChangeTableOptions() {
+        if (changeTableOptionsBuilder_ == null) {
+          changeTableOptions_ = java.util.Collections.emptyList();
+          bitField0_ = (bitField0_ & ~0x00000001);
+          onChanged();
+        } else {
+          changeTableOptionsBuilder_.clear();
+        }
+        return this;
+      }
+      /**
+       * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+       */
+      public Builder removeChangeTableOptions(int index) {
+        if (changeTableOptionsBuilder_ == null) {
+          ensureChangeTableOptionsIsMutable();
+          changeTableOptions_.remove(index);
+          onChanged();
+        } else {
+          changeTableOptionsBuilder_.remove(index);
+        }
+        return this;
+      }
+      /**
+       * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+       */
+      public io.greptime.v1.Ddl.ChangeTableOption.Builder getChangeTableOptionsBuilder(
+          int index) {
+        return getChangeTableOptionsFieldBuilder().getBuilder(index);
+      }
+      /**
+       * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+       */
+      public io.greptime.v1.Ddl.ChangeTableOptionOrBuilder getChangeTableOptionsOrBuilder(
+          int index) {
+        if (changeTableOptionsBuilder_ == null) {
+          return changeTableOptions_.get(index);  } else {
+          return changeTableOptionsBuilder_.getMessageOrBuilder(index);
+        }
+      }
+      /**
+       * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+       */
+      public java.util.List 
+           getChangeTableOptionsOrBuilderList() {
+        if (changeTableOptionsBuilder_ != null) {
+          return changeTableOptionsBuilder_.getMessageOrBuilderList();
+        } else {
+          return java.util.Collections.unmodifiableList(changeTableOptions_);
+        }
+      }
+      /**
+       * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+       */
+      public io.greptime.v1.Ddl.ChangeTableOption.Builder addChangeTableOptionsBuilder() {
+        return getChangeTableOptionsFieldBuilder().addBuilder(
+            io.greptime.v1.Ddl.ChangeTableOption.getDefaultInstance());
+      }
+      /**
+       * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+       */
+      public io.greptime.v1.Ddl.ChangeTableOption.Builder addChangeTableOptionsBuilder(
+          int index) {
+        return getChangeTableOptionsFieldBuilder().addBuilder(
+            index, io.greptime.v1.Ddl.ChangeTableOption.getDefaultInstance());
+      }
+      /**
+       * repeated .greptime.v1.ChangeTableOption change_table_options = 1;
+       */
+      public java.util.List 
+           getChangeTableOptionsBuilderList() {
+        return getChangeTableOptionsFieldBuilder().getBuilderList();
+      }
+      private com.google.protobuf.RepeatedFieldBuilderV3<
+          io.greptime.v1.Ddl.ChangeTableOption, io.greptime.v1.Ddl.ChangeTableOption.Builder, io.greptime.v1.Ddl.ChangeTableOptionOrBuilder> 
+          getChangeTableOptionsFieldBuilder() {
+        if (changeTableOptionsBuilder_ == null) {
+          changeTableOptionsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+              io.greptime.v1.Ddl.ChangeTableOption, io.greptime.v1.Ddl.ChangeTableOption.Builder, io.greptime.v1.Ddl.ChangeTableOptionOrBuilder>(
+                  changeTableOptions_,
+                  ((bitField0_ & 0x00000001) != 0),
+                  getParentForChildren(),
+                  isClean());
+          changeTableOptions_ = null;
+        }
+        return changeTableOptionsBuilder_;
+      }
+      @java.lang.Override
+      public final Builder setUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.setUnknownFields(unknownFields);
+      }
+
+      @java.lang.Override
+      public final Builder mergeUnknownFields(
+          final com.google.protobuf.UnknownFieldSet unknownFields) {
+        return super.mergeUnknownFields(unknownFields);
+      }
+
+
+      // @@protoc_insertion_point(builder_scope:greptime.v1.ChangeTableOptions)
+    }
+
+    // @@protoc_insertion_point(class_scope:greptime.v1.ChangeTableOptions)
+    private static final io.greptime.v1.Ddl.ChangeTableOptions DEFAULT_INSTANCE;
+    static {
+      DEFAULT_INSTANCE = new io.greptime.v1.Ddl.ChangeTableOptions();
+    }
+
+    public static io.greptime.v1.Ddl.ChangeTableOptions getDefaultInstance() {
+      return DEFAULT_INSTANCE;
+    }
+
+    private static final com.google.protobuf.Parser
+        PARSER = new com.google.protobuf.AbstractParser() {
+      @java.lang.Override
+      public ChangeTableOptions parsePartialFrom(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        return new ChangeTableOptions(input, extensionRegistry);
+      }
+    };
+
+    public static com.google.protobuf.Parser parser() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public com.google.protobuf.Parser getParserForType() {
+      return PARSER;
+    }
+
+    @java.lang.Override
+    public io.greptime.v1.Ddl.ChangeTableOptions getDefaultInstanceForType() {
+      return DEFAULT_INSTANCE;
+    }
+
+  }
+
+  public interface ChangeTableOptionOrBuilder extends
+      // @@protoc_insertion_point(interface_extends:greptime.v1.ChangeTableOption)
+      com.google.protobuf.MessageOrBuilder {
+
     /**
      * string key = 1;
      * @return The key.
@@ -22542,18 +23337,18 @@ public interface ChangeTableOptionsOrBuilder extends
         getValueBytes();
   }
   /**
-   * Protobuf type {@code greptime.v1.ChangeTableOptions}
+   * Protobuf type {@code greptime.v1.ChangeTableOption}
    */
-  public static final class ChangeTableOptions extends
+  public static final class ChangeTableOption extends
       com.google.protobuf.GeneratedMessageV3 implements
-      // @@protoc_insertion_point(message_implements:greptime.v1.ChangeTableOptions)
-      ChangeTableOptionsOrBuilder {
+      // @@protoc_insertion_point(message_implements:greptime.v1.ChangeTableOption)
+      ChangeTableOptionOrBuilder {
   private static final long serialVersionUID = 0L;
-    // Use ChangeTableOptions.newBuilder() to construct.
-    private ChangeTableOptions(com.google.protobuf.GeneratedMessageV3.Builder builder) {
+    // Use ChangeTableOption.newBuilder() to construct.
+    private ChangeTableOption(com.google.protobuf.GeneratedMessageV3.Builder builder) {
       super(builder);
     }
-    private ChangeTableOptions() {
+    private ChangeTableOption() {
       key_ = "";
       value_ = "";
     }
@@ -22562,7 +23357,7 @@ private ChangeTableOptions() {
     @SuppressWarnings({"unused"})
     protected java.lang.Object newInstance(
         UnusedPrivateParameter unused) {
-      return new ChangeTableOptions();
+      return new ChangeTableOption();
     }
 
     @java.lang.Override
@@ -22570,7 +23365,7 @@ protected java.lang.Object newInstance(
     getUnknownFields() {
       return this.unknownFields;
     }
-    private ChangeTableOptions(
+    private ChangeTableOption(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -22623,15 +23418,15 @@ private ChangeTableOptions(
     }
     public static final com.google.protobuf.Descriptors.Descriptor
         getDescriptor() {
-      return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableOptions_descriptor;
+      return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableOption_descriptor;
     }
 
     @java.lang.Override
     protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
         internalGetFieldAccessorTable() {
-      return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableOptions_fieldAccessorTable
+      return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableOption_fieldAccessorTable
           .ensureFieldAccessorsInitialized(
-              io.greptime.v1.Ddl.ChangeTableOptions.class, io.greptime.v1.Ddl.ChangeTableOptions.Builder.class);
+              io.greptime.v1.Ddl.ChangeTableOption.class, io.greptime.v1.Ddl.ChangeTableOption.Builder.class);
     }
 
     public static final int KEY_FIELD_NUMBER = 1;
@@ -22755,10 +23550,10 @@ public boolean equals(final java.lang.Object obj) {
       if (obj == this) {
        return true;
       }
-      if (!(obj instanceof io.greptime.v1.Ddl.ChangeTableOptions)) {
+      if (!(obj instanceof io.greptime.v1.Ddl.ChangeTableOption)) {
         return super.equals(obj);
       }
-      io.greptime.v1.Ddl.ChangeTableOptions other = (io.greptime.v1.Ddl.ChangeTableOptions) obj;
+      io.greptime.v1.Ddl.ChangeTableOption other = (io.greptime.v1.Ddl.ChangeTableOption) obj;
 
       if (!getKey()
           .equals(other.getKey())) return false;
@@ -22784,69 +23579,69 @@ public int hashCode() {
       return hash;
     }
 
-    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(
+    public static io.greptime.v1.Ddl.ChangeTableOption parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(
+    public static io.greptime.v1.Ddl.ChangeTableOption parseFrom(
         java.nio.ByteBuffer data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(
+    public static io.greptime.v1.Ddl.ChangeTableOption parseFrom(
         com.google.protobuf.ByteString data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(
+    public static io.greptime.v1.Ddl.ChangeTableOption parseFrom(
         com.google.protobuf.ByteString data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(byte[] data)
+    public static io.greptime.v1.Ddl.ChangeTableOption parseFrom(byte[] data)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data);
     }
-    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(
+    public static io.greptime.v1.Ddl.ChangeTableOption parseFrom(
         byte[] data,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws com.google.protobuf.InvalidProtocolBufferException {
       return PARSER.parseFrom(data, extensionRegistry);
     }
-    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(java.io.InputStream input)
+    public static io.greptime.v1.Ddl.ChangeTableOption parseFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(
+    public static io.greptime.v1.Ddl.ChangeTableOption parseFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.greptime.v1.Ddl.ChangeTableOptions parseDelimitedFrom(java.io.InputStream input)
+    public static io.greptime.v1.Ddl.ChangeTableOption parseDelimitedFrom(java.io.InputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input);
     }
-    public static io.greptime.v1.Ddl.ChangeTableOptions parseDelimitedFrom(
+    public static io.greptime.v1.Ddl.ChangeTableOption parseDelimitedFrom(
         java.io.InputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
     }
-    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(
+    public static io.greptime.v1.Ddl.ChangeTableOption parseFrom(
         com.google.protobuf.CodedInputStream input)
         throws java.io.IOException {
       return com.google.protobuf.GeneratedMessageV3
           .parseWithIOException(PARSER, input);
     }
-    public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(
+    public static io.greptime.v1.Ddl.ChangeTableOption parseFrom(
         com.google.protobuf.CodedInputStream input,
         com.google.protobuf.ExtensionRegistryLite extensionRegistry)
         throws java.io.IOException {
@@ -22859,7 +23654,7 @@ public static io.greptime.v1.Ddl.ChangeTableOptions parseFrom(
     public static Builder newBuilder() {
       return DEFAULT_INSTANCE.toBuilder();
     }
-    public static Builder newBuilder(io.greptime.v1.Ddl.ChangeTableOptions prototype) {
+    public static Builder newBuilder(io.greptime.v1.Ddl.ChangeTableOption prototype) {
       return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
     }
     @java.lang.Override
@@ -22875,26 +23670,26 @@ protected Builder newBuilderForType(
       return builder;
     }
     /**
-     * Protobuf type {@code greptime.v1.ChangeTableOptions}
+     * Protobuf type {@code greptime.v1.ChangeTableOption}
      */
     public static final class Builder extends
         com.google.protobuf.GeneratedMessageV3.Builder implements
-        // @@protoc_insertion_point(builder_implements:greptime.v1.ChangeTableOptions)
-        io.greptime.v1.Ddl.ChangeTableOptionsOrBuilder {
+        // @@protoc_insertion_point(builder_implements:greptime.v1.ChangeTableOption)
+        io.greptime.v1.Ddl.ChangeTableOptionOrBuilder {
       public static final com.google.protobuf.Descriptors.Descriptor
           getDescriptor() {
-        return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableOptions_descriptor;
+        return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableOption_descriptor;
       }
 
       @java.lang.Override
       protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
           internalGetFieldAccessorTable() {
-        return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableOptions_fieldAccessorTable
+        return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableOption_fieldAccessorTable
             .ensureFieldAccessorsInitialized(
-                io.greptime.v1.Ddl.ChangeTableOptions.class, io.greptime.v1.Ddl.ChangeTableOptions.Builder.class);
+                io.greptime.v1.Ddl.ChangeTableOption.class, io.greptime.v1.Ddl.ChangeTableOption.Builder.class);
       }
 
-      // Construct using io.greptime.v1.Ddl.ChangeTableOptions.newBuilder()
+      // Construct using io.greptime.v1.Ddl.ChangeTableOption.newBuilder()
       private Builder() {
         maybeForceBuilderInitialization();
       }
@@ -22922,17 +23717,17 @@ public Builder clear() {
       @java.lang.Override
       public com.google.protobuf.Descriptors.Descriptor
           getDescriptorForType() {
-        return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableOptions_descriptor;
+        return io.greptime.v1.Ddl.internal_static_greptime_v1_ChangeTableOption_descriptor;
       }
 
       @java.lang.Override
-      public io.greptime.v1.Ddl.ChangeTableOptions getDefaultInstanceForType() {
-        return io.greptime.v1.Ddl.ChangeTableOptions.getDefaultInstance();
+      public io.greptime.v1.Ddl.ChangeTableOption getDefaultInstanceForType() {
+        return io.greptime.v1.Ddl.ChangeTableOption.getDefaultInstance();
       }
 
       @java.lang.Override
-      public io.greptime.v1.Ddl.ChangeTableOptions build() {
-        io.greptime.v1.Ddl.ChangeTableOptions result = buildPartial();
+      public io.greptime.v1.Ddl.ChangeTableOption build() {
+        io.greptime.v1.Ddl.ChangeTableOption result = buildPartial();
         if (!result.isInitialized()) {
           throw newUninitializedMessageException(result);
         }
@@ -22940,8 +23735,8 @@ public io.greptime.v1.Ddl.ChangeTableOptions build() {
       }
 
       @java.lang.Override
-      public io.greptime.v1.Ddl.ChangeTableOptions buildPartial() {
-        io.greptime.v1.Ddl.ChangeTableOptions result = new io.greptime.v1.Ddl.ChangeTableOptions(this);
+      public io.greptime.v1.Ddl.ChangeTableOption buildPartial() {
+        io.greptime.v1.Ddl.ChangeTableOption result = new io.greptime.v1.Ddl.ChangeTableOption(this);
         result.key_ = key_;
         result.value_ = value_;
         onBuilt();
@@ -22982,16 +23777,16 @@ public Builder addRepeatedField(
       }
       @java.lang.Override
       public Builder mergeFrom(com.google.protobuf.Message other) {
-        if (other instanceof io.greptime.v1.Ddl.ChangeTableOptions) {
-          return mergeFrom((io.greptime.v1.Ddl.ChangeTableOptions)other);
+        if (other instanceof io.greptime.v1.Ddl.ChangeTableOption) {
+          return mergeFrom((io.greptime.v1.Ddl.ChangeTableOption)other);
         } else {
           super.mergeFrom(other);
           return this;
         }
       }
 
-      public Builder mergeFrom(io.greptime.v1.Ddl.ChangeTableOptions other) {
-        if (other == io.greptime.v1.Ddl.ChangeTableOptions.getDefaultInstance()) return this;
+      public Builder mergeFrom(io.greptime.v1.Ddl.ChangeTableOption other) {
+        if (other == io.greptime.v1.Ddl.ChangeTableOption.getDefaultInstance()) return this;
         if (!other.getKey().isEmpty()) {
           key_ = other.key_;
           onChanged();
@@ -23015,11 +23810,11 @@ public Builder mergeFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws java.io.IOException {
-        io.greptime.v1.Ddl.ChangeTableOptions parsedMessage = null;
+        io.greptime.v1.Ddl.ChangeTableOption parsedMessage = null;
         try {
           parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
         } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-          parsedMessage = (io.greptime.v1.Ddl.ChangeTableOptions) e.getUnfinishedMessage();
+          parsedMessage = (io.greptime.v1.Ddl.ChangeTableOption) e.getUnfinishedMessage();
           throw e.unwrapIOException();
         } finally {
           if (parsedMessage != null) {
@@ -23193,41 +23988,41 @@ public final Builder mergeUnknownFields(
       }
 
 
-      // @@protoc_insertion_point(builder_scope:greptime.v1.ChangeTableOptions)
+      // @@protoc_insertion_point(builder_scope:greptime.v1.ChangeTableOption)
     }
 
-    // @@protoc_insertion_point(class_scope:greptime.v1.ChangeTableOptions)
-    private static final io.greptime.v1.Ddl.ChangeTableOptions DEFAULT_INSTANCE;
+    // @@protoc_insertion_point(class_scope:greptime.v1.ChangeTableOption)
+    private static final io.greptime.v1.Ddl.ChangeTableOption DEFAULT_INSTANCE;
     static {
-      DEFAULT_INSTANCE = new io.greptime.v1.Ddl.ChangeTableOptions();
+      DEFAULT_INSTANCE = new io.greptime.v1.Ddl.ChangeTableOption();
     }
 
-    public static io.greptime.v1.Ddl.ChangeTableOptions getDefaultInstance() {
+    public static io.greptime.v1.Ddl.ChangeTableOption getDefaultInstance() {
       return DEFAULT_INSTANCE;
     }
 
-    private static final com.google.protobuf.Parser
-        PARSER = new com.google.protobuf.AbstractParser() {
+    private static final com.google.protobuf.Parser
+        PARSER = new com.google.protobuf.AbstractParser() {
       @java.lang.Override
-      public ChangeTableOptions parsePartialFrom(
+      public ChangeTableOption parsePartialFrom(
           com.google.protobuf.CodedInputStream input,
           com.google.protobuf.ExtensionRegistryLite extensionRegistry)
           throws com.google.protobuf.InvalidProtocolBufferException {
-        return new ChangeTableOptions(input, extensionRegistry);
+        return new ChangeTableOption(input, extensionRegistry);
       }
     };
 
-    public static com.google.protobuf.Parser parser() {
+    public static com.google.protobuf.Parser parser() {
       return PARSER;
     }
 
     @java.lang.Override
-    public com.google.protobuf.Parser getParserForType() {
+    public com.google.protobuf.Parser getParserForType() {
       return PARSER;
     }
 
     @java.lang.Override
-    public io.greptime.v1.Ddl.ChangeTableOptions getDefaultInstanceForType() {
+    public io.greptime.v1.Ddl.ChangeTableOption getDefaultInstanceForType() {
       return DEFAULT_INSTANCE;
     }
 
@@ -27278,6 +28073,11 @@ public io.greptime.v1.Ddl.AddColumnLocation getDefaultInstanceForType() {
   private static final 
     com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_greptime_v1_ChangeTableOptions_fieldAccessorTable;
+  private static final com.google.protobuf.Descriptors.Descriptor
+    internal_static_greptime_v1_ChangeTableOption_descriptor;
+  private static final 
+    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_greptime_v1_ChangeTableOption_fieldAccessorTable;
   private static final com.google.protobuf.Descriptors.Descriptor
     internal_static_greptime_v1_DropColumn_descriptor;
   private static final 
@@ -27394,24 +28194,26 @@ public io.greptime.v1.Ddl.AddColumnLocation getDefaultInstanceForType() {
       "pe\022\023\n\013column_name\030\001 \001(\t\0220\n\013target_type\030\002" +
       " \001(\0162\033.greptime.v1.ColumnDataType\022C\n\025tar" +
       "get_type_extension\030\003 \001(\0132$.greptime.v1.C" +
-      "olumnDataTypeExtension\"0\n\022ChangeTableOpt" +
-      "ions\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t\"\032\n\nDrop" +
-      "Column\022\014\n\004name\030\001 \001(\t\"\025\n\007TableId\022\n\n\002id\030\001 " +
-      "\001(\r\"\024\n\006FlowId\022\n\n\002id\030\001 \001(\r\"\254\002\n\tColumnDef\022" +
-      "\014\n\004name\030\001 \001(\t\022.\n\tdata_type\030\002 \001(\0162\033.grept" +
-      "ime.v1.ColumnDataType\022\023\n\013is_nullable\030\003 \001" +
-      "(\010\022\032\n\022default_constraint\030\004 \001(\014\0220\n\rsemant" +
-      "ic_type\030\005 \001(\0162\031.greptime.v1.SemanticType" +
-      "\022\017\n\007comment\030\006 \001(\t\022@\n\022datatype_extension\030" +
-      "\007 \001(\0132$.greptime.v1.ColumnDataTypeExtens" +
-      "ion\022+\n\007options\030\010 \001(\0132\032.greptime.v1.Colum" +
-      "nOptions\"\230\001\n\021AddColumnLocation\022B\n\rlocati" +
-      "on_type\030\001 \001(\0162+.greptime.v1.AddColumnLoc" +
-      "ation.LocationType\022\031\n\021after_column_name\030" +
-      "\002 \001(\t\"$\n\014LocationType\022\t\n\005FIRST\020\000\022\t\n\005AFTE" +
-      "R\020\001BL\n\016io.greptime.v1B\003DdlZ5github.com/G" +
-      "reptimeTeam/greptime-proto/go/greptime/v" +
-      "1b\006proto3"
+      "olumnDataTypeExtension\"R\n\022ChangeTableOpt" +
+      "ions\022<\n\024change_table_options\030\001 \003(\0132\036.gre" +
+      "ptime.v1.ChangeTableOption\"/\n\021ChangeTabl" +
+      "eOption\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t\"\032\n\nD" +
+      "ropColumn\022\014\n\004name\030\001 \001(\t\"\025\n\007TableId\022\n\n\002id" +
+      "\030\001 \001(\r\"\024\n\006FlowId\022\n\n\002id\030\001 \001(\r\"\254\002\n\tColumnD" +
+      "ef\022\014\n\004name\030\001 \001(\t\022.\n\tdata_type\030\002 \001(\0162\033.gr" +
+      "eptime.v1.ColumnDataType\022\023\n\013is_nullable\030" +
+      "\003 \001(\010\022\032\n\022default_constraint\030\004 \001(\014\0220\n\rsem" +
+      "antic_type\030\005 \001(\0162\031.greptime.v1.SemanticT" +
+      "ype\022\017\n\007comment\030\006 \001(\t\022@\n\022datatype_extensi" +
+      "on\030\007 \001(\0132$.greptime.v1.ColumnDataTypeExt" +
+      "ension\022+\n\007options\030\010 \001(\0132\032.greptime.v1.Co" +
+      "lumnOptions\"\230\001\n\021AddColumnLocation\022B\n\rloc" +
+      "ation_type\030\001 \001(\0162+.greptime.v1.AddColumn" +
+      "Location.LocationType\022\031\n\021after_column_na" +
+      "me\030\002 \001(\t\"$\n\014LocationType\022\t\n\005FIRST\020\000\022\t\n\005A" +
+      "FTER\020\001BL\n\016io.greptime.v1B\003DdlZ5github.co" +
+      "m/GreptimeTeam/greptime-proto/go/greptim" +
+      "e/v1b\006proto3"
     };
     descriptor = com.google.protobuf.Descriptors.FileDescriptor
       .internalBuildGeneratedFileFrom(descriptorData,
@@ -27543,33 +28345,39 @@ public io.greptime.v1.Ddl.AddColumnLocation getDefaultInstanceForType() {
     internal_static_greptime_v1_ChangeTableOptions_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_greptime_v1_ChangeTableOptions_descriptor,
+        new java.lang.String[] { "ChangeTableOptions", });
+    internal_static_greptime_v1_ChangeTableOption_descriptor =
+      getDescriptor().getMessageTypes().get(18);
+    internal_static_greptime_v1_ChangeTableOption_fieldAccessorTable = new
+      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+        internal_static_greptime_v1_ChangeTableOption_descriptor,
         new java.lang.String[] { "Key", "Value", });
     internal_static_greptime_v1_DropColumn_descriptor =
-      getDescriptor().getMessageTypes().get(18);
+      getDescriptor().getMessageTypes().get(19);
     internal_static_greptime_v1_DropColumn_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_greptime_v1_DropColumn_descriptor,
         new java.lang.String[] { "Name", });
     internal_static_greptime_v1_TableId_descriptor =
-      getDescriptor().getMessageTypes().get(19);
+      getDescriptor().getMessageTypes().get(20);
     internal_static_greptime_v1_TableId_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_greptime_v1_TableId_descriptor,
         new java.lang.String[] { "Id", });
     internal_static_greptime_v1_FlowId_descriptor =
-      getDescriptor().getMessageTypes().get(20);
+      getDescriptor().getMessageTypes().get(21);
     internal_static_greptime_v1_FlowId_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_greptime_v1_FlowId_descriptor,
         new java.lang.String[] { "Id", });
     internal_static_greptime_v1_ColumnDef_descriptor =
-      getDescriptor().getMessageTypes().get(21);
+      getDescriptor().getMessageTypes().get(22);
     internal_static_greptime_v1_ColumnDef_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_greptime_v1_ColumnDef_descriptor,
         new java.lang.String[] { "Name", "DataType", "IsNullable", "DefaultConstraint", "SemanticType", "Comment", "DatatypeExtension", "Options", });
     internal_static_greptime_v1_AddColumnLocation_descriptor =
-      getDescriptor().getMessageTypes().get(22);
+      getDescriptor().getMessageTypes().get(23);
     internal_static_greptime_v1_AddColumnLocation_fieldAccessorTable = new
       com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
         internal_static_greptime_v1_AddColumnLocation_descriptor,
diff --git a/proto/greptime/v1/ddl.proto b/proto/greptime/v1/ddl.proto
index 4c9f990d..75a37e23 100644
--- a/proto/greptime/v1/ddl.proto
+++ b/proto/greptime/v1/ddl.proto
@@ -161,6 +161,10 @@ message ChangeColumnType {
 }
 
 message ChangeTableOptions {
+    repeated ChangeTableOption change_table_options = 1;
+}
+
+message ChangeTableOption {
   string key = 1;
   string value = 2;
 }