This is an automated email from the ASF dual-hosted git repository. dataroaring pushed a commit to branch branch-4.0-preview in repository https://gitbox.apache.org/repos/asf/doris.git
commit 23a1556270108e4bbd2709feb4baace1e2160045 Author: Mryange <59914473+mrya...@users.noreply.github.com> AuthorDate: Thu Apr 25 14:06:15 2024 +0800 [fix](scan) fix ignore expr exec when _non_predicate_columns is empty (#33934) fix ignore expr exec when _non_predicate_columns is empty --- be/src/olap/rowset/segment_v2/segment_iterator.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/be/src/olap/rowset/segment_v2/segment_iterator.cpp b/be/src/olap/rowset/segment_v2/segment_iterator.cpp index a1b8cf35b35..506d7d0b2ad 100644 --- a/be/src/olap/rowset/segment_v2/segment_iterator.cpp +++ b/be/src/olap/rowset/segment_v2/segment_iterator.cpp @@ -1957,14 +1957,16 @@ void SegmentIterator::_replace_version_col(size_t num_rows) { uint16_t SegmentIterator::_evaluate_vectorization_predicate(uint16_t* sel_rowid_idx, uint16_t selected_size) { SCOPED_RAW_TIMER(&_opts.stats->vec_cond_ns); - if (_is_need_vec_eval) { - _is_need_vec_eval = false; - for (const auto& pred : _pre_eval_block_predicate) { - _is_need_vec_eval |= (!pred->always_true()); + bool all_pred_always_true = true; + for (const auto& pred : _pre_eval_block_predicate) { + if (!pred->always_true()) { + all_pred_always_true = false; + break; } } - if (!_is_need_vec_eval) { - for (uint32_t i = 0; i < selected_size; ++i) { + //If all predicates are always_true, then return directly. + if (all_pred_always_true || !_is_need_vec_eval) { + for (uint16_t i = 0; i < selected_size; ++i) { sel_rowid_idx[i] = i; } return selected_size; @@ -2248,6 +2250,9 @@ Status SegmentIterator::_next_batch_internal(vectorized::Block* block) { } if (!_is_need_vec_eval && !_is_need_short_eval && !_is_need_expr_eval) { + if (_non_predicate_columns.empty()) { + return Status::InternalError("_non_predicate_columns is empty"); + } RETURN_IF_ERROR(_convert_to_expected_type(_first_read_column_ids)); RETURN_IF_ERROR(_convert_to_expected_type(_non_predicate_columns)); _output_non_pred_columns(block); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org