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 3e3b2d15d4 [bug]string pad functions should always be nullable (#11140) 3e3b2d15d4 is described below commit 3e3b2d15d4c6b44cf1eda357d49df57ee5756707 Author: starocean999 <40539150+starocean...@users.noreply.github.com> AuthorDate: Tue Jul 26 10:20:11 2022 +0800 [bug]string pad functions should always be nullable (#11140) * string pad functions should always be nullable --- be/src/vec/functions/function_string.h | 2 +- gensrc/script/doris_builtins_functions.py | 4 +- .../data/correctness/test_string_pad_function.out | 9 +++++ .../correctness/test_string_pad_function.groovy | 46 ++++++++++++++++++++++ 4 files changed, 58 insertions(+), 3 deletions(-) diff --git a/be/src/vec/functions/function_string.h b/be/src/vec/functions/function_string.h index a7df35b1ed..afe43c0833 100644 --- a/be/src/vec/functions/function_string.h +++ b/be/src/vec/functions/function_string.h @@ -769,7 +769,7 @@ public: size_t get_number_of_arguments() const override { return 3; } DataTypePtr get_return_type_impl(const DataTypes& arguments) const override { - return std::make_shared<DataTypeString>(); + return make_nullable(std::make_shared<DataTypeString>()); } bool use_default_implementation_for_nulls() const override { return true; } bool use_default_implementation_for_constants() const override { return true; } diff --git a/gensrc/script/doris_builtins_functions.py b/gensrc/script/doris_builtins_functions.py index e3bb5e9ab5..bdc1e54ac7 100755 --- a/gensrc/script/doris_builtins_functions.py +++ b/gensrc/script/doris_builtins_functions.py @@ -1010,10 +1010,10 @@ visible_functions = [ '15FunctionContextERKNS1_9StringValERKNS1_6IntValE', '', '', 'vec', ''], [['lpad'], 'VARCHAR', ['VARCHAR', 'INT', 'VARCHAR'], '_ZN5doris15StringFunctions4lpadEPN9doris_udf' - '15FunctionContextERKNS1_9StringValERKNS1_6IntValES6_', '', '', 'vec', ''], + '15FunctionContextERKNS1_9StringValERKNS1_6IntValES6_', '', '', 'vec', 'ALWAYS_NULLABLE'], [['rpad'], 'VARCHAR', ['VARCHAR', 'INT', 'VARCHAR'], '_ZN5doris15StringFunctions4rpadEPN9doris_udf' - '15FunctionContextERKNS1_9StringValERKNS1_6IntValES6_', '', '', 'vec', ''], + '15FunctionContextERKNS1_9StringValERKNS1_6IntValES6_', '', '', 'vec', 'ALWAYS_NULLABLE'], [['append_trailing_char_if_absent'], 'VARCHAR', ['VARCHAR', 'VARCHAR'], '_ZN5doris15StringFunctions30append_trailing_char_if_absentEPN9doris_udf15FunctionContextERKNS1_9StringValES6_', '', '', 'vec', 'ALWAYS_NULLABLE'], diff --git a/regression-test/data/correctness/test_string_pad_function.out b/regression-test/data/correctness/test_string_pad_function.out new file mode 100644 index 0000000000..5fc247c7d7 --- /dev/null +++ b/regression-test/data/correctness/test_string_pad_function.out @@ -0,0 +1,9 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !select_lpad -- +\N +10:00 + +-- !select_rpad -- +\N +10:00 + diff --git a/regression-test/suites/correctness/test_string_pad_function.groovy b/regression-test/suites/correctness/test_string_pad_function.groovy new file mode 100644 index 0000000000..929a71dfa5 --- /dev/null +++ b/regression-test/suites/correctness/test_string_pad_function.groovy @@ -0,0 +1,46 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +suite("test_string_pad_function") { + sql """ + drop table if exists table_pad; + """ + + sql """ + create table table_pad ( + a int not null, + b varchar(10) not null + ) + ENGINE=OLAP + distributed by hash(a) + properties( + 'replication_num' = '1' + ); + """ + + sql """ + insert into table_pad values(1,'100000'), (2,'200000'); + """ + + qt_select_lpad """ + select CASE WHEN table_pad.a = 1 THEN CONCAT(LPAD(b, 2, 0), ':00') END result from table_pad order by result; + """ + + qt_select_rpad """ + select CASE WHEN table_pad.a = 1 THEN CONCAT(RPAD(b, 2, 0), ':00') END result from table_pad order by result; + """ +} --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org