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]