This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new af11693f48f [opt](profile) add index page profile for io (#45675)
af11693f48f is described below
commit af11693f48f7406438471a79718b67b3f8851731
Author: airborne12 <[email protected]>
AuthorDate: Fri Dec 20 20:27:18 2024 +0800
[opt](profile) add index page profile for io (#45675)
---
be/src/olap/base_tablet.cpp | 6 +--
be/src/olap/delete_bitmap_calculator.cpp | 5 +-
be/src/olap/primary_key_index.cpp | 12 +++--
be/src/olap/primary_key_index.h | 12 ++---
.../segment_v2/bloom_filter_index_reader.cpp | 15 +++---
.../rowset/segment_v2/bloom_filter_index_reader.h | 12 ++---
be/src/olap/rowset/segment_v2/column_reader.cpp | 62 +++++++++++++---------
be/src/olap/rowset/segment_v2/column_reader.h | 26 +++++----
.../rowset/segment_v2/indexed_column_reader.cpp | 11 ++--
.../olap/rowset/segment_v2/indexed_column_reader.h | 4 +-
.../olap/rowset/segment_v2/ordinal_page_index.cpp | 16 +++---
be/src/olap/rowset/segment_v2/ordinal_page_index.h | 5 +-
be/src/olap/rowset/segment_v2/segment.cpp | 37 +++++++------
be/src/olap/rowset/segment_v2/segment.h | 12 ++---
be/src/olap/rowset/segment_v2/segment_iterator.cpp | 2 +-
be/src/olap/rowset/segment_v2/zone_map_index.cpp | 15 +++---
be/src/olap/rowset/segment_v2/zone_map_index.h | 6 ++-
be/test/olap/date_bloom_filter_test.cpp | 8 +--
be/test/olap/primary_key_index_test.cpp | 20 +++----
.../bloom_filter_index_reader_writer_test.cpp | 4 +-
.../rowset/segment_v2/ordinal_page_index_test.cpp | 4 +-
be/test/olap/segment_cache_test.cpp | 2 +-
22 files changed, 164 insertions(+), 132 deletions(-)
diff --git a/be/src/olap/base_tablet.cpp b/be/src/olap/base_tablet.cpp
index 33275a2663b..a4720f89d19 100644
--- a/be/src/olap/base_tablet.cpp
+++ b/be/src/olap/base_tablet.cpp
@@ -499,7 +499,7 @@ Status BaseTablet::lookup_row_key(const Slice& encoded_key,
TabletSchema* latest
for (auto id : picked_segments) {
Status s = segments[id]->lookup_row_key(encoded_key, schema,
with_seq_col, with_rowid,
- &loc, encoded_seq_value,
stats);
+ &loc, stats,
encoded_seq_value);
if (s.is<KEY_NOT_FOUND>()) {
continue;
}
@@ -615,7 +615,7 @@ Status
BaseTablet::calc_segment_delete_bitmap(RowsetSharedPtr rowset,
vectorized::Block ordered_block = block.clone_empty();
uint32_t pos = 0;
- RETURN_IF_ERROR(seg->load_pk_index_and_bf()); // We need index blocks to
iterate
+ RETURN_IF_ERROR(seg->load_pk_index_and_bf(nullptr)); // We need index
blocks to iterate
const auto* pk_idx = seg->get_primary_key_index();
int total = pk_idx->num_rows();
uint32_t row_id = 0;
@@ -629,7 +629,7 @@ Status
BaseTablet::calc_segment_delete_bitmap(RowsetSharedPtr rowset,
std::vector<std::unique_ptr<SegmentCacheHandle>>
segment_caches(specified_rowsets.size());
while (remaining > 0) {
std::unique_ptr<segment_v2::IndexedColumnIterator> iter;
- RETURN_IF_ERROR(pk_idx->new_iterator(&iter));
+ RETURN_IF_ERROR(pk_idx->new_iterator(&iter, nullptr));
size_t num_to_read = std::min(batch_size, remaining);
auto index_type =
vectorized::DataTypeFactory::instance().create_data_type(
diff --git a/be/src/olap/delete_bitmap_calculator.cpp
b/be/src/olap/delete_bitmap_calculator.cpp
index 017e3cff3d0..8ac05a1e393 100644
--- a/be/src/olap/delete_bitmap_calculator.cpp
+++ b/be/src/olap/delete_bitmap_calculator.cpp
@@ -145,12 +145,11 @@ Status MergeIndexDeleteBitmapCalculator::init(RowsetId
rowset_id,
MergeIndexDeleteBitmapCalculatorContext::Comparator(seq_col_length,
_rowid_length);
_contexts.reserve(segments.size());
_heap = std::make_unique<Heap>(_comparator);
-
for (auto& segment : segments) {
- RETURN_IF_ERROR(segment->load_index());
+ RETURN_IF_ERROR(segment->load_index(nullptr));
auto pk_idx = segment->get_primary_key_index();
std::unique_ptr<segment_v2::IndexedColumnIterator> index;
- RETURN_IF_ERROR(pk_idx->new_iterator(&index));
+ RETURN_IF_ERROR(pk_idx->new_iterator(&index, nullptr));
auto index_type =
vectorized::DataTypeFactory::instance().create_data_type(
pk_idx->type_info()->type(), 1, 0);
_contexts.emplace_back(std::move(index), index_type,
segment->id(), pk_idx->num_rows());
diff --git a/be/src/olap/primary_key_index.cpp
b/be/src/olap/primary_key_index.cpp
index 5f7bedb01fc..00b72832ee6 100644
--- a/be/src/olap/primary_key_index.cpp
+++ b/be/src/olap/primary_key_index.cpp
@@ -95,27 +95,29 @@ Status
PrimaryKeyIndexBuilder::finalize(segment_v2::PrimaryKeyIndexMetaPB* meta)
}
Status PrimaryKeyIndexReader::parse_index(io::FileReaderSPtr file_reader,
- const
segment_v2::PrimaryKeyIndexMetaPB& meta) {
+ const
segment_v2::PrimaryKeyIndexMetaPB& meta,
+ OlapReaderStatistics*
pk_index_load_stats) {
// parse primary key index
_index_reader.reset(new segment_v2::IndexedColumnReader(file_reader,
meta.primary_key_index()));
_index_reader->set_is_pk_index(true);
RETURN_IF_ERROR(_index_reader->load(!config::disable_pk_storage_page_cache,
false,
- _pk_index_load_stats));
+ pk_index_load_stats));
_index_parsed = true;
return Status::OK();
}
Status PrimaryKeyIndexReader::parse_bf(io::FileReaderSPtr file_reader,
- const
segment_v2::PrimaryKeyIndexMetaPB& meta) {
+ const
segment_v2::PrimaryKeyIndexMetaPB& meta,
+ OlapReaderStatistics*
pk_index_load_stats) {
// parse bloom filter
segment_v2::ColumnIndexMetaPB column_index_meta =
meta.bloom_filter_index();
segment_v2::BloomFilterIndexReader bf_index_reader(std::move(file_reader),
column_index_meta.bloom_filter_index());
RETURN_IF_ERROR(bf_index_reader.load(!config::disable_pk_storage_page_cache,
false,
- _pk_index_load_stats));
+ pk_index_load_stats));
std::unique_ptr<segment_v2::BloomFilterIndexIterator> bf_iter;
- RETURN_IF_ERROR(bf_index_reader.new_iterator(&bf_iter));
+ RETURN_IF_ERROR(bf_index_reader.new_iterator(&bf_iter,
pk_index_load_stats));
RETURN_IF_ERROR(bf_iter->read_bloom_filter(0, &_bf));
segment_v2::g_pk_total_bloom_filter_num << 1;
segment_v2::g_pk_total_bloom_filter_total_bytes << _bf->size();
diff --git a/be/src/olap/primary_key_index.h b/be/src/olap/primary_key_index.h
index dcbbc5f3062..f74d3e42030 100644
--- a/be/src/olap/primary_key_index.h
+++ b/be/src/olap/primary_key_index.h
@@ -98,8 +98,7 @@ private:
class PrimaryKeyIndexReader {
public:
- PrimaryKeyIndexReader(OlapReaderStatistics* pk_index_load_stats = nullptr)
- : _index_parsed(false), _bf_parsed(false),
_pk_index_load_stats(pk_index_load_stats) {}
+ PrimaryKeyIndexReader() : _index_parsed(false), _bf_parsed(false) {}
~PrimaryKeyIndexReader() {
segment_v2::g_pk_total_bloom_filter_num <<
-static_cast<int64_t>(_bf_num);
@@ -109,12 +108,14 @@ public:
}
Status parse_index(io::FileReaderSPtr file_reader,
- const segment_v2::PrimaryKeyIndexMetaPB& meta);
+ const segment_v2::PrimaryKeyIndexMetaPB& meta,
+ OlapReaderStatistics* pk_index_load_stats);
- Status parse_bf(io::FileReaderSPtr file_reader, const
segment_v2::PrimaryKeyIndexMetaPB& meta);
+ Status parse_bf(io::FileReaderSPtr file_reader, const
segment_v2::PrimaryKeyIndexMetaPB& meta,
+ OlapReaderStatistics* pk_index_load_stats);
Status new_iterator(std::unique_ptr<segment_v2::IndexedColumnIterator>*
index_iterator,
- OlapReaderStatistics* stats = nullptr) const {
+ OlapReaderStatistics* stats) const {
DCHECK(_index_parsed);
index_iterator->reset(new
segment_v2::IndexedColumnIterator(_index_reader.get(), stats));
return Status::OK();
@@ -155,7 +156,6 @@ private:
std::unique_ptr<segment_v2::BloomFilter> _bf;
size_t _bf_num = 0;
uint64 _bf_bytes = 0;
- OlapReaderStatistics* _pk_index_load_stats = nullptr;
};
} // namespace doris
diff --git a/be/src/olap/rowset/segment_v2/bloom_filter_index_reader.cpp
b/be/src/olap/rowset/segment_v2/bloom_filter_index_reader.cpp
index 8c63c25d20a..7c51f0a24c1 100644
--- a/be/src/olap/rowset/segment_v2/bloom_filter_index_reader.cpp
+++ b/be/src/olap/rowset/segment_v2/bloom_filter_index_reader.cpp
@@ -34,9 +34,8 @@ namespace segment_v2 {
Status BloomFilterIndexReader::load(bool use_page_cache, bool kept_in_memory,
OlapReaderStatistics* index_load_stats) {
// TODO yyq: implement a new once flag to avoid status construct.
- _index_load_stats = index_load_stats;
- return _load_once.call([this, use_page_cache, kept_in_memory] {
- return _load(use_page_cache, kept_in_memory);
+ return _load_once.call([this, use_page_cache, kept_in_memory,
index_load_stats] {
+ return _load(use_page_cache, kept_in_memory, index_load_stats);
});
}
@@ -45,20 +44,22 @@ int64_t BloomFilterIndexReader::get_metadata_size() const {
(_bloom_filter_index_meta ?
_bloom_filter_index_meta->ByteSizeLong() : 0);
}
-Status BloomFilterIndexReader::_load(bool use_page_cache, bool kept_in_memory)
{
+Status BloomFilterIndexReader::_load(bool use_page_cache, bool kept_in_memory,
+ OlapReaderStatistics* index_load_stats) {
const IndexedColumnMetaPB& bf_index_meta =
_bloom_filter_index_meta->bloom_filter();
_bloom_filter_reader.reset(new IndexedColumnReader(_file_reader,
bf_index_meta));
- RETURN_IF_ERROR(_bloom_filter_reader->load(use_page_cache, kept_in_memory,
_index_load_stats));
+ RETURN_IF_ERROR(_bloom_filter_reader->load(use_page_cache, kept_in_memory,
index_load_stats));
update_metadata_size();
return Status::OK();
}
-Status
BloomFilterIndexReader::new_iterator(std::unique_ptr<BloomFilterIndexIterator>*
iterator) {
+Status
BloomFilterIndexReader::new_iterator(std::unique_ptr<BloomFilterIndexIterator>*
iterator,
+ OlapReaderStatistics*
index_load_stats) {
DBUG_EXECUTE_IF("BloomFilterIndexReader::new_iterator.fail", {
return Status::InternalError("new_iterator for bloom filter index
failed");
});
- iterator->reset(new BloomFilterIndexIterator(this));
+ iterator->reset(new BloomFilterIndexIterator(this, index_load_stats));
return Status::OK();
}
diff --git a/be/src/olap/rowset/segment_v2/bloom_filter_index_reader.h
b/be/src/olap/rowset/segment_v2/bloom_filter_index_reader.h
index fcb0239a244..fb53af89c0f 100644
--- a/be/src/olap/rowset/segment_v2/bloom_filter_index_reader.h
+++ b/be/src/olap/rowset/segment_v2/bloom_filter_index_reader.h
@@ -48,17 +48,18 @@ public:
}
Status load(bool use_page_cache, bool kept_in_memory,
- OlapReaderStatistics* _bf_index_load_stats = nullptr);
+ OlapReaderStatistics* bf_index_load_stats);
BloomFilterAlgorithmPB algorithm() { return
_bloom_filter_index_meta->algorithm(); }
// create a new column iterator.
- Status new_iterator(std::unique_ptr<BloomFilterIndexIterator>* iterator);
+ Status new_iterator(std::unique_ptr<BloomFilterIndexIterator>* iterator,
+ OlapReaderStatistics* index_load_stats);
const TypeInfo* type_info() const { return _type_info; }
private:
- Status _load(bool use_page_cache, bool kept_in_memory);
+ Status _load(bool use_page_cache, bool kept_in_memory,
OlapReaderStatistics* index_load_stats);
int64_t get_metadata_size() const override;
@@ -70,13 +71,12 @@ private:
const TypeInfo* _type_info = nullptr;
std::unique_ptr<BloomFilterIndexPB> _bloom_filter_index_meta = nullptr;
std::unique_ptr<IndexedColumnReader> _bloom_filter_reader;
- OlapReaderStatistics* _index_load_stats = nullptr;
};
class BloomFilterIndexIterator {
public:
- explicit BloomFilterIndexIterator(BloomFilterIndexReader* reader)
- : _reader(reader),
_bloom_filter_iter(reader->_bloom_filter_reader.get()) {}
+ explicit BloomFilterIndexIterator(BloomFilterIndexReader* reader,
OlapReaderStatistics* stats)
+ : _reader(reader),
_bloom_filter_iter(reader->_bloom_filter_reader.get(), stats) {}
// Read bloom filter at the given ordinal into `bf`.
Status read_bloom_filter(rowid_t ordinal, std::unique_ptr<BloomFilter>*
bf);
diff --git a/be/src/olap/rowset/segment_v2/column_reader.cpp
b/be/src/olap/rowset/segment_v2/column_reader.cpp
index 9d5328de869..78c415530cd 100644
--- a/be/src/olap/rowset/segment_v2/column_reader.cpp
+++ b/be/src/olap/rowset/segment_v2/column_reader.cpp
@@ -374,10 +374,12 @@ Status ColumnReader::read_page(const
ColumnIteratorOptions& iter_opts, const Pag
Status ColumnReader::get_row_ranges_by_zone_map(
const AndBlockColumnPredicate* col_predicates,
- const std::vector<const ColumnPredicate*>* delete_predicates,
RowRanges* row_ranges) {
+ const std::vector<const ColumnPredicate*>* delete_predicates,
RowRanges* row_ranges,
+ const ColumnIteratorOptions& iter_opts) {
std::vector<uint32_t> page_indexes;
- RETURN_IF_ERROR(_get_filtered_pages(col_predicates, delete_predicates,
&page_indexes));
- RETURN_IF_ERROR(_calculate_row_ranges(page_indexes, row_ranges));
+ RETURN_IF_ERROR(
+ _get_filtered_pages(col_predicates, delete_predicates,
&page_indexes, iter_opts));
+ RETURN_IF_ERROR(_calculate_row_ranges(page_indexes, row_ranges,
iter_opts));
return Status::OK();
}
@@ -514,8 +516,8 @@ bool ColumnReader::_zone_map_match_condition(const
ZoneMapPB& zone_map,
Status ColumnReader::_get_filtered_pages(
const AndBlockColumnPredicate* col_predicates,
const std::vector<const ColumnPredicate*>* delete_predicates,
- std::vector<uint32_t>* page_indexes) {
- RETURN_IF_ERROR(_load_zone_map_index(_use_index_page_cache,
_opts.kept_in_memory));
+ std::vector<uint32_t>* page_indexes, const ColumnIteratorOptions&
iter_opts) {
+ RETURN_IF_ERROR(_load_zone_map_index(_use_index_page_cache,
_opts.kept_in_memory, iter_opts));
FieldType type = _type_info->type();
const std::vector<ZoneMapPB>& zone_maps =
_zone_map_index->page_zone_maps();
@@ -553,9 +555,10 @@ Status ColumnReader::_get_filtered_pages(
}
Status ColumnReader::_calculate_row_ranges(const std::vector<uint32_t>&
page_indexes,
- RowRanges* row_ranges) {
+ RowRanges* row_ranges,
+ const ColumnIteratorOptions&
iter_opts) {
row_ranges->clear();
- RETURN_IF_ERROR(_load_ordinal_index(_use_index_page_cache,
_opts.kept_in_memory));
+ RETURN_IF_ERROR(_load_ordinal_index(_use_index_page_cache,
_opts.kept_in_memory, iter_opts));
for (auto i : page_indexes) {
ordinal_t page_first_id = _ordinal_index->get_first_ordinal(i);
ordinal_t page_last_id = _ordinal_index->get_last_ordinal(i);
@@ -566,12 +569,14 @@ Status ColumnReader::_calculate_row_ranges(const
std::vector<uint32_t>& page_ind
}
Status ColumnReader::get_row_ranges_by_bloom_filter(const
AndBlockColumnPredicate* col_predicates,
- RowRanges* row_ranges) {
- RETURN_IF_ERROR(_load_ordinal_index(_use_index_page_cache,
_opts.kept_in_memory));
- RETURN_IF_ERROR(_load_bloom_filter_index(_use_index_page_cache,
_opts.kept_in_memory));
+ RowRanges* row_ranges,
+ const
ColumnIteratorOptions& iter_opts) {
+ RETURN_IF_ERROR(_load_ordinal_index(_use_index_page_cache,
_opts.kept_in_memory, iter_opts));
+ RETURN_IF_ERROR(
+ _load_bloom_filter_index(_use_index_page_cache,
_opts.kept_in_memory, iter_opts));
RowRanges bf_row_ranges;
std::unique_ptr<BloomFilterIndexIterator> bf_iter;
- RETURN_IF_ERROR(_bloom_filter_index->new_iterator(&bf_iter));
+ RETURN_IF_ERROR(_bloom_filter_index->new_iterator(&bf_iter,
iter_opts.stats));
size_t range_size = row_ranges->range_size();
// get covered page ids
std::set<uint32_t> page_ids;
@@ -598,16 +603,18 @@ Status ColumnReader::get_row_ranges_by_bloom_filter(const
AndBlockColumnPredicat
return Status::OK();
}
-Status ColumnReader::_load_ordinal_index(bool use_page_cache, bool
kept_in_memory) {
+Status ColumnReader::_load_ordinal_index(bool use_page_cache, bool
kept_in_memory,
+ const ColumnIteratorOptions&
iter_opts) {
if (!_ordinal_index) {
return Status::InternalError("ordinal_index not inited");
}
- return _ordinal_index->load(use_page_cache, kept_in_memory);
+ return _ordinal_index->load(use_page_cache, kept_in_memory,
iter_opts.stats);
}
-Status ColumnReader::_load_zone_map_index(bool use_page_cache, bool
kept_in_memory) {
+Status ColumnReader::_load_zone_map_index(bool use_page_cache, bool
kept_in_memory,
+ const ColumnIteratorOptions&
iter_opts) {
if (_zone_map_index != nullptr) {
- return _zone_map_index->load(use_page_cache, kept_in_memory);
+ return _zone_map_index->load(use_page_cache, kept_in_memory,
iter_opts.stats);
}
return Status::OK();
}
@@ -681,15 +688,17 @@ bool ColumnReader::has_bloom_filter_index(bool ngram)
const {
}
}
-Status ColumnReader::_load_bloom_filter_index(bool use_page_cache, bool
kept_in_memory) {
+Status ColumnReader::_load_bloom_filter_index(bool use_page_cache, bool
kept_in_memory,
+ const ColumnIteratorOptions&
iter_opts) {
if (_bloom_filter_index != nullptr) {
- return _bloom_filter_index->load(use_page_cache, kept_in_memory);
+ return _bloom_filter_index->load(use_page_cache, kept_in_memory,
iter_opts.stats);
}
return Status::OK();
}
-Status ColumnReader::seek_to_first(OrdinalPageIndexIterator* iter) {
- RETURN_IF_ERROR(_load_ordinal_index(_use_index_page_cache,
_opts.kept_in_memory));
+Status ColumnReader::seek_to_first(OrdinalPageIndexIterator* iter,
+ const ColumnIteratorOptions& iter_opts) {
+ RETURN_IF_ERROR(_load_ordinal_index(_use_index_page_cache,
_opts.kept_in_memory, iter_opts));
*iter = _ordinal_index->begin();
if (!iter->valid()) {
return Status::NotFound("Failed to seek to first rowid");
@@ -697,8 +706,9 @@ Status
ColumnReader::seek_to_first(OrdinalPageIndexIterator* iter) {
return Status::OK();
}
-Status ColumnReader::seek_at_or_before(ordinal_t ordinal,
OrdinalPageIndexIterator* iter) {
- RETURN_IF_ERROR(_load_ordinal_index(_use_index_page_cache,
_opts.kept_in_memory));
+Status ColumnReader::seek_at_or_before(ordinal_t ordinal,
OrdinalPageIndexIterator* iter,
+ const ColumnIteratorOptions& iter_opts)
{
+ RETURN_IF_ERROR(_load_ordinal_index(_use_index_page_cache,
_opts.kept_in_memory, iter_opts));
*iter = _ordinal_index->seek_at_or_before(ordinal);
if (!iter->valid()) {
return Status::NotFound("Failed to seek to ordinal {}, ", ordinal);
@@ -1172,7 +1182,7 @@ Status FileColumnIterator::init(const
ColumnIteratorOptions& opts) {
FileColumnIterator::~FileColumnIterator() = default;
Status FileColumnIterator::seek_to_first() {
- RETURN_IF_ERROR(_reader->seek_to_first(&_page_iter));
+ RETURN_IF_ERROR(_reader->seek_to_first(&_page_iter, _opts));
RETURN_IF_ERROR(_read_data_page(_page_iter));
_seek_to_pos_in_page(&_page, 0);
@@ -1183,7 +1193,7 @@ Status FileColumnIterator::seek_to_first() {
Status FileColumnIterator::seek_to_ordinal(ordinal_t ord) {
// if current page contains this row, we don't need to seek
if (!_page || !_page.contains(ord) || !_page_iter.valid()) {
- RETURN_IF_ERROR(_reader->seek_at_or_before(ord, &_page_iter));
+ RETURN_IF_ERROR(_reader->seek_at_or_before(ord, &_page_iter, _opts));
RETURN_IF_ERROR(_read_data_page(_page_iter));
}
_seek_to_pos_in_page(&_page, ord - _page.first_ordinal);
@@ -1431,8 +1441,8 @@ Status FileColumnIterator::get_row_ranges_by_zone_map(
const AndBlockColumnPredicate* col_predicates,
const std::vector<const ColumnPredicate*>* delete_predicates,
RowRanges* row_ranges) {
if (_reader->has_zone_map()) {
- RETURN_IF_ERROR(
- _reader->get_row_ranges_by_zone_map(col_predicates,
delete_predicates, row_ranges));
+ RETURN_IF_ERROR(_reader->get_row_ranges_by_zone_map(col_predicates,
delete_predicates,
+ row_ranges,
_opts));
}
return Status::OK();
}
@@ -1441,7 +1451,7 @@ Status FileColumnIterator::get_row_ranges_by_bloom_filter(
const AndBlockColumnPredicate* col_predicates, RowRanges* row_ranges) {
if ((col_predicates->can_do_bloom_filter(false) &&
_reader->has_bloom_filter_index(false)) ||
(col_predicates->can_do_bloom_filter(true) &&
_reader->has_bloom_filter_index(true))) {
-
RETURN_IF_ERROR(_reader->get_row_ranges_by_bloom_filter(col_predicates,
row_ranges));
+
RETURN_IF_ERROR(_reader->get_row_ranges_by_bloom_filter(col_predicates,
row_ranges, _opts));
}
return Status::OK();
}
diff --git a/be/src/olap/rowset/segment_v2/column_reader.h
b/be/src/olap/rowset/segment_v2/column_reader.h
index d72d802f977..7e32b3a09b3 100644
--- a/be/src/olap/rowset/segment_v2/column_reader.h
+++ b/be/src/olap/rowset/segment_v2/column_reader.h
@@ -148,8 +148,9 @@ public:
std::unique_ptr<InvertedIndexIterator>*
iterator);
// Seek to the first entry in the column.
- Status seek_to_first(OrdinalPageIndexIterator* iter);
- Status seek_at_or_before(ordinal_t ordinal, OrdinalPageIndexIterator*
iter);
+ Status seek_to_first(OrdinalPageIndexIterator* iter, const
ColumnIteratorOptions& iter_opts);
+ Status seek_at_or_before(ordinal_t ordinal, OrdinalPageIndexIterator* iter,
+ const ColumnIteratorOptions& iter_opts);
// read a page from file into a page handle
Status read_page(const ColumnIteratorOptions& iter_opts, const
PagePointer& pp,
@@ -175,11 +176,13 @@ public:
// - delete_condition is a delete predicate of one version
Status get_row_ranges_by_zone_map(const AndBlockColumnPredicate*
col_predicates,
const std::vector<const
ColumnPredicate*>* delete_predicates,
- RowRanges* row_ranges);
+ RowRanges* row_ranges,
+ const ColumnIteratorOptions& iter_opts);
// get row ranges with bloom filter index
Status get_row_ranges_by_bloom_filter(const AndBlockColumnPredicate*
col_predicates,
- RowRanges* row_ranges);
+ RowRanges* row_ranges,
+ const ColumnIteratorOptions&
iter_opts);
PagePointer get_dict_page_pointer() const { return _meta_dict_page; }
@@ -219,13 +222,16 @@ private:
return Status::OK();
}
- [[nodiscard]] Status _load_zone_map_index(bool use_page_cache, bool
kept_in_memory);
- [[nodiscard]] Status _load_ordinal_index(bool use_page_cache, bool
kept_in_memory);
+ [[nodiscard]] Status _load_zone_map_index(bool use_page_cache, bool
kept_in_memory,
+ const ColumnIteratorOptions&
iter_opts);
+ [[nodiscard]] Status _load_ordinal_index(bool use_page_cache, bool
kept_in_memory,
+ const ColumnIteratorOptions&
iter_opts);
[[nodiscard]] Status _load_bitmap_index(bool use_page_cache, bool
kept_in_memory);
[[nodiscard]] Status _load_inverted_index_index(
std::shared_ptr<InvertedIndexFileReader> index_file_reader,
const TabletIndex* index_meta);
- [[nodiscard]] Status _load_bloom_filter_index(bool use_page_cache, bool
kept_in_memory);
+ [[nodiscard]] Status _load_bloom_filter_index(bool use_page_cache, bool
kept_in_memory,
+ const ColumnIteratorOptions&
iter_opts);
bool _zone_map_match_condition(const ZoneMapPB& zone_map, WrapperField*
min_value_container,
WrapperField* max_value_container,
@@ -239,9 +245,11 @@ private:
Status _get_filtered_pages(const AndBlockColumnPredicate* col_predicates,
const std::vector<const ColumnPredicate*>*
delete_predicates,
- std::vector<uint32_t>* page_indexes);
+ std::vector<uint32_t>* page_indexes,
+ const ColumnIteratorOptions& iter_opts);
- Status _calculate_row_ranges(const std::vector<uint32_t>& page_indexes,
RowRanges* row_ranges);
+ Status _calculate_row_ranges(const std::vector<uint32_t>& page_indexes,
RowRanges* row_ranges,
+ const ColumnIteratorOptions& iter_opts);
int64_t get_metadata_size() const override;
diff --git a/be/src/olap/rowset/segment_v2/indexed_column_reader.cpp
b/be/src/olap/rowset/segment_v2/indexed_column_reader.cpp
index da6beff5d8d..3f582293ee4 100644
--- a/be/src/olap/rowset/segment_v2/indexed_column_reader.cpp
+++ b/be/src/olap/rowset/segment_v2/indexed_column_reader.cpp
@@ -66,7 +66,6 @@ Status IndexedColumnReader::load(bool use_page_cache, bool
kept_in_memory,
OlapReaderStatistics* index_load_stats) {
_use_page_cache = use_page_cache;
_kept_in_memory = kept_in_memory;
- _index_load_stats = index_load_stats;
_type_info = get_scalar_type_info((FieldType)_meta.data_type());
if (_type_info == nullptr) {
@@ -82,7 +81,7 @@ Status IndexedColumnReader::load(bool use_page_cache, bool
kept_in_memory,
} else {
RETURN_IF_ERROR(load_index_page(_meta.ordinal_index_meta().root_page(),
&_ordinal_index_page_handle,
- _ordinal_index_reader.get()));
+ _ordinal_index_reader.get(),
index_load_stats));
_has_index_page = true;
}
}
@@ -93,7 +92,8 @@ Status IndexedColumnReader::load(bool use_page_cache, bool
kept_in_memory,
_sole_data_page =
PagePointer(_meta.value_index_meta().root_page());
} else {
RETURN_IF_ERROR(load_index_page(_meta.value_index_meta().root_page(),
- &_value_index_page_handle,
_value_index_reader.get()));
+ &_value_index_page_handle,
_value_index_reader.get(),
+ index_load_stats));
_has_index_page = true;
}
}
@@ -104,13 +104,14 @@ Status IndexedColumnReader::load(bool use_page_cache,
bool kept_in_memory,
}
Status IndexedColumnReader::load_index_page(const PagePointerPB& pp,
PageHandle* handle,
- IndexPageReader* reader) {
+ IndexPageReader* reader,
+ OlapReaderStatistics*
index_load_stats) {
Slice body;
PageFooterPB footer;
BlockCompressionCodec* local_compress_codec;
RETURN_IF_ERROR(get_block_compression_codec(_meta.compression(),
&local_compress_codec));
RETURN_IF_ERROR(read_page(PagePointer(pp), handle, &body, &footer,
INDEX_PAGE,
- local_compress_codec, false, _index_load_stats));
+ local_compress_codec, false, index_load_stats));
RETURN_IF_ERROR(reader->parse(body, footer.index_page_footer()));
_mem_size += body.get_size();
return Status::OK();
diff --git a/be/src/olap/rowset/segment_v2/indexed_column_reader.h
b/be/src/olap/rowset/segment_v2/indexed_column_reader.h
index c9640c0007c..6e62feaafdc 100644
--- a/be/src/olap/rowset/segment_v2/indexed_column_reader.h
+++ b/be/src/olap/rowset/segment_v2/indexed_column_reader.h
@@ -76,7 +76,8 @@ public:
void set_is_pk_index(bool is_pk) { _is_pk_index = is_pk; }
private:
- Status load_index_page(const PagePointerPB& pp, PageHandle* handle,
IndexPageReader* reader);
+ Status load_index_page(const PagePointerPB& pp, PageHandle* handle,
IndexPageReader* reader,
+ OlapReaderStatistics* index_load_stats);
int64_t get_metadata_size() const override;
@@ -103,7 +104,6 @@ private:
const KeyCoder* _value_key_coder = nullptr;
uint64_t _mem_size = 0;
bool _is_pk_index = false;
- OlapReaderStatistics* _index_load_stats = nullptr;
};
class IndexedColumnIterator {
diff --git a/be/src/olap/rowset/segment_v2/ordinal_page_index.cpp
b/be/src/olap/rowset/segment_v2/ordinal_page_index.cpp
index 9ee82bacdd7..4995e779892 100644
--- a/be/src/olap/rowset/segment_v2/ordinal_page_index.cpp
+++ b/be/src/olap/rowset/segment_v2/ordinal_page_index.cpp
@@ -69,15 +69,17 @@ Status OrdinalIndexWriter::finish(io::FileWriter*
file_writer, ColumnIndexMetaPB
return Status::OK();
}
-Status OrdinalIndexReader::load(bool use_page_cache, bool kept_in_memory) {
+Status OrdinalIndexReader::load(bool use_page_cache, bool kept_in_memory,
+ OlapReaderStatistics* index_load_stats) {
// TODO yyq: implement a new once flag to avoid status construct.
- return _load_once.call([this, use_page_cache, kept_in_memory] {
- return _load(use_page_cache, kept_in_memory, std::move(_meta_pb));
+ return _load_once.call([this, use_page_cache, kept_in_memory,
index_load_stats] {
+ return _load(use_page_cache, kept_in_memory, std::move(_meta_pb),
index_load_stats);
});
}
Status OrdinalIndexReader::_load(bool use_page_cache, bool kept_in_memory,
- std::unique_ptr<OrdinalIndexPB> index_meta) {
+ std::unique_ptr<OrdinalIndexPB> index_meta,
+ OlapReaderStatistics* stats) {
if (index_meta->root_page().is_root_data_page()) {
// only one data page, no index page
_num_pages = 1;
@@ -88,6 +90,7 @@ Status OrdinalIndexReader::_load(bool use_page_cache, bool
kept_in_memory,
}
// need to read index page
OlapReaderStatistics tmp_stats;
+ OlapReaderStatistics* stats_ptr = stats != nullptr ? stats : &tmp_stats;
PageReadOptions opts {
.use_page_cache = use_page_cache,
.kept_in_memory = kept_in_memory,
@@ -96,8 +99,9 @@ Status OrdinalIndexReader::_load(bool use_page_cache, bool
kept_in_memory,
.page_pointer = PagePointer(index_meta->root_page().root_page()),
// ordinal index page uses NO_COMPRESSION right now
.codec = nullptr,
- .stats = &tmp_stats,
- .io_ctx = io::IOContext {.is_index_data = true},
+ .stats = stats_ptr,
+ .io_ctx = io::IOContext {.is_index_data = true,
+ .file_cache_stats =
&stats_ptr->file_cache_stats},
};
// read index page
diff --git a/be/src/olap/rowset/segment_v2/ordinal_page_index.h
b/be/src/olap/rowset/segment_v2/ordinal_page_index.h
index 1d74cf98952..df60edb12d1 100644
--- a/be/src/olap/rowset/segment_v2/ordinal_page_index.h
+++ b/be/src/olap/rowset/segment_v2/ordinal_page_index.h
@@ -75,7 +75,7 @@ public:
virtual ~OrdinalIndexReader();
// load and parse the index page into memory
- Status load(bool use_page_cache, bool kept_in_memory);
+ Status load(bool use_page_cache, bool kept_in_memory,
OlapReaderStatistics* index_load_stats);
// the returned iter points to the largest element which is less than
`ordinal`,
// or points to the first element if all elements are greater than
`ordinal`,
@@ -94,7 +94,8 @@ public:
private:
Status _load(bool use_page_cache, bool kept_in_memory,
- std::unique_ptr<OrdinalIndexPB> index_meta);
+ std::unique_ptr<OrdinalIndexPB> index_meta,
+ OlapReaderStatistics* index_load_stats);
int64_t get_metadata_size() const override;
diff --git a/be/src/olap/rowset/segment_v2/segment.cpp
b/be/src/olap/rowset/segment_v2/segment.cpp
index d55d84901c2..b5ab3f0e873 100644
--- a/be/src/olap/rowset/segment_v2/segment.cpp
+++ b/be/src/olap/rowset/segment_v2/segment.cpp
@@ -290,7 +290,7 @@ Status Segment::new_iterator(SchemaSPtr schema, const
StorageReadOptions& read_o
{
SCOPED_RAW_TIMER(&read_options.stats->segment_load_index_timer_ns);
- RETURN_IF_ERROR(load_index());
+ RETURN_IF_ERROR(load_index(read_options.stats));
}
if (read_options.delete_condition_predicates->num_of_column_predicate() ==
0 &&
@@ -475,7 +475,7 @@ Status Segment::_parse_footer(SegmentFooterPB* footer) {
return Status::OK();
}
-Status Segment::_load_pk_bloom_filter() {
+Status Segment::_load_pk_bloom_filter(OlapReaderStatistics* stats) {
#ifdef BE_TEST
if (_pk_index_meta == nullptr) {
// for BE UT "segment_cache_test"
@@ -490,30 +490,30 @@ Status Segment::_load_pk_bloom_filter() {
DCHECK(_pk_index_meta != nullptr);
DCHECK(_pk_index_reader != nullptr);
- return _load_pk_bf_once.call([this] {
- RETURN_IF_ERROR(_pk_index_reader->parse_bf(_file_reader,
*_pk_index_meta));
+ return _load_pk_bf_once.call([this, stats] {
+ RETURN_IF_ERROR(_pk_index_reader->parse_bf(_file_reader,
*_pk_index_meta, stats));
// _meta_mem_usage += _pk_index_reader->get_bf_memory_size();
return Status::OK();
});
}
Status Segment::load_pk_index_and_bf(OlapReaderStatistics* index_load_stats) {
- _pk_index_load_stats = index_load_stats;
- RETURN_IF_ERROR(load_index());
- RETURN_IF_ERROR(_load_pk_bloom_filter());
+ RETURN_IF_ERROR(load_index(index_load_stats));
+ RETURN_IF_ERROR(_load_pk_bloom_filter(index_load_stats));
return Status::OK();
}
-Status Segment::load_index() {
- return _load_index_once.call([this] {
+Status Segment::load_index(OlapReaderStatistics* stats) {
+ return _load_index_once.call([this, stats] {
if (_tablet_schema->keys_type() == UNIQUE_KEYS && _pk_index_meta !=
nullptr) {
- _pk_index_reader =
std::make_unique<PrimaryKeyIndexReader>(_pk_index_load_stats);
- RETURN_IF_ERROR(_pk_index_reader->parse_index(_file_reader,
*_pk_index_meta));
+ _pk_index_reader = std::make_unique<PrimaryKeyIndexReader>();
+ RETURN_IF_ERROR(_pk_index_reader->parse_index(_file_reader,
*_pk_index_meta, stats));
// _meta_mem_usage += _pk_index_reader->get_memory_size();
return Status::OK();
} else {
// read and parse short key index page
OlapReaderStatistics tmp_stats;
+ OlapReaderStatistics* stats_ptr = stats != nullptr ? stats :
&tmp_stats;
PageReadOptions opts {
.use_page_cache = true,
.type = INDEX_PAGE,
@@ -522,7 +522,8 @@ Status Segment::load_index() {
// short key index page uses NO_COMPRESSION for now
.codec = nullptr,
.stats = &tmp_stats,
- .io_ctx = io::IOContext {.is_index_data = true},
+ .io_ctx = io::IOContext {.is_index_data = true,
+ .file_cache_stats =
&stats_ptr->file_cache_stats},
};
Slice body;
PageFooterPB footer;
@@ -970,8 +971,8 @@ Status Segment::new_inverted_index_iterator(const
TabletColumn& tablet_column,
Status Segment::lookup_row_key(const Slice& key, const TabletSchema*
latest_schema,
bool with_seq_col, bool with_rowid,
RowLocation* row_location,
- std::string* encoded_seq_value,
OlapReaderStatistics* stats) {
- RETURN_IF_ERROR(load_pk_index_and_bf());
+ OlapReaderStatistics* stats, std::string*
encoded_seq_value) {
+ RETURN_IF_ERROR(load_pk_index_and_bf(stats));
bool has_seq_col = latest_schema->has_sequence_col();
bool has_rowid = !latest_schema->cluster_key_uids().empty();
size_t seq_col_length = 0;
@@ -1071,9 +1072,10 @@ Status Segment::lookup_row_key(const Slice& key, const
TabletSchema* latest_sche
}
Status Segment::read_key_by_rowid(uint32_t row_id, std::string* key) {
- RETURN_IF_ERROR(load_pk_index_and_bf());
+ OlapReaderStatistics* null_stat = nullptr;
+ RETURN_IF_ERROR(load_pk_index_and_bf(null_stat));
std::unique_ptr<segment_v2::IndexedColumnIterator> iter;
- RETURN_IF_ERROR(_pk_index_reader->new_iterator(&iter));
+ RETURN_IF_ERROR(_pk_index_reader->new_iterator(&iter, null_stat));
auto index_type = vectorized::DataTypeFactory::instance().create_data_type(
_pk_index_reader->type_info()->type(), 1, 0);
@@ -1129,7 +1131,8 @@ Status Segment::seek_and_read_by_rowid(const
TabletSchema& schema, SlotDescripto
.use_page_cache = !config::disable_storage_page_cache,
.file_reader = file_reader().get(),
.stats = &stats,
- .io_ctx = io::IOContext {.reader_type = ReaderType::READER_QUERY},
+ .io_ctx = io::IOContext {.reader_type = ReaderType::READER_QUERY,
+ .file_cache_stats =
&stats.file_cache_stats},
};
std::vector<segment_v2::rowid_t> single_row_loc {row_id};
if (!slot->column_paths().empty()) {
diff --git a/be/src/olap/rowset/segment_v2/segment.h
b/be/src/olap/rowset/segment_v2/segment.h
index ca2fee0e77a..441ae3e85e9 100644
--- a/be/src/olap/rowset/segment_v2/segment.h
+++ b/be/src/olap/rowset/segment_v2/segment.h
@@ -134,9 +134,8 @@ public:
}
Status lookup_row_key(const Slice& key, const TabletSchema* latest_schema,
bool with_seq_col,
- bool with_rowid, RowLocation* row_location,
- std::string* encoded_seq_value = nullptr,
- OlapReaderStatistics* stats = nullptr);
+ bool with_rowid, RowLocation* row_location,
OlapReaderStatistics* stats,
+ std::string* encoded_seq_value = nullptr);
Status read_key_by_rowid(uint32_t row_id, std::string* key);
@@ -144,9 +143,9 @@ public:
vectorized::MutableColumnPtr& result,
OlapReaderStatistics& stats,
std::unique_ptr<ColumnIterator>&
iterator_hint);
- Status load_index();
+ Status load_index(OlapReaderStatistics* stats);
- Status load_pk_index_and_bf(OlapReaderStatistics* index_load_stats =
nullptr);
+ Status load_pk_index_and_bf(OlapReaderStatistics* stats);
void update_healthy_status(Status new_status) {
_healthy_status.update(new_status); }
// The segment is loaded into SegmentCache and then will load indices, if
there are something wrong
@@ -227,7 +226,7 @@ private:
Status _open();
Status _parse_footer(SegmentFooterPB* footer);
Status _create_column_readers(const SegmentFooterPB& footer);
- Status _load_pk_bloom_filter();
+ Status _load_pk_bloom_filter(OlapReaderStatistics* stats);
ColumnReader* _get_column_reader(const TabletColumn& col);
// Get Iterator which will read variant root column and extract with paths
and types info
@@ -305,7 +304,6 @@ private:
InvertedIndexFileInfo _idx_file_info;
int _be_exec_version = BeExecVersionManager::get_newest_version();
- OlapReaderStatistics* _pk_index_load_stats = nullptr;
};
} // namespace segment_v2
diff --git a/be/src/olap/rowset/segment_v2/segment_iterator.cpp
b/be/src/olap/rowset/segment_v2/segment_iterator.cpp
index 0c54eaa2d6c..5f50ffeea2d 100644
--- a/be/src/olap/rowset/segment_v2/segment_iterator.cpp
+++ b/be/src/olap/rowset/segment_v2/segment_iterator.cpp
@@ -1181,7 +1181,7 @@ Status
SegmentIterator::_lookup_ordinal_from_pk_index(const RowCursor& key, bool
bool exact_match = false;
std::unique_ptr<segment_v2::IndexedColumnIterator> index_iterator;
- RETURN_IF_ERROR(pk_index_reader->new_iterator(&index_iterator));
+ RETURN_IF_ERROR(pk_index_reader->new_iterator(&index_iterator,
_opts.stats));
Status status = index_iterator->seek_at_or_after(&index_key, &exact_match);
if (UNLIKELY(!status.ok())) {
diff --git a/be/src/olap/rowset/segment_v2/zone_map_index.cpp
b/be/src/olap/rowset/segment_v2/zone_map_index.cpp
index c2139ff0899..9249c82aedf 100644
--- a/be/src/olap/rowset/segment_v2/zone_map_index.cpp
+++ b/be/src/olap/rowset/segment_v2/zone_map_index.cpp
@@ -140,18 +140,21 @@ Status
TypedZoneMapIndexWriter<Type>::finish(io::FileWriter* file_writer,
return writer.finish(meta->mutable_page_zone_maps());
}
-Status ZoneMapIndexReader::load(bool use_page_cache, bool kept_in_memory) {
+Status ZoneMapIndexReader::load(bool use_page_cache, bool kept_in_memory,
+ OlapReaderStatistics* index_load_stats) {
// TODO yyq: implement a new once flag to avoid status construct.
- return _load_once.call([this, use_page_cache, kept_in_memory] {
- return _load(use_page_cache, kept_in_memory,
std::move(_page_zone_maps_meta));
+ return _load_once.call([this, use_page_cache, kept_in_memory,
index_load_stats] {
+ return _load(use_page_cache, kept_in_memory,
std::move(_page_zone_maps_meta),
+ index_load_stats);
});
}
Status ZoneMapIndexReader::_load(bool use_page_cache, bool kept_in_memory,
- std::unique_ptr<IndexedColumnMetaPB>
page_zone_maps_meta) {
+ std::unique_ptr<IndexedColumnMetaPB>
page_zone_maps_meta,
+ OlapReaderStatistics* index_load_stats) {
IndexedColumnReader reader(_file_reader, *page_zone_maps_meta);
- RETURN_IF_ERROR(reader.load(use_page_cache, kept_in_memory));
- IndexedColumnIterator iter(&reader);
+ RETURN_IF_ERROR(reader.load(use_page_cache, kept_in_memory,
index_load_stats));
+ IndexedColumnIterator iter(&reader, index_load_stats);
_page_zone_maps.resize(reader.num_values());
diff --git a/be/src/olap/rowset/segment_v2/zone_map_index.h
b/be/src/olap/rowset/segment_v2/zone_map_index.h
index 34869bbbfee..04cae12975c 100644
--- a/be/src/olap/rowset/segment_v2/zone_map_index.h
+++ b/be/src/olap/rowset/segment_v2/zone_map_index.h
@@ -154,14 +154,16 @@ public:
virtual ~ZoneMapIndexReader();
// load all page zone maps into memory
- Status load(bool use_page_cache, bool kept_in_memory);
+ Status load(bool use_page_cache, bool kept_in_memory,
+ OlapReaderStatistics* index_load_stats = nullptr);
const std::vector<ZoneMapPB>& page_zone_maps() const { return
_page_zone_maps; }
int32_t num_pages() const { return _page_zone_maps.size(); }
private:
- Status _load(bool use_page_cache, bool kept_in_memory,
std::unique_ptr<IndexedColumnMetaPB>);
+ Status _load(bool use_page_cache, bool kept_in_memory,
std::unique_ptr<IndexedColumnMetaPB>,
+ OlapReaderStatistics* index_load_stats);
int64_t get_metadata_size() const override;
diff --git a/be/test/olap/date_bloom_filter_test.cpp
b/be/test/olap/date_bloom_filter_test.cpp
index 715301419e2..51de4ebd8e7 100644
--- a/be/test/olap/date_bloom_filter_test.cpp
+++ b/be/test/olap/date_bloom_filter_test.cpp
@@ -155,8 +155,8 @@ TEST_F(DateBloomFilterTest, query_index_test) {
{
const auto& reader = segment->_column_readers[0];
std::unique_ptr<BloomFilterIndexIterator> bf_iter;
- EXPECT_TRUE(reader->_bloom_filter_index->load(true, true).ok());
- EXPECT_TRUE(reader->_bloom_filter_index->new_iterator(&bf_iter).ok());
+ EXPECT_TRUE(reader->_bloom_filter_index->load(true, true,
nullptr).ok());
+ EXPECT_TRUE(reader->_bloom_filter_index->new_iterator(&bf_iter,
nullptr).ok());
std::unique_ptr<BloomFilter> bf;
EXPECT_TRUE(bf_iter->read_bloom_filter(0, &bf).ok());
auto test = [&](const std::string& query_string, bool result) {
@@ -174,8 +174,8 @@ TEST_F(DateBloomFilterTest, query_index_test) {
{
const auto& reader = segment->_column_readers[1];
std::unique_ptr<BloomFilterIndexIterator> bf_iter;
- EXPECT_TRUE(reader->_bloom_filter_index->load(true, true).ok());
- EXPECT_TRUE(reader->_bloom_filter_index->new_iterator(&bf_iter).ok());
+ EXPECT_TRUE(reader->_bloom_filter_index->load(true, true,
nullptr).ok());
+ EXPECT_TRUE(reader->_bloom_filter_index->new_iterator(&bf_iter,
nullptr).ok());
std::unique_ptr<BloomFilter> bf;
EXPECT_TRUE(bf_iter->read_bloom_filter(0, &bf).ok());
auto test = [&](const std::string& query_string, bool result) {
diff --git a/be/test/olap/primary_key_index_test.cpp
b/be/test/olap/primary_key_index_test.cpp
index 72aae56cd09..9407be93886 100644
--- a/be/test/olap/primary_key_index_test.cpp
+++ b/be/test/olap/primary_key_index_test.cpp
@@ -80,12 +80,12 @@ TEST_F(PrimaryKeyIndexTest, builder) {
PrimaryKeyIndexReader index_reader;
io::FileReaderSPtr file_reader;
EXPECT_TRUE(fs->open_file(filename, &file_reader).ok());
- EXPECT_TRUE(index_reader.parse_index(file_reader, index_meta).ok());
- EXPECT_TRUE(index_reader.parse_bf(file_reader, index_meta).ok());
+ EXPECT_TRUE(index_reader.parse_index(file_reader, index_meta,
nullptr).ok());
+ EXPECT_TRUE(index_reader.parse_bf(file_reader, index_meta, nullptr).ok());
EXPECT_EQ(num_rows, index_reader.num_rows());
std::unique_ptr<segment_v2::IndexedColumnIterator> index_iterator;
- EXPECT_TRUE(index_reader.new_iterator(&index_iterator).ok());
+ EXPECT_TRUE(index_reader.new_iterator(&index_iterator, nullptr).ok());
bool exact_match = false;
uint32_t row_id;
for (size_t i = 0; i < keys.size(); i++) {
@@ -142,7 +142,7 @@ TEST_F(PrimaryKeyIndexTest, builder) {
int batch_size = 1024;
while (remaining > 0) {
std::unique_ptr<segment_v2::IndexedColumnIterator> iter;
- EXPECT_TRUE(index_reader.new_iterator(&iter).ok());
+ EXPECT_TRUE(index_reader.new_iterator(&iter, nullptr).ok());
size_t num_to_read = std::min(batch_size, remaining);
auto index_type =
vectorized::DataTypeFactory::instance().create_data_type(
@@ -199,12 +199,12 @@ TEST_F(PrimaryKeyIndexTest, multiple_pages) {
PrimaryKeyIndexReader index_reader;
io::FileReaderSPtr file_reader;
EXPECT_TRUE(fs->open_file(filename, &file_reader).ok());
- EXPECT_TRUE(index_reader.parse_index(file_reader, index_meta).ok());
- EXPECT_TRUE(index_reader.parse_bf(file_reader, index_meta).ok());
+ EXPECT_TRUE(index_reader.parse_index(file_reader, index_meta,
nullptr).ok());
+ EXPECT_TRUE(index_reader.parse_bf(file_reader, index_meta, nullptr).ok());
EXPECT_EQ(num_rows, index_reader.num_rows());
std::unique_ptr<segment_v2::IndexedColumnIterator> index_iterator;
- EXPECT_TRUE(index_reader.new_iterator(&index_iterator).ok());
+ EXPECT_TRUE(index_reader.new_iterator(&index_iterator, nullptr).ok());
bool exact_match = false;
uint32_t row_id;
for (size_t i = 0; i < keys.size(); i++) {
@@ -283,12 +283,12 @@ TEST_F(PrimaryKeyIndexTest, single_page) {
PrimaryKeyIndexReader index_reader;
io::FileReaderSPtr file_reader;
EXPECT_TRUE(fs->open_file(filename, &file_reader).ok());
- EXPECT_TRUE(index_reader.parse_index(file_reader, index_meta).ok());
- EXPECT_TRUE(index_reader.parse_bf(file_reader, index_meta).ok());
+ EXPECT_TRUE(index_reader.parse_index(file_reader, index_meta,
nullptr).ok());
+ EXPECT_TRUE(index_reader.parse_bf(file_reader, index_meta, nullptr).ok());
EXPECT_EQ(num_rows, index_reader.num_rows());
std::unique_ptr<segment_v2::IndexedColumnIterator> index_iterator;
- EXPECT_TRUE(index_reader.new_iterator(&index_iterator).ok());
+ EXPECT_TRUE(index_reader.new_iterator(&index_iterator, nullptr).ok());
bool exact_match = false;
uint32_t row_id;
for (size_t i = 0; i < keys.size(); i++) {
diff --git
a/be/test/olap/rowset/segment_v2/bloom_filter_index_reader_writer_test.cpp
b/be/test/olap/rowset/segment_v2/bloom_filter_index_reader_writer_test.cpp
index 813952595ef..e561f8ce944 100644
--- a/be/test/olap/rowset/segment_v2/bloom_filter_index_reader_writer_test.cpp
+++ b/be/test/olap/rowset/segment_v2/bloom_filter_index_reader_writer_test.cpp
@@ -124,10 +124,10 @@ void get_bloom_filter_reader_iter(const std::string&
file_name, const ColumnInde
io::FileReaderSPtr file_reader;
ASSERT_EQ(io::global_local_filesystem()->open_file(fname, &file_reader),
Status::OK());
*reader = new BloomFilterIndexReader(std::move(file_reader),
meta.bloom_filter_index());
- auto st = (*reader)->load(true, false);
+ auto st = (*reader)->load(true, false, nullptr);
EXPECT_TRUE(st.ok());
- st = (*reader)->new_iterator(iter);
+ st = (*reader)->new_iterator(iter, nullptr);
EXPECT_TRUE(st.ok());
}
diff --git a/be/test/olap/rowset/segment_v2/ordinal_page_index_test.cpp
b/be/test/olap/rowset/segment_v2/ordinal_page_index_test.cpp
index 33848c5959c..ffd9c92ee02 100644
--- a/be/test/olap/rowset/segment_v2/ordinal_page_index_test.cpp
+++ b/be/test/olap/rowset/segment_v2/ordinal_page_index_test.cpp
@@ -74,7 +74,7 @@ TEST_F(OrdinalPageIndexTest, normal) {
io::FileReaderSPtr file_reader;
EXPECT_TRUE(fs->open_file(filename, &file_reader).ok());
OrdinalIndexReader index(file_reader, 16 * 1024 * 4096 + 1,
index_meta.ordinal_index());
- EXPECT_TRUE(index.load(true, false).ok());
+ EXPECT_TRUE(index.load(true, false, nullptr).ok());
EXPECT_EQ(16 * 1024, index.num_data_pages());
EXPECT_EQ(1, index.get_first_ordinal(0));
EXPECT_EQ(4096, index.get_last_ordinal(0));
@@ -128,7 +128,7 @@ TEST_F(OrdinalPageIndexTest, one_data_page) {
}
OrdinalIndexReader index(nullptr, num_values, index_meta.ordinal_index());
- EXPECT_TRUE(index.load(true, false).ok());
+ EXPECT_TRUE(index.load(true, false, nullptr).ok());
EXPECT_EQ(1, index.num_data_pages());
EXPECT_EQ(0, index.get_first_ordinal(0));
EXPECT_EQ(num_values - 1, index.get_last_ordinal(0));
diff --git a/be/test/olap/segment_cache_test.cpp
b/be/test/olap/segment_cache_test.cpp
index b226bc6c229..c527ffddd42 100644
--- a/be/test/olap/segment_cache_test.cpp
+++ b/be/test/olap/segment_cache_test.cpp
@@ -323,7 +323,7 @@ TEST_F(SegmentCacheTest, vec_sequence_col) {
segment_v2::SegmentSharedPtr segment_ptr = handle.get_segments()[0];
// load index and bf second
- res = segment_ptr->load_pk_index_and_bf();
+ res = segment_ptr->load_pk_index_and_bf(nullptr);
ASSERT_TRUE(res.ok());
// check cache mem usage equals to segment mem usage
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]