bug fix: db_id displayed by SQL audit and plan stat is inconsistent.
This commit is contained in:
parent
1b95cb059a
commit
8bc44950fe
8
deps/oblib/src/lib/ob_define.h
vendored
8
deps/oblib/src/lib/ob_define.h
vendored
@ -1205,8 +1205,8 @@ const uint64_t OB_PUBLIC_SCHEMA_ID = OB_MIN_INNER_DATABASE_ID + 5;
|
||||
const uint64_t OB_ORA_SYS_DATABASE_ID = OB_MIN_INNER_DATABASE_ID + 6;
|
||||
const uint64_t OB_ORA_LBACSYS_DATABASE_ID = OB_MIN_INNER_DATABASE_ID + 7;
|
||||
const uint64_t OB_ORA_AUDITOR_DATABASE_ID = OB_MIN_INNER_DATABASE_ID + 8;
|
||||
// not actual database, only for using and creating outlines without specified database
|
||||
const uint64_t OB_OUTLINE_DEFAULT_DATABASE_ID = OB_MIN_INNER_DATABASE_ID + 9;
|
||||
// use only if the 'use database' command is not executed.
|
||||
const uint64_t OB_MOCK_DEFAULT_DATABASE_ID = OB_MIN_INNER_DATABASE_ID + 9;
|
||||
const uint64_t OB_CTE_DATABASE_ID = OB_MIN_INNER_DATABASE_ID + 10;
|
||||
const uint64_t OB_MAX_INNER_DATABASE_ID = 202000;
|
||||
|
||||
@ -1216,7 +1216,7 @@ const char* const OB_MYSQL_SCHEMA_NAME = "mysql";
|
||||
const char* const OB_RECYCLEBIN_SCHEMA_NAME = "__recyclebin"; //hidden
|
||||
const char* const OB_PUBLIC_SCHEMA_NAME = "__public"; //hidden
|
||||
const char* const OB_ORA_SYS_SCHEMA_NAME = "SYS";
|
||||
const char* const OB_OUTLINE_DEFAULT_DATABASE_NAME = "__outline_default_db";
|
||||
const char* const OB_MOCK_DEFAULT_DATABASE_NAME = "__outline_default_db";
|
||||
const char* const OB_TEST_SCHEMA_NAME = "test";
|
||||
|
||||
OB_INLINE bool is_oceanbase_sys_database_id(const uint64_t database_id)
|
||||
@ -1251,7 +1251,7 @@ OB_INLINE bool is_public_database_id(const uint64_t database_id)
|
||||
|
||||
OB_INLINE bool is_outline_database_id(const uint64_t database_id)
|
||||
{
|
||||
return OB_OUTLINE_DEFAULT_DATABASE_ID == database_id;
|
||||
return OB_MOCK_DEFAULT_DATABASE_ID == database_id;
|
||||
}
|
||||
|
||||
OB_INLINE bool is_inner_db(const uint64_t db_id)
|
||||
|
@ -61,9 +61,9 @@ int ObTenantVirtualOutlineBase::set_database_infos_and_get_value(uint64_t databa
|
||||
if (OB_ISNULL(schema_guard_) || OB_ISNULL(allocator_)) {
|
||||
ret = OB_ERR_UNEXPECTED;
|
||||
LOG_WARN("parameter is NULL", K(ret), K(schema_guard_), K(allocator_));
|
||||
} else if (database_id == OB_OUTLINE_DEFAULT_DATABASE_ID) {
|
||||
} else if (database_id == OB_MOCK_DEFAULT_DATABASE_ID) {
|
||||
// virtual outline database
|
||||
if (OB_FAIL(ob_write_string(*allocator_, OB_OUTLINE_DEFAULT_DATABASE_NAME, db_name))) {
|
||||
if (OB_FAIL(ob_write_string(*allocator_, OB_MOCK_DEFAULT_DATABASE_NAME, db_name))) {
|
||||
LOG_WARN("fail to write string", K(ret), K(db_schema->get_database_name_str()));
|
||||
} else if (FALSE_IT(db_info.db_name_ = db_name)) {
|
||||
} else if (FALSE_IT(db_info.is_recycle_ = false)) {
|
||||
@ -180,7 +180,7 @@ int ObTenantVirtualOutline::fill_cells(const ObOutlineInfo *outline_info)
|
||||
case DATABASE_NAME : {
|
||||
DBInfo db_info;
|
||||
if (is_outline_database_id(outline_info->get_database_id())) {
|
||||
cells[cell_idx].set_varchar(OB_OUTLINE_DEFAULT_DATABASE_NAME);
|
||||
cells[cell_idx].set_varchar(OB_MOCK_DEFAULT_DATABASE_NAME);
|
||||
cells[cell_idx].set_collation_type(
|
||||
ObCharset::get_default_collation(ObCharset::get_default_charset()));
|
||||
} else if (OB_FAIL(database_infos_.get_refactored(outline_info->get_database_id(),
|
||||
|
@ -31869,8 +31869,8 @@ int ObDDLService::drop_outline(const obrpc::ObDropOutlineArg &arg)
|
||||
uint64_t database_id = OB_INVALID_ID;
|
||||
if (OB_SUCC(ret)) {
|
||||
bool database_exist = false;
|
||||
if (database_name == OB_OUTLINE_DEFAULT_DATABASE_NAME) {
|
||||
database_id = OB_OUTLINE_DEFAULT_DATABASE_ID;
|
||||
if (database_name == OB_MOCK_DEFAULT_DATABASE_NAME) {
|
||||
database_id = OB_MOCK_DEFAULT_DATABASE_ID;
|
||||
database_exist = true;
|
||||
} else if (OB_FAIL(schema_service_->check_database_exist(tenant_id,
|
||||
database_name,
|
||||
|
@ -6412,9 +6412,9 @@ int ObRootService::create_outline(const ObCreateOutlineArg &arg)
|
||||
const ObDatabaseSchema *db_schema = NULL;
|
||||
if (OB_FAIL(ddl_service_.get_tenant_schema_guard_with_version_in_inner_table(tenant_id, schema_guard))) {
|
||||
LOG_WARN("get schema guard in inner table failed", K(ret));
|
||||
} else if (database_name == OB_OUTLINE_DEFAULT_DATABASE_NAME) {
|
||||
} else if (database_name == OB_MOCK_DEFAULT_DATABASE_NAME) {
|
||||
// if not specify database, set default database name and database id;
|
||||
outline_info.set_database_id(OB_OUTLINE_DEFAULT_DATABASE_ID);
|
||||
outline_info.set_database_id(OB_MOCK_DEFAULT_DATABASE_ID);
|
||||
} else if (OB_FAIL(schema_guard.get_database_schema(tenant_id, database_name, db_schema))) {
|
||||
LOG_WARN("get database schema failed", K(ret));
|
||||
} else if (NULL == db_schema) {
|
||||
|
@ -2511,7 +2511,7 @@ OB_INLINE int ObSql::handle_text_query(const ObString &stmt, ObSqlCtx &context,
|
||||
LOG_WARN("Failed to get database id", K(ret));
|
||||
} else if (FALSE_IT(context.spm_ctx_.bl_key_.db_id_ =
|
||||
(database_id == OB_INVALID_ID) ?
|
||||
OB_OUTLINE_DEFAULT_DATABASE_ID:
|
||||
OB_MOCK_DEFAULT_DATABASE_ID:
|
||||
database_id)) {
|
||||
// do nothing
|
||||
} else if (!use_plan_cache) {
|
||||
|
@ -2308,7 +2308,7 @@ OB_INLINE int ObPlanCache::construct_plan_cache_key(ObSQLSessionInfo &session,
|
||||
int ret = OB_SUCCESS;
|
||||
uint64_t database_id = OB_INVALID_ID;
|
||||
session.get_database_id(database_id);
|
||||
pc_key.db_id_ = (database_id == OB_INVALID_ID) ? OB_OUTLINE_DEFAULT_DATABASE_ID : database_id;
|
||||
pc_key.db_id_ = (database_id == OB_INVALID_ID) ? OB_MOCK_DEFAULT_DATABASE_ID : database_id;
|
||||
pc_key.namespace_ = ns;
|
||||
pc_key.sys_vars_str_ = session.get_sys_var_in_pc_str();
|
||||
pc_key.config_str_ = session.get_config_in_pc_str();
|
||||
|
@ -63,7 +63,7 @@ int ObOutlineResolver::resolve_outline_name(const ParseNode *node, ObString &db_
|
||||
true : (mode != OB_LOWERCASE_AND_INSENSITIVE);
|
||||
if (NULL == db_name_node) {
|
||||
if (session_info_->get_database_name().empty()) {
|
||||
db_name = OB_OUTLINE_DEFAULT_DATABASE_NAME;
|
||||
db_name = OB_MOCK_DEFAULT_DATABASE_NAME;
|
||||
} else {
|
||||
db_name = session_info_->get_database_name();
|
||||
}
|
||||
|
@ -1879,6 +1879,8 @@ const ObAuditRecordData &ObSQLSessionInfo::get_final_audit_record(
|
||||
|
||||
if (OB_FAIL(get_database_id(audit_record_.db_id_))) {
|
||||
LOG_WARN("fail to get database id", K(ret));
|
||||
} else if (audit_record_.db_id_ == OB_INVALID_ID) {
|
||||
audit_record_.db_id_ = OB_MOCK_DEFAULT_DATABASE_ID;
|
||||
}
|
||||
} else if (EXECUTE_REMOTE == mode || EXECUTE_DIST == mode) {
|
||||
audit_record_.tenant_name_ = NULL;
|
||||
|
Loading…
x
Reference in New Issue
Block a user