diff --git a/deps/oblib/src/rpc/obrpc/ob_rpc_packet_list.h b/deps/oblib/src/rpc/obrpc/ob_rpc_packet_list.h index 2551bcec8f..bfd1b3da4f 100644 --- a/deps/oblib/src/rpc/obrpc/ob_rpc_packet_list.h +++ b/deps/oblib/src/rpc/obrpc/ob_rpc_packet_list.h @@ -919,7 +919,7 @@ PCODE_DEF(OB_DROP_EVENT_JOB, 0x1204) PCODE_DEF(OB_RUN_DBMS_JOB, 0x1205) // DBMS Scheduler API PCODE_DEF(OB_RUN_DBMS_SCHED_JOB, 0x1206) -//PCODE_DEF(OB_STOP_DBMS_SCHED_JOB, 0x1207) +PCODE_DEF(OB_STOP_DBMS_SCHED_JOB, 0x1207) // label security PCODE_DEF(OB_HANDLE_LABEL_SE_POLICY_DDL, 0x1301) diff --git a/src/observer/CMakeLists.txt b/src/observer/CMakeLists.txt index 0f37fa5177..ff1d3aa2bb 100644 --- a/src/observer/CMakeLists.txt +++ b/src/observer/CMakeLists.txt @@ -432,6 +432,7 @@ ob_set_subtarget(ob_server virtual_table virtual_table/ob_all_virtual_storage_ha_error_diagnose.cpp virtual_table/ob_all_virtual_storage_ha_perf_diagnose.cpp virtual_table/ob_all_virtual_sys_variable_default_value.cpp + virtual_table/ob_all_virtual_tenant_scheduler_running_job.cpp virtual_table/ob_all_virtual_compatibility_control.cpp ) diff --git a/src/observer/dbms_scheduler/ob_dbms_sched_job_executor.cpp b/src/observer/dbms_scheduler/ob_dbms_sched_job_executor.cpp index f9a464d410..0d2e439c94 100644 --- a/src/observer/dbms_scheduler/ob_dbms_sched_job_executor.cpp +++ b/src/observer/dbms_scheduler/ob_dbms_sched_job_executor.cpp @@ -98,6 +98,7 @@ int ObDBMSSchedJobExecutor::init_session( OZ (session.set_user( user_info->get_user_name(), user_info->get_host_name_str(), user_info->get_user_id())); OX (session.set_user_priv_set(OB_PRIV_ALL | OB_PRIV_GRANT)); + OX (session.set_shadow(true)); if (OB_SUCC(ret) && job_info.is_date_expression_job_class()) { // set larger timeout for mview scheduler jobs const int64_t QUERY_TIMEOUT_US = (24 * 60 * 60 * 1000000L); // 24hours @@ -235,154 +236,132 @@ int ObDBMSSchedJobExecutor::run_dbms_sched_job( CK (OB_LIKELY(inited_)); CK (OB_NOT_NULL(sql_proxy_)); CK (sql_proxy_->is_inited()); - if (OB_FAIL(ObDBMSSchedJobExecutor::create_session(tenant_id, free_session_ctx, session_info))) { + CK (job_info.valid()); + CK ((job_info.get_what().length() != 0) || (job_info.get_program_name().length() != 0)); + if (OB_FAIL(ret)) { + // do nothing + } else if (OB_FAIL(ObDBMSSchedJobExecutor::create_session(tenant_id, free_session_ctx, session_info))) { LOG_WARN("failed to create session", KR(ret), K(tenant_id)); } else { - CK (job_info.valid()); - CK ((job_info.get_what().length() != 0) || (job_info.get_program_name().length() != 0)); - if (OB_SUCC(ret)) { - if (job_info.get_what().length() != 0) { // action - if (job_info.is_oracle_tenant_) { - OZ (what.append_fmt("BEGIN %.*s; END;", - job_info.get_what().length(), job_info.get_what().ptr())); - } else { - //mysql mode not support anonymous block - OZ (what.append_fmt("CALL %.*s;", - job_info.get_what().length(), job_info.get_what().ptr())); - } - } else { // program - ObSqlString sql; - ObString program_action; - uint64_t number_of_argument = 0; - OZ (sql.assign_fmt("select program_action, number_of_argument from %s where program_name = \'%.*s\'", - OB_ALL_TENANT_SCHEDULER_PROGRAM_TNAME, - job_info.get_program_name().length(), - job_info.get_program_name().ptr())); - SMART_VAR(ObMySQLProxy::MySQLResult, result) { - if (OB_FAIL(sql_proxy_->read(result, tenant_id, sql.ptr()))) { - LOG_WARN("execute query failed", K(ret), K(sql), K(tenant_id), K(job_info.get_program_name().ptr()), K(job_info.get_job_name().ptr())); - } else if (OB_ISNULL(result.get_result())) { - ret = OB_ERR_UNEXPECTED; - LOG_WARN("failed to get result", K(ret), K(tenant_id), K(job_info.get_job_name().ptr()), K(job_info.get_program_name().ptr())); + if (job_info.get_what().length() != 0) { // action + if (job_info.is_oracle_tenant_) { + OZ (what.append_fmt("BEGIN %.*s; END;", + job_info.get_what().length(), job_info.get_what().ptr())); + } else { + //mysql mode not support anonymous block + OZ (what.append_fmt("CALL %.*s;", + job_info.get_what().length(), job_info.get_what().ptr())); + } + } else { // program + ObSqlString sql; + ObString program_action; + uint64_t number_of_argument = 0; + OZ (sql.assign_fmt("select program_action, number_of_argument from %s where program_name = \'%.*s\'", + OB_ALL_TENANT_SCHEDULER_PROGRAM_TNAME, + job_info.get_program_name().length(), + job_info.get_program_name().ptr())); + SMART_VAR(ObMySQLProxy::MySQLResult, result) { + if (OB_FAIL(sql_proxy_->read(result, tenant_id, sql.ptr()))) { + LOG_WARN("execute query failed", K(ret), K(sql), K(tenant_id), K(job_info.get_program_name().ptr()), K(job_info.get_job_name().ptr())); + } else if (OB_NOT_NULL(result.get_result())) { + if (OB_SUCCESS == (ret = result.get_result()->next())) { + EXTRACT_VARCHAR_FIELD_MYSQL_SKIP_RET(*(result.get_result()), "program_action", program_action); + EXTRACT_INT_FIELD_MYSQL_SKIP_RET(*(result.get_result()), "number_of_argument", number_of_argument, uint64_t); + if (OB_SUCC(ret) && (result.get_result( )->next()) != OB_ITER_END) { + LOG_ERROR("got more than one row for dbms sched program!", K(ret), K(tenant_id), K(job_info.get_job_name().ptr()), K(job_info.get_program_name().ptr())); + ret = OB_ERR_UNEXPECTED; + } + } else if (OB_ITER_END == ret) { + LOG_INFO("program not exists, may delete alreay!", K(ret), K(tenant_id), K(job_info.get_program_name().ptr()), K(job_info.get_program_name().ptr())); + ret = OB_SUCCESS; } else { - if (OB_SUCCESS == (ret = result.get_result()->next())) { - EXTRACT_VARCHAR_FIELD_MYSQL_SKIP_RET(*(result.get_result()), "program_action", program_action); - EXTRACT_INT_FIELD_MYSQL_SKIP_RET(*(result.get_result()), "number_of_argument", number_of_argument, uint64_t); - if (OB_SUCC(ret)) { - int tmp_ret = result.get_result()->next(); - if (OB_SUCCESS == tmp_ret) { - ret = OB_ERR_UNEXPECTED; - LOG_ERROR("got more than one row for dbms sched program!", K(ret), K(tenant_id), K(job_info.get_job_name().ptr()), K(job_info.get_program_name().ptr())); - } else if (tmp_ret != OB_ITER_END) { - ret = tmp_ret; - LOG_WARN("got next row for dbms sched program failed", K(ret), K(tenant_id), K(job_info.get_job_name().ptr()), K(job_info.get_program_name().ptr())); - } - } - } else if (OB_ITER_END == ret) { - LOG_INFO("program not exists, may delete alreay!", K(ret), K(tenant_id), K(job_info.get_program_name().ptr()), K(job_info.get_program_name().ptr())); - ret = OB_SUCCESS; - } else { - LOG_WARN("failed to get next", K(ret), K(tenant_id), K(job_info.get_job_name().ptr()), K(job_info.get_program_name().ptr())); - } + LOG_WARN("failed to get next", K(ret), K(tenant_id), K(job_info.get_job_name().ptr()), K(job_info.get_program_name().ptr())); } } - OZ (what.append_fmt("BEGIN %.*s(", - program_action.length(), program_action.ptr())); - if (OB_SUCC(ret) && (0 != number_of_argument)) { - ObString argument_value; - for (int i = 1; OB_SUCC(ret) && i <= number_of_argument; i++) { - argument_value.reset(); - OZ (sql.assign_fmt("select default_value from %s where program_name = \'%.*s\' and job_name = \'%.*s\' and argument_position = %d and is_for_default = 0", - OB_ALL_TENANT_SCHEDULER_PROGRAM_ARGUMENT_TNAME, - job_info.get_program_name().length(), - job_info.get_program_name().ptr(), - job_info.get_job_name().length(), - job_info.get_job_name().ptr(), - i)); - SMART_VAR(ObMySQLProxy::MySQLResult, result) { - if (OB_FAIL(sql_proxy_->read(result, tenant_id, sql.ptr()))) { - LOG_WARN("execute query failed", K(ret), K(sql), K(result.get_result()), K(tenant_id), K(job_info.get_job_name().ptr())); - } else if (OB_ISNULL(result.get_result())) { - ret = OB_ERR_UNEXPECTED; - LOG_WARN("failed to get result", K(ret), K(tenant_id), K(job_info.get_job_name().ptr())); - } else { - if (OB_SUCCESS == (ret = result.get_result()->next())) { - EXTRACT_VARCHAR_FIELD_MYSQL_SKIP_RET(*(result.get_result()), "default_value", argument_value); - if (OB_SUCC(ret)) { - int tmp_ret = result.get_result()->next(); - if (OB_SUCCESS == tmp_ret) { - ret = OB_ERR_UNEXPECTED; - LOG_ERROR("got more than one row for argument!", K(ret), K(tenant_id), K(job_info.get_job_name().ptr()), K(job_info.get_program_name().ptr())); - } else if (tmp_ret != OB_ITER_END) { - ret = tmp_ret; - LOG_WARN("got next row for argument failed", K(ret), K(tenant_id), K(job_info.get_job_name().ptr()), K(job_info.get_program_name().ptr())); - } - } - } else if (OB_ITER_END == ret) { - LOG_INFO("job argument not exists, use default"); - ret = OB_SUCCESS; - OZ (sql.assign_fmt("select default_value from %s where program_name = \'%.*s\' and job_name = \'%s\' and argument_position = %d and is_for_default = 1", - OB_ALL_TENANT_SCHEDULER_PROGRAM_ARGUMENT_TNAME, - job_info.get_program_name().length(), - job_info.get_program_name().ptr(), - "default", - i)); - SMART_VAR(ObMySQLProxy::MySQLResult, tmp_result) { - if (OB_FAIL(sql_proxy_->read(tmp_result, tenant_id, sql.ptr()))) { - LOG_WARN("execute query failed", K(ret), K(sql), K(tenant_id), K(job_info.get_job_name().ptr())); - } else if (OB_ISNULL(tmp_result.get_result())) { - ret = OB_ERR_UNEXPECTED; - LOG_WARN("failed to get result", K(ret), K(tenant_id), K(job_info.get_job_name().ptr())); - } else { - if (OB_SUCCESS == (ret = tmp_result.get_result()->next())) { - EXTRACT_VARCHAR_FIELD_MYSQL_SKIP_RET(*(tmp_result.get_result()), "default_value", argument_value); - if (OB_SUCC(ret)) { - int tmp_ret = tmp_result.get_result()->next(); - if (OB_SUCCESS == tmp_ret) { - ret = OB_ERR_UNEXPECTED; - LOG_ERROR("got more than one row for argument!", K(ret), K(tenant_id), K(job_info.get_job_name().ptr()), K(job_info.get_program_name().ptr())); - } else if (tmp_ret != OB_ITER_END) { - ret = tmp_ret; - LOG_WARN("got next row for argument failed", K(ret), K(tenant_id), K(job_info.get_job_name().ptr()), K(job_info.get_program_name().ptr())); - } - } - } else if (OB_ITER_END == ret) { - LOG_ERROR("program default argument not exists", K(sql.ptr()), K(job_info.get_program_name().ptr())); - } else { - LOG_WARN("failed to get next", K(ret), K(tenant_id), K(job_info.get_job_name().ptr())); - } - } - } - ret = OB_SUCCESS; - } else { - LOG_WARN("failed to get next", K(ret), K(tenant_id), K(job_info.get_job_name().ptr())); - } - } - } - if (i == 1) { - OZ (what.append_fmt("\'%.*s\'", argument_value.length(), argument_value.ptr())); - } else { - OZ (what.append_fmt(",\'%.*s\'", argument_value.length(), argument_value.ptr())); - } - } - OZ (what.append_fmt("); END;")); - } else { - LOG_ERROR("number_of_argument not exist or not right", K(ret), K(number_of_argument)); - } } - if (OB_SUCC(ret)) { - OZ (ObDBMSSchedJobExecutor::init_env(job_info, *session_info)); - CK (OB_NOT_NULL(pool = static_cast(sql_proxy_->get_pool()))); - OZ (pool->acquire_spi_conn(session_info, conn)); - OZ (conn->execute_write(tenant_id, what.string().ptr(), affected_rows)); - if (OB_NOT_NULL(conn)) { - sql_proxy_->close(conn, ret); + OZ (what.append_fmt("BEGIN %.*s(", + program_action.length(), program_action.ptr())); + if (OB_SUCC(ret) && (0 != number_of_argument)) { + ObString argument_value; + for (int i = 1; OB_SUCC(ret) && i <= number_of_argument; i++) { + argument_value.reset(); + OZ (sql.assign_fmt("select default_value from %s where program_name = \'%.*s\' and job_name = \'%.*s\' and argument_position = %d and is_for_default = 0", + OB_ALL_TENANT_SCHEDULER_PROGRAM_ARGUMENT_TNAME, + job_info.get_program_name().length(), + job_info.get_program_name().ptr(), + job_info.get_job_name().length(), + job_info.get_job_name().ptr(), + i)); + SMART_VAR(ObMySQLProxy::MySQLResult, result) { + if (OB_FAIL(sql_proxy_->read(result, tenant_id, sql.ptr()))) { + LOG_WARN("execute query failed", K(ret), K(sql), K(result.get_result()), K(tenant_id), K(job_info.get_job_name().ptr())); + } else if (OB_NOT_NULL(result.get_result())) { + if (OB_SUCCESS == (ret = result.get_result()->next())) { + EXTRACT_VARCHAR_FIELD_MYSQL_SKIP_RET(*(result.get_result()), "default_value", argument_value); + if (OB_SUCC(ret) && (result.get_result()->next()) != OB_ITER_END) { + LOG_ERROR("got more than one row for argument!", K(ret), K(tenant_id), K(job_info.get_job_name().ptr()), K(job_info.get_program_name().ptr())); + ret = OB_ERR_UNEXPECTED; + } + } else if (OB_ITER_END == ret) { + LOG_INFO("job argument not exists, use default"); + ret = OB_SUCCESS; + OZ (sql.assign_fmt("select default_value from %s where program_name = \'%.*s\' and job_name = \'%s\' and argument_position = %d and is_for_default = 1", + OB_ALL_TENANT_SCHEDULER_PROGRAM_ARGUMENT_TNAME, + job_info.get_program_name().length(), + job_info.get_program_name().ptr(), + "default", + i)); + SMART_VAR(ObMySQLProxy::MySQLResult, tmp_result) { + if (OB_FAIL(sql_proxy_->read(tmp_result, tenant_id, sql.ptr()))) { + LOG_WARN("execute query failed", K(ret), K(sql), K(tenant_id), K(job_info.get_job_name().ptr())); + } else if (OB_NOT_NULL(tmp_result.get_result())) { + if (OB_SUCCESS == (ret = tmp_result.get_result()->next())) { + EXTRACT_VARCHAR_FIELD_MYSQL_SKIP_RET(*(tmp_result.get_result()), "default_value", argument_value); + if (OB_SUCC(ret) && (tmp_result.get_result()->next()) != OB_ITER_END) { + LOG_ERROR("got more than one row for argument!", K(ret), K(tenant_id), K(job_info.get_job_name().ptr()), K(job_info.get_program_name().ptr())); + ret = OB_ERR_UNEXPECTED; + } + } else if (OB_ITER_END == ret) { + LOG_ERROR("program default argument not exists", K(sql.ptr()), K(job_info.get_program_name().ptr())); + } else { + LOG_WARN("failed to get next", K(ret), K(tenant_id), K(job_info.get_job_name().ptr())); + } + } + } + ret = OB_SUCCESS; + } else { + LOG_WARN("failed to get next", K(ret), K(tenant_id), K(job_info.get_job_name().ptr())); + } + } + } + if (i == 1) { + OZ (what.append_fmt("\'%.*s\'", argument_value.length(), argument_value.ptr())); + } else { + OZ (what.append_fmt(",\'%.*s\'", argument_value.length(), argument_value.ptr())); + } } + OZ (what.append_fmt("); END;")); + } else { + LOG_ERROR("number_of_argument not exist or not right", K(ret), K(number_of_argument)); + } + } + if (OB_SUCC(ret)) { + OZ (ObDBMSSchedJobExecutor::init_env(job_info, *session_info)); + CK (OB_NOT_NULL(pool = static_cast(sql_proxy_->get_pool()))); + OX (session_info->set_job_info(&job_info)); + OZ (pool->acquire_spi_conn(session_info, conn)); + OZ (conn->execute_write(tenant_id, what.string().ptr(), affected_rows)); + if (OB_NOT_NULL(conn)) { + sql_proxy_->close(conn, ret); } } } if (NULL != session_info) { int tmp_ret = OB_SUCCESS; + { + ObSQLSessionInfo::LockGuard lock_guard(session_info->get_thread_data_lock()); + session_info->set_job_info(nullptr); + } if (OB_TMP_FAIL(ObDBMSSchedJobExecutor::destroy_session(free_session_ctx, session_info))) { LOG_WARN("failed to destroy session", KR(tmp_ret)); ret = (OB_SUCC(ret)) ? tmp_ret : ret; diff --git a/src/observer/dbms_scheduler/ob_dbms_sched_job_master.cpp b/src/observer/dbms_scheduler/ob_dbms_sched_job_master.cpp index d8dd57eb45..174ec7a53b 100644 --- a/src/observer/dbms_scheduler/ob_dbms_sched_job_master.cpp +++ b/src/observer/dbms_scheduler/ob_dbms_sched_job_master.cpp @@ -13,7 +13,7 @@ #define USING_LOG_PREFIX RS #include "ob_dbms_sched_job_master.h" - +#include "share/ob_primary_zone_util.h"//ObPrimaryZoneUtil #include "lib/time/Time.h" #include "lib/ob_errno.h" #include "lib/oblog/ob_log_module.h" @@ -490,33 +490,22 @@ void ObDBMSSchedJobMaster::free_job_key(ObDBMSSchedJobKey *&job_key) int ObDBMSSchedJobMaster::get_execute_addr(ObDBMSSchedJobInfo &job_info, ObAddr &execute_addr) { int ret = OB_SUCCESS; + int64_t tenant_id = job_info.get_tenant_id(); + ObSchemaGetterGuard schema_guard; + const ObTenantSchema *tenant_info = NULL; + common::ObSEArray all_zone_list; if (!inited_) { ret = OB_NOT_INIT; LOG_WARN("not init yet", K(ret), K(inited_)); } else if (!job_info.valid()) { ret = OB_ERR_UNEXPECTED; LOG_WARN("dbms sched job info is invalid", K(ret), K(job_info)); - } - OZ (server_random_pick(job_info.get_tenant_id(), job_info.get_zone(), execute_addr)); - return ret; -} - -int ObDBMSSchedJobMaster::server_random_pick(int64_t tenant_id, ObString &pick_zone, ObAddr &server) -{ - int ret = OB_SUCCESS; - ObSchemaGetterGuard schema_guard; - const ObTenantSchema *tenant_info = NULL; - common::ObArray zone_list; - common::ObArray total_server; - if (!inited_) { - ret = OB_NOT_INIT; - LOG_WARN("not init yet", K(ret), K(inited_)); } else if (OB_INVALID_ID == tenant_id) { ret = OB_ERR_UNEXPECTED; LOG_WARN("invalid job id", K(ret), K(tenant_id)); - } else if (OB_ISNULL(schema_service_) || OB_ISNULL(unit_mgr_)) { + } else if (OB_ISNULL(schema_service_)) { ret = OB_ERR_UNEXPECTED; - LOG_WARN("schema_service_ or unit_mgr_ is null", KR(ret), KP(schema_service_), KP(unit_mgr_)); + LOG_WARN("schema_service_ is null", KR(ret), KP(schema_service_), KP(unit_mgr_)); } else if (OB_FAIL(schema_service_->get_tenant_schema_guard(OB_SYS_TENANT_ID, schema_guard))) { LOG_WARN("fail get schema guard", K(ret)); } else if (OB_FAIL(schema_guard.get_tenant_info(tenant_id, tenant_info))) { @@ -524,18 +513,84 @@ int ObDBMSSchedJobMaster::server_random_pick(int64_t tenant_id, ObString &pick_z } else if (OB_ISNULL(tenant_info)) { ret = OB_ERR_UNEXPECTED; LOG_WARN("null ptr", K(ret), KP(tenant_info)); - } else if (OB_FAIL(tenant_info->get_zone_list(zone_list))) { + } else if (OB_FAIL(tenant_info->get_zone_list(all_zone_list))) { LOG_WARN("fail to get zone list", K(ret)); + } + if (OB_SUCC(ret)) { + if (OB_ISNULL(job_info.get_zone())) { + ObSEArray primary_zone_list; + int tmp_ret = OB_SUCCESS; + if (OB_TMP_FAIL(ObPrimaryZoneUtil::get_tenant_primary_zone_array(*tenant_info, primary_zone_list))) { + LOG_WARN("failed to get tenant primary zone array", KR(tmp_ret)); + } else if (OB_TMP_FAIL(server_random_pick_from_zone_list(tenant_id, primary_zone_list, execute_addr))) { + LOG_WARN("get execute addr from primary zone failed", + KR(tmp_ret), K(tenant_id), K(primary_zone_list)); + } + if (tmp_ret != OB_SUCCESS) { + if (OB_FAIL(server_random_pick_from_zone_list(tenant_id, all_zone_list, execute_addr))) { + LOG_WARN("get execute addr from all zone failed", + KR(ret), K(tenant_id), K(execute_addr)); + } + } + } else if (0 == job_info.get_zone().compare("RANDOM")) { + if (OB_FAIL(server_random_pick_from_zone_list(tenant_id, all_zone_list, execute_addr))) { + LOG_WARN("get execute addr from random failed", + KR(ret), K(tenant_id), K(execute_addr)); + } + } else { + common::ObSEArray filter_zone_list; + for (int64_t i = 0; OB_SUCC(ret) && i < all_zone_list.count(); ++i) { + common::ObZone zone = all_zone_list.at(i); + if (0 == job_info.get_zone().case_compare(zone.str())) { + if (OB_FAIL(filter_zone_list.push_back(zone))) { + LOG_WARN("failed to push back to filter_zone_list", + KR(ret), K(job_info.get_tenant_id()), K(job_info.get_zone())); + } + } + } + if (OB_SUCC(ret)) { + if (OB_FAIL(server_random_pick_from_zone_list(tenant_id, filter_zone_list, execute_addr))) { + LOG_WARN("get execute addr from filter zone failed", + KR(ret), K(job_info.get_tenant_id()), K(job_info.get_zone()), K(execute_addr)); + } + } + } + } + return ret; +} + +int ObDBMSSchedJobMaster::server_random_pick_from_zone_list(int64_t tenant_id, common::ObIArray &zone_list, ObAddr &server) +{ + int ret = OB_SUCCESS; + common::ObSEArray total_server; + if (!inited_) { + ret = OB_NOT_INIT; + LOG_WARN("not init yet", K(ret), K(inited_)); + } else if (OB_INVALID_ID == tenant_id) { + ret = OB_ERR_UNEXPECTED; + LOG_WARN("invalid job id", K(ret), K(tenant_id)); + } else if (OB_ISNULL(unit_mgr_)) { + ret = OB_ERR_UNEXPECTED; + LOG_WARN("unit_mgr_ is null", KR(ret), KP(schema_service_), KP(unit_mgr_)); } else { for (int64_t i = 0; OB_SUCC(ret) && i < zone_list.count(); ++i) { common::ObZone zone = zone_list.at(i); - common::ObArray server_list; - if (pick_zone.empty() || 0 == pick_zone.case_compare(zone.str())) { - if (OB_FAIL(SVR_TRACER.get_alive_servers(zone, server_list))) { - LOG_WARN("fail to get zone server list", KR(ret), K(zone)); - } else { - for (int64_t j = 0; OB_SUCC(ret) && j < server_list.count(); j++) { - if (OB_FAIL(total_server.push_back(server_list.at(j)))) { + common::ObSEArray server_list; + + int tmp_ret = OB_SUCCESS; + if (OB_TMP_FAIL(SVR_TRACER.get_alive_servers(zone, server_list))) { + LOG_WARN("fail to get zone server list", KR(tmp_ret), K(zone)); + } else { + for (int64_t j = 0; OB_SUCC(ret) && j < server_list.count(); j++) { + ObAddr server = server_list.at(j); + bool is_active = false; + bool on_server = false; + if (OB_TMP_FAIL(SVR_TRACER.check_server_active(server, is_active))) { + LOG_WARN("fail to check server active", KR(tmp_ret), K(server)); + } else if (OB_TMP_FAIL(unit_mgr_->check_tenant_on_server(tenant_id, server, on_server))) { + LOG_WARN("fail to check tenant on server", KR(tmp_ret), K(tenant_id), K(server)); + } else if (is_active && on_server) { + if(OB_FAIL(total_server.push_back(server))) { LOG_WARN("fail to push server to total", K(ret)); } } @@ -545,42 +600,14 @@ int ObDBMSSchedJobMaster::server_random_pick(int64_t tenant_id, ObString &pick_z } if (OB_SUCC(ret) && 0 == total_server.count()) { ret = OB_ERR_UNEXPECTED; - LOG_WARN("can not find an alive server", K(ret), K(total_server), K(pick_zone), K(tenant_id)); + LOG_WARN("can not find an alive server", K(ret), K(total_server), K(tenant_id)); } if (OB_SUCC(ret)) { - ObAddr pick; - bool is_alive = false; - bool is_active = false; - bool on_server = false; int64_t pos = rand_.get(0,65536) % total_server.count(); - int64_t cnt = 0; - do { - pos = (pos + 1) % total_server.count(); - pick = total_server.at(pos); - if (OB_FAIL(SVR_TRACER.check_server_alive(pick, is_alive))) { - LOG_WARN("fail to check server alive", KR(ret), K(pick)); - } else if (OB_FAIL(SVR_TRACER.check_server_active(pick, is_active))) { - LOG_WARN("fail to check server active", KR(ret), K(pick)); - } else if (OB_FAIL(unit_mgr_->check_tenant_on_server(tenant_id, pick, on_server))) { - LOG_WARN("fail to check tenant on server", KR(ret), K(tenant_id), K(pick)); - } else { - if (is_alive && is_active && on_server) { - break; - } - cnt++; - } - } while (cnt < total_server.count()); - if (cnt >= total_server.count()) { - ret = OB_ERR_UNEXPECTED; - LOG_WARN("can not find a alive server", K(ret), K(cnt), K(total_server.count())); - } else { - LOG_INFO("get a addr for execute", K(ret), K(tenant_id), K(pick)); - server = pick; - } + server = total_server.at(pos); } return ret; } - int ObDBMSSchedJobMaster::check_all_tenants() { int ret = OB_SUCCESS; @@ -622,9 +649,7 @@ int ObDBMSSchedJobMaster::check_all_tenants() uint64_t data_version = 0; if (OB_FAIL(GET_MIN_DATA_VERSION(tenant_ids.at(i), data_version))) { LOG_WARN("fail to get tenant data version", KR(ret), K(data_version)); - } else if (MOCK_DATA_VERSION <= data_version) { - //add default job class - OZ (table_operator_.register_default_job_class(tenant_ids.at(i))); + } else if (DATA_VERSION_SUPPORT_JOB_CLASS(data_version)) { OZ (table_operator_.purge_run_detail_histroy(tenant_ids.at(i))); } OZ (check_new_jobs(tenant_ids.at(i), tenant_schema->is_oracle_tenant())); diff --git a/src/observer/dbms_scheduler/ob_dbms_sched_job_master.h b/src/observer/dbms_scheduler/ob_dbms_sched_job_master.h index 30766e9ee0..918e1406f6 100644 --- a/src/observer/dbms_scheduler/ob_dbms_sched_job_master.h +++ b/src/observer/dbms_scheduler/ob_dbms_sched_job_master.h @@ -212,7 +212,8 @@ public: ObDBMSSchedJobKey *&job_key, uint64_t tenant_id, bool is_oracle_tenant, uint64_t job_id, const common::ObString &job_name); void free_job_key(ObDBMSSchedJobKey *&job_key); - int server_random_pick(int64_t tenant_id, common::ObString &pick_zone, ObAddr &server); + + int server_random_pick_from_zone_list(int64_t tenant_id, common::ObIArray &zone_list, ObAddr &server); int get_execute_addr(ObDBMSSchedJobInfo &job_info, common::ObAddr &execute_addr); int check_all_tenants(); @@ -227,6 +228,9 @@ private: const static int MAX_READY_JOBS_CAPACITY = 1024 * 1024; const static int MIN_SCHEDULER_INTERVAL = 1 * 1000 * 1000; const static int CHECK_NEW_INTERVAL = 20 * 1000 * 1000; + const static int DEFAULT_ZONE_SIZE = 4; + const static int FILTER_ZONE_SIZE = 1; + const static int DEFALUT_SERVER_SIZE = 16; bool inited_; bool stoped_; diff --git a/src/observer/dbms_scheduler/ob_dbms_sched_job_rpc_processor.cpp b/src/observer/dbms_scheduler/ob_dbms_sched_job_rpc_processor.cpp index 8e36c7761e..07c7d684b1 100644 --- a/src/observer/dbms_scheduler/ob_dbms_sched_job_rpc_processor.cpp +++ b/src/observer/dbms_scheduler/ob_dbms_sched_job_rpc_processor.cpp @@ -76,5 +76,47 @@ int ObRpcRunDBMSSchedJobP::process() return ret; } +int ObRpcStopDBMSSchedJobP::process() +{ + int ret = OB_SUCCESS; + const ObDBMSSchedStopJobArg &arg = arg_; + sql::ObSQLSessionInfo *session = NULL; + if (OB_ISNULL(GCTX.session_mgr_)) { + ret = OB_ERR_UNEXPECTED; + LOG_WARN("session_mgr_ is null", K(ret)); + } else { + sql::ObSessionGetterGuard guard(*GCTX.session_mgr_, arg.session_id_); + if (OB_FAIL(guard.get_session(session))) { + LOG_WARN("failed to get session", K(arg)); + } else if (OB_ISNULL(session)) { + ret = OB_ERR_UNEXPECTED; + LOG_WARN("session is null", K(ret)); + } else { + { + ObSQLSessionInfo::LockGuard lock_guard(session->get_thread_data_lock()); + ObDBMSSchedJobInfo *job_info = session->get_job_info(); + if (OB_ISNULL(job_info)) { + ret = OB_ENTRY_NOT_EXIST; + LOG_WARN("job_info is null, maybe job end", K(ret), K(arg)); + } else if (0 != job_info->get_job_name().case_compare(arg.job_name_)) { + ret = OB_ERR_UNEXPECTED; + LOG_WARN("job_info is not expected", K(ret), KPC(job_info), K(arg)); + } + } + if (OB_SUCC(ret)) { + if (arg_.rpc_send_time_ <= session->get_sess_create_time()) { + ret = OB_ERR_UNEXPECTED; + LOG_WARN("session maybe reused by later round", K(ret), K(arg), K(session->get_sess_create_time()), KPC(session)); + } else if (OB_FAIL(GCTX.session_mgr_->kill_session(*session))) { + LOG_WARN("failed to kill session", K(ret), K(arg), KPC(session)); + } else { + LOG_INFO("stop job finish", K(arg)); + } + } + } + } + return ret; +} + } } // namespace oceanbase diff --git a/src/observer/dbms_scheduler/ob_dbms_sched_job_rpc_processor.h b/src/observer/dbms_scheduler/ob_dbms_sched_job_rpc_processor.h index 6728cfe23f..d721f0dbe6 100644 --- a/src/observer/dbms_scheduler/ob_dbms_sched_job_rpc_processor.h +++ b/src/observer/dbms_scheduler/ob_dbms_sched_job_rpc_processor.h @@ -70,6 +70,20 @@ private: const observer::ObGlobalContext &gctx_; }; +class ObRpcStopDBMSSchedJobP + : public obrpc::ObRpcProcessor > +{ +public: + ObRpcStopDBMSSchedJobP(const observer::ObGlobalContext &gctx) : gctx_(gctx) {} + +protected: + int process(); + +private: + const observer::ObGlobalContext &gctx_; +}; + + } } #endif /* SRC_OBSERVER_DBMS_SCHED_JOB_RPC_PROCESSOR_H_ */ diff --git a/src/observer/dbms_scheduler/ob_dbms_sched_job_rpc_proxy.cpp b/src/observer/dbms_scheduler/ob_dbms_sched_job_rpc_proxy.cpp index 7b4e8fc7ef..37013c634c 100644 --- a/src/observer/dbms_scheduler/ob_dbms_sched_job_rpc_proxy.cpp +++ b/src/observer/dbms_scheduler/ob_dbms_sched_job_rpc_proxy.cpp @@ -30,6 +30,7 @@ namespace obrpc OB_SERIALIZE_MEMBER(ObDBMSSchedJobArg, tenant_id_, job_id_, server_addr_, master_addr_, is_oracle_tenant_, job_name_); OB_SERIALIZE_MEMBER(ObDBMSSchedJobResult, tenant_id_, job_id_, server_addr_, status_code_); +OB_SERIALIZE_MEMBER(ObDBMSSchedStopJobArg, tenant_id_, job_name_, session_id_, rpc_send_time_); int ObDBMSSchedJobRpcProxy::run_dbms_sched_job( uint64_t tenant_id, bool is_oracle_tenant, uint64_t job_id, ObString &job_name, ObAddr server_addr, ObAddr master_addr) @@ -42,5 +43,15 @@ int ObDBMSSchedJobRpcProxy::run_dbms_sched_job( return ret; } +int ObDBMSSchedJobRpcProxy::stop_dbms_sched_job( + uint64_t tenant_id, ObString &job_name, ObAddr server_addr, uint64_t session_id) +{ + int ret = OB_SUCCESS; + ObDBMSSchedStopJobArg arg(tenant_id, job_name, session_id, ObTimeUtility::current_time()); + CK (arg.is_valid()); + OZ (this->to(server_addr).by(arg.tenant_id_).stop_dbms_sched_job(arg)); + return ret; +} + }/* ns obrpc*/ }/* ns oceanbase */ diff --git a/src/observer/dbms_scheduler/ob_dbms_sched_job_rpc_proxy.h b/src/observer/dbms_scheduler/ob_dbms_sched_job_rpc_proxy.h index f2aac5ea12..bca773f3de 100644 --- a/src/observer/dbms_scheduler/ob_dbms_sched_job_rpc_proxy.h +++ b/src/observer/dbms_scheduler/ob_dbms_sched_job_rpc_proxy.h @@ -132,16 +132,51 @@ private: DISALLOW_COPY_AND_ASSIGN(ObDBMSSchedJobResult); }; +class ObDBMSSchedStopJobArg +{ + OB_UNIS_VERSION(1); +public: + ObDBMSSchedStopJobArg(): + tenant_id_(OB_INVALID_ID), job_name_(), session_id_(OB_INVALID_ID), rpc_send_time_(OB_INVALID_TIMESTAMP) {} + + ObDBMSSchedStopJobArg(uint64_t tenant_id, + common::ObString &job_name, + uint64_t session_id, + int64_t rpc_send_time) + : tenant_id_(tenant_id), job_name_(job_name), session_id_(session_id), rpc_send_time_(rpc_send_time) {} + + inline bool is_valid() const + { + return common::is_valid_tenant_id(tenant_id_) + && !job_name_.empty() + && session_id_ != OB_INVALID_ID + && rpc_send_time_ != OB_INVALID_TIMESTAMP; + } + + TO_STRING_KV(K_(tenant_id), + K_(job_name), + K_(session_id)); + + uint64_t tenant_id_; + common::ObString job_name_; + uint64_t session_id_; + int64_t rpc_send_time_; +}; + class ObDBMSSchedJobRpcProxy : public obrpc::ObRpcProxy { public: DEFINE_TO(ObDBMSSchedJobRpcProxy); RPC_AP(PR5 run_dbms_sched_job, obrpc::OB_RUN_DBMS_SCHED_JOB, (ObDBMSSchedJobArg), ObDBMSSchedJobResult); + RPC_S(PR5 stop_dbms_sched_job, obrpc::OB_STOP_DBMS_SCHED_JOB, (ObDBMSSchedStopJobArg)); public: int run_dbms_sched_job( uint64_t tenant_id, bool is_oracle_tenant, uint64_t job_id, common::ObString &job_name, common::ObAddr server_addr, common::ObAddr master_addr); + int stop_dbms_sched_job( + uint64_t tenant_id, common::ObString &job_name, + common::ObAddr server_addr, uint64_t session_id); }; } diff --git a/src/observer/dbms_scheduler/ob_dbms_sched_job_utils.h b/src/observer/dbms_scheduler/ob_dbms_sched_job_utils.h index 985849884a..83f055ed02 100644 --- a/src/observer/dbms_scheduler/ob_dbms_sched_job_utils.h +++ b/src/observer/dbms_scheduler/ob_dbms_sched_job_utils.h @@ -20,7 +20,8 @@ #include "lib/container/ob_iarray.h" -#define MOCK_DATA_VERSION (oceanbase::common::cal_version(9, 9, 9, 9)) +#define DATA_VERSION_SUPPORT_JOB_CLASS(data_version) (data_version >= DATA_VERSION_4_3_2_0) +#define DATA_VERSION_SUPPORT_RUN_DETAIL_V2(data_version) ((MOCK_DATA_VERSION_4_2_4_0 <= data_version && DATA_VERSION_4_3_0_0 > data_version) || DATA_VERSION_4_3_2_0 <= data_version) namespace oceanbase { diff --git a/src/observer/dbms_scheduler/ob_dbms_sched_table_operator.cpp b/src/observer/dbms_scheduler/ob_dbms_sched_table_operator.cpp index 0b94723566..52bf2ffc14 100644 --- a/src/observer/dbms_scheduler/ob_dbms_sched_table_operator.cpp +++ b/src/observer/dbms_scheduler/ob_dbms_sched_table_operator.cpp @@ -100,26 +100,6 @@ int ObDBMSSchedTableOperator::update_for_start( return ret; } -int ObDBMSSchedTableOperator::seperate_job_id_from_name(ObString &job_name, int64_t &job_id) -{ - int ret = OB_SUCCESS; - const char* prefix = "JOB$_"; - job_id = 0; - if (job_name.prefix_match(prefix)) { - char nptr[JOB_NAME_MAX_SIZE]; - char *endptr = NULL; - snprintf(nptr, JOB_NAME_MAX_SIZE, "%.*s", job_name.length(), job_name.ptr()); - job_id = strtoll(nptr + strlen(prefix), &endptr, 10); - if (job_id <= 0) { - LOG_WARN("job_id is not right", K(job_name), K(nptr), K(job_id)); - } else if (*endptr != '\0' || job_id <= JOB_ID_OFFSET) { - job_id = 0; // use job_info.job_ when job_id is not formal - } - } - return ret; -} - - int ObDBMSSchedTableOperator::_build_job_drop_dml(int64_t now, ObDBMSSchedJobInfo &job_info, ObSqlString &sql) { int ret = OB_SUCCESS; @@ -181,20 +161,25 @@ int ObDBMSSchedTableOperator::_build_job_log_dml( int ret = OB_SUCCESS; ObDMLSqlSplicer dml; int64_t tenant_id = job_info.tenant_id_; + uint64_t data_version = 0; OZ (dml.add_gmt_create(now)); OZ (dml.add_gmt_modified(now)); - OZ (dml.add_pk_column("tenant_id", ObSchemaUtils::get_extract_tenant_id(tenant_id, tenant_id))); - int64_t job_id = 0; - OZ (seperate_job_id_from_name(job_info.get_job_name(), job_id)); - if (job_id <= 0) { - job_id = job_info.get_job_id(); - } - OZ (dml.add_pk_column("job", job_id)); + OZ (dml.add_pk_column("job", job_info.get_job_id())); OZ (dml.add_time_column("time", now)); OZ (dml.add_column("code", err)); OZ (dml.add_column("message", ObHexEscapeSqlStr(errmsg.empty() ? ObString("SUCCESS") : errmsg))); OZ (dml.add_column("job_class", job_info.job_class_)); - OZ (dml.splice_insert_sql(OB_ALL_TENANT_SCHEDULER_JOB_RUN_DETAIL_TNAME, sql)); + if (OB_FAIL(ret)) { + // do nothing + } else if (OB_FAIL(GET_MIN_DATA_VERSION(tenant_id, data_version))) { + LOG_WARN("fail to get tenant data version", KR(ret), K(data_version)); + } else if (DATA_VERSION_SUPPORT_RUN_DETAIL_V2(data_version)) { + OZ (dml.add_pk_column("job_name", job_info.job_name_)); + OZ (dml.splice_insert_sql(OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_TNAME, sql)); + } else { + OZ (dml.add_pk_column("tenant_id", ObSchemaUtils::get_extract_tenant_id(tenant_id, tenant_id))); + OZ (dml.splice_insert_sql(OB_ALL_TENANT_SCHEDULER_JOB_RUN_DETAIL_TNAME, sql)); + } return ret; } @@ -206,21 +191,28 @@ int ObDBMSSchedTableOperator::_check_need_record(ObDBMSSchedJobInfo &job_info, b need_record = true; if (OB_FAIL(GET_MIN_DATA_VERSION(tenant_id, data_version))) { LOG_WARN("fail to get tenant data version", KR(ret), K(data_version)); - } else if (MOCK_DATA_VERSION <= data_version) { + } else if (DATA_VERSION_SUPPORT_JOB_CLASS(data_version)) { ObDBMSSchedJobClassInfo job_class_info; ObArenaAllocator allocator("DBMSSchedTmp"); CK (OB_LIKELY(!job_info.job_class_.empty())); - OZ (get_dbms_sched_job_class_info(tenant_id, job_info.is_oracle_tenant(), job_info.get_job_class(), allocator, job_class_info)); if (OB_SUCC(ret)) { - ObString logging_level = job_class_info.get_logging_level(); - if (logging_level.empty()) { - LOG_WARN("logging_level may not assigned"); - } else if (0 == logging_level.case_compare("OFF")) { - need_record = false; - } else if (0 == logging_level.case_compare("RUNS")) { - need_record = true; - } else if (0 == logging_level.case_compare("FAILED RUNS") && err_state) { + if (0 == job_info.job_class_.case_compare("DEFAULT_JOB_CLASS")) { // DEFAULT_JOB_CLASS need record unconditionally need_record = true; + } else { + OZ (get_dbms_sched_job_class_info(tenant_id, job_info.is_oracle_tenant(), job_info.get_job_class(), allocator, job_class_info)); + if (OB_SUCC(ret)) { + ObString logging_level = job_class_info.get_logging_level(); + if (logging_level.empty()) { + LOG_WARN("logging_level may not assigned"); + } else if (0 == logging_level.case_compare("OFF")) { + need_record = false; + } else if (0 == logging_level.case_compare("RUNS")) { + need_record = true; + } else if (0 == logging_level.case_compare("FAILED RUNS") && !err_state) { + need_record = false; + } + } + } } } @@ -319,7 +311,7 @@ int ObDBMSSchedTableOperator::update_for_end(ObDBMSSchedJobInfo &job_info, int e CK (OB_NOT_NULL(sql_proxy_)); CK (OB_LIKELY(tenant_id != OB_INVALID_ID)); CK (OB_LIKELY(job_info.job_ != OB_INVALID_ID)); - OZ (_check_need_record(job_info, need_record, false)); + OZ (_check_need_record(job_info, need_record, err == 0 ? false : true)); if (OB_FAIL(ret)) { } else if (job_info.is_date_expression_job_class() && now >= job_info.end_date_ && true == job_info.auto_drop_) { @@ -669,35 +661,6 @@ int ObDBMSSchedTableOperator::get_dbms_sched_job_class_info( return ret; } -int ObDBMSSchedTableOperator::register_default_job_class(uint64_t tenant_id) -{ - int ret = OB_SUCCESS; - ObMySQLTransaction trans; - ObSqlString sql; - ObDMLSqlSplicer dml; - int64_t affected_rows = 0; - OZ (dml.add_pk_column("tenant_id", - share::schema::ObSchemaUtils::get_extract_tenant_id(tenant_id, tenant_id))); - OZ (dml.add_pk_column("job_class_name", ObHexEscapeSqlStr("DEFAULT_JOB_CLASS"))); - OZ (dml.add_column("log_history", 0)); - OZ (dml.add_column("logging_level", ObHexEscapeSqlStr("RUNS"))); - OZ (dml.add_column("comments", "DEFAULT_JOB_CLASS")); - OZ (dml.splice_insert_sql(OB_ALL_TENANT_SCHEDULER_JOB_CLASS_TNAME, sql)); - - OZ (trans.start(sql_proxy_, tenant_id, true)); - OZ (trans.write(tenant_id, sql.ptr(), affected_rows)); - CK (1 == affected_rows); - int tmp_ret = OB_SUCCESS; - if (trans.is_started()) { - if (OB_SUCCESS != (tmp_ret = trans.end(OB_SUCC(ret)))) { - LOG_WARN("failed to commit trans", KR(ret), KR(tmp_ret)); - ret = OB_SUCC(ret) ? tmp_ret : ret; - } - } - LOG_INFO("register default job class", K(ret), K(tenant_id)); - return ret; -} - int ObDBMSSchedTableOperator::purge_run_detail_histroy(uint64_t tenant_id) { int ret = OB_SUCCESS; @@ -706,12 +669,33 @@ int ObDBMSSchedTableOperator::purge_run_detail_histroy(uint64_t tenant_id) ObMySQLTransaction trans; ObSqlString sql; + ObSqlString sql0; + bool need_purge_v2_table = false; int64_t affected_rows = 0; + uint64_t data_version = 0; CK (OB_NOT_NULL(sql_proxy_)); CK (OB_LIKELY(tenant_id != OB_INVALID_ID)); - OZ (sql.append_fmt("delete from %s where tenant_id = %ld and time < usec_to_time(%ld - NVL((select log_history from %s where %s.job_class = %s.job_class_name),0) * %ld)", + if (OB_FAIL(ret)) { + // do nothing + } else if (OB_FAIL(GET_MIN_DATA_VERSION(tenant_id, data_version))) { + LOG_WARN("fail to get tenant data version", KR(ret), K(data_version)); + } else if (DATA_VERSION_SUPPORT_RUN_DETAIL_V2(data_version)) { + OZ (sql0.append_fmt("delete from %s where time < usec_to_time(%ld - " + "NVL((select log_history from %s where %s.job_class = %s.job_class_name),30) * %ld)", + OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_TNAME, + now, + OB_ALL_TENANT_SCHEDULER_JOB_CLASS_TNAME, + OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_TNAME, + OB_ALL_TENANT_SCHEDULER_JOB_CLASS_TNAME, + DAY_INTERVAL_USEC + )); + OX (need_purge_v2_table = true); + } + + OZ (sql.append_fmt("delete from %s where tenant_id = %ld and time < usec_to_time(%ld - " + "NVL((select log_history from %s where %s.job_class = %s.job_class_name),30) * %ld)", // log_history is 30 days by default which is consistend with oracle OB_ALL_TENANT_SCHEDULER_JOB_RUN_DETAIL_TNAME, share::schema::ObSchemaUtils::get_extract_tenant_id(tenant_id, tenant_id), now, @@ -722,6 +706,9 @@ int ObDBMSSchedTableOperator::purge_run_detail_histroy(uint64_t tenant_id) )); OZ (trans.start(sql_proxy_, tenant_id, true)); OZ (trans.write(tenant_id, sql.ptr(), affected_rows)); + if (need_purge_v2_table) { + OZ (trans.write(tenant_id, sql0.ptr(), affected_rows)); + } int tmp_ret = OB_SUCCESS; if (trans.is_started()) { if (OB_SUCCESS != (tmp_ret = trans.end(OB_SUCC(ret)))) { @@ -730,6 +717,9 @@ int ObDBMSSchedTableOperator::purge_run_detail_histroy(uint64_t tenant_id) } } LOG_INFO("purge run detail history", K(ret), K(tenant_id), K(sql.ptr())); + if (need_purge_v2_table) { + LOG_INFO("purge run detail v2 history", K(ret), K(tenant_id), K(sql.ptr())); + } return ret; } diff --git a/src/observer/dbms_scheduler/ob_dbms_sched_table_operator.h b/src/observer/dbms_scheduler/ob_dbms_sched_table_operator.h index ddfbba5df7..f33b10bf22 100644 --- a/src/observer/dbms_scheduler/ob_dbms_sched_table_operator.h +++ b/src/observer/dbms_scheduler/ob_dbms_sched_table_operator.h @@ -68,8 +68,6 @@ public: int update_for_timeout(ObDBMSSchedJobInfo &job_info); int update_for_end(ObDBMSSchedJobInfo &job_info, int err, const common::ObString &errmsg); - int seperate_job_id_from_name(common::ObString &job_name, int64_t &job_id); - int get_dbms_sched_job_info( uint64_t tenant_id, bool is_oracle_tenant, uint64_t job_id, const common::ObString &job_name, common::ObIAllocator &allocator, ObDBMSSchedJobInfo &job_info); @@ -90,7 +88,6 @@ public: int check_job_can_running(int64_t tenant_id, int64_t alive_job_count, bool &can_running); - int register_default_job_class(uint64_t tenant_id); int purge_run_detail_histroy(uint64_t tenant_id); private: diff --git a/src/observer/ob_srv_xlator_primary.cpp b/src/observer/ob_srv_xlator_primary.cpp index 7631617ade..eee8b09768 100644 --- a/src/observer/ob_srv_xlator_primary.cpp +++ b/src/observer/ob_srv_xlator_primary.cpp @@ -117,6 +117,7 @@ void oceanbase::observer::init_srv_xlator_for_sys(ObSrvRpcXlator *xlator) { //dbms_scheduler RPC_PROCESSOR(ObRpcRunDBMSSchedJobP, gctx_); + RPC_PROCESSOR(ObRpcStopDBMSSchedJobP, gctx_); RPC_PROCESSOR(ObRpcGetServerResourceInfoP, gctx_); RPC_PROCESSOR(ObRpcReverseKeepaliveP, gctx_); diff --git a/src/observer/virtual_table/ob_all_virtual_tenant_scheduler_running_job.cpp b/src/observer/virtual_table/ob_all_virtual_tenant_scheduler_running_job.cpp new file mode 100644 index 0000000000..d1abc108db --- /dev/null +++ b/src/observer/virtual_table/ob_all_virtual_tenant_scheduler_running_job.cpp @@ -0,0 +1,261 @@ +/** + * 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. + */ + +#include "lib/string/ob_string.h" +#include "share/config/ob_server_config.h" +#include "observer/virtual_table/ob_all_virtual_tenant_scheduler_running_job.h" +#include "observer/ob_server.h" +#include "sql/session/ob_sql_session_info.h" + +using namespace oceanbase::common; +namespace oceanbase +{ +namespace observer +{ + +ObAllVirtualTenantSchedulerRunningJob::ObAllVirtualTenantSchedulerRunningJob() + : ObVirtualTableScannerIterator(), + session_mgr_(NULL), + fill_scanner_() +{ +} + +ObAllVirtualTenantSchedulerRunningJob::~ObAllVirtualTenantSchedulerRunningJob() +{ + reset(); +} + +void ObAllVirtualTenantSchedulerRunningJob::reset() +{ + session_mgr_ = NULL; + fill_scanner_.reset(); + ObVirtualTableScannerIterator::reset(); +} + +int ObAllVirtualTenantSchedulerRunningJob::inner_get_next_row(ObNewRow *&row) +{ + int ret = OB_SUCCESS; + if (OB_ISNULL(session_mgr_)) { + ret = OB_NOT_INIT; + SERVER_LOG(WARN, "sessionMgr is NULL", K(ret)); + } else { + if (!start_to_read_) { + if (OB_FAIL(fill_scanner_.init(effective_tenant_id_, + &scanner_, + &cur_row_, + output_column_ids_))) { + SERVER_LOG(WARN, "init fill_scanner fail", K(ret)); + } else if (OB_FAIL(session_mgr_->for_each_hold_session(fill_scanner_))) { + SERVER_LOG(WARN, "fill scanner fail", K(ret)); + } else { + scanner_it_ = scanner_.begin(); + start_to_read_ = true; + } + } + if (OB_SUCCESS == ret && start_to_read_) { + if (OB_FAIL(scanner_it_.get_next_row(cur_row_))) { + if (OB_UNLIKELY(OB_ITER_END != ret)) { + SERVER_LOG(WARN, "fail to get next row", K(ret)); + } + } else { + row = &cur_row_; + } + } + } + return ret; +} + +int ObAllVirtualTenantSchedulerRunningJob::FillScanner::operator()( + hash::HashMapPair &entry) +{ + int ret = OB_SUCCESS; + ObSQLSessionInfo *sess_info = entry.second; + ObSQLSessionInfo::LockGuard lock_guard(sess_info->get_thread_data_lock()); + if (OB_UNLIKELY(0 == port_ + || OB_INVALID_TENANT_ID == effective_tenant_id_ + || NULL == scanner_ + || NULL == cur_row_ + || NULL == cur_row_->cells_ + || NULL == sess_info)) { + ret = OB_NOT_INIT; + SERVER_LOG(WARN, + "parameter or data member is NULL", + K(ret), + K(port_), + K(effective_tenant_id_), + K(scanner_), + K(cur_row_), + K(sess_info)); + } else if (!is_sys_tenant(effective_tenant_id_) + && sess_info->get_effective_tenant_id() != effective_tenant_id_) { + // skip other tenant + } else if (OB_ISNULL(sess_info->get_job_info())) { + // skip session without dbms scheduler job + } else if (OB_UNLIKELY(cur_row_->count_ < output_column_ids_.count())) { + ret = OB_ERR_UNEXPECTED; + SERVER_LOG(WARN, + "cells count is less than output column count", + K(ret), + K(cur_row_->count_), + K(output_column_ids_.count())); + } else { + uint64_t cell_idx = 0; + const int64_t col_count = output_column_ids_.count(); + ObCharsetType default_charset = ObCharset::get_default_charset(); + ObCollationType default_collation = ObCharset::get_default_collation(default_charset); + for (int64_t i = 0; OB_SUCC(ret) && i < col_count; ++i) { + uint64_t col_id = output_column_ids_.at(i); + switch(col_id) { + case SVR_IP: { + cur_row_->cells_[cell_idx].set_varchar(ip_buf_); + cur_row_->cells_[cell_idx].set_collation_type(default_collation); + break; + } + case SVR_PORT: { + cur_row_->cells_[cell_idx].set_int(port_); + break; + } + case TENANT_ID: { + cur_row_->cells_[cell_idx].set_int(sess_info->get_effective_tenant_id()); + break; + } + case OWNER: { + if (sess_info->get_is_deserialized()) { + cur_row_->cells_[cell_idx].set_varchar(""); + cur_row_->cells_[cell_idx].set_collation_type(default_collation); + } else { + cur_row_->cells_[cell_idx].set_varchar(sess_info->get_user_name()); + cur_row_->cells_[cell_idx].set_collation_type(default_collation); + } + break; + } + case JOB_NAME: { + if (OB_NOT_NULL(sess_info->get_job_info())) { + cur_row_->cells_[cell_idx].set_varchar(sess_info->get_job_info()->get_job_name()); + cur_row_->cells_[cell_idx].set_collation_type(default_collation); + } else { + cur_row_->cells_[cell_idx].set_null(); + } + break; + } + case JOB_SUBNAME: { + cur_row_->cells_[cell_idx].set_null(); + break; + } + case JOB_STYLE: { + cur_row_->cells_[cell_idx].set_null(); + break; + } + case DETACHED: { + cur_row_->cells_[cell_idx].set_null(); + break; + } + case SESSION_ID: { + cur_row_->cells_[cell_idx].set_uint64(static_cast(sess_info->get_sessid())); + break; + } + case SLAVE_PROCESS_ID: { + cur_row_->cells_[cell_idx].set_null(); + break; + } + case SLAVE_OS_PROCESS_ID: { + cur_row_->cells_[cell_idx].set_null(); + break; + } + case RESOURCE_CONSUMER_GROUP: { + cur_row_->cells_[cell_idx].set_null(); + break; + } + case RUNNING_INSTANCE: { + cur_row_->cells_[cell_idx].set_null(); + break; + } + case ELAPSED_TIME: { + cur_row_->cells_[cell_idx].set_int(ObTimeUtility::current_time() - sess_info->get_sess_create_time()); + break; + } + case CPU_USED: { + cur_row_->cells_[cell_idx].set_null(); + break; + } + case DESTINATION_OWNER: { + cur_row_->cells_[cell_idx].set_null(); + break; + } + case DESTINATION: { + cur_row_->cells_[cell_idx].set_null(); + break; + } + case CREDENTIAL_OWNER: { + cur_row_->cells_[cell_idx].set_null(); + break; + } + case CREDENTIAL_NAME: { + cur_row_->cells_[cell_idx].set_null(); + break; + } + default: { + ret = OB_ERR_UNEXPECTED; + SERVER_LOG(WARN, "invalid column id", K(ret), K(cell_idx), + K(i), K(output_column_ids_), K(col_id)); + break; + } + } + if (OB_SUCC(ret)) { + cell_idx++; + } + } // for + // The scanner supports up to 64M, so the overflow situation is not considered for the time being + if (FAILEDx(scanner_->add_row(*cur_row_))) { + SERVER_LOG(WARN, "fail to add row", K(ret), K(*cur_row_)); + } + } + return ret; +} + +void ObAllVirtualTenantSchedulerRunningJob::FillScanner::reset() +{ + ip_buf_[0] = '\0'; + port_ = 0; + effective_tenant_id_ = OB_INVALID_TENANT_ID; + scanner_ = NULL; + cur_row_ = NULL; + output_column_ids_.reset(); +} + +int ObAllVirtualTenantSchedulerRunningJob::FillScanner::init(uint64_t effective_tenant_id, + common::ObScanner *scanner, + common::ObNewRow *cur_row, + const ObIArray &column_ids) +{ + int ret = OB_SUCCESS; + if (OB_UNLIKELY(NULL == scanner + || NULL == cur_row)) { + ret = OB_NOT_INIT; + SERVER_LOG(WARN, + "some parameter is NULL", K(ret), K(scanner), K(cur_row)); + } else if (OB_FAIL(output_column_ids_.assign(column_ids))) { + SQL_ENG_LOG(WARN, "fail to assign output column ids", K(ret), K(column_ids)); + } else if (!ObServerConfig::get_instance().self_addr_.ip_to_string(ip_buf_, sizeof(ip_buf_))) { + ret = OB_ERR_UNEXPECTED; + SERVER_LOG(WARN, "ip_to_string failed", K(ret)); + } else { + port_ = ObServer::get_instance().get_self().get_port(); + effective_tenant_id_ = effective_tenant_id; + scanner_ = scanner; + cur_row_ = cur_row; + } + return ret; +} + +}/* ns observer*/ +}/* ns oceanbase */ diff --git a/src/observer/virtual_table/ob_all_virtual_tenant_scheduler_running_job.h b/src/observer/virtual_table/ob_all_virtual_tenant_scheduler_running_job.h new file mode 100644 index 0000000000..ba6b71c9fd --- /dev/null +++ b/src/observer/virtual_table/ob_all_virtual_tenant_scheduler_running_job.h @@ -0,0 +1,93 @@ +/** + * 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 OCEANBASE_OBSERVER_VIRTUAL_TABLE_OB_ALL_VIRTUAL_TENANT_SCHEDULER_RUNNING_JOB_ +#define OCEANBASE_OBSERVER_VIRTUAL_TABLE_OB_ALL_VIRTUAL_TENANT_SCHEDULER_RUNNING_JOB_ + +#include "share/ob_virtual_table_scanner_iterator.h" +#include "sql/session/ob_sql_session_mgr.h" +namespace oceanbase +{ +namespace common +{ +class ObNewRow; +class ObScanner; +} +namespace sql +{ +class ObSQLSessionInfo; +} +namespace observer +{ +class ObAllVirtualTenantSchedulerRunningJob : public common::ObVirtualTableScannerIterator +{ +public: + ObAllVirtualTenantSchedulerRunningJob(); + virtual ~ObAllVirtualTenantSchedulerRunningJob(); + inline void set_session_mgr(sql::ObSQLSessionMgr *session_mgr) { session_mgr_ = session_mgr; } + virtual int inner_get_next_row(common::ObNewRow *&row); + virtual void reset(); +private: + enum TENANT_SCHEDULER_RUNNING_JOB_COLUMN { + SVR_IP = common::OB_APP_MIN_COLUMN_ID, + SVR_PORT, + TENANT_ID, + OWNER, + JOB_NAME, + JOB_SUBNAME, + JOB_STYLE, + DETACHED, + SESSION_ID, + SLAVE_PROCESS_ID, + SLAVE_OS_PROCESS_ID, + RESOURCE_CONSUMER_GROUP, + RUNNING_INSTANCE, + ELAPSED_TIME, + CPU_USED, + DESTINATION_OWNER, + DESTINATION, + CREDENTIAL_OWNER, + CREDENTIAL_NAME + }; + class FillScanner + { + public: + FillScanner() + :ip_buf_(), + port_(0), + effective_tenant_id_(OB_INVALID_TENANT_ID), + scanner_(NULL), + cur_row_(NULL), + output_column_ids_() {} + virtual ~FillScanner(){} + int operator()(common::hash::HashMapPair &entry); + int init(uint64_t effective_tenant_id, + common::ObScanner *scanner, + common::ObNewRow *cur_row, + const ObIArray &column_ids); + inline void reset(); + private: + char ip_buf_[common::OB_IP_STR_BUFF]; + int32_t port_; + uint64_t effective_tenant_id_; + common::ObScanner *scanner_; + common::ObNewRow *cur_row_; + ObSEArray output_column_ids_; + DISALLOW_COPY_AND_ASSIGN(FillScanner); + }; + sql::ObSQLSessionMgr *session_mgr_; + FillScanner fill_scanner_; + DISALLOW_COPY_AND_ASSIGN(ObAllVirtualTenantSchedulerRunningJob); +}; +}//observer +}//oceanbase +#endif /* OCEANBASE_OBSERVER_VIRTUAL_TABLE_OB_ALL_VIRTUAL_TENANT_SCHEDULER_RUNNING_JOB_ */ 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 7bc6f76940..69d0702936 100644 --- a/src/observer/virtual_table/ob_virtual_table_iterator_factory.cpp +++ b/src/observer/virtual_table/ob_virtual_table_iterator_factory.cpp @@ -230,6 +230,7 @@ #include "observer/virtual_table/ob_all_virtual_nic_info.h" #include "observer/virtual_table/ob_all_virtual_sys_variable_default_value.h" #include "observer/virtual_table/ob_information_schema_enable_roles_table.h" +#include "observer/virtual_table/ob_all_virtual_tenant_scheduler_running_job.h" #include "observer/virtual_table/ob_all_virtual_compatibility_control.h" namespace oceanbase @@ -2755,6 +2756,15 @@ int ObVTIterCreator::create_vt_iter(ObVTableScanParam ¶ms, } break; } + case OB_ALL_VIRTUAL_TENANT_SCHEDULER_RUNNING_JOB_TID: + { + ObAllVirtualTenantSchedulerRunningJob *running_job = NULL; + if (OB_SUCC(NEW_VIRTUAL_TABLE(ObAllVirtualTenantSchedulerRunningJob, running_job))) { + running_job->set_session_mgr(GCTX.session_mgr_); + vt_iter = static_cast(running_job); + } + break; + } END_CREATE_VT_ITER_SWITCH_LAMBDA #define AGENT_VIRTUAL_TABLE_CREATE_ITER diff --git a/src/share/inner_table/ob_inner_table_schema.12401_12450.cpp b/src/share/inner_table/ob_inner_table_schema.12401_12450.cpp index 55b38d1861..e1f28ef5ee 100644 --- a/src/share/inner_table/ob_inner_table_schema.12401_12450.cpp +++ b/src/share/inner_table/ob_inner_table_schema.12401_12450.cpp @@ -11761,6 +11761,345 @@ int ObInnerTableSchema::all_virtual_checkpoint_diagnose_info_schema(ObTableSchem return ret; } +int ObInnerTableSchema::all_virtual_tenant_scheduler_running_job_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_TENANT_SCHEDULER_RUNNING_JOB_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_TENANT_SCHEDULER_RUNNING_JOB_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("svr_ip", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 1, //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 + 2, //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("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("owner", //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_DATABASE_NAME_LENGTH, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("job_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 + 128, //column_length + -1, //column_precision + -1, //column_scale + false, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("job_subname", //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 + 30, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("job_style", //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 + 11, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("detached", //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 + 5, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("session_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 + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("slave_process_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 + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("slave_os_process_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 + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("resource_consumer_group", //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 + 30, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("running_instance", //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 + 30, //column_length + -1, //column_precision + -1, //column_scale + true, //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 + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("cpu_used", //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 + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("destination_owner", //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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("destination", //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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("credential_owner", //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 + 30, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("credential_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 + 30, //column_length + -1, //column_precision + -1, //column_scale + true, //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); + 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_virtual_routine_privilege_schema(ObTableSchema &table_schema) { int ret = OB_SUCCESS; diff --git a/src/share/inner_table/ob_inner_table_schema.12451_12500.cpp b/src/share/inner_table/ob_inner_table_schema.12451_12500.cpp index 62c4d7eb5f..2a15d2873b 100644 --- a/src/share/inner_table/ob_inner_table_schema.12451_12500.cpp +++ b/src/share/inner_table/ob_inner_table_schema.12451_12500.cpp @@ -3715,6 +3715,503 @@ int ObInnerTableSchema::all_virtual_nic_info_schema(ObTableSchema &table_schema) return ret; } +int ObInnerTableSchema::all_virtual_scheduler_job_run_detail_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_SCHEDULER_JOB_RUN_DETAIL_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(3); + 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_SCHEDULER_JOB_RUN_DETAIL_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("job_name", //column_name + ++column_id, //column_id + 2, //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_TS("time", //column_name + ++column_id, //column_id + 3, //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_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)) { + ObObj job_default; + job_default.set_int(0); + ADD_COLUMN_SCHEMA_T("job", //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 + true, //is_nullable + false, //is_autoincrement + job_default, + job_default); //default_value + } + + if (OB_SUCC(ret)) { + ObObj log_id_default; + log_id_default.set_int(0); + ADD_COLUMN_SCHEMA_T("log_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 + true, //is_nullable + false, //is_autoincrement + log_id_default, + log_id_default); //default_value + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA_TS("log_date", //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 + true, //is_nullable + false, //is_autoincrement + false); //is_on_update_for_timestamp + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("owner", //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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("job_subname", //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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("job_class", //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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("operation", //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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("status", //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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ObObj code_default; + code_default.set_int(0); + ADD_COLUMN_SCHEMA_T("code", //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 + true, //is_nullable + false, //is_autoincrement + code_default, + code_default); //default_value + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA_TS("req_start_date", //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 + true, //is_nullable + false, //is_autoincrement + false); //is_on_update_for_timestamp + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA_TS("actual_start_date", //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 + true, //is_nullable + false, //is_autoincrement + false); //is_on_update_for_timestamp + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("run_duration", //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 + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("instance_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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("session_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 + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("slave_pid", //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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("cpu_used", //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 + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("user_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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("client_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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("global_uid", //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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("credential_owner", //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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("credential_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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("destination_owner", //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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("destination", //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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //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 + 4000, //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_max_used_column_id(column_id); + return ret; +} + int ObInnerTableSchema::all_virtual_spatial_reference_systems_schema(ObTableSchema &table_schema) { int ret = OB_SUCCESS; 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 970d375e31..7eb1f9ddfa 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 @@ -487,6 +487,470 @@ int ObInnerTableSchema::all_virtual_nic_info_ora_schema(ObTableSchema &table_sch return ret; } +int ObInnerTableSchema::all_virtual_scheduler_job_run_detail_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_SCHEDULER_JOB_RUN_DETAIL_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(2); + 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_SCHEDULER_JOB_RUN_DETAIL_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("JOB_NAME", //column_name + ++column_id, //column_id + 1, //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("TIME", //column_name + ++column_id, //column_id + 2, //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("JOB", //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 + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("LOG_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 + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("LOG_DATE", //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 + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("OWNER", //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 + 128, //column_length + 2, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("JOB_SUBNAME", //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 + 128, //column_length + 2, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("JOB_CLASS", //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 + 128, //column_length + 2, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("OPERATION", //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 + 128, //column_length + 2, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("STATUS", //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 + 128, //column_length + 2, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("CODE", //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 + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("REQ_START_DATE", //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 + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("ACTUAL_START_DATE", //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 + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("RUN_DURATION", //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 + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("INSTANCE_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 + 128, //column_length + 2, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("SESSION_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 + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("SLAVE_PID", //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 + 128, //column_length + 2, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("CPU_USED", //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 + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("USER_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 + 128, //column_length + 2, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("CLIENT_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 + 128, //column_length + 2, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("GLOBAL_UID", //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 + 128, //column_length + 2, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("CREDENTIAL_OWNER", //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 + 128, //column_length + 2, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("CREDENTIAL_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 + 128, //column_length + 2, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("DESTINATION_OWNER", //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 + 128, //column_length + 2, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("DESTINATION", //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 + 128, //column_length + 2, //column_precision + -1, //column_scale + true, //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 + 4000, //column_length + 2, //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_max_used_column_id(column_id); + return ret; +} + int ObInnerTableSchema::all_virtual_spatial_reference_systems_real_agent_ora_schema(ObTableSchema &table_schema) { int ret = OB_SUCCESS; diff --git a/src/share/inner_table/ob_inner_table_schema.21551_21600.cpp b/src/share/inner_table/ob_inner_table_schema.21551_21600.cpp index 7f2e4be947..64cbb72d6f 100644 --- a/src/share/inner_table/ob_inner_table_schema.21551_21600.cpp +++ b/src/share/inner_table/ob_inner_table_schema.21551_21600.cpp @@ -1275,6 +1275,106 @@ int ObInnerTableSchema::gv_ob_nic_info_schema(ObTableSchema &table_schema) return ret; } +int ObInnerTableSchema::dba_scheduler_job_run_details_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_DBA_SCHEDULER_JOB_RUN_DETAILS_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_DBA_SCHEDULER_JOB_RUN_DETAILS_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(NULL AS NUMBER) AS LOG_ID, CAST(NULL AS DATETIME) AS LOG_DATE, CAST(NULL AS CHAR(128)) AS OWNER, CAST(NULL AS CHAR(128)) AS JOB_NAME, CAST(NULL AS CHAR(128)) AS JOB_SUBNAME, CAST(NULL AS CHAR(128)) AS STATUS, CODE, CAST(NULL AS DATETIME) AS REQ_START_DATE, CAST(NULL AS DATETIME) AS ACTUAL_START_DATE, CAST(NULL AS NUMBER) AS RUN_DURATION, CAST(NULL AS CHAR(128)) AS INSTANCE_ID, CAST(NULL AS NUMBER) AS SESSION_ID, CAST(NULL AS CHAR(128)) AS SLAVE_PID, CAST(NULL AS NUMBER) AS CPU_USED, CAST(NULL AS CHAR(128)) AS CREDENTIAL_OWNER, CAST(NULL AS CHAR(128)) AS CREDENTIAL_NAME, CAST(NULL AS CHAR(128)) AS DESTINATION_OWNER, CAST(NULL AS CHAR(128)) AS DESTINATION, MESSAGE, JOB, TIME, JOB_CLASS, GMT_CREATE, GMT_MODIFIED FROM OCEANBASE.__ALL_TENANT_SCHEDULER_JOB_RUN_DETAIL ) UNION ALL ( SELECT LOG_ID, LOG_DATE, OWNER, JOB_NAME, JOB_SUBNAME, STATUS, CODE, REQ_START_DATE, ACTUAL_START_DATE, RUN_DURATION, INSTANCE_ID, SESSION_ID, SLAVE_PID, CPU_USED, CREDENTIAL_OWNER, CREDENTIAL_NAME, DESTINATION_OWNER, DESTINATION, MESSAGE, JOB, TIME, JOB_CLASS, GMT_CREATE, GMT_MODIFIED FROM OCEANBASE.__ALL_SCHEDULER_JOB_RUN_DETAIL_V2 ) )__"))) { + 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::cdb_scheduler_job_run_details_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_CDB_SCHEDULER_JOB_RUN_DETAILS_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_CDB_SCHEDULER_JOB_RUN_DETAILS_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(NULL AS NUMBER) AS LOG_ID, CAST(NULL AS DATETIME) AS LOG_DATE, CAST(NULL AS CHAR(128)) AS OWNER, CAST(NULL AS CHAR(128)) AS JOB_NAME, CAST(NULL AS CHAR(128)) AS JOB_SUBNAME, CAST(NULL AS CHAR(128)) AS STATUS, CODE, CAST(NULL AS DATETIME) AS REQ_START_DATE, CAST(NULL AS DATETIME) AS ACTUAL_START_DATE, CAST(NULL AS NUMBER) AS RUN_DURATION, CAST(NULL AS CHAR(128)) AS INSTANCE_ID, CAST(NULL AS NUMBER) AS SESSION_ID, CAST(NULL AS CHAR(128)) AS SLAVE_PID, CAST(NULL AS NUMBER) AS CPU_USED, CAST(NULL AS CHAR(128)) AS CREDENTIAL_OWNER, CAST(NULL AS CHAR(128)) AS CREDENTIAL_NAME, CAST(NULL AS CHAR(128)) AS DESTINATION_OWNER, CAST(NULL AS CHAR(128)) AS DESTINATION, MESSAGE, TENANT_ID, JOB, TIME, JOB_CLASS, GMT_CREATE, GMT_MODIFIED FROM OCEANBASE.__ALL_VIRTUAL_TENANT_SCHEDULER_JOB_RUN_DETAIL ) UNION ALL ( SELECT LOG_ID, LOG_DATE, OWNER, JOB_NAME, JOB_SUBNAME, STATUS, CODE, REQ_START_DATE, ACTUAL_START_DATE, RUN_DURATION, INSTANCE_ID, SESSION_ID, SLAVE_PID, CPU_USED, CREDENTIAL_OWNER, CREDENTIAL_NAME, DESTINATION_OWNER, DESTINATION, MESSAGE, TENANT_ID, JOB, TIME, JOB_CLASS, GMT_CREATE, GMT_MODIFIED FROM OCEANBASE.__ALL_VIRTUAL_SCHEDULER_JOB_RUN_DETAIL_V2 ) )__"))) { + 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; +} + } // end namespace share } // end namespace oceanbase diff --git a/src/share/inner_table/ob_inner_table_schema.25251_25300.cpp b/src/share/inner_table/ob_inner_table_schema.25251_25300.cpp index e782bb9756..de5dce0dda 100644 --- a/src/share/inner_table/ob_inner_table_schema.25251_25300.cpp +++ b/src/share/inner_table/ob_inner_table_schema.25251_25300.cpp @@ -260,7 +260,7 @@ int ObInnerTableSchema::dba_scheduler_job_run_details_ora_schema(ObTableSchema & 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 TENANT_ID, JOB, TIME, CODE, MESSAGE, JOB_CLASS, GMT_CREATE, GMT_MODIFIED FROM SYS.ALL_VIRTUAL_TENANT_SCHEDULER_JOB_RUN_DETAIL_REAL_AGENT T )__"))) { + if (OB_FAIL(table_schema.set_view_definition(R"__( ( SELECT CAST(NULL AS NUMBER) AS LOG_ID, CAST(NULL AS TIMESTAMP(6) WITH TIME ZONE) AS LOG_DATE, CAST(NULL AS VARCHAR(128)) AS OWNER, CAST(NULL AS VARCHAR(128)) AS JOB_NAME, CAST(NULL AS VARCHAR(128)) AS JOB_SUBNAME, CAST(NULL AS VARCHAR(128)) AS STATUS, CODE, CAST(NULL AS TIMESTAMP(6) WITH TIME ZONE) AS REQ_START_DATE, CAST(NULL AS TIMESTAMP(6) WITH TIME ZONE) AS ACTUAL_START_DATE, CAST(NULL AS NUMBER) AS RUN_DURATION, CAST(NULL AS VARCHAR(128)) AS INSTANCE_ID, CAST(NULL AS NUMBER) AS SESSION_ID, CAST(NULL AS VARCHAR(128)) AS SLAVE_PID, CAST(NULL AS NUMBER) AS CPU_USED, CAST(NULL AS VARCHAR(128)) AS CREDENTIAL_OWNER, CAST(NULL AS VARCHAR(128)) AS CREDENTIAL_NAME, CAST(NULL AS VARCHAR(128)) AS DESTINATION_OWNER, CAST(NULL AS VARCHAR(128)) AS DESTINATION, MESSAGE, JOB, TIME, JOB_CLASS, GMT_CREATE, GMT_MODIFIED FROM SYS.ALL_VIRTUAL_TENANT_SCHEDULER_JOB_RUN_DETAIL_REAL_AGENT ) UNION ALL ( SELECT LOG_ID, LOG_DATE, OWNER, JOB_NAME, JOB_SUBNAME, STATUS, CODE, REQ_START_DATE, ACTUAL_START_DATE, RUN_DURATION, INSTANCE_ID, SESSION_ID, SLAVE_PID, CPU_USED, CREDENTIAL_OWNER, CREDENTIAL_NAME, DESTINATION_OWNER, DESTINATION, MESSAGE, JOB, TIME, JOB_CLASS, GMT_CREATE, GMT_MODIFIED FROM SYS.ALL_VIRTUAL_SCHEDULER_JOB_RUN_DETAIL_V2_REAL_AGENT ) )__"))) { LOG_ERROR("fail to set view_definition", K(ret)); } } diff --git a/src/share/inner_table/ob_inner_table_schema.28201_28250.cpp b/src/share/inner_table/ob_inner_table_schema.28201_28250.cpp index 252e848967..57dc2ef0f0 100644 --- a/src/share/inner_table/ob_inner_table_schema.28201_28250.cpp +++ b/src/share/inner_table/ob_inner_table_schema.28201_28250.cpp @@ -12888,6 +12888,92 @@ int ObInnerTableSchema::all_user_proxy_role_info_history_idx_user_proxy_role_inf return ret; } +int ObInnerTableSchema::all_scheduler_job_run_detail_v2_idx_scheduler_job_run_detail_v2_time_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_SCHEDULER_JOB_RUN_DETAIL_V2_IDX_SCHEDULER_JOB_RUN_DETAIL_V2_TIME_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(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_SCHEDULER_JOB_RUN_DETAIL_V2_IDX_SCHEDULER_JOB_RUN_DETAIL_V2_TIME_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)) { + ++column_id; // for gmt_create + } + + if (OB_SUCC(ret)) { + ++column_id; // for gmt_modified + } + 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_SCHEDULER_JOB_RUN_DETAIL_V2_IDX_SCHEDULER_JOB_RUN_DETAIL_V2_TIME_TID); + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA_TS("time", //column_name + column_id + 2, //column_id + 1, //rowkey_id + 1, //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("job_name", //column_name + column_id + 1, //column_id + 2, //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 + } + 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_SCHEDULER_JOB_RUN_DETAIL_V2_TID); + + table_schema.set_max_used_column_id(column_id + 2); + return ret; +} + int ObInnerTableSchema::all_virtual_table_real_agent_ora_idx_data_table_id_real_agent_schema(ObTableSchema &table_schema) { int ret = OB_SUCCESS; @@ -20219,6 +20305,83 @@ int ObInnerTableSchema::all_virtual_user_proxy_info_real_agent_ora_idx_user_prox return ret; } +int ObInnerTableSchema::all_virtual_scheduler_job_run_detail_v2_real_agent_ora_idx_scheduler_job_run_detail_v2_time_real_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_SCHEDULER_JOB_RUN_DETAIL_V2_REAL_AGENT_ORA_IDX_SCHEDULER_JOB_RUN_DETAIL_V2_TIME_REAL_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(2); + 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_SCHEDULER_JOB_RUN_DETAIL_V2_REAL_AGENT_ORA_IDX_SCHEDULER_JOB_RUN_DETAIL_V2_TIME_REAL_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); + 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); + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("TIME", //column_name + column_id + 2, //column_id + 1, //rowkey_id + 1, //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("JOB_NAME", //column_name + column_id + 1, //column_id + 2, //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 + } + 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_SCHEDULER_JOB_RUN_DETAIL_V2_REAL_AGENT_ORA_TID); + + table_schema.set_max_used_column_id(column_id + 2); + 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 b6184e44e4..1307a0eabf 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 @@ -1946,6 +1946,504 @@ int ObInnerTableSchema::all_mview_dep_schema(ObTableSchema &table_schema) return ret; } +int ObInnerTableSchema::all_scheduler_job_run_detail_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_SCHEDULER_JOB_RUN_DETAIL_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(2); + 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_SCHEDULER_JOB_RUN_DETAIL_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("job_name", //column_name + ++column_id, //column_id + 1, //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_TS("time", //column_name + ++column_id, //column_id + 2, //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)) { + ObObj job_default; + job_default.set_int(0); + ADD_COLUMN_SCHEMA_T("job", //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 + true, //is_nullable + false, //is_autoincrement + job_default, + job_default); //default_value + } + + if (OB_SUCC(ret)) { + ObObj log_id_default; + log_id_default.set_int(0); + ADD_COLUMN_SCHEMA_T("log_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 + true, //is_nullable + false, //is_autoincrement + log_id_default, + log_id_default); //default_value + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA_TS("log_date", //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 + true, //is_nullable + false, //is_autoincrement + false); //is_on_update_for_timestamp + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("owner", //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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("job_subname", //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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("job_class", //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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("operation", //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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("status", //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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ObObj code_default; + code_default.set_int(0); + ADD_COLUMN_SCHEMA_T("code", //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 + true, //is_nullable + false, //is_autoincrement + code_default, + code_default); //default_value + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA_TS("req_start_date", //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 + true, //is_nullable + false, //is_autoincrement + false); //is_on_update_for_timestamp + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA_TS("actual_start_date", //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 + true, //is_nullable + false, //is_autoincrement + false); //is_on_update_for_timestamp + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("run_duration", //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 + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("instance_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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("session_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 + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("slave_pid", //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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("cpu_used", //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 + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("user_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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("client_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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("global_uid", //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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("credential_owner", //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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("credential_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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("destination_owner", //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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("destination", //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 + 128, //column_length + -1, //column_precision + -1, //column_scale + true, //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 + 4000, //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_SCHEDULER_JOB_RUN_DETAIL_V2_TID); + table_schema.set_aux_lob_meta_tid(OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_AUX_LOB_META_TID); + table_schema.set_aux_lob_piece_tid(OB_ALL_SCHEDULER_JOB_RUN_DETAIL_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 d949d74c30..416ada2429 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 @@ -1375,6 +1375,141 @@ int ObInnerTableSchema::all_mview_dep_aux_lob_meta_schema(ObTableSchema &table_s return ret; } +int ObInnerTableSchema::all_scheduler_job_run_detail_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_SCHEDULER_JOB_RUN_DETAIL_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_SCHEDULER_JOB_RUN_DETAIL_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_SCHEDULER_JOB_RUN_DETAIL_V2_AUX_LOB_META_TID); + table_schema.set_data_table_id(OB_ALL_SCHEDULER_JOB_RUN_DETAIL_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 58b2f2d835..5e2488a054 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 @@ -925,6 +925,96 @@ int ObInnerTableSchema::all_mview_dep_aux_lob_piece_schema(ObTableSchema &table_ return ret; } +int ObInnerTableSchema::all_scheduler_job_run_detail_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_SCHEDULER_JOB_RUN_DETAIL_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_SCHEDULER_JOB_RUN_DETAIL_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_SCHEDULER_JOB_RUN_DETAIL_V2_AUX_LOB_PIECE_TID); + table_schema.set_data_table_id(OB_ALL_SCHEDULER_JOB_RUN_DETAIL_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 bf10717fc6..fc0970ea05 100644 --- a/src/share/inner_table/ob_inner_table_schema.h +++ b/src/share/inner_table/ob_inner_table_schema.h @@ -590,6 +590,7 @@ public: static int all_user_proxy_role_info_schema(share::schema::ObTableSchema &table_schema); static int all_user_proxy_role_info_history_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 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); @@ -1016,6 +1017,7 @@ public: static int all_virtual_checkpoint_diagnose_memtable_info_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_checkpoint_diagnose_checkpoint_unit_info_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_checkpoint_diagnose_info_schema(share::schema::ObTableSchema &table_schema); + static int all_virtual_tenant_scheduler_running_job_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_routine_privilege_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_routine_privilege_history_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_aux_stat_schema(share::schema::ObTableSchema &table_schema); @@ -1041,6 +1043,7 @@ public: static int all_virtual_tenant_resource_limit_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_tenant_resource_limit_detail_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_nic_info_schema(share::schema::ObTableSchema &table_schema); + static int all_virtual_scheduler_job_run_detail_v2_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_spatial_reference_systems_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); @@ -1313,6 +1316,7 @@ public: static int all_virtual_tenant_resource_limit_ora_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_tenant_resource_limit_detail_ora_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_nic_info_ora_schema(share::schema::ObTableSchema &table_schema); + static int all_virtual_scheduler_job_run_detail_v2_real_agent_ora_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_spatial_reference_systems_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); @@ -1750,6 +1754,8 @@ public: static int events_schema(share::schema::ObTableSchema &table_schema); static int v_ob_nic_info_schema(share::schema::ObTableSchema &table_schema); static int gv_ob_nic_info_schema(share::schema::ObTableSchema &table_schema); + static int dba_scheduler_job_run_details_schema(share::schema::ObTableSchema &table_schema); + static int cdb_scheduler_job_run_details_schema(share::schema::ObTableSchema &table_schema); static int dba_synonyms_schema(share::schema::ObTableSchema &table_schema); static int dba_objects_ora_schema(share::schema::ObTableSchema &table_schema); static int all_objects_schema(share::schema::ObTableSchema &table_schema); @@ -2511,6 +2517,7 @@ public: static int all_user_proxy_role_info_aux_lob_meta_schema(share::schema::ObTableSchema &table_schema); static int all_user_proxy_role_info_history_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_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); @@ -2809,6 +2816,7 @@ public: static int all_user_proxy_role_info_aux_lob_piece_schema(share::schema::ObTableSchema &table_schema); static int all_user_proxy_role_info_history_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_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); @@ -2892,6 +2900,7 @@ public: static int all_virtual_dbms_lock_allocated_real_agent_ora_idx_dbms_lock_allocated_lockhandle_real_agent_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_dbms_lock_allocated_real_agent_ora_idx_dbms_lock_allocated_expiration_real_agent_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_user_proxy_info_real_agent_ora_idx_user_proxy_info_proxy_user_id_real_agent_schema(share::schema::ObTableSchema &table_schema); + static int all_virtual_scheduler_job_run_detail_v2_real_agent_ora_idx_scheduler_job_run_detail_v2_time_real_agent_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_ash_ora_all_virtual_ash_i1_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_sql_plan_monitor_ora_all_virtual_sql_plan_monitor_i1_schema(share::schema::ObTableSchema &table_schema); static int all_virtual_system_event_ora_all_virtual_system_event_i1_schema(share::schema::ObTableSchema &table_schema); @@ -3009,6 +3018,7 @@ public: static int all_user_proxy_info_idx_user_proxy_info_proxy_user_id_schema(share::schema::ObTableSchema &table_schema); static int all_user_proxy_info_history_idx_user_proxy_info_proxy_user_id_history_schema(share::schema::ObTableSchema &table_schema); static int all_user_proxy_role_info_history_idx_user_proxy_role_info_proxy_user_id_history_schema(share::schema::ObTableSchema &table_schema); + static int all_scheduler_job_run_detail_v2_idx_scheduler_job_run_detail_v2_time_schema(share::schema::ObTableSchema &table_schema); private: DISALLOW_COPY_AND_ASSIGN(ObInnerTableSchema); @@ -3322,6 +3332,7 @@ const schema_create_func sys_table_schema_creators [] = { ObInnerTableSchema::all_user_proxy_role_info_schema, ObInnerTableSchema::all_user_proxy_role_info_history_schema, ObInnerTableSchema::all_mview_dep_schema, + ObInnerTableSchema::all_scheduler_job_run_detail_v2_schema, NULL,}; const schema_create_func virtual_table_schema_creators [] = { @@ -3751,6 +3762,7 @@ const schema_create_func virtual_table_schema_creators [] = { ObInnerTableSchema::all_virtual_checkpoint_diagnose_memtable_info_schema, ObInnerTableSchema::all_virtual_checkpoint_diagnose_checkpoint_unit_info_schema, ObInnerTableSchema::all_virtual_checkpoint_diagnose_info_schema, + ObInnerTableSchema::all_virtual_tenant_scheduler_running_job_schema, ObInnerTableSchema::all_virtual_routine_privilege_schema, ObInnerTableSchema::all_virtual_routine_privilege_history_schema, ObInnerTableSchema::all_virtual_aux_stat_schema, @@ -3776,6 +3788,7 @@ const schema_create_func virtual_table_schema_creators [] = { ObInnerTableSchema::all_virtual_tenant_resource_limit_schema, ObInnerTableSchema::all_virtual_tenant_resource_limit_detail_schema, ObInnerTableSchema::all_virtual_nic_info_schema, + ObInnerTableSchema::all_virtual_scheduler_job_run_detail_v2_schema, ObInnerTableSchema::all_virtual_spatial_reference_systems_schema, ObInnerTableSchema::all_virtual_ash_all_virtual_ash_i1_schema, ObInnerTableSchema::all_virtual_sql_plan_monitor_all_virtual_sql_plan_monitor_i1_schema, @@ -4058,6 +4071,7 @@ const schema_create_func virtual_table_schema_creators [] = { ObInnerTableSchema::all_virtual_tenant_resource_limit_ora_schema, ObInnerTableSchema::all_virtual_tenant_resource_limit_detail_ora_schema, ObInnerTableSchema::all_virtual_nic_info_ora_schema, + ObInnerTableSchema::all_virtual_scheduler_job_run_detail_v2_real_agent_ora_schema, ObInnerTableSchema::all_virtual_spatial_reference_systems_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, @@ -4132,6 +4146,7 @@ const schema_create_func virtual_table_schema_creators [] = { ObInnerTableSchema::all_virtual_dbms_lock_allocated_real_agent_ora_idx_dbms_lock_allocated_lockhandle_real_agent_schema, ObInnerTableSchema::all_virtual_dbms_lock_allocated_real_agent_ora_idx_dbms_lock_allocated_expiration_real_agent_schema, ObInnerTableSchema::all_virtual_user_proxy_info_real_agent_ora_idx_user_proxy_info_proxy_user_id_real_agent_schema, + ObInnerTableSchema::all_virtual_scheduler_job_run_detail_v2_real_agent_ora_idx_scheduler_job_run_detail_v2_time_real_agent_schema, ObInnerTableSchema::all_virtual_ash_ora_all_virtual_ash_i1_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, @@ -4580,6 +4595,8 @@ const schema_create_func sys_view_schema_creators [] = { ObInnerTableSchema::events_schema, ObInnerTableSchema::v_ob_nic_info_schema, ObInnerTableSchema::gv_ob_nic_info_schema, + ObInnerTableSchema::dba_scheduler_job_run_details_schema, + ObInnerTableSchema::cdb_scheduler_job_run_details_schema, ObInnerTableSchema::dba_synonyms_schema, ObInnerTableSchema::dba_objects_ora_schema, ObInnerTableSchema::all_objects_schema, @@ -5157,6 +5174,7 @@ const schema_create_func sys_index_table_schema_creators [] = { ObInnerTableSchema::all_user_proxy_info_idx_user_proxy_info_proxy_user_id_schema, ObInnerTableSchema::all_user_proxy_info_history_idx_user_proxy_info_proxy_user_id_history_schema, ObInnerTableSchema::all_user_proxy_role_info_history_idx_user_proxy_role_info_proxy_user_id_history_schema, + ObInnerTableSchema::all_scheduler_job_run_detail_v2_idx_scheduler_job_run_detail_v2_time_schema, NULL,}; const schema_create_func information_schema_table_schema_creators[] = { @@ -5441,6 +5459,7 @@ const uint64_t tenant_space_tables [] = { OB_ALL_USER_PROXY_ROLE_INFO_TID, OB_ALL_USER_PROXY_ROLE_INFO_HISTORY_TID, OB_ALL_MVIEW_DEP_TID, + OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_TID, OB_TENANT_VIRTUAL_ALL_TABLE_TID, OB_TENANT_VIRTUAL_TABLE_COLUMN_TID, OB_TENANT_VIRTUAL_TABLE_INDEX_TID, @@ -5953,6 +5972,7 @@ const uint64_t tenant_space_tables [] = { OB_ALL_VIRTUAL_TENANT_RESOURCE_LIMIT_ORA_TID, OB_ALL_VIRTUAL_TENANT_RESOURCE_LIMIT_DETAIL_ORA_TID, OB_ALL_VIRTUAL_NIC_INFO_ORA_TID, + OB_ALL_VIRTUAL_SCHEDULER_JOB_RUN_DETAIL_V2_REAL_AGENT_ORA_TID, OB_ALL_VIRTUAL_SPATIAL_REFERENCE_SYSTEMS_REAL_AGENT_ORA_TID, OB_GV_OB_PLAN_CACHE_STAT_TID, OB_GV_OB_PLAN_CACHE_PLAN_STAT_TID, @@ -6271,6 +6291,7 @@ const uint64_t tenant_space_tables [] = { OB_EVENTS_TID, OB_V_OB_NIC_INFO_TID, OB_GV_OB_NIC_INFO_TID, + OB_DBA_SCHEDULER_JOB_RUN_DETAILS_TID, OB_DBA_SYNONYMS_TID, OB_DBA_OBJECTS_ORA_TID, OB_ALL_OBJECTS_TID, @@ -6836,6 +6857,7 @@ const uint64_t tenant_space_tables [] = { OB_ALL_USER_PROXY_INFO_IDX_USER_PROXY_INFO_PROXY_USER_ID_TID, OB_ALL_USER_PROXY_INFO_HISTORY_IDX_USER_PROXY_INFO_PROXY_USER_ID_HISTORY_TID, OB_ALL_USER_PROXY_ROLE_INFO_HISTORY_IDX_USER_PROXY_ROLE_INFO_PROXY_USER_ID_HISTORY_TID, + OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_IDX_SCHEDULER_JOB_RUN_DETAIL_V2_TIME_TID, OB_ALL_VIRTUAL_TABLE_REAL_AGENT_ORA_IDX_DATA_TABLE_ID_REAL_AGENT_TID, OB_ALL_VIRTUAL_TABLE_REAL_AGENT_ORA_IDX_DB_TB_NAME_REAL_AGENT_TID, OB_ALL_VIRTUAL_TABLE_REAL_AGENT_ORA_IDX_TB_NAME_REAL_AGENT_TID, @@ -6909,6 +6931,7 @@ const uint64_t tenant_space_tables [] = { OB_ALL_VIRTUAL_DBMS_LOCK_ALLOCATED_REAL_AGENT_ORA_IDX_DBMS_LOCK_ALLOCATED_LOCKHANDLE_REAL_AGENT_TID, OB_ALL_VIRTUAL_DBMS_LOCK_ALLOCATED_REAL_AGENT_ORA_IDX_DBMS_LOCK_ALLOCATED_EXPIRATION_REAL_AGENT_TID, OB_ALL_VIRTUAL_USER_PROXY_INFO_REAL_AGENT_ORA_IDX_USER_PROXY_INFO_PROXY_USER_ID_REAL_AGENT_TID, + OB_ALL_VIRTUAL_SCHEDULER_JOB_RUN_DETAIL_V2_REAL_AGENT_ORA_IDX_SCHEDULER_JOB_RUN_DETAIL_V2_TIME_REAL_AGENT_TID, OB_ALL_TABLE_AUX_LOB_META_TID, OB_ALL_COLUMN_AUX_LOB_META_TID, OB_ALL_DDL_OPERATION_AUX_LOB_META_TID, @@ -7183,6 +7206,7 @@ const uint64_t tenant_space_tables [] = { OB_ALL_USER_PROXY_ROLE_INFO_AUX_LOB_META_TID, OB_ALL_USER_PROXY_ROLE_INFO_HISTORY_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_TABLE_AUX_LOB_PIECE_TID, OB_ALL_COLUMN_AUX_LOB_PIECE_TID, OB_ALL_DDL_OPERATION_AUX_LOB_PIECE_TID, @@ -7456,7 +7480,8 @@ const uint64_t tenant_space_tables [] = { OB_ALL_USER_PROXY_INFO_HISTORY_AUX_LOB_PIECE_TID, OB_ALL_USER_PROXY_ROLE_INFO_AUX_LOB_PIECE_TID, OB_ALL_USER_PROXY_ROLE_INFO_HISTORY_AUX_LOB_PIECE_TID, - OB_ALL_MVIEW_DEP_AUX_LOB_PIECE_TID, }; + OB_ALL_MVIEW_DEP_AUX_LOB_PIECE_TID, + OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_AUX_LOB_PIECE_TID, }; const uint64_t all_ora_mapping_virtual_table_org_tables [] = { OB_ALL_VIRTUAL_SQL_AUDIT_TID, @@ -8039,6 +8064,7 @@ const char* const tenant_space_table_names [] = { OB_ALL_USER_PROXY_ROLE_INFO_TNAME, OB_ALL_USER_PROXY_ROLE_INFO_HISTORY_TNAME, OB_ALL_MVIEW_DEP_TNAME, + OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_TNAME, OB_TENANT_VIRTUAL_ALL_TABLE_TNAME, OB_TENANT_VIRTUAL_TABLE_COLUMN_TNAME, OB_TENANT_VIRTUAL_TABLE_INDEX_TNAME, @@ -8551,6 +8577,7 @@ const char* const tenant_space_table_names [] = { OB_ALL_VIRTUAL_TENANT_RESOURCE_LIMIT_ORA_TNAME, OB_ALL_VIRTUAL_TENANT_RESOURCE_LIMIT_DETAIL_ORA_TNAME, OB_ALL_VIRTUAL_NIC_INFO_ORA_TNAME, + OB_ALL_VIRTUAL_SCHEDULER_JOB_RUN_DETAIL_V2_REAL_AGENT_ORA_TNAME, OB_ALL_VIRTUAL_SPATIAL_REFERENCE_SYSTEMS_REAL_AGENT_ORA_TNAME, OB_GV_OB_PLAN_CACHE_STAT_TNAME, OB_GV_OB_PLAN_CACHE_PLAN_STAT_TNAME, @@ -8869,6 +8896,7 @@ const char* const tenant_space_table_names [] = { OB_EVENTS_TNAME, OB_V_OB_NIC_INFO_TNAME, OB_GV_OB_NIC_INFO_TNAME, + OB_DBA_SCHEDULER_JOB_RUN_DETAILS_TNAME, OB_DBA_SYNONYMS_TNAME, OB_DBA_OBJECTS_ORA_TNAME, OB_ALL_OBJECTS_TNAME, @@ -9434,6 +9462,7 @@ const char* const tenant_space_table_names [] = { OB_ALL_USER_PROXY_INFO_IDX_USER_PROXY_INFO_PROXY_USER_ID_TNAME, OB_ALL_USER_PROXY_INFO_HISTORY_IDX_USER_PROXY_INFO_PROXY_USER_ID_HISTORY_TNAME, OB_ALL_USER_PROXY_ROLE_INFO_HISTORY_IDX_USER_PROXY_ROLE_INFO_PROXY_USER_ID_HISTORY_TNAME, + OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_IDX_SCHEDULER_JOB_RUN_DETAIL_V2_TIME_TNAME, OB_ALL_VIRTUAL_TABLE_REAL_AGENT_ORA_IDX_DATA_TABLE_ID_REAL_AGENT_TNAME, OB_ALL_VIRTUAL_TABLE_REAL_AGENT_ORA_IDX_DB_TB_NAME_REAL_AGENT_TNAME, OB_ALL_VIRTUAL_TABLE_REAL_AGENT_ORA_IDX_TB_NAME_REAL_AGENT_TNAME, @@ -9507,6 +9536,7 @@ const char* const tenant_space_table_names [] = { OB_ALL_VIRTUAL_DBMS_LOCK_ALLOCATED_REAL_AGENT_ORA_IDX_DBMS_LOCK_ALLOCATED_LOCKHANDLE_REAL_AGENT_TNAME, OB_ALL_VIRTUAL_DBMS_LOCK_ALLOCATED_REAL_AGENT_ORA_IDX_DBMS_LOCK_ALLOCATED_EXPIRATION_REAL_AGENT_TNAME, OB_ALL_VIRTUAL_USER_PROXY_INFO_REAL_AGENT_ORA_IDX_USER_PROXY_INFO_PROXY_USER_ID_REAL_AGENT_TNAME, + OB_ALL_VIRTUAL_SCHEDULER_JOB_RUN_DETAIL_V2_REAL_AGENT_ORA_IDX_SCHEDULER_JOB_RUN_DETAIL_V2_TIME_REAL_AGENT_TNAME, OB_ALL_TABLE_AUX_LOB_META_TNAME, OB_ALL_COLUMN_AUX_LOB_META_TNAME, OB_ALL_DDL_OPERATION_AUX_LOB_META_TNAME, @@ -9781,6 +9811,7 @@ const char* const tenant_space_table_names [] = { OB_ALL_USER_PROXY_ROLE_INFO_AUX_LOB_META_TNAME, OB_ALL_USER_PROXY_ROLE_INFO_HISTORY_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_TABLE_AUX_LOB_PIECE_TNAME, OB_ALL_COLUMN_AUX_LOB_PIECE_TNAME, OB_ALL_DDL_OPERATION_AUX_LOB_PIECE_TNAME, @@ -10054,7 +10085,8 @@ const char* const tenant_space_table_names [] = { OB_ALL_USER_PROXY_INFO_HISTORY_AUX_LOB_PIECE_TNAME, OB_ALL_USER_PROXY_ROLE_INFO_AUX_LOB_PIECE_TNAME, OB_ALL_USER_PROXY_ROLE_INFO_HISTORY_AUX_LOB_PIECE_TNAME, - OB_ALL_MVIEW_DEP_AUX_LOB_PIECE_TNAME, }; + OB_ALL_MVIEW_DEP_AUX_LOB_PIECE_TNAME, + OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_AUX_LOB_PIECE_TNAME, }; const uint64_t only_rs_vtables [] = { OB_ALL_VIRTUAL_CORE_META_TABLE_TID, @@ -10112,7 +10144,8 @@ const uint64_t cluster_distributed_vtables [] = { OB_ALL_VIRTUAL_TX_DATA_TID, OB_ALL_VIRTUAL_STORAGE_LEAK_INFO_TID, OB_ALL_VIRTUAL_STORAGE_HA_ERROR_DIAGNOSE_TID, - OB_ALL_VIRTUAL_STORAGE_HA_PERF_DIAGNOSE_TID, }; + OB_ALL_VIRTUAL_STORAGE_HA_PERF_DIAGNOSE_TID, + OB_ALL_VIRTUAL_TENANT_SCHEDULER_RUNNING_JOB_TID, }; const uint64_t tenant_distributed_vtables [] = { OB_ALL_VIRTUAL_PROCESSLIST_TID, @@ -12946,6 +12979,14 @@ LOBMapping const lob_aux_table_mappings [] = { ObInnerTableSchema::all_mview_dep_aux_lob_piece_schema }, + { + OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_TID, + OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_AUX_LOB_META_TID, + OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_AUX_LOB_PIECE_TID, + ObInnerTableSchema::all_scheduler_job_run_detail_v2_aux_lob_meta_schema, + ObInnerTableSchema::all_scheduler_job_run_detail_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) @@ -12983,12 +13024,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 = 295; -const int64_t OB_VIRTUAL_TABLE_COUNT = 816; -const int64_t OB_SYS_VIEW_COUNT = 899; -const int64_t OB_SYS_TENANT_TABLE_COUNT = 2015; +const int64_t OB_SYS_TABLE_COUNT = 296; +const int64_t OB_VIRTUAL_TABLE_COUNT = 820; +const int64_t OB_SYS_VIEW_COUNT = 901; +const int64_t OB_SYS_TENANT_TABLE_COUNT = 2022; const int64_t OB_CORE_SCHEMA_VERSION = 1; -const int64_t OB_BOOTSTRAP_SCHEMA_VERSION = 2018; +const int64_t OB_BOOTSTRAP_SCHEMA_VERSION = 2025; } // 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 97364a9901..95a758380d 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(298, ObModIds::OB_INNER_LOB_HASH_SET))) { + if (OB_FAIL(inner_lob_map.create(299, 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 e638d6dcd7..abb0adbf77 100644 --- a/src/share/inner_table/ob_inner_table_schema.vt.cpp +++ b/src/share/inner_table/ob_inner_table_schema.vt.cpp @@ -672,6 +672,20 @@ bool vt_mapping_init() tmp_vt_mapping.is_real_vt_ = true; } + { + int64_t idx = OB_ALL_VIRTUAL_SCHEDULER_JOB_RUN_DETAIL_V2_REAL_AGENT_ORA_TID - start_idx; + VTMapping &tmp_vt_mapping = vt_mappings[idx]; + tmp_vt_mapping.mapping_tid_ = OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_TID; + tmp_vt_mapping.is_real_vt_ = true; + } + + { + int64_t idx = OB_ALL_VIRTUAL_SCHEDULER_JOB_RUN_DETAIL_V2_REAL_AGENT_ORA_IDX_SCHEDULER_JOB_RUN_DETAIL_V2_TIME_REAL_AGENT_TID - start_idx; + VTMapping &tmp_vt_mapping = vt_mappings[idx]; + tmp_vt_mapping.mapping_tid_ = OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_IDX_SCHEDULER_JOB_RUN_DETAIL_V2_TIME_TID; + tmp_vt_mapping.is_real_vt_ = true; + } + { int64_t idx = OB_ALL_VIRTUAL_SEQUENCE_OBJECT_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 e316378d98..c62064d439 100644 --- a/src/share/inner_table/ob_inner_table_schema_constants.h +++ b/src/share/inner_table/ob_inner_table_schema_constants.h @@ -326,6 +326,7 @@ const uint64_t OB_ALL_USER_PROXY_INFO_HISTORY_TID = 513; // "__all_user_proxy_in const uint64_t OB_ALL_USER_PROXY_ROLE_INFO_TID = 514; // "__all_user_proxy_role_info" const uint64_t OB_ALL_USER_PROXY_ROLE_INFO_HISTORY_TID = 515; // "__all_user_proxy_role_info_history" 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_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" @@ -752,6 +753,7 @@ const uint64_t OB_ALL_VIRTUAL_CLONE_JOB_HISTORY_TID = 12436; // "__all_virtual_c const uint64_t OB_ALL_VIRTUAL_CHECKPOINT_DIAGNOSE_MEMTABLE_INFO_TID = 12437; // "__all_virtual_checkpoint_diagnose_memtable_info" const uint64_t OB_ALL_VIRTUAL_CHECKPOINT_DIAGNOSE_CHECKPOINT_UNIT_INFO_TID = 12438; // "__all_virtual_checkpoint_diagnose_checkpoint_unit_info" const uint64_t OB_ALL_VIRTUAL_CHECKPOINT_DIAGNOSE_INFO_TID = 12439; // "__all_virtual_checkpoint_diagnose_info" +const uint64_t OB_ALL_VIRTUAL_TENANT_SCHEDULER_RUNNING_JOB_TID = 12442; // "__all_virtual_tenant_scheduler_running_job" const uint64_t OB_ALL_VIRTUAL_ROUTINE_PRIVILEGE_TID = 12443; // "__all_virtual_routine_privilege" const uint64_t OB_ALL_VIRTUAL_ROUTINE_PRIVILEGE_HISTORY_TID = 12444; // "__all_virtual_routine_privilege_history" const uint64_t OB_ALL_VIRTUAL_AUX_STAT_TID = 12447; // "__all_virtual_aux_stat" @@ -777,6 +779,7 @@ const uint64_t OB_ALL_VIRTUAL_USER_PROXY_ROLE_INFO_HISTORY_TID = 12477; // "__al const uint64_t OB_ALL_VIRTUAL_TENANT_RESOURCE_LIMIT_TID = 12481; // "__all_virtual_tenant_resource_limit" const uint64_t OB_ALL_VIRTUAL_TENANT_RESOURCE_LIMIT_DETAIL_TID = 12482; // "__all_virtual_tenant_resource_limit_detail" const uint64_t OB_ALL_VIRTUAL_NIC_INFO_TID = 12487; // "__all_virtual_nic_info" +const uint64_t OB_ALL_VIRTUAL_SCHEDULER_JOB_RUN_DETAIL_V2_TID = 12488; // "__all_virtual_scheduler_job_run_detail_v2" const uint64_t OB_ALL_VIRTUAL_SPATIAL_REFERENCE_SYSTEMS_TID = 12490; // "__all_virtual_spatial_reference_systems" 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" @@ -1049,6 +1052,7 @@ const uint64_t OB_ALL_VIRTUAL_USER_PROXY_ROLE_INFO_REAL_AGENT_ORA_TID = 15447; / const uint64_t OB_ALL_VIRTUAL_TENANT_RESOURCE_LIMIT_ORA_TID = 15450; // "ALL_VIRTUAL_TENANT_RESOURCE_LIMIT_ORA" const uint64_t OB_ALL_VIRTUAL_TENANT_RESOURCE_LIMIT_DETAIL_ORA_TID = 15451; // "ALL_VIRTUAL_TENANT_RESOURCE_LIMIT_DETAIL_ORA" const uint64_t OB_ALL_VIRTUAL_NIC_INFO_ORA_TID = 15456; // "ALL_VIRTUAL_NIC_INFO_ORA" +const uint64_t OB_ALL_VIRTUAL_SCHEDULER_JOB_RUN_DETAIL_V2_REAL_AGENT_ORA_TID = 15458; // "ALL_VIRTUAL_SCHEDULER_JOB_RUN_DETAIL_V2_REAL_AGENT_ORA" const uint64_t OB_ALL_VIRTUAL_SPATIAL_REFERENCE_SYSTEMS_REAL_AGENT_ORA_TID = 15459; // "ALL_VIRTUAL_SPATIAL_REFERENCE_SYSTEMS_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" @@ -1486,6 +1490,8 @@ const uint64_t OB_INNODB_METRICS_TID = 21579; // "INNODB_METRICS" const uint64_t OB_EVENTS_TID = 21580; // "EVENTS" const uint64_t OB_V_OB_NIC_INFO_TID = 21581; // "V$OB_NIC_INFO" const uint64_t OB_GV_OB_NIC_INFO_TID = 21586; // "GV$OB_NIC_INFO" +const uint64_t OB_DBA_SCHEDULER_JOB_RUN_DETAILS_TID = 21589; // "DBA_SCHEDULER_JOB_RUN_DETAILS" +const uint64_t OB_CDB_SCHEDULER_JOB_RUN_DETAILS_TID = 21590; // "CDB_SCHEDULER_JOB_RUN_DETAILS" const uint64_t OB_DBA_SYNONYMS_TID = 25001; // "DBA_SYNONYMS" const uint64_t OB_DBA_OBJECTS_ORA_TID = 25002; // "DBA_OBJECTS_ORA" const uint64_t OB_ALL_OBJECTS_TID = 25003; // "ALL_OBJECTS" @@ -2247,6 +2253,7 @@ const uint64_t OB_ALL_USER_PROXY_INFO_HISTORY_AUX_LOB_META_TID = 50513; // "__al const uint64_t OB_ALL_USER_PROXY_ROLE_INFO_AUX_LOB_META_TID = 50514; // "__all_user_proxy_role_info_aux_lob_meta" const uint64_t OB_ALL_USER_PROXY_ROLE_INFO_HISTORY_AUX_LOB_META_TID = 50515; // "__all_user_proxy_role_info_history_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_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" @@ -2545,6 +2552,7 @@ const uint64_t OB_ALL_USER_PROXY_INFO_HISTORY_AUX_LOB_PIECE_TID = 60513; // "__a const uint64_t OB_ALL_USER_PROXY_ROLE_INFO_AUX_LOB_PIECE_TID = 60514; // "__all_user_proxy_role_info_aux_lob_piece" const uint64_t OB_ALL_USER_PROXY_ROLE_INFO_HISTORY_AUX_LOB_PIECE_TID = 60515; // "__all_user_proxy_role_info_history_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_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" @@ -2672,6 +2680,7 @@ const uint64_t OB_ALL_COLUMN_PRIVILEGE_IDX_COLUMN_PRIVILEGE_NAME_TID = 101100; / const uint64_t OB_ALL_USER_PROXY_INFO_IDX_USER_PROXY_INFO_PROXY_USER_ID_TID = 101101; // "__all_user_proxy_info" const uint64_t OB_ALL_USER_PROXY_INFO_HISTORY_IDX_USER_PROXY_INFO_PROXY_USER_ID_HISTORY_TID = 101102; // "__all_user_proxy_info_history" const uint64_t OB_ALL_USER_PROXY_ROLE_INFO_HISTORY_IDX_USER_PROXY_ROLE_INFO_PROXY_USER_ID_HISTORY_TID = 101103; // "__all_user_proxy_role_info_history" +const uint64_t OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_IDX_SCHEDULER_JOB_RUN_DETAIL_V2_TIME_TID = 101105; // "__all_scheduler_job_run_detail_v2" const uint64_t OB_ALL_VIRTUAL_TABLE_REAL_AGENT_ORA_IDX_DATA_TABLE_ID_REAL_AGENT_TID = 15306; // "ALL_VIRTUAL_TABLE_REAL_AGENT_ORA" const uint64_t OB_ALL_VIRTUAL_TABLE_REAL_AGENT_ORA_IDX_DB_TB_NAME_REAL_AGENT_TID = 15307; // "ALL_VIRTUAL_TABLE_REAL_AGENT_ORA" const uint64_t OB_ALL_VIRTUAL_TABLE_REAL_AGENT_ORA_IDX_TB_NAME_REAL_AGENT_TID = 15308; // "ALL_VIRTUAL_TABLE_REAL_AGENT_ORA" @@ -2745,6 +2754,7 @@ const uint64_t OB_ALL_VIRTUAL_RLS_CONTEXT_REAL_AGENT_ORA_IDX_RLS_CONTEXT_TABLE_I const uint64_t OB_ALL_VIRTUAL_DBMS_LOCK_ALLOCATED_REAL_AGENT_ORA_IDX_DBMS_LOCK_ALLOCATED_LOCKHANDLE_REAL_AGENT_TID = 15415; // "ALL_VIRTUAL_DBMS_LOCK_ALLOCATED_REAL_AGENT_ORA" const uint64_t OB_ALL_VIRTUAL_DBMS_LOCK_ALLOCATED_REAL_AGENT_ORA_IDX_DBMS_LOCK_ALLOCATED_EXPIRATION_REAL_AGENT_TID = 15416; // "ALL_VIRTUAL_DBMS_LOCK_ALLOCATED_REAL_AGENT_ORA" const uint64_t OB_ALL_VIRTUAL_USER_PROXY_INFO_REAL_AGENT_ORA_IDX_USER_PROXY_INFO_PROXY_USER_ID_REAL_AGENT_TID = 15448; // "ALL_VIRTUAL_USER_PROXY_INFO_REAL_AGENT_ORA" +const uint64_t OB_ALL_VIRTUAL_SCHEDULER_JOB_RUN_DETAIL_V2_REAL_AGENT_ORA_IDX_SCHEDULER_JOB_RUN_DETAIL_V2_TIME_REAL_AGENT_TID = 15460; // "ALL_VIRTUAL_SCHEDULER_JOB_RUN_DETAIL_V2_REAL_AGENT_ORA" const char *const OB_ALL_CORE_TABLE_TNAME = "__all_core_table"; const char *const OB_ALL_TABLE_TNAME = "__all_table"; @@ -3045,6 +3055,7 @@ const char *const OB_ALL_USER_PROXY_INFO_HISTORY_TNAME = "__all_user_proxy_info_ const char *const OB_ALL_USER_PROXY_ROLE_INFO_TNAME = "__all_user_proxy_role_info"; const char *const OB_ALL_USER_PROXY_ROLE_INFO_HISTORY_TNAME = "__all_user_proxy_role_info_history"; 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_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"; @@ -3471,6 +3482,7 @@ const char *const OB_ALL_VIRTUAL_CLONE_JOB_HISTORY_TNAME = "__all_virtual_clone_ const char *const OB_ALL_VIRTUAL_CHECKPOINT_DIAGNOSE_MEMTABLE_INFO_TNAME = "__all_virtual_checkpoint_diagnose_memtable_info"; const char *const OB_ALL_VIRTUAL_CHECKPOINT_DIAGNOSE_CHECKPOINT_UNIT_INFO_TNAME = "__all_virtual_checkpoint_diagnose_checkpoint_unit_info"; const char *const OB_ALL_VIRTUAL_CHECKPOINT_DIAGNOSE_INFO_TNAME = "__all_virtual_checkpoint_diagnose_info"; +const char *const OB_ALL_VIRTUAL_TENANT_SCHEDULER_RUNNING_JOB_TNAME = "__all_virtual_tenant_scheduler_running_job"; const char *const OB_ALL_VIRTUAL_ROUTINE_PRIVILEGE_TNAME = "__all_virtual_routine_privilege"; const char *const OB_ALL_VIRTUAL_ROUTINE_PRIVILEGE_HISTORY_TNAME = "__all_virtual_routine_privilege_history"; const char *const OB_ALL_VIRTUAL_AUX_STAT_TNAME = "__all_virtual_aux_stat"; @@ -3496,6 +3508,7 @@ const char *const OB_ALL_VIRTUAL_USER_PROXY_ROLE_INFO_HISTORY_TNAME = "__all_vir const char *const OB_ALL_VIRTUAL_TENANT_RESOURCE_LIMIT_TNAME = "__all_virtual_tenant_resource_limit"; const char *const OB_ALL_VIRTUAL_TENANT_RESOURCE_LIMIT_DETAIL_TNAME = "__all_virtual_tenant_resource_limit_detail"; const char *const OB_ALL_VIRTUAL_NIC_INFO_TNAME = "__all_virtual_nic_info"; +const char *const OB_ALL_VIRTUAL_SCHEDULER_JOB_RUN_DETAIL_V2_TNAME = "__all_virtual_scheduler_job_run_detail_v2"; const char *const OB_ALL_VIRTUAL_SPATIAL_REFERENCE_SYSTEMS_TNAME = "__all_virtual_spatial_reference_systems"; 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"; @@ -3768,6 +3781,7 @@ const char *const OB_ALL_VIRTUAL_USER_PROXY_ROLE_INFO_REAL_AGENT_ORA_TNAME = "AL const char *const OB_ALL_VIRTUAL_TENANT_RESOURCE_LIMIT_ORA_TNAME = "ALL_VIRTUAL_TENANT_RESOURCE_LIMIT"; const char *const OB_ALL_VIRTUAL_TENANT_RESOURCE_LIMIT_DETAIL_ORA_TNAME = "ALL_VIRTUAL_TENANT_RESOURCE_LIMIT_DETAIL"; const char *const OB_ALL_VIRTUAL_NIC_INFO_ORA_TNAME = "ALL_VIRTUAL_NIC_INFO"; +const char *const OB_ALL_VIRTUAL_SCHEDULER_JOB_RUN_DETAIL_V2_REAL_AGENT_ORA_TNAME = "ALL_VIRTUAL_SCHEDULER_JOB_RUN_DETAIL_V2_REAL_AGENT"; const char *const OB_ALL_VIRTUAL_SPATIAL_REFERENCE_SYSTEMS_REAL_AGENT_ORA_TNAME = "ALL_VIRTUAL_SPATIAL_REFERENCE_SYSTEMS_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"; @@ -4205,6 +4219,8 @@ const char *const OB_INNODB_METRICS_TNAME = "INNODB_METRICS"; const char *const OB_EVENTS_TNAME = "EVENTS"; const char *const OB_V_OB_NIC_INFO_TNAME = "V$OB_NIC_INFO"; const char *const OB_GV_OB_NIC_INFO_TNAME = "GV$OB_NIC_INFO"; +const char *const OB_DBA_SCHEDULER_JOB_RUN_DETAILS_TNAME = "DBA_SCHEDULER_JOB_RUN_DETAILS"; +const char *const OB_CDB_SCHEDULER_JOB_RUN_DETAILS_TNAME = "CDB_SCHEDULER_JOB_RUN_DETAILS"; const char *const OB_DBA_SYNONYMS_TNAME = "DBA_SYNONYMS"; const char *const OB_DBA_OBJECTS_ORA_TNAME = "DBA_OBJECTS"; const char *const OB_ALL_OBJECTS_TNAME = "ALL_OBJECTS"; @@ -4966,6 +4982,7 @@ const char *const OB_ALL_USER_PROXY_INFO_HISTORY_AUX_LOB_META_TNAME = "__all_use const char *const OB_ALL_USER_PROXY_ROLE_INFO_AUX_LOB_META_TNAME = "__all_user_proxy_role_info_aux_lob_meta"; const char *const OB_ALL_USER_PROXY_ROLE_INFO_HISTORY_AUX_LOB_META_TNAME = "__all_user_proxy_role_info_history_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_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"; @@ -5264,6 +5281,7 @@ const char *const OB_ALL_USER_PROXY_INFO_HISTORY_AUX_LOB_PIECE_TNAME = "__all_us const char *const OB_ALL_USER_PROXY_ROLE_INFO_AUX_LOB_PIECE_TNAME = "__all_user_proxy_role_info_aux_lob_piece"; const char *const OB_ALL_USER_PROXY_ROLE_INFO_HISTORY_AUX_LOB_PIECE_TNAME = "__all_user_proxy_role_info_history_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_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"; @@ -5391,6 +5409,7 @@ const char *const OB_ALL_COLUMN_PRIVILEGE_IDX_COLUMN_PRIVILEGE_NAME_TNAME = "__i const char *const OB_ALL_USER_PROXY_INFO_IDX_USER_PROXY_INFO_PROXY_USER_ID_TNAME = "__idx_512_idx_user_proxy_info_proxy_user_id"; const char *const OB_ALL_USER_PROXY_INFO_HISTORY_IDX_USER_PROXY_INFO_PROXY_USER_ID_HISTORY_TNAME = "__idx_513_idx_user_proxy_info_proxy_user_id_history"; const char *const OB_ALL_USER_PROXY_ROLE_INFO_HISTORY_IDX_USER_PROXY_ROLE_INFO_PROXY_USER_ID_HISTORY_TNAME = "__idx_515_idx_user_proxy_role_info_proxy_user_id_history"; +const char *const OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_IDX_SCHEDULER_JOB_RUN_DETAIL_V2_TIME_TNAME = "__idx_519_idx_scheduler_job_run_detail_v2_time"; const char *const OB_ALL_VIRTUAL_TABLE_REAL_AGENT_ORA_IDX_DATA_TABLE_ID_REAL_AGENT_TNAME = "__idx_15120_idx_data_table_id_real_agent"; const char *const OB_ALL_VIRTUAL_TABLE_REAL_AGENT_ORA_IDX_DB_TB_NAME_REAL_AGENT_TNAME = "__idx_15120_idx_db_tb_name_real_agent"; const char *const OB_ALL_VIRTUAL_TABLE_REAL_AGENT_ORA_IDX_TB_NAME_REAL_AGENT_TNAME = "__idx_15120_idx_tb_name_real_agent"; @@ -5464,6 +5483,7 @@ const char *const OB_ALL_VIRTUAL_RLS_CONTEXT_REAL_AGENT_ORA_IDX_RLS_CONTEXT_TABL const char *const OB_ALL_VIRTUAL_DBMS_LOCK_ALLOCATED_REAL_AGENT_ORA_IDX_DBMS_LOCK_ALLOCATED_LOCKHANDLE_REAL_AGENT_TNAME = "__idx_15397_idx_dbms_lock_allocated_lockhandle_real_agent"; const char *const OB_ALL_VIRTUAL_DBMS_LOCK_ALLOCATED_REAL_AGENT_ORA_IDX_DBMS_LOCK_ALLOCATED_EXPIRATION_REAL_AGENT_TNAME = "__idx_15397_idx_dbms_lock_allocated_expiration_real_agent"; const char *const OB_ALL_VIRTUAL_USER_PROXY_INFO_REAL_AGENT_ORA_IDX_USER_PROXY_INFO_PROXY_USER_ID_REAL_AGENT_TNAME = "__idx_15446_idx_user_proxy_info_proxy_user_id_real_agent"; +const char *const OB_ALL_VIRTUAL_SCHEDULER_JOB_RUN_DETAIL_V2_REAL_AGENT_ORA_IDX_SCHEDULER_JOB_RUN_DETAIL_V2_TIME_REAL_AGENT_TNAME = "__idx_15458_idx_scheduler_job_run_detail_v2_time_real_agent"; // initial data for __all_privilege struct PrivilegeRow { 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 ddcf7c7e17..ac0e98a78e 100644 --- a/src/share/inner_table/ob_inner_table_schema_def.py +++ b/src/share/inner_table/ob_inner_table_schema_def.py @@ -7255,7 +7255,45 @@ def_table_schema( ] ) -# 519 : __all_scheduler_job_run_detail_v2 +def_table_schema( + owner = 'fyy280124', + table_name = '__all_scheduler_job_run_detail_v2', + table_id = '519', + table_type = 'SYSTEM_TABLE', + gm_columns = ['gmt_create', 'gmt_modified'], + rowkey_columns = [ + ('job_name', 'varchar:128', 'false'), + ('time', 'timestamp', 'false'), + ], + in_tenant_space = True, + is_cluster_private = False, + normal_columns = [ + ('job', 'int', 'true', '0'), + ('log_id', 'int', 'true', '0'), + ('log_date', 'timestamp', 'true'), + ('owner', 'varchar:128', 'true'), + ('job_subname', 'varchar:128', 'true'), + ('job_class', 'varchar:128', 'true'), + ('operation', 'varchar:128', 'true'), + ('status', 'varchar:128', 'true'), + ('code', 'int', 'true', '0'), + ('req_start_date', 'timestamp', 'true'), + ('actual_start_date', 'timestamp', 'true'), + ('run_duration', 'int', 'true'), + ('instance_id', 'varchar:128', 'true'), + ('session_id', 'uint', 'true'), + ('slave_pid', 'varchar:128', 'true'), + ('cpu_used', 'int', 'true'), + ('user_name', 'varchar:128', 'true'), + ('client_id', 'varchar:128', 'true'), + ('global_uid', 'varchar:128', 'true'), + ('credential_owner', 'varchar:128', 'true'), + ('credential_name', 'varchar:128', 'true'), + ('destination_owner', 'varchar:128', 'true'), + ('destination', 'varchar:128', 'true'), + ('message', 'varchar:4000'), + ], +) # 余留位置(此行之前占位) # 本区域占位建议:采用真实表名进行占位 @@ -14179,7 +14217,39 @@ def_table_schema( # 12440: __all_virtual_wr_system_event # 12441: __all_virtual_wr_event_name -# 12442: __all_virtual_tenant_scheduler_running_job + +def_table_schema( + owner = 'fyy280124', + table_name = '__all_virtual_tenant_scheduler_running_job', + table_id = '12442', + table_type = 'VIRTUAL_TABLE', + gm_columns = [], + rowkey_columns = [], + normal_columns = [ + ('svr_ip', 'varchar:MAX_IP_ADDR_LENGTH'), + ('svr_port', 'int'), + ('tenant_id', 'int'), + ('owner', 'varchar:OB_MAX_DATABASE_NAME_LENGTH', 'true'), + ('job_name', 'varchar:128'), + ('job_subname', 'varchar:30', 'true'), + ('job_style', 'varchar:11', 'true'), + ('detached', 'varchar:5', 'true'), + ('session_id', 'uint', 'true'), + ('slave_process_id', 'uint', 'true'), + ('slave_os_process_id', 'uint', 'true'), + ('resource_consumer_group', 'varchar:30', 'true'), + ('running_instance', 'varchar:30', 'true'), + ('elapsed_time', 'int', 'true'), + ('cpu_used', 'int', 'true'), + ('destination_owner', 'varchar:128', 'true'), + ('destination', 'varchar:128', 'true'), + ('credential_owner', 'varchar:30', 'true'), + ('credential_name', 'varchar:30', 'true'), + ], + partition_columns = ['svr_ip', 'svr_port'], + vtable_route_policy = 'distributed', +) + def_table_schema(**gen_iterate_virtual_table_def( table_id = '12443', table_name = '__all_virtual_routine_privilege', @@ -14462,7 +14532,11 @@ def_table_schema( vtable_route_policy = 'distributed', ) -# 12488: __all_virtual_scheduler_job_run_detail_v2 +def_table_schema(**gen_iterate_virtual_table_def( + table_id = '12488', + table_name = '__all_virtual_scheduler_job_run_detail_v2', + keywords = all_def_keywords['__all_scheduler_job_run_detail_v2'])) + # 12489: __all_virtual_deadlock_detector_stat def_table_schema(**gen_iterate_virtual_table_def( table_id = '12490', @@ -14845,6 +14919,7 @@ def_table_schema(**gen_oracle_mapping_virtual_table_def('15305', all_def_keyword # 15374: idx_rls_group_table_id_real_agent # 15375: idx_rls_context_table_id_real_agent + ####################################################################### # end for oracle agent table index ####################################################################### @@ -14950,7 +15025,7 @@ def_table_schema(**no_direct_access(gen_oracle_mapping_virtual_table_def('15451' # 15455: __all_zone_storage def_table_schema(**no_direct_access(gen_oracle_mapping_virtual_table_def('15456', all_def_keywords['__all_virtual_nic_info']))) # 15457: __all_virtual_query_response_time -# 15458: __all_scheduler_job_run_detail_v2 +def_table_schema(**gen_oracle_mapping_real_virtual_table_def('15458', all_def_keywords['__all_scheduler_job_run_detail_v2'])) def_table_schema(**no_direct_access(gen_oracle_mapping_real_virtual_table_def('15459', all_def_keywords['__all_spatial_reference_systems']))) # 15460: idx_scheduler_job_run_detail_v2_time_real_agent # 15461: __all_virtual_log_transport_dest_stat @@ -35099,8 +35174,148 @@ def_table_schema( ) # 21587: GV$OB_QUERY_RESPONSE_TIME_HISTOGRAM # 21588: V$OB_QUERY_RESPONSE_TIME_HISTOGRAM -# 21589: DBA_SCHEDULER_JOB_RUN_DETAILS -# 21590: CDB_SCHEDULER_JOB_RUN_DETAILS + +def_table_schema( + owner = 'fyy280124', + table_name = 'DBA_SCHEDULER_JOB_RUN_DETAILS', + table_id = '21589', + table_type = 'SYSTEM_VIEW', + rowkey_columns = [], + normal_columns = [], + gm_columns = [], + in_tenant_space = True, + view_definition = """ + ( + SELECT + CAST(NULL AS NUMBER) AS LOG_ID, + CAST(NULL AS DATETIME) AS LOG_DATE, + CAST(NULL AS CHAR(128)) AS OWNER, + CAST(NULL AS CHAR(128)) AS JOB_NAME, + CAST(NULL AS CHAR(128)) AS JOB_SUBNAME, + CAST(NULL AS CHAR(128)) AS STATUS, + CODE, + CAST(NULL AS DATETIME) AS REQ_START_DATE, + CAST(NULL AS DATETIME) AS ACTUAL_START_DATE, + CAST(NULL AS NUMBER) AS RUN_DURATION, + CAST(NULL AS CHAR(128)) AS INSTANCE_ID, + CAST(NULL AS NUMBER) AS SESSION_ID, + CAST(NULL AS CHAR(128)) AS SLAVE_PID, + CAST(NULL AS NUMBER) AS CPU_USED, + CAST(NULL AS CHAR(128)) AS CREDENTIAL_OWNER, + CAST(NULL AS CHAR(128)) AS CREDENTIAL_NAME, + CAST(NULL AS CHAR(128)) AS DESTINATION_OWNER, + CAST(NULL AS CHAR(128)) AS DESTINATION, + MESSAGE, + JOB, + TIME, + JOB_CLASS, + GMT_CREATE, + GMT_MODIFIED + FROM OCEANBASE.__ALL_TENANT_SCHEDULER_JOB_RUN_DETAIL +) +UNION ALL +( +SELECT + LOG_ID, + LOG_DATE, + OWNER, + JOB_NAME, + JOB_SUBNAME, + STATUS, + CODE, + REQ_START_DATE, + ACTUAL_START_DATE, + RUN_DURATION, + INSTANCE_ID, + SESSION_ID, + SLAVE_PID, + CPU_USED, + CREDENTIAL_OWNER, + CREDENTIAL_NAME, + DESTINATION_OWNER, + DESTINATION, + MESSAGE, + JOB, + TIME, + JOB_CLASS, + GMT_CREATE, + GMT_MODIFIED + FROM OCEANBASE.__ALL_SCHEDULER_JOB_RUN_DETAIL_V2 +) +""".replace("\n", " ") +) + +def_table_schema( + owner = 'fyy280124', + table_name = 'CDB_SCHEDULER_JOB_RUN_DETAILS', + table_id = '21590', + table_type = 'SYSTEM_VIEW', + rowkey_columns = [], + normal_columns = [], + gm_columns = [], + view_definition = """ + ( + SELECT + CAST(NULL AS NUMBER) AS LOG_ID, + CAST(NULL AS DATETIME) AS LOG_DATE, + CAST(NULL AS CHAR(128)) AS OWNER, + CAST(NULL AS CHAR(128)) AS JOB_NAME, + CAST(NULL AS CHAR(128)) AS JOB_SUBNAME, + CAST(NULL AS CHAR(128)) AS STATUS, + CODE, + CAST(NULL AS DATETIME) AS REQ_START_DATE, + CAST(NULL AS DATETIME) AS ACTUAL_START_DATE, + CAST(NULL AS NUMBER) AS RUN_DURATION, + CAST(NULL AS CHAR(128)) AS INSTANCE_ID, + CAST(NULL AS NUMBER) AS SESSION_ID, + CAST(NULL AS CHAR(128)) AS SLAVE_PID, + CAST(NULL AS NUMBER) AS CPU_USED, + CAST(NULL AS CHAR(128)) AS CREDENTIAL_OWNER, + CAST(NULL AS CHAR(128)) AS CREDENTIAL_NAME, + CAST(NULL AS CHAR(128)) AS DESTINATION_OWNER, + CAST(NULL AS CHAR(128)) AS DESTINATION, + MESSAGE, + TENANT_ID, + JOB, + TIME, + JOB_CLASS, + GMT_CREATE, + GMT_MODIFIED + FROM OCEANBASE.__ALL_VIRTUAL_TENANT_SCHEDULER_JOB_RUN_DETAIL +) +UNION ALL +( +SELECT + LOG_ID, + LOG_DATE, + OWNER, + JOB_NAME, + JOB_SUBNAME, + STATUS, + CODE, + REQ_START_DATE, + ACTUAL_START_DATE, + RUN_DURATION, + INSTANCE_ID, + SESSION_ID, + SLAVE_PID, + CPU_USED, + CREDENTIAL_OWNER, + CREDENTIAL_NAME, + DESTINATION_OWNER, + DESTINATION, + MESSAGE, + TENANT_ID, + JOB, + TIME, + JOB_CLASS, + GMT_CREATE, + GMT_MODIFIED + FROM OCEANBASE.__ALL_VIRTUAL_SCHEDULER_JOB_RUN_DETAIL_V2 +) +""".replace("\n", " ") +) + # # 21591 - 21596 placeholder by gaishun.gs # 21591: DBA_OB_SERVER_SPACE_USAGE @@ -35112,6 +35327,7 @@ def_table_schema( # 21597: GV$OB_LOG_TRANSPORT_DEST_STAT # 21598: V$OB_LOG_TRANSPORT_DEST_STAT + # 余留位置(此行之前占位) # 本区域占位建议:采用真实视图名进行占位 ################################################################################ @@ -53655,15 +53871,64 @@ def_table_schema( normal_columns = [], gm_columns = [], in_tenant_space = True, - view_definition = """SELECT TENANT_ID, - JOB, - TIME, - CODE, - MESSAGE, - JOB_CLASS, - GMT_CREATE, - GMT_MODIFIED - FROM SYS.ALL_VIRTUAL_TENANT_SCHEDULER_JOB_RUN_DETAIL_REAL_AGENT T + view_definition = """ + ( + SELECT + CAST(NULL AS NUMBER) AS LOG_ID, + CAST(NULL AS TIMESTAMP(6) WITH TIME ZONE) AS LOG_DATE, + CAST(NULL AS VARCHAR(128)) AS OWNER, + CAST(NULL AS VARCHAR(128)) AS JOB_NAME, + CAST(NULL AS VARCHAR(128)) AS JOB_SUBNAME, + CAST(NULL AS VARCHAR(128)) AS STATUS, + CODE, + CAST(NULL AS TIMESTAMP(6) WITH TIME ZONE) AS REQ_START_DATE, + CAST(NULL AS TIMESTAMP(6) WITH TIME ZONE) AS ACTUAL_START_DATE, + CAST(NULL AS NUMBER) AS RUN_DURATION, + CAST(NULL AS VARCHAR(128)) AS INSTANCE_ID, + CAST(NULL AS NUMBER) AS SESSION_ID, + CAST(NULL AS VARCHAR(128)) AS SLAVE_PID, + CAST(NULL AS NUMBER) AS CPU_USED, + CAST(NULL AS VARCHAR(128)) AS CREDENTIAL_OWNER, + CAST(NULL AS VARCHAR(128)) AS CREDENTIAL_NAME, + CAST(NULL AS VARCHAR(128)) AS DESTINATION_OWNER, + CAST(NULL AS VARCHAR(128)) AS DESTINATION, + MESSAGE, + JOB, + TIME, + JOB_CLASS, + GMT_CREATE, + GMT_MODIFIED + FROM SYS.ALL_VIRTUAL_TENANT_SCHEDULER_JOB_RUN_DETAIL_REAL_AGENT +) +UNION ALL +( +SELECT + LOG_ID, + LOG_DATE, + OWNER, + JOB_NAME, + JOB_SUBNAME, + STATUS, + CODE, + REQ_START_DATE, + ACTUAL_START_DATE, + RUN_DURATION, + INSTANCE_ID, + SESSION_ID, + SLAVE_PID, + CPU_USED, + CREDENTIAL_OWNER, + CREDENTIAL_NAME, + DESTINATION_OWNER, + DESTINATION, + MESSAGE, + JOB, + TIME, + JOB_CLASS, + GMT_CREATE, + GMT_MODIFIED + FROM SYS.ALL_VIRTUAL_SCHEDULER_JOB_RUN_DETAIL_V2_REAL_AGENT +) """.replace("\n", " ") ) @@ -63785,6 +64050,14 @@ def_sys_index_table( index_type = 'INDEX_TYPE_NORMAL_LOCAL', keywords = all_def_keywords['__all_user_proxy_role_info_history']) +def_sys_index_table( + index_name = 'idx_scheduler_job_run_detail_v2_time', + index_table_id = 101105, + index_columns = ['time'], + index_using_type = 'USING_BTREE', + index_type = 'INDEX_TYPE_NORMAL_LOCAL', + keywords = all_def_keywords['__all_scheduler_job_run_detail_v2']) + # 余留位置(此行之前占位) # 索引表占位建议:基于基表(数据表)表名来占位,其他方式包括:索引名(index_name)、索引表表名 ################################################################################ @@ -64562,6 +64835,15 @@ def_agent_index_table( real_index_name = 'idx_user_proxy_info_proxy_user_id', keywords = all_def_keywords['ALL_VIRTUAL_USER_PROXY_INFO_REAL_AGENT_ORA']) +def_agent_index_table( + index_name = 'idx_scheduler_job_run_detail_v2_time_real_agent', + index_table_id = 15460, + index_columns = ['time'], + index_using_type = 'USING_BTREE', + index_type = 'INDEX_TYPE_NORMAL_LOCAL', + real_table_name = '__all_scheduler_job_run_detail_v2' , + real_index_name = 'idx_scheduler_job_run_detail_v2_time', + keywords = all_def_keywords['ALL_VIRTUAL_SCHEDULER_JOB_RUN_DETAIL_V2_REAL_AGENT_ORA']) # End Oracle Agent table Index ################################################################################ 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 28ad904e52..df15293ed5 100644 --- a/src/share/inner_table/ob_inner_table_schema_misc.ipp +++ b/src/share/inner_table/ob_inner_table_schema_misc.ipp @@ -1860,6 +1860,7 @@ case OB_ALL_VIRTUAL_ROUTINE_PARAM_TID: case OB_ALL_VIRTUAL_ROUTINE_PARAM_HISTORY_TID: case OB_ALL_VIRTUAL_ROUTINE_PRIVILEGE_TID: case OB_ALL_VIRTUAL_ROUTINE_PRIVILEGE_HISTORY_TID: +case OB_ALL_VIRTUAL_SCHEDULER_JOB_RUN_DETAIL_V2_TID: case OB_ALL_VIRTUAL_SECURITY_AUDIT_TID: case OB_ALL_VIRTUAL_SECURITY_AUDIT_HISTORY_TID: case OB_ALL_VIRTUAL_SECURITY_AUDIT_RECORD_TID: @@ -3525,6 +3526,21 @@ case OB_ALL_VIRTUAL_USER_PROXY_ROLE_INFO_HISTORY_TID: break; } + case OB_ALL_VIRTUAL_SCHEDULER_JOB_RUN_DETAIL_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_SCHEDULER_JOB_RUN_DETAIL_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_SECURITY_AUDIT_TID: { ObIterateVirtualTable *iter = NULL; if (OB_FAIL(NEW_VIRTUAL_TABLE(ObIterateVirtualTable, iter))) { @@ -3734,7 +3750,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_SYS_VARIABLE_HISTORY_TID: { ObIterateVirtualTable *iter = NULL; if (OB_FAIL(NEW_VIRTUAL_TABLE(ObIterateVirtualTable, iter))) { @@ -3749,9 +3767,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_SYSAUTH_TID: { ObIterateVirtualTable *iter = NULL; if (OB_FAIL(NEW_VIRTUAL_TABLE(ObIterateVirtualTable, iter))) { @@ -4036,7 +4052,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_OLS_COMPONENT_TID: { ObIterateVirtualTable *iter = NULL; if (OB_FAIL(NEW_VIRTUAL_TABLE(ObIterateVirtualTable, iter))) { @@ -4051,9 +4069,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_OLS_COMPONENT_HISTORY_TID: { ObIterateVirtualTable *iter = NULL; if (OB_FAIL(NEW_VIRTUAL_TABLE(ObIterateVirtualTable, iter))) { @@ -4338,7 +4354,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_TIME_ZONE_NAME_TID: { ObIterateVirtualTable *iter = NULL; if (OB_FAIL(NEW_VIRTUAL_TABLE(ObIterateVirtualTable, iter))) { @@ -4353,9 +4371,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_TIME_ZONE_TRANSITION_TID: { ObIterateVirtualTable *iter = NULL; if (OB_FAIL(NEW_VIRTUAL_TABLE(ObIterateVirtualTable, iter))) { @@ -4995,6 +5011,7 @@ case OB_ALL_COLUMN_PRIVILEGE_IDX_COLUMN_PRIVILEGE_NAME_TID: case OB_ALL_USER_PROXY_INFO_IDX_USER_PROXY_INFO_PROXY_USER_ID_TID: case OB_ALL_USER_PROXY_INFO_HISTORY_IDX_USER_PROXY_INFO_PROXY_USER_ID_HISTORY_TID: case OB_ALL_USER_PROXY_ROLE_INFO_HISTORY_IDX_USER_PROXY_ROLE_INFO_PROXY_USER_ID_HISTORY_TID: +case OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_IDX_SCHEDULER_JOB_RUN_DETAIL_V2_TIME_TID: #endif @@ -5074,6 +5091,7 @@ case OB_ALL_TENANT_OBJECT_TYPE_TID: case OB_ALL_FOREIGN_KEY_HISTORY_TID: case OB_ALL_RLS_GROUP_HISTORY_TID: case OB_ALL_SYNONYM_TID: +case OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_TID: case OB_ALL_TENANT_SECURITY_AUDIT_TID: case OB_ALL_ROOTSERVICE_JOB_TID: case OB_ALL_PENDING_TRANSACTION_TID: @@ -5607,6 +5625,12 @@ case OB_ALL_SYNONYM_TID: { } break; } +case OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_TID: { + if (FAILEDx(index_tids.push_back(OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_IDX_SCHEDULER_JOB_RUN_DETAIL_V2_TIME_TID))) { + LOG_WARN("fail to push back index tid", KR(ret)); + } + break; +} case OB_ALL_TENANT_SECURITY_AUDIT_TID: { if (FAILEDx(index_tids.push_back(OB_ALL_TENANT_SECURITY_AUDIT_IDX_AUDIT_TYPE_TID))) { LOG_WARN("fail to push back index tid", KR(ret)); @@ -6474,6 +6498,15 @@ case OB_ALL_SYNONYM_TID: { } break; } +case OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_TID: { + index_schema.reset(); + if (FAILEDx(ObInnerTableSchema::all_scheduler_job_run_detail_v2_idx_scheduler_job_run_detail_v2_time_schema(index_schema))) { + LOG_WARN("fail to create index schema", KR(ret), K(tenant_id), K(data_table_id)); + } else if (OB_FAIL(append_table_(tenant_id, index_schema, tables))) { + LOG_WARN("fail to append", KR(ret), K(tenant_id), K(data_table_id)); + } + break; +} case OB_ALL_TENANT_SECURITY_AUDIT_TID: { index_schema.reset(); if (FAILEDx(ObInnerTableSchema::all_tenant_security_audit_idx_audit_type_schema(index_schema))) { @@ -6753,5 +6786,7 @@ case OB_ALL_FOREIGN_KEY_TID: { LOG_WARN("add index id failed", KR(ret), K(tenant_id)); } else if (OB_FAIL(table_ids.push_back(OB_ALL_USER_PROXY_ROLE_INFO_HISTORY_IDX_USER_PROXY_ROLE_INFO_PROXY_USER_ID_HISTORY_TID))) { LOG_WARN("add index id failed", KR(ret), K(tenant_id)); + } else if (OB_FAIL(table_ids.push_back(OB_ALL_SCHEDULER_JOB_RUN_DETAIL_V2_IDX_SCHEDULER_JOB_RUN_DETAIL_V2_TIME_TID))) { + LOG_WARN("add index id failed", KR(ret), K(tenant_id)); #endif diff --git a/src/share/inner_table/table_id_to_name b/src/share/inner_table/table_id_to_name index b70b7156ba..c827251034 100644 --- a/src/share/inner_table/table_id_to_name +++ b/src/share/inner_table/table_id_to_name @@ -355,6 +355,7 @@ # 515: __all_user_proxy_role_info_history # 515: __all_user_proxy_role_info # BASE_TABLE_NAME # 518: __all_mview_dep +# 519: __all_scheduler_job_run_detail_v2 # 10001: __tenant_virtual_all_table # 10002: __tenant_virtual_table_column # 10003: __tenant_virtual_table_index @@ -1071,6 +1072,7 @@ # 12437: __all_virtual_checkpoint_diagnose_memtable_info # 12438: __all_virtual_checkpoint_diagnose_checkpoint_unit_info # 12439: __all_virtual_checkpoint_diagnose_info +# 12442: __all_virtual_tenant_scheduler_running_job # 12443: __all_virtual_routine_privilege # 12443: __all_routine_privilege # BASE_TABLE_NAME # 12444: __all_virtual_routine_privilege_history @@ -1118,6 +1120,8 @@ # 12481: __all_virtual_tenant_resource_limit # 12482: __all_virtual_tenant_resource_limit_detail # 12487: __all_virtual_nic_info +# 12488: __all_virtual_scheduler_job_run_detail_v2 +# 12488: __all_scheduler_job_run_detail_v2 # BASE_TABLE_NAME # 12490: __all_virtual_spatial_reference_systems # 12490: __all_spatial_reference_systems # BASE_TABLE_NAME # 15009: ALL_VIRTUAL_SQL_AUDIT @@ -1719,6 +1723,8 @@ # 15451: __all_virtual_tenant_resource_limit_detail # BASE_TABLE_NAME # 15456: ALL_VIRTUAL_NIC_INFO # 15456: __all_virtual_nic_info # BASE_TABLE_NAME +# 15458: ALL_VIRTUAL_SCHEDULER_JOB_RUN_DETAIL_V2_REAL_AGENT +# 15458: __all_scheduler_job_run_detail_v2 # BASE_TABLE_NAME # 15459: ALL_VIRTUAL_SPATIAL_REFERENCE_SYSTEMS_REAL_AGENT # 15459: __all_spatial_reference_systems # BASE_TABLE_NAME # 20001: GV$OB_PLAN_CACHE_STAT @@ -2157,6 +2163,8 @@ # 21580: EVENTS # 21581: V$OB_NIC_INFO # 21586: GV$OB_NIC_INFO +# 21589: DBA_SCHEDULER_JOB_RUN_DETAILS +# 21590: CDB_SCHEDULER_JOB_RUN_DETAILS # 25001: DBA_SYNONYMS # 25002: DBA_OBJECTS # 25003: ALL_OBJECTS @@ -3022,6 +3030,9 @@ # 101103: idx_user_proxy_role_info_proxy_user_id_history # INDEX_NAME # 101103: __all_user_proxy_role_info # DATA_BASE_TABLE_NAME # 101103: __all_user_proxy_role_info_history # DATA_BASE_TABLE_NAME1 +# 101105: __idx_519_idx_scheduler_job_run_detail_v2_time +# 101105: idx_scheduler_job_run_detail_v2_time # INDEX_NAME +# 101105: __all_scheduler_job_run_detail_v2 # DATA_BASE_TABLE_NAME # 15306: __idx_15120_idx_data_table_id_real_agent # 15306: idx_data_table_id_real_agent # INDEX_NAME # 15306: __all_table # DATA_BASE_TABLE_NAME @@ -3314,3 +3325,7 @@ # 15448: idx_user_proxy_info_proxy_user_id_real_agent # INDEX_NAME # 15448: __all_user_proxy_info # DATA_BASE_TABLE_NAME # 15448: ALL_VIRTUAL_USER_PROXY_INFO_REAL_AGENT # DATA_BASE_TABLE_NAME1 +# 15460: __idx_15458_idx_scheduler_job_run_detail_v2_time_real_agent +# 15460: idx_scheduler_job_run_detail_v2_time_real_agent # INDEX_NAME +# 15460: __all_scheduler_job_run_detail_v2 # DATA_BASE_TABLE_NAME +# 15460: ALL_VIRTUAL_SCHEDULER_JOB_RUN_DETAIL_V2_REAL_AGENT # DATA_BASE_TABLE_NAME1 diff --git a/src/sql/session/ob_sql_session_info.cpp b/src/sql/session/ob_sql_session_info.cpp index d20572a003..e0307a208d 100644 --- a/src/sql/session/ob_sql_session_info.cpp +++ b/src/sql/session/ob_sql_session_info.cpp @@ -205,7 +205,8 @@ ObSQLSessionInfo::ObSQLSessionInfo(const uint64_t tenant_id) : out_bytes_(0), current_dblink_sequence_id_(0), client_non_standard_(false), - is_session_sync_support_(false) + is_session_sync_support_(false), + job_info_(nullptr) { MEMSET(tenant_buff_, 0, sizeof(share::ObTenantSpaceFetcher)); MEMSET(vip_buf_, 0, sizeof(vip_buf_)); @@ -402,6 +403,7 @@ void ObSQLSessionInfo::reset(bool skip_sys_var) is_session_sync_support_ = false; need_send_feedback_proxy_info_ = false; is_lock_session_ = false; + job_info_ = nullptr; } void ObSQLSessionInfo::clean_status() diff --git a/src/sql/session/ob_sql_session_info.h b/src/sql/session/ob_sql_session_info.h index 2401a0904c..8be434df47 100644 --- a/src/sql/session/ob_sql_session_info.h +++ b/src/sql/session/ob_sql_session_info.h @@ -46,6 +46,7 @@ #include "sql/ob_optimizer_trace_impl.h" #include "sql/monitor/flt/ob_flt_span_mgr.h" #include "storage/tx/ob_tx_free_route.h" +#include "observer/dbms_scheduler/ob_dbms_sched_job_utils.h" namespace oceanbase { @@ -1612,6 +1613,8 @@ public: inline int64_t get_out_bytes() const { return ATOMIC_LOAD(&out_bytes_); } inline void inc_out_bytes(int64_t out_bytes) { IGNORE_RETURN ATOMIC_FAA(&out_bytes_, out_bytes); } bool is_pl_prepare_stage() const; + dbms_scheduler::ObDBMSSchedJobInfo *get_job_info() const { return job_info_; } + void set_job_info(dbms_scheduler::ObDBMSSchedJobInfo *job_info) { job_info_ = job_info; } private: transaction::ObTxnFreeRouteCtx txn_free_route_ctx_; //save the current sql exec context in session @@ -1643,6 +1646,7 @@ private: bool client_non_standard_; bool is_session_sync_support_; // session_sync_support flag. share::schema::ObUserLoginInfo login_info_; + dbms_scheduler::ObDBMSSchedJobInfo *job_info_; // dbms_scheduler related. }; inline bool ObSQLSessionInfo::is_terminate(int &ret) const diff --git a/tools/deploy/mysql_test/r/mysql/information_schema.result b/tools/deploy/mysql_test/r/mysql/information_schema.result index 71863d1a47..f827c12c07 100644 --- a/tools/deploy/mysql_test/r/mysql/information_schema.result +++ b/tools/deploy/mysql_test/r/mysql/information_schema.result @@ -353,6 +353,7 @@ select * from information_schema.tables where table_schema in ('oceanbase', 'mys | def | oceanbase | DBA_RSRC_PLANS | SYSTEM VIEW | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | | def | oceanbase | DBA_RSRC_PLAN_DIRECTIVES | SYSTEM VIEW | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | | def | oceanbase | DBA_SCHEDULER_JOBS | SYSTEM VIEW | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | +| def | oceanbase | DBA_SCHEDULER_JOB_RUN_DETAILS | SYSTEM VIEW | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | | def | oceanbase | DBA_SCHEDULER_WINDOWS | SYSTEM VIEW | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | | def | oceanbase | DBA_SEQUENCES | SYSTEM VIEW | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | | def | oceanbase | DBA_SQL_MANAGEMENT_CONFIG | SYSTEM VIEW | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | @@ -623,6 +624,7 @@ select * from information_schema.tables where table_schema in ('oceanbase', 'mys | def | oceanbase | __all_routine_param_history | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | | def | oceanbase | __all_routine_privilege | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | | def | oceanbase | __all_routine_privilege_history | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | +| def | oceanbase | __all_scheduler_job_run_detail_v2 | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | | def | oceanbase | __all_sequence_object | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | | def | oceanbase | __all_sequence_object_history | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | | def | oceanbase | __all_sequence_value | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | @@ -1335,6 +1337,9 @@ select * from information_schema.statistics where table_schema in ('oceanbase', | def | oceanbase | __all_routine_privilege_history | 0 | oceanbase | PRIMARY | 4 | routine_name | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_routine_privilege_history | 0 | oceanbase | PRIMARY | 5 | routine_type | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_routine_privilege_history | 0 | oceanbase | PRIMARY | 6 | schema_version | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | +| def | oceanbase | __all_scheduler_job_run_detail_v2 | 0 | oceanbase | PRIMARY | 1 | job_name | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | +| def | oceanbase | __all_scheduler_job_run_detail_v2 | 0 | oceanbase | PRIMARY | 2 | time | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | +| def | oceanbase | __all_scheduler_job_run_detail_v2 | 1 | oceanbase | idx_scheduler_job_run_detail_v2_time | 1 | time | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_sequence_object | 0 | oceanbase | PRIMARY | 1 | tenant_id | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_sequence_object | 0 | oceanbase | PRIMARY | 2 | sequence_id | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_sequence_object | 1 | oceanbase | idx_seq_obj_db_name | 1 | database_id | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | @@ -1842,6 +1847,7 @@ select * from information_schema.tables where table_schema in ('oceanbase', 'mys | def | oceanbase | DBA_RSRC_PLANS | SYSTEM VIEW | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | | def | oceanbase | DBA_RSRC_PLAN_DIRECTIVES | SYSTEM VIEW | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | | def | oceanbase | DBA_SCHEDULER_JOBS | SYSTEM VIEW | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | +| def | oceanbase | DBA_SCHEDULER_JOB_RUN_DETAILS | SYSTEM VIEW | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | | def | oceanbase | DBA_SCHEDULER_WINDOWS | SYSTEM VIEW | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | | def | oceanbase | DBA_SEQUENCES | SYSTEM VIEW | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | | def | oceanbase | DBA_SQL_MANAGEMENT_CONFIG | SYSTEM VIEW | MEMORY | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | @@ -2111,6 +2117,7 @@ select * from information_schema.tables where table_schema in ('oceanbase', 'mys | def | oceanbase | __all_routine_param_history | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | | def | oceanbase | __all_routine_privilege | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | | def | oceanbase | __all_routine_privilege_history | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | +| def | oceanbase | __all_scheduler_job_run_detail_v2 | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | | def | oceanbase | __all_sequence_object | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | | def | oceanbase | __all_sequence_object_history | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | | def | oceanbase | __all_sequence_value | SYSTEM TABLE | InnoDB | NULL | DYNAMIC | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | utf8mb4_general_ci | NULL | NULL | | @@ -3055,6 +3062,9 @@ select * from information_schema.statistics where table_schema in ('oceanbase', | def | oceanbase | __all_routine_privilege_history | 0 | oceanbase | PRIMARY | 4 | routine_name | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_routine_privilege_history | 0 | oceanbase | PRIMARY | 5 | routine_type | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_routine_privilege_history | 0 | oceanbase | PRIMARY | 6 | schema_version | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | +| def | oceanbase | __all_scheduler_job_run_detail_v2 | 0 | oceanbase | PRIMARY | 1 | job_name | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | +| def | oceanbase | __all_scheduler_job_run_detail_v2 | 0 | oceanbase | PRIMARY | 2 | time | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | +| def | oceanbase | __all_scheduler_job_run_detail_v2 | 1 | oceanbase | idx_scheduler_job_run_detail_v2_time | 1 | time | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_seed_parameter | 0 | oceanbase | PRIMARY | 1 | zone | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_seed_parameter | 0 | oceanbase | PRIMARY | 2 | svr_type | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_seed_parameter | 0 | oceanbase | PRIMARY | 3 | svr_ip | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | @@ -3899,6 +3909,9 @@ select * from information_schema.statistics where table_schema in ('oceanbase', | def | oceanbase | __all_routine_privilege_history | 0 | oceanbase | PRIMARY | 4 | routine_name | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_routine_privilege_history | 0 | oceanbase | PRIMARY | 5 | routine_type | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_routine_privilege_history | 0 | oceanbase | PRIMARY | 6 | schema_version | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | +| def | oceanbase | __all_scheduler_job_run_detail_v2 | 0 | oceanbase | PRIMARY | 1 | job_name | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | +| def | oceanbase | __all_scheduler_job_run_detail_v2 | 0 | oceanbase | PRIMARY | 2 | time | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | +| def | oceanbase | __all_scheduler_job_run_detail_v2 | 1 | oceanbase | idx_scheduler_job_run_detail_v2_time | 1 | time | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_sequence_object | 0 | oceanbase | PRIMARY | 1 | tenant_id | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_sequence_object | 0 | oceanbase | PRIMARY | 2 | sequence_id | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | | def | oceanbase | __all_sequence_object | 1 | oceanbase | idx_seq_obj_db_name | 1 | database_id | A | NULL | NULL | NULL | | BTREE | VALID | | YES | NULL | diff --git a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_sys_views_in_mysql.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_sys_views_in_mysql.result index 342bf0db3c..60b9c3e8d1 100644 --- a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_sys_views_in_mysql.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_sys_views_in_mysql.result @@ -6550,6 +6550,35 @@ SPEED_MBPS bigint(20) NO NULL select /*+QUERY_TIMEOUT(60000000)*/ count(*) as cnt from (select * from oceanbase.GV$OB_NIC_INFO limit 1); cnt 1 +desc oceanbase.DBA_SCHEDULER_JOB_RUN_DETAILS; +Field Type Null Key Default Extra +LOG_ID decimal(20,0) NO +LOG_DATE datetime NO +OWNER varchar(128) NO +JOB_NAME varchar(128) NO +JOB_SUBNAME varchar(128) NO +STATUS varchar(128) NO +CODE bigint(20) YES +REQ_START_DATE datetime NO +ACTUAL_START_DATE datetime NO +RUN_DURATION decimal(20,0) NO +INSTANCE_ID varchar(128) NO +SESSION_ID decimal(20,0) NO +SLAVE_PID varchar(128) NO +CPU_USED decimal(20,0) NO +CREDENTIAL_OWNER varchar(128) NO +CREDENTIAL_NAME varchar(128) NO +DESTINATION_OWNER varchar(128) NO +DESTINATION varchar(128) NO +MESSAGE varchar(4000) NO NULL +JOB bigint(20) NO NULL +TIME timestamp(6) NO NULL +JOB_CLASS varchar(30) YES NULL +GMT_CREATE timestamp(6) YES +GMT_MODIFIED timestamp(6) YES +select /*+QUERY_TIMEOUT(60000000)*/ count(*) as cnt from (select * from oceanbase.DBA_SCHEDULER_JOB_RUN_DETAILS limit 1); +cnt +1 select case cnt when 0 then NULL else 'UNEXPECTED ERROR: It is expected to be an empty set, which means that all GV$ and V$ view column names are defined consistently' end ERROR_INFO from (select /*+no_rewrite*/ count(*) cnt from (SELECT t.table_name, group_concat(c.column_name) as column_name_list diff --git a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_sys_views_in_sys.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_sys_views_in_sys.result index a7bad0a897..703588b223 100644 --- a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_sys_views_in_sys.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_sys_views_in_sys.result @@ -9304,6 +9304,65 @@ SPEED_MBPS bigint(20) NO NULL select /*+QUERY_TIMEOUT(60000000)*/ count(*) as cnt from (select * from oceanbase.GV$OB_NIC_INFO limit 1); cnt 1 +desc oceanbase.DBA_SCHEDULER_JOB_RUN_DETAILS; +Field Type Null Key Default Extra +LOG_ID decimal(20,0) NO +LOG_DATE datetime NO +OWNER varchar(128) NO +JOB_NAME varchar(128) NO +JOB_SUBNAME varchar(128) NO +STATUS varchar(128) NO +CODE bigint(20) YES +REQ_START_DATE datetime NO +ACTUAL_START_DATE datetime NO +RUN_DURATION decimal(20,0) NO +INSTANCE_ID varchar(128) NO +SESSION_ID decimal(20,0) NO +SLAVE_PID varchar(128) NO +CPU_USED decimal(20,0) NO +CREDENTIAL_OWNER varchar(128) NO +CREDENTIAL_NAME varchar(128) NO +DESTINATION_OWNER varchar(128) NO +DESTINATION varchar(128) NO +MESSAGE varchar(4000) NO NULL +JOB bigint(20) NO NULL +TIME timestamp(6) NO NULL +JOB_CLASS varchar(30) YES NULL +GMT_CREATE timestamp(6) YES +GMT_MODIFIED timestamp(6) YES +select /*+QUERY_TIMEOUT(60000000)*/ count(*) as cnt from (select * from oceanbase.DBA_SCHEDULER_JOB_RUN_DETAILS limit 1); +cnt +1 +desc oceanbase.CDB_SCHEDULER_JOB_RUN_DETAILS; +Field Type Null Key Default Extra +LOG_ID decimal(20,0) NO +LOG_DATE datetime NO +OWNER varchar(128) NO +JOB_NAME varchar(128) NO +JOB_SUBNAME varchar(128) NO +STATUS varchar(128) NO +CODE bigint(20) YES +REQ_START_DATE datetime NO +ACTUAL_START_DATE datetime NO +RUN_DURATION decimal(20,0) NO +INSTANCE_ID varchar(128) NO +SESSION_ID decimal(20,0) NO +SLAVE_PID varchar(128) NO +CPU_USED decimal(20,0) NO +CREDENTIAL_OWNER varchar(128) NO +CREDENTIAL_NAME varchar(128) NO +DESTINATION_OWNER varchar(128) NO +DESTINATION varchar(128) NO +MESSAGE varchar(4000) NO NULL +TENANT_ID bigint(20) NO NULL +JOB bigint(20) NO NULL +TIME timestamp(6) NO NULL +JOB_CLASS varchar(30) YES NULL +GMT_CREATE timestamp(6) NO NULL +GMT_MODIFIED timestamp(6) NO NULL +select /*+QUERY_TIMEOUT(60000000)*/ count(*) as cnt from (select * from oceanbase.CDB_SCHEDULER_JOB_RUN_DETAILS limit 1); +cnt +1 select case cnt when 0 then NULL else 'UNEXPECTED ERROR: It is expected to be an empty set, which means that all GV$ and V$ view column names are defined consistently' end ERROR_INFO from (select /*+no_rewrite*/ count(*) cnt from (SELECT t.table_name, group_concat(c.column_name) as column_name_list 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 2a8b2e86ad..b2fcd0701d 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 @@ -9187,6 +9187,33 @@ IF(count(*) >= 0, 1, 0) "oceanbase.__all_virtual_checkpoint_diagnose_info runs in single server" IF(count(*) >= 0, 1, 0) 1 +desc oceanbase.__all_virtual_tenant_scheduler_running_job; +Field Type Null Key Default Extra +svr_ip varchar(46) NO NULL +svr_port bigint(20) NO NULL +tenant_id bigint(20) NO NULL +owner varchar(128) YES NULL +job_name varchar(128) NO NULL +job_subname varchar(30) YES NULL +job_style varchar(11) YES NULL +detached varchar(5) YES NULL +session_id bigint(20) unsigned YES NULL +slave_process_id bigint(20) unsigned YES NULL +slave_os_process_id bigint(20) unsigned YES NULL +resource_consumer_group varchar(30) YES NULL +running_instance varchar(30) YES NULL +elapsed_time bigint(20) YES NULL +cpu_used bigint(20) YES NULL +destination_owner varchar(128) YES NULL +destination varchar(128) YES NULL +credential_owner varchar(30) YES NULL +credential_name varchar(30) YES NULL +select /*+QUERY_TIMEOUT(60000000)*/ IF(count(*) >= 0, 1, 0) from oceanbase.__all_virtual_tenant_scheduler_running_job; +IF(count(*) >= 0, 1, 0) +1 +"oceanbase.__all_virtual_tenant_scheduler_running_job runs in single server" +IF(count(*) >= 0, 1, 0) +1 desc oceanbase.__all_virtual_routine_privilege; Field Type Null Key Default Extra tenant_id bigint(20) NO PRI NULL @@ -9555,6 +9582,40 @@ IF(count(*) >= 0, 1, 0) "oceanbase.__all_virtual_nic_info runs in single server" IF(count(*) >= 0, 1, 0) 1 +desc oceanbase.__all_virtual_scheduler_job_run_detail_v2; +Field Type Null Key Default Extra +tenant_id bigint(20) NO PRI NULL +job_name varchar(128) NO PRI NULL +time timestamp(6) NO PRI NULL +gmt_create timestamp(6) NO NULL +gmt_modified timestamp(6) NO NULL +job bigint(20) YES 0 +log_id bigint(20) YES 0 +log_date timestamp(6) YES NULL +owner varchar(128) YES NULL +job_subname varchar(128) YES NULL +job_class varchar(128) YES NULL +operation varchar(128) YES NULL +status varchar(128) YES NULL +code bigint(20) YES 0 +req_start_date timestamp(6) YES NULL +actual_start_date timestamp(6) YES NULL +run_duration bigint(20) YES NULL +instance_id varchar(128) YES NULL +session_id bigint(20) unsigned YES NULL +slave_pid varchar(128) YES NULL +cpu_used bigint(20) YES NULL +user_name varchar(128) YES NULL +client_id varchar(128) YES NULL +global_uid varchar(128) YES NULL +credential_owner varchar(128) YES NULL +credential_name varchar(128) YES NULL +destination_owner varchar(128) YES NULL +destination varchar(128) YES NULL +message varchar(4000) NO NULL +select /*+QUERY_TIMEOUT(60000000)*/ IF(count(*) >= 0, 1, 0) from oceanbase.__all_virtual_scheduler_job_run_detail_v2; +IF(count(*) >= 0, 1, 0) +1 desc oceanbase.__all_virtual_spatial_reference_systems; Field Type Null Key Default Extra tenant_id bigint(20) NO PRI NULL 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 d7c515c6eb..59dd0e0101 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 @@ -298,6 +298,7 @@ select 0xffffffffff & table_id, table_name, table_type, database_id, part_num fr 514 __all_user_proxy_role_info 0 201001 1 515 __all_user_proxy_role_info_history 0 201001 1 518 __all_mview_dep 0 201001 1 +519 __all_scheduler_job_run_detail_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 @@ -724,6 +725,7 @@ select 0xffffffffff & table_id, table_name, table_type, database_id, part_num fr 12437 __all_virtual_checkpoint_diagnose_memtable_info 2 201001 1 12438 __all_virtual_checkpoint_diagnose_checkpoint_unit_info 2 201001 1 12439 __all_virtual_checkpoint_diagnose_info 2 201001 1 +12442 __all_virtual_tenant_scheduler_running_job 2 201001 1 12443 __all_virtual_routine_privilege 2 201001 1 12444 __all_virtual_routine_privilege_history 2 201001 1 12447 __all_virtual_aux_stat 2 201001 1 @@ -749,6 +751,7 @@ select 0xffffffffff & table_id, table_name, table_type, database_id, part_num fr 12481 __all_virtual_tenant_resource_limit 2 201001 1 12482 __all_virtual_tenant_resource_limit_detail 2 201001 1 12487 __all_virtual_nic_info 2 201001 1 +12488 __all_virtual_scheduler_job_run_detail_v2 2 201001 1 12490 __all_virtual_spatial_reference_systems 2 201001 1 20001 GV$OB_PLAN_CACHE_STAT 1 201001 1 20002 GV$OB_PLAN_CACHE_PLAN_STAT 1 201001 1 @@ -1186,6 +1189,8 @@ select 0xffffffffff & table_id, table_name, table_type, database_id, part_num fr 21580 EVENTS 1 201002 1 21581 V$OB_NIC_INFO 1 201001 1 21586 GV$OB_NIC_INFO 1 201001 1 +21589 DBA_SCHEDULER_JOB_RUN_DETAILS 1 201001 1 +21590 CDB_SCHEDULER_JOB_RUN_DETAILS 1 201001 1 check sys table count and table_id range success check count and table_id range for virtual table success select * from information_schema.CHARACTER_SETS limit 1;