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 656b01d191 [fix](agg) Avoid reusing a non-nullable column that has
been converted to nullable within a block (#17944)
656b01d191 is described below
commit 656b01d19186c45c73af8f288dd466ec24def364
Author: Jerry Hu <[email protected]>
AuthorDate: Tue Mar 21 09:00:06 2023 +0800
[fix](agg) Avoid reusing a non-nullable column that has been converted to
nullable within a block (#17944)
0# doris::signal::(anonymous namespace)::FailureSignalHandler(int,
siginfo_t*, void*) at /root/doris/be/src/common/signal_handler.h:420
1# os::Linux::chained_handler(int, siginfo*, void*) in
/usr/local/java/jdk1.8.0_202/jre/lib/amd64/server/libjvm.so
2# JVM_handle_linux_signal in
/usr/local/java/jdk1.8.0_202/jre/lib/amd64/server/libjvm.so
3# signalHandler(int, siginfo*, void*) in
/usr/local/java/jdk1.8.0_202/jre/lib/amd64/server/libjvm.so
4# 0x00007F4051C9F400 in /lib64/libc.so.6
5# memcpy at
/root/doris/be/src/glibc-compatibility/memcpy/memcpy_x86_64.cpp:219
6# doris::vectorized::ColumnString::deserialize_and_insert_from_arena(char
const*) at /root/doris/be/src/vec/columns/column_string.cpp:226
7#
doris::vectorized::ColumnString::deserialize_vec_with_null_map(std::vector<StringRef,
std::allocator<StringRef> >&, unsigned long, unsigned char const*) at
/root/doris/be/src/vec/columns/column_string.cpp:283
8# void
doris::vectorized::AggregationNode::_serialize_with_serialized_key_result(doris::RuntimeState*,
doris::vectorized::Block*,
bool*)::{lambda(auto:1&&)#1}::operator()<doris::vectorized::AggregationMethodSerialized<PHHashMap<StringRef,
char*, DefaultHash<StringRef, void>, false>
>&>(doris::vectorized::AggregationMethodSerialized<PHHashMap<StringRef, char*,
DefaultHash<StringRef, void>, false> >&) const at
/root/doris/be/src/vec/exec/vaggregation_node.cpp:1232
9#
doris::vectorized::AggregationNode::_serialize_with_serialized_key_result(doris::RuntimeState*,
doris::vectorized::Block*, bool*) at
/root/doris/be/src/vec/exec/vaggregation_node.cpp:1294
10# std::_Function_handler<doris::Status (doris::RuntimeState*,
doris::vectorized::Block*, bool*), std::_Bind_result<doris::Status,
doris::Status
(doris::vectorized::AggregationNode::*(doris::vectorized::AggregationNode*,
std::_Placeholder<1>, std::_Placeholder<2>,
std::_Placeholder<3>))(doris::RuntimeState*, doris::vectorized::Block*, bool*)>
>::_M_invoke(std::_Any_data const&, doris::RuntimeState*&&,
doris::vectorized::Block*&&, bool*&&) at
/var/local/ldb-toolchain/include/c++/11/bi [...]
11# doris::vectorized::AggregationNode::get_next(doris::RuntimeState*,
doris::vectorized::Block*, bool*) at
/root/doris/be/src/vec/exec/vaggregation_node.cpp:508
12# doris::ExecNode::get_next_after_projects(doris::RuntimeState*,
doris::vectorized::Block*, bool*) at /root/doris/be/src/exec/exec_node.cpp:852
13#
doris::PlanFragmentExecutor::get_vectorized_internal(doris::vectorized::Block**)
at /root/doris/be/src/runtime/plan_fragment_executor.cpp:352
14# doris::PlanFragmentExecutor::open_vectorized_internal() at
/root/doris/be/src/runtime/plan_fragment_executor.cpp:300
15# doris::PlanFragmentExecutor::open() at
/root/doris/be/src/runtime/plan_fragment_executor.cpp:253
16# doris::FragmentExecState::execute() at
/root/doris/be/src/runtime/fragment_mgr.cpp:251
17#
doris::FragmentMgr::_exec_actual(std::shared_ptr<doris::FragmentExecState>,
std::function<void (doris::PlanFragmentExecutor*)>) at
/root/doris/be/src/runtime/fragment_mgr.cpp:498
18# std::_Function_handler<void (),
doris::FragmentMgr::exec_plan_fragment(doris::TExecPlanFragmentParams const&,
std::function<void
(doris::PlanFragmentExecutor*)>)::{lambda()#1}>::_M_invoke(std::_Any_data
const&) at /var/local/ldb-toolchain/include/c++/11/bits/std_function.h:291
19# doris::ThreadPool::dispatch_thread() at
/root/doris/be/src/util/threadpool.cpp:542
20# doris::Thread::supervise_thread(void*) at
/root/doris/be/src/util/thread.cpp:455
21# start_thread in /lib64/libpthread.so.0
22# clone in /lib64/libc.so.6
---
be/src/vec/exec/vaggregation_node.cpp | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/be/src/vec/exec/vaggregation_node.cpp
b/be/src/vec/exec/vaggregation_node.cpp
index c2b016d554..880b928b50 100644
--- a/be/src/vec/exec/vaggregation_node.cpp
+++ b/be/src/vec/exec/vaggregation_node.cpp
@@ -1030,8 +1030,10 @@ Status
AggregationNode::_pre_agg_with_serialized_key(doris::vectorized::Block* i
SCOPED_TIMER(_streaming_agg_timer);
ret_flag = true;
- // will serialize value data to string column
- bool mem_reuse = out_block->mem_reuse();
+ // will serialize value data to string column.
+ // non-nullable column(id in `_make_nullable_keys`)
+ // will be converted to nullable.
+ bool mem_reuse = _make_nullable_keys.empty() &&
out_block->mem_reuse();
std::vector<DataTypePtr> data_types;
MutableColumns value_columns;
@@ -1136,7 +1138,8 @@ Status
AggregationNode::_execute_with_serialized_key(Block* block) {
Status AggregationNode::_get_with_serialized_key_result(RuntimeState* state,
Block* block,
bool* eos) {
- bool mem_reuse = block->mem_reuse();
+ // non-nullable column(id in `_make_nullable_keys`) will be converted to
nullable.
+ bool mem_reuse = _make_nullable_keys.empty() && block->mem_reuse();
auto column_withschema =
VectorizedUtils::create_columns_with_type_and_name(_row_descriptor);
int key_size = _probe_expr_ctxs.size();
@@ -1241,7 +1244,8 @@ Status
AggregationNode::_serialize_with_serialized_key_result(RuntimeState* stat
MutableColumns value_columns(agg_size);
DataTypes value_data_types(agg_size);
- bool mem_reuse = block->mem_reuse();
+ // non-nullable column(id in `_make_nullable_keys`) will be converted to
nullable.
+ bool mem_reuse = _make_nullable_keys.empty() && block->mem_reuse();
MutableColumns key_columns;
for (int i = 0; i < key_size; ++i) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]