You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2022/12/19 04:29:33 UTC
[doris] 02/02: [Bug](function) fix overflow on concat_ws (#15043)
This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch branch-1.2-lts
in repository https://gitbox.apache.org/repos/asf/doris.git
commit ae084be6495969cc4fc092027befc1d1cb99270e
Author: Pxl <px...@qq.com>
AuthorDate: Thu Dec 15 19:44:27 2022 +0800
[Bug](function) fix overflow on concat_ws (#15043)
fix overflow on concat_ws
---
be/src/vec/functions/function_timestamp.cpp | 13 +++++--------
be/src/vec/functions/function_utility.cpp | 4 +++-
2 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/be/src/vec/functions/function_timestamp.cpp b/be/src/vec/functions/function_timestamp.cpp
index f941408dc8..a467d7da8d 100644
--- a/be/src/vec/functions/function_timestamp.cpp
+++ b/be/src/vec/functions/function_timestamp.cpp
@@ -17,6 +17,7 @@
#include "runtime/runtime_state.h"
#include "udf/udf_internal.h"
+#include "vec/columns/column_const.h"
#include "vec/columns/column_nullable.h"
#include "vec/columns/column_string.h"
#include "vec/columns/column_vector.h"
@@ -397,14 +398,10 @@ struct UnixTimeStampImpl {
const ColumnNumbers& arguments, size_t result,
size_t input_rows_count) {
auto col_result = ColumnVector<Int32>::create();
- col_result->resize(input_rows_count);
- // TODO: use a const column to store this value
- auto& col_result_data = col_result->get_data();
- auto res_value = context->impl()->state()->timestamp_ms() / 1000;
- for (int i = 0; i < input_rows_count; i++) {
- col_result_data[i] = res_value;
- }
- block.replace_by_position(result, std::move(col_result));
+ col_result->resize(1);
+ col_result->get_data()[0] = context->impl()->state()->timestamp_ms() / 1000;
+ auto col_const = ColumnConst::create(std::move(col_result), input_rows_count);
+ block.replace_by_position(result, std::move(col_const));
return Status::OK();
}
};
diff --git a/be/src/vec/functions/function_utility.cpp b/be/src/vec/functions/function_utility.cpp
index a42918ed08..9d529c9d01 100644
--- a/be/src/vec/functions/function_utility.cpp
+++ b/be/src/vec/functions/function_utility.cpp
@@ -16,6 +16,7 @@
// under the License.
#include <thread>
+#include "vec/columns/column_const.h"
#include "vec/data_types/data_type_number.h"
#include "vec/data_types/data_type_string.h"
#include "vec/functions/simple_function_factory.h"
@@ -103,7 +104,8 @@ public:
size_t result, size_t input_rows_count) override {
auto res_column = ColumnString::create();
res_column->insert_data(version.c_str(), version.length());
- block.replace_by_position(result, std::move(res_column));
+ auto col_const = ColumnConst::create(std::move(res_column), input_rows_count);
+ block.replace_by_position(result, std::move(col_const));
return Status::OK();
}
};
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org