diff --git a/src/observer/virtual_table/ob_all_virtual_server_clog_stat.cpp b/src/observer/virtual_table/ob_all_virtual_server_clog_stat.cpp index b6a5a17f12bf105cbfe33747a199613d1dc5a0f5..dbf299a4251b97f02726f8eb63f4a72be05bc3b4 100644 --- a/src/observer/virtual_table/ob_all_virtual_server_clog_stat.cpp +++ b/src/observer/virtual_table/ob_all_virtual_server_clog_stat.cpp @@ -149,6 +149,25 @@ int ObAllVirtualServerClogStat::inner_get_next_row(ObNewRow*& row) cells[cell_idx].set_varchar(ObZoneStatus::get_status_str(locality_info.local_zone_status_)); break; } + case SVR_MIN_LOG_TIMESTAMP: { + if (OB_ISNULL(clog_mgr)) { + cells[cell_idx].set_int(OB_INVALID_TIMESTAMP); + } else { + // display server_min_log_ts 60s ahead of ts get from clog_mgr + static int64_t DISPLAY_AHEAD_TIME = 60 * 1000 * 1000; + int64_t svr_min_log_ts = OB_INVALID_TIMESTAMP; + if (OB_FAIL(clog_mgr->get_server_min_log_ts(svr_min_log_ts))) { + SERVER_LOG(WARN, "get_svr_min_log_ts failed", KR(ret), K(svr_min_log_ts)); + svr_min_log_ts = OB_INVALID_TIMESTAMP; + ret = OB_SUCCESS; + } else { + // svr_min_log_ts is min clog ts on this server, the log may not confirmed + svr_min_log_ts += DISPLAY_AHEAD_TIME; + } + cells[cell_idx].set_int(svr_min_log_ts); + } + break; + } default: { ret = OB_ERR_UNEXPECTED; SERVER_LOG(WARN, "invalid column id", K(ret), K(cell_idx), K(output_column_ids_), K(col_id)); diff --git a/src/observer/virtual_table/ob_all_virtual_server_clog_stat.h b/src/observer/virtual_table/ob_all_virtual_server_clog_stat.h index df3ce7dff58ea5c822509bf3a0eefd9b2d962d45..a9c7f99d95bb2e151942b718818188797483177a 100644 --- a/src/observer/virtual_table/ob_all_virtual_server_clog_stat.h +++ b/src/observer/virtual_table/ob_all_virtual_server_clog_stat.h @@ -42,7 +42,8 @@ private: IDC, ZONE_TYPE, MERGE_STATUS, - ZONE_STATUS + ZONE_STATUS, + SVR_MIN_LOG_TIMESTAMP }; common::ObAddr* addr_; common::ObString ipstr_; 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 62df107ee94f35e5e51bd0bc2cfad3984d83bec8..273f88caff67c839f425c4c91117067a85f820d2 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 @@ -6454,6 +6454,21 @@ int ObInnerTableSchema::all_virtual_server_clog_stat_schema(ObTableSchema &table false, //is_nullable false); //is_autoincrement } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("svr_min_log_timestamp", //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)) { table_schema.get_part_option().set_part_func_type(PARTITION_FUNC_TYPE_HASH); if (OB_FAIL(table_schema.get_part_option().set_part_expr("hash (addr_to_partition_id(svr_ip, svr_port))"))) { 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 8572fdceeb4e98c6c070ce00a14662b5190d20f4..5f5058de8191e2fcf6625c4d10a171f8c43db8e5 100644 --- a/src/share/inner_table/ob_inner_table_schema_def.py +++ b/src/share/inner_table/ob_inner_table_schema_def.py @@ -7233,6 +7233,7 @@ def_table_schema( ('zone_type', 'varchar:MAX_ZONE_INFO_LENGTH'), ('merge_status', 'varchar:MAX_ZONE_INFO_LENGTH'), ('zone_status', 'varchar:MAX_ZONE_INFO_LENGTH'), + ('svr_min_log_timestamp', 'int'), ], partition_columns = ['svr_ip', 'svr_port'], )