feat: enable database creation (#141)

This commit is contained in:
Yohan Wal
2024-04-07 16:07:46 +08:00
committed by GitHub
parent 06f6297ff3
commit 1bd2398b68
10 changed files with 2304 additions and 427 deletions
+112 -60
View File
@@ -118,6 +118,7 @@ PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT PROTOBUF_ATTRIBUTE_INIT_PRIORIT
PROTOBUF_CONSTEXPR CreateDatabaseExpr::CreateDatabaseExpr(
::_pbi::ConstantInitialized): _impl_{
/*decltype(_impl_.options_)*/{::_pbi::ConstantInitialized()}
, /*decltype(_impl_.catalog_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
, /*decltype(_impl_.database_name_)*/{&::_pbi::fixed_address_empty_string, ::_pbi::ConstantInitialized{}}
, /*decltype(_impl_.create_if_not_exists_)*/false
, /*decltype(_impl_._cached_size_)*/{}} {}
@@ -359,6 +360,7 @@ 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::CreateDatabaseExpr, _impl_.catalog_name_),
PROTOBUF_FIELD_OFFSET(::greptime::v1::CreateDatabaseExpr, _impl_.database_name_),
PROTOBUF_FIELD_OFFSET(::greptime::v1::CreateDatabaseExpr, _impl_.create_if_not_exists_),
PROTOBUF_FIELD_OFFSET(::greptime::v1::CreateDatabaseExpr, _impl_.options_),
@@ -454,16 +456,16 @@ static const ::_pbi::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protode
{ 52, -1, -1, sizeof(::greptime::v1::DropTableExpr)},
{ 63, 71, -1, sizeof(::greptime::v1::CreateDatabaseExpr_OptionsEntry_DoNotUse)},
{ 73, -1, -1, sizeof(::greptime::v1::CreateDatabaseExpr)},
{ 82, -1, -1, sizeof(::greptime::v1::TruncateTableExpr)},
{ 92, -1, -1, sizeof(::greptime::v1::DropDatabaseExpr)},
{ 101, -1, -1, sizeof(::greptime::v1::AddColumns)},
{ 108, -1, -1, sizeof(::greptime::v1::DropColumns)},
{ 115, -1, -1, sizeof(::greptime::v1::RenameTable)},
{ 122, -1, -1, sizeof(::greptime::v1::AddColumn)},
{ 130, -1, -1, sizeof(::greptime::v1::DropColumn)},
{ 137, -1, -1, sizeof(::greptime::v1::TableId)},
{ 144, -1, -1, sizeof(::greptime::v1::ColumnDef)},
{ 157, -1, -1, sizeof(::greptime::v1::AddColumnLocation)},
{ 83, -1, -1, sizeof(::greptime::v1::TruncateTableExpr)},
{ 93, -1, -1, sizeof(::greptime::v1::DropDatabaseExpr)},
{ 102, -1, -1, sizeof(::greptime::v1::AddColumns)},
{ 109, -1, -1, sizeof(::greptime::v1::DropColumns)},
{ 116, -1, -1, sizeof(::greptime::v1::RenameTable)},
{ 123, -1, -1, sizeof(::greptime::v1::AddColumn)},
{ 131, -1, -1, sizeof(::greptime::v1::DropColumn)},
{ 138, -1, -1, sizeof(::greptime::v1::TableId)},
{ 145, -1, -1, sizeof(::greptime::v1::ColumnDef)},
{ 158, -1, -1, sizeof(::greptime::v1::AddColumnLocation)},
};
static const ::_pb::Message* const file_default_instances[] = {
@@ -515,44 +517,44 @@ const char descriptor_table_protodef_greptime_2fv1_2fddl_2eproto[] PROTOBUF_SECT
"alog_name\030\001 \001(\t\022\023\n\013schema_name\030\002 \001(\t\022\022\n\n"
"table_name\030\003 \001(\t\022&\n\010table_id\030\004 \001(\0132\024.gre"
"ptime.v1.TableId\022\026\n\016drop_if_exists\030\005 \001(\010"
"\"\270\001\n\022CreateDatabaseExpr\022\025\n\rdatabase_name"
"\030\001 \001(\t\022\034\n\024create_if_not_exists\030\002 \001(\010\022=\n\007"
"options\030\003 \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\""
"%\n\013RenameTable\022\026\n\016new_table_name\030\001 \001(\t\"i"
"\n\tAddColumn\022*\n\ncolumn_def\030\001 \001(\0132\026.grepti"
"me.v1.ColumnDef\0220\n\010location\030\003 \001(\0132\036.grep"
"time.v1.AddColumnLocation\"\032\n\nDropColumn\022"
"\014\n\004name\030\001 \001(\t\"\025\n\007TableId\022\n\n\002id\030\001 \001(\r\"\377\001\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_n"
"ullable\030\003 \001(\010\022\032\n\022default_constraint\030\004 \001("
"\014\0220\n\rsemantic_type\030\005 \001(\0162\031.greptime.v1.S"
"emanticType\022\017\n\007comment\030\006 \001(\t\022@\n\022datatype"
"_extension\030\007 \001(\0132$.greptime.v1.ColumnDat"
"aTypeExtension\"\230\001\n\021AddColumnLocation\022B\n\r"
"location_type\030\001 \001(\0162+.greptime.v1.AddCol"
"umnLocation.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/grep"
"time/v1b\006proto3"
"\"\316\001\n\022CreateDatabaseExpr\022\024\n\014catalog_name\030"
"\001 \001(\t\022\025\n\rdatabase_name\030\002 \001(\t\022\034\n\024create_i"
"f_not_exists\030\003 \001(\010\022=\n\007options\030\004 \003(\0132,.gr"
"eptime.v1.CreateDatabaseExpr.OptionsEntr"
"y\032.\n\014OptionsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030"
"\002 \001(\t:\0028\001\"z\n\021TruncateTableExpr\022\024\n\014catalo"
"g_name\030\001 \001(\t\022\023\n\013schema_name\030\002 \001(\t\022\022\n\ntab"
"le_name\030\003 \001(\t\022&\n\010table_id\030\004 \001(\0132\024.grepti"
"me.v1.TableId\"U\n\020DropDatabaseExpr\022\024\n\014cat"
"alog_name\030\001 \001(\t\022\023\n\013schema_name\030\002 \001(\t\022\026\n\016"
"drop_if_exists\030\003 \001(\010\"9\n\nAddColumns\022+\n\013ad"
"d_columns\030\001 \003(\0132\026.greptime.v1.AddColumn\""
"<\n\013DropColumns\022-\n\014drop_columns\030\001 \003(\0132\027.g"
"reptime.v1.DropColumn\"%\n\013RenameTable\022\026\n\016"
"new_table_name\030\001 \001(\t\"i\n\tAddColumn\022*\n\ncol"
"umn_def\030\001 \001(\0132\026.greptime.v1.ColumnDef\0220\n"
"\010location\030\003 \001(\0132\036.greptime.v1.AddColumnL"
"ocation\"\032\n\nDropColumn\022\014\n\004name\030\001 \001(\t\"\025\n\007T"
"ableId\022\n\n\002id\030\001 \001(\r\"\377\001\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\022d"
"efault_constraint\030\004 \001(\014\0220\n\rsemantic_type"
"\030\005 \001(\0162\031.greptime.v1.SemanticType\022\017\n\007com"
"ment\030\006 \001(\t\022@\n\022datatype_extension\030\007 \001(\0132$"
".greptime.v1.ColumnDataTypeExtension\"\230\001\n"
"\021AddColumnLocation\022B\n\rlocation_type\030\001 \001("
"\0162+.greptime.v1.AddColumnLocation.Locati"
"onType\022\031\n\021after_column_name\030\002 \001(\t\"$\n\014Loc"
"ationType\022\t\n\005FIRST\020\000\022\t\n\005AFTER\020\001BL\n\016io.gr"
"eptime.v1B\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, 2335, descriptor_table_protodef_greptime_2fv1_2fddl_2eproto,
false, false, 2357, 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, 17,
schemas, file_default_instances, TableStruct_greptime_2fv1_2fddl_2eproto::offsets,
@@ -2674,12 +2676,21 @@ CreateDatabaseExpr::CreateDatabaseExpr(const CreateDatabaseExpr& from)
CreateDatabaseExpr* const _this = this; (void)_this;
new (&_impl_) Impl_{
/*decltype(_impl_.options_)*/{}
, decltype(_impl_.catalog_name_){}
, decltype(_impl_.database_name_){}
, decltype(_impl_.create_if_not_exists_){}
, /*decltype(_impl_._cached_size_)*/{}};
_internal_metadata_.MergeFrom<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(from._internal_metadata_);
_this->_impl_.options_.MergeFrom(from._impl_.options_);
_impl_.catalog_name_.InitDefault();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
_impl_.catalog_name_.Set("", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
if (!from._internal_catalog_name().empty()) {
_this->_impl_.catalog_name_.Set(from._internal_catalog_name(),
_this->GetArenaForAllocation());
}
_impl_.database_name_.InitDefault();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
_impl_.database_name_.Set("", GetArenaForAllocation());
@@ -2698,10 +2709,15 @@ inline void CreateDatabaseExpr::SharedCtor(
(void)is_message_owned;
new (&_impl_) Impl_{
/*decltype(_impl_.options_)*/{::_pbi::ArenaInitialized(), arena}
, decltype(_impl_.catalog_name_){}
, decltype(_impl_.database_name_){}
, decltype(_impl_.create_if_not_exists_){false}
, /*decltype(_impl_._cached_size_)*/{}
};
_impl_.catalog_name_.InitDefault();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
_impl_.catalog_name_.Set("", GetArenaForAllocation());
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
_impl_.database_name_.InitDefault();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
_impl_.database_name_.Set("", GetArenaForAllocation());
@@ -2722,6 +2738,7 @@ inline void CreateDatabaseExpr::SharedDtor() {
GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
_impl_.options_.Destruct();
_impl_.options_.~MapField();
_impl_.catalog_name_.Destroy();
_impl_.database_name_.Destroy();
}
@@ -2740,6 +2757,7 @@ void CreateDatabaseExpr::Clear() {
(void) cached_has_bits;
_impl_.options_.Clear();
_impl_.catalog_name_.ClearToEmpty();
_impl_.database_name_.ClearToEmpty();
_impl_.create_if_not_exists_ = false;
_internal_metadata_.Clear<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
@@ -2751,9 +2769,19 @@ const char* CreateDatabaseExpr::_InternalParse(const char* ptr, ::_pbi::ParseCon
uint32_t tag;
ptr = ::_pbi::ReadTag(ptr, &tag);
switch (tag >> 3) {
// string database_name = 1;
// string catalog_name = 1;
case 1:
if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 10)) {
auto str = _internal_mutable_catalog_name();
ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
CHK_(ptr);
CHK_(::_pbi::VerifyUTF8(str, "greptime.v1.CreateDatabaseExpr.catalog_name"));
} else
goto handle_unusual;
continue;
// string database_name = 2;
case 2:
if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 18)) {
auto str = _internal_mutable_database_name();
ptr = ::_pbi::InlineGreedyStringParser(str, ptr, ctx);
CHK_(ptr);
@@ -2761,24 +2789,24 @@ const char* CreateDatabaseExpr::_InternalParse(const char* ptr, ::_pbi::ParseCon
} else
goto handle_unusual;
continue;
// bool create_if_not_exists = 2;
case 2:
if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 16)) {
// bool create_if_not_exists = 3;
case 3:
if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 24)) {
_impl_.create_if_not_exists_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
CHK_(ptr);
} else
goto handle_unusual;
continue;
// map<string, string> options = 3;
case 3:
if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 26)) {
// map<string, string> options = 4;
case 4:
if (PROTOBUF_PREDICT_TRUE(static_cast<uint8_t>(tag) == 34)) {
ptr -= 1;
do {
ptr += 1;
ptr = ctx->ParseMessage(&_impl_.options_, ptr);
CHK_(ptr);
if (!ctx->DataAvailable(ptr)) break;
} while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<26>(ptr));
} while (::PROTOBUF_NAMESPACE_ID::internal::ExpectTag<34>(ptr));
} else
goto handle_unusual;
continue;
@@ -2811,23 +2839,33 @@ uint8_t* CreateDatabaseExpr::_InternalSerialize(
uint32_t cached_has_bits = 0;
(void) cached_has_bits;
// string database_name = 1;
// string catalog_name = 1;
if (!this->_internal_catalog_name().empty()) {
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
this->_internal_catalog_name().data(), static_cast<int>(this->_internal_catalog_name().length()),
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
"greptime.v1.CreateDatabaseExpr.catalog_name");
target = stream->WriteStringMaybeAliased(
1, this->_internal_catalog_name(), target);
}
// string database_name = 2;
if (!this->_internal_database_name().empty()) {
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::VerifyUtf8String(
this->_internal_database_name().data(), static_cast<int>(this->_internal_database_name().length()),
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SERIALIZE,
"greptime.v1.CreateDatabaseExpr.database_name");
target = stream->WriteStringMaybeAliased(
1, this->_internal_database_name(), target);
2, this->_internal_database_name(), target);
}
// bool create_if_not_exists = 2;
// bool create_if_not_exists = 3;
if (this->_internal_create_if_not_exists() != 0) {
target = stream->EnsureSpace(target);
target = ::_pbi::WireFormatLite::WriteBoolToArray(2, this->_internal_create_if_not_exists(), target);
target = ::_pbi::WireFormatLite::WriteBoolToArray(3, this->_internal_create_if_not_exists(), target);
}
// map<string, string> options = 3;
// map<string, string> options = 4;
if (!this->_internal_options().empty()) {
using MapType = ::_pb::Map<std::string, std::string>;
using WireHelper = CreateDatabaseExpr_OptionsEntry_DoNotUse::Funcs;
@@ -2846,12 +2884,12 @@ uint8_t* CreateDatabaseExpr::_InternalSerialize(
if (stream->IsSerializationDeterministic() && map_field.size() > 1) {
for (const auto& entry : ::_pbi::MapSorterPtr<MapType>(map_field)) {
target = WireHelper::InternalSerialize(3, entry.first, entry.second, target, stream);
target = WireHelper::InternalSerialize(4, entry.first, entry.second, target, stream);
check_utf8(entry);
}
} else {
for (const auto& entry : map_field) {
target = WireHelper::InternalSerialize(3, entry.first, entry.second, target, stream);
target = WireHelper::InternalSerialize(4, entry.first, entry.second, target, stream);
check_utf8(entry);
}
}
@@ -2873,7 +2911,7 @@ size_t CreateDatabaseExpr::ByteSizeLong() const {
// Prevent compiler warnings about cached_has_bits being unused
(void) cached_has_bits;
// map<string, string> options = 3;
// map<string, string> options = 4;
total_size += 1 *
::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(this->_internal_options_size());
for (::PROTOBUF_NAMESPACE_ID::Map< std::string, std::string >::const_iterator
@@ -2882,14 +2920,21 @@ size_t CreateDatabaseExpr::ByteSizeLong() const {
total_size += CreateDatabaseExpr_OptionsEntry_DoNotUse::Funcs::ByteSizeLong(it->first, it->second);
}
// string database_name = 1;
// string catalog_name = 1;
if (!this->_internal_catalog_name().empty()) {
total_size += 1 +
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
this->_internal_catalog_name());
}
// string database_name = 2;
if (!this->_internal_database_name().empty()) {
total_size += 1 +
::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
this->_internal_database_name());
}
// bool create_if_not_exists = 2;
// bool create_if_not_exists = 3;
if (this->_internal_create_if_not_exists() != 0) {
total_size += 1 + 1;
}
@@ -2913,6 +2958,9 @@ void CreateDatabaseExpr::MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, con
(void) cached_has_bits;
_this->_impl_.options_.MergeFrom(from._impl_.options_);
if (!from._internal_catalog_name().empty()) {
_this->_internal_set_catalog_name(from._internal_catalog_name());
}
if (!from._internal_database_name().empty()) {
_this->_internal_set_database_name(from._internal_database_name());
}
@@ -2939,6 +2987,10 @@ void CreateDatabaseExpr::InternalSwap(CreateDatabaseExpr* other) {
auto* rhs_arena = other->GetArenaForAllocation();
_internal_metadata_.InternalSwap(&other->_internal_metadata_);
_impl_.options_.InternalSwap(&other->_impl_.options_);
::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
&_impl_.catalog_name_, lhs_arena,
&other->_impl_.catalog_name_, rhs_arena
);
::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr::InternalSwap(
&_impl_.database_name_, lhs_arena,
&other->_impl_.database_name_, rhs_arena