[CP] [to #52643060] allow UDF calls when no database selected in MySQL mode
This commit is contained in:
@ -1552,11 +1552,9 @@ int ObPLExternalNS::resolve_external_symbol(const common::ObString &name,
|
|||||||
db_id = parent_id;
|
db_id = parent_id;
|
||||||
} else if (OB_FAIL(session_info.get_database_id(db_id))) {
|
} else if (OB_FAIL(session_info.get_database_id(db_id))) {
|
||||||
LOG_WARN("failed to get session database id", K(ret), K(db_id));
|
LOG_WARN("failed to get session database id", K(ret), K(db_id));
|
||||||
} else if (OB_INVALID_ID == db_id) {
|
|
||||||
ret = OB_ERR_NO_DB_SELECTED;
|
|
||||||
LOG_WARN("No database selected", K(ret));
|
|
||||||
}
|
}
|
||||||
if (OB_SUCC(ret)) {
|
|
||||||
|
if (OB_SUCC(ret) && OB_INVALID_ID != db_id) {
|
||||||
if (OB_FAIL(schema_guard.get_package_id(
|
if (OB_FAIL(schema_guard.get_package_id(
|
||||||
tenant_id, db_id, name, share::schema::PACKAGE_TYPE, compatible_mode, package_id))) {
|
tenant_id, db_id, name, share::schema::PACKAGE_TYPE, compatible_mode, package_id))) {
|
||||||
LOG_WARN("get package id failed", K(ret));
|
LOG_WARN("get package id failed", K(ret));
|
||||||
@ -1604,6 +1602,8 @@ int ObPLExternalNS::resolve_external_symbol(const common::ObString &name,
|
|||||||
} else {
|
} else {
|
||||||
OZ (session_info.get_database_id(db_id));
|
OZ (session_info.get_database_id(db_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (OB_SUCC(ret) && OB_INVALID_ID != db_id) {
|
||||||
OZ (schema_guard.get_table_id(tenant_id, db_id, name, false,
|
OZ (schema_guard.get_table_id(tenant_id, db_id, name, false,
|
||||||
schema::ObSchemaGetterGuard::ALL_NON_HIDDEN_TYPES, table_id));
|
schema::ObSchemaGetterGuard::ALL_NON_HIDDEN_TYPES, table_id));
|
||||||
if (OB_FAIL(ret)) {
|
if (OB_FAIL(ret)) {
|
||||||
@ -1623,6 +1623,7 @@ int ObPLExternalNS::resolve_external_symbol(const common::ObString &name,
|
|||||||
var_idx = table_id;
|
var_idx = table_id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// then udt type
|
// then udt type
|
||||||
if (OB_SUCC(ret) && OB_INVALID_INDEX == var_idx && lib::is_oracle_mode()) {
|
if (OB_SUCC(ret) && OB_INVALID_INDEX == var_idx && lib::is_oracle_mode()) {
|
||||||
uint64_t tenant_id = session_info.get_effective_tenant_id();
|
uint64_t tenant_id = session_info.get_effective_tenant_id();
|
||||||
@ -1633,6 +1634,8 @@ int ObPLExternalNS::resolve_external_symbol(const common::ObString &name,
|
|||||||
} else {
|
} else {
|
||||||
OZ (session_info.get_database_id(db_id));
|
OZ (session_info.get_database_id(db_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (OB_SUCC(ret) && OB_INVALID_ID != db_id) {
|
||||||
const ObUDTTypeInfo *udt_info = NULL;
|
const ObUDTTypeInfo *udt_info = NULL;
|
||||||
OZ (schema_guard.get_udt_info(tenant_id, db_id, OB_INVALID_ID, name, udt_info));
|
OZ (schema_guard.get_udt_info(tenant_id, db_id, OB_INVALID_ID, name, udt_info));
|
||||||
// 尝试去系统租户下查找
|
// 尝试去系统租户下查找
|
||||||
@ -1664,7 +1667,7 @@ int ObPLExternalNS::resolve_external_symbol(const common::ObString &name,
|
|||||||
OZ (add_dependency_object(obj_version));
|
OZ (add_dependency_object(obj_version));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// then routine
|
// then routine
|
||||||
@ -1706,6 +1709,8 @@ int ObPLExternalNS::resolve_external_symbol(const common::ObString &name,
|
|||||||
} else {
|
} else {
|
||||||
OZ (session_info.get_database_id(db_id));
|
OZ (session_info.get_database_id(db_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (OB_SUCC(ret) && OB_INVALID_ID != db_id) {
|
||||||
OZ (schema_checker.init(schema_guard, session_info.get_sessid()));
|
OZ (schema_checker.init(schema_guard, session_info.get_sessid()));
|
||||||
OZ (ObResolverUtils::resolve_synonym_object_recursively(
|
OZ (ObResolverUtils::resolve_synonym_object_recursively(
|
||||||
schema_checker, synonym_checker,
|
schema_checker, synonym_checker,
|
||||||
@ -1714,6 +1719,7 @@ 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));
|
OZ (resolve_synonym(object_db_id, object_name, type, parent_id, var_idx, name, db_id));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
//then database name
|
//then database name
|
||||||
if (OB_SUCC(ret) && is_oracle_mode() && OB_INVALID_INDEX == var_idx && OB_INVALID_INDEX == parent_id) {
|
if (OB_SUCC(ret) && is_oracle_mode() && OB_INVALID_INDEX == var_idx && OB_INVALID_INDEX == parent_id) {
|
||||||
uint64_t tenant_id = session_info.get_effective_tenant_id();
|
uint64_t tenant_id = session_info.get_effective_tenant_id();
|
||||||
|
|||||||
Reference in New Issue
Block a user