Fix mvcc node concurrency bug when estimating row

This commit is contained in:
obdev
2024-02-07 09:56:01 +00:00
committed by ob-robot
parent 10706ab7d4
commit 0e650ea9bb

View File

@ -406,10 +406,11 @@ int ObQueryEngine::sample_rows(Iterator<BtreeRawIterator> *iter, const ObMemtabl
gap_size = 0;
}
if (blocksstable::ObDmlFlag::DF_NOT_EXIST == value->first_dml_flag_ &&
blocksstable::ObDmlFlag::DF_NOT_EXIST == value->last_dml_flag_ &&
nullptr != value->list_head_ &&
value->list_head_->tx_id_ == tx_id) {
++logical_row_count;
blocksstable::ObDmlFlag::DF_NOT_EXIST == value->last_dml_flag_) {
ObMvccTransNode *iter = value->get_list_head();
if (nullptr != iter && iter->get_tx_id() == tx_id) {
++logical_row_count;
}
} else if (blocksstable::ObDmlFlag::DF_INSERT == value->first_dml_flag_
&& blocksstable::ObDmlFlag::DF_DELETE != value->last_dml_flag_) {
// insert new row