This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push:
new 21307dccb2e [fix](function) auto_partition_name make BE crashed while
use legacy planner (#55464)
21307dccb2e is described below
commit 21307dccb2eda5faf0e93103afbc34c635cf3b9d
Author: camby <[email protected]>
AuthorDate: Mon Sep 15 16:41:04 2025 +0800
[fix](function) auto_partition_name make BE crashed while use legacy
planner (#55464)
### What problem does this PR solve?
**Problem:**
Incorrect input arguments for auto_partition_name cause a fallback to
the legacy planner in branch 2.1. However, since this function is
handled by the FE legacy code, there is no parameter checking logic.
(See: https://github.com/apache/doris/pull/38853)
Furthermore, there is a lack of sufficient checks on the BE side, which
can lead to crashes. Such as:
```
select auto_partition_name("xxx");
select auto_partition_name("xxx", "sss");
```
**How to Fix:**
So here we simply remove function `auto_partition_name` in legacy
planner
**The stack is like:**
```
*** Query id: 24c69ac956394483-b2a4d08963d06593 ***
*** is nereids: 0 ***
*** tablet id: 0 ***
*** Aborted at 1756449846 (unix time) try "date -d @1756449846" if you are
using GNU date ***
*** Current BE git commitID: 2506121 ***
*** SIGSEGV address not mapped to object (@0x0) received by PID 1010328
(TID 1011344 OR 0x7f75ba07a6c0) from PID 0; stack trace: ***
0# doris::signal::(anonymous namespace)::FailureSignalHandler(int,
siginfo_t*, void*) in /usr/local/service/doris/lib/be/doris_be
1# os::Linux::chained_handler(int, siginfo*, void*) in
/usr/local/jdk/jre/lib/amd64/server/libjvm.so
2# JVM_handle_linux_signal in /usr/local/jdk/jre/lib/amd64/server/libjvm.so
3# signalHandler(int, siginfo*, void*) in
/usr/local/jdk/jre/lib/amd64/server/libjvm.so
4# 0x00007F77D0EA1AD0 in /lib64/libc.so.6
5#
doris::vectorized::PreparedFunctionImpl::default_implementation_for_constant_arguments(doris::FunctionContext*,
doris::vectorized::Block&, std::vector<unsigned long, std::allocator<unsigned
long> > const&, unsigned long, unsigned long, bool, bool*) const in
/usr/local/service/doris/lib/be/doris_be
6#
doris::vectorized::PreparedFunctionImpl::execute_without_low_cardinality_columns(doris::FunctionContext*,
doris::vectorized::Block&, std::vector<unsigned long, std::allocator<unsigned
long> > const&, unsigned long, unsigned long, bool) const in
/usr/local/service/doris/lib/be/doris_be
7#
doris::vectorized::PreparedFunctionImpl::execute(doris::FunctionContext*,
doris::vectorized::Block&, std::vector<unsigned long, std::allocator<unsigned
long> > const&, unsigned long, unsigned long, bool) const in
/usr/local/service/doris/lib/be/doris_be
8# doris::vectorized::IFunctionBase::execute(doris::FunctionContext*,
doris::vectorized::Block&, std::vector<unsigned long, std::allocator<unsigned
long> > const&, unsigned long, unsigned long, bool) const in
/usr/local/service/doris/lib/be/doris_be
9#
doris::vectorized::VectorizedFnCall::_do_execute(doris::vectorized::VExprContext*,
doris::vectorized::Block*, int*, std::vector<unsigned long,
std::allocator<unsigned long> >&) in /usr/local/service/doris/lib/be/doris_be
10#
doris::vectorized::VectorizedFnCall::execute(doris::vectorized::VExprContext*,
doris::vectorized::Block*, int*) in /usr/local/service/doris/lib/be/doris_be
11#
doris::vectorized::VExpr::get_const_col(doris::vectorized::VExprContext*,
std::shared_ptr<doris::ColumnPtrWrapper>*) in
/usr/local/service/doris/lib/be/doris_be
12# doris::vectorized::VectorizedFnCall::open(doris::RuntimeState*,
doris::vectorized::VExprContext*, doris::FunctionContext::FunctionStateScope)
in /usr/local/service/doris/lib/be/doris_be
13# doris::vectorized::VExprContext::open(doris::RuntimeState*) in
/usr/local/service/doris/lib/be/doris_be
14#
doris::vectorized::VExpr::open(std::vector<std::shared_ptr<doris::vectorized::VExprContext>,
std::allocator<std::shared_ptr<doris::vectorized::VExprContext> > > const&,
doris::RuntimeState*) in /usr/local/service/doris/lib/be/doris_be
15# doris::pipeline::UnionSourceOperatorX::open(doris::RuntimeState*) in
/usr/local/service/doris/lib/be/doris_be
16# doris::pipeline::Pipeline::prepare(doris::RuntimeState*) in
/usr/local/service/doris/lib/be/doris_be
17#
doris::pipeline::PipelineXFragmentContext::prepare(doris::TPipelineFragmentParams
const&, doris::ThreadPool*) in /usr/local/service/doris/lib/be/doris_be
18# doris::FragmentMgr::exec_plan_fragment(doris::TPipelineFragmentParams
const&, doris::QuerySource, std::function<void (doris::RuntimeState*,
doris::Status*)> const&) in /usr/local/service/doris/lib/be/doris_be
19# doris::FragmentMgr::exec_plan_fragment(doris::TPipelineFragmentParams
const&, doris::QuerySource) in /usr/local/service/doris/lib/be/doris_be
```
### Release note
None
### Check List (For Author)
- Test <!-- At least one of them must be included. -->
- [ ] Regression test
- [ ] Unit Test
- [ ] Manual test (add detailed scripts or steps below)
- [ ] No need to test or manual test. Explain why:
- [ ] This is a refactor/code format and no logic has been changed.
- [ ] Previous test can cover this change.
- [ ] No code files have been changed.
- [ ] Other reason <!-- Add your reason? -->
- Behavior changed:
- [ ] No.
- [ ] Yes. <!-- Explain the behavior change -->
- Does this need documentation?
- [ ] No.
- [ ] Yes. <!-- Add document PR link here. eg:
https://github.com/apache/doris-website/pull/1214 -->
### Check List (For Reviewer who merge this PR)
- [ ] Confirm the release note
- [ ] Confirm test cases
- [ ] Confirm document
- [ ] Add branch pick label <!-- Add branch pick label that this PR
should merge into -->
---
gensrc/script/doris_builtins_functions.py | 2 --
1 file changed, 2 deletions(-)
diff --git a/gensrc/script/doris_builtins_functions.py
b/gensrc/script/doris_builtins_functions.py
index e0d79f25dd3..73fb8e243f3 100644
--- a/gensrc/script/doris_builtins_functions.py
+++ b/gensrc/script/doris_builtins_functions.py
@@ -1623,7 +1623,6 @@ visible_functions = {
[['lower', 'lcase'], 'VARCHAR', ['VARCHAR'], ''],
[['upper', 'ucase'], 'VARCHAR', ['VARCHAR'], ''],
[['quote'], 'VARCHAR', ['VARCHAR'], ''],
- [['auto_partition_name'], 'VARCHAR', ['VARCHAR', '...'], ''],
[['initcap'], 'VARCHAR', ['VARCHAR'], ''],
[['trim'], 'VARCHAR', ['VARCHAR','VARCHAR'], ''],
[['trim'], 'VARCHAR', ['VARCHAR'], ''],
@@ -1695,7 +1694,6 @@ visible_functions = {
[['ltrim'], 'STRING', ['STRING','STRING'], ''],
[['rtrim'], 'STRING', ['STRING'], ''],
[['rtrim'], 'STRING', ['STRING','STRING'], ''],
- [['auto_partition_name'], 'STRING', ['STRING', '...'], ''],
[['ascii'], 'INT', ['STRING'], ''],
[['instr'], 'INT', ['STRING', 'STRING'], ''],
[['locate'], 'INT', ['STRING', 'STRING'], ''],
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]