fix exec context do not release temp expr ctx leads memory leak

This commit is contained in:
18523270951@163.com
2023-08-29 09:40:32 +00:00
committed by ob-robot
parent 04f8e06269
commit 220556e5be
2 changed files with 4 additions and 0 deletions

View File

@ -635,6 +635,9 @@ int ObTempExpr::eval(ObExecContext &exec_ctx, const ObNewRow &row, ObObj &result
ObTempExprCtxReplaceGuard exec_ctx_backup_guard(exec_ctx, *temp_expr_ctx);
OZ(rt_exprs_.at(expr_idx_).eval(*temp_expr_ctx, res_datum));
OZ(res_datum->to_obj(result, rt_exprs_.at(expr_idx_).obj_meta_));
if (!exec_ctx.use_temp_expr_ctx_cache()) {
temp_expr_ctx->~ObTempExprCtx();
}
LOG_TRACE("temp expr result", K(result), K(row), K(rt_exprs_));
}

View File

@ -469,6 +469,7 @@ public:
ObExecFeedbackInfo &get_feedback_info() { return fb_info_; };
void set_cur_rownum(int64_t cur_rownum) { cur_row_num_ = cur_rownum; }
int64_t get_cur_rownum() { return cur_row_num_; }
bool use_temp_expr_ctx_cache() const { return use_temp_expr_ctx_cache_; }
private:
int build_temp_expr_ctx(const ObTempExpr &temp_expr, ObTempExprCtx *&temp_expr_ctx);
int set_phy_op_ctx_ptr(uint64_t index, void *phy_op);