diff --git a/src/pl/ob_pl_user_type.cpp b/src/pl/ob_pl_user_type.cpp index 89efd9f6bb..f1a51138cb 100644 --- a/src/pl/ob_pl_user_type.cpp +++ b/src/pl/ob_pl_user_type.cpp @@ -1462,6 +1462,10 @@ int ObPLComposite::copy_element(const ObObj &src, need_new_allocator)); CK (OB_NOT_NULL(dest_composite)); if (src.get_ext() == dest.get_ext()) { + OX (dest.set_extend(reinterpret_cast(src_composite), + src.get_meta().get_extend_type(), + src.get_val_len())); + OZ (ObUserDefinedType::destruct_obj(dest, session)); OZ (ObPLComposite::deep_copy(*dest_composite, src_composite, allocator, diff --git a/src/sql/engine/expr/ob_expr_udf.cpp b/src/sql/engine/expr/ob_expr_udf.cpp index b5a2917991..b3d1979324 100644 --- a/src/sql/engine/expr/ob_expr_udf.cpp +++ b/src/sql/engine/expr/ob_expr_udf.cpp @@ -370,16 +370,9 @@ int ObExprUDF::process_out_params(const ObObj *objs_stack, } else { OZ (deep_copy_obj(*pkg_allocator, obj, obj)); } - OZ (ObSPIService::spi_set_package_variable( - &exec_ctx, - NULL, - params_desc.at(i).get_package_id(), - params_desc.at(i).get_index(), - iparams.at(i))); - int tmp_ret = OB_SUCCESS; - tmp_ret = pl::ObUserDefinedType::destruct_obj(iparams.at(i), exec_ctx.get_my_session()); - ret = OB_SUCCESS == ret ? tmp_ret : ret; } + OZ (ObSPIService::spi_update_package_change_info(&plctx, params_desc.at(i).get_package_id(), + params_desc.at(i).get_index())); } } return ret;