Fix merge join clear evaluated flag by mistake

This commit is contained in:
hezuojiao
2023-10-09 02:13:44 +00:00
committed by ob-robot
parent cdf416562b
commit c7a9ec1e61

View File

@ -975,6 +975,7 @@ int ObMergeJoinOp::ChildBatchFetcher::get_next_batch(const int64_t max_row_cnt)
for (int64_t i = 0; i < backup_datums_.count(); i++) {
ObDatum *datum = all_exprs_->at(i)->locate_batch_datums(merge_join_op_.eval_ctx_);
MEMCPY(datum, backup_datums_.at(i) + backup_rows_used_, sizeof(ObDatum) * restore_cnt);
all_exprs_->at(i)->set_evaluated_projected(merge_join_op_.eval_ctx_);
}
brs_.size_ = restore_cnt;
brs_.end_ = false;
@ -1117,7 +1118,6 @@ int ObMergeJoinOp::ChildBatchFetcher::get_next_small_group(int64_t &cmp_res)
}
}
if (OB_SUCC(ret) && cur_idx_ < brs_.size_) {
merge_join_op_.clear_evaluated_flag();
if (OB_FAIL(merge_join_op_.calc_equal_conds_with_batch_idx(cmp_res))) {
LOG_WARN("calc equal conds with batch index failed", K(ret));
} else {
@ -1161,7 +1161,6 @@ int ObMergeJoinOp::ChildBatchFetcher::get_next_equal_group(JoinRowList &row_list
}
if (OB_SUCC(ret) && !all_batch_finished) {
merge_join_op_.clear_evaluated_flag();
if (OB_FAIL(merge_join_op_.calc_equal_conds_with_stored_row<!is_left>(
stored_row, cur_idx_, cmp_res))) {
LOG_WARN("calc equal conds failed", K(ret));
@ -1383,7 +1382,6 @@ int ObMergeJoinOp::iterate_both_chidren(ObEvalCtx::BatchInfoScopeGuard &guard)
} else if (OB_FAIL(match_groups_.push_back(std::make_pair(l_row_list, r_row_list)))) {
LOG_WARN("match group push back failed", K(ret));
} else if (!left_brs_fetcher_.iter_end() && !right_brs_fetcher_.iter_end()) {
clear_evaluated_flag();
if (OB_FAIL(calc_equal_conds_with_batch_idx(cmp_res_))) {
LOG_WARN("calc equal cond with batch index failed", K(ret));
}
@ -1730,6 +1728,7 @@ int ObMergeJoinOp::output_side_rows(ChildBatchFetcher &batch_fetcher,
batch_join_state_ = BJS_JOIN_END;
} else if (OB_FAIL(batch_fetcher.brs_holder_.restore())) {
LOG_WARN("fetcher restore failed", K(ret));
} else if (FALSE_IT(clear_evaluated_flag())) {
} else if (OB_FAIL(batch_fetcher.get_next_batch(max_row_cnt))) {
LOG_WARN("get child next batch failed", K(ret));
} else if (OB_UNLIKELY(batch_fetcher.iter_end())) {