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 299d61bd93d add defensive code in runtime predicate to avoid crash due 
to column not in tablet schema #26990 (#26991)
299d61bd93d is described below

commit 299d61bd93d20bef3f978af0e617e030ac1fe413
Author: Kang <kxiao.ti...@gmail.com>
AuthorDate: Tue Nov 14 09:56:08 2023 -0600

    add defensive code in runtime predicate to avoid crash due to column not in 
tablet schema #26990 (#26991)
---
 be/src/runtime/runtime_predicate.cpp | 9 ++++-----
 be/src/runtime/runtime_predicate.h   | 4 ++--
 2 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/be/src/runtime/runtime_predicate.cpp 
b/be/src/runtime/runtime_predicate.cpp
index f053b842c7b..d3deb748cae 100644
--- a/be/src/runtime/runtime_predicate.cpp
+++ b/be/src/runtime/runtime_predicate.cpp
@@ -132,11 +132,6 @@ Status RuntimePredicate::update(const Field& value, const 
String& col_name, bool
 
     std::unique_lock<std::shared_mutex> wlock(_rwlock);
 
-    // TODO why null
-    if (!_tablet_schema) {
-        return Status::OK();
-    }
-
     bool updated = false;
 
     if (UNLIKELY(_orderby_extrem.is_null())) {
@@ -158,6 +153,10 @@ Status RuntimePredicate::update(const Field& value, const 
String& col_name, bool
         return Status::OK();
     }
 
+    // TODO defensive code
+    if (!_tablet_schema || !_tablet_schema->have_column(col_name)) {
+        return Status::OK();
+    }
     // update _predictate
     int32_t col_unique_id = _tablet_schema->column(col_name).unique_id();
     const TabletColumn& column = _tablet_schema->column_by_uid(col_unique_id);
diff --git a/be/src/runtime/runtime_predicate.h 
b/be/src/runtime/runtime_predicate.h
index 9dd48279acb..fe8fe6add83 100644
--- a/be/src/runtime/runtime_predicate.h
+++ b/be/src/runtime/runtime_predicate.h
@@ -66,8 +66,8 @@ private:
     mutable std::shared_mutex _rwlock;
     Field _orderby_extrem {Field::Types::Null};
     std::shared_ptr<ColumnPredicate> _predictate {nullptr};
-    TabletSchemaSPtr _tablet_schema;
-    std::unique_ptr<Arena> _predicate_arena;
+    TabletSchemaSPtr _tablet_schema {nullptr};
+    std::unique_ptr<Arena> _predicate_arena {nullptr};
     std::function<std::string(const Field&)> _get_value_fn;
     bool _nulls_first = true;
     bool _inited = false;


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to