fix the issue of table lock losing results
This commit is contained in:
@ -278,8 +278,8 @@ int ObTableLockOp::inner_get_next_batch(const int64_t max_row_cnt)
|
|||||||
err_log_rt_def_.curr_err_log_record_num_++;
|
err_log_rt_def_.curr_err_log_record_num_++;
|
||||||
err_log_rt_def_.reset();
|
err_log_rt_def_.reset();
|
||||||
continue;
|
continue;
|
||||||
} else if (need_return_row_) {
|
} else if (!brs_.skip_->is_all_true(brs_.size_)) {
|
||||||
//break to output this batch
|
//this batch has not been skipped for all rows, need break to output this batch
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -313,6 +313,8 @@ OB_INLINE int ObTableLockOp::lock_one_row_post_proc()
|
|||||||
LOG_WARN("submit all dml task failed", K(ret));
|
LOG_WARN("submit all dml task failed", K(ret));
|
||||||
} else if (MY_SPEC.is_skip_locked()) {
|
} else if (MY_SPEC.is_skip_locked()) {
|
||||||
ret = OB_SUCCESS;
|
ret = OB_SUCCESS;
|
||||||
|
dml_rtctx_.reuse(); //reuse current context to lock the next row
|
||||||
|
need_return_row_ = false;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
need_return_row_ = true;
|
need_return_row_ = true;
|
||||||
@ -425,6 +427,7 @@ int ObTableLockOp::lock_batch_to_das(const ObBatchRows *child_brs)
|
|||||||
operator_evalctx_guard.set_batch_size(child_brs->size_);
|
operator_evalctx_guard.set_batch_size(child_brs->size_);
|
||||||
(void) brs_.copy(child_brs);
|
(void) brs_.copy(child_brs);
|
||||||
for (auto i = 0; OB_SUCC(ret) && i < child_brs->size_; i++) {
|
for (auto i = 0; OB_SUCC(ret) && i < child_brs->size_; i++) {
|
||||||
|
need_return_row_ = false;
|
||||||
if (child_brs->skip_->at(i)) {
|
if (child_brs->skip_->at(i)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user