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 <18241664+jackte...@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-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org