From 71d07af295f6254e6b7d61d7035df22b852b469e Mon Sep 17 00:00:00 2001 From: James Date: Sun, 9 Feb 2025 16:26:15 +0800 Subject: [PATCH] Fix split_by_regexp function integer parameter couldn't set bug. --- .../functions/scalar/SplitByRegexp.java | 6 +++--- .../string_functions/test_split_by_regexp.out | 18 ++++++++++++++++++ .../test_split_by_regexp.groovy | 6 ++++++ 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/SplitByRegexp.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/SplitByRegexp.java index 8d1d0145d71047..a72ed434cc35f7 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/SplitByRegexp.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/SplitByRegexp.java @@ -22,7 +22,7 @@ import org.apache.doris.nereids.trees.expressions.Expression; import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature; import org.apache.doris.nereids.trees.expressions.functions.PropagateNullable; -import org.apache.doris.nereids.trees.expressions.literal.IntegerLiteral; +import org.apache.doris.nereids.trees.expressions.literal.IntegerLikeLiteral; import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor; import org.apache.doris.nereids.types.ArrayType; import org.apache.doris.nereids.types.IntegerType; @@ -77,8 +77,8 @@ public SplitByRegexp withChildren(List children) { @Override public void checkLegalityBeforeTypeCoercion() { if (children().size() == 3) { - if (!child(2).isConstant() || !(child(2) instanceof IntegerLiteral) - || (((IntegerLiteral) child(2)).getValue() < 0)) { + if (!child(2).isConstant() || !(child(2) instanceof IntegerLikeLiteral) + || (((IntegerLikeLiteral) child(2)).getIntValue() < 0)) { throw new AnalysisException("the third parameter of " + getName() + " function must be a positive constant: " + toSql()); } diff --git a/regression-test/data/query_p0/sql_functions/string_functions/test_split_by_regexp.out b/regression-test/data/query_p0/sql_functions/string_functions/test_split_by_regexp.out index 588ad7fa5cb9d2..1fb99f58ab1c7c 100644 --- a/regression-test/data/query_p0/sql_functions/string_functions/test_split_by_regexp.out +++ b/regression-test/data/query_p0/sql_functions/string_functions/test_split_by_regexp.out @@ -50,3 +50,21 @@ \N ["a", "b", "c", "12345", ""] +-- !select8 -- +["aa,bbb,cccc"] + +-- !select9 -- +["aa", "bbb,cccc"] + +-- !select10 -- +["aa", "bbb", "cccc"] + +-- !select11 -- +["aa", "bbb", "cccc"] + +-- !select12 -- +["aa", "bbb", "cccc"] + +-- !select13 -- +["aa", "bbb", "cccc"] + diff --git a/regression-test/suites/query_p0/sql_functions/string_functions/test_split_by_regexp.groovy b/regression-test/suites/query_p0/sql_functions/string_functions/test_split_by_regexp.groovy index c9ace391b5bebb..4b9719068e6606 100644 --- a/regression-test/suites/query_p0/sql_functions/string_functions/test_split_by_regexp.groovy +++ b/regression-test/suites/query_p0/sql_functions/string_functions/test_split_by_regexp.groovy @@ -64,5 +64,11 @@ suite("test_split_by_regexp") { qt_select5 "select split_by_regexp(v1, ',') from test_split_by_regexp order by k1;" qt_select6 "select split_by_regexp('do,ris', v2) from test_split_by_regexp order by k1;" qt_select7 "select split_by_regexp(v1, v2) from test_split_by_regexp order by k1;" + qt_select8 "select split_by_regexp('aa,bbb,cccc', ',', 1);" + qt_select9 "select split_by_regexp('aa,bbb,cccc', ',', 2);" + qt_select10 "select split_by_regexp('aa,bbb,cccc', ',', 3);" + qt_select11 "select split_by_regexp('aa,bbb,cccc', ',', 4);" + qt_select12 "select split_by_regexp('aa,bbb,cccc', ',', 100000000);" + qt_select13 "select split_by_regexp('aa,bbb,cccc', ',', 10000000000000);" }