This is an automated email from the ASF dual-hosted git repository.
xuyang pushed a commit to branch branch-1.2-lts
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-1.2-lts by this push:
new a996eea1e08 [chore](branch-1.2) fix undefined behavior detect by UBSAN
(#29190)
a996eea1e08 is described below
commit a996eea1e0840ff00158f4c8d62870b980a2a179
Author: xy720 <[email protected]>
AuthorDate: Fri Dec 29 10:52:19 2023 +0800
[chore](branch-1.2) fix undefined behavior detect by UBSAN (#29190)
1、fix address misaligned in column_decimal.cpp
runtime error: load of misaligned address 0x55f303445c40 for type 'int64_t'
(aka 'long'), which requires 8 bytes alignment
2、clang format some code
---
be/src/vec/columns/column_decimal.cpp | 2 +-
be/src/vec/exec/vunion_node.cpp | 3 ---
be/src/vec/functions/function_case.h | 3 ++-
3 files changed, 3 insertions(+), 5 deletions(-)
diff --git a/be/src/vec/columns/column_decimal.cpp
b/be/src/vec/columns/column_decimal.cpp
index 4faa3fa4908..066e4a18735 100644
--- a/be/src/vec/columns/column_decimal.cpp
+++ b/be/src/vec/columns/column_decimal.cpp
@@ -279,7 +279,7 @@ void ColumnDecimal<T>::insert_many_fix_len_data(const char*
data_ptr, size_t num
DecimalV2Value* target = (DecimalV2Value*)(data.data() + old_size);
for (int i = 0; i < num; i++) {
const char* cur_ptr = data_ptr + sizeof(decimal12_t) * i;
- int64_t int_value = *(int64_t*)(cur_ptr);
+ int64_t int_value = unaligned_load<int64_t>(cur_ptr);
int32_t frac_value = *(int32_t*)(cur_ptr + sizeof(int64_t));
target[i].from_olap_decimal(int_value, frac_value);
}
diff --git a/be/src/vec/exec/vunion_node.cpp b/be/src/vec/exec/vunion_node.cpp
index 199782b577b..1e6bd4d5761 100644
--- a/be/src/vec/exec/vunion_node.cpp
+++ b/be/src/vec/exec/vunion_node.cpp
@@ -171,10 +171,8 @@ Status VUnionNode::get_next_materialized(RuntimeState*
state, Block* block) {
}
}
-
block->swap(mblock.to_block());
-
DCHECK_LE(_child_idx, _children.size());
return Status::OK();
}
@@ -204,7 +202,6 @@ Status VUnionNode::get_next_const(RuntimeState* state,
Block* block) {
}
}
-
block->swap(mblock.to_block());
// some insert query like "insert into string_test select 1, repeat('a',
1024 * 1024);"
diff --git a/be/src/vec/functions/function_case.h
b/be/src/vec/functions/function_case.h
index 487e1c99503..8a3b89e2f62 100644
--- a/be/src/vec/functions/function_case.h
+++ b/be/src/vec/functions/function_case.h
@@ -253,7 +253,8 @@ public:
}
template <typename IndexType>
- void update_result_normal(MutableColumnPtr& result_column_ptr, const
IndexType* __restrict then_idx,
+ void update_result_normal(MutableColumnPtr& result_column_ptr,
+ const IndexType* __restrict then_idx,
CaseWhenColumnHolder& column_holder) {
for (int row_idx = 0; row_idx < column_holder.rows_count; row_idx++) {
if constexpr (!has_else) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]