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 089fa1eb08 [Enhancement](inverted index) fix compound predicates error
(#24300)
089fa1eb08 is described below
commit 089fa1eb0878778495211155872f664b38606829
Author: airborne12 <[email protected]>
AuthorDate: Thu Sep 14 09:21:41 2023 +0800
[Enhancement](inverted index) fix compound predicates error (#24300)
---
be/src/olap/rowset/segment_v2/segment_iterator.cpp | 15 ++++++++++++---
1 file changed, 12 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 8014a64599..71fbee24c2 100644
--- a/be/src/olap/rowset/segment_v2/segment_iterator.cpp
+++ b/be/src/olap/rowset/segment_v2/segment_iterator.cpp
@@ -611,13 +611,13 @@ Status
SegmentIterator::_execute_predicates_except_leafnode_of_andnode(
} else {
_column_predicate_info->query_op = expr->fn().name.function_name;
}
- // get child condition result in compound condtions
+ // get child condition result in compound conditions
auto pred_result_sign =
_gen_predicate_result_sign(_column_predicate_info.get());
_column_predicate_info.reset(new ColumnPredicateInfo());
if (_rowid_result_for_index.count(pred_result_sign) > 0 &&
_rowid_result_for_index[pred_result_sign].first) {
- auto apply_reuslt =
_rowid_result_for_index[pred_result_sign].second;
-
_pred_except_leafnode_of_andnode_evaluate_result.push_back(apply_reuslt);
+ auto apply_result =
_rowid_result_for_index[pred_result_sign].second;
+
_pred_except_leafnode_of_andnode_evaluate_result.push_back(apply_result);
}
} else if (node_type == TExprNodeType::COMPOUND_PRED) {
auto function_name = expr->fn().name.function_name;
@@ -656,11 +656,20 @@ Status SegmentIterator::_execute_compound_fn(const
std::string& function_name) {
}
bool SegmentIterator::_can_filter_by_preds_except_leafnode_of_andnode() {
+ // no compound predicates push down, so no need to filter
+ if (_col_preds_except_leafnode_of_andnode.size() == 0) {
+ return false;
+ }
for (auto pred : _col_preds_except_leafnode_of_andnode) {
if (_not_apply_index_pred.count(pred->column_id()) ||
(!_check_apply_by_bitmap_index(pred) &&
!_check_apply_by_inverted_index(pred, true))) {
return false;
}
+ // all predicates are evaluated by index, then true, else false
+ std::string pred_result_sign = _gen_predicate_result_sign(pred);
+ if (_rowid_result_for_index.count(pred_result_sign) == 0) {
+ return false;
+ }
}
return true;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]