[das group rescan] clear eval flag when fill param for right op
This commit is contained in:
@ -874,7 +874,6 @@ int ObStaticEngineCG::generate_calc_exprs(
|
|||||||
&& !raw_expr->is_op_pseudo_column_expr()
|
&& !raw_expr->is_op_pseudo_column_expr()
|
||||||
&& !has_exist_in_array(dep_exprs, flattened_cur_exprs_arr.at(i))
|
&& !has_exist_in_array(dep_exprs, flattened_cur_exprs_arr.at(i))
|
||||||
&& (raw_expr->has_flag(CNT_VOLATILE_CONST)
|
&& (raw_expr->has_flag(CNT_VOLATILE_CONST)
|
||||||
|| raw_expr->has_flag(CNT_DYNAMIC_PARAM)
|
|
||||||
|| contain_batch_stmt_parameter // 计算包含batch优化的折叠参数
|
|| contain_batch_stmt_parameter // 计算包含batch优化的折叠参数
|
||||||
|| !raw_expr->is_const_expr())) {
|
|| !raw_expr->is_const_expr())) {
|
||||||
if (check_eval_once
|
if (check_eval_once
|
||||||
|
|||||||
@ -248,6 +248,8 @@ int ObGroupJoinBufffer::fill_cur_row_group_param()
|
|||||||
ObExpr *dst = rescan_param.dst_;
|
ObExpr *dst = rescan_param.dst_;
|
||||||
ObDatum ¶m_datum = dst->locate_datum_for_write(*eval_ctx_);
|
ObDatum ¶m_datum = dst->locate_datum_for_write(*eval_ctx_);
|
||||||
ObSqlArrayObj &arr = group_params_.at(i);
|
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_))) {
|
if (OB_FAIL(param_datum.from_obj(arr.data_[cur_group_idx_], dst->obj_datum_map_))) {
|
||||||
LOG_WARN("fail to cast datum", K(ret));
|
LOG_WARN("fail to cast datum", K(ret));
|
||||||
} else {
|
} else {
|
||||||
@ -269,6 +271,8 @@ int ObGroupJoinBufffer::fill_cur_row_group_param()
|
|||||||
ObExpr *dst = rescan_param.dst_;
|
ObExpr *dst = rescan_param.dst_;
|
||||||
ObDatum ¶m_datum = dst->locate_datum_for_write(*eval_ctx_);
|
ObDatum ¶m_datum = dst->locate_datum_for_write(*eval_ctx_);
|
||||||
ObSqlArrayObj *arr = above_right_group_params_.at(i);
|
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_)) {
|
if (OB_UNLIKELY(above_group_idx_for_read_ >= arr->count_)) {
|
||||||
ret = OB_ERR_UNEXPECTED;
|
ret = OB_ERR_UNEXPECTED;
|
||||||
LOG_WARN("unexpected group idx", KR(ret), K(above_group_idx_for_read_), K(arr->count_));
|
LOG_WARN("unexpected group idx", KR(ret), K(above_group_idx_for_read_), K(arr->count_));
|
||||||
|
|||||||
@ -1449,6 +1449,8 @@ int ObSubPlanFilterOp::fill_cur_row_das_batch_param(ObEvalCtx& eval_ctx, uint64_
|
|||||||
ObExpr *dst = rescan_param.dst_;
|
ObExpr *dst = rescan_param.dst_;
|
||||||
ObDatum ¶m_datum = dst->locate_datum_for_write(eval_ctx);
|
ObDatum ¶m_datum = dst->locate_datum_for_write(eval_ctx);
|
||||||
const ObSqlArrayObj &arr = das_batch_params_.at(i);
|
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_))) {
|
if (OB_FAIL(param_datum.from_obj(arr.data_[current_group], dst->obj_datum_map_))) {
|
||||||
LOG_WARN("fail to cast datum", K(ret));
|
LOG_WARN("fail to cast datum", K(ret));
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user