[das group rescan] clear eval flag when fill param for right op

This commit is contained in:
obdev
2023-03-13 06:11:09 +00:00
committed by ob-robot
parent aa32b0c1ae
commit c9b053fcc8
3 changed files with 6 additions and 1 deletions

View File

@ -874,7 +874,6 @@ int ObStaticEngineCG::generate_calc_exprs(
&& !raw_expr->is_op_pseudo_column_expr()
&& !has_exist_in_array(dep_exprs, flattened_cur_exprs_arr.at(i))
&& (raw_expr->has_flag(CNT_VOLATILE_CONST)
|| raw_expr->has_flag(CNT_DYNAMIC_PARAM)
|| contain_batch_stmt_parameter // 计算包含batch优化的折叠参数
|| !raw_expr->is_const_expr())) {
if (check_eval_once

View File

@ -248,6 +248,8 @@ int ObGroupJoinBufffer::fill_cur_row_group_param()
ObExpr *dst = rescan_param.dst_;
ObDatum &param_datum = dst->locate_datum_for_write(*eval_ctx_);
ObSqlArrayObj &arr = group_params_.at(i);
dst->get_eval_info(*eval_ctx_).clear_evaluated_flag();
ObDynamicParamSetter::clear_parent_evaluated_flag(*eval_ctx_, *dst);
if (OB_FAIL(param_datum.from_obj(arr.data_[cur_group_idx_], dst->obj_datum_map_))) {
LOG_WARN("fail to cast datum", K(ret));
} else {
@ -269,6 +271,8 @@ int ObGroupJoinBufffer::fill_cur_row_group_param()
ObExpr *dst = rescan_param.dst_;
ObDatum &param_datum = dst->locate_datum_for_write(*eval_ctx_);
ObSqlArrayObj *arr = above_right_group_params_.at(i);
dst->get_eval_info(*eval_ctx_).clear_evaluated_flag();
ObDynamicParamSetter::clear_parent_evaluated_flag(*eval_ctx_, *dst);
if (OB_UNLIKELY(above_group_idx_for_read_ >= arr->count_)) {
ret = OB_ERR_UNEXPECTED;
LOG_WARN("unexpected group idx", KR(ret), K(above_group_idx_for_read_), K(arr->count_));

View File

@ -1449,6 +1449,8 @@ int ObSubPlanFilterOp::fill_cur_row_das_batch_param(ObEvalCtx& eval_ctx, uint64_
ObExpr *dst = rescan_param.dst_;
ObDatum &param_datum = dst->locate_datum_for_write(eval_ctx);
const ObSqlArrayObj &arr = das_batch_params_.at(i);
dst->get_eval_info(eval_ctx).clear_evaluated_flag();
ObDynamicParamSetter::clear_parent_evaluated_flag(eval_ctx, *dst);
if (OB_FAIL(param_datum.from_obj(arr.data_[current_group], dst->obj_datum_map_))) {
LOG_WARN("fail to cast datum", K(ret));
} else {