From d62e5551f8ae66b1a2b182c539c5483a88f3cf5b Mon Sep 17 00:00:00 2001 From: hanr881 <1741282579@qq.com> Date: Sat, 12 Oct 2024 05:01:56 +0000 Subject: [PATCH] [CP] to issue<2024090400104374409>:fix persistent routine evict issue --- src/pl/ob_pl_persistent.cpp | 33 +- src/pl/ob_pl_persistent.h | 29 +- src/rootserver/ob_upgrade_executor.cpp | 45 ++- src/rootserver/ob_upgrade_executor.h | 2 + src/share/CMakeLists.txt | 5 + .../generate_inner_table_schema.py | 2 +- .../ob_inner_table_schema.12501_12550.cpp | 197 ++++++++++++ .../ob_inner_table_schema.15451_15500.cpp | 180 +++++++++++ .../ob_inner_table_schema.501_550.cpp | 198 ++++++++++++ .../ob_inner_table_schema.50501_50550.cpp | 136 +++++++++ .../ob_inner_table_schema.60501_60550.cpp | 91 ++++++ src/share/inner_table/ob_inner_table_schema.h | 36 ++- .../inner_table/ob_inner_table_schema.lob.cpp | 2 +- .../inner_table/ob_inner_table_schema.vt.cpp | 7 + .../ob_inner_table_schema_constants.h | 10 + .../inner_table/ob_inner_table_schema_def.py | 30 +- .../ob_inner_table_schema_misc.ipp | 40 ++- src/share/inner_table/table_id_to_name | 5 + .../ncomp_dll/ob_flush_ncomp_dll_task.cpp | 284 ++++++++++++++++++ src/share/ncomp_dll/ob_flush_ncomp_dll_task.h | 61 ++++ src/share/ob_upgrade_utils.cpp | 150 ++++++++- src/share/ob_upgrade_utils.h | 24 +- .../stat/ob_dbms_stats_maintenance_window.h | 6 +- .../r/mysql/information_schema.result | 17 ++ .../r/mysql/desc_virtual_table_in_sys.result | 15 + .../r/mysql/inner_table_overall.result | 2 + 26 files changed, 1543 insertions(+), 64 deletions(-) create mode 100644 src/share/ncomp_dll/ob_flush_ncomp_dll_task.cpp create mode 100644 src/share/ncomp_dll/ob_flush_ncomp_dll_task.h diff --git a/src/pl/ob_pl_persistent.cpp b/src/pl/ob_pl_persistent.cpp index 45e03b4c0..a1552e62e 100644 --- a/src/pl/ob_pl_persistent.cpp +++ b/src/pl/ob_pl_persistent.cpp @@ -18,6 +18,7 @@ #include "observer/ob_inner_sql_result.h" #include "ob_pl_code_generator.h" #include "ob_pl_compile.h" +#include "share/ob_version.h" namespace oceanbase { @@ -310,11 +311,15 @@ int ObRoutinePersistentInfo::gen_routine_storage_dml(const uint64_t exec_tenant_ const ObString &binary) { int ret = OB_SUCCESS; + char build_version[common::OB_SERVER_VERSION_LENGTH] = {'\0'}; - if (OB_FAIL(dml.add_pk_column("database_id", database_id_)) + if (OB_FAIL(get_package_and_svn(build_version, sizeof(build_version)))) { + LOG_WARN("fail to get build_version", KR(ret)); + } else if (OB_FAIL(dml.add_pk_column("database_id", database_id_)) || OB_FAIL(dml.add_pk_column("key_id", key_id_)) || OB_FAIL(dml.add_pk_column("compile_db_id", compile_db_id_)) || OB_FAIL(dml.add_pk_column("arch_type", arch_type_)) + || OB_FAIL(dml.add_pk_column("build_version", build_version)) || OB_FAIL(dml.add_column("merge_version", merge_version)) || OB_FAIL(dml.add_column("dll", ObHexEscapeSqlStr(binary)))) { LOG_WARN("add column failed", K(ret)); @@ -387,8 +392,8 @@ int ObRoutinePersistentInfo::read_dll_from_disk(ObSQLSessionInfo *session_info, uint64_t data_version = 0; if (OB_FAIL(GET_MIN_DATA_VERSION(tenant_id_, data_version))) { LOG_WARN("failed to get data version", K(ret)); - } else if (!((GET_MIN_CLUSTER_VERSION() >= CLUSTER_VERSION_4_2_2_0 && GET_MIN_CLUSTER_VERSION() < CLUSTER_VERSION_4_3_0_0) || GET_MIN_CLUSTER_VERSION() >= CLUSTER_VERSION_4_3_1_0) || - !((data_version >= DATA_VERSION_4_2_2_0 && data_version < DATA_VERSION_4_3_0_0) || data_version >= DATA_VERSION_4_3_1_0)) { + } else if (!((GET_MIN_CLUSTER_VERSION() >= MOCK_CLUSTER_VERSION_4_2_5_0 && GET_MIN_CLUSTER_VERSION() < CLUSTER_VERSION_4_3_0_0) || GET_MIN_CLUSTER_VERSION() >= CLUSTER_VERSION_4_3_4_0) || + !((data_version >= MOCK_DATA_VERSION_4_2_5_0 && data_version < DATA_VERSION_4_3_0_0) || data_version >= DATA_VERSION_4_3_4_0)) { // do nothing } else { uint64_t action = 0; @@ -397,6 +402,7 @@ int ObRoutinePersistentInfo::read_dll_from_disk(ObSQLSessionInfo *session_info, ObSqlString query_inner_sql; ObString binary; int64_t merge_version; + char build_version[common::OB_SERVER_VERSION_LENGTH] = {'\0'}; if (OB_ISNULL(session_info)) { ret = OB_INVALID_ARGUMENT; @@ -404,9 +410,12 @@ int ObRoutinePersistentInfo::read_dll_from_disk(ObSQLSessionInfo *session_info, } else if (OB_ISNULL(sql_proxy = GCTX.sql_proxy_)) { ret = OB_ERR_UNEXPECTED; LOG_WARN("sql proxy must not null", K(ret), KP(GCTX.sql_proxy_)); + } else if (OB_FAIL(get_package_and_svn(build_version, sizeof(build_version)))) { + LOG_WARN("fail to get build_version", K(ret)); } else if (OB_FAIL(query_inner_sql.assign_fmt( - "select merge_version, dll from OCEANBASE.%s where database_id = %ld and key_id = %ld and compile_db_id = %ld and arch_type = %d", - OB_ALL_NCOMP_DLL_TNAME, database_id_, key_id_, compile_db_id_, arch_type_))) { + "select merge_version, dll from OCEANBASE.%s where database_id = %ld and key_id = %ld " + "and compile_db_id = %ld and arch_type = '%s' and build_version = '%s'", + OB_ALL_NCOMP_DLL_V2_TNAME, database_id_, key_id_, compile_db_id_, arch_type_.ptr(), build_version))) { LOG_WARN("assign format failed", K(ret)); } else { SMART_VAR(ObMySQLProxy::MySQLResult, result) { @@ -495,11 +504,11 @@ int ObRoutinePersistentInfo::insert_or_update_dll_to_disk(schema::ObSchemaGetter ObDMLExecHelper exec(*sql_proxy, exec_tenant_id); int64_t affected_rows = 0; if (ObPLOperation::UPDATE == op) { - if (OB_FAIL(exec.exec_update(OB_ALL_NCOMP_DLL_TNAME, dml, affected_rows))) { + if (OB_FAIL(exec.exec_update(OB_ALL_NCOMP_DLL_V2_TNAME, dml, affected_rows))) { LOG_WARN("execute update failed", K(ret)); } } else { - if (OB_FAIL(exec.exec_insert(OB_ALL_NCOMP_DLL_TNAME, dml, affected_rows))) { + if (OB_FAIL(exec.exec_insert(OB_ALL_NCOMP_DLL_V2_TNAME, dml, affected_rows))) { LOG_WARN("execute insert failed", K(ret)); } } @@ -527,8 +536,8 @@ int ObRoutinePersistentInfo::process_storage_dll(ObIAllocator &alloc, uint64_t data_version = 0; if (OB_FAIL(GET_MIN_DATA_VERSION(tenant_id_, data_version))) { LOG_WARN("failed to get data version", K(ret)); - } else if (!((GET_MIN_CLUSTER_VERSION() >= CLUSTER_VERSION_4_2_2_0 && GET_MIN_CLUSTER_VERSION() < CLUSTER_VERSION_4_3_0_0) || GET_MIN_CLUSTER_VERSION() >= CLUSTER_VERSION_4_3_1_0) || - !((data_version >= DATA_VERSION_4_2_2_0 && data_version < DATA_VERSION_4_3_0_0) || data_version >= DATA_VERSION_4_3_1_0)) { + } else if (!((GET_MIN_CLUSTER_VERSION() >= MOCK_CLUSTER_VERSION_4_2_5_0 && GET_MIN_CLUSTER_VERSION() < CLUSTER_VERSION_4_3_0_0) || GET_MIN_CLUSTER_VERSION() >= CLUSTER_VERSION_4_3_4_0) || + !((data_version >= MOCK_DATA_VERSION_4_2_5_0 && data_version < DATA_VERSION_4_3_0_0) || data_version >= DATA_VERSION_4_3_4_0)) { // do nothing } else if (!MTL_TENANT_ROLE_CACHE_IS_PRIMARY()) { // do nothing @@ -572,8 +581,8 @@ int ObRoutinePersistentInfo::delete_dll_from_disk(common::ObISQLClient &trans, ObMySQLProxy *sql_proxy = nullptr; if (OB_FAIL(GET_MIN_DATA_VERSION(tenant_id, data_version))) { LOG_WARN("failed to get data version", K(ret)); - } else if (!((GET_MIN_CLUSTER_VERSION() >= CLUSTER_VERSION_4_2_2_0 && GET_MIN_CLUSTER_VERSION() < CLUSTER_VERSION_4_3_0_0) || GET_MIN_CLUSTER_VERSION() >= CLUSTER_VERSION_4_3_1_0) || - !((data_version >= DATA_VERSION_4_2_2_0 && data_version < DATA_VERSION_4_3_0_0) || data_version >= DATA_VERSION_4_3_1_0)) { + } else if (!((GET_MIN_CLUSTER_VERSION() >= MOCK_CLUSTER_VERSION_4_2_5_0 && GET_MIN_CLUSTER_VERSION() < CLUSTER_VERSION_4_3_0_0) || GET_MIN_CLUSTER_VERSION() >= CLUSTER_VERSION_4_3_4_0) || + !((data_version >= MOCK_DATA_VERSION_4_2_5_0 && data_version < DATA_VERSION_4_3_0_0) || data_version >= DATA_VERSION_4_3_4_0)) { // do nothing } else if (OB_ISNULL(sql_proxy = GCTX.sql_proxy_)) { ret = OB_ERR_UNEXPECTED; @@ -593,7 +602,7 @@ int ObRoutinePersistentInfo::delete_dll_from_disk(common::ObISQLClient &trans, if (OB_INVALID_ID == key_id) { ret = OB_ERR_UNEXPECTED; LOG_WARN("unexpected key id.", K(ret)); - } else if (OB_FAIL(sql.assign_fmt("delete FROM %s where database_id = %ld and key_id = %ld", OB_ALL_NCOMP_DLL_TNAME, database_id, key_id))) { + } else if (OB_FAIL(sql.assign_fmt("delete FROM %s where database_id = %ld and key_id = %ld", OB_ALL_NCOMP_DLL_V2_TNAME, database_id, key_id))) { LOG_WARN("delete from __all_ncomp_dll table failed.", K(ret), K(key_id)); } else { if (OB_FAIL(trans.write(exec_tenant_id, sql.ptr(), affected_rows))) { diff --git a/src/pl/ob_pl_persistent.h b/src/pl/ob_pl_persistent.h index bbdc8c782..ad5322a36 100644 --- a/src/pl/ob_pl_persistent.h +++ b/src/pl/ob_pl_persistent.h @@ -10,6 +10,12 @@ * See the Mulan PubL v2 for more details. */ +#ifdef ARCH_DEF +ARCH_DEF(OB_X86_ARCH_TYPE, "X86") +ARCH_DEF(OB_ARM_ARCH_TYPE, "ARM") +#endif + + #ifndef OCEANBASE_PL_ROUTINE_STORAGE_H_ #define OCEANBASE_PL_ROUTINE_STORAGE_H_ @@ -39,8 +45,17 @@ namespace pl enum ObPLArchType { OB_INVALID_ARCH_TYPE = -1, - OB_X86_ARCH_TYPE, - OB_ARM_ARCH_TYPE, +#define ARCH_DEF(type, name) type, +#include "pl/ob_pl_persistent.h" +#undef ARCH_DEF + ARCH_TYPE_IDX_NUM +}; + +static constexpr const char* ARCH_TYPE_DEF[ARCH_TYPE_IDX_NUM] = +{ +#define ARCH_DEF(type, name) name, +#include "pl/ob_pl_persistent.h" +#undef ARCH_DEF }; class ObRoutinePersistentInfo @@ -60,9 +75,9 @@ public: compile_db_id_(OB_INVALID_ID), key_id_(OB_INVALID_ID), #if defined(__aarch64__) - arch_type_(ObPLArchType::OB_ARM_ARCH_TYPE), + arch_type_(ARCH_TYPE_DEF[ObPLArchType::OB_ARM_ARCH_TYPE]), #else - arch_type_(ObPLArchType::OB_X86_ARCH_TYPE), + arch_type_(ARCH_TYPE_DEF[ObPLArchType::OB_X86_ARCH_TYPE]), #endif allocator_(ObMemAttr(MTL_ID() == OB_INVALID_TENANT_ID ? OB_SYS_TENANT_ID : MTL_ID(), GET_PL_MOD_STRING(OB_PL_JIT))) {} @@ -75,9 +90,9 @@ public: compile_db_id_(compile_db_id), key_id_(key_id), #if defined(__aarch64__) - arch_type_(ObPLArchType::OB_ARM_ARCH_TYPE), + arch_type_(ARCH_TYPE_DEF[ObPLArchType::OB_ARM_ARCH_TYPE]), #else - arch_type_(ObPLArchType::OB_X86_ARCH_TYPE), + arch_type_(ARCH_TYPE_DEF[ObPLArchType::OB_X86_ARCH_TYPE]), #endif allocator_(ObMemAttr(tenant_id_, GET_PL_MOD_STRING(OB_PL_JIT))) {} @@ -141,7 +156,7 @@ private: uint64_t database_id_; uint64_t compile_db_id_; uint64_t key_id_; - ObPLArchType arch_type_; + ObString arch_type_; ObArenaAllocator allocator_; }; diff --git a/src/rootserver/ob_upgrade_executor.cpp b/src/rootserver/ob_upgrade_executor.cpp index ed17489d5..1d27aa632 100644 --- a/src/rootserver/ob_upgrade_executor.cpp +++ b/src/rootserver/ob_upgrade_executor.cpp @@ -1058,6 +1058,27 @@ int ObUpgradeExecutor::run_upgrade_all_post_action_( return ret; } +int ObUpgradeExecutor::run_upgrade_processor_(const uint64_t tenant_id, + ObBaseUpgradeProcessor *processor, int64_t &version) +{ + int ret = OB_SUCCESS; + if (OB_FAIL(check_inner_stat_())) { + LOG_WARN("fail to check inner stat", KR(ret)); + } else if (OB_ISNULL(processor) || !is_valid_tenant_id(tenant_id)) { + ret = OB_ERR_UNEXPECTED; + LOG_WARN("invalid arguments", KR(ret), KP(processor), K(tenant_id)); + } else { + processor->set_tenant_id(tenant_id); + version = processor->get_version(); + if (OB_FAIL(check_schema_sync_(tenant_id))) { + LOG_WARN("fail to check schema sync", KR(ret), K(tenant_id)); + } else if (OB_FAIL(processor->post_upgrade())) { + LOG_WARN("run post upgrade by version failed", KR(ret), K(tenant_id), KDV(version)); + } + } + return ret; +} + int ObUpgradeExecutor::run_upgrade_all_post_action_( const uint64_t tenant_id) { @@ -1071,6 +1092,8 @@ int ObUpgradeExecutor::run_upgrade_all_post_action_( int64_t start_idx = OB_INVALID_INDEX; int64_t end_idx = OB_INVALID_INDEX; ObGlobalStatProxy proxy(*sql_proxy_, tenant_id); + int64_t version = OB_INVALID_VERSION; + ObBaseUpgradeProcessor *processor = NULL; if (OB_FAIL(proxy.get_current_data_version(current_data_version))) { LOG_WARN("fail to get current data version", KR(ret), K(tenant_id), KDV(current_data_version)); @@ -1083,19 +1106,15 @@ int ObUpgradeExecutor::run_upgrade_all_post_action_( start_idx, end_idx))) { LOG_WARN("fail to get processor by version", KR(ret), KDV(current_data_version)); } - int64_t version = OB_INVALID_VERSION; for (int64_t i = start_idx + 1; OB_SUCC(ret) && i <= end_idx; i++) { - ObBaseUpgradeProcessor *processor = NULL; + processor = NULL; + version = OB_INVALID_VERSION; if (OB_FAIL(check_stop())) { LOG_WARN("executor should stopped", KR(ret)); } else if (OB_FAIL(upgrade_processors_.get_processor_by_idx(i, processor))) { - LOG_WARN("fail to get processor", KR(ret), K(current_data_version), K(i)); - } else if (FALSE_IT(version = processor->get_version())) { - } else if (FALSE_IT(processor->set_tenant_id(tenant_id))) { - } else if (OB_FAIL(check_schema_sync_(tenant_id))) { - LOG_WARN("fail to check schema sync", KR(ret), K(tenant_id)); - } else if (OB_FAIL(processor->post_upgrade())) { - LOG_WARN("run post upgrade by version failed", KR(ret), K(tenant_id), KDV(version)); + LOG_WARN("fail to get processor", KR(ret), KDV(current_data_version), K(i)); + } else if (OB_FAIL(run_upgrade_processor_(tenant_id, processor, version))) { + LOG_WARN("failed to run upgrade processor", KR(ret), K(tenant_id), KDV(version)); } else if (OB_FAIL(check_schema_sync_(tenant_id))) { LOG_WARN("fail to check schema sync", KR(ret), K(tenant_id)); } else if (i < end_idx) { @@ -1106,6 +1125,14 @@ int ObUpgradeExecutor::run_upgrade_all_post_action_( LOG_WARN("fail to update final current data version", KR(ret), K(tenant_id), KDV(version)); } } // end for + // finish to run processor for each version, begin to run processor for all version + processor = NULL; + version = OB_INVALID_VERSION; + if (FAILEDx(upgrade_processors_.get_all_version_processor(processor))) { + LOG_WARN("failed to get all version processor", KR(ret)); + } else if (OB_FAIL(run_upgrade_processor_(tenant_id, processor, version))) { + LOG_WARN("failed to run all version processor", KR(ret), K(tenant_id)); + } } return ret; } diff --git a/src/rootserver/ob_upgrade_executor.h b/src/rootserver/ob_upgrade_executor.h index e457da824..c227fb0da 100644 --- a/src/rootserver/ob_upgrade_executor.h +++ b/src/rootserver/ob_upgrade_executor.h @@ -114,6 +114,8 @@ private: const uint64_t current_data_version, const int64_t buf_len, char *buf); + int run_upgrade_processor_(const uint64_t tenant_id, + share::ObBaseUpgradeProcessor *processor, int64_t &version); private: bool inited_; bool stopped_; diff --git a/src/share/CMakeLists.txt b/src/share/CMakeLists.txt index f52ea378a..3c1ff33b9 100644 --- a/src/share/CMakeLists.txt +++ b/src/share/CMakeLists.txt @@ -579,6 +579,11 @@ ob_set_subtarget(ob_share balance balance/ob_balance_task_helper_operator.cpp balance/ob_transfer_partition_task_table_operator.cpp ) + +ob_set_subtarget(ob_share ncomp_dll + ncomp_dll/ob_flush_ncomp_dll_task.cpp +) + ob_set_subtarget(ob_share resource_limit_calculator resource_limit_calculator/ob_resource_commmon.cpp resource_limit_calculator/ob_resource_limit_calculator.cpp diff --git a/src/share/inner_table/generate_inner_table_schema.py b/src/share/inner_table/generate_inner_table_schema.py index 24e764ac5..3200365ea 100755 --- a/src/share/inner_table/generate_inner_table_schema.py +++ b/src/share/inner_table/generate_inner_table_schema.py @@ -1110,7 +1110,7 @@ def replace_agent_table_columns_def(columns): t = "otimestamp" elif t == "otimestamp": pass - elif t == "longtext": + elif t in ("longtext", "longblob"): pass elif t.startswith("varchar:") or t.startswith("varbinary:"): if len(column) >= 4 and "false" == column[2] and "" == column[3]: diff --git a/src/share/inner_table/ob_inner_table_schema.12501_12550.cpp b/src/share/inner_table/ob_inner_table_schema.12501_12550.cpp index 325b70183..319226812 100644 --- a/src/share/inner_table/ob_inner_table_schema.12501_12550.cpp +++ b/src/share/inner_table/ob_inner_table_schema.12501_12550.cpp @@ -953,6 +953,203 @@ int ObInnerTableSchema::all_virtual_temp_file_schema(ObTableSchema &table_schema return ret; } +int ObInnerTableSchema::all_virtual_ncomp_dll_v2_schema(ObTableSchema &table_schema) +{ + int ret = OB_SUCCESS; + uint64_t column_id = OB_APP_MIN_COLUMN_ID - 1; + + //generated fields: + table_schema.set_tenant_id(OB_SYS_TENANT_ID); + table_schema.set_tablegroup_id(OB_INVALID_ID); + table_schema.set_database_id(OB_SYS_DATABASE_ID); + table_schema.set_table_id(OB_ALL_VIRTUAL_NCOMP_DLL_V2_TID); + table_schema.set_rowkey_split_pos(0); + table_schema.set_is_use_bloomfilter(false); + table_schema.set_progressive_merge_num(0); + table_schema.set_rowkey_column_num(6); + table_schema.set_load_type(TABLE_LOAD_TYPE_IN_DISK); + table_schema.set_table_type(VIRTUAL_TABLE); + table_schema.set_index_type(INDEX_TYPE_IS_NOT); + table_schema.set_def_type(TABLE_DEF_TYPE_INTERNAL); + + if (OB_SUCC(ret)) { + if (OB_FAIL(table_schema.set_table_name(OB_ALL_VIRTUAL_NCOMP_DLL_V2_TNAME))) { + LOG_ERROR("fail to set table_name", K(ret)); + } + } + + if (OB_SUCC(ret)) { + if (OB_FAIL(table_schema.set_compress_func_name(OB_DEFAULT_COMPRESS_FUNC_NAME))) { + LOG_ERROR("fail to set compress_func_name", K(ret)); + } + } + table_schema.set_part_level(PARTITION_LEVEL_ZERO); + table_schema.set_charset_type(ObCharset::get_default_charset()); + table_schema.set_collation_type(ObCharset::get_default_collation(ObCharset::get_default_charset())); + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("tenant_id", //column_name + ++column_id, //column_id + 1, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObIntType, //column_type + CS_TYPE_INVALID, //column_collation_type + sizeof(int64_t), //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("database_id", //column_name + ++column_id, //column_id + 2, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObIntType, //column_type + CS_TYPE_INVALID, //column_collation_type + sizeof(int64_t), //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("key_id", //column_name + ++column_id, //column_id + 3, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObIntType, //column_type + CS_TYPE_INVALID, //column_collation_type + sizeof(int64_t), //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("compile_db_id", //column_name + ++column_id, //column_id + 4, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObIntType, //column_type + CS_TYPE_INVALID, //column_collation_type + sizeof(int64_t), //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("arch_type", //column_name + ++column_id, //column_id + 5, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObVarcharType, //column_type + CS_TYPE_INVALID, //column_collation_type + 128, //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("build_version", //column_name + ++column_id, //column_id + 6, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObVarcharType, //column_type + CS_TYPE_INVALID, //column_collation_type + OB_SERVER_VERSION_LENGTH, //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA_TS("gmt_create", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObTimestampType, //column_type + CS_TYPE_INVALID, //column_collation_type + sizeof(ObPreciseDateTime), //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false, //is_autoincrement + false); //is_on_update_for_timestamp + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA_TS("gmt_modified", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObTimestampType, //column_type + CS_TYPE_INVALID, //column_collation_type + sizeof(ObPreciseDateTime), //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false, //is_autoincrement + false); //is_on_update_for_timestamp + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("merge_version", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObIntType, //column_type + CS_TYPE_INVALID, //column_collation_type + sizeof(int64_t), //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("dll", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObLongTextType, //column_type + CS_TYPE_BINARY, //column_collation_type + 0, //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + table_schema.set_index_using_type(USING_BTREE); + table_schema.set_row_store_type(ENCODING_ROW_STORE); + table_schema.set_store_format(OB_STORE_FORMAT_DYNAMIC_MYSQL); + table_schema.set_progressive_merge_round(1); + table_schema.set_storage_format_version(3); + table_schema.set_tablet_id(0); + table_schema.set_micro_index_clustered(false); + + table_schema.set_max_used_column_id(column_id); + return ret; +} + } // end namespace share } // end namespace oceanbase diff --git a/src/share/inner_table/ob_inner_table_schema.15451_15500.cpp b/src/share/inner_table/ob_inner_table_schema.15451_15500.cpp index 243d98855..695a1a6cc 100644 --- a/src/share/inner_table/ob_inner_table_schema.15451_15500.cpp +++ b/src/share/inner_table/ob_inner_table_schema.15451_15500.cpp @@ -3195,6 +3195,186 @@ int ObInnerTableSchema::all_virtual_temp_file_ora_schema(ObTableSchema &table_sc return ret; } +int ObInnerTableSchema::all_virtual_ncomp_dll_v2_real_agent_ora_schema(ObTableSchema &table_schema) +{ + int ret = OB_SUCCESS; + uint64_t column_id = OB_APP_MIN_COLUMN_ID - 1; + + //generated fields: + table_schema.set_tenant_id(OB_SYS_TENANT_ID); + table_schema.set_tablegroup_id(OB_INVALID_ID); + table_schema.set_database_id(OB_ORA_SYS_DATABASE_ID); + table_schema.set_table_id(OB_ALL_VIRTUAL_NCOMP_DLL_V2_REAL_AGENT_ORA_TID); + table_schema.set_rowkey_split_pos(0); + table_schema.set_is_use_bloomfilter(false); + table_schema.set_progressive_merge_num(0); + table_schema.set_rowkey_column_num(5); + table_schema.set_load_type(TABLE_LOAD_TYPE_IN_DISK); + table_schema.set_table_type(VIRTUAL_TABLE); + table_schema.set_index_type(INDEX_TYPE_IS_NOT); + table_schema.set_def_type(TABLE_DEF_TYPE_INTERNAL); + + if (OB_SUCC(ret)) { + if (OB_FAIL(table_schema.set_table_name(OB_ALL_VIRTUAL_NCOMP_DLL_V2_REAL_AGENT_ORA_TNAME))) { + LOG_ERROR("fail to set table_name", K(ret)); + } + } + + if (OB_SUCC(ret)) { + if (OB_FAIL(table_schema.set_compress_func_name(OB_DEFAULT_COMPRESS_FUNC_NAME))) { + LOG_ERROR("fail to set compress_func_name", K(ret)); + } + } + table_schema.set_part_level(PARTITION_LEVEL_ZERO); + table_schema.set_charset_type(ObCharset::get_default_charset()); + table_schema.set_collation_type(ObCollationType::CS_TYPE_UTF8MB4_BIN); + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("DATABASE_ID", //column_name + ++column_id, //column_id + 1, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObNumberType, //column_type + CS_TYPE_INVALID, //column_collation_type + 38, //column_length + 38, //column_precision + 0, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("KEY_ID", //column_name + ++column_id, //column_id + 2, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObNumberType, //column_type + CS_TYPE_INVALID, //column_collation_type + 38, //column_length + 38, //column_precision + 0, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("COMPILE_DB_ID", //column_name + ++column_id, //column_id + 3, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObNumberType, //column_type + CS_TYPE_INVALID, //column_collation_type + 38, //column_length + 38, //column_precision + 0, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("ARCH_TYPE", //column_name + ++column_id, //column_id + 4, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObVarcharType, //column_type + CS_TYPE_UTF8MB4_BIN, //column_collation_type + 128, //column_length + 2, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("BUILD_VERSION", //column_name + ++column_id, //column_id + 5, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObVarcharType, //column_type + CS_TYPE_UTF8MB4_BIN, //column_collation_type + OB_SERVER_VERSION_LENGTH, //column_length + 2, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("MERGE_VERSION", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObNumberType, //column_type + CS_TYPE_INVALID, //column_collation_type + 38, //column_length + 38, //column_precision + 0, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("DLL", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObLongTextType, //column_type + CS_TYPE_BINARY, //column_collation_type + 0, //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("GMT_CREATE", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObTimestampLTZType, //column_type + CS_TYPE_INVALID, //column_collation_type + 0, //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("GMT_MODIFIED", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObTimestampLTZType, //column_type + CS_TYPE_INVALID, //column_collation_type + 0, //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + table_schema.set_index_using_type(USING_BTREE); + table_schema.set_row_store_type(ENCODING_ROW_STORE); + table_schema.set_store_format(OB_STORE_FORMAT_DYNAMIC_MYSQL); + table_schema.set_progressive_merge_round(1); + table_schema.set_storage_format_version(3); + table_schema.set_tablet_id(0); + table_schema.set_micro_index_clustered(false); + + table_schema.set_max_used_column_id(column_id); + return ret; +} + } // end namespace share } // end namespace oceanbase diff --git a/src/share/inner_table/ob_inner_table_schema.501_550.cpp b/src/share/inner_table/ob_inner_table_schema.501_550.cpp index 2975df430..f84a9eb99 100644 --- a/src/share/inner_table/ob_inner_table_schema.501_550.cpp +++ b/src/share/inner_table/ob_inner_table_schema.501_550.cpp @@ -3795,6 +3795,204 @@ int ObInnerTableSchema::all_scheduler_job_run_detail_v2_schema(ObTableSchema &ta return ret; } +int ObInnerTableSchema::all_ncomp_dll_v2_schema(ObTableSchema &table_schema) +{ + int ret = OB_SUCCESS; + uint64_t column_id = OB_APP_MIN_COLUMN_ID - 1; + + //generated fields: + table_schema.set_tenant_id(OB_SYS_TENANT_ID); + table_schema.set_tablegroup_id(OB_SYS_TABLEGROUP_ID); + table_schema.set_database_id(OB_SYS_DATABASE_ID); + table_schema.set_table_id(OB_ALL_NCOMP_DLL_V2_TID); + table_schema.set_rowkey_split_pos(0); + table_schema.set_is_use_bloomfilter(false); + table_schema.set_progressive_merge_num(0); + table_schema.set_rowkey_column_num(5); + table_schema.set_load_type(TABLE_LOAD_TYPE_IN_DISK); + table_schema.set_table_type(SYSTEM_TABLE); + table_schema.set_index_type(INDEX_TYPE_IS_NOT); + table_schema.set_def_type(TABLE_DEF_TYPE_INTERNAL); + + if (OB_SUCC(ret)) { + if (OB_FAIL(table_schema.set_table_name(OB_ALL_NCOMP_DLL_V2_TNAME))) { + LOG_ERROR("fail to set table_name", K(ret)); + } + } + + if (OB_SUCC(ret)) { + if (OB_FAIL(table_schema.set_compress_func_name(OB_DEFAULT_COMPRESS_FUNC_NAME))) { + LOG_ERROR("fail to set compress_func_name", K(ret)); + } + } + table_schema.set_part_level(PARTITION_LEVEL_ZERO); + table_schema.set_charset_type(ObCharset::get_default_charset()); + table_schema.set_collation_type(ObCharset::get_default_collation(ObCharset::get_default_charset())); + + if (OB_SUCC(ret)) { + ObObj gmt_create_default; + ObObj gmt_create_default_null; + + gmt_create_default.set_ext(ObActionFlag::OP_DEFAULT_NOW_FLAG); + gmt_create_default_null.set_null(); + ADD_COLUMN_SCHEMA_TS_T("gmt_create", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObTimestampType, //column_type + CS_TYPE_BINARY,//collation_type + 0, //column length + -1, //column_precision + 6, //column_scale + true,//is nullable + false, //is_autoincrement + false, //is_on_update_for_timestamp + gmt_create_default_null, + gmt_create_default) + } + + if (OB_SUCC(ret)) { + ObObj gmt_modified_default; + ObObj gmt_modified_default_null; + + gmt_modified_default.set_ext(ObActionFlag::OP_DEFAULT_NOW_FLAG); + gmt_modified_default_null.set_null(); + ADD_COLUMN_SCHEMA_TS_T("gmt_modified", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObTimestampType, //column_type + CS_TYPE_BINARY,//collation_type + 0, //column length + -1, //column_precision + 6, //column_scale + true,//is nullable + false, //is_autoincrement + true, //is_on_update_for_timestamp + gmt_modified_default_null, + gmt_modified_default) + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("database_id", //column_name + ++column_id, //column_id + 1, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObIntType, //column_type + CS_TYPE_INVALID, //column_collation_type + sizeof(int64_t), //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("key_id", //column_name + ++column_id, //column_id + 2, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObIntType, //column_type + CS_TYPE_INVALID, //column_collation_type + sizeof(int64_t), //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("compile_db_id", //column_name + ++column_id, //column_id + 3, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObIntType, //column_type + CS_TYPE_INVALID, //column_collation_type + sizeof(int64_t), //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("arch_type", //column_name + ++column_id, //column_id + 4, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObVarcharType, //column_type + CS_TYPE_INVALID, //column_collation_type + 128, //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("build_version", //column_name + ++column_id, //column_id + 5, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObVarcharType, //column_type + CS_TYPE_INVALID, //column_collation_type + OB_SERVER_VERSION_LENGTH, //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("merge_version", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObIntType, //column_type + CS_TYPE_INVALID, //column_collation_type + sizeof(int64_t), //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("dll", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObLongTextType, //column_type + CS_TYPE_BINARY, //column_collation_type + 0, //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + table_schema.set_index_using_type(USING_BTREE); + table_schema.set_row_store_type(ENCODING_ROW_STORE); + table_schema.set_store_format(OB_STORE_FORMAT_DYNAMIC_MYSQL); + table_schema.set_progressive_merge_round(1); + table_schema.set_storage_format_version(3); + table_schema.set_tablet_id(OB_ALL_NCOMP_DLL_V2_TID); + table_schema.set_micro_index_clustered(false); + table_schema.set_aux_lob_meta_tid(OB_ALL_NCOMP_DLL_V2_AUX_LOB_META_TID); + table_schema.set_aux_lob_piece_tid(OB_ALL_NCOMP_DLL_V2_AUX_LOB_PIECE_TID); + + table_schema.set_max_used_column_id(column_id); + return ret; +} + } // end namespace share } // end namespace oceanbase diff --git a/src/share/inner_table/ob_inner_table_schema.50501_50550.cpp b/src/share/inner_table/ob_inner_table_schema.50501_50550.cpp index f367eaf2a..dd05cba5f 100644 --- a/src/share/inner_table/ob_inner_table_schema.50501_50550.cpp +++ b/src/share/inner_table/ob_inner_table_schema.50501_50550.cpp @@ -2337,6 +2337,142 @@ int ObInnerTableSchema::all_scheduler_job_run_detail_v2_aux_lob_meta_schema(ObTa return ret; } +int ObInnerTableSchema::all_ncomp_dll_v2_aux_lob_meta_schema(ObTableSchema &table_schema) +{ + int ret = OB_SUCCESS; + uint64_t column_id = OB_APP_MIN_COLUMN_ID - 1; + + //generated fields: + table_schema.set_tenant_id(OB_SYS_TENANT_ID); + table_schema.set_tablegroup_id(OB_SYS_TABLEGROUP_ID); + table_schema.set_database_id(OB_SYS_DATABASE_ID); + table_schema.set_table_id(OB_ALL_NCOMP_DLL_V2_AUX_LOB_META_TID); + table_schema.set_rowkey_split_pos(0); + table_schema.set_is_use_bloomfilter(false); + table_schema.set_progressive_merge_num(0); + table_schema.set_rowkey_column_num(2); + table_schema.set_load_type(TABLE_LOAD_TYPE_IN_DISK); + table_schema.set_table_type(AUX_LOB_META); + table_schema.set_index_type(INDEX_TYPE_IS_NOT); + table_schema.set_def_type(TABLE_DEF_TYPE_INTERNAL); + + if (OB_SUCC(ret)) { + if (OB_FAIL(table_schema.set_table_name(OB_ALL_NCOMP_DLL_V2_AUX_LOB_META_TNAME))) { + LOG_ERROR("fail to set table_name", K(ret)); + } + } + + if (OB_SUCC(ret)) { + if (OB_FAIL(table_schema.set_compress_func_name(OB_DEFAULT_COMPRESS_FUNC_NAME))) { + LOG_ERROR("fail to set compress_func_name", K(ret)); + } + } + table_schema.set_part_level(PARTITION_LEVEL_ZERO); + table_schema.set_charset_type(ObCharset::get_default_charset()); + table_schema.set_collation_type(ObCharset::get_default_collation(ObCharset::get_default_charset())); + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("lob_id", //column_name + ++column_id, //column_id + 1, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObVarcharType, //column_type + CS_TYPE_BINARY, //column_collation_type + 16, //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("seq_id", //column_name + ++column_id, //column_id + 2, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObVarcharType, //column_type + CS_TYPE_BINARY, //column_collation_type + 8192, //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("binary_len", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObUInt32Type, //column_type + CS_TYPE_INVALID, //column_collation_type + sizeof(uint32_t), //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("char_len", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObUInt32Type, //column_type + CS_TYPE_INVALID, //column_collation_type + sizeof(uint32_t), //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("piece_id", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObUInt64Type, //column_type + CS_TYPE_INVALID, //column_collation_type + sizeof(uint64_t), //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("lob_data", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObVarcharType, //column_type + CS_TYPE_BINARY, //column_collation_type + 262144, //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + table_schema.set_index_using_type(USING_BTREE); + table_schema.set_row_store_type(ENCODING_ROW_STORE); + table_schema.set_store_format(OB_STORE_FORMAT_DYNAMIC_MYSQL); + table_schema.set_progressive_merge_round(1); + table_schema.set_storage_format_version(3); + table_schema.set_tablet_id(OB_ALL_NCOMP_DLL_V2_AUX_LOB_META_TID); + table_schema.set_micro_index_clustered(false); + table_schema.set_data_table_id(OB_ALL_NCOMP_DLL_V2_TID); + + table_schema.set_max_used_column_id(column_id); + return ret; +} + } // end namespace share } // end namespace oceanbase diff --git a/src/share/inner_table/ob_inner_table_schema.60501_60550.cpp b/src/share/inner_table/ob_inner_table_schema.60501_60550.cpp index 6eb3c69ac..7f283dd6f 100644 --- a/src/share/inner_table/ob_inner_table_schema.60501_60550.cpp +++ b/src/share/inner_table/ob_inner_table_schema.60501_60550.cpp @@ -1572,6 +1572,97 @@ int ObInnerTableSchema::all_scheduler_job_run_detail_v2_aux_lob_piece_schema(ObT return ret; } +int ObInnerTableSchema::all_ncomp_dll_v2_aux_lob_piece_schema(ObTableSchema &table_schema) +{ + int ret = OB_SUCCESS; + uint64_t column_id = OB_APP_MIN_COLUMN_ID - 1; + + //generated fields: + table_schema.set_tenant_id(OB_SYS_TENANT_ID); + table_schema.set_tablegroup_id(OB_SYS_TABLEGROUP_ID); + table_schema.set_database_id(OB_SYS_DATABASE_ID); + table_schema.set_table_id(OB_ALL_NCOMP_DLL_V2_AUX_LOB_PIECE_TID); + table_schema.set_rowkey_split_pos(0); + table_schema.set_is_use_bloomfilter(false); + table_schema.set_progressive_merge_num(0); + table_schema.set_rowkey_column_num(1); + table_schema.set_load_type(TABLE_LOAD_TYPE_IN_DISK); + table_schema.set_table_type(AUX_LOB_PIECE); + table_schema.set_index_type(INDEX_TYPE_IS_NOT); + table_schema.set_def_type(TABLE_DEF_TYPE_INTERNAL); + + if (OB_SUCC(ret)) { + if (OB_FAIL(table_schema.set_table_name(OB_ALL_NCOMP_DLL_V2_AUX_LOB_PIECE_TNAME))) { + LOG_ERROR("fail to set table_name", K(ret)); + } + } + + if (OB_SUCC(ret)) { + if (OB_FAIL(table_schema.set_compress_func_name(OB_DEFAULT_COMPRESS_FUNC_NAME))) { + LOG_ERROR("fail to set compress_func_name", K(ret)); + } + } + table_schema.set_part_level(PARTITION_LEVEL_ZERO); + table_schema.set_charset_type(ObCharset::get_default_charset()); + table_schema.set_collation_type(ObCharset::get_default_collation(ObCharset::get_default_charset())); + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("piece_id", //column_name + ++column_id, //column_id + 1, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObUInt64Type, //column_type + CS_TYPE_INVALID, //column_collation_type + sizeof(uint64_t), //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("data_len", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObUInt32Type, //column_type + CS_TYPE_INVALID, //column_collation_type + sizeof(uint32_t), //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("lob_data", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObVarcharType, //column_type + CS_TYPE_BINARY, //column_collation_type + 32, //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + table_schema.set_index_using_type(USING_BTREE); + table_schema.set_row_store_type(ENCODING_ROW_STORE); + table_schema.set_store_format(OB_STORE_FORMAT_DYNAMIC_MYSQL); + table_schema.set_progressive_merge_round(1); + table_schema.set_storage_format_version(3); + table_schema.set_tablet_id(OB_ALL_NCOMP_DLL_V2_AUX_LOB_PIECE_TID); + table_schema.set_micro_index_clustered(false); + table_schema.set_data_table_id(OB_ALL_NCOMP_DLL_V2_TID); + + table_schema.set_max_used_column_id(column_id); + return ret; +} + } // end namespace share } // end namespace oceanbase diff --git a/src/share/inner_table/ob_inner_table_schema.h b/src/share/inner_table/ob_inner_table_schema.h index 1b350fd30..768b4f732 100644 --- a/src/share/inner_table/ob_inner_table_schema.h +++ b/src/share/inner_table/ob_inner_table_schema.h @@ -636,6 +636,7 @@ public: static int all_storage_io_usage_schema(share::schema::ObTableSchema &table_schema); static int all_mview_dep_schema(share::schema::ObTableSchema &table_schema); static int all_scheduler_job_run_detail_v2_schema(share::schema::ObTableSchema &table_schema); + static int all_ncomp_dll_v2_schema(share::schema::ObTableSchema &table_schema); static int tenant_virtual_all_table_schema(share::schema::ObTableSchema &table_schema); static int tenant_virtual_table_column_schema(share::schema::ObTableSchema &table_schema); static int tenant_virtual_table_index_schema(share::schema::ObTableSchema &table_schema); @@ -1110,6 +1111,7 @@ public: static int all_virtual_kv_client_info_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_function_io_stat_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_temp_file_schema(share::schema::ObTableSchema &table_schema); + static int all_virtual_ncomp_dll_v2_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_sql_audit_ora_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_plan_stat_ora_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_plan_cache_plan_explain_ora_schema(share::schema::ObTableSchema &table_schema); @@ -1394,6 +1396,7 @@ public: static int all_virtual_vector_index_info_ora_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_function_io_stat_ora_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_temp_file_ora_schema(share::schema::ObTableSchema &table_schema); + static int all_virtual_ncomp_dll_v2_real_agent_ora_schema(share::schema::ObTableSchema &table_schema); static int gv_ob_plan_cache_stat_schema(share::schema::ObTableSchema &table_schema); static int gv_ob_plan_cache_plan_stat_schema(share::schema::ObTableSchema &table_schema); static int schemata_schema(share::schema::ObTableSchema &table_schema); @@ -2670,6 +2673,7 @@ public: static int all_storage_io_usage_aux_lob_meta_schema(share::schema::ObTableSchema &table_schema); static int all_mview_dep_aux_lob_meta_schema(share::schema::ObTableSchema &table_schema); static int all_scheduler_job_run_detail_v2_aux_lob_meta_schema(share::schema::ObTableSchema &table_schema); + static int all_ncomp_dll_v2_aux_lob_meta_schema(share::schema::ObTableSchema &table_schema); static int all_table_aux_lob_piece_schema(share::schema::ObTableSchema &table_schema); static int all_column_aux_lob_piece_schema(share::schema::ObTableSchema &table_schema); static int all_ddl_operation_aux_lob_piece_schema(share::schema::ObTableSchema &table_schema); @@ -2978,6 +2982,7 @@ public: static int all_storage_io_usage_aux_lob_piece_schema(share::schema::ObTableSchema &table_schema); static int all_mview_dep_aux_lob_piece_schema(share::schema::ObTableSchema &table_schema); static int all_scheduler_job_run_detail_v2_aux_lob_piece_schema(share::schema::ObTableSchema &table_schema); + static int all_ncomp_dll_v2_aux_lob_piece_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_ash_all_virtual_ash_i1_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_sql_plan_monitor_all_virtual_sql_plan_monitor_i1_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_sql_audit_all_virtual_sql_audit_i1_schema(share::schema::ObTableSchema &table_schema); @@ -3507,6 +3512,7 @@ const schema_create_func sys_table_schema_creators [] = { ObInnerTableSchema::all_storage_io_usage_schema, ObInnerTableSchema::all_mview_dep_schema, ObInnerTableSchema::all_scheduler_job_run_detail_v2_schema, + ObInnerTableSchema::all_ncomp_dll_v2_schema, NULL,}; const schema_create_func virtual_table_schema_creators [] = { @@ -3984,6 +3990,7 @@ const schema_create_func virtual_table_schema_creators [] = { ObInnerTableSchema::all_virtual_kv_client_info_schema, ObInnerTableSchema::all_virtual_function_io_stat_schema, ObInnerTableSchema::all_virtual_temp_file_schema, + ObInnerTableSchema::all_virtual_ncomp_dll_v2_schema, ObInnerTableSchema::all_virtual_ash_all_virtual_ash_i1_schema, ObInnerTableSchema::all_virtual_sql_plan_monitor_all_virtual_sql_plan_monitor_i1_schema, ObInnerTableSchema::all_virtual_sql_audit_all_virtual_sql_audit_i1_schema, @@ -4278,6 +4285,7 @@ const schema_create_func virtual_table_schema_creators [] = { ObInnerTableSchema::all_virtual_vector_index_info_ora_schema, ObInnerTableSchema::all_virtual_function_io_stat_ora_schema, ObInnerTableSchema::all_virtual_temp_file_ora_schema, + ObInnerTableSchema::all_virtual_ncomp_dll_v2_real_agent_ora_schema, ObInnerTableSchema::all_virtual_table_real_agent_ora_idx_data_table_id_real_agent_schema, ObInnerTableSchema::all_virtual_table_real_agent_ora_idx_db_tb_name_real_agent_schema, ObInnerTableSchema::all_virtual_table_real_agent_ora_idx_tb_name_real_agent_schema, @@ -5743,6 +5751,7 @@ const uint64_t tenant_space_tables [] = { OB_ALL_STORAGE_IO_USAGE_TID, OB_ALL_MVIEW_DEP_TID, OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_TID, + OB_ALL_NCOMP_DLL_V2_TID, OB_TENANT_VIRTUAL_ALL_TABLE_TID, OB_TENANT_VIRTUAL_TABLE_COLUMN_TID, OB_TENANT_VIRTUAL_TABLE_INDEX_TID, @@ -6283,6 +6292,7 @@ const uint64_t tenant_space_tables [] = { OB_ALL_VIRTUAL_VECTOR_INDEX_INFO_ORA_TID, OB_ALL_VIRTUAL_FUNCTION_IO_STAT_ORA_TID, OB_ALL_VIRTUAL_TEMP_FILE_ORA_TID, + OB_ALL_VIRTUAL_NCOMP_DLL_V2_REAL_AGENT_ORA_TID, OB_GV_OB_PLAN_CACHE_STAT_TID, OB_GV_OB_PLAN_CACHE_PLAN_STAT_TID, OB_SCHEMATA_TID, @@ -7583,6 +7593,7 @@ const uint64_t tenant_space_tables [] = { OB_ALL_STORAGE_IO_USAGE_AUX_LOB_META_TID, OB_ALL_MVIEW_DEP_AUX_LOB_META_TID, OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_AUX_LOB_META_TID, + OB_ALL_NCOMP_DLL_V2_AUX_LOB_META_TID, OB_ALL_TABLE_AUX_LOB_PIECE_TID, OB_ALL_COLUMN_AUX_LOB_PIECE_TID, OB_ALL_DDL_OPERATION_AUX_LOB_PIECE_TID, @@ -7864,7 +7875,8 @@ const uint64_t tenant_space_tables [] = { OB_ALL_SERVICE_AUX_LOB_PIECE_TID, OB_ALL_STORAGE_IO_USAGE_AUX_LOB_PIECE_TID, OB_ALL_MVIEW_DEP_AUX_LOB_PIECE_TID, - OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_AUX_LOB_PIECE_TID, }; + OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_AUX_LOB_PIECE_TID, + OB_ALL_NCOMP_DLL_V2_AUX_LOB_PIECE_TID, }; const uint64_t all_ora_mapping_virtual_table_org_tables [] = { OB_ALL_VIRTUAL_SQL_AUDIT_TID, @@ -8475,6 +8487,7 @@ const char* const tenant_space_table_names [] = { OB_ALL_STORAGE_IO_USAGE_TNAME, OB_ALL_MVIEW_DEP_TNAME, OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_TNAME, + OB_ALL_NCOMP_DLL_V2_TNAME, OB_TENANT_VIRTUAL_ALL_TABLE_TNAME, OB_TENANT_VIRTUAL_TABLE_COLUMN_TNAME, OB_TENANT_VIRTUAL_TABLE_INDEX_TNAME, @@ -9015,6 +9028,7 @@ const char* const tenant_space_table_names [] = { OB_ALL_VIRTUAL_VECTOR_INDEX_INFO_ORA_TNAME, OB_ALL_VIRTUAL_FUNCTION_IO_STAT_ORA_TNAME, OB_ALL_VIRTUAL_TEMP_FILE_ORA_TNAME, + OB_ALL_VIRTUAL_NCOMP_DLL_V2_REAL_AGENT_ORA_TNAME, OB_GV_OB_PLAN_CACHE_STAT_TNAME, OB_GV_OB_PLAN_CACHE_PLAN_STAT_TNAME, OB_SCHEMATA_TNAME, @@ -10315,6 +10329,7 @@ const char* const tenant_space_table_names [] = { OB_ALL_STORAGE_IO_USAGE_AUX_LOB_META_TNAME, OB_ALL_MVIEW_DEP_AUX_LOB_META_TNAME, OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_AUX_LOB_META_TNAME, + OB_ALL_NCOMP_DLL_V2_AUX_LOB_META_TNAME, OB_ALL_TABLE_AUX_LOB_PIECE_TNAME, OB_ALL_COLUMN_AUX_LOB_PIECE_TNAME, OB_ALL_DDL_OPERATION_AUX_LOB_PIECE_TNAME, @@ -10596,7 +10611,8 @@ const char* const tenant_space_table_names [] = { OB_ALL_SERVICE_AUX_LOB_PIECE_TNAME, OB_ALL_STORAGE_IO_USAGE_AUX_LOB_PIECE_TNAME, OB_ALL_MVIEW_DEP_AUX_LOB_PIECE_TNAME, - OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_AUX_LOB_PIECE_TNAME, }; + OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_AUX_LOB_PIECE_TNAME, + OB_ALL_NCOMP_DLL_V2_AUX_LOB_PIECE_TNAME, }; const uint64_t only_rs_vtables [] = { OB_ALL_VIRTUAL_CORE_META_TABLE_TID, @@ -13597,6 +13613,14 @@ LOBMapping const lob_aux_table_mappings [] = { ObInnerTableSchema::all_scheduler_job_run_detail_v2_aux_lob_piece_schema }, + { + OB_ALL_NCOMP_DLL_V2_TID, + OB_ALL_NCOMP_DLL_V2_AUX_LOB_META_TID, + OB_ALL_NCOMP_DLL_V2_AUX_LOB_PIECE_TID, + ObInnerTableSchema::all_ncomp_dll_v2_aux_lob_meta_schema, + ObInnerTableSchema::all_ncomp_dll_v2_aux_lob_piece_schema + }, + }; static inline bool get_sys_table_lob_aux_table_id(const uint64_t tid, uint64_t& meta_tid, uint64_t& piece_tid) @@ -13634,12 +13658,12 @@ static inline int get_sys_table_lob_aux_schema(const uint64_t tid, } const int64_t OB_CORE_TABLE_COUNT = 4; -const int64_t OB_SYS_TABLE_COUNT = 305; -const int64_t OB_VIRTUAL_TABLE_COUNT = 852; +const int64_t OB_SYS_TABLE_COUNT = 306; +const int64_t OB_VIRTUAL_TABLE_COUNT = 854; const int64_t OB_SYS_VIEW_COUNT = 968; -const int64_t OB_SYS_TENANT_TABLE_COUNT = 2130; +const int64_t OB_SYS_TENANT_TABLE_COUNT = 2133; const int64_t OB_CORE_SCHEMA_VERSION = 1; -const int64_t OB_BOOTSTRAP_SCHEMA_VERSION = 2133; +const int64_t OB_BOOTSTRAP_SCHEMA_VERSION = 2136; } // end namespace share } // end namespace oceanbase diff --git a/src/share/inner_table/ob_inner_table_schema.lob.cpp b/src/share/inner_table/ob_inner_table_schema.lob.cpp index e0437fc38..3e53e16bc 100644 --- a/src/share/inner_table/ob_inner_table_schema.lob.cpp +++ b/src/share/inner_table/ob_inner_table_schema.lob.cpp @@ -21,7 +21,7 @@ inner_lob_map_t inner_lob_map; bool lob_mapping_init() { int ret = OB_SUCCESS; - if (OB_FAIL(inner_lob_map.create(308, ObModIds::OB_INNER_LOB_HASH_SET))) { + if (OB_FAIL(inner_lob_map.create(309, ObModIds::OB_INNER_LOB_HASH_SET))) { SERVER_LOG(WARN, "fail to create inner lob map", K(ret)); } else { for (int64_t i = 0; OB_SUCC(ret) && i < ARRAYSIZEOF(lob_aux_table_mappings); ++i) { diff --git a/src/share/inner_table/ob_inner_table_schema.vt.cpp b/src/share/inner_table/ob_inner_table_schema.vt.cpp index 76e021d68..dbc1953a2 100644 --- a/src/share/inner_table/ob_inner_table_schema.vt.cpp +++ b/src/share/inner_table/ob_inner_table_schema.vt.cpp @@ -427,6 +427,13 @@ bool vt_mapping_init() tmp_vt_mapping.is_real_vt_ = true; } + { + int64_t idx = OB_ALL_VIRTUAL_NCOMP_DLL_V2_REAL_AGENT_ORA_TID - start_idx; + VTMapping &tmp_vt_mapping = vt_mappings[idx]; + tmp_vt_mapping.mapping_tid_ = OB_ALL_NCOMP_DLL_V2_TID; + tmp_vt_mapping.is_real_vt_ = true; + } + { int64_t idx = OB_ALL_VIRTUAL_OPTSTAT_GLOBAL_PREFS_REAL_AGENT_ORA_TID - start_idx; VTMapping &tmp_vt_mapping = vt_mappings[idx]; diff --git a/src/share/inner_table/ob_inner_table_schema_constants.h b/src/share/inner_table/ob_inner_table_schema_constants.h index 3e349c95b..4e81bcc67 100644 --- a/src/share/inner_table/ob_inner_table_schema_constants.h +++ b/src/share/inner_table/ob_inner_table_schema_constants.h @@ -336,6 +336,7 @@ const uint64_t OB_ALL_SERVICE_TID = 516; // "__all_service" const uint64_t OB_ALL_STORAGE_IO_USAGE_TID = 517; // "__all_storage_io_usage" const uint64_t OB_ALL_MVIEW_DEP_TID = 518; // "__all_mview_dep" const uint64_t OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_TID = 519; // "__all_scheduler_job_run_detail_v2" +const uint64_t OB_ALL_NCOMP_DLL_V2_TID = 528; // "__all_ncomp_dll_v2" const uint64_t OB_TENANT_VIRTUAL_ALL_TABLE_TID = 10001; // "__tenant_virtual_all_table" const uint64_t OB_TENANT_VIRTUAL_TABLE_COLUMN_TID = 10002; // "__tenant_virtual_table_column" const uint64_t OB_TENANT_VIRTUAL_TABLE_INDEX_TID = 10003; // "__tenant_virtual_table_index" @@ -810,6 +811,7 @@ const uint64_t OB_ALL_VIRTUAL_VECTOR_INDEX_INFO_TID = 12496; // "__all_virtual_v const uint64_t OB_ALL_VIRTUAL_KV_CLIENT_INFO_TID = 12500; // "__all_virtual_kv_client_info" const uint64_t OB_ALL_VIRTUAL_FUNCTION_IO_STAT_TID = 12504; // "__all_virtual_function_io_stat" const uint64_t OB_ALL_VIRTUAL_TEMP_FILE_TID = 12505; // "__all_virtual_temp_file" +const uint64_t OB_ALL_VIRTUAL_NCOMP_DLL_V2_TID = 12506; // "__all_virtual_ncomp_dll_v2" const uint64_t OB_ALL_VIRTUAL_SQL_AUDIT_ORA_TID = 15009; // "ALL_VIRTUAL_SQL_AUDIT_ORA" const uint64_t OB_ALL_VIRTUAL_PLAN_STAT_ORA_TID = 15010; // "ALL_VIRTUAL_PLAN_STAT_ORA" const uint64_t OB_ALL_VIRTUAL_PLAN_CACHE_PLAN_EXPLAIN_ORA_TID = 15012; // "ALL_VIRTUAL_PLAN_CACHE_PLAN_EXPLAIN_ORA" @@ -1094,6 +1096,7 @@ const uint64_t OB_ALL_VIRTUAL_SS_LOCAL_CACHE_INFO_ORA_TID = 15462; // "ALL_VIRTU const uint64_t OB_ALL_VIRTUAL_VECTOR_INDEX_INFO_ORA_TID = 15467; // "ALL_VIRTUAL_VECTOR_INDEX_INFO_ORA" const uint64_t OB_ALL_VIRTUAL_FUNCTION_IO_STAT_ORA_TID = 15484; // "ALL_VIRTUAL_FUNCTION_IO_STAT_ORA" const uint64_t OB_ALL_VIRTUAL_TEMP_FILE_ORA_TID = 15485; // "ALL_VIRTUAL_TEMP_FILE_ORA" +const uint64_t OB_ALL_VIRTUAL_NCOMP_DLL_V2_REAL_AGENT_ORA_TID = 15486; // "ALL_VIRTUAL_NCOMP_DLL_V2_REAL_AGENT_ORA" const uint64_t OB_GV_OB_PLAN_CACHE_STAT_TID = 20001; // "GV$OB_PLAN_CACHE_STAT" const uint64_t OB_GV_OB_PLAN_CACHE_PLAN_STAT_TID = 20002; // "GV$OB_PLAN_CACHE_PLAN_STAT" const uint64_t OB_SCHEMATA_TID = 20003; // "SCHEMATA" @@ -2370,6 +2373,7 @@ const uint64_t OB_ALL_SERVICE_AUX_LOB_META_TID = 50516; // "__all_service_aux_lo const uint64_t OB_ALL_STORAGE_IO_USAGE_AUX_LOB_META_TID = 50517; // "__all_storage_io_usage_aux_lob_meta" const uint64_t OB_ALL_MVIEW_DEP_AUX_LOB_META_TID = 50518; // "__all_mview_dep_aux_lob_meta" const uint64_t OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_AUX_LOB_META_TID = 50519; // "__all_scheduler_job_run_detail_v2_aux_lob_meta" +const uint64_t OB_ALL_NCOMP_DLL_V2_AUX_LOB_META_TID = 50528; // "__all_ncomp_dll_v2_aux_lob_meta" const uint64_t OB_ALL_TABLE_AUX_LOB_PIECE_TID = 60003; // "__all_table_aux_lob_piece" const uint64_t OB_ALL_COLUMN_AUX_LOB_PIECE_TID = 60004; // "__all_column_aux_lob_piece" const uint64_t OB_ALL_DDL_OPERATION_AUX_LOB_PIECE_TID = 60005; // "__all_ddl_operation_aux_lob_piece" @@ -2678,6 +2682,7 @@ const uint64_t OB_ALL_SERVICE_AUX_LOB_PIECE_TID = 60516; // "__all_service_aux_l const uint64_t OB_ALL_STORAGE_IO_USAGE_AUX_LOB_PIECE_TID = 60517; // "__all_storage_io_usage_aux_lob_piece" const uint64_t OB_ALL_MVIEW_DEP_AUX_LOB_PIECE_TID = 60518; // "__all_mview_dep_aux_lob_piece" const uint64_t OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_AUX_LOB_PIECE_TID = 60519; // "__all_scheduler_job_run_detail_v2_aux_lob_piece" +const uint64_t OB_ALL_NCOMP_DLL_V2_AUX_LOB_PIECE_TID = 60528; // "__all_ncomp_dll_v2_aux_lob_piece" const uint64_t OB_ALL_VIRTUAL_PLAN_CACHE_STAT_ALL_VIRTUAL_PLAN_CACHE_STAT_I1_TID = 14999; // "__all_virtual_plan_cache_stat" const uint64_t OB_ALL_VIRTUAL_SESSION_EVENT_ALL_VIRTUAL_SESSION_EVENT_I1_TID = 14998; // "__all_virtual_session_event" const uint64_t OB_ALL_VIRTUAL_SESSION_WAIT_ALL_VIRTUAL_SESSION_WAIT_I1_TID = 14997; // "__all_virtual_session_wait" @@ -3194,6 +3199,7 @@ const char *const OB_ALL_SERVICE_TNAME = "__all_service"; const char *const OB_ALL_STORAGE_IO_USAGE_TNAME = "__all_storage_io_usage"; const char *const OB_ALL_MVIEW_DEP_TNAME = "__all_mview_dep"; const char *const OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_TNAME = "__all_scheduler_job_run_detail_v2"; +const char *const OB_ALL_NCOMP_DLL_V2_TNAME = "__all_ncomp_dll_v2"; const char *const OB_TENANT_VIRTUAL_ALL_TABLE_TNAME = "__tenant_virtual_all_table"; const char *const OB_TENANT_VIRTUAL_TABLE_COLUMN_TNAME = "__tenant_virtual_table_column"; const char *const OB_TENANT_VIRTUAL_TABLE_INDEX_TNAME = "__tenant_virtual_table_index"; @@ -3668,6 +3674,7 @@ const char *const OB_ALL_VIRTUAL_VECTOR_INDEX_INFO_TNAME = "__all_virtual_vector const char *const OB_ALL_VIRTUAL_KV_CLIENT_INFO_TNAME = "__all_virtual_kv_client_info"; const char *const OB_ALL_VIRTUAL_FUNCTION_IO_STAT_TNAME = "__all_virtual_function_io_stat"; const char *const OB_ALL_VIRTUAL_TEMP_FILE_TNAME = "__all_virtual_temp_file"; +const char *const OB_ALL_VIRTUAL_NCOMP_DLL_V2_TNAME = "__all_virtual_ncomp_dll_v2"; const char *const OB_ALL_VIRTUAL_SQL_AUDIT_ORA_TNAME = "ALL_VIRTUAL_SQL_AUDIT"; const char *const OB_ALL_VIRTUAL_PLAN_STAT_ORA_TNAME = "ALL_VIRTUAL_PLAN_STAT"; const char *const OB_ALL_VIRTUAL_PLAN_CACHE_PLAN_EXPLAIN_ORA_TNAME = "ALL_VIRTUAL_PLAN_CACHE_PLAN_EXPLAIN"; @@ -3952,6 +3959,7 @@ const char *const OB_ALL_VIRTUAL_SS_LOCAL_CACHE_INFO_ORA_TNAME = "ALL_VIRTUAL_SS const char *const OB_ALL_VIRTUAL_VECTOR_INDEX_INFO_ORA_TNAME = "ALL_VIRTUAL_VECTOR_INDEX_INFO"; const char *const OB_ALL_VIRTUAL_FUNCTION_IO_STAT_ORA_TNAME = "ALL_VIRTUAL_FUNCTION_IO_STAT"; const char *const OB_ALL_VIRTUAL_TEMP_FILE_ORA_TNAME = "ALL_VIRTUAL_TEMP_FILE"; +const char *const OB_ALL_VIRTUAL_NCOMP_DLL_V2_REAL_AGENT_ORA_TNAME = "ALL_VIRTUAL_NCOMP_DLL_V2_REAL_AGENT"; const char *const OB_GV_OB_PLAN_CACHE_STAT_TNAME = "GV$OB_PLAN_CACHE_STAT"; const char *const OB_GV_OB_PLAN_CACHE_PLAN_STAT_TNAME = "GV$OB_PLAN_CACHE_PLAN_STAT"; const char *const OB_SCHEMATA_TNAME = "SCHEMATA"; @@ -5228,6 +5236,7 @@ const char *const OB_ALL_SERVICE_AUX_LOB_META_TNAME = "__all_service_aux_lob_met const char *const OB_ALL_STORAGE_IO_USAGE_AUX_LOB_META_TNAME = "__all_storage_io_usage_aux_lob_meta"; const char *const OB_ALL_MVIEW_DEP_AUX_LOB_META_TNAME = "__all_mview_dep_aux_lob_meta"; const char *const OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_AUX_LOB_META_TNAME = "__all_scheduler_job_run_detail_v2_aux_lob_meta"; +const char *const OB_ALL_NCOMP_DLL_V2_AUX_LOB_META_TNAME = "__all_ncomp_dll_v2_aux_lob_meta"; const char *const OB_ALL_TABLE_AUX_LOB_PIECE_TNAME = "__all_table_aux_lob_piece"; const char *const OB_ALL_COLUMN_AUX_LOB_PIECE_TNAME = "__all_column_aux_lob_piece"; const char *const OB_ALL_DDL_OPERATION_AUX_LOB_PIECE_TNAME = "__all_ddl_operation_aux_lob_piece"; @@ -5536,6 +5545,7 @@ const char *const OB_ALL_SERVICE_AUX_LOB_PIECE_TNAME = "__all_service_aux_lob_pi const char *const OB_ALL_STORAGE_IO_USAGE_AUX_LOB_PIECE_TNAME = "__all_storage_io_usage_aux_lob_piece"; const char *const OB_ALL_MVIEW_DEP_AUX_LOB_PIECE_TNAME = "__all_mview_dep_aux_lob_piece"; const char *const OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_AUX_LOB_PIECE_TNAME = "__all_scheduler_job_run_detail_v2_aux_lob_piece"; +const char *const OB_ALL_NCOMP_DLL_V2_AUX_LOB_PIECE_TNAME = "__all_ncomp_dll_v2_aux_lob_piece"; const char *const OB_ALL_VIRTUAL_PLAN_CACHE_STAT_ALL_VIRTUAL_PLAN_CACHE_STAT_I1_TNAME = "__idx_11003_all_virtual_plan_cache_stat_i1"; const char *const OB_ALL_VIRTUAL_SESSION_EVENT_ALL_VIRTUAL_SESSION_EVENT_I1_TNAME = "__idx_11013_all_virtual_session_event_i1"; const char *const OB_ALL_VIRTUAL_SESSION_WAIT_ALL_VIRTUAL_SESSION_WAIT_I1_TNAME = "__idx_11014_all_virtual_session_wait_i1"; diff --git a/src/share/inner_table/ob_inner_table_schema_def.py b/src/share/inner_table/ob_inner_table_schema_def.py index 1532db7ce..09f23a82d 100755 --- a/src/share/inner_table/ob_inner_table_schema_def.py +++ b/src/share/inner_table/ob_inner_table_schema_def.py @@ -7517,7 +7517,28 @@ def_table_schema( # 525: __wr_sql_plan # 526: __wr_res_mgr_sysstat # 527: __all_kv_redis_table -# 528: __all_ncomp_dll_v2 + +all_ncomp_dll_v2 = dict( + owner = 'hr351303', + table_name = '__all_ncomp_dll_v2', + table_id = '528', + table_type = 'SYSTEM_TABLE', + gm_columns = ['gmt_create', 'gmt_modified'], + rowkey_columns = [ + ('database_id', 'int', 'false'), + ('key_id', 'int'), + ('compile_db_id', 'int'), + ('arch_type', 'varchar:128'), + ('build_version', 'varchar:OB_SERVER_VERSION_LENGTH'), + ], + in_tenant_space = True, + + normal_columns = [ + ('merge_version', 'int'), + ('dll', 'longblob', 'false'), + ], +) +def_table_schema(**all_ncomp_dll_v2) # 余留位置(此行之前占位) # 本区域占位建议:采用真实表名进行占位 @@ -15160,7 +15181,10 @@ def_table_schema( vtable_route_policy = 'distributed', ) -# 12506: __all_virtual_ncomp_dll_v2 +def_table_schema(**gen_iterate_virtual_table_def( + table_id = '12506', + table_name = '__all_virtual_ncomp_dll_v2', + keywords = all_def_keywords['__all_ncomp_dll_v2'])) # 12507: __all_virtual_logstore_service_status # 12508: __all_virtual_logstore_service_info @@ -15680,7 +15704,7 @@ def_table_schema(**no_direct_access(gen_oracle_mapping_virtual_table_def('15467' # 15483: __all_virtual_wr_res_mgr_sysstat def_table_schema(**no_direct_access(gen_oracle_mapping_virtual_table_def('15484', all_def_keywords['__all_virtual_function_io_stat']))) def_table_schema(**gen_oracle_mapping_virtual_table_def('15485', all_def_keywords['__all_virtual_temp_file'])) -# 15486: __all_ncomp_dll_v2 +def_table_schema(**gen_oracle_mapping_real_virtual_table_def('15486', all_def_keywords['__all_ncomp_dll_v2'])) # 余留位置(此行之前占位) # 本区域定义的Oracle表名比较复杂,一般都采用gen_xxx_table_def()方式定义,占位建议采用基表表名占位 diff --git a/src/share/inner_table/ob_inner_table_schema_misc.ipp b/src/share/inner_table/ob_inner_table_schema_misc.ipp index 7824da3f1..4e33e8d04 100644 --- a/src/share/inner_table/ob_inner_table_schema_misc.ipp +++ b/src/share/inner_table/ob_inner_table_schema_misc.ipp @@ -1936,6 +1936,7 @@ case OB_ALL_VIRTUAL_MVIEW_REFRESH_STATS_TID: case OB_ALL_VIRTUAL_MVIEW_REFRESH_STATS_PARAMS_TID: case OB_ALL_VIRTUAL_MVIEW_REFRESH_STATS_SYS_DEFAULTS_TID: case OB_ALL_VIRTUAL_MVIEW_REFRESH_STMT_STATS_TID: +case OB_ALL_VIRTUAL_NCOMP_DLL_V2_TID: case OB_ALL_VIRTUAL_OBJAUTH_TID: case OB_ALL_VIRTUAL_OBJAUTH_HISTORY_TID: case OB_ALL_VIRTUAL_OBJECT_TYPE_TID: @@ -3154,6 +3155,21 @@ case OB_ALL_VIRTUAL_USER_PROXY_ROLE_INFO_HISTORY_TID: break; } + case OB_ALL_VIRTUAL_NCOMP_DLL_V2_TID: { + ObIterateVirtualTable *iter = NULL; + if (OB_FAIL(NEW_VIRTUAL_TABLE(ObIterateVirtualTable, iter))) { + SERVER_LOG(WARN, "create virtual table iterator failed", K(ret)); + } else if (OB_FAIL(iter->init(OB_ALL_NCOMP_DLL_V2_TID, index_schema, params))) { + SERVER_LOG(WARN, "virtual table iter init failed", K(ret)); + iter->~ObIterateVirtualTable(); + allocator.free(iter); + iter = NULL; + } else { + vt_iter = iter; + } + break; + } + case OB_ALL_VIRTUAL_OBJAUTH_TID: { ObIterateVirtualTable *iter = NULL; if (OB_FAIL(NEW_VIRTUAL_TABLE(ObIterateVirtualTable, iter))) { @@ -3243,7 +3259,9 @@ case OB_ALL_VIRTUAL_USER_PROXY_ROLE_INFO_HISTORY_TID: } break; } + END_CREATE_VT_ITER_SWITCH_LAMBDA + BEGIN_CREATE_VT_ITER_SWITCH_LAMBDA case OB_ALL_VIRTUAL_OUTLINE_TID: { ObIterateVirtualTable *iter = NULL; if (OB_FAIL(NEW_VIRTUAL_TABLE(ObIterateVirtualTable, iter))) { @@ -3258,9 +3276,7 @@ case OB_ALL_VIRTUAL_USER_PROXY_ROLE_INFO_HISTORY_TID: } break; } - END_CREATE_VT_ITER_SWITCH_LAMBDA - BEGIN_CREATE_VT_ITER_SWITCH_LAMBDA case OB_ALL_VIRTUAL_OUTLINE_HISTORY_TID: { ObIterateVirtualTable *iter = NULL; if (OB_FAIL(NEW_VIRTUAL_TABLE(ObIterateVirtualTable, iter))) { @@ -3545,7 +3561,9 @@ case OB_ALL_VIRTUAL_USER_PROXY_ROLE_INFO_HISTORY_TID: } break; } + END_CREATE_VT_ITER_SWITCH_LAMBDA + BEGIN_CREATE_VT_ITER_SWITCH_LAMBDA case OB_ALL_VIRTUAL_RLS_POLICY_HISTORY_TID: { ObIterateVirtualTable *iter = NULL; if (OB_FAIL(NEW_VIRTUAL_TABLE(ObIterateVirtualTable, iter))) { @@ -3560,9 +3578,7 @@ case OB_ALL_VIRTUAL_USER_PROXY_ROLE_INFO_HISTORY_TID: } break; } - END_CREATE_VT_ITER_SWITCH_LAMBDA - BEGIN_CREATE_VT_ITER_SWITCH_LAMBDA case OB_ALL_VIRTUAL_RLS_SECURITY_COLUMN_TID: { ObIterateVirtualTable *iter = NULL; if (OB_FAIL(NEW_VIRTUAL_TABLE(ObIterateVirtualTable, iter))) { @@ -3847,7 +3863,9 @@ case OB_ALL_VIRTUAL_USER_PROXY_ROLE_INFO_HISTORY_TID: } break; } + END_CREATE_VT_ITER_SWITCH_LAMBDA + BEGIN_CREATE_VT_ITER_SWITCH_LAMBDA case OB_ALL_VIRTUAL_SYNONYM_TID: { ObIterateVirtualTable *iter = NULL; if (OB_FAIL(NEW_VIRTUAL_TABLE(ObIterateVirtualTable, iter))) { @@ -3862,9 +3880,7 @@ case OB_ALL_VIRTUAL_USER_PROXY_ROLE_INFO_HISTORY_TID: } break; } - END_CREATE_VT_ITER_SWITCH_LAMBDA - BEGIN_CREATE_VT_ITER_SWITCH_LAMBDA case OB_ALL_VIRTUAL_SYNONYM_HISTORY_TID: { ObIterateVirtualTable *iter = NULL; if (OB_FAIL(NEW_VIRTUAL_TABLE(ObIterateVirtualTable, iter))) { @@ -4149,7 +4165,9 @@ case OB_ALL_VIRTUAL_USER_PROXY_ROLE_INFO_HISTORY_TID: } break; } + END_CREATE_VT_ITER_SWITCH_LAMBDA + BEGIN_CREATE_VT_ITER_SWITCH_LAMBDA case OB_ALL_VIRTUAL_TENANT_CONTEXT_HISTORY_TID: { ObIterateVirtualTable *iter = NULL; if (OB_FAIL(NEW_VIRTUAL_TABLE(ObIterateVirtualTable, iter))) { @@ -4164,9 +4182,7 @@ case OB_ALL_VIRTUAL_USER_PROXY_ROLE_INFO_HISTORY_TID: } break; } - END_CREATE_VT_ITER_SWITCH_LAMBDA - BEGIN_CREATE_VT_ITER_SWITCH_LAMBDA case OB_ALL_VIRTUAL_TENANT_DIRECTORY_TID: { ObIterateVirtualTable *iter = NULL; if (OB_FAIL(NEW_VIRTUAL_TABLE(ObIterateVirtualTable, iter))) { @@ -4451,7 +4467,9 @@ case OB_ALL_VIRTUAL_USER_PROXY_ROLE_INFO_HISTORY_TID: } break; } + END_CREATE_VT_ITER_SWITCH_LAMBDA + BEGIN_CREATE_VT_ITER_SWITCH_LAMBDA case OB_ALL_VIRTUAL_TENANT_SCHEDULER_PROGRAM_TID: { ObIterateVirtualTable *iter = NULL; if (OB_FAIL(NEW_VIRTUAL_TABLE(ObIterateVirtualTable, iter))) { @@ -4466,9 +4484,7 @@ case OB_ALL_VIRTUAL_USER_PROXY_ROLE_INFO_HISTORY_TID: } break; } - END_CREATE_VT_ITER_SWITCH_LAMBDA - BEGIN_CREATE_VT_ITER_SWITCH_LAMBDA case OB_ALL_VIRTUAL_TENANT_SCHEDULER_PROGRAM_ARGUMENT_TID: { ObIterateVirtualTable *iter = NULL; if (OB_FAIL(NEW_VIRTUAL_TABLE(ObIterateVirtualTable, iter))) { @@ -4753,7 +4769,9 @@ case OB_ALL_VIRTUAL_USER_PROXY_ROLE_INFO_HISTORY_TID: } break; } + END_CREATE_VT_ITER_SWITCH_LAMBDA + BEGIN_CREATE_VT_ITER_SWITCH_LAMBDA case OB_ALL_VIRTUAL_USER_PROXY_INFO_TID: { ObIterateVirtualTable *iter = NULL; if (OB_FAIL(NEW_VIRTUAL_TABLE(ObIterateVirtualTable, iter))) { @@ -4768,9 +4786,7 @@ case OB_ALL_VIRTUAL_USER_PROXY_ROLE_INFO_HISTORY_TID: } break; } - END_CREATE_VT_ITER_SWITCH_LAMBDA - BEGIN_CREATE_VT_ITER_SWITCH_LAMBDA case OB_ALL_VIRTUAL_USER_PROXY_INFO_HISTORY_TID: { ObIterateVirtualTable *iter = NULL; if (OB_FAIL(NEW_VIRTUAL_TABLE(ObIterateVirtualTable, iter))) { diff --git a/src/share/inner_table/table_id_to_name b/src/share/inner_table/table_id_to_name index 68f22e0fa..e5a29dec2 100644 --- a/src/share/inner_table/table_id_to_name +++ b/src/share/inner_table/table_id_to_name @@ -365,6 +365,7 @@ # 517: __all_storage_io_usage # 518: __all_mview_dep # 519: __all_scheduler_job_run_detail_v2 +# 528: __all_ncomp_dll_v2 # 10001: __tenant_virtual_all_table # 10002: __tenant_virtual_table_column # 10003: __tenant_virtual_table_index @@ -1162,6 +1163,8 @@ # 12500: __all_virtual_kv_client_info # 12504: __all_virtual_function_io_stat # 12505: __all_virtual_temp_file +# 12506: __all_virtual_ncomp_dll_v2 +# 12506: __all_ncomp_dll_v2 # BASE_TABLE_NAME # 15009: ALL_VIRTUAL_SQL_AUDIT # 15009: __all_virtual_sql_audit # BASE_TABLE_NAME # 15010: ALL_VIRTUAL_PLAN_STAT @@ -1790,6 +1793,8 @@ # 15484: __all_virtual_function_io_stat # BASE_TABLE_NAME # 15485: ALL_VIRTUAL_TEMP_FILE # 15485: __all_virtual_temp_file # BASE_TABLE_NAME +# 15486: ALL_VIRTUAL_NCOMP_DLL_V2_REAL_AGENT +# 15486: __all_ncomp_dll_v2 # BASE_TABLE_NAME # 20001: GV$OB_PLAN_CACHE_STAT # 20002: GV$OB_PLAN_CACHE_PLAN_STAT # 20003: SCHEMATA diff --git a/src/share/ncomp_dll/ob_flush_ncomp_dll_task.cpp b/src/share/ncomp_dll/ob_flush_ncomp_dll_task.cpp new file mode 100644 index 000000000..f857b2418 --- /dev/null +++ b/src/share/ncomp_dll/ob_flush_ncomp_dll_task.cpp @@ -0,0 +1,284 @@ +/** + * Copyright (c) 2024 OceanBase + * OceanBase CE is licensed under Mulan PubL v2. + * You can use this software according to the terms and conditions of the Mulan PubL v2. + * You may obtain a copy of Mulan PubL v2 at: + * http://license.coscl.org.cn/MulanPubL-2.0 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PubL v2 for more details. + */ +#define USING_LOG_PREFIX SHARE + +#include "ob_flush_ncomp_dll_task.h" + +#include "share/ob_version.h" +#include "share/ob_tenant_info_proxy.h" +#include "share/ob_define.h" +#include "share/ob_all_server_tracer.h" +#include "share/stat/ob_dbms_stats_maintenance_window.h" // ObDbmsStatsMaintenanceWindow +#include "observer/dbms_scheduler/ob_dbms_sched_table_operator.h" // ObDBMSSchedTableOperator + +namespace oceanbase +{ +namespace share +{ +using namespace common; + +#define USEC_OF_HOUR (60 * 60 * 1000000LL) + +int ObFlushNcompDll::check_flush_ncomp_dll_job_exists(ObMySQLTransaction &trans, + const uint64_t tenant_id, + const ObString &job_name, + bool &is_job_exists) +{ + int ret = OB_SUCCESS; + is_job_exists = false; + ObSqlString select_sql; + int64_t row_count = 0; + if (OB_FAIL(select_sql.append_fmt("SELECT count(*) FROM %s WHERE tenant_id = %ld and job_name = '%.*s';", + share::OB_ALL_TENANT_SCHEDULER_JOB_TNAME, + share::schema::ObSchemaUtils::get_extract_tenant_id(tenant_id, tenant_id), + job_name.length(), job_name.ptr()))) { + LOG_WARN("failed to append fmt", K(ret)); + } else { + SMART_VAR(ObMySQLProxy::MySQLResult, proxy_result) { + sqlclient::ObMySQLResult *client_result = NULL; + if (OB_FAIL(trans.read(proxy_result, tenant_id, select_sql.ptr()))) { + LOG_WARN("failed to execute sql", K(ret), K(select_sql)); + } else if (OB_ISNULL(client_result = proxy_result.get_result())) { + ret = OB_ERR_UNEXPECTED; + LOG_WARN("failed to execute sql", K(ret)); + } else { + while (OB_SUCC(ret) && OB_SUCC(client_result->next())) { + int64_t idx = 0; + ObObj obj; + if (OB_FAIL(client_result->get_obj(idx, obj))) { + LOG_WARN("failed to get object", K(ret)); + } else if (OB_FAIL(obj.get_int(row_count))) { + LOG_WARN("failed to get int", K(ret), K(obj)); + } else if (OB_UNLIKELY(row_count != 2 && row_count != 0)) { + ret = OB_ERR_UNEXPECTED; + LOG_WARN("get unexpected error", K(ret), K(row_count)); + } else { + is_job_exists = row_count > 0; + } + } + ret = OB_ITER_END == ret ? OB_SUCCESS : ret; + } + int tmp_ret = OB_SUCCESS; + if (NULL != client_result) { + if (OB_SUCCESS != (tmp_ret = client_result->close())) { + LOG_WARN("close result set failed", K(ret), K(tmp_ret)); + ret = COVER_SUCC(tmp_ret); + } + } + } + LOG_INFO("succeed to check flush ncomp dll job exists", K(ret), K(select_sql), K(is_job_exists), K(row_count)); + } + return ret; +} + +int ObFlushNcompDll::get_job_id(const uint64_t tenant_id, + ObMySQLTransaction &trans, + int64_t &job_id) +{ + int ret = OB_SUCCESS; + ObSqlString sql; + job_id = OB_INVALID_INDEX; + if (OB_FAIL(sql.assign_fmt("select max(job) + 1 as new_job_id from %s where job <= %ld", + OB_ALL_TENANT_SCHEDULER_JOB_TNAME, + dbms_scheduler::ObDBMSSchedTableOperator::JOB_ID_OFFSET))) { + LOG_WARN("assign fmt failed", KR(ret), K(tenant_id)); + } else { + HEAP_VAR(ObMySQLProxy::MySQLResult, res) { + common::sqlclient::ObMySQLResult *result = NULL; + if (OB_FAIL(trans.read(res, tenant_id, sql.ptr()))) { + LOG_WARN("failed to read", KR(ret), K(tenant_id), K(sql)); + } else if (OB_ISNULL(result = res.get_result())) { + ret = OB_ERR_UNEXPECTED; + LOG_WARN("failed to get sql result", KR(ret)); + } else if (OB_FAIL(result->next())) { + LOG_WARN("failed to get job", KR(ret), K(sql)); + } else if (OB_FAIL(result->get_int("new_job_id", job_id))) { + LOG_WARN("get int failed", KR(ret), K(tenant_id), K(sql)); + } else { + LOG_INFO("get new job_id successfully", KR(ret), K(tenant_id), K(job_id)); + } + } + } + + return ret; +} + +int ObFlushNcompDll::get_job_action(ObSqlString &job_action) +{ + int ret = OB_SUCCESS; + + common::ObZone zone; + ObArray servers_info; + common::hash::ObHashSet observer_version_set; + bool need_comma = false; + + job_action.reset(); + + OZ (observer_version_set.create((4))); + OZ (share::ObAllServerTracer::get_instance().get_servers_info(zone, servers_info)); + for (int64_t i = 0; OB_SUCC(ret) && i < servers_info.count(); ++i) { + OZ (observer_version_set.set_refactored(servers_info.at(i).get_build_version())); + } + + //OZ (get_package_and_svn(build_version, sizeof(build_version))); + //OZ (job_action.assign_fmt("delete FROM %s where build_version != '%s'", OB_ALL_NCOMP_DLL_V2_TNAME, build_version)); + OZ (job_action.append_fmt("delete FROM %s where build_version not in (", OB_ALL_NCOMP_DLL_V2_TNAME)); + for (common::hash::ObHashSet::const_iterator iter = observer_version_set.begin(); + OB_SUCC(ret) && iter != observer_version_set.end(); + iter++) { + OZ(job_action.append_fmt("%s'%s'", need_comma ? ", " : "", iter->first.ptr())); + OX (need_comma = true); + } + OZ(job_action.append(")")); + + if (observer_version_set.created()) { + observer_version_set.destroy(); + } + + return ret; +} + +int ObFlushNcompDll::create_flush_ncomp_dll_job_for_425(const ObSysVariableSchema &sys_variable, + const uint64_t tenant_id, + const bool is_enabled, + ObMySQLTransaction &trans) +{ + int ret = OB_SUCCESS; + + bool is_job_exists = false; + ObSqlString job_action; + if (OB_UNLIKELY(!is_user_tenant(tenant_id))) { + ret = OB_INVALID_ARGUMENT; + LOG_WARN("must be user tenant", KR(ret), K(tenant_id)); + } else if (OB_FAIL(check_flush_ncomp_dll_job_exists(trans, tenant_id, async_flush_ncomp_dll_for_425, is_job_exists))) { + LOG_WARN("fail to check ncomp dll job", K(ret)); + } else if (is_job_exists) { + // do nothing + } else if (OB_FAIL(job_action.assign_fmt("delete FROM %s", OB_ALL_NCOMP_DLL_TNAME))) { + LOG_WARN("fail to get job action", K(ret)); + } else if (OB_FAIL(create_flush_ncomp_dll_job_common(sys_variable, + tenant_id, + is_enabled, + trans, + job_action, + async_flush_ncomp_dll_for_425))) { + LOG_WARN("fail to create flush ncomp dll job", K(ret)); + } + return ret; +} + +int ObFlushNcompDll::create_flush_ncomp_dll_job(const ObSysVariableSchema &sys_variable, + const uint64_t tenant_id, + const bool is_enabled, + ObMySQLTransaction &trans) +{ + int ret = OB_SUCCESS; + + bool is_job_exists = false; + ObSqlString job_action; + if (OB_UNLIKELY(!is_user_tenant(tenant_id))) { + ret = OB_INVALID_ARGUMENT; + LOG_WARN("must be user tenant", KR(ret), K(tenant_id)); + } else if (OB_FAIL(check_flush_ncomp_dll_job_exists(trans, tenant_id, async_flush_ncomp_dll, is_job_exists))) { + LOG_WARN("fail to check ncomp dll job", K(ret)); + } else if (is_job_exists) { + // do nothing + } else if (OB_FAIL(get_job_action(job_action))) { + LOG_WARN("fail to get job action", K(ret)); + } else if (OB_FAIL(create_flush_ncomp_dll_job_common(sys_variable, + tenant_id, + is_enabled, + trans, + job_action, + async_flush_ncomp_dll))) { + LOG_WARN("fail to create flush ncomp dll job", K(ret)); + } + return ret; +} + +int ObFlushNcompDll::create_flush_ncomp_dll_job_common(const ObSysVariableSchema &sys_variable, + const uint64_t tenant_id, + const bool is_enabled, + ObMySQLTransaction &trans, + const ObSqlString &job_action, + const ObString &job_name) +{ + int ret = OB_SUCCESS; + ObDMLSqlSplicer dml; + ObDMLExecHelper exec(trans, tenant_id); + bool is_oracle_mode = false; + char buf[OB_MAX_PROC_ENV_LENGTH] = {0}; + int64_t pos = 0; + int32_t offset_sec = 0; + ObTime ob_time; + int64_t job_id = OB_INVALID_INDEX; + int64_t affected_rows = 0; + int64_t current_time = ObTimeUtility::current_time(); + + if (OB_FAIL(sys_variable.get_oracle_mode(is_oracle_mode))) { + LOG_WARN("failed to get oracle mode", KR(ret)); + } else if (OB_FAIL(sql::ObExecEnv::gen_exec_env(sys_variable, buf, OB_MAX_PROC_ENV_LENGTH, pos))) { + LOG_WARN("failed to gen exec env", KR(ret)); + } else if (OB_FAIL(ObDbmsStatsMaintenanceWindow::get_time_zone_offset(sys_variable, + tenant_id, + offset_sec))) { + LOG_WARN("failed to get time zone offset", KR(ret), K(tenant_id)); + } else if (OB_FAIL(ObTimeConverter::usec_to_ob_time(current_time + offset_sec * USECS_PER_SEC, + ob_time))) { + LOG_WARN("failed to usec to ob time", KR(ret), K(current_time), K(offset_sec)); + } else if (OB_FAIL(get_job_id(tenant_id, trans, job_id))) { + LOG_WARN("get new job_id failed", KR(ret), K(tenant_id)); + } else { + ObString exec_env(pos, buf); + int64_t current_hour = ob_time.parts_[DT_HOUR]; + int64_t hours_to_next_day = HOURS_PER_DAY - current_hour; + const int64_t start_usec = (current_time / USEC_OF_HOUR + hours_to_next_day) * USEC_OF_HOUR; // next day 00:00:00 + HEAP_VAR(dbms_scheduler::ObDBMSSchedJobInfo, job_info) { + job_info.tenant_id_ = tenant_id; + job_info.job_ = job_id; + job_info.job_name_ = job_name; + job_info.job_action_ = job_action.ptr(); + job_info.lowner_ = is_oracle_mode ? ObString("SYS") : ObString("root@%"); + job_info.powner_ = is_oracle_mode ? ObString("SYS") : ObString("root@%"); + job_info.cowner_ = is_oracle_mode ? ObString("SYS") : ObString("oceanbase"); + job_info.job_style_ = ObString("regular"); + job_info.job_type_ = ObString("PLSQL_BLOCK"); + job_info.job_class_ = ObString("DEFAULT_JOB_CLASS"); + job_info.what_ = job_action.ptr(); + job_info.start_date_ = start_usec; + job_info.end_date_ = 64060560000000000; // 4000-01-01 00:00:00.000000 + job_info.interval_ = ObString(); + job_info.repeat_interval_ = ObString(); + job_info.enabled_ = is_enabled; + job_info.auto_drop_ = true; + job_info.max_run_duration_ = SECS_PER_HOUR * 2; + job_info.exec_env_ = exec_env; + job_info.comments_ = ObString("used to auto flush ncomp dll table expired data"); + + if (OB_FAIL(dbms_scheduler::ObDBMSSchedJobUtils::create_dbms_sched_job(trans, + tenant_id, + job_id, + job_info))) { + LOG_WARN("failed to create flush ncomp dll job", KR(ret), K(job_action)); + } else { + LOG_INFO("finish create flush ncomp dll job", K(tenant_id), K(is_enabled), + K(offset_sec), K(job_id), K(exec_env), + K(start_usec), K(affected_rows), K(job_action)); + } + } + } + + return ret; +} + +}//end namespace rootserver +}//end namespace oceanbase \ No newline at end of file diff --git a/src/share/ncomp_dll/ob_flush_ncomp_dll_task.h b/src/share/ncomp_dll/ob_flush_ncomp_dll_task.h new file mode 100644 index 000000000..8f1af069b --- /dev/null +++ b/src/share/ncomp_dll/ob_flush_ncomp_dll_task.h @@ -0,0 +1,61 @@ +/** + * Copyright (c) 2024 OceanBase + * OceanBase CE is licensed under Mulan PubL v2. + * You can use this software according to the terms and conditions of the Mulan PubL v2. + * You may obtain a copy of Mulan PubL v2 at: + * http://license.coscl.org.cn/MulanPubL-2.0 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PubL v2 for more details. + */ + +#ifndef OCEANBASE_ROOTSERVER_OB_FLUSH_NCOMP_DLL_TASK_H_ +#define OCEANBASE_ROOTSERVER_OB_FLUSH_NCOMP_DLL_TASK_H_ + +#include "share/schema/ob_schema_struct.h" +#include "lib/mysqlclient/ob_mysql_transaction.h" + +namespace oceanbase +{ + +namespace share +{ + +static const char *async_flush_ncomp_dll = "ASYNC_FLUSH_NCOMP_DLL_V2_EXPIRED_DATA"; +static const char *async_flush_ncomp_dll_for_425 = "ASYNC_FLUSH_NCOMP_DLL_EXPIRED_DATA"; + +class ObFlushNcompDll +{ +public: + static int create_flush_ncomp_dll_job( + const schema::ObSysVariableSchema &sys_variable, + const uint64_t tenant_id, + const bool is_enabled, + common::ObMySQLTransaction &trans); + static int create_flush_ncomp_dll_job_for_425( + const schema::ObSysVariableSchema &sys_variable, + const uint64_t tenant_id, + const bool is_enabled, + common::ObMySQLTransaction &trans); +private: + static int check_flush_ncomp_dll_job_exists(ObMySQLTransaction &trans, + const uint64_t tenant_id, + const ObString &job_name, + bool &is_job_exists); + static int get_job_id(const uint64_t tenant_id, + ObMySQLTransaction &trans, + int64_t &job_id); + static int get_job_action(ObSqlString &job_action); + static int create_flush_ncomp_dll_job_common(const schema::ObSysVariableSchema &sys_variable, + const uint64_t tenant_id, + const bool is_enabled, + ObMySQLTransaction &trans, + const ObSqlString &job_action, + const ObString &job_name); +}; + +} +}//end namespace oceanbase + +#endif \ No newline at end of file diff --git a/src/share/ob_upgrade_utils.cpp b/src/share/ob_upgrade_utils.cpp index 9fda936dd..32677c4af 100755 --- a/src/share/ob_upgrade_utils.cpp +++ b/src/share/ob_upgrade_utils.cpp @@ -28,6 +28,7 @@ #include "share/config/ob_config_helper.h" #include "share/stat/ob_dbms_stats_maintenance_window.h" #include "share/stat/ob_dbms_stats_preferences.h" +#include "share/ncomp_dll/ob_flush_ncomp_dll_task.h" namespace oceanbase { @@ -596,8 +597,8 @@ int ObUpgradeUtils::filter_sys_stat( ObUpgradeProcesserSet::ObUpgradeProcesserSet() : inited_(false), allocator_(ObMemAttr(MTL_CTX() ? MTL_ID() : OB_SERVER_TENANT_ID, "UpgProcSet")), - processor_list_(OB_MALLOC_NORMAL_BLOCK_SIZE, - ModulePageAllocator(allocator_)) + processor_list_(OB_MALLOC_NORMAL_BLOCK_SIZE, ModulePageAllocator(allocator_)), + all_version_upgrade_processor_(NULL) { } @@ -608,6 +609,9 @@ ObUpgradeProcesserSet::~ObUpgradeProcesserSet() processor_list_.at(i)->~ObBaseUpgradeProcessor(); } } + if (OB_NOT_NULL(all_version_upgrade_processor_)) { + all_version_upgrade_processor_->~ObBaseUpgradeProcessor(); + } } int ObUpgradeProcesserSet::init( @@ -624,22 +628,19 @@ int ObUpgradeProcesserSet::init( ret = OB_INIT_TWICE; LOG_WARN("init twice", KR(ret)); } else { -#define INIT_PROCESSOR_BY_VERSION(MAJOR, MINOR, MAJOR_PATCH, MINOR_PATCH) \ +#define INIT_PROCESSOR_BY_NAME_AND_VERSION(PROCESSOR_NAME, VERSION, processor) \ if (OB_SUCC(ret)) { \ void *buf = NULL; \ - ObBaseUpgradeProcessor *processor = NULL; \ - int64_t version = static_cast(cal_version((MAJOR), (MINOR), (MAJOR_PATCH), (MINOR_PATCH))); \ - if (OB_ISNULL(buf = allocator_.alloc(sizeof(ObUpgradeFor##MAJOR##MINOR##MAJOR_PATCH##MINOR_PATCH##Processor)))) { \ + int64_t version = VERSION; \ + if (OB_ISNULL(buf = allocator_.alloc(sizeof(PROCESSOR_NAME)))) { \ ret = OB_ALLOCATE_MEMORY_FAILED; \ LOG_WARN("fail to alloc upgrade processor", KR(ret)); \ - } else if (OB_ISNULL(processor = new(buf)ObUpgradeFor##MAJOR##MINOR##MAJOR_PATCH##MINOR_PATCH##Processor)) { \ + } else if (OB_ISNULL(processor = new(buf)PROCESSOR_NAME)) { \ ret = OB_NOT_INIT; \ LOG_WARN("fail to new upgrade processor", KR(ret)); \ } else if (OB_FAIL(processor->init(version, mode, sql_proxy, oracle_sql_proxy, rpc_proxy, common_proxy, \ schema_service, check_server_provider))) { \ LOG_WARN("fail to init processor", KR(ret), KDV(version)); \ - } else if (OB_FAIL(processor_list_.push_back(processor))) { \ - LOG_WARN("fail to push back processor", KR(ret), KDV(version)); \ } \ if (OB_FAIL(ret)) { \ if (OB_NOT_NULL(processor)) { \ @@ -654,6 +655,20 @@ int ObUpgradeProcesserSet::init( } \ } +#define INIT_PROCESSOR_BY_VERSION(MAJOR, MINOR, MAJOR_PATCH, MINOR_PATCH) \ + if (OB_SUCC(ret)) { \ + ObBaseUpgradeProcessor *processor = NULL; \ + int64_t data_version = cal_version(MAJOR, MINOR, MAJOR_PATCH, MINOR_PATCH); \ + INIT_PROCESSOR_BY_NAME_AND_VERSION(ObUpgradeFor##MAJOR##MINOR##MAJOR_PATCH##MINOR_PATCH##Processor, \ + data_version, processor); \ + if (FAILEDx(processor_list_.push_back(processor))) { \ + LOG_WARN("fail to push back processor", KR(ret), KDV(data_version)); \ + } \ + } + + INIT_PROCESSOR_BY_NAME_AND_VERSION(ObUpgradeForAllVersionProcessor, DATA_CURRENT_VERSION, + all_version_upgrade_processor_); + // order by data version asc INIT_PROCESSOR_BY_VERSION(4, 0, 0, 0); INIT_PROCESSOR_BY_VERSION(4, 1, 0, 0); @@ -676,6 +691,8 @@ int ObUpgradeProcesserSet::init( INIT_PROCESSOR_BY_VERSION(4, 3, 2, 1); INIT_PROCESSOR_BY_VERSION(4, 3, 3, 0); INIT_PROCESSOR_BY_VERSION(4, 3, 4, 0); + +#undef INIT_PROCESSOR_BY_NAME_AND_VERSION #undef INIT_PROCESSOR_BY_VERSION inited_ = true; } @@ -733,6 +750,21 @@ int ObUpgradeProcesserSet::get_processor_by_version( return ret; } +int ObUpgradeProcesserSet::get_all_version_processor(ObBaseUpgradeProcessor *&processor) const +{ + int ret = OB_SUCCESS; + if (OB_FAIL(check_inner_stat())) { + LOG_WARN("check inner stat failed", KR(ret)); + } else if (OB_ISNULL(all_version_upgrade_processor_)) { + ret = OB_ERR_UNEXPECTED; + LOG_WARN("processor is NULL", KR(ret), KP(all_version_upgrade_processor_)); + } else { + processor = all_version_upgrade_processor_; + processor->set_tenant_id(OB_INVALID_ID); // reset + } + return ret; +} + // run upgrade processor by (start_version, end_version] int ObUpgradeProcesserSet::get_processor_idx_by_range( const int64_t start_version, @@ -856,6 +888,54 @@ int ObBaseUpgradeProcessor::init( #undef FORMAT_STR /* =========== special upgrade processor start ============= */ +int ObUpgradeForAllVersionProcessor::post_upgrade() { + int ret = OB_SUCCESS; + if (OB_FAIL(check_inner_stat())) { + LOG_WARN("fail to check inner stat", KR(ret)); + } else if (OB_FAIL(flush_ncomp_dll_job())) { + LOG_WARN("fail to flush ncomp dll job", KR(ret)); + } + return ret; +} + +int ObUpgradeForAllVersionProcessor::flush_ncomp_dll_job() +{ + int ret = OB_SUCCESS; + + bool is_primary_tenant= false; + ObSchemaGetterGuard schema_guard; + const ObSysVariableSchema *sys_variable_schema = NULL; + if (OB_ISNULL(sql_proxy_) || OB_ISNULL(schema_service_) || !is_valid_tenant_id(tenant_id_)) { + ret = OB_ERR_UNEXPECTED; + LOG_WARN("unexpected error", KR(ret), KP(sql_proxy_), KP(schema_service_), K(tenant_id_)); + } else if (!is_user_tenant(tenant_id_)) { + LOG_INFO("not user tenant, ignore", K(tenant_id_)); + } else if (OB_FAIL(ObAllTenantInfoProxy::is_primary_tenant(sql_proxy_, tenant_id_, is_primary_tenant))) { + LOG_WARN("check is standby tenant failed", KR(ret), K(tenant_id_)); + } else if (!is_primary_tenant) { + LOG_INFO("not primary tenant, ignore", K(tenant_id_)); + } else if (OB_FAIL(schema_service_->get_tenant_schema_guard(tenant_id_, schema_guard))) { + LOG_WARN("failed to get tenant schema guard", KR(ret), K(tenant_id_)); + } else if (OB_FAIL(schema_guard.get_sys_variable_schema(tenant_id_, sys_variable_schema))) { + LOG_WARN("get sys variable schema failed", KR(ret), K(tenant_id_)); + } else if (OB_ISNULL(sys_variable_schema)) { + ret = OB_ERR_UNEXPECTED; + LOG_WARN("sys variable schema is null", KR(ret)); + } else { + START_TRANSACTION(sql_proxy_, tenant_id_); + if (FAILEDx(ObFlushNcompDll::create_flush_ncomp_dll_job( + *sys_variable_schema, + tenant_id_, + false/*is_enabled*/, + trans))) { // insert ignore + LOG_WARN("create flush ncomp dll job failed", KR(ret), K(tenant_id_)); + } + END_TRANSACTION(trans); + LOG_INFO("post upgrade for create flush ncomp dll finished", KR(ret), K(tenant_id_)); + } + + return ret; +} int ObUpgradeFor4100Processor::post_upgrade() { @@ -1541,6 +1621,58 @@ int ObUpgradeFor4330Processor::post_upgrade_for_optimizer_stats() return ret; } +int ObUpgradeFor4340Processor::post_upgrade() +{ + int ret = OB_SUCCESS; + if (OB_FAIL(check_inner_stat())) { + LOG_WARN("fail to check inner stat", KR(ret)); + } else if (OB_FAIL(post_upgrade_for_persitent_routine())) { + LOG_WARN("fail to create standby replication role in oracle", KR(ret)); + } + return ret; +} + +int ObUpgradeFor4340Processor::post_upgrade_for_persitent_routine() +{ + int ret = OB_SUCCESS; + + bool is_primary_tenant= false; + ObSchemaGetterGuard schema_guard; + const ObSysVariableSchema *sys_variable_schema = NULL; + if (OB_ISNULL(sql_proxy_) || OB_ISNULL(schema_service_) || !is_valid_tenant_id(tenant_id_)) { + ret = OB_ERR_UNEXPECTED; + LOG_WARN("unexpected error", KR(ret), KP(sql_proxy_), KP(schema_service_), K(tenant_id_)); + } else if (!is_user_tenant(tenant_id_)) { + LOG_INFO("not user tenant, ignore", K(tenant_id_)); + } else if (OB_FAIL(ObAllTenantInfoProxy::is_primary_tenant(sql_proxy_, tenant_id_, is_primary_tenant))) { + LOG_WARN("check is standby tenant failed", KR(ret), K(tenant_id_)); + } else if (!is_primary_tenant) { + LOG_INFO("not primary tenant, ignore", K(tenant_id_)); + } else if (OB_FAIL(schema_service_->get_tenant_schema_guard(tenant_id_, schema_guard))) { + LOG_WARN("failed to get tenant schema guard", KR(ret), K(tenant_id_)); + } else if (OB_FAIL(schema_guard.get_sys_variable_schema(tenant_id_, sys_variable_schema))) { + LOG_WARN("get sys variable schema failed", KR(ret), K(tenant_id_)); + } else if (OB_ISNULL(sys_variable_schema)) { + ret = OB_ERR_UNEXPECTED; + LOG_WARN("sys variable schema is null", KR(ret)); + } else { + START_TRANSACTION(sql_proxy_, tenant_id_); + if (FAILEDx(ObFlushNcompDll::create_flush_ncomp_dll_job_for_425( + *sys_variable_schema, + tenant_id_, + false/*is_enabled*/, + trans))) { // insert ignore + LOG_WARN("create flush ncomp dll job failed", KR(ret), K(tenant_id_)); + } + END_TRANSACTION(trans); + LOG_INFO("post upgrade for create flush ncomp dll finished", KR(ret), K(tenant_id_)); + } + + return ret; +} + +/* =========== 4250 upgrade processor end ============= */ + /* =========== 4330 upgrade processor end ============= */ } // end share diff --git a/src/share/ob_upgrade_utils.h b/src/share/ob_upgrade_utils.h index e69f44b7a..57083c957 100755 --- a/src/share/ob_upgrade_utils.h +++ b/src/share/ob_upgrade_utils.h @@ -136,6 +136,7 @@ public: const int64_t end_version, int64_t &start_idx, int64_t &end_idx); + int get_all_version_processor(ObBaseUpgradeProcessor *&processor) const; private: virtual int check_inner_stat() const; int get_processor_idx_by_version( @@ -145,6 +146,7 @@ private: bool inited_; common::ObArenaAllocator allocator_; common::ObArray processor_list_; + ObBaseUpgradeProcessor *all_version_upgrade_processor_; DISALLOW_COPY_AND_ASSIGN(ObUpgradeProcesserSet); }; @@ -179,6 +181,17 @@ public: }; /* =========== special upgrade processor start ============= */ +class ObUpgradeForAllVersionProcessor : public ObBaseUpgradeProcessor +{ +public: + ObUpgradeForAllVersionProcessor() : ObBaseUpgradeProcessor() {} + virtual ~ObUpgradeForAllVersionProcessor() {} + virtual int pre_upgrade() override { return common::OB_SUCCESS; } + virtual int post_upgrade() override; +private: + int flush_ncomp_dll_job(); +}; + DEF_SIMPLE_UPGRARD_PROCESSER(4, 0, 0, 0) class ObUpgradeFor4100Processor : public ObBaseUpgradeProcessor @@ -274,7 +287,16 @@ private: int post_upgrade_for_optimizer_stats(); }; -DEF_SIMPLE_UPGRARD_PROCESSER(4, 3, 4, 0) +class ObUpgradeFor4340Processor : public ObBaseUpgradeProcessor +{ +public: + ObUpgradeFor4340Processor() : ObBaseUpgradeProcessor() {} + virtual ~ObUpgradeFor4340Processor() {} + virtual int pre_upgrade() override { return common::OB_SUCCESS; } + virtual int post_upgrade() override; +private: + int post_upgrade_for_persitent_routine(); +}; /* =========== special upgrade processor end ============= */ diff --git a/src/share/stat/ob_dbms_stats_maintenance_window.h b/src/share/stat/ob_dbms_stats_maintenance_window.h index 62f34eaa7..8753ca57f 100644 --- a/src/share/stat/ob_dbms_stats_maintenance_window.h +++ b/src/share/stat/ob_dbms_stats_maintenance_window.h @@ -61,6 +61,9 @@ public: static int get_async_gather_stats_job_for_upgrade(common::ObMySQLProxy *sql_proxy, const uint64_t tenant_id, ObSqlString &sql); + static int get_time_zone_offset(const share::schema::ObSysVariableSchema &sys_variable, + const uint64_t tenant_id, + int32_t &offset_sec); private: static int get_window_job_info(const int64_t current_time, @@ -90,9 +93,6 @@ private: static bool is_work_day(int64_t now_wday) { return now_wday >= 1 && now_wday <= MAX_OF_WORK_DAY; } - static int get_time_zone_offset(const share::schema::ObSysVariableSchema &sys_variable, - const uint64_t tenant_id, - int32_t &offset_sec); static int check_date_validate(const ObString &job_name, const int64_t specify_time, const int64_t current_time, diff --git a/tools/deploy/mysql_test/r/mysql/information_schema.result b/tools/deploy/mysql_test/r/mysql/information_schema.result index d912cd980..c84262e9d 100644 --- a/tools/deploy/mysql_test/r/mysql/information_schema.result +++ b/tools/deploy/mysql_test/r/mysql/information_schema.result @@ -633,6 +633,7 @@ select * from information_schema.tables where table_schema in ('oceanbase', 'mys | def | oceanbase | __all_mview_refresh_stats_sys_defaults | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | | def | oceanbase | __all_mview_refresh_stmt_stats | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | | def | oceanbase | __all_ncomp_dll | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | +| def | oceanbase | __all_ncomp_dll_v2 | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | | def | oceanbase | __all_optstat_global_prefs | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | | def | oceanbase | __all_optstat_user_prefs | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | | def | oceanbase | __all_ori_schema_version | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | @@ -1277,6 +1278,11 @@ select * from information_schema.statistics where table_schema in ('oceanbase', | def | oceanbase | __all_ncomp_dll | 0 | oceanbase | PRIMARY | 2 | key_id | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_ncomp_dll | 0 | oceanbase | PRIMARY | 3 | compile_db_id | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_ncomp_dll | 0 | oceanbase | PRIMARY | 4 | arch_type | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | +| def | oceanbase | __all_ncomp_dll_v2 | 0 | oceanbase | PRIMARY | 1 | database_id | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | +| def | oceanbase | __all_ncomp_dll_v2 | 0 | oceanbase | PRIMARY | 2 | key_id | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | +| def | oceanbase | __all_ncomp_dll_v2 | 0 | oceanbase | PRIMARY | 3 | compile_db_id | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | +| def | oceanbase | __all_ncomp_dll_v2 | 0 | oceanbase | PRIMARY | 4 | arch_type | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | +| def | oceanbase | __all_ncomp_dll_v2 | 0 | oceanbase | PRIMARY | 5 | build_version | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_optstat_global_prefs | 0 | oceanbase | PRIMARY | 1 | sname | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_optstat_user_prefs | 0 | oceanbase | PRIMARY | 1 | tenant_id | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_optstat_user_prefs | 0 | oceanbase | PRIMARY | 2 | table_id | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | @@ -2210,6 +2216,7 @@ select * from information_schema.tables where table_schema in ('oceanbase', 'mys | def | oceanbase | __all_mview_refresh_stats_sys_defaults | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | | def | oceanbase | __all_mview_refresh_stmt_stats | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | | def | oceanbase | __all_ncomp_dll | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | +| def | oceanbase | __all_ncomp_dll_v2 | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | | def | oceanbase | __all_optstat_global_prefs | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | | def | oceanbase | __all_optstat_user_prefs | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | | def | oceanbase | __all_ori_schema_version | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | @@ -3060,6 +3067,11 @@ select * from information_schema.statistics where table_schema in ('oceanbase', | def | oceanbase | __all_ncomp_dll | 0 | oceanbase | PRIMARY | 2 | key_id | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_ncomp_dll | 0 | oceanbase | PRIMARY | 3 | compile_db_id | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_ncomp_dll | 0 | oceanbase | PRIMARY | 4 | arch_type | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | +| def | oceanbase | __all_ncomp_dll_v2 | 0 | oceanbase | PRIMARY | 1 | database_id | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | +| def | oceanbase | __all_ncomp_dll_v2 | 0 | oceanbase | PRIMARY | 2 | key_id | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | +| def | oceanbase | __all_ncomp_dll_v2 | 0 | oceanbase | PRIMARY | 3 | compile_db_id | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | +| def | oceanbase | __all_ncomp_dll_v2 | 0 | oceanbase | PRIMARY | 4 | arch_type | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | +| def | oceanbase | __all_ncomp_dll_v2 | 0 | oceanbase | PRIMARY | 5 | build_version | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_optstat_global_prefs | 0 | oceanbase | PRIMARY | 1 | sname | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_optstat_user_prefs | 0 | oceanbase | PRIMARY | 1 | tenant_id | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_optstat_user_prefs | 0 | oceanbase | PRIMARY | 2 | table_id | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | @@ -3968,6 +3980,11 @@ select * from information_schema.statistics where table_schema in ('oceanbase', | def | oceanbase | __all_ncomp_dll | 0 | oceanbase | PRIMARY | 2 | key_id | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_ncomp_dll | 0 | oceanbase | PRIMARY | 3 | compile_db_id | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_ncomp_dll | 0 | oceanbase | PRIMARY | 4 | arch_type | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | +| def | oceanbase | __all_ncomp_dll_v2 | 0 | oceanbase | PRIMARY | 1 | database_id | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | +| def | oceanbase | __all_ncomp_dll_v2 | 0 | oceanbase | PRIMARY | 2 | key_id | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | +| def | oceanbase | __all_ncomp_dll_v2 | 0 | oceanbase | PRIMARY | 3 | compile_db_id | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | +| def | oceanbase | __all_ncomp_dll_v2 | 0 | oceanbase | PRIMARY | 4 | arch_type | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | +| def | oceanbase | __all_ncomp_dll_v2 | 0 | oceanbase | PRIMARY | 5 | build_version | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_optstat_global_prefs | 0 | oceanbase | PRIMARY | 1 | sname | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_optstat_user_prefs | 0 | oceanbase | PRIMARY | 1 | tenant_id | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_optstat_user_prefs | 0 | oceanbase | PRIMARY | 2 | table_id | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | diff --git a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_sys.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_sys.result index bf737e7f4..a8cf4ee56 100644 --- a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_sys.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_sys.result @@ -10069,3 +10069,18 @@ IF(count(*) >= 0, 1, 0) "oceanbase.__all_virtual_temp_file runs in single server" IF(count(*) >= 0, 1, 0) 1 +desc oceanbase.__all_virtual_ncomp_dll_v2; +Field Type Null Key Default Extra +tenant_id bigint(20) NO PRI NULL +database_id bigint(20) NO PRI NULL +key_id bigint(20) NO PRI NULL +compile_db_id bigint(20) NO PRI NULL +arch_type varchar(128) NO PRI NULL +build_version varchar(256) NO PRI NULL +gmt_create timestamp(6) NO NULL +gmt_modified timestamp(6) NO NULL +merge_version bigint(20) NO NULL +dll longblob NO NULL +select /*+QUERY_TIMEOUT(60000000)*/ IF(count(*) >= 0, 1, 0) from oceanbase.__all_virtual_ncomp_dll_v2; +IF(count(*) >= 0, 1, 0) +1 diff --git a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/inner_table_overall.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/inner_table_overall.result index b6c4431a7..3dcdd2bca 100644 --- a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/inner_table_overall.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/inner_table_overall.result @@ -308,6 +308,7 @@ select 0xffffffffff & table_id, table_name, table_type, database_id, part_num fr 517 __all_storage_io_usage 0 201001 1 518 __all_mview_dep 0 201001 1 519 __all_scheduler_job_run_detail_v2 0 201001 1 +528 __all_ncomp_dll_v2 0 201001 1 10001 __tenant_virtual_all_table 2 201001 1 10002 __tenant_virtual_table_column 2 201001 1 10003 __tenant_virtual_table_index 2 201001 1 @@ -782,6 +783,7 @@ select 0xffffffffff & table_id, table_name, table_type, database_id, part_num fr 12500 __all_virtual_kv_client_info 2 201001 1 12504 __all_virtual_function_io_stat 2 201001 1 12505 __all_virtual_temp_file 2 201001 1 +12506 __all_virtual_ncomp_dll_v2 2 201001 1 20001 GV$OB_PLAN_CACHE_STAT 1 201001 1 20002 GV$OB_PLAN_CACHE_PLAN_STAT 1 201001 1 20003 SCHEMATA 1 201002 1