[CP] [to #48974202] fix pl object name same as database name

This commit is contained in:
obdev 2023-10-17 05:39:30 +00:00 committed by ob-robot
parent 6d6757335f
commit 5be7bb98ca
3 changed files with 16 additions and 17 deletions

View File

@ -11720,8 +11720,6 @@ int ObPLResolver::resolve_udf_info(
resolve_ctx_.session_info_.get_effective_tenant_id(), routine_info->get_database_id(), database_schema));
CK (OB_NOT_NULL(database_schema));
OX (db_name = database_schema->get_database_name_str());
} else {
OX (db_name = resolve_ctx_.session_info_.get_database_name());
}
}

View File

@ -1580,20 +1580,6 @@ int ObPLExternalNS::resolve_external_symbol(const common::ObString &name,
}
}
}
//then database name
if (OB_SUCC(ret) && OB_INVALID_INDEX == var_idx && OB_INVALID_INDEX == parent_id) {
uint64_t tenant_id = session_info.get_effective_tenant_id();
uint64_t db_id = OB_INVALID_ID;
if (OB_FAIL(schema_guard.get_database_id(tenant_id, name, db_id))) {
LOG_WARN("get database id failed", K(ret));
} else if (OB_INVALID_ID == db_id) {
type = ObPLExternalNS::INVALID_VAR;
} else {
type = DB_NS;
parent_id = OB_INVALID_INDEX;
var_idx = db_id;
}
}
//then table name
if (OB_SUCC(ret) && OB_INVALID_INDEX == var_idx) {
uint64_t tenant_id = session_info.get_effective_tenant_id();
@ -1714,6 +1700,20 @@ int ObPLExternalNS::resolve_external_symbol(const common::ObString &name,
OZ (resolve_synonym(object_db_id, object_name, type, parent_id, var_idx, name, db_id));
}
}
//then database name
if (OB_SUCC(ret) && OB_INVALID_INDEX == var_idx && OB_INVALID_INDEX == parent_id) {
uint64_t tenant_id = session_info.get_effective_tenant_id();
uint64_t db_id = OB_INVALID_ID;
if (OB_FAIL(schema_guard.get_database_id(tenant_id, name, db_id))) {
LOG_WARN("get database id failed", K(ret));
} else if (OB_INVALID_ID == db_id) {
type = ObPLExternalNS::INVALID_VAR;
} else {
type = DB_NS;
parent_id = OB_INVALID_INDEX;
var_idx = db_id;
}
}
// 尝试看是不是系统变量的特殊写法,如 set SQL_MODE='ONLY_FULL_GROUP_BY';
if (OB_SUCC(ret)
&& !resolve_ctx_.is_sql_scope_ // 纯SQL语境过来的表达式解析不需要尝试解析为SESSION VAR

View File

@ -4766,12 +4766,13 @@ int ObDMLResolver::resolve_function_table_item(const ParseNode &parse_tree,
ObSchemaObjVersion table_version;
share::schema::ObSchemaGetterGuard *schema_guard = NULL;
uint64_t database_id = OB_INVALID_ID;
const ObString &database_name = udf->get_database_name().empty() ? session_info_->get_database_name() : udf->get_database_name();
CK (OB_NOT_NULL(udf));
if (OB_FAIL(ret)) {
} else if (OB_ISNULL(schema_guard = params_.schema_checker_->get_schema_guard())) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("table schema is null", K(ret), K(schema_guard));
} else if (OB_FAIL(schema_guard->get_database_id(session_info_->get_effective_tenant_id(), udf->get_database_name(), database_id))) {
} else if (OB_FAIL(schema_guard->get_database_id(session_info_->get_effective_tenant_id(), database_name, database_id))) {
LOG_WARN("failed to get database id", K(ret));
} else if (udf->need_add_dependency()) {
uint64_t dep_obj_id = view_ref_id_;