diff --git a/src/observer/CMakeLists.txt b/src/observer/CMakeLists.txt index 10a6768f7..609c6ca61 100644 --- a/src/observer/CMakeLists.txt +++ b/src/observer/CMakeLists.txt @@ -381,6 +381,7 @@ ob_set_subtarget(ob_server virtual_table virtual_table/ob_all_virtual_table_mgr.cpp virtual_table/ob_all_virtual_unit.cpp virtual_table/ob_all_virtual_tablet_ddl_kv_info.cpp + virtual_table/ob_all_virtual_ddl_diagnose_info.cpp virtual_table/ob_all_virtual_ddl_sim_point_stat.cpp virtual_table/ob_all_virtual_tablet_info.cpp virtual_table/ob_all_virtual_server.cpp diff --git a/src/observer/virtual_table/ob_all_virtual_ddl_diagnose_info.cpp b/src/observer/virtual_table/ob_all_virtual_ddl_diagnose_info.cpp new file mode 100644 index 000000000..baae4ff1f --- /dev/null +++ b/src/observer/virtual_table/ob_all_virtual_ddl_diagnose_info.cpp @@ -0,0 +1,57 @@ +/** + * Copyright (c) 2021 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 STORAGE + +#include "ob_all_virtual_ddl_diagnose_info.h" +#include "lib/mysqlclient/ob_mysql_result.h" +#include "lib/mysqlclient/ob_mysql_proxy.h" +#include "share/ob_ddl_common.h" +#include "share/inner_table/ob_inner_table_schema_constants.h" +#include "share/ob_ddl_sim_point_define.h" +#include "deps/oblib/src/lib/string/ob_string.h" +#include "deps/oblib/src/lib/utility/ob_macro_utils.h" +#include "deps/oblib/src/lib/alloc/alloc_assist.h" + +namespace oceanbase +{ +using namespace storage; +using namespace common; +using namespace share; + +namespace observer +{ +int ObAllVirtualDDLDiagnoseInfo::init() +{ + int ret = OB_SUCCESS; + if (IS_INIT) { + ret = OB_INIT_TWICE; + SERVER_LOG(WARN, "ObAllVirtualDDLDiagnoseInfo has been inited", K(ret)); + } else { + is_inited_ = true; + } + return ret; +} + +int ObAllVirtualDDLDiagnoseInfo::inner_get_next_row(ObNewRow *&row) +{ + int ret = OB_SUCCESS; + if (!is_inited_) { + ret = OB_NOT_INIT; + SERVER_LOG(WARN, "ObAllVirtualDDLDiagnoseInfo has not been inited", K(ret)); + } else { + ret = OB_ITER_END; + } + return ret; +} +}// observer +}// oceanbase \ No newline at end of file diff --git a/src/observer/virtual_table/ob_all_virtual_ddl_diagnose_info.h b/src/observer/virtual_table/ob_all_virtual_ddl_diagnose_info.h new file mode 100644 index 000000000..0d74390fd --- /dev/null +++ b/src/observer/virtual_table/ob_all_virtual_ddl_diagnose_info.h @@ -0,0 +1,55 @@ +/** + * Copyright (c) 2021 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 OB_ALL_VIRTUAL_DDL_DIAGNOSE_INFO_H_ +#define OB_ALL_VIRTUAL_DDL_DIAGNOSE_INFO_H_ + +#include "lib/ob_define.h" +#include "lib/container/ob_array.h" +#include "observer/omt/ob_multi_tenant_operator.h" +#include "share/ob_virtual_table_scanner_iterator.h" +#include "share/ob_ddl_common.h" +#include "storage/ob_i_store.h" +#include "deps/oblib/src/lib/utility/ob_print_utils.h" +#include "observer/virtual_table/ob_all_virtual_diag_index_scan.h" + +namespace oceanbase +{ +namespace observer +{ +class ObAllVirtualDDLDiagnoseInfo : public common::ObVirtualTableScannerIterator +{ +public: + ObAllVirtualDDLDiagnoseInfo() + : is_inited_(false) + {} + virtual ~ObAllVirtualDDLDiagnoseInfo() = default; + int init(); + virtual int inner_get_next_row(common::ObNewRow *&row) override; +private: + DISALLOW_COPY_AND_ASSIGN(ObAllVirtualDDLDiagnoseInfo); + bool is_inited_; +}; + +class ObAllVirtualDDLDiagnoseInfoI1 : public ObAllVirtualDDLDiagnoseInfo, public ObAllVirtualDiagIndexScan +{ +public: + ObAllVirtualDDLDiagnoseInfoI1() = default; + virtual ~ObAllVirtualDDLDiagnoseInfoI1() = default; +private: + DISALLOW_COPY_AND_ASSIGN(ObAllVirtualDDLDiagnoseInfoI1); +}; + +} // end namespace observer +} // end namespace oceanbase + +#endif // OB_ALL_VIRTUAL_DDL_DIAGNOSE_INFO_H_ diff --git a/src/observer/virtual_table/ob_virtual_table_iterator_factory.cpp b/src/observer/virtual_table/ob_virtual_table_iterator_factory.cpp index 36102ecad..193f230e7 100644 --- a/src/observer/virtual_table/ob_virtual_table_iterator_factory.cpp +++ b/src/observer/virtual_table/ob_virtual_table_iterator_factory.cpp @@ -244,6 +244,7 @@ #include "observer/virtual_table/ob_all_virtual_log_transport_dest_stat.h" #include "observer/virtual_table/ob_all_virtual_kv_client_info.h" #include "observer/virtual_table/ob_all_virtual_kv_group_commit_info.h" +#include "observer/virtual_table/ob_all_virtual_ddl_diagnose_info.h" namespace oceanbase { @@ -2462,6 +2463,28 @@ int ObVTIterCreator::create_vt_iter(ObVTableScanParam ¶ms, } break; } + case OB_ALL_VIRTUAL_DDL_DIAGNOSE_INFO_TID: { + ObAllVirtualDDLDiagnoseInfo *ddl_diagnose_info = nullptr; + bool is_index = false; + if (OB_FAIL(check_is_index(*index_schema, "i1", is_index))) { + LOG_WARN("check is index failed", K(ret)); + } else if (is_index) { + if (OB_FAIL(NEW_VIRTUAL_TABLE(ObAllVirtualDDLDiagnoseInfoI1, ddl_diagnose_info))) { + LOG_WARN("new virtual table failed", K(ret)); + } + } else { + OZ(NEW_VIRTUAL_TABLE(ObAllVirtualDDLDiagnoseInfo, ddl_diagnose_info)); + } + + if (OB_SUCC(ret)) { + if (OB_FAIL(ddl_diagnose_info->init())) { + SERVER_LOG(WARN, "fail to init ddl diagnose info iterator, ", K(ret)); + } else { + vt_iter = static_cast(ddl_diagnose_info); + } + } + break; + } case OB_ALL_VIRTUAL_TABLET_COMPACTION_INFO_TID: { ObAllVirtualTabletCompactionInfo *info_mgr = NULL; if (OB_SUCC(NEW_VIRTUAL_TABLE(ObAllVirtualTabletCompactionInfo, info_mgr))) { 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 6fdb33aa9..7f95fb8d3 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 @@ -2040,6 +2040,325 @@ int ObInnerTableSchema::all_virtual_ncomp_dll_v2_schema(ObTableSchema &table_sch return ret; } +int ObInnerTableSchema::all_virtual_ddl_diagnose_info_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_DDL_DIAGNOSE_INFO_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(0); + 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_DDL_DIAGNOSE_INFO_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 + 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("ddl_task_id", //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("object_table_id", //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("opname", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObVarcharType, //column_type + CS_TYPE_INVALID, //column_collation_type + OB_MAX_DDL_ID_STR_LENGTH, //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA_TS("create_time", //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("finish_time", //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("diagnose_info", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObVarcharType, //column_type + CS_TYPE_INVALID, //column_collation_type + OB_DIAGNOSE_INFO_LENGTH, //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + table_schema.set_index_using_type(USING_HASH); + 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; +} + +int ObInnerTableSchema::all_virtual_ddl_diagnose_info_all_virtual_ddl_diagnose_info_i1_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_DDL_DIAGNOSE_INFO_ALL_VIRTUAL_DDL_DIAGNOSE_INFO_I1_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(0); + table_schema.set_load_type(TABLE_LOAD_TYPE_IN_DISK); + table_schema.set_table_type(USER_INDEX); + table_schema.set_index_type(INDEX_TYPE_NORMAL_LOCAL); + table_schema.set_def_type(TABLE_DEF_TYPE_INTERNAL); + + if (OB_SUCC(ret)) { + if (OB_FAIL(table_schema.set_table_name(OB_ALL_VIRTUAL_DDL_DIAGNOSE_INFO_ALL_VIRTUAL_DDL_DIAGNOSE_INFO_I1_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())); + table_schema.set_index_using_type(USING_HASH); + 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); + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("ddl_task_id", //column_name + column_id + 2, //column_id + 1, //rowkey_id + 1, //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 + } + table_schema.set_index_status(INDEX_STATUS_AVAILABLE); + table_schema.set_index_type(INDEX_TYPE_NORMAL_LOCAL); + table_schema.set_data_table_id(OB_ALL_VIRTUAL_DDL_DIAGNOSE_INFO_TID); + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA_WITH_COLUMN_FLAGS("tenant_id", //column_name + column_id + 1, //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 + false,//is_hidden + true);//is_storing_column + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA_WITH_COLUMN_FLAGS("object_table_id", //column_name + column_id + 3, //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 + false,//is_hidden + true);//is_storing_column + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA_WITH_COLUMN_FLAGS("opname", //column_name + column_id + 4, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObVarcharType, //column_type + CS_TYPE_INVALID, //column_collation_type + OB_MAX_DDL_ID_STR_LENGTH, //column_length + -1, //column_precision + -1, //column_scale + false,//is_nullable + false,//is_autoincrement + false,//is_hidden + true);//is_storing_column + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA_TS_WITH_COLUMN_FLAGS("create_time", //column_name + column_id + 5, //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 + false, //is_hidden + true);//is_storing_column + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA_TS_WITH_COLUMN_FLAGS("finish_time", //column_name + column_id + 6, //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 + false, //is_hidden + true);//is_storing_column + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA_WITH_COLUMN_FLAGS("diagnose_info", //column_name + column_id + 7, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObVarcharType, //column_type + CS_TYPE_INVALID, //column_collation_type + OB_DIAGNOSE_INFO_LENGTH, //column_length + -1, //column_precision + -1, //column_scale + false,//is_nullable + false,//is_autoincrement + false,//is_hidden + true);//is_storing_column + } + + table_schema.set_max_used_column_id(column_id + 7); + 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 37ea30bb0..0d1e05878 100644 --- a/src/share/inner_table/ob_inner_table_schema.h +++ b/src/share/inner_table/ob_inner_table_schema.h @@ -1137,6 +1137,7 @@ public: 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_ddl_diagnose_info_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); @@ -3106,6 +3107,7 @@ public: static int all_pkg_coll_type_aux_lob_piece_schema(share::schema::ObTableSchema &table_schema); static int wr_sql_plan_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_ddl_diagnose_info_all_virtual_ddl_diagnose_info_i1_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); @@ -4147,6 +4149,8 @@ const schema_create_func virtual_table_schema_creators [] = { ObInnerTableSchema::all_virtual_function_io_stat_schema, ObInnerTableSchema::all_virtual_temp_file_schema, ObInnerTableSchema::all_virtual_ncomp_dll_v2_schema, + ObInnerTableSchema::all_virtual_ddl_diagnose_info_schema, + ObInnerTableSchema::all_virtual_ddl_diagnose_info_all_virtual_ddl_diagnose_info_i1_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, @@ -6266,6 +6270,8 @@ const uint64_t tenant_space_tables [] = { OB_ALL_VIRTUAL_WR_SQL_PLAN_TID, OB_ALL_VIRTUAL_FUNCTION_IO_STAT_TID, OB_ALL_VIRTUAL_TEMP_FILE_TID, + OB_ALL_VIRTUAL_DDL_DIAGNOSE_INFO_TID, + OB_ALL_VIRTUAL_DDL_DIAGNOSE_INFO_ALL_VIRTUAL_DDL_DIAGNOSE_INFO_I1_TID, OB_ALL_VIRTUAL_SQL_AUDIT_ORA_TID, OB_ALL_VIRTUAL_SQL_AUDIT_ORA_ALL_VIRTUAL_SQL_AUDIT_I1_TID, OB_ALL_VIRTUAL_PLAN_STAT_ORA_TID, @@ -9148,6 +9154,8 @@ const char* const tenant_space_table_names [] = { OB_ALL_VIRTUAL_WR_SQL_PLAN_TNAME, OB_ALL_VIRTUAL_FUNCTION_IO_STAT_TNAME, OB_ALL_VIRTUAL_TEMP_FILE_TNAME, + OB_ALL_VIRTUAL_DDL_DIAGNOSE_INFO_TNAME, + OB_ALL_VIRTUAL_DDL_DIAGNOSE_INFO_ALL_VIRTUAL_DDL_DIAGNOSE_INFO_I1_TNAME, OB_ALL_VIRTUAL_SQL_AUDIT_ORA_TNAME, OB_ALL_VIRTUAL_SQL_AUDIT_ORA_ALL_VIRTUAL_SQL_AUDIT_I1_TNAME, OB_ALL_VIRTUAL_PLAN_STAT_ORA_TNAME, @@ -11135,6 +11143,8 @@ const uint64_t only_rs_vtables [] = { OB_ALL_VIRTUAL_UPGRADE_INSPECTION_TID, OB_ALL_VIRTUAL_LONG_OPS_STATUS_TID, OB_ALL_VIRTUAL_LS_REPLICA_TASK_PLAN_TID, + OB_ALL_VIRTUAL_DDL_DIAGNOSE_INFO_TID, + OB_ALL_VIRTUAL_DDL_DIAGNOSE_INFO_ALL_VIRTUAL_DDL_DIAGNOSE_INFO_I1_TID, OB_ALL_VIRTUAL_LS_REPLICA_TASK_PLAN_ORA_TID, }; const uint64_t cluster_distributed_vtables [] = { @@ -14265,11 +14275,11 @@ 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 = 315; -const int64_t OB_VIRTUAL_TABLE_COUNT = 890; +const int64_t OB_VIRTUAL_TABLE_COUNT = 892; const int64_t OB_SYS_VIEW_COUNT = 1030; -const int64_t OB_SYS_TENANT_TABLE_COUNT = 2240; +const int64_t OB_SYS_TENANT_TABLE_COUNT = 2242; const int64_t OB_CORE_SCHEMA_VERSION = 1; -const int64_t OB_BOOTSTRAP_SCHEMA_VERSION = 2243; +const int64_t OB_BOOTSTRAP_SCHEMA_VERSION = 2245; } // end namespace share } // end namespace oceanbase 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 df379c862..1022d3390 100644 --- a/src/share/inner_table/ob_inner_table_schema_constants.h +++ b/src/share/inner_table/ob_inner_table_schema_constants.h @@ -833,6 +833,7 @@ const uint64_t OB_ALL_VIRTUAL_WR_SQL_PLAN_TID = 12501; // "__all_virtual_wr_sql_ 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_DDL_DIAGNOSE_INFO_TID = 12514; // "__all_virtual_ddl_diagnose_info" 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" @@ -2812,6 +2813,7 @@ const uint64_t OB_ALL_VIRTUAL_SYSSTAT_ALL_VIRTUAL_SYSSTAT_I1_TID = 14993; // "__ const uint64_t OB_ALL_VIRTUAL_SQL_AUDIT_ALL_VIRTUAL_SQL_AUDIT_I1_TID = 14992; // "__all_virtual_sql_audit" const uint64_t OB_ALL_VIRTUAL_SQL_PLAN_MONITOR_ALL_VIRTUAL_SQL_PLAN_MONITOR_I1_TID = 14991; // "__all_virtual_sql_plan_monitor" const uint64_t OB_ALL_VIRTUAL_ASH_ALL_VIRTUAL_ASH_I1_TID = 14990; // "__all_virtual_ash" +const uint64_t OB_ALL_VIRTUAL_DDL_DIAGNOSE_INFO_ALL_VIRTUAL_DDL_DIAGNOSE_INFO_I1_TID = 14989; // "__all_virtual_ddl_diagnose_info" const uint64_t OB_ALL_VIRTUAL_SQL_AUDIT_ORA_ALL_VIRTUAL_SQL_AUDIT_I1_TID = 19999; // "ALL_VIRTUAL_SQL_AUDIT_ORA" const uint64_t OB_ALL_VIRTUAL_PLAN_CACHE_STAT_ORA_ALL_VIRTUAL_PLAN_CACHE_STAT_I1_TID = 19998; // "ALL_VIRTUAL_PLAN_CACHE_STAT_ORA" const uint64_t OB_ALL_VIRTUAL_SESSION_WAIT_ORA_ALL_VIRTUAL_SESSION_WAIT_I1_TID = 19997; // "ALL_VIRTUAL_SESSION_WAIT_ORA" @@ -3827,6 +3829,7 @@ const char *const OB_ALL_VIRTUAL_WR_SQL_PLAN_TNAME = "__all_virtual_wr_sql_plan" 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_DDL_DIAGNOSE_INFO_TNAME = "__all_virtual_ddl_diagnose_info"; 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"; @@ -5806,6 +5809,7 @@ const char *const OB_ALL_VIRTUAL_SYSSTAT_ALL_VIRTUAL_SYSSTAT_I1_TNAME = "__idx_1 const char *const OB_ALL_VIRTUAL_SQL_AUDIT_ALL_VIRTUAL_SQL_AUDIT_I1_TNAME = "__idx_11031_all_virtual_sql_audit_i1"; const char *const OB_ALL_VIRTUAL_SQL_PLAN_MONITOR_ALL_VIRTUAL_SQL_PLAN_MONITOR_I1_TNAME = "__idx_12185_all_virtual_sql_plan_monitor_i1"; const char *const OB_ALL_VIRTUAL_ASH_ALL_VIRTUAL_ASH_I1_TNAME = "__idx_12302_all_virtual_ash_i1"; +const char *const OB_ALL_VIRTUAL_DDL_DIAGNOSE_INFO_ALL_VIRTUAL_DDL_DIAGNOSE_INFO_I1_TNAME = "__idx_12514_all_virtual_ddl_diagnose_info_i1"; const char *const OB_ALL_VIRTUAL_SQL_AUDIT_ORA_ALL_VIRTUAL_SQL_AUDIT_I1_TNAME = "__idx_15009_all_virtual_sql_audit_i1"; const char *const OB_ALL_VIRTUAL_PLAN_CACHE_STAT_ORA_ALL_VIRTUAL_PLAN_CACHE_STAT_I1_TNAME = "__idx_15034_all_virtual_plan_cache_stat_i1"; const char *const OB_ALL_VIRTUAL_SESSION_WAIT_ORA_ALL_VIRTUAL_SESSION_WAIT_I1_TNAME = "__idx_15036_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 c068bf40c..0a3d2e3cb 100755 --- a/src/share/inner_table/ob_inner_table_schema_def.py +++ b/src/share/inner_table/ob_inner_table_schema_def.py @@ -15737,7 +15737,29 @@ def_table_schema(**gen_iterate_virtual_table_def( # 12511: __all_virtual_wr_sql_plan_aux_key2snapshot # 12512: __all_virtual_tablet_mds_info # 12513: __all_virtual_cs_replica_tablet_stats -# 12514: __all_virtual_ddl_diagnose_info + +def_table_schema( + owner = 'buming.lj', + table_name = '__all_virtual_ddl_diagnose_info', + table_id = '12514', + table_type = 'VIRTUAL_TABLE', + in_tenant_space = True, + gm_columns = [], + rowkey_columns = [], + normal_columns = [ + ('tenant_id', 'int'), + ('ddl_task_id','int'), + ('object_table_id','int'), + ('opname', 'varchar:OB_MAX_DDL_ID_STR_LENGTH'), + ('create_time', 'timestamp'), + ('finish_time', 'timestamp'), + ('diagnose_info', 'varchar:OB_DIAGNOSE_INFO_LENGTH'), + ], + vtable_route_policy = 'only_rs', + index = {'all_virtual_ddl_diagnose_info_i1' : { 'index_columns' : ['ddl_task_id'], + 'index_using_type' : 'USING_HASH'}}, +) + # 12515: __all_virtual_plugin_info # 余留位置(此行之前占位) diff --git a/src/share/inner_table/table_id_to_name b/src/share/inner_table/table_id_to_name index b7b786e0f..b05ded14e 100644 --- a/src/share/inner_table/table_id_to_name +++ b/src/share/inner_table/table_id_to_name @@ -1195,6 +1195,7 @@ # 12505: __all_virtual_temp_file # 12506: __all_virtual_ncomp_dll_v2 # 12506: __all_ncomp_dll_v2 # BASE_TABLE_NAME +# 12514: __all_virtual_ddl_diagnose_info # 15009: ALL_VIRTUAL_SQL_AUDIT # 15009: __all_virtual_sql_audit # BASE_TABLE_NAME # 15010: ALL_VIRTUAL_PLAN_STAT @@ -2927,6 +2928,9 @@ # 14990: __idx_12302_all_virtual_ash_i1 # 14990: all_virtual_ash_i1 # INDEX_NAME # 14990: __all_virtual_ash # DATA_BASE_TABLE_NAME +# 14989: __idx_12514_all_virtual_ddl_diagnose_info_i1 +# 14989: all_virtual_ddl_diagnose_info_i1 # INDEX_NAME +# 14989: __all_virtual_ddl_diagnose_info # DATA_BASE_TABLE_NAME # 19999: __idx_15009_all_virtual_sql_audit_i1 # 19999: all_virtual_sql_audit_i1 # INDEX_NAME # 19999: __all_virtual_sql_audit # DATA_BASE_TABLE_NAME diff --git a/tools/deploy/mysql_test/r/mysql/create_using_type.result b/tools/deploy/mysql_test/r/mysql/create_using_type.result index 04131e6b7..b8e70f933 100644 --- a/tools/deploy/mysql_test/r/mysql/create_using_type.result +++ b/tools/deploy/mysql_test/r/mysql/create_using_type.result @@ -22,4 +22,5 @@ __idx_11015_all_virtual_session_wait_history_i1 __all_virtual_session_wait_histo __idx_11017_all_virtual_system_event_i1 __all_virtual_system_event 1 __idx_11020_all_virtual_sesstat_i1 __all_virtual_sesstat 1 __idx_11021_all_virtual_sysstat_i1 __all_virtual_sysstat 1 +__idx_12514_all_virtual_ddl_diagnose_info_i1 __all_virtual_ddl_diagnose_info 1 drop database hualong; diff --git a/tools/deploy/mysql_test/r/mysql/information_schema.result b/tools/deploy/mysql_test/r/mysql/information_schema.result index 3238071bb..593d15f4d 100644 --- a/tools/deploy/mysql_test/r/mysql/information_schema.result +++ b/tools/deploy/mysql_test/r/mysql/information_schema.result @@ -821,6 +821,7 @@ select * from information_schema.tables where table_schema in ('oceanbase', 'mys | def | oceanbase | __all_virtual_core_meta_table | SYSTEM TABLE | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | | def | oceanbase | __all_virtual_data_type | SYSTEM TABLE | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | | def | oceanbase | __all_virtual_data_type_class | SYSTEM TABLE | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | +| def | oceanbase | __all_virtual_ddl_diagnose_info | SYSTEM TABLE | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | | def | oceanbase | __all_virtual_deadlock_event_history | SYSTEM TABLE | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | | def | oceanbase | __all_virtual_detect_lock_info | SYSTEM TABLE | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | | def | oceanbase | __all_virtual_dml_stats | SYSTEM TABLE | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | @@ -2457,6 +2458,7 @@ select * from information_schema.tables where table_schema in ('oceanbase', 'mys | def | oceanbase | __all_virtual_core_meta_table | SYSTEM TABLE | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | | def | oceanbase | __all_virtual_data_type | SYSTEM TABLE | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | | def | oceanbase | __all_virtual_data_type_class | SYSTEM TABLE | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | +| def | oceanbase | __all_virtual_ddl_diagnose_info | SYSTEM TABLE | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | | def | oceanbase | __all_virtual_deadlock_event_history | SYSTEM TABLE | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | | def | oceanbase | __all_virtual_detect_lock_info | SYSTEM TABLE | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | | def | oceanbase | __all_virtual_dml_stats | SYSTEM TABLE | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | 0 | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | FALSE | 0 | diff --git a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_mysql.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_mysql.result index 2780d96ca..ceb33022c 100644 --- a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_mysql.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_mysql.result @@ -5641,3 +5641,15 @@ IF(count(*) >= 0, 1, 0) "oceanbase.__all_virtual_temp_file runs in single server" IF(count(*) >= 0, 1, 0) 1 +desc oceanbase.__all_virtual_ddl_diagnose_info; +Field Type Null Key Default Extra +tenant_id bigint(20) NO NULL +ddl_task_id bigint(20) NO MUL NULL +object_table_id bigint(20) NO NULL +opname varchar(64) NO NULL +create_time timestamp(6) NO NULL +finish_time timestamp(6) NO NULL +diagnose_info varchar(1024) NO NULL +select /*+QUERY_TIMEOUT(60000000)*/ IF(count(*) >= 0, 1, 0) from oceanbase.__all_virtual_ddl_diagnose_info; +IF(count(*) >= 0, 1, 0) +1 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 21d2c2be9..625b29c63 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 @@ -10942,3 +10942,16 @@ select /*+QUERY_TIMEOUT(60000000)*/ IF(count(*) >= 0, 1, 0) from oceanbase.__all IF(count(*) >= 0, 1, 0) 1 select /*+QUERY_TIMEOUT(60000000)*/ * from oceanbase.__all_virtual_ncomp_dll_v2 limit 1; +desc oceanbase.__all_virtual_ddl_diagnose_info; +Field Type Null Key Default Extra +tenant_id bigint(20) NO NULL +ddl_task_id bigint(20) NO MUL NULL +object_table_id bigint(20) NO NULL +opname varchar(64) NO NULL +create_time timestamp(6) NO NULL +finish_time timestamp(6) NO NULL +diagnose_info varchar(1024) NO NULL +select /*+QUERY_TIMEOUT(60000000)*/ IF(count(*) >= 0, 1, 0) from oceanbase.__all_virtual_ddl_diagnose_info; +IF(count(*) >= 0, 1, 0) +1 +select /*+QUERY_TIMEOUT(60000000)*/ * from oceanbase.__all_virtual_ddl_diagnose_info limit 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 9aa5c45ad..8d39ac6b0 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 @@ -805,6 +805,7 @@ select 0xffffffffff & table_id, table_name, table_type, database_id, part_num fr 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 +12514 __all_virtual_ddl_diagnose_info 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