diff --git a/src/observer/virtual_table/ob_all_virtual_long_ops_status.cpp b/src/observer/virtual_table/ob_all_virtual_long_ops_status.cpp index b14683774..8497e4ac2 100644 --- a/src/observer/virtual_table/ob_all_virtual_long_ops_status.cpp +++ b/src/observer/virtual_table/ob_all_virtual_long_ops_status.cpp @@ -45,7 +45,7 @@ int ObAllVirtualLongOpsStatus::inner_get_next_row(ObNewRow *&row) } else if (FALSE_IT(start_to_read_ = true)) { } else if (!longops_iter_.is_inited() && OB_FAIL(ObLongopsMgr::get_instance().begin_iter(longops_iter_))) { LOG_WARN("fail to begin longops iter", K(ret)); - } else if (OB_FAIL(longops_iter_.get_next(longops_value_))) { + } else if (OB_FAIL(longops_iter_.get_next(effective_tenant_id_, longops_value_))) { LOG_WARN("fail to get next longops value", K(ret)); } else { for (int64_t i = 0; OB_SUCC(ret) && i < col_count; ++i) { diff --git a/src/share/inner_table/generate_inner_table_schema.py b/src/share/inner_table/generate_inner_table_schema.py index ffed0384c..15cddfe92 100755 --- a/src/share/inner_table/generate_inner_table_schema.py +++ b/src/share/inner_table/generate_inner_table_schema.py @@ -1090,6 +1090,7 @@ def gen_sys_agent_virtual_table_def(table_id, keywords): new_keywords = __gen_oracle_vt_base_on_mysql(table_id, keywords, "_SYS_AGENT") new_keywords["partition_expr"] = [] new_keywords["partition_columns"] = [] + new_keywords["vtable_route_policy"] = "local" all_only_sys_table_name[keywords["table_name"]] = True all_agent_virtual_tables.append(new_keywords) return new_keywords @@ -1097,7 +1098,7 @@ def gen_sys_agent_virtual_table_def(table_id, keywords): def __gen_mysql_vt(table_id, keywords, table_name_suffix): if keywords.has_key('in_tenant_space') and keywords['in_tenant_space']: raise Exception("base table should not in_tenant_space") - elif 'SYSTEM_TABLE' != keywords['table_type']: + elif 'SYSTEM_TABLE' != keywords['table_type'] and 'VIRTUAL_TABLE' != keywords['table_type']: raise Exception("unsupported table type", keywords['table_type']) new_keywords = copy.deepcopy(keywords) new_keywords["table_type"] = 'VIRTUAL_TABLE' @@ -1118,6 +1119,7 @@ def gen_mysql_sys_agent_virtual_table_def(table_id, keywords): new_keywords = __gen_mysql_vt(table_id, keywords, "_mysql_sys_agent") new_keywords["partition_expr"] = [] new_keywords["partition_columns"] = [] + new_keywords["vtable_route_policy"] = "local" mysql_compat_agent_tables[keywords["table_name"]] = True all_agent_virtual_tables.append(new_keywords) return new_keywords diff --git a/src/share/inner_table/ob_inner_table_schema.11051_11100.cpp b/src/share/inner_table/ob_inner_table_schema.11051_11100.cpp index 11b480ecd..0b08d938b 100644 --- a/src/share/inner_table/ob_inner_table_schema.11051_11100.cpp +++ b/src/share/inner_table/ob_inner_table_schema.11051_11100.cpp @@ -3055,7 +3055,7 @@ int ObInnerTableSchema::all_virtual_long_ops_status_schema(ObTableSchema &table_ ++column_id, //column_id 0, //rowkey_id 0, //index_id - 1, //part_key_pos + 0, //part_key_pos ObVarcharType, //column_type CS_TYPE_INVALID, //column_collation_type MAX_IP_ADDR_LENGTH, //column_length @@ -3070,7 +3070,7 @@ int ObInnerTableSchema::all_virtual_long_ops_status_schema(ObTableSchema &table_ ++column_id, //column_id 0, //rowkey_id 0, //index_id - 2, //part_key_pos + 0, //part_key_pos ObIntType, //column_type CS_TYPE_INVALID, //column_collation_type sizeof(int64_t), //column_length @@ -3199,16 +3199,6 @@ int ObInnerTableSchema::all_virtual_long_ops_status_schema(ObTableSchema &table_ false, //is_nullable false); //is_autoincrement } - if (OB_SUCC(ret)) { - table_schema.get_part_option().set_part_num(1); - table_schema.set_part_level(PARTITION_LEVEL_ONE); - table_schema.get_part_option().set_part_func_type(PARTITION_FUNC_TYPE_LIST_COLUMNS); - if (OB_FAIL(table_schema.get_part_option().set_part_expr("svr_ip, svr_port"))) { - LOG_WARN("set_part_expr failed", K(ret)); - } else if (OB_FAIL(table_schema.mock_list_partition_array())) { - LOG_WARN("mock list partition array failed", K(ret)); - } - } 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); diff --git a/src/share/inner_table/ob_inner_table_schema.12351_12400.cpp b/src/share/inner_table/ob_inner_table_schema.12351_12400.cpp index b063ea3a9..d039e4da8 100644 --- a/src/share/inner_table/ob_inner_table_schema.12351_12400.cpp +++ b/src/share/inner_table/ob_inner_table_schema.12351_12400.cpp @@ -2754,6 +2754,260 @@ int ObInnerTableSchema::all_virtual_io_scheduler_schema(ObTableSchema &table_sch return ret; } +int ObInnerTableSchema::all_virtual_virtual_long_ops_status_mysql_sys_agent_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_VIRTUAL_LONG_OPS_STATUS_MYSQL_SYS_AGENT_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_VIRTUAL_LONG_OPS_STATUS_MYSQL_SYS_AGENT_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("sid", //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("op_name", //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 + MAX_LONG_OPS_NAME_LENGTH, //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("target", //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 + MAX_LONG_OPS_TARGET_LENGTH, //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("svr_ip", //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 + MAX_IP_ADDR_LENGTH, //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("svr_port", //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("start_time", //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("finish_time", //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("elapsed_time", //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("remaining_time", //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("last_update_time", //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("percentage", //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("message", //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 + MAX_LONG_OPS_MESSAGE_LENGTH, //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("trace_id", //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_TRACE_ID_BUFFER_SIZE, //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_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.15251_15300.cpp b/src/share/inner_table/ob_inner_table_schema.15251_15300.cpp index 404e51a5a..541064af6 100644 --- a/src/share/inner_table/ob_inner_table_schema.15251_15300.cpp +++ b/src/share/inner_table/ob_inner_table_schema.15251_15300.cpp @@ -8487,6 +8487,260 @@ int ObInnerTableSchema::all_virtual_archive_dest_status_ora_schema(ObTableSchema return ret; } +int ObInnerTableSchema::all_virtual_long_ops_status_sys_agent_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_LONG_OPS_STATUS_SYS_AGENT_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_LONG_OPS_STATUS_SYS_AGENT_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("TENANT_ID", //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("SID", //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("OP_NAME", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObVarcharType, //column_type + CS_TYPE_UTF8MB4_BIN, //column_collation_type + MAX_LONG_OPS_NAME_LENGTH, //column_length + 2, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("TARGET", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObVarcharType, //column_type + CS_TYPE_UTF8MB4_BIN, //column_collation_type + MAX_LONG_OPS_TARGET_LENGTH, //column_length + 2, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("SVR_IP", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObVarcharType, //column_type + CS_TYPE_UTF8MB4_BIN, //column_collation_type + MAX_IP_ADDR_LENGTH, //column_length + 2, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("SVR_PORT", //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("START_TIME", //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("FINISH_TIME", //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("ELAPSED_TIME", //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("REMAINING_TIME", //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("LAST_UPDATE_TIME", //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("PERCENTAGE", //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("MESSAGE", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObVarcharType, //column_type + CS_TYPE_UTF8MB4_BIN, //column_collation_type + MAX_LONG_OPS_MESSAGE_LENGTH, //column_length + 2, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("TRACE_ID", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObVarcharType, //column_type + CS_TYPE_UTF8MB4_BIN, //column_collation_type + OB_MAX_TRACE_ID_BUFFER_SIZE, //column_length + 2, //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_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.21051_21100.cpp b/src/share/inner_table/ob_inner_table_schema.21051_21100.cpp index 56dd68bb7..ac60c11f2 100644 --- a/src/share/inner_table/ob_inner_table_schema.21051_21100.cpp +++ b/src/share/inner_table/ob_inner_table_schema.21051_21100.cpp @@ -260,7 +260,7 @@ int ObInnerTableSchema::gv_session_longops_schema(ObTableSchema &table_schema) table_schema.set_collation_type(ObCharset::get_default_collation(ObCharset::get_default_charset())); if (OB_SUCC(ret)) { - if (OB_FAIL(table_schema.set_view_definition(R"__( SELECT CAST(sid AS SIGNED) AS SID, CAST(trace_id AS CHAR(64)) AS TRACE_ID, CAST(op_name AS CHAR(64)) AS OPNAME, CAST(TARGET AS CHAR(64)) AS TARGET, CAST(SVR_IP AS CHAR(46)) AS SVR_IP, CAST(SVR_PORT AS SIGNED) AS SVR_PORT, CAST(USEC_TO_TIME(START_TIME) AS DATE) AS START_TIME, CAST(ELAPSED_TIME/1000000 AS SIGNED) AS ELAPSED_SECONDS, CAST(REMAINING_TIME AS SIGNED) AS TIME_REMAINING, CAST(USEC_TO_TIME(LAST_UPDATE_TIME) AS DATE) AS LAST_UPDATE_TIME, CAST(MESSAGE AS CHAR(512)) AS MESSAGE FROM oceanbase.__all_virtual_long_ops_status )__"))) { + if (OB_FAIL(table_schema.set_view_definition(R"__( SELECT CAST(sid AS SIGNED) AS SID, CAST(trace_id AS CHAR(64)) AS TRACE_ID, CAST(op_name AS CHAR(64)) AS OPNAME, CAST(TARGET AS CHAR(64)) AS TARGET, CAST(SVR_IP AS CHAR(46)) AS SVR_IP, CAST(SVR_PORT AS SIGNED) AS SVR_PORT, CAST(USEC_TO_TIME(START_TIME) AS DATE) AS START_TIME, CAST(ELAPSED_TIME/1000000 AS SIGNED) AS ELAPSED_SECONDS, CAST(REMAINING_TIME AS SIGNED) AS TIME_REMAINING, CAST(USEC_TO_TIME(LAST_UPDATE_TIME) AS DATE) AS LAST_UPDATE_TIME, CAST(MESSAGE AS CHAR(512)) AS MESSAGE FROM oceanbase.__all_virtual_virtual_long_ops_status_mysql_sys_agent )__"))) { LOG_ERROR("fail to set view_definition", K(ret)); } } diff --git a/src/share/inner_table/ob_inner_table_schema.28151_28200.cpp b/src/share/inner_table/ob_inner_table_schema.28151_28200.cpp index d3a594902..84bae2e28 100644 --- a/src/share/inner_table/ob_inner_table_schema.28151_28200.cpp +++ b/src/share/inner_table/ob_inner_table_schema.28151_28200.cpp @@ -575,6 +575,106 @@ int ObInnerTableSchema::dba_ob_ls_log_archive_progress_ora_schema(ObTableSchema return ret; } +int ObInnerTableSchema::gv_session_longops_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_GV_SESSION_LONGOPS_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(0); + table_schema.set_load_type(TABLE_LOAD_TYPE_IN_DISK); + table_schema.set_table_type(SYSTEM_VIEW); + 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_GV_SESSION_LONGOPS_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(ObCharset::get_default_collation(ObCharset::get_default_charset())); + + if (OB_SUCC(ret)) { + if (OB_FAIL(table_schema.set_view_definition(R"__( SELECT CAST(sid AS NUMBER) AS SID, CAST(trace_id AS VARCHAR2(64)) AS TRACE_ID, CAST(op_name AS VARCHAR2(64)) AS OPNAME, CAST(TARGET AS VARCHAR2(64)) AS TARGET, CAST(SVR_IP AS VARCHAR2(46)) AS SVR_IP, CAST(SVR_PORT AS NUMBER) AS SVR_PORT, TO_CHAR(TO_DATE('19700101','YYYYMMDD') + START_TIME / 86400 / 1000000 + TO_NUMBER(SUBSTR(TZ_OFFSET(SESSIONTIMEZONE), 1, 3)) / 24) AS START_TIME, CAST(ELAPSED_TIME/1000000 AS NUMBER) AS ELAPSED_SECONDS, CAST(REMAINING_TIME AS NUMBER) AS TIME_REMAINING, TO_CHAR(TO_DATE('19700101','YYYYMMDD') + LAST_UPDATE_TIME / 86400 / 1000000 + TO_NUMBER(SUBSTR(TZ_OFFSET(SESSIONTIMEZONE), 1, 3)) / 24) AS LAST_UPDATE_TIME, CAST(MESSAGE AS VARCHAR2(512)) AS MESSAGE FROM SYS.ALL_VIRTUAL_LONG_OPS_STATUS_SYS_AGENT WHERE TENANT_ID = EFFECTIVE_TENANT_ID() )__"))) { + LOG_ERROR("fail to set view_definition", K(ret)); + } + } + 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_max_used_column_id(column_id); + return ret; +} + +int ObInnerTableSchema::v_session_longops_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_V_SESSION_LONGOPS_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(0); + table_schema.set_load_type(TABLE_LOAD_TYPE_IN_DISK); + table_schema.set_table_type(SYSTEM_VIEW); + 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_V_SESSION_LONGOPS_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(ObCharset::get_default_collation(ObCharset::get_default_charset())); + + if (OB_SUCC(ret)) { + if (OB_FAIL(table_schema.set_view_definition(R"__( SELECT * FROM SYS.GV$SESSION_LONGOPS WHERE SVR_IP = HOST_IP() AND SVR_PORT = RPC_PORT() )__"))) { + LOG_ERROR("fail to set view_definition", K(ret)); + } + } + 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_max_used_column_id(column_id); + return ret; +} + int ObInnerTableSchema::all_table_idx_data_table_id_schema(ObTableSchema &table_schema) { int ret = OB_SUCCESS; diff --git a/src/share/inner_table/ob_inner_table_schema.h b/src/share/inner_table/ob_inner_table_schema.h index 12d1f09a8..713832e46 100644 --- a/src/share/inner_table/ob_inner_table_schema.h +++ b/src/share/inner_table/ob_inner_table_schema.h @@ -870,6 +870,7 @@ public: static int all_virtual_ls_arb_replica_task_history_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_archive_dest_status_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_io_scheduler_schema(share::schema::ObTableSchema &table_schema); + static int all_virtual_virtual_long_ops_status_mysql_sys_agent_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); @@ -1077,6 +1078,7 @@ public: static int all_virtual_ls_arb_replica_task_ora_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_ls_arb_replica_task_history_ora_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_archive_dest_status_ora_schema(share::schema::ObTableSchema &table_schema); + static int all_virtual_long_ops_status_sys_agent_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); @@ -1734,6 +1736,8 @@ public: static int dba_ob_user_defined_rules_ora_schema(share::schema::ObTableSchema &table_schema); static int v_ob_archive_dest_status_ora_schema(share::schema::ObTableSchema &table_schema); static int dba_ob_ls_log_archive_progress_ora_schema(share::schema::ObTableSchema &table_schema); + static int gv_session_longops_ora_schema(share::schema::ObTableSchema &table_schema); + static int v_session_longops_ora_schema(share::schema::ObTableSchema &table_schema); static int all_table_aux_lob_meta_schema(share::schema::ObTableSchema &table_schema); static int all_column_aux_lob_meta_schema(share::schema::ObTableSchema &table_schema); static int all_ddl_operation_aux_lob_meta_schema(share::schema::ObTableSchema &table_schema); @@ -2913,6 +2917,7 @@ const schema_create_func virtual_table_schema_creators [] = { ObInnerTableSchema::all_virtual_ls_arb_replica_task_history_schema, ObInnerTableSchema::all_virtual_archive_dest_status_schema, ObInnerTableSchema::all_virtual_io_scheduler_schema, + ObInnerTableSchema::all_virtual_virtual_long_ops_status_mysql_sys_agent_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, ObInnerTableSchema::all_virtual_sysstat_all_virtual_sysstat_i1_schema, @@ -3129,6 +3134,7 @@ const schema_create_func virtual_table_schema_creators [] = { ObInnerTableSchema::all_virtual_ls_arb_replica_task_ora_schema, ObInnerTableSchema::all_virtual_ls_arb_replica_task_history_ora_schema, ObInnerTableSchema::all_virtual_archive_dest_status_ora_schema, + ObInnerTableSchema::all_virtual_long_ops_status_sys_agent_schema, ObInnerTableSchema::all_virtual_sql_plan_monitor_ora_all_virtual_sql_plan_monitor_i1_schema, ObInnerTableSchema::all_virtual_system_event_ora_all_virtual_system_event_i1_schema, ObInnerTableSchema::all_virtual_sysstat_ora_all_virtual_sysstat_i1_schema, @@ -3797,6 +3803,8 @@ const schema_create_func sys_view_schema_creators [] = { ObInnerTableSchema::dba_ob_user_defined_rules_ora_schema, ObInnerTableSchema::v_ob_archive_dest_status_ora_schema, ObInnerTableSchema::dba_ob_ls_log_archive_progress_ora_schema, + ObInnerTableSchema::gv_session_longops_ora_schema, + ObInnerTableSchema::v_session_longops_ora_schema, NULL,}; const schema_create_func core_index_table_schema_creators [] = { @@ -4175,7 +4183,6 @@ const uint64_t tenant_space_tables [] = { OB_ALL_VIRTUAL_PROXY_PARTITION_INFO_TID, OB_ALL_VIRTUAL_PROXY_PARTITION_TID, OB_ALL_VIRTUAL_PROXY_SUB_PARTITION_TID, - OB_ALL_VIRTUAL_LONG_OPS_STATUS_TID, OB_TENANT_VIRTUAL_SHOW_CREATE_TABLEGROUP_TID, OB_ALL_VIRTUAL_TENANT_PARAMETER_STAT_TID, OB_ALL_VIRTUAL_SERVER_SCHEMA_INFO_TID, @@ -4276,6 +4283,7 @@ const uint64_t tenant_space_tables [] = { OB_ALL_VIRTUAL_LS_ARB_REPLICA_TASK_TID, OB_ALL_VIRTUAL_LS_ARB_REPLICA_TASK_HISTORY_TID, OB_ALL_VIRTUAL_ARCHIVE_DEST_STATUS_TID, + OB_ALL_VIRTUAL_VIRTUAL_LONG_OPS_STATUS_MYSQL_SYS_AGENT_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, @@ -4491,6 +4499,7 @@ const uint64_t tenant_space_tables [] = { OB_ALL_VIRTUAL_LS_ARB_REPLICA_TASK_ORA_TID, OB_ALL_VIRTUAL_LS_ARB_REPLICA_TASK_HISTORY_ORA_TID, OB_ALL_VIRTUAL_ARCHIVE_DEST_STATUS_ORA_TID, + OB_ALL_VIRTUAL_LONG_OPS_STATUS_SYS_AGENT_TID, OB_GV_OB_PLAN_CACHE_STAT_TID, OB_GV_OB_PLAN_CACHE_PLAN_STAT_TID, OB_SCHEMATA_TID, @@ -5071,6 +5080,8 @@ const uint64_t tenant_space_tables [] = { OB_DBA_OB_USER_DEFINED_RULES_ORA_TID, OB_V_OB_ARCHIVE_DEST_STATUS_ORA_TID, OB_DBA_OB_LS_LOG_ARCHIVE_PROGRESS_ORA_TID, + OB_GV_SESSION_LONGOPS_ORA_TID, + OB_V_SESSION_LONGOPS_ORA_TID, OB_ALL_TABLE_IDX_DATA_TABLE_ID_TID, OB_ALL_TABLE_IDX_DB_TB_NAME_TID, OB_ALL_TABLE_IDX_TB_NAME_TID, @@ -6089,7 +6100,6 @@ const char* const tenant_space_table_names [] = { OB_ALL_VIRTUAL_PROXY_PARTITION_INFO_TNAME, OB_ALL_VIRTUAL_PROXY_PARTITION_TNAME, OB_ALL_VIRTUAL_PROXY_SUB_PARTITION_TNAME, - OB_ALL_VIRTUAL_LONG_OPS_STATUS_TNAME, OB_TENANT_VIRTUAL_SHOW_CREATE_TABLEGROUP_TNAME, OB_ALL_VIRTUAL_TENANT_PARAMETER_STAT_TNAME, OB_ALL_VIRTUAL_SERVER_SCHEMA_INFO_TNAME, @@ -6190,6 +6200,7 @@ const char* const tenant_space_table_names [] = { OB_ALL_VIRTUAL_LS_ARB_REPLICA_TASK_TNAME, OB_ALL_VIRTUAL_LS_ARB_REPLICA_TASK_HISTORY_TNAME, OB_ALL_VIRTUAL_ARCHIVE_DEST_STATUS_TNAME, + OB_ALL_VIRTUAL_VIRTUAL_LONG_OPS_STATUS_MYSQL_SYS_AGENT_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, @@ -6405,6 +6416,7 @@ const char* const tenant_space_table_names [] = { OB_ALL_VIRTUAL_LS_ARB_REPLICA_TASK_ORA_TNAME, OB_ALL_VIRTUAL_LS_ARB_REPLICA_TASK_HISTORY_ORA_TNAME, OB_ALL_VIRTUAL_ARCHIVE_DEST_STATUS_ORA_TNAME, + OB_ALL_VIRTUAL_LONG_OPS_STATUS_SYS_AGENT_TNAME, OB_GV_OB_PLAN_CACHE_STAT_TNAME, OB_GV_OB_PLAN_CACHE_PLAN_STAT_TNAME, OB_SCHEMATA_TNAME, @@ -6985,6 +6997,8 @@ const char* const tenant_space_table_names [] = { OB_DBA_OB_USER_DEFINED_RULES_ORA_TNAME, OB_V_OB_ARCHIVE_DEST_STATUS_ORA_TNAME, OB_DBA_OB_LS_LOG_ARCHIVE_PROGRESS_ORA_TNAME, + OB_GV_SESSION_LONGOPS_ORA_TNAME, + OB_V_SESSION_LONGOPS_ORA_TNAME, OB_ALL_TABLE_IDX_DATA_TABLE_ID_TNAME, OB_ALL_TABLE_IDX_DB_TB_NAME_TNAME, OB_ALL_TABLE_IDX_TB_NAME_TNAME, @@ -7501,6 +7515,7 @@ const char* const tenant_space_table_names [] = { const uint64_t only_rs_vtables [] = { OB_ALL_VIRTUAL_CORE_META_TABLE_TID, OB_ALL_VIRTUAL_UPGRADE_INSPECTION_TID, + OB_ALL_VIRTUAL_LONG_OPS_STATUS_TID, OB_ALL_VIRTUAL_BACKUP_SCHEDULE_TASK_TID, OB_ALL_VIRTUAL_LS_REPLICA_TASK_PLAN_TID, OB_ALL_VIRTUAL_LS_REPLICA_TASK_PLAN_ORA_TID, }; @@ -7587,7 +7602,6 @@ const uint64_t tenant_distributed_vtables [] = { OB_ALL_VIRTUAL_TRACE_SPAN_INFO_TID, OB_ALL_VIRTUAL_PLAN_CACHE_PLAN_EXPLAIN_TID, OB_ALL_VIRTUAL_OBRPC_STAT_TID, - OB_ALL_VIRTUAL_LONG_OPS_STATUS_TID, OB_ALL_VIRTUAL_TENANT_PARAMETER_STAT_TID, OB_ALL_VIRTUAL_SERVER_SCHEMA_INFO_TID, OB_ALL_VIRTUAL_TABLET_ENCRYPT_INFO_TID, @@ -9814,11 +9828,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 = 230; -const int64_t OB_VIRTUAL_TABLE_COUNT = 575; -const int64_t OB_SYS_VIEW_COUNT = 657; -const int64_t OB_SYS_TENANT_TABLE_COUNT = 1467; +const int64_t OB_VIRTUAL_TABLE_COUNT = 577; +const int64_t OB_SYS_VIEW_COUNT = 659; +const int64_t OB_SYS_TENANT_TABLE_COUNT = 1471; const int64_t OB_CORE_SCHEMA_VERSION = 1; -const int64_t OB_BOOTSTRAP_SCHEMA_VERSION = 1470; +const int64_t OB_BOOTSTRAP_SCHEMA_VERSION = 1474; } // 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 d60a401fc..bee934531 100644 --- a/src/share/inner_table/ob_inner_table_schema_constants.h +++ b/src/share/inner_table/ob_inner_table_schema_constants.h @@ -612,6 +612,7 @@ const uint64_t OB_ALL_VIRTUAL_LS_ARB_REPLICA_TASK_TID = 12364; // "__all_virtual const uint64_t OB_ALL_VIRTUAL_LS_ARB_REPLICA_TASK_HISTORY_TID = 12365; // "__all_virtual_ls_arb_replica_task_history" const uint64_t OB_ALL_VIRTUAL_ARCHIVE_DEST_STATUS_TID = 12366; // "__all_virtual_archive_dest_status" const uint64_t OB_ALL_VIRTUAL_IO_SCHEDULER_TID = 12369; // "__all_virtual_io_scheduler" +const uint64_t OB_ALL_VIRTUAL_VIRTUAL_LONG_OPS_STATUS_MYSQL_SYS_AGENT_TID = 12393; // "__all_virtual_virtual_long_ops_status_mysql_sys_agent" 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" @@ -819,6 +820,7 @@ const uint64_t OB_ALL_VIRTUAL_TRANS_SCHEDULER_ORA_TID = 15287; // "ALL_VIRTUAL_T const uint64_t OB_ALL_VIRTUAL_LS_ARB_REPLICA_TASK_ORA_TID = 15288; // "ALL_VIRTUAL_LS_ARB_REPLICA_TASK_ORA" const uint64_t OB_ALL_VIRTUAL_LS_ARB_REPLICA_TASK_HISTORY_ORA_TID = 15289; // "ALL_VIRTUAL_LS_ARB_REPLICA_TASK_HISTORY_ORA" const uint64_t OB_ALL_VIRTUAL_ARCHIVE_DEST_STATUS_ORA_TID = 15290; // "ALL_VIRTUAL_ARCHIVE_DEST_STATUS_ORA" +const uint64_t OB_ALL_VIRTUAL_LONG_OPS_STATUS_SYS_AGENT_TID = 15297; // "ALL_VIRTUAL_LONG_OPS_STATUS_SYS_AGENT" 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" @@ -1476,6 +1478,8 @@ const uint64_t OB_V_OB_TRANSACTION_SCHEDULERS_ORA_TID = 28160; // "V$OB_TRANSACT const uint64_t OB_DBA_OB_USER_DEFINED_RULES_ORA_TID = 28171; // "DBA_OB_USER_DEFINED_RULES_ORA" const uint64_t OB_V_OB_ARCHIVE_DEST_STATUS_ORA_TID = 28176; // "V$OB_ARCHIVE_DEST_STATUS_ORA" const uint64_t OB_DBA_OB_LS_LOG_ARCHIVE_PROGRESS_ORA_TID = 28177; // "DBA_OB_LS_LOG_ARCHIVE_PROGRESS_ORA" +const uint64_t OB_GV_SESSION_LONGOPS_ORA_TID = 28185; // "GV$SESSION_LONGOPS_ORA" +const uint64_t OB_V_SESSION_LONGOPS_ORA_TID = 28186; // "V$SESSION_LONGOPS_ORA" const uint64_t OB_ALL_TABLE_AUX_LOB_META_TID = 50003; // "__all_table_aux_lob_meta" const uint64_t OB_ALL_COLUMN_AUX_LOB_META_TID = 50004; // "__all_column_aux_lob_meta" const uint64_t OB_ALL_DDL_OPERATION_AUX_LOB_META_TID = 50005; // "__all_ddl_operation_aux_lob_meta" @@ -2639,6 +2643,7 @@ const char *const OB_ALL_VIRTUAL_LS_ARB_REPLICA_TASK_TNAME = "__all_virtual_ls_a const char *const OB_ALL_VIRTUAL_LS_ARB_REPLICA_TASK_HISTORY_TNAME = "__all_virtual_ls_arb_replica_task_history"; const char *const OB_ALL_VIRTUAL_ARCHIVE_DEST_STATUS_TNAME = "__all_virtual_archive_dest_status"; const char *const OB_ALL_VIRTUAL_IO_SCHEDULER_TNAME = "__all_virtual_io_scheduler"; +const char *const OB_ALL_VIRTUAL_VIRTUAL_LONG_OPS_STATUS_MYSQL_SYS_AGENT_TNAME = "__all_virtual_virtual_long_ops_status_mysql_sys_agent"; 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"; @@ -2846,6 +2851,7 @@ const char *const OB_ALL_VIRTUAL_TRANS_SCHEDULER_ORA_TNAME = "ALL_VIRTUAL_TRANS_ const char *const OB_ALL_VIRTUAL_LS_ARB_REPLICA_TASK_ORA_TNAME = "ALL_VIRTUAL_LS_ARB_REPLICA_TASK"; const char *const OB_ALL_VIRTUAL_LS_ARB_REPLICA_TASK_HISTORY_ORA_TNAME = "ALL_VIRTUAL_LS_ARB_REPLICA_TASK_HISTORY"; const char *const OB_ALL_VIRTUAL_ARCHIVE_DEST_STATUS_ORA_TNAME = "ALL_VIRTUAL_ARCHIVE_DEST_STATUS"; +const char *const OB_ALL_VIRTUAL_LONG_OPS_STATUS_SYS_AGENT_TNAME = "ALL_VIRTUAL_LONG_OPS_STATUS_SYS_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"; @@ -3503,6 +3509,8 @@ const char *const OB_V_OB_TRANSACTION_SCHEDULERS_ORA_TNAME = "V$OB_TRANSACTION_S const char *const OB_DBA_OB_USER_DEFINED_RULES_ORA_TNAME = "DBA_OB_USER_DEFINED_RULES"; const char *const OB_V_OB_ARCHIVE_DEST_STATUS_ORA_TNAME = "V$OB_ARCHIVE_DEST_STATUS"; const char *const OB_DBA_OB_LS_LOG_ARCHIVE_PROGRESS_ORA_TNAME = "DBA_OB_LS_LOG_ARCHIVE_PROGRESS"; +const char *const OB_GV_SESSION_LONGOPS_ORA_TNAME = "GV$SESSION_LONGOPS"; +const char *const OB_V_SESSION_LONGOPS_ORA_TNAME = "V$SESSION_LONGOPS"; const char *const OB_ALL_TABLE_AUX_LOB_META_TNAME = "__all_table_aux_lob_meta"; const char *const OB_ALL_COLUMN_AUX_LOB_META_TNAME = "__all_column_aux_lob_meta"; const char *const OB_ALL_DDL_OPERATION_AUX_LOB_META_TNAME = "__all_ddl_operation_aux_lob_meta"; 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 93fe77044..230cada98 100644 --- a/src/share/inner_table/ob_inner_table_schema_def.py +++ b/src/share/inner_table/ob_inner_table_schema_def.py @@ -7356,7 +7356,6 @@ def_table_schema( table_name = '__all_virtual_long_ops_status', table_id = '11081', table_type = 'VIRTUAL_TABLE', - in_tenant_space = True, gm_columns = [], rowkey_columns = [ ], @@ -7377,9 +7376,7 @@ def_table_schema( ('message', 'varchar:MAX_LONG_OPS_MESSAGE_LENGTH'), ('trace_id', 'varchar:OB_MAX_TRACE_ID_BUFFER_SIZE'), ], - - partition_columns = ['svr_ip', 'svr_port'], - vtable_route_policy = 'distributed', + vtable_route_policy = 'only_rs', ) # 11082: __all_virtual_rebalance_unit_migrate_stat is deprecated in 4.0. @@ -11447,7 +11444,7 @@ def_table_schema( # 12390: __all_virtual_wr_statname # 12391: __all_virtual_wr_sysstat # 12392: __all_virtual_kv_connection -# 12393: __all_virtual_virtual_long_ops_status_mysql_sys_agent +def_table_schema(**gen_mysql_sys_agent_virtual_table_def('12393', all_def_keywords['__all_virtual_long_ops_status'])) # 12394: __all_virtual_ls_transfer_member_list_lock_info # # 余留位置 @@ -11734,7 +11731,7 @@ def_table_schema(**no_direct_access(gen_oracle_mapping_virtual_table_def('15290' # 15294: __all_task_opt_stat_gather_history # 15295: __all_table_opt_stat_gather_history # 15296: __all_virtual_opt_stat_gather_monitor -# 15297: __all_virtual_long_ops_status_ora +def_table_schema(**gen_sys_agent_virtual_table_def('15297', all_def_keywords['__all_virtual_long_ops_status'])) # 15298: __all_virtual_thread # 15299: __all_virtual_wr_active_session_history # 15300: __all_virtual_wr_snapshot @@ -11742,7 +11739,7 @@ def_table_schema(**no_direct_access(gen_oracle_mapping_virtual_table_def('15290' # 15302: __all_virtual_wr_sysstat # 15303: __all_virtual_arbitration_member_info # 15304: __all_virtual_arbitration_service_status -# 15305: ALL_VIRTUAL_LONG_OPS_STATUS_SYS_AGENT + # [15306, 15375] for oracle inner_table index ################################################################################ @@ -13814,7 +13811,7 @@ def_table_schema( CAST(REMAINING_TIME AS SIGNED) AS TIME_REMAINING, CAST(USEC_TO_TIME(LAST_UPDATE_TIME) AS DATE) AS LAST_UPDATE_TIME, CAST(MESSAGE AS CHAR(512)) AS MESSAGE - FROM oceanbase.__all_virtual_long_ops_status + FROM oceanbase.__all_virtual_virtual_long_ops_status_mysql_sys_agent """.replace("\n", " ") ) @@ -48532,8 +48529,53 @@ def_table_schema( # 28182: DBA_OB_DATA_DICTIONARY_IN_LOG # 28183: GV$OB_OPT_STAT_GATHER_MONITOR # 28184: V$OB_OPT_STAT_GATHER_MONITOR -# 28185: GV$SESSION_LONGOPS_ORA -# 28186: V$SESSION_LONGOPS_ORA + +def_table_schema( + owner = 'zhenjiang.xzj', + table_name = 'GV$SESSION_LONGOPS', + name_postfix = '_ORA', + database_id = 'OB_ORA_SYS_DATABASE_ID', + table_id = '28185', + table_type = 'SYSTEM_VIEW', + rowkey_columns = [], + normal_columns = [], + gm_columns = [], + in_tenant_space = True, + view_definition = """ + SELECT CAST(sid AS NUMBER) AS SID, + CAST(trace_id AS VARCHAR2(64)) AS TRACE_ID, + CAST(op_name AS VARCHAR2(64)) AS OPNAME, + CAST(TARGET AS VARCHAR2(64)) AS TARGET, + CAST(SVR_IP AS VARCHAR2(46)) AS SVR_IP, + CAST(SVR_PORT AS NUMBER) AS SVR_PORT, + TO_CHAR(TO_DATE('19700101','YYYYMMDD') + START_TIME / 86400 / 1000000 + + TO_NUMBER(SUBSTR(TZ_OFFSET(SESSIONTIMEZONE), 1, 3)) / 24) AS START_TIME, + CAST(ELAPSED_TIME/1000000 AS NUMBER) AS ELAPSED_SECONDS, + CAST(REMAINING_TIME AS NUMBER) AS TIME_REMAINING, + TO_CHAR(TO_DATE('19700101','YYYYMMDD') + LAST_UPDATE_TIME / 86400 / 1000000 + + TO_NUMBER(SUBSTR(TZ_OFFSET(SESSIONTIMEZONE), 1, 3)) / 24) AS LAST_UPDATE_TIME, + CAST(MESSAGE AS VARCHAR2(512)) AS MESSAGE + FROM SYS.ALL_VIRTUAL_LONG_OPS_STATUS_SYS_AGENT WHERE TENANT_ID = EFFECTIVE_TENANT_ID() +""".replace("\n", " ") +) + +def_table_schema( + owner = 'zhenjiang.xzj', + table_name = 'V$SESSION_LONGOPS', + name_postfix = '_ORA', + database_id = 'OB_ORA_SYS_DATABASE_ID', + table_id = '28186', + table_type = 'SYSTEM_VIEW', + rowkey_columns = [], + normal_columns = [], + gm_columns = [], + in_tenant_space = True, + view_definition = """ + SELECT * FROM SYS.GV$SESSION_LONGOPS + WHERE SVR_IP = HOST_IP() AND SVR_PORT = RPC_PORT() +""".replace("\n", " ") +) + # 28187: GV$OB_THREAD # 28188: V$OB_THREAD # 28189: GV$OB_ARBITRATION_MEMBER_INFO @@ -48541,6 +48583,7 @@ def_table_schema( # 28191: GV$OB_ARBITRATION_SERVICE_STATUS # 28192: V$OB_ARBITRATION_SERVICE_STATUS + ################################################################################ # Lob Table (50000, 70000) ################################################################################ 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 35ae2fcad..c5b73f04a 100644 --- a/src/share/inner_table/ob_inner_table_schema_misc.ipp +++ b/src/share/inner_table/ob_inner_table_schema_misc.ipp @@ -13,6 +13,7 @@ #ifdef AGENT_VIRTUAL_TABLE_LOCATION_SWITCH case OB_ALL_VIRTUAL_COLL_TYPE_SYS_AGENT_TID: +case OB_ALL_VIRTUAL_LONG_OPS_STATUS_SYS_AGENT_TID: case OB_ALL_VIRTUAL_PACKAGE_SYS_AGENT_TID: case OB_ALL_VIRTUAL_ROUTINE_PARAM_SYS_AGENT_TID: case OB_ALL_VIRTUAL_ROUTINE_SYS_AGENT_TID: @@ -29,6 +30,7 @@ case OB_TENANT_VIRTUAL_CONCURRENT_LIMIT_SQL_AGENT_TID: case OB_TENANT_VIRTUAL_OUTLINE_AGENT_TID: case OB_TENANT_VIRTUAL_TABLE_INDEX_AGENT_TID: case OB_ALL_VIRTUAL_TENANT_MYSQL_SYS_AGENT_TID: +case OB_ALL_VIRTUAL_VIRTUAL_LONG_OPS_STATUS_MYSQL_SYS_AGENT_TID: #endif @@ -54,6 +56,24 @@ case OB_ALL_VIRTUAL_TENANT_MYSQL_SYS_AGENT_TID: break; } + case OB_ALL_VIRTUAL_LONG_OPS_STATUS_SYS_AGENT_TID: { + ObAgentVirtualTable *agent_iter = NULL; + const uint64_t base_tid = OB_ALL_VIRTUAL_LONG_OPS_STATUS_TID; + const bool sys_tenant_base_table = true; + const bool only_sys_data = true; + if (OB_FAIL(NEW_VIRTUAL_TABLE(ObAgentVirtualTable, agent_iter))) { + SERVER_LOG(WARN, "create virtual table iterator failed", K(ret)); + } else if (OB_FAIL(agent_iter->init(base_tid, sys_tenant_base_table, index_schema, params, only_sys_data))) { + SERVER_LOG(WARN, "virtual table iter init failed", K(ret)); + agent_iter->~ObAgentVirtualTable(); + allocator.free(agent_iter); + agent_iter = NULL; + } else { + vt_iter = agent_iter; + } + break; + } + case OB_ALL_VIRTUAL_PACKAGE_SYS_AGENT_TID: { ObAgentVirtualTable *agent_iter = NULL; const uint64_t base_tid = OB_ALL_PACKAGE_TID; @@ -341,6 +361,24 @@ case OB_ALL_VIRTUAL_TENANT_MYSQL_SYS_AGENT_TID: } break; } + + case OB_ALL_VIRTUAL_VIRTUAL_LONG_OPS_STATUS_MYSQL_SYS_AGENT_TID: { + ObAgentVirtualTable *agent_iter = NULL; + const uint64_t base_tid = OB_ALL_VIRTUAL_LONG_OPS_STATUS_TID; + const bool sys_tenant_base_table = true; + const bool only_sys_data = false; + if (OB_FAIL(NEW_VIRTUAL_TABLE(ObAgentVirtualTable, agent_iter))) { + SERVER_LOG(WARN, "create virtual table iterator failed", K(ret)); + } else if (OB_FAIL(agent_iter->init(base_tid, sys_tenant_base_table, index_schema, params, only_sys_data, Worker::CompatMode::MYSQL))) { + SERVER_LOG(WARN, "virtual table iter init failed", K(ret)); + agent_iter->~ObAgentVirtualTable(); + allocator.free(agent_iter); + agent_iter = NULL; + } else { + vt_iter = agent_iter; + } + break; + } END_CREATE_VT_ITER_SWITCH_LAMBDA #endif // AGENT_VIRTUAL_TABLE_CREATE_ITER diff --git a/src/share/longops_mgr/ob_i_longops.cpp b/src/share/longops_mgr/ob_i_longops.cpp index 0a9674a5d..6897d5ece 100644 --- a/src/share/longops_mgr/ob_i_longops.cpp +++ b/src/share/longops_mgr/ob_i_longops.cpp @@ -85,4 +85,4 @@ void ObLongopsValue::reset() memset(op_name_, 0, sizeof(op_name_)); memset(target_, 0, sizeof(target_)); memset(message_, 0, sizeof(message_)); -} +} \ No newline at end of file diff --git a/src/share/longops_mgr/ob_longops_mgr.cpp b/src/share/longops_mgr/ob_longops_mgr.cpp index 44ba85410..1284293ab 100644 --- a/src/share/longops_mgr/ob_longops_mgr.cpp +++ b/src/share/longops_mgr/ob_longops_mgr.cpp @@ -221,19 +221,19 @@ int ObLongopsIterator::init(ObLongopsMgr *longops_mgr) return ret; } -int ObLongopsIterator::get_next(ObLongopsValue &value) +int ObLongopsIterator::get_next(const uint64_t tenant_id, ObLongopsValue &value) { int ret = OB_SUCCESS; if (OB_UNLIKELY(!is_inited_)) { ret = OB_NOT_INIT; LOG_WARN("ObLongopsIterator has not been inited", K(ret)); - } else if (OB_UNLIKELY(key_cursor_ >= key_snapshot_.count())) { - ret = OB_ITER_END; } else { bool need_retry = true; while (OB_SUCC(ret) && need_retry && key_cursor_ < key_snapshot_.count()) { const ObILongopsKey &key = key_snapshot_.at(key_cursor_); - if (OB_FAIL(longops_mgr_->get_longops(key, value))) { + if (!is_sys_tenant(tenant_id) && key.tenant_id_ != tenant_id) { + // Normal user tenants can only check their own longops tasks. + } else if (OB_FAIL(longops_mgr_->get_longops(key, value))) { if (OB_UNLIKELY(OB_ENTRY_NOT_EXIST != ret)) { LOG_WARN("fail to get parition stat", K(ret), K(key)); } else { @@ -245,6 +245,11 @@ int ObLongopsIterator::get_next(ObLongopsValue &value) } ++key_cursor_; } + + if (OB_SUCC(ret)) { + // reach the end, but get no longops record. + ret = need_retry && key_cursor_ >= key_snapshot_.count() ? OB_ITER_END : ret; + } } return ret; } diff --git a/src/share/longops_mgr/ob_longops_mgr.h b/src/share/longops_mgr/ob_longops_mgr.h index 9d9470698..3934f81dd 100644 --- a/src/share/longops_mgr/ob_longops_mgr.h +++ b/src/share/longops_mgr/ob_longops_mgr.h @@ -36,6 +36,7 @@ public: int begin_iter(ObLongopsIterator &iter); template int foreach(Callback &callback); + TO_STRING_KV(K_(is_inited), K(map_.size())); private: ObLongopsMgr(); ~ObLongopsMgr() { destroy(); } @@ -81,7 +82,7 @@ public: ~ObLongopsIterator(); void reset(); int init(ObLongopsMgr *longops_mgr); - int get_next(ObLongopsValue &value); + int get_next(const uint64_t tenant_id, ObLongopsValue &value); inline bool is_inited() const { return is_inited_; } private: bool is_inited_; 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 a5598a8ed..2b7a31f0a 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 @@ -584,6 +584,7 @@ select 0xffffffffff & table_id, table_name, table_type, database_id, part_num fr 12365 __all_virtual_ls_arb_replica_task_history 2 201001 1 12366 __all_virtual_archive_dest_status 2 201001 1 12369 __all_virtual_io_scheduler 2 201001 1 +12393 __all_virtual_virtual_long_ops_status_mysql_sys_agent 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