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 64dc3b360f [Bug](function) fix dcheck fail on close vexpr ctx (#11908)
64dc3b360f is described below

commit 64dc3b360f98ec2d7d7298419819bae607c5ddae
Author: Pxl <[email protected]>
AuthorDate: Fri Aug 19 19:11:10 2022 +0800

    [Bug](function) fix dcheck fail on close vexpr ctx (#11908)
---
 be/src/exec/exec_node.cpp                |  7 +++++--
 be/src/exec/scan_node.cpp                |  1 +
 be/src/vec/exec/join/vhash_join_node.cpp |  5 +++--
 be/src/vec/exec/ves_http_scan_node.cpp   | 10 ++--------
 be/src/vec/exec/ves_http_scan_node.h     |  1 +
 be/src/vec/exprs/vexpr_context.cpp       |  1 -
 6 files changed, 12 insertions(+), 13 deletions(-)

diff --git a/be/src/exec/exec_node.cpp b/be/src/exec/exec_node.cpp
index f581a11c40..5c4981c739 100644
--- a/be/src/exec/exec_node.cpp
+++ b/be/src/exec/exec_node.cpp
@@ -272,7 +272,9 @@ Status ExecNode::close(RuntimeState* state) {
         }
     }
 
-    if (_vconjunct_ctx_ptr) (*_vconjunct_ctx_ptr)->close(state);
+    if (_vconjunct_ctx_ptr) {
+        (*_vconjunct_ctx_ptr)->close(state);
+    }
     if (typeid(*this) != typeid(doris::vectorized::VOlapScanNode)) {
         Expr::close(_conjunct_ctxs, state);
     }
@@ -428,8 +430,9 @@ Status ExecNode::create_node(RuntimeState* state, 
ObjectPool* pool, const TPlanN
     case TPlanNodeType::ODBC_SCAN_NODE:
         if (state->enable_vectorized_exec()) {
             *node = pool->add(new vectorized::VOdbcScanNode(pool, tnode, 
descs));
-        } else
+        } else {
             *node = pool->add(new OdbcScanNode(pool, tnode, descs));
+        }
         return Status::OK();
 
     case TPlanNodeType::ES_HTTP_SCAN_NODE:
diff --git a/be/src/exec/scan_node.cpp b/be/src/exec/scan_node.cpp
index 63197327a4..2b8bb6b5cf 100644
--- a/be/src/exec/scan_node.cpp
+++ b/be/src/exec/scan_node.cpp
@@ -62,6 +62,7 @@ void ScanNode::_peel_pushed_vconjunct(RuntimeState* state,
         vectorized::VExpr* new_conjunct_expr_root = 
vectorized::VectorizedUtils::dfs_peel_conjunct(
                 state, *_vconjunct_ctx_ptr, conjunct_expr_root, leaf_index, 
checker);
         if (new_conjunct_expr_root == nullptr) {
+            (*_vconjunct_ctx_ptr)->close(state);
             _vconjunct_ctx_ptr.reset(nullptr);
         } else {
             (*_vconjunct_ctx_ptr)->set_root(new_conjunct_expr_root);
diff --git a/be/src/vec/exec/join/vhash_join_node.cpp 
b/be/src/vec/exec/join/vhash_join_node.cpp
index 4fc36fd5ba..d27c0aea06 100644
--- a/be/src/vec/exec/join/vhash_join_node.cpp
+++ b/be/src/vec/exec/join/vhash_join_node.cpp
@@ -22,7 +22,6 @@
 #include "runtime/memory/mem_tracker.h"
 #include "runtime/runtime_filter_mgr.h"
 #include "util/defer_op.h"
-#include "vec/core/materialize_block.h"
 #include "vec/data_types/data_type_number.h"
 #include "vec/exprs/vexpr.h"
 #include "vec/exprs/vexpr_context.h"
@@ -1475,7 +1474,9 @@ Status HashJoinNode::_build_output_block(Block* 
origin_block, Block* output_bloc
             }
         }
 
-        if (!is_mem_reuse) output_block->swap(mutable_block.to_block());
+        if (!is_mem_reuse) {
+            output_block->swap(mutable_block.to_block());
+        }
         DCHECK(output_block->rows() == rows);
     }
 
diff --git a/be/src/vec/exec/ves_http_scan_node.cpp 
b/be/src/vec/exec/ves_http_scan_node.cpp
index b05ca0d8e7..94b2c548c5 100644
--- a/be/src/vec/exec/ves_http_scan_node.cpp
+++ b/be/src/vec/exec/ves_http_scan_node.cpp
@@ -24,12 +24,8 @@
 #include "exprs/expr_context.h"
 #include "gen_cpp/PlanNodes_types.h"
 #include "runtime/runtime_state.h"
-#include "runtime/string_value.h"
-#include "runtime/tuple.h"
 #include "runtime/tuple_row.h"
 #include "util/runtime_profile.h"
-#include "util/types.h"
-#include "vec/exprs/vexpr_context.h"
 
 namespace doris::vectorized {
 
@@ -352,16 +348,14 @@ Status VEsHttpScanNode::close(RuntimeState* state) {
         _scanner_threads[i].join();
     }
 
-    _batch_queue.clear();
-
     //don't need to hold lock to update_status in close function
     //collect scanners status
     update_status(collect_scanners_status());
 
-    //close exec node
-    update_status(ExecNode::close(state));
+    _batch_queue.clear();
     _block_queue.clear();
 
+    RETURN_IF_ERROR(ScanNode::close(state));
     return _process_status;
 }
 
diff --git a/be/src/vec/exec/ves_http_scan_node.h 
b/be/src/vec/exec/ves_http_scan_node.h
index 92294d0e17..cd42a573e4 100644
--- a/be/src/vec/exec/ves_http_scan_node.h
+++ b/be/src/vec/exec/ves_http_scan_node.h
@@ -23,6 +23,7 @@
 #include "exec/scan_node.h"
 #include "runtime/descriptors.h"
 #include "vec/exec/ves_http_scanner.h"
+
 namespace doris {
 
 class RuntimeState;
diff --git a/be/src/vec/exprs/vexpr_context.cpp 
b/be/src/vec/exprs/vexpr_context.cpp
index da4a3a96eb..d6a64c9d9b 100644
--- a/be/src/vec/exprs/vexpr_context.cpp
+++ b/be/src/vec/exprs/vexpr_context.cpp
@@ -17,7 +17,6 @@
 
 #include "vec/exprs/vexpr_context.h"
 
-#include "runtime/thread_context.h"
 #include "udf/udf_internal.h"
 #include "vec/exprs/vexpr.h"
 


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

Reply via email to