This is an automated email from the ASF dual-hosted git repository.
lihaopeng 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 7d5a10e1af [bug](function) fix mask_first_n function can't handle
const value (#16308)
7d5a10e1af is described below
commit 7d5a10e1af3178e1b7c076e0fc5d4b6bf542005e
Author: zhangstar333 <[email protected]>
AuthorDate: Fri Feb 3 10:32:42 2023 +0800
[bug](function) fix mask_first_n function can't handle const value (#16308)
---
be/src/vec/functions/function_string.h | 6 +--
.../nereids_function_p0/scalar_function/L-Q.out | 63 ++++++++++++++++++++++
.../nereids_function_p0/scalar_function/L-Q.groovy | 11 ++--
3 files changed, 71 insertions(+), 9 deletions(-)
diff --git a/be/src/vec/functions/function_string.h
b/be/src/vec/functions/function_string.h
index 2a50b609e1..2e3eacf031 100644
--- a/be/src/vec/functions/function_string.h
+++ b/be/src/vec/functions/function_string.h
@@ -420,8 +420,8 @@ public:
int n = -1;
auto res = ColumnString::create();
- const ColumnString& source_column =
- assert_cast<const
ColumnString&>(*block.get_by_position(arguments[0]).column);
+ auto col =
block.get_by_position(arguments[0]).column->convert_to_full_column_if_const();
+ const ColumnString& source_column = assert_cast<const
ColumnString&>(*col);
if (arguments.size() == 2) {
auto& col = *block.get_by_position(arguments[1]).column;
@@ -435,7 +435,7 @@ public:
FunctionMask::vector_mask(source_column, *res,
FunctionMask::DEFAULT_UPPER_MASK,
FunctionMask::DEFAULT_LOWER_MASK,
FunctionMask::DEFAULT_NUMBER_MASK);
- } else if (n > 0) {
+ } else if (n >= 0) {
vector(source_column, n, *res);
}
diff --git a/regression-test/data/nereids_function_p0/scalar_function/L-Q.out
b/regression-test/data/nereids_function_p0/scalar_function/L-Q.out
index 5702404b0f..9626ce8e16 100644
--- a/regression-test/data/nereids_function_p0/scalar_function/L-Q.out
+++ b/regression-test/data/nereids_function_p0/scalar_function/L-Q.out
@@ -524,6 +524,39 @@ xxxxxxn
xxxxxxn
xxxxxxn
+-- !sql --
+\N
+xarchar11
+xarchar11
+xxxchar11
+xxxxxxxnn
+xarchar12
+xarchar12
+xxxchar12
+xxxchar12
+xxxchar13
+xxxxxxr13
+xxxchar13
+xxxxxxxnn
+
+-- !sql --
+\N
+xtring1
+xtring1
+xxxing1
+xxxxxxn
+xtring2
+xtring2
+xxxing2
+xxxing2
+xxxing3
+xxxxxx3
+xxxing3
+xxxxxxn
+
+-- !sql_mask_const --
+xxxnnn
+
-- !sql --
xxxx
xxxxxxxnn
@@ -554,6 +587,36 @@ xxxxxxn
xxxxxxn
xxxxxxn
+-- !sql --
+\N
+varchar1n
+varchar1n
+varchaxnn
+xxxxxxxnn
+varchar1n
+varchar1n
+varchaxnn
+varchaxnn
+varchaxnn
+varxxxxnn
+varchaxnn
+xxxxxxxnn
+
+-- !sql --
+\N
+stringn
+stringn
+strixxn
+xxxxxxn
+stringn
+stringn
+strixxn
+strixxn
+strixxn
+sxxxxxn
+strixxn
+xxxxxxn
+
-- !sql --
37a6259cc0c1dae299a7866489dff0bd
8507af7854a1ef7feca8e5cdbce5e613
diff --git
a/regression-test/suites/nereids_function_p0/scalar_function/L-Q.groovy
b/regression-test/suites/nereids_function_p0/scalar_function/L-Q.groovy
index e340c4a025..16f0708ce7 100644
--- a/regression-test/suites/nereids_function_p0/scalar_function/L-Q.groovy
+++ b/regression-test/suites/nereids_function_p0/scalar_function/L-Q.groovy
@@ -65,14 +65,13 @@ suite("nereids_scalar_fn_3") {
qt_sql "select mask(kstr) from fn_test order by kstr"
qt_sql "select mask_first_n(kvchrs1) from fn_test order by kvchrs1"
qt_sql "select mask_first_n(kstr) from fn_test order by kstr"
- // core
- // qt_sql "select mask_first_n(kvchrs1, kint) from fn_test order by
kvchrs1, kint"
- // qt_sql "select mask_first_n(kstr, kint) from fn_test order by kstr,
kint"
+ qt_sql "select mask_first_n(kvchrs1, kint) from fn_test order by kvchrs1,
kint"
+ qt_sql "select mask_first_n(kstr, kint) from fn_test order by kstr, kint"
+ qt_sql_mask_const "select mask_first_n('asd123', 54);"
qt_sql "select mask_last_n(kvchrs1) from fn_test order by kvchrs1"
qt_sql "select mask_last_n(kstr) from fn_test order by kstr"
- // core
- // qt_sql "select mask_last_n(kvchrs1, kint) from fn_test order by
kvchrs1, kint"
- // qt_sql "select mask_last_n(kstr, kint) from fn_test order by kstr, kint"
+ qt_sql "select mask_last_n(kvchrs1, kint) from fn_test order by kvchrs1,
kint"
+ qt_sql "select mask_last_n(kstr, kint) from fn_test order by kstr, kint"
qt_sql "select md5(kvchrs1) from fn_test order by kvchrs1"
qt_sql "select md5(kstr) from fn_test order by kstr"
// cannot find function
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]