You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by yi...@apache.org on 2022/10/28 00:42:56 UTC
[doris] branch master updated: [bugfix](concat) be crash caused by function concat(ifnull) (#13693)
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 859ffa6304 [bugfix](concat) be crash caused by function concat(ifnull) (#13693)
859ffa6304 is described below
commit 859ffa63045476461a67487deb4545f68b015aa1
Author: TengJianPing <18...@users.noreply.github.com>
AuthorDate: Fri Oct 28 08:42:51 2022 +0800
[bugfix](concat) be crash caused by function concat(ifnull) (#13693)
---
be/src/vec/functions/function_ifnull.h | 4 +++-
.../query_p0/sql_functions/conditional_functions/test_nullif.out | 6 ++++++
.../query_p0/sql_functions/conditional_functions/test_nullif.groovy | 3 +++
3 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/be/src/vec/functions/function_ifnull.h b/be/src/vec/functions/function_ifnull.h
index 1a83785c48..3378afae84 100644
--- a/be/src/vec/functions/function_ifnull.h
+++ b/be/src/vec/functions/function_ifnull.h
@@ -62,7 +62,7 @@ public:
// ifnull(col_left, col_right) == if(isnull(col_left), col_right, col_left)
Status execute_impl(FunctionContext* context, Block& block, const ColumnNumbers& arguments,
size_t result, size_t input_rows_count) override {
- const ColumnWithTypeAndName& col_left = block.get_by_position(arguments[0]);
+ ColumnWithTypeAndName& col_left = block.get_by_position(arguments[0]);
if (col_left.column->only_null()) {
block.get_by_position(result).column = block.get_by_position(arguments[1]).column;
return Status::OK();
@@ -71,6 +71,8 @@ public:
ColumnWithTypeAndName null_column_arg0 {nullptr, std::make_shared<DataTypeUInt8>(), ""};
ColumnWithTypeAndName nested_column_arg0 {nullptr, col_left.type, ""};
+ col_left.column = col_left.column->convert_to_full_column_if_const();
+
/// implement isnull(col_left) logic
if (auto* nullable = check_and_get_column<ColumnNullable>(*col_left.column)) {
null_column_arg0.column = nullable->get_null_map_column_ptr();
diff --git a/regression-test/data/query_p0/sql_functions/conditional_functions/test_nullif.out b/regression-test/data/query_p0/sql_functions/conditional_functions/test_nullif.out
index 1fbbaec200..436797c791 100644
--- a/regression-test/data/query_p0/sql_functions/conditional_functions/test_nullif.out
+++ b/regression-test/data/query_p0/sql_functions/conditional_functions/test_nullif.out
@@ -1,4 +1,10 @@
-- This file is automatically generated. You should know what you did if you want to edit this
+-- !ifnull_const1 --
+aA
+
+-- !ifnull_const2 --
+aA
+
-- !select --
true
\N
diff --git a/regression-test/suites/query_p0/sql_functions/conditional_functions/test_nullif.groovy b/regression-test/suites/query_p0/sql_functions/conditional_functions/test_nullif.groovy
index 786ec3f25f..722525a802 100644
--- a/regression-test/suites/query_p0/sql_functions/conditional_functions/test_nullif.groovy
+++ b/regression-test/suites/query_p0/sql_functions/conditional_functions/test_nullif.groovy
@@ -16,6 +16,9 @@
// under the License.
suite("test_nullif") {
+ qt_ifnull_const1 """select CONCAT('a', ifnull(split_part('A.B','.',1), 'x'));"""
+ qt_ifnull_const2 """select CONCAT('a', ifnull(split_part('A.B','.',1), null));"""
+
def tableName = "datetype"
sql """ DROP TABLE IF EXISTS ${tableName} """
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org