Skip to content

Commit

Permalink
revert exist check
Browse files Browse the repository at this point in the history
  • Loading branch information
z404289981 authored and ob-robot committed Oct 26, 2023
1 parent 5827316 commit 64b5667
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 33 deletions.
49 changes: 16 additions & 33 deletions src/storage/compaction/ob_partition_merge_iter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,8 @@ int ObPartitionRowMergeIter::next()
*ObPartitionMacroMergeIter
*/
ObPartitionMacroMergeIter::ObPartitionMacroMergeIter()
: macro_block_iter_(nullptr),
: exister_allocator_("Exister", OB_MALLOC_NORMAL_BLOCK_SIZE, MTL_ID()),
macro_block_iter_(nullptr),
curr_block_desc_(),
curr_block_meta_(),
macro_block_opened_(false)
Expand Down Expand Up @@ -471,50 +472,32 @@ int ObPartitionMacroMergeIter::get_curr_range(ObDatumRange &range) const
int ObPartitionMacroMergeIter::exist(const ObDatumRow *row, bool &is_exist)
{
int ret = OB_SUCCESS;
ObDatumRowkey rowkey;
is_exist = true;

if (IS_NOT_INIT) {
ret = OB_NOT_INIT;
LOG_WARN("ObPartitionMacroMergeIter is not inited", K(ret), K(*this));
} else if (OB_ISNULL(row)) {
ret = OB_INVALID_ARGUMENT;
LOG_WARN("Invalid argument to check row exist", K(ret), KP(row));
} else {
const blocksstable::ObDatumRow *temp_row = nullptr;
blocksstable::ObDatumRange query_range;
query_range.end_key_.set_max_rowkey();
query_range.set_left_closed();
ObSSTableRowWholeScanner *iter = reinterpret_cast<ObSSTableRowWholeScanner *>(row_iter_);
iter->reset();

if (OB_FAIL(query_range.start_key_.assign(row->storage_datums_, schema_rowkey_column_cnt_))) {
STORAGE_LOG(WARN, "Failed to assign rowkey", K(ret), K(row), K_(schema_rowkey_column_cnt));
} else if (OB_FAIL(iter->open(
access_param_.iter_param_,
access_context_,
query_range,
curr_block_desc_,
*static_cast<ObSSTable *>(table_)))) {
LOG_WARN("fail to open iter", K(ret), K(query_range));
} else if (OB_FAIL(iter->get_next_row(temp_row))) {
STORAGE_LOG(WARN, "fail to get next row", K(ret), KPC(iter));
} else if (OB_ISNULL(temp_row)) {
ret = OB_ERR_UNEXPECTED;
STORAGE_LOG(WARN, "unecxpected null row", K(ret));
} else if (OB_FAIL(rowkey.assign(temp_row->storage_datums_, schema_rowkey_column_cnt_))) {
common::ObIAllocator *allocator = access_context_.allocator_;
common::ObIAllocator *stmt_allocator = access_context_.stmt_allocator_;
access_context_.allocator_ = &exister_allocator_;
access_context_.stmt_allocator_ = &exister_allocator_;
bool has_found = false;
ObDatumRowkey rowkey;
if (OB_FAIL(rowkey.assign(row->storage_datums_, schema_rowkey_column_cnt_))) {
STORAGE_LOG(WARN, "Failed to assign rowkey", K(ret), KPC(row), K_(schema_rowkey_column_cnt));
} else if (OB_FAIL(table_->exist(access_param_.iter_param_, access_context_, rowkey, is_exist, has_found))) {
LOG_WARN("Failed to check row if exist", K(ret), KPC(row));
} else {
int temp_cmp_ret = 0;
if (OB_FAIL(query_range.start_key_.compare(rowkey, read_info_.get_datum_utils(), temp_cmp_ret))) {
STORAGE_LOG(WARN, "Failed to compare rowkey", K(ret), K(rowkey), K(query_range.start_key_), K(read_info_));
} else if (temp_cmp_ret == 0) {
is_exist = true;
} else {
is_exist = false;
}
iter->reset();
exister_allocator_.reuse();
}
access_context_.allocator_ = allocator;
access_context_.stmt_allocator_ = stmt_allocator;
}

return ret;
}

Expand Down
1 change: 1 addition & 0 deletions src/storage/compaction/ob_partition_merge_iter.h
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,7 @@ class ObPartitionMacroMergeIter : public ObPartitionMergeIter
void reset_macro_block_desc() { curr_block_desc_.reset(); curr_block_meta_.reset(); curr_block_desc_.macro_meta_ = &curr_block_meta_; }
virtual int next_range();
protected:
common::ObArenaAllocator exister_allocator_;
blocksstable::ObIMacroBlockIterator *macro_block_iter_;
blocksstable::ObMacroBlockDesc curr_block_desc_;
blocksstable::ObDataMacroBlockMeta curr_block_meta_;
Expand Down

0 comments on commit 64b5667

Please sign in to comment.