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
commit dd2cc616c179725d78e149ca0befb63a04cd2b2b Author: airborne12 <[email protected]> AuthorDate: Mon Oct 23 10:26:52 2023 +0800 [Fix](segment) need to rebuild col_id_to_predicates when true predicates encountered (#25685) --- be/src/olap/rowset/segment_v2/segment.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/be/src/olap/rowset/segment_v2/segment.cpp b/be/src/olap/rowset/segment_v2/segment.cpp index 0f41844434b..791c666d307 100644 --- a/be/src/olap/rowset/segment_v2/segment.cpp +++ b/be/src/olap/rowset/segment_v2/segment.cpp @@ -190,6 +190,18 @@ Status Segment::new_iterator(SchemaSPtr schema, const StorageReadOptions& read_o if (pruned) { auto options_with_pruned_predicates = read_options; options_with_pruned_predicates.column_predicates = pruned_predicates; + //because column_predicates is changed, we need to rebuild col_id_to_predicates so that inverted index will not go through it. + options_with_pruned_predicates.col_id_to_predicates.clear(); + for (auto* pred : options_with_pruned_predicates.column_predicates) { + if (!options_with_pruned_predicates.col_id_to_predicates.contains( + pred->column_id())) { + options_with_pruned_predicates.col_id_to_predicates.insert( + {pred->column_id(), std::make_shared<AndBlockColumnPredicate>()}); + } + auto* single_column_block_predicate = new SingleColumnBlockPredicate(pred); + options_with_pruned_predicates.col_id_to_predicates[pred->column_id()] + ->add_column_predicate(single_column_block_predicate); + } LOG(INFO) << "column_predicates pruned from " << read_options.column_predicates.size() << " to " << pruned_predicates.size(); return iter->get()->init(options_with_pruned_predicates); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
