fix exec context do not release temp expr ctx leads memory leak
This commit is contained in:
committed by
ob-robot
parent
04f8e06269
commit
220556e5be
@ -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);
|
ObTempExprCtxReplaceGuard exec_ctx_backup_guard(exec_ctx, *temp_expr_ctx);
|
||||||
OZ(rt_exprs_.at(expr_idx_).eval(*temp_expr_ctx, res_datum));
|
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_));
|
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_));
|
LOG_TRACE("temp expr result", K(result), K(row), K(rt_exprs_));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -469,6 +469,7 @@ public:
|
|||||||
ObExecFeedbackInfo &get_feedback_info() { return fb_info_; };
|
ObExecFeedbackInfo &get_feedback_info() { return fb_info_; };
|
||||||
void set_cur_rownum(int64_t cur_rownum) { cur_row_num_ = cur_rownum; }
|
void set_cur_rownum(int64_t cur_rownum) { cur_row_num_ = cur_rownum; }
|
||||||
int64_t get_cur_rownum() { return cur_row_num_; }
|
int64_t get_cur_rownum() { return cur_row_num_; }
|
||||||
|
bool use_temp_expr_ctx_cache() const { return use_temp_expr_ctx_cache_; }
|
||||||
private:
|
private:
|
||||||
int build_temp_expr_ctx(const ObTempExpr &temp_expr, ObTempExprCtx *&temp_expr_ctx);
|
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);
|
int set_phy_op_ctx_ptr(uint64_t index, void *phy_op);
|
||||||
|
|||||||
Reference in New Issue
Block a user