From 0b67e0f3a72987a1b6a1b232392c9cc7fab9b684 Mon Sep 17 00:00:00 2001 From: Jerry Hu Date: Wed, 18 Oct 2023 10:37:13 +0800 Subject: [PATCH] [fix](scanner) coredump caused by 'prune_predicates_by_zone_map' --- be/src/olap/comparison_predicate.h | 2 ++ be/src/olap/rowset/segment_v2/segment.cpp | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/be/src/olap/comparison_predicate.h b/be/src/olap/comparison_predicate.h index de966833f9db65..8ec1504dce5dba 100644 --- a/be/src/olap/comparison_predicate.h +++ b/be/src/olap/comparison_predicate.h @@ -179,6 +179,8 @@ class ComparisonPredicateBase : public ColumnPredicate { return false; } + DCHECK_LE(sizeof(T), statistic.first->size()); + T tmp_min_value {}; T tmp_max_value {}; memcpy((char*)(&tmp_min_value), statistic.first->cell_ptr(), sizeof(WarpperFieldType)); diff --git a/be/src/olap/rowset/segment_v2/segment.cpp b/be/src/olap/rowset/segment_v2/segment.cpp index 5399e3ee65634b..d5d1792ee74a03 100644 --- a/be/src/olap/rowset/segment_v2/segment.cpp +++ b/be/src/olap/rowset/segment_v2/segment.cpp @@ -162,7 +162,9 @@ Status Segment::new_iterator(SchemaSPtr schema, const StorageReadOptions& read_o auto pruned_predicates = read_options.column_predicates; auto pruned = false; for (auto& it : _column_readers) { - if (it.second->prune_predicates_by_zone_map(pruned_predicates, it.first)) { + const auto uid = it.first; + const auto column_id = read_options.tablet_schema->field_index(uid); + if (it.second->prune_predicates_by_zone_map(pruned_predicates, column_id)) { pruned = true; } }