diff --git a/src/sql/code_generator/ob_static_engine_cg.cpp b/src/sql/code_generator/ob_static_engine_cg.cpp index da580c5f4f..d4955e257a 100644 --- a/src/sql/code_generator/ob_static_engine_cg.cpp +++ b/src/sql/code_generator/ob_static_engine_cg.cpp @@ -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 diff --git a/src/sql/engine/basic/ob_group_join_buffer.cpp b/src/sql/engine/basic/ob_group_join_buffer.cpp index ebdd732f3a..6ce08320ec 100644 --- a/src/sql/engine/basic/ob_group_join_buffer.cpp +++ b/src/sql/engine/basic/ob_group_join_buffer.cpp @@ -248,6 +248,8 @@ int ObGroupJoinBufffer::fill_cur_row_group_param() ObExpr *dst = rescan_param.dst_; ObDatum ¶m_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 ¶m_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_)); diff --git a/src/sql/engine/subquery/ob_subplan_filter_op.cpp b/src/sql/engine/subquery/ob_subplan_filter_op.cpp index 6d0c89dee8..55e78e866f 100644 --- a/src/sql/engine/subquery/ob_subplan_filter_op.cpp +++ b/src/sql/engine/subquery/ob_subplan_filter_op.cpp @@ -1449,6 +1449,8 @@ int ObSubPlanFilterOp::fill_cur_row_das_batch_param(ObEvalCtx& eval_ctx, uint64_ ObExpr *dst = rescan_param.dst_; ObDatum ¶m_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 {