diff --git a/src/storage/access/ob_index_tree_prefetcher.cpp b/src/storage/access/ob_index_tree_prefetcher.cpp index c459ca994f..24a25c2209 100644 --- a/src/storage/access/ob_index_tree_prefetcher.cpp +++ b/src/storage/access/ob_index_tree_prefetcher.cpp @@ -1549,7 +1549,7 @@ int ObIndexTreeMultiPassPrefetcher::O && OB_FAIL(sstable_index_filter->check_range(prefetcher.iter_param_->read_info_, index_info, *(prefetcher.access_ctx_->allocator_)))) { LOG_WARN("Fail to check if can skip prefetch", K(ret), K(index_info)); - } else if (index_info.is_filter_always_false() || prefetcher.skip_index_block(index_info)) { + } else if (index_info.is_filter_always_false()) { } else if (nullptr != prefetcher.agg_row_store_ && prefetcher.agg_row_store_->can_agg_index_info(index_info)) { if (OB_FAIL(prefetcher.agg_row_store_->fill_index_info(index_info))) { LOG_WARN("Fail to agg index info", K(ret), KPC(this)); diff --git a/src/storage/access/ob_index_tree_prefetcher.h b/src/storage/access/ob_index_tree_prefetcher.h index 390a80659d..c1cf67d332 100644 --- a/src/storage/access/ob_index_tree_prefetcher.h +++ b/src/storage/access/ob_index_tree_prefetcher.h @@ -173,10 +173,6 @@ protected: ObSSTable &sstable, const ObTableIterParam &iter_param, ObTableAccessContext &access_ctx); - OB_INLINE bool skip_index_block(const ObMicroIndexInfo &index_block_info) - { - return sstable_->is_multi_version_minor_sstable() && !index_block_info.contain_uncommitted_row() && index_block_info.get_max_merged_trans_version() <= access_ctx_->trans_version_range_.base_version_; - } private: ObMicroBlockDataHandle &get_read_handle(const int64_t level) { diff --git a/src/storage/blocksstable/ob_micro_block_row_scanner.cpp b/src/storage/blocksstable/ob_micro_block_row_scanner.cpp index 538aeb4137..685fcc7efb 100644 --- a/src/storage/blocksstable/ob_micro_block_row_scanner.cpp +++ b/src/storage/blocksstable/ob_micro_block_row_scanner.cpp @@ -1154,8 +1154,6 @@ void ObMultiVersionMicroBlockRowScanner::reuse() finish_scanning_cur_rowkey_ = true; is_last_multi_version_row_ = true; read_row_direct_flag_ = false; - ignore_shadow_row_ = false; - use_pre_micro_row_ = false; } void ObMultiVersionMicroBlockRowScanner::inner_reset() @@ -1244,7 +1242,6 @@ int ObMultiVersionMicroBlockRowScanner::open( } else if (OB_FAIL(set_base_scan_param(is_left_border, is_right_border))) { LOG_WARN("failed to set base scan param", K(ret), K(is_left_border), K(is_right_border)); } else { - use_pre_micro_row_ = false; int64_t column_number = block_data.get_micro_header()->column_count_; int64_t max_col_count = MAX(read_info_->get_request_count(), column_number); if (OB_FAIL(tmp_row_.reserve(max_col_count))) { @@ -1252,23 +1249,6 @@ int ObMultiVersionMicroBlockRowScanner::open( } } - if (OB_SUCC(ret) && ObIMicroBlockReaderInfo::INVALID_ROW_INDEX != current_) { - if (OB_UNLIKELY(!reverse_scan_ && !is_last_multi_version_row_)) { - const ObRowHeader *row_header = nullptr; - if (OB_FAIL(reader_->get_row_header(current_, row_header))) { - LOG_WARN("failed to get row header", K(ret), K(current_), K_(macro_id)); - } else { - ObMultiVersionRowFlag row_flag; - row_flag.flag_ = row_header->get_mvcc_row_flag(); - if (row_flag.is_first_multi_version_row()) { - use_pre_micro_row_ = !finish_scanning_cur_rowkey_; - finish_scanning_cur_rowkey_ = true; - is_last_multi_version_row_ = true; - } - } - } - } - if (OB_SUCC(ret)) { if (reverse_scan_) { reserved_pos_ = current_; @@ -1303,10 +1283,7 @@ int ObMultiVersionMicroBlockRowScanner::inner_get_next_row(const ObDatumRow *&ro { int ret = OB_SUCCESS; // TODO(yuanzhe) refactor blockscan opt of multi version sstable - if (OB_UNLIKELY(use_pre_micro_row_)) { - row = &prev_micro_row_; - use_pre_micro_row_ = false; - } else if (can_ignore_multi_version_) { + if (can_ignore_multi_version_) { if (OB_FAIL(ObIMicroBlockRowScanner::inner_get_next_row(row))) { if (OB_UNLIKELY(OB_ITER_END != ret)) { LOG_WARN("Failed to inner get next row", K(ret), K_(start), K_(last), K_(current)); @@ -1377,17 +1354,6 @@ int ObMultiVersionMicroBlockRowScanner::inner_get_next_row_impl(const ObDatumRow } } - if (OB_SUCC(ret) && version_fit && ignore_shadow_row_) { - if (OB_ISNULL(multi_version_row)) { - ret = OB_ERR_UNEXPECTED; - STORAGE_LOG(WARN, "unexpected null multi_version_row", K(ret), K(read_row_direct_flag_)); - } else if (multi_version_row->is_shadow_row()) { - if (multi_version_row == &row_) { //ptr equal only when the previous row_ is empty, reset the row to be empty for skip shadow row - row_.row_flag_.set_flag(ObDmlFlag::DF_NOT_EXIST); - } - continue; - } - } if (OB_SUCC(ret)) { if (!version_fit) { // do nothing @@ -1518,16 +1484,10 @@ int ObMultiVersionMicroBlockRowScanner::locate_cursor_to_read(bool &found_first_ } else { row_flag.flag_ = row_header->get_mvcc_row_flag(); if (row_flag.is_last_multi_version_row()) { + finish_scanning_cur_rowkey_ = false; + found_first_row = true; reserved_pos_ = current_; current_ = current_ + 1; - if (!reverse_scan_ && OB_FAIL(end_of_block())) { - if (OB_UNLIKELY(OB_ITER_END != ret)) { - LOG_WARN("failed to judge end of block or not", K(ret), K_(macro_id)); - } - } else { - finish_scanning_cur_rowkey_ = false; - found_first_row = true; - } break; } else { current_ = reverse_scan_ ? current_ - 1 : current_ + 1; diff --git a/src/storage/blocksstable/ob_micro_block_row_scanner.h b/src/storage/blocksstable/ob_micro_block_row_scanner.h index 4d0acfc2b1..161531317b 100644 --- a/src/storage/blocksstable/ob_micro_block_row_scanner.h +++ b/src/storage/blocksstable/ob_micro_block_row_scanner.h @@ -276,9 +276,7 @@ public: trans_version_col_idx_(-1), sql_sequence_col_idx_(-1), cell_cnt_(0), - read_row_direct_flag_(false), - ignore_shadow_row_(false), - use_pre_micro_row_(false) + read_row_direct_flag_(false) {} virtual ~ObMultiVersionMicroBlockRowScanner() {} void reuse() override; @@ -295,8 +293,7 @@ public: const ObMicroBlockData &block_data, const bool is_left_border, const bool is_right_border) override final; - virtual int set_ignore_shadow_row() override final { ignore_shadow_row_ = true; return OB_SUCCESS; } - INHERIT_TO_STRING_KV("ObMultiVersionMicroBlockRowScanner", ObIMicroBlockRowScanner, K_(read_row_direct_flag), K_(ignore_shadow_row), K_(version_range), K_(is_last_multi_version_row), K_(finish_scanning_cur_rowkey), K_(use_pre_micro_row)); + INHERIT_TO_STRING_KV("ObMultiVersionMicroBlockRowScanner", ObIMicroBlockRowScanner, K_(read_row_direct_flag), K_(version_range), K_(is_last_multi_version_row), K_(finish_scanning_cur_rowkey)); protected: virtual int inner_get_next_row(const ObDatumRow *&row) override; virtual void inner_reset(); @@ -343,8 +340,6 @@ private: transaction::ObTransID trans_id_; common::ObVersionRange version_range_; bool read_row_direct_flag_; - bool ignore_shadow_row_; - bool use_pre_micro_row_; }; // multi version sstable micro block scanner for minor merge