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 e065f344ac2 [fix](inverted index) fix the issue where need_read_data does not handle non-pushdown conditions #36292 (#36491) e065f344ac2 is described below commit e065f344ac2081285bd35b818a03f8a58cb683f8 Author: zzzxl <33418555+zzzxl1...@users.noreply.github.com> AuthorDate: Wed Jun 19 23:23:14 2024 +0800 [fix](inverted index) fix the issue where need_read_data does not handle non-pushdown conditions #36292 (#36491) --- be/src/olap/rowset/segment_v2/segment_iterator.cpp | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/be/src/olap/rowset/segment_v2/segment_iterator.cpp b/be/src/olap/rowset/segment_v2/segment_iterator.cpp index 02da041e286..977ca340ff8 100644 --- a/be/src/olap/rowset/segment_v2/segment_iterator.cpp +++ b/be/src/olap/rowset/segment_v2/segment_iterator.cpp @@ -314,6 +314,34 @@ Status SegmentIterator::_init_impl(const StorageReadOptions& opts) { if (opts.output_columns != nullptr) { _output_columns = *(opts.output_columns); } + + // find columns that definitely require reading data, such as functions that are not pushed down. + { + std::set<std::string> push_down_preds; + for (auto* pred : _col_predicates) { + if (!_check_apply_by_inverted_index(pred)) { + continue; + } + push_down_preds.insert(_gen_predicate_result_sign(pred)); + } + for (auto* pred : _col_preds_except_leafnode_of_andnode) { + if (!_check_apply_by_inverted_index(pred)) { + continue; + } + push_down_preds.insert(_gen_predicate_result_sign(pred)); + } + for (auto& preds_in_remaining_vconjuct : _column_pred_in_remaining_vconjunct) { + const auto& column_name = preds_in_remaining_vconjuct.first; + for (auto& pred_info : preds_in_remaining_vconjuct.second) { + auto column_sign = _gen_predicate_result_sign(&pred_info); + if (!push_down_preds.contains(column_sign)) { + auto cid = _opts.tablet_schema->field_index(column_name); + _need_read_data_indices[cid] = true; + } + } + } + } + return Status::OK(); } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org