This is an automated email from the ASF dual-hosted git repository.

yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new d56d88d391 [improvement]No need to memset flags for vectorization 
predicates (#10564)
d56d88d391 is described below

commit d56d88d3919c4dcb426451a114494284e18f7c11
Author: Jerry Hu <[email protected]>
AuthorDate: Mon Jul 4 10:23:08 2022 +0800

    [improvement]No need to memset flags for vectorization predicates (#10564)
---
 be/src/olap/block_column_predicate.cpp             | 14 +++++++++-----
 be/src/olap/rowset/segment_v2/segment_iterator.cpp |  1 -
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/be/src/olap/block_column_predicate.cpp 
b/be/src/olap/block_column_predicate.cpp
index 251448ca15..9c90d3887d 100644
--- a/be/src/olap/block_column_predicate.cpp
+++ b/be/src/olap/block_column_predicate.cpp
@@ -242,12 +242,16 @@ void 
AndBlockColumnPredicate::evaluate_vec(vectorized::MutableColumns& block, ui
         _block_column_predicate_vec[0]->evaluate_vec(block, size, flags);
     } else {
         bool new_flags[size];
+        bool initialized = false;
         for (auto block_column_predicate : _block_column_predicate_vec) {
-            memset(new_flags, true, size);
-            block_column_predicate->evaluate_vec(block, size, new_flags);
-
-            for (uint16_t j = 0; j < size; j++) {
-                flags[j] &= new_flags[j];
+            if (initialized) {
+                block_column_predicate->evaluate_vec(block, size, new_flags);
+                for (uint16_t j = 0; j < size; j++) {
+                    flags[j] &= new_flags[j];
+                }
+            } else {
+                block_column_predicate->evaluate_vec(block, size, flags);
+                initialized = true;
             }
         }
     }
diff --git a/be/src/olap/rowset/segment_v2/segment_iterator.cpp 
b/be/src/olap/rowset/segment_v2/segment_iterator.cpp
index 1bacc3cecf..e685f26326 100644
--- a/be/src/olap/rowset/segment_v2/segment_iterator.cpp
+++ b/be/src/olap/rowset/segment_v2/segment_iterator.cpp
@@ -878,7 +878,6 @@ uint16_t 
SegmentIterator::_evaluate_vectorization_predicate(uint16_t* sel_rowid_
 
     uint16_t original_size = selected_size;
     bool ret_flags[selected_size];
-    memset(ret_flags, 1, selected_size);
     _pre_eval_block_predicate->evaluate_vec(_current_return_columns, 
selected_size, ret_flags);
 
     uint16_t new_size = 0;


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to