This is an automated email from the ASF dual-hosted git repository.
eldenmoon 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 db1da161f5d [optimize](zonemap) skip zonemap if predicate does not
support_zonemap (#28595)
db1da161f5d is described below
commit db1da161f5d771138ce248f1b13094aef4ca93a2
Author: Kang <[email protected]>
AuthorDate: Sun Dec 24 19:34:13 2023 +0800
[optimize](zonemap) skip zonemap if predicate does not support_zonemap
(#28595)
* [optimize](zonemap) skip zonemap if predicate does not support_zonemap
#27608 (#28506)
---
be/src/olap/block_column_predicate.h | 13 ++
be/src/olap/column_predicate.h | 2 +
be/src/olap/match_predicate.h | 2 +
be/src/olap/olap_common.h | 5 +
be/src/olap/rowset/segment_v2/segment_iterator.cpp | 167 ++++++++++++---------
be/src/pipeline/exec/olap_scan_operator.cpp | 10 ++
be/src/pipeline/exec/olap_scan_operator.h | 5 +
be/src/vec/exec/scan/new_olap_scan_node.cpp | 12 +-
be/src/vec/exec/scan/new_olap_scan_node.h | 5 +
be/src/vec/exec/scan/new_olap_scanner.cpp | 9 ++
10 files changed, 157 insertions(+), 73 deletions(-)
diff --git a/be/src/olap/block_column_predicate.h
b/be/src/olap/block_column_predicate.h
index c2583e042a6..0ddebec3c18 100644
--- a/be/src/olap/block_column_predicate.h
+++ b/be/src/olap/block_column_predicate.h
@@ -77,6 +77,8 @@ public:
return true;
}
+ virtual bool support_zonemap() const { return true; }
+
virtual bool evaluate_and(const std::pair<WrapperField*, WrapperField*>&
statistic) const {
LOG(FATAL) << "should not reach here";
return true;
@@ -118,6 +120,7 @@ public:
uint16_t selected_size) const override;
void evaluate_and(vectorized::MutableColumns& block, uint16_t* sel,
uint16_t selected_size,
bool* flags) const override;
+ bool support_zonemap() const override { return
_predicate->support_zonemap(); }
bool evaluate_and(const std::pair<WrapperField*, WrapperField*>&
statistic) const override;
bool evaluate_and(const segment_v2::BloomFilter* bf) const override;
bool evaluate_and(const StringRef* dict_words, const size_t dict_num)
const override;
@@ -148,6 +151,16 @@ public:
}
}
+ bool support_zonemap() const override {
+ for (const auto* child_block_predicate : _block_column_predicate_vec) {
+ if (!child_block_predicate->support_zonemap()) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
void add_column_predicate(const BlockColumnPredicate* column_predicate) {
_block_column_predicate_vec.push_back(column_predicate);
}
diff --git a/be/src/olap/column_predicate.h b/be/src/olap/column_predicate.h
index 42d9a3d58f8..5c3ad135062 100644
--- a/be/src/olap/column_predicate.h
+++ b/be/src/olap/column_predicate.h
@@ -192,6 +192,8 @@ public:
virtual void evaluate_or(const vectorized::IColumn& column, const
uint16_t* sel, uint16_t size,
bool* flags) const {}
+ virtual bool support_zonemap() const { return true; }
+
virtual bool evaluate_and(const std::pair<WrapperField*, WrapperField*>&
statistic) const {
return true;
}
diff --git a/be/src/olap/match_predicate.h b/be/src/olap/match_predicate.h
index 915bfd445e6..776c9c4c258 100644
--- a/be/src/olap/match_predicate.h
+++ b/be/src/olap/match_predicate.h
@@ -50,6 +50,8 @@ public:
const std::string& get_value() const { return _value; }
+ bool support_zonemap() const override { return false; }
+
//evaluate predicate on Bitmap
virtual Status evaluate(BitmapIndexIterator* iterator, uint32_t num_rows,
roaring::Roaring* roaring) const override {
diff --git a/be/src/olap/olap_common.h b/be/src/olap/olap_common.h
index 1921902a9d0..42bad24dfed 100644
--- a/be/src/olap/olap_common.h
+++ b/be/src/olap/olap_common.h
@@ -325,6 +325,7 @@ struct OlapReaderStatistics {
int64_t rows_key_range_filtered = 0;
int64_t rows_stats_filtered = 0;
+ int64_t rows_stats_rp_filtered = 0;
int64_t rows_bf_filtered = 0;
int64_t rows_dict_filtered = 0;
// Including the number of rows filtered out according to the Delete
information in the Tablet,
@@ -337,6 +338,10 @@ struct OlapReaderStatistics {
// the number of rows filtered by various column indexes.
int64_t rows_conditions_filtered = 0;
int64_t block_conditions_filtered_ns = 0;
+ int64_t block_conditions_filtered_bf_ns = 0;
+ int64_t block_conditions_filtered_zonemap_ns = 0;
+ int64_t block_conditions_filtered_zonemap_rp_ns = 0;
+ int64_t block_conditions_filtered_dict_ns = 0;
int64_t index_load_ns = 0;
diff --git a/be/src/olap/rowset/segment_v2/segment_iterator.cpp
b/be/src/olap/rowset/segment_v2/segment_iterator.cpp
index 20382269b65..483e0e502df 100644
--- a/be/src/olap/rowset/segment_v2/segment_iterator.cpp
+++ b/be/src/olap/rowset/segment_v2/segment_iterator.cpp
@@ -529,90 +529,113 @@ Status
SegmentIterator::_get_row_ranges_from_conditions(RowRanges* condition_row
cids.insert(entry.first);
}
- // first filter data by bloom filter index
- // bloom filter index only use CondColumn
- RowRanges bf_row_ranges = RowRanges::create_single(num_rows());
- for (auto& cid : cids) {
- DCHECK(_opts.col_id_to_predicates.count(cid) > 0);
- if (!_segment->can_apply_predicate_safely(cid,
_opts.col_id_to_predicates.at(cid).get(),
- *_schema,
_opts.io_ctx.reader_type)) {
- continue;
- }
- // get row ranges by bf index of this column,
- RowRanges column_bf_row_ranges = RowRanges::create_single(num_rows());
- RETURN_IF_ERROR(_column_iterators[cid]->get_row_ranges_by_bloom_filter(
- _opts.col_id_to_predicates.at(cid).get(),
&column_bf_row_ranges));
- RowRanges::ranges_intersection(bf_row_ranges, column_bf_row_ranges,
&bf_row_ranges);
- }
+ size_t pre_size = 0;
- size_t pre_size = condition_row_ranges->count();
- RowRanges::ranges_intersection(*condition_row_ranges, bf_row_ranges,
condition_row_ranges);
- _opts.stats->rows_bf_filtered += (pre_size -
condition_row_ranges->count());
-
- RowRanges zone_map_row_ranges = RowRanges::create_single(num_rows());
- // second filter data by zone map
- for (auto& cid : cids) {
- DCHECK(_opts.col_id_to_predicates.count(cid) > 0);
- if (!_segment->can_apply_predicate_safely(cid,
_opts.col_id_to_predicates.at(cid).get(),
- *_schema,
_opts.io_ctx.reader_type)) {
- continue;
+ {
+ SCOPED_RAW_TIMER(&_opts.stats->block_conditions_filtered_bf_ns);
+ // first filter data by bloom filter index
+ // bloom filter index only use CondColumn
+ RowRanges bf_row_ranges = RowRanges::create_single(num_rows());
+ for (auto& cid : cids) {
+ DCHECK(_opts.col_id_to_predicates.count(cid) > 0);
+ if (!_segment->can_apply_predicate_safely(cid,
_opts.col_id_to_predicates.at(cid).get(),
+ *_schema,
_opts.io_ctx.reader_type)) {
+ continue;
+ }
+ // get row ranges by bf index of this column,
+ RowRanges column_bf_row_ranges =
RowRanges::create_single(num_rows());
+
RETURN_IF_ERROR(_column_iterators[cid]->get_row_ranges_by_bloom_filter(
+ _opts.col_id_to_predicates.at(cid).get(),
&column_bf_row_ranges));
+ RowRanges::ranges_intersection(bf_row_ranges,
column_bf_row_ranges, &bf_row_ranges);
}
- // get row ranges by zone map of this column,
- RowRanges column_row_ranges = RowRanges::create_single(num_rows());
- RETURN_IF_ERROR(_column_iterators[cid]->get_row_ranges_by_zone_map(
- _opts.col_id_to_predicates.at(cid).get(),
- _opts.del_predicates_for_zone_map.count(cid) > 0
- ? &(_opts.del_predicates_for_zone_map.at(cid))
- : nullptr,
- &column_row_ranges));
- // intersect different columns's row ranges to get final row ranges by
zone map
- RowRanges::ranges_intersection(zone_map_row_ranges, column_row_ranges,
- &zone_map_row_ranges);
- }
- std::shared_ptr<doris::ColumnPredicate> runtime_predicate = nullptr;
- if (_opts.use_topn_opt) {
- auto query_ctx = _opts.runtime_state->get_query_ctx();
- runtime_predicate =
query_ctx->get_runtime_predicate().get_predictate();
- if (runtime_predicate && _segment->can_apply_predicate_safely(
- runtime_predicate->column_id(),
runtime_predicate.get(),
- *_schema, _opts.io_ctx.reader_type)) {
- AndBlockColumnPredicate and_predicate;
- auto single_predicate = new
SingleColumnBlockPredicate(runtime_predicate.get());
- and_predicate.add_column_predicate(single_predicate);
-
- RowRanges column_rp_row_ranges =
RowRanges::create_single(num_rows());
- RETURN_IF_ERROR(
-
_column_iterators[runtime_predicate->column_id()]->get_row_ranges_by_zone_map(
- &and_predicate, nullptr, &column_rp_row_ranges));
+ pre_size = condition_row_ranges->count();
+ RowRanges::ranges_intersection(*condition_row_ranges, bf_row_ranges,
condition_row_ranges);
+ _opts.stats->rows_bf_filtered += (pre_size -
condition_row_ranges->count());
+ }
+ {
+ SCOPED_RAW_TIMER(&_opts.stats->block_conditions_filtered_zonemap_ns);
+ RowRanges zone_map_row_ranges = RowRanges::create_single(num_rows());
+ // second filter data by zone map
+ for (auto& cid : cids) {
+ DCHECK(_opts.col_id_to_predicates.count(cid) > 0);
+ if (!_segment->can_apply_predicate_safely(cid,
_opts.col_id_to_predicates.at(cid).get(),
+ *_schema,
_opts.io_ctx.reader_type)) {
+ continue;
+ }
+ // do not check zonemap if predicate does not support zonemap
+ if (!_opts.col_id_to_predicates.at(cid)->support_zonemap()) {
+ VLOG_DEBUG << "skip zonemap for column " << cid;
+ continue;
+ }
+ // get row ranges by zone map of this column,
+ RowRanges column_row_ranges = RowRanges::create_single(num_rows());
+ RETURN_IF_ERROR(_column_iterators[cid]->get_row_ranges_by_zone_map(
+ _opts.col_id_to_predicates.at(cid).get(),
+ _opts.del_predicates_for_zone_map.count(cid) > 0
+ ? &(_opts.del_predicates_for_zone_map.at(cid))
+ : nullptr,
+ &column_row_ranges));
// intersect different columns's row ranges to get final row
ranges by zone map
- RowRanges::ranges_intersection(zone_map_row_ranges,
column_rp_row_ranges,
+ RowRanges::ranges_intersection(zone_map_row_ranges,
column_row_ranges,
&zone_map_row_ranges);
}
- }
- pre_size = condition_row_ranges->count();
- RowRanges::ranges_intersection(*condition_row_ranges, zone_map_row_ranges,
- condition_row_ranges);
- _opts.stats->rows_stats_filtered += (pre_size -
condition_row_ranges->count());
+ pre_size = condition_row_ranges->count();
+ RowRanges::ranges_intersection(*condition_row_ranges,
zone_map_row_ranges,
+ condition_row_ranges);
- /// Low cardinality optimization is currently not very stable, so to
prevent data corruption,
- /// we are temporarily disabling its use in data compaction.
- if (_opts.io_ctx.reader_type == ReaderType::READER_QUERY) {
- RowRanges dict_row_ranges = RowRanges::create_single(num_rows());
- for (auto cid : cids) {
- RowRanges tmp_row_ranges = RowRanges::create_single(num_rows());
- DCHECK(_opts.col_id_to_predicates.count(cid) > 0);
- RETURN_IF_ERROR(_column_iterators[cid]->get_row_ranges_by_dict(
- _opts.col_id_to_predicates.at(cid).get(),
&tmp_row_ranges));
- RowRanges::ranges_intersection(dict_row_ranges, tmp_row_ranges,
&dict_row_ranges);
+ std::shared_ptr<doris::ColumnPredicate> runtime_predicate = nullptr;
+ if (_opts.use_topn_opt) {
+
SCOPED_RAW_TIMER(&_opts.stats->block_conditions_filtered_zonemap_ns);
+ auto query_ctx = _opts.runtime_state->get_query_ctx();
+ runtime_predicate =
query_ctx->get_runtime_predicate().get_predictate();
+ if (runtime_predicate &&
+
_segment->can_apply_predicate_safely(runtime_predicate->column_id(),
+ runtime_predicate.get(),
*_schema,
+
_opts.io_ctx.reader_type)) {
+ AndBlockColumnPredicate and_predicate;
+ auto single_predicate = new
SingleColumnBlockPredicate(runtime_predicate.get());
+ and_predicate.add_column_predicate(single_predicate);
+
+ RowRanges column_rp_row_ranges =
RowRanges::create_single(num_rows());
+
RETURN_IF_ERROR(_column_iterators[runtime_predicate->column_id()]
+
->get_row_ranges_by_zone_map(&and_predicate, nullptr,
+
&column_rp_row_ranges));
+
+ // intersect different columns's row ranges to get final row
ranges by zone map
+ RowRanges::ranges_intersection(zone_map_row_ranges,
column_rp_row_ranges,
+ &zone_map_row_ranges);
+ }
}
- pre_size = condition_row_ranges->count();
- RowRanges::ranges_intersection(*condition_row_ranges, dict_row_ranges,
+ size_t pre_size2 = condition_row_ranges->count();
+ RowRanges::ranges_intersection(*condition_row_ranges,
zone_map_row_ranges,
condition_row_ranges);
- _opts.stats->rows_dict_filtered += (pre_size -
condition_row_ranges->count());
+ _opts.stats->rows_stats_rp_filtered += (pre_size2 -
condition_row_ranges->count());
+ _opts.stats->rows_stats_filtered += (pre_size -
condition_row_ranges->count());
+ }
+
+ {
+ SCOPED_RAW_TIMER(&_opts.stats->block_conditions_filtered_dict_ns);
+ /// Low cardinality optimization is currently not very stable, so to
prevent data corruption,
+ /// we are temporarily disabling its use in data compaction.
+ if (_opts.io_ctx.reader_type == ReaderType::READER_QUERY) {
+ RowRanges dict_row_ranges = RowRanges::create_single(num_rows());
+ for (auto cid : cids) {
+ RowRanges tmp_row_ranges =
RowRanges::create_single(num_rows());
+ DCHECK(_opts.col_id_to_predicates.count(cid) > 0);
+ RETURN_IF_ERROR(_column_iterators[cid]->get_row_ranges_by_dict(
+ _opts.col_id_to_predicates.at(cid).get(),
&tmp_row_ranges));
+ RowRanges::ranges_intersection(dict_row_ranges,
tmp_row_ranges, &dict_row_ranges);
+ }
+
+ pre_size = condition_row_ranges->count();
+ RowRanges::ranges_intersection(*condition_row_ranges,
dict_row_ranges,
+ condition_row_ranges);
+ _opts.stats->rows_dict_filtered += (pre_size -
condition_row_ranges->count());
+ }
}
return Status::OK();
diff --git a/be/src/pipeline/exec/olap_scan_operator.cpp
b/be/src/pipeline/exec/olap_scan_operator.cpp
index c751c167d0c..3e40e173585 100644
--- a/be/src/pipeline/exec/olap_scan_operator.cpp
+++ b/be/src/pipeline/exec/olap_scan_operator.cpp
@@ -63,6 +63,14 @@ Status OlapScanLocalState::_init_profile() {
_block_init_seek_timer = ADD_TIMER(_segment_profile, "BlockInitSeekTime");
_block_init_seek_counter = ADD_COUNTER(_segment_profile,
"BlockInitSeekCount", TUnit::UNIT);
_block_conditions_filtered_timer = ADD_TIMER(_segment_profile,
"BlockConditionsFilteredTime");
+ _block_conditions_filtered_bf_timer =
+ ADD_TIMER(_segment_profile,
"BlockConditionsFilteredBloomFilterTime");
+ _block_conditions_filtered_zonemap_timer =
+ ADD_TIMER(_segment_profile, "BlockConditionsFilteredZonemapTime");
+ _block_conditions_filtered_zonemap_rp_timer =
+ ADD_TIMER(_segment_profile,
"BlockConditionsFilteredZonemapRuntimePredicateTime");
+ _block_conditions_filtered_dict_timer =
+ ADD_TIMER(_segment_profile, "BlockConditionsFilteredDictTime");
_rows_vec_cond_filtered_counter =
ADD_COUNTER(_segment_profile, "RowsVectorPredFiltered",
TUnit::UNIT);
@@ -87,6 +95,8 @@ Status OlapScanLocalState::_init_profile() {
_output_col_timer = ADD_TIMER(_segment_profile, "OutputColumnTime");
_stats_filtered_counter = ADD_COUNTER(_segment_profile,
"RowsStatsFiltered", TUnit::UNIT);
+ _stats_rp_filtered_counter =
+ ADD_COUNTER(_segment_profile,
"RowsZonemapRuntimePredicateFiltered", TUnit::UNIT);
_bf_filtered_counter = ADD_COUNTER(_segment_profile,
"RowsBloomFilterFiltered", TUnit::UNIT);
_dict_filtered_counter = ADD_COUNTER(_segment_profile, "RowsDictFiltered",
TUnit::UNIT);
_del_filtered_counter = ADD_COUNTER(_scanner_profile, "RowsDelFiltered",
TUnit::UNIT);
diff --git a/be/src/pipeline/exec/olap_scan_operator.h
b/be/src/pipeline/exec/olap_scan_operator.h
index f1db77b2054..ffd8fecd075 100644
--- a/be/src/pipeline/exec/olap_scan_operator.h
+++ b/be/src/pipeline/exec/olap_scan_operator.h
@@ -126,6 +126,7 @@ private:
std::map<int, PredicateFilterInfo> _filter_info;
RuntimeProfile::Counter* _stats_filtered_counter = nullptr;
+ RuntimeProfile::Counter* _stats_rp_filtered_counter = nullptr;
RuntimeProfile::Counter* _bf_filtered_counter = nullptr;
RuntimeProfile::Counter* _dict_filtered_counter = nullptr;
RuntimeProfile::Counter* _del_filtered_counter = nullptr;
@@ -141,6 +142,10 @@ private:
RuntimeProfile::Counter* _block_init_seek_timer = nullptr;
RuntimeProfile::Counter* _block_init_seek_counter = nullptr;
RuntimeProfile::Counter* _block_conditions_filtered_timer = nullptr;
+ RuntimeProfile::Counter* _block_conditions_filtered_bf_timer = nullptr;
+ RuntimeProfile::Counter* _block_conditions_filtered_zonemap_timer =
nullptr;
+ RuntimeProfile::Counter* _block_conditions_filtered_zonemap_rp_timer =
nullptr;
+ RuntimeProfile::Counter* _block_conditions_filtered_dict_timer = nullptr;
RuntimeProfile::Counter* _first_read_timer = nullptr;
RuntimeProfile::Counter* _second_read_timer = nullptr;
RuntimeProfile::Counter* _first_read_seek_timer = nullptr;
diff --git a/be/src/vec/exec/scan/new_olap_scan_node.cpp
b/be/src/vec/exec/scan/new_olap_scan_node.cpp
index ec132149003..38fd97f2413 100644
--- a/be/src/vec/exec/scan/new_olap_scan_node.cpp
+++ b/be/src/vec/exec/scan/new_olap_scan_node.cpp
@@ -129,6 +129,14 @@ Status NewOlapScanNode::_init_profile() {
_block_init_seek_timer = ADD_TIMER(_segment_profile, "BlockInitSeekTime");
_block_init_seek_counter = ADD_COUNTER(_segment_profile,
"BlockInitSeekCount", TUnit::UNIT);
_block_conditions_filtered_timer = ADD_TIMER(_segment_profile,
"BlockConditionsFilteredTime");
+ _block_conditions_filtered_bf_timer =
+ ADD_TIMER(_segment_profile,
"BlockConditionsFilteredBloomFilterTime");
+ _block_conditions_filtered_zonemap_timer =
+ ADD_TIMER(_segment_profile, "BlockConditionsFilteredZonemapTime");
+ _block_conditions_filtered_zonemap_rp_timer =
+ ADD_TIMER(_segment_profile,
"BlockConditionsFilteredZonemapRuntimePredicateTime");
+ _block_conditions_filtered_dict_timer =
+ ADD_TIMER(_segment_profile, "BlockConditionsFilteredDictTime");
_rows_vec_cond_filtered_counter =
ADD_COUNTER(_segment_profile, "RowsVectorPredFiltered",
TUnit::UNIT);
@@ -152,7 +160,9 @@ Status NewOlapScanNode::_init_profile() {
_output_col_timer = ADD_TIMER(_segment_profile, "OutputColumnTime");
- _stats_filtered_counter = ADD_COUNTER(_segment_profile,
"RowsStatsFiltered", TUnit::UNIT);
+ _stats_filtered_counter = ADD_COUNTER(_segment_profile,
"RowsZonemapFiltered", TUnit::UNIT);
+ _stats_rp_filtered_counter =
+ ADD_COUNTER(_segment_profile,
"RowsZonemapRuntimePredicateFiltered", TUnit::UNIT);
_bf_filtered_counter = ADD_COUNTER(_segment_profile,
"RowsBloomFilterFiltered", TUnit::UNIT);
_dict_filtered_counter = ADD_COUNTER(_segment_profile, "RowsDictFiltered",
TUnit::UNIT);
_del_filtered_counter = ADD_COUNTER(_scanner_profile, "RowsDelFiltered",
TUnit::UNIT);
diff --git a/be/src/vec/exec/scan/new_olap_scan_node.h
b/be/src/vec/exec/scan/new_olap_scan_node.h
index c62e7028cdc..309bac56991 100644
--- a/be/src/vec/exec/scan/new_olap_scan_node.h
+++ b/be/src/vec/exec/scan/new_olap_scan_node.h
@@ -153,6 +153,7 @@ private:
std::map<int, PredicateFilterInfo> _filter_info;
RuntimeProfile::Counter* _stats_filtered_counter = nullptr;
+ RuntimeProfile::Counter* _stats_rp_filtered_counter = nullptr;
RuntimeProfile::Counter* _bf_filtered_counter = nullptr;
RuntimeProfile::Counter* _dict_filtered_counter = nullptr;
RuntimeProfile::Counter* _del_filtered_counter = nullptr;
@@ -168,6 +169,10 @@ private:
RuntimeProfile::Counter* _block_init_seek_timer = nullptr;
RuntimeProfile::Counter* _block_init_seek_counter = nullptr;
RuntimeProfile::Counter* _block_conditions_filtered_timer = nullptr;
+ RuntimeProfile::Counter* _block_conditions_filtered_bf_timer = nullptr;
+ RuntimeProfile::Counter* _block_conditions_filtered_zonemap_timer =
nullptr;
+ RuntimeProfile::Counter* _block_conditions_filtered_zonemap_rp_timer =
nullptr;
+ RuntimeProfile::Counter* _block_conditions_filtered_dict_timer = nullptr;
RuntimeProfile::Counter* _first_read_timer = nullptr;
RuntimeProfile::Counter* _second_read_timer = nullptr;
RuntimeProfile::Counter* _first_read_seek_timer = nullptr;
diff --git a/be/src/vec/exec/scan/new_olap_scanner.cpp
b/be/src/vec/exec/scan/new_olap_scanner.cpp
index de4aa3e27fa..c6e401f3f54 100644
--- a/be/src/vec/exec/scan/new_olap_scanner.cpp
+++ b/be/src/vec/exec/scan/new_olap_scanner.cpp
@@ -590,6 +590,14 @@ void NewOlapScanner::_update_counters_before_close() {
COUNTER_UPDATE(Parent->_block_init_seek_timer, stats.block_init_seek_ns);
\
COUNTER_UPDATE(Parent->_block_init_seek_counter,
stats.block_init_seek_num); \
COUNTER_UPDATE(Parent->_block_conditions_filtered_timer,
stats.block_conditions_filtered_ns); \
+ COUNTER_UPDATE(Parent->_block_conditions_filtered_bf_timer,
\
+ stats.block_conditions_filtered_bf_ns);
\
+ COUNTER_UPDATE(Parent->_block_conditions_filtered_zonemap_timer,
\
+ stats.block_conditions_filtered_zonemap_ns);
\
+ COUNTER_UPDATE(Parent->_block_conditions_filtered_zonemap_rp_timer,
\
+ stats.block_conditions_filtered_zonemap_rp_ns);
\
+ COUNTER_UPDATE(Parent->_block_conditions_filtered_dict_timer,
\
+ stats.block_conditions_filtered_dict_ns);
\
COUNTER_UPDATE(Parent->_first_read_timer, stats.first_read_ns);
\
COUNTER_UPDATE(Parent->_second_read_timer, stats.second_read_ns);
\
COUNTER_UPDATE(Parent->_first_read_seek_timer,
stats.block_first_read_seek_ns); \
@@ -608,6 +616,7 @@ void NewOlapScanner::_update_counters_before_close() {
Parent->add_filter_info(id, info);
\
}
\
COUNTER_UPDATE(Parent->_stats_filtered_counter,
stats.rows_stats_filtered); \
+ COUNTER_UPDATE(Parent->_stats_rp_filtered_counter,
stats.rows_stats_rp_filtered); \
COUNTER_UPDATE(Parent->_dict_filtered_counter, stats.rows_dict_filtered);
\
COUNTER_UPDATE(Parent->_bf_filtered_counter, stats.rows_bf_filtered);
\
COUNTER_UPDATE(Parent->_del_filtered_counter, stats.rows_del_filtered);
\
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]