This is an automated email from the ASF dual-hosted git repository.
kxiao pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.0 by this push:
new 9fbf30654b5 [Fix](inverted index) fix need read data optimize problem
#28104 (#28731)
9fbf30654b5 is described below
commit 9fbf30654b5bcb6e06d8ec75c050aa867096d997
Author: airborne12 <[email protected]>
AuthorDate: Wed Dec 20 22:26:13 2023 +0800
[Fix](inverted index) fix need read data optimize problem #28104 (#28731)
---
be/src/olap/rowset/segment_v2/segment_iterator.cpp | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/be/src/olap/rowset/segment_v2/segment_iterator.cpp
b/be/src/olap/rowset/segment_v2/segment_iterator.cpp
index 9eb127264fb..658b30e67fc 100644
--- a/be/src/olap/rowset/segment_v2/segment_iterator.cpp
+++ b/be/src/olap/rowset/segment_v2/segment_iterator.cpp
@@ -845,6 +845,7 @@ Status
SegmentIterator::_apply_index_except_leafnode_of_andnode() {
if (_downgrade_without_index(res, need_remaining_after_evaluate)) {
// downgrade without index query
_not_apply_index_pred.insert(pred->column_id());
+ _need_read_data_indices[pred->column_id()] = true;
continue;
}
LOG(WARNING) << "failed to evaluate index"
@@ -864,7 +865,10 @@ Status
SegmentIterator::_apply_index_except_leafnode_of_andnode() {
_check_column_pred_all_push_down(column_name, true,
pred->type() ==
PredicateType::MATCH) &&
!pred->predicate_params()->marked_by_runtime_filter) {
- _need_read_data_indices[pred->column_id()] = false;
+ // if column's need_read_data already set true, we can not set it
to false now.
+ if (_need_read_data_indices.find(pred->column_id()) ==
_need_read_data_indices.end()) {
+ _need_read_data_indices[pred->column_id()] = false;
+ }
}
}
@@ -950,6 +954,7 @@ Status
SegmentIterator::_apply_inverted_index_on_column_predicate(
if (!res.ok()) {
if (_downgrade_without_index(res, need_remaining_after_evaluate)) {
remaining_predicates.emplace_back(pred);
+ _need_read_data_indices[pred->column_id()] = true;
return Status::OK();
}
LOG(WARNING) << "failed to evaluate index"
@@ -980,7 +985,10 @@ Status
SegmentIterator::_apply_inverted_index_on_column_predicate(
if (_check_column_pred_all_push_down(column_name, false,
pred->type() ==
PredicateType::MATCH) &&
!pred->predicate_params()->marked_by_runtime_filter) {
- _need_read_data_indices[pred->column_id()] = false;
+ // if column's need_read_data already set true, we can not set it
to false now.
+ if (_need_read_data_indices.find(pred->column_id()) ==
_need_read_data_indices.end()) {
+ _need_read_data_indices[pred->column_id()] = false;
+ }
}
}
return Status::OK();
@@ -1012,7 +1020,9 @@ Status
SegmentIterator::_apply_inverted_index_on_block_column_predicate(
if (res.ok()) {
if (_check_column_pred_all_push_down(column_name) &&
!all_predicates_are_marked_by_runtime_filter(predicate_set)) {
- _need_read_data_indices[column_id] = false;
+ if (_need_read_data_indices.find(column_id) ==
_need_read_data_indices.end()) {
+ _need_read_data_indices[column_id] = false;
+ }
}
no_need_to_pass_column_predicate_set.insert(predicate_set.begin(),
predicate_set.end());
_row_bitmap &= output_result;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]