[CP] fix lost row caused by purge range
This commit is contained in:
@ -428,7 +428,7 @@ int ObMemtableScanIterator::inner_get_next_row(const ObStoreRow*& row)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (OB_FAIL(ret)) {
|
if (OB_FAIL(ret) && OB_ITER_END != ret) {
|
||||||
iter_flag_ = 0;
|
iter_flag_ = 0;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
|||||||
@ -75,6 +75,7 @@ int ObMultipleScanMergeImpl::supply_consume()
|
|||||||
for (int64_t i = 0; OB_SUCC(ret) && i < consume_num; ++i) {
|
for (int64_t i = 0; OB_SUCC(ret) && i < consume_num; ++i) {
|
||||||
const int64_t iter_idx = consumer_.get_consumer_iters()[i];
|
const int64_t iter_idx = consumer_.get_consumer_iters()[i];
|
||||||
ObStoreRowIterator* iter = iters_.at(iter_idx);
|
ObStoreRowIterator* iter = iters_.at(iter_idx);
|
||||||
|
item.iter_idx_ = iter_idx;
|
||||||
if (NULL == iter) {
|
if (NULL == iter) {
|
||||||
ret = common::OB_ERR_UNEXPECTED;
|
ret = common::OB_ERR_UNEXPECTED;
|
||||||
STORAGE_LOG(WARN, "Unexpected error", K(ret), K(iter));
|
STORAGE_LOG(WARN, "Unexpected error", K(ret), K(iter));
|
||||||
@ -88,7 +89,6 @@ int ObMultipleScanMergeImpl::supply_consume()
|
|||||||
ret = common::OB_ERR_UNEXPECTED;
|
ret = common::OB_ERR_UNEXPECTED;
|
||||||
STORAGE_LOG(WARN, "get next row return NULL row", "iter_index", iter_idx, K(ret));
|
STORAGE_LOG(WARN, "get next row return NULL row", "iter_index", iter_idx, K(ret));
|
||||||
} else {
|
} else {
|
||||||
item.iter_idx_ = iter_idx;
|
|
||||||
if (try_push_top_item_) {
|
if (try_push_top_item_) {
|
||||||
if (1 != consume_num) {
|
if (1 != consume_num) {
|
||||||
ret = OB_ERR_UNEXPECTED;
|
ret = OB_ERR_UNEXPECTED;
|
||||||
@ -104,8 +104,8 @@ int ObMultipleScanMergeImpl::supply_consume()
|
|||||||
// TODO: Ambiguous here, typically base_row only means row in major sstable.
|
// TODO: Ambiguous here, typically base_row only means row in major sstable.
|
||||||
// And iter_idx==0 doesn't necessarily mean iterator for memtable.
|
// And iter_idx==0 doesn't necessarily mean iterator for memtable.
|
||||||
0 == iter_idx ? ++row_stat_.inc_row_count_ : ++row_stat_.base_row_count_;
|
0 == iter_idx ? ++row_stat_.inc_row_count_ : ++row_stat_.base_row_count_;
|
||||||
range_purger_.on_push((int)item.iter_idx_, item.iter_flag_);
|
|
||||||
}
|
}
|
||||||
|
range_purger_.on_push((int)item.iter_idx_, item.iter_flag_);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (OB_SUCC(ret)) {
|
if (OB_SUCC(ret)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user