From 5015ab9163046f7447a140e44e5a710d17f2c99c Mon Sep 17 00:00:00 2001 From: oh2024 Date: Wed, 13 Mar 2024 20:01:38 +0800 Subject: [PATCH] Added object table --- src/nameserver/name_server_impl.cc | 4 ++++ src/nameserver/system_table.cc | 1 + src/nameserver/system_table.h | 25 ++++++++++++++++++++++--- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/nameserver/name_server_impl.cc b/src/nameserver/name_server_impl.cc index eaf1f8ca7a9..1cbffaff9d4 100644 --- a/src/nameserver/name_server_impl.cc +++ b/src/nameserver/name_server_impl.cc @@ -5560,6 +5560,10 @@ void NameServerImpl::OnLocked() { CreateSystemTableOrExit(SystemTableType::kUser); } + if (FLAGS_system_table_replica_num > 0 && db_table_info_[INTERNAL_DB].count(OBJECT_INFO_NAME) == 0) { + CreateSystemTableOrExit(SystemTableType::kObject); + } + if (FLAGS_system_table_replica_num > 0 && db_table_info_[INTERNAL_DB].count(PRE_AGG_META_NAME) == 0) { CreateSystemTableOrExit(SystemTableType::kPreAggMetaInfo); } diff --git a/src/nameserver/system_table.cc b/src/nameserver/system_table.cc index 38f9a9e8c18..cfdaa905aac 100644 --- a/src/nameserver/system_table.cc +++ b/src/nameserver/system_table.cc @@ -28,6 +28,7 @@ static absl::flat_hash_map CreateSystemT {SystemTableType::kGlobalVariable, {INFORMATION_SCHEMA_DB, GLOBAL_VARIABLES}}, {SystemTableType::kDeployResponseTime, {INFORMATION_SCHEMA_DB, DEPLOY_RESPONSE_TIME}}, {SystemTableType::kUser, {INTERNAL_DB, USER_INFO_NAME}}, + {SystemTableType::kObject, {INTERNAL_DB, OBJECT_INFO_NAME}}, }; return map; } diff --git a/src/nameserver/system_table.h b/src/nameserver/system_table.h index 63bb507b68a..7451c795972 100644 --- a/src/nameserver/system_table.h +++ b/src/nameserver/system_table.h @@ -19,6 +19,7 @@ #include #include + #include "absl/strings/string_view.h" #include "base/status.h" #include "gflags/gflags.h" @@ -35,7 +36,7 @@ constexpr const char* PRE_AGG_DB = "__PRE_AGG_DB"; constexpr const char* JOB_INFO_NAME = "JOB_INFO"; constexpr const char* PRE_AGG_META_NAME = "PRE_AGG_META_INFO"; constexpr const char* USER_INFO_NAME = "USER"; - +constexpr const char* OBJECT_INFO_NAME = "OBJECT"; constexpr const char* INFORMATION_SCHEMA_DB = "INFORMATION_SCHEMA"; // start tables for INFORMATION_SCHEMA @@ -49,11 +50,11 @@ enum class SystemTableType { kGlobalVariable = 3, kDeployResponseTime, kUser, + kObject, }; struct SystemTableInfo { - SystemTableInfo(absl::string_view db, absl::string_view name) - : db_(db), name_(name) {} + SystemTableInfo(absl::string_view db, absl::string_view name) : db_(db), name_(name) {} // db name absl::string_view db_; @@ -181,6 +182,24 @@ class SystemTable { ttl->set_lat_ttl(1); break; } + case SystemTableType::kObject: { + SetColumnDesc("host", type::DataType::kString, table_info->add_column_desc()); + SetColumnDesc("user", type::DataType::kString, table_info->add_column_desc()); + SetColumnDesc("object_type", type::DataType::kInt, table_info->add_column_desc()); + SetColumnDesc("db", type::DataType::kString, table_info->add_column_desc()); + SetColumnDesc("name", type::DataType::kString, table_info->add_column_desc()); + SetColumnDesc("privileges", type::DataType::kString, table_info->add_column_desc()); + SetColumnDesc("extra_info", type::DataType::kString, table_info->add_column_desc()); + auto index = table_info->add_column_key(); + index->set_index_name("index"); + index->add_col_name("host"); + index->add_col_name("user"); + index->add_col_name("object_type"); + auto ttl = index->mutable_ttl(); + ttl->set_ttl_type(::openmldb::type::kLatestTime); + ttl->set_lat_ttl(1); + break; + } default: return nullptr; }