From fc17993625f4b3dcef7a12cc27854ccfc27ce140 Mon Sep 17 00:00:00 2001 From: jingtaoye35 <1255153887@qq.com> Date: Fri, 24 May 2024 07:50:01 +0000 Subject: [PATCH] Fix param_store deep copy bugs --- src/sql/engine/ob_physical_plan_ctx.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/sql/engine/ob_physical_plan_ctx.cpp b/src/sql/engine/ob_physical_plan_ctx.cpp index e603e94d02..038db5c99f 100644 --- a/src/sql/engine/ob_physical_plan_ctx.cpp +++ b/src/sql/engine/ob_physical_plan_ctx.cpp @@ -913,9 +913,9 @@ OB_DEF_DESERIALIZE(ObPhysicalPlanCtx) LOG_WARN("decode int32_t failed", K(data_len), K(pos), K(ret)); } for (int64_t i = 0; OB_SUCC(ret) && i < real_param_cnt; ++i) { - ObObj tmp; OB_UNIS_DECODE(param_idx); OB_UNIS_DECODE(param_obj); + ObObjParam tmp = param_obj; if (OB_UNLIKELY(param_idx < 0) || OB_UNLIKELY(param_idx >= param_cnt)) { ret = OB_ERR_UNEXPECTED; LOG_WARN("invalid param idx", K(param_idx), K(param_cnt)); @@ -932,7 +932,7 @@ OB_DEF_DESERIALIZE(ObPhysicalPlanCtx) //所以需要对param store的所有元素都执行一次深拷贝 for (int64_t i = 0; OB_SUCC(ret) && i < param_store_.count(); ++i) { const ObObjParam &objpara = param_store_.at(i); - ObObj tmp; + ObObjParam tmp = objpara; if (OB_FAIL(deep_copy_obj(allocator_, objpara, tmp))) { LOG_WARN("deep copy obj failed", K(ret)); } else {