[CP] to issue<53642848>:fix collect package dependence issue if sql using package udf

This commit is contained in:
obdev
2024-02-08 00:44:44 +00:00
committed by ob-robot
parent b4d0bb8ff1
commit 01d18c752e
5 changed files with 53 additions and 16 deletions

View File

@ -4930,9 +4930,11 @@ bool ObUDFRawExpr::inner_same_as(const ObRawExpr &expr,
return bool_ret;
}
int ObUDFRawExpr::get_schema_object_version(share::schema::ObSchemaObjVersion &obj_version)
int ObUDFRawExpr::get_schema_object_version(share::schema::ObSchemaGetterGuard &schema_guard,
ObIArray<share::schema::ObSchemaObjVersion> &obj_versions)
{
int ret = OB_SUCCESS;
share::schema::ObSchemaObjVersion obj_version;
/*!
* schema_version will be set when call ObRawExprUtils::resolve_udf_common_info
*
@ -4967,6 +4969,27 @@ int ObUDFRawExpr::get_schema_object_version(share::schema::ObSchemaObjVersion &o
CK (udf_schema_version_ == OB_INVALID_VERSION && pkg_schema_version_ == OB_INVALID_VERSION);
// do nothing ...
}
if (OB_FAIL(ret)) {
} else if (common::OB_INVALID_ID != pkg_id_ && !is_udt_udf_) {
const ObPackageInfo *spec_info = NULL;
const ObPackageInfo *body_info = NULL;
ObSchemaObjVersion ver;
OZ (pl::ObPLPackageManager::get_package_schema_info(schema_guard, pkg_id_, spec_info, body_info));
if (OB_NOT_NULL(spec_info)) {
OX (ver.object_id_ = spec_info->get_package_id());
OX (ver.version_ = spec_info->get_schema_version());
OX (ver.object_type_ = DEPENDENCY_PACKAGE);
OZ (obj_versions.push_back(ver));
}
if (OB_NOT_NULL(body_info)) {
OX (ver.object_id_ = body_info->get_package_id());
OX (ver.version_ = body_info->get_schema_version());
OX (ver.object_type_ = DEPENDENCY_PACKAGE_BODY);
OZ (obj_versions.push_back(ver));
}
} else {
OZ (obj_versions.push_back(obj_version));
}
return ret;
}