fix dynamic memory leak in subplan filter onetime expr datum deep copy

This commit is contained in:
obdev 2023-04-19 08:11:42 +00:00 committed by ob-robot
parent 76b4679dc4
commit ff0be6d455

View File

@ -1268,18 +1268,16 @@ int ObSubPlanFilterOp::prepare_onetime_exprs_inner()
{
int ret = OB_SUCCESS;
ObPhysicalPlanCtx *plan_ctx = GET_PHY_PLAN_CTX(ctx_);
ObDatum copyed;
for (int64_t i = 0; OB_SUCC(ret) && i < MY_SPEC.onetime_exprs_.count(); ++i) {
const ObDynamicParamSetter &setter = MY_SPEC.onetime_exprs_.at(i);
ObDatum *datum = NULL;
if (OB_FAIL(setter.src_->eval(eval_ctx_, datum))) {
LOG_WARN("expression evaluate failed", K(ret));
} else if (OB_FAIL(copyed.deep_copy(*datum, ctx_.get_allocator()))) {
LOG_WARN("datum deep copy failed", K(ret));
} else if (OB_FAIL(setter.update_dynamic_param(eval_ctx_, copyed))) {
} else if (OB_FAIL(setter.update_dynamic_param(eval_ctx_, *datum))) {
LOG_WARN("update dynamic param store failed", K(ret));
}
}
return ret;
}