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

morningman 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 d06edd4b8b [minor](runtime-filter) add DCHECK for runtimefilter bug 
(#11996)
d06edd4b8b is described below

commit d06edd4b8b19b19ed7bca70afc5ce5cab4bd5009
Author: Mingyu Chen <[email protected]>
AuthorDate: Wed Aug 24 07:53:30 2022 +0800

    [minor](runtime-filter) add DCHECK for runtimefilter bug (#11996)
    
    Not a fix, just add debug info to try find root cause of #11995
---
 be/src/vec/exec/volap_scan_node.cpp | 3 +++
 be/src/vec/exprs/vexpr.cpp          | 7 +++++++
 be/src/vec/exprs/vexpr.h            | 3 +++
 be/src/vec/exprs/vexpr_context.cpp  | 6 ++++++
 be/src/vec/exprs/vexpr_context.h    | 5 +++++
 5 files changed, 24 insertions(+)

diff --git a/be/src/vec/exec/volap_scan_node.cpp 
b/be/src/vec/exec/volap_scan_node.cpp
index f0c667f8f4..53e8baee92 100644
--- a/be/src/vec/exec/volap_scan_node.cpp
+++ b/be/src/vec/exec/volap_scan_node.cpp
@@ -285,6 +285,7 @@ void VOlapScanNode::transfer_thread(RuntimeState* state) {
                 _status = status;
                 break;
             }
+            (*(scanner->vconjunct_ctx_ptr()))->debug_valid();
         }
     }
 
@@ -449,6 +450,7 @@ void VOlapScanNode::scanner_thread(VOlapScanner* scanner) {
             std::shared_lock<std::shared_mutex> l(_rf_lock);
             WARN_IF_ERROR((*_vconjunct_ctx_ptr)->clone(state, 
scanner->vconjunct_ctx_ptr()),
                           "Something wrong for runtime filters: ");
+            (*(scanner->vconjunct_ctx_ptr()))->debug_valid();
         }
     }
 
@@ -1830,6 +1832,7 @@ Status 
VOlapScanNode::_append_rf_into_conjuncts(RuntimeState* state, std::vector
         }
         _vconjunct_ctx_ptr.reset(new doris::vectorized::VExprContext*);
         *(_vconjunct_ctx_ptr.get()) = new_vconjunct_ctx_ptr;
+        new_vconjunct_ctx_ptr->debug_valid();
     }
     return Status::OK();
 }
diff --git a/be/src/vec/exprs/vexpr.cpp b/be/src/vec/exprs/vexpr.cpp
index d493a87a65..183406926f 100644
--- a/be/src/vec/exprs/vexpr.cpp
+++ b/be/src/vec/exprs/vexpr.cpp
@@ -363,4 +363,11 @@ void VExpr::close_function_context(VExprContext* context, 
FunctionContext::Funct
     }
 }
 
+void VExpr::debug_valid(VExprContext* context) {
+    DCHECK_LT(_fn_context_index, context->get_fn_context_size());
+    for (int i = 0; i < _children.size(); ++i) {
+        _children[i]->debug_valid(context);
+    }
+}
+
 } // namespace doris::vectorized
diff --git a/be/src/vec/exprs/vexpr.h b/be/src/vec/exprs/vexpr.h
index 9d2d4ce64b..b19a415368 100644
--- a/be/src/vec/exprs/vexpr.h
+++ b/be/src/vec/exprs/vexpr.h
@@ -157,6 +157,9 @@ public:
         return nullptr;
     }
 
+    // Just for debug. Should be removed after fixing #11995
+    void debug_valid(VExprContext* context);
+
 protected:
     /// Simple debug string that provides no expr subclass-specific information
     std::string debug_string(const std::string& expr_name) const {
diff --git a/be/src/vec/exprs/vexpr_context.cpp 
b/be/src/vec/exprs/vexpr_context.cpp
index d6a64c9d9b..da0deda56d 100644
--- a/be/src/vec/exprs/vexpr_context.cpp
+++ b/be/src/vec/exprs/vexpr_context.cpp
@@ -150,4 +150,10 @@ Block VExprContext::get_output_block_after_execute_exprs(
     return {result_columns};
 }
 
+void VExprContext::debug_valid() {
+#ifndef NDEBUG
+    _root->debug_valid(this);
+#endif
+}
+
 } // namespace doris::vectorized
diff --git a/be/src/vec/exprs/vexpr_context.h b/be/src/vec/exprs/vexpr_context.h
index b454833ed3..53cfbdb389 100644
--- a/be/src/vec/exprs/vexpr_context.h
+++ b/be/src/vec/exprs/vexpr_context.h
@@ -76,6 +76,11 @@ public:
         _stale = true;
     }
 
+    int get_fn_context_size() const { return _fn_contexts.size(); }
+
+    // Just for debug. Should be removed after fixing #11995
+    void debug_valid();
+
 private:
     friend class VExpr;
 


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

Reply via email to