diff --git a/src/pl/ob_pl_package.cpp b/src/pl/ob_pl_package.cpp index 3059eca5f..6de87fd13 100644 --- a/src/pl/ob_pl_package.cpp +++ b/src/pl/ob_pl_package.cpp @@ -248,7 +248,7 @@ int ObPLPackage::instantiate_package_state(const ObPLResolveCtx &resolve_ctx, } else { // sync other server modify for this server! (from porxy or distribute plan) if (var_type.is_obj_type()) { - // do nothing + OZ (ObUserDefinedType::destruct_objparam(package_state.get_pkg_allocator(), value, &(resolve_ctx.session_info_))); } else { OZ (ObUserDefinedType::destruct_obj(value, &(resolve_ctx.session_info_), true)); if (OB_SUCC(ret) && var_type.is_record_type() && PL_RECORD_TYPE == value.get_meta().get_extend_type()) { diff --git a/src/pl/ob_pl_package_manager.cpp b/src/pl/ob_pl_package_manager.cpp index 0205352a3..7e1999e96 100644 --- a/src/pl/ob_pl_package_manager.cpp +++ b/src/pl/ob_pl_package_manager.cpp @@ -1116,9 +1116,6 @@ int ObPLPackageManager::set_package_var_val(const ObPLResolveCtx &resolve_ctx, if (OB_NOT_NULL(var) && var->get_type().is_cursor_type() && !var->get_type().is_cursor_var()) { // package ref cursor variable, refrence outside, do not destruct old var val. - if (OB_FAIL(ret) && need_free_new) { - ObUserDefinedType::destruct_objparam(package_state->get_pkg_allocator(), new_var_val, &(resolve_ctx.session_info_)); - } } else { if (OB_FAIL(ret) && need_free_new) { ObUserDefinedType::destruct_objparam(package_state->get_pkg_allocator(), new_var_val, &(resolve_ctx.session_info_));