This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-2.1 by this push:
new 0cff5398102 [feature](function) support new function replace_empty
(#36283) (#36656)
0cff5398102 is described below
commit 0cff5398102d7a14f0d63a56d2782f3f58ee4101
Author: Mingyu Chen <[email protected]>
AuthorDate: Fri Jun 21 16:46:22 2024 +0800
[feature](function) support new function replace_empty (#36283) (#36656)
#36283
---
be/src/vec/functions/function_string.cpp | 3 +-
be/src/vec/functions/function_string.h | 46 +++--
be/test/vec/function/function_string_test.cpp | 18 ++
.../doris/catalog/BuiltinScalarFunctions.java | 2 +
.../expressions/functions/scalar/ReplaceEmpty.java | 72 ++++++++
.../expressions/visitor/ScalarFunctionVisitor.java | 5 +
.../data/nereids_function_p0/scalar_function/R.out | 24 +++
.../nereids_function_p0/scalar_function/R.groovy | 186 +++++++++++----------
8 files changed, 256 insertions(+), 100 deletions(-)
diff --git a/be/src/vec/functions/function_string.cpp
b/be/src/vec/functions/function_string.cpp
index bfbd57f4747..841b6561bf7 100644
--- a/be/src/vec/functions/function_string.cpp
+++ b/be/src/vec/functions/function_string.cpp
@@ -1153,7 +1153,8 @@ void register_function_string(SimpleFunctionFactory&
factory) {
factory.register_function<FunctionStringDigestOneArg<MD5Sum>>();
factory.register_function<FunctionStringDigestSHA1>();
factory.register_function<FunctionStringDigestSHA2>();
- factory.register_function<FunctionReplace>();
+ factory.register_function<FunctionReplace<ReplaceImpl, true>>();
+ factory.register_function<FunctionReplace<ReplaceEmptyImpl, false>>();
factory.register_function<FunctionMask>();
factory.register_function<FunctionMaskPartial<true>>();
factory.register_function<FunctionMaskPartial<false>>();
diff --git a/be/src/vec/functions/function_string.h
b/be/src/vec/functions/function_string.h
index 31c6cbb5ecb..51e1d624062 100644
--- a/be/src/vec/functions/function_string.h
+++ b/be/src/vec/functions/function_string.h
@@ -3376,10 +3376,19 @@ private:
}
};
+struct ReplaceImpl {
+ static constexpr auto name = "replace";
+};
+
+struct ReplaceEmptyImpl {
+ static constexpr auto name = "replace_empty";
+};
+
+template <typename Impl, bool empty>
class FunctionReplace : public IFunction {
public:
- static constexpr auto name = "replace";
- static FunctionPtr create() { return std::make_shared<FunctionReplace>(); }
+ static constexpr auto name = Impl::name;
+ static FunctionPtr create() { return
std::make_shared<FunctionReplace<Impl, empty>>(); }
String get_name() const override { return name; }
size_t get_number_of_arguments() const override { return 3; }
@@ -3421,16 +3430,33 @@ public:
private:
std::string replace(std::string str, std::string_view old_str,
std::string_view new_str) const {
if (old_str.empty()) {
+ if constexpr (empty) {
+ return str;
+ } else {
+ // Different from "Replace" only when the search string is
empty.
+ // it will insert `new_str` in front of every character and at
the end of the old str.
+ if (new_str.empty()) {
+ return str;
+ }
+ std::string result;
+ result.reserve(str.length() * (new_str.length() + 1) +
new_str.length());
+ for (char c : str) {
+ result += new_str;
+ result += c;
+ }
+ result += new_str;
+ return result;
+ }
+ } else {
+ std::string::size_type pos = 0;
+ std::string::size_type oldLen = old_str.size();
+ std::string::size_type newLen = new_str.size();
+ while ((pos = str.find(old_str, pos)) != std::string::npos) {
+ str.replace(pos, oldLen, new_str);
+ pos += newLen;
+ }
return str;
}
- std::string::size_type pos = 0;
- std::string::size_type oldLen = old_str.size();
- std::string::size_type newLen = new_str.size();
- while ((pos = str.find(old_str, pos)) != std::string::npos) {
- str.replace(pos, oldLen, new_str);
- pos += newLen;
- }
- return str;
}
};
diff --git a/be/test/vec/function/function_string_test.cpp
b/be/test/vec/function/function_string_test.cpp
index 0e5d0e1e038..6d1f085f2eb 100644
--- a/be/test/vec/function/function_string_test.cpp
+++ b/be/test/vec/function/function_string_test.cpp
@@ -1155,6 +1155,24 @@ TEST(function_string_test, function_replace) {
static_cast<void>(check_function<DataTypeString, true>(func_name,
input_types, data_set));
}
+TEST(function_string_test, function_replace_empty) {
+ std::string func_name = "replace_empty";
+ InputTypeSet input_types = {
+ TypeIndex::String,
+ TypeIndex::String,
+ TypeIndex::String,
+ };
+ DataSet data_set = {
+ {{Null(), VARCHAR("9090"), VARCHAR("")}, {Null()}},
+ {{VARCHAR("http://www.baidu.com:9090"), VARCHAR("9090"),
VARCHAR("")},
+ {VARCHAR("http://www.baidu.com:")}},
+ {{VARCHAR("aaaaa"), VARCHAR("a"), VARCHAR("")}, {VARCHAR("")}},
+ {{VARCHAR("abc"), VARCHAR(""), VARCHAR("xyz")},
{VARCHAR("xyzaxyzbxyzcxyz")}},
+ {{VARCHAR("aaaaa"), VARCHAR("aa"), VARCHAR("")}, {VARCHAR("a")}},
+ {{VARCHAR("aaaaa"), VARCHAR("aa"), VARCHAR("a")},
{VARCHAR("aaa")}}};
+ static_cast<void>(check_function<DataTypeString, true>(func_name,
input_types, data_set));
+}
+
TEST(function_string_test, function_bit_length_test) {
std::string func_name = "bit_length";
InputTypeSet input_types = {TypeIndex::String};
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/catalog/BuiltinScalarFunctions.java
b/fe/fe-core/src/main/java/org/apache/doris/catalog/BuiltinScalarFunctions.java
index eb7a2c6050c..7dea900b3cf 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/catalog/BuiltinScalarFunctions.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/catalog/BuiltinScalarFunctions.java
@@ -329,6 +329,7 @@ import
org.apache.doris.nereids.trees.expressions.functions.scalar.RegexpReplace
import
org.apache.doris.nereids.trees.expressions.functions.scalar.RegexpReplaceOne;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Repeat;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Replace;
+import
org.apache.doris.nereids.trees.expressions.functions.scalar.ReplaceEmpty;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Reverse;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Right;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Round;
@@ -787,6 +788,7 @@ public class BuiltinScalarFunctions implements
FunctionHelper {
scalar(RegexpReplaceOne.class, "regexp_replace_one"),
scalar(Repeat.class, "repeat"),
scalar(Replace.class, "replace"),
+ scalar(ReplaceEmpty.class, "replace_empty"),
scalar(Reverse.class, "reverse"),
scalar(Right.class, "right"),
scalar(Round.class, "round"),
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ReplaceEmpty.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ReplaceEmpty.java
new file mode 100644
index 00000000000..f237777e67f
--- /dev/null
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ReplaceEmpty.java
@@ -0,0 +1,72 @@
+// 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.
+
+package org.apache.doris.nereids.trees.expressions.functions.scalar;
+
+import org.apache.doris.catalog.FunctionSignature;
+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.shape.TernaryExpression;
+import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
+import org.apache.doris.nereids.types.StringType;
+import org.apache.doris.nereids.types.VarcharType;
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
+
+import java.util.List;
+
+/**
+ * ScalarFunction 'replace_empty'.
+ */
+public class ReplaceEmpty extends ScalarFunction
+ implements TernaryExpression, ExplicitlyCastableSignature,
PropagateNullable {
+
+ public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
+ FunctionSignature.ret(VarcharType.SYSTEM_DEFAULT)
+ .args(VarcharType.SYSTEM_DEFAULT,
VarcharType.SYSTEM_DEFAULT, VarcharType.SYSTEM_DEFAULT),
+ FunctionSignature.ret(StringType.INSTANCE)
+ .args(StringType.INSTANCE, StringType.INSTANCE,
StringType.INSTANCE)
+ );
+
+ /**
+ * constructor with 3 arguments.
+ */
+ public ReplaceEmpty(Expression arg0, Expression arg1, Expression arg2) {
+ super("replace_empty", arg0, arg1, arg2);
+ }
+
+ /**
+ * withChildren.
+ */
+ @Override
+ public ReplaceEmpty withChildren(List<Expression> children) {
+ Preconditions.checkArgument(children.size() == 3);
+ return new ReplaceEmpty(children.get(0), children.get(1),
children.get(2));
+ }
+
+ @Override
+ public List<FunctionSignature> getSignatures() {
+ return SIGNATURES;
+ }
+
+ @Override
+ public <R, C> R accept(ExpressionVisitor<R, C> visitor, C context) {
+ return visitor.visitReplaceEmpty(this, context);
+ }
+}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ScalarFunctionVisitor.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ScalarFunctionVisitor.java
index b8d2ccfbf4f..b2530b28b01 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ScalarFunctionVisitor.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ScalarFunctionVisitor.java
@@ -328,6 +328,7 @@ import
org.apache.doris.nereids.trees.expressions.functions.scalar.RegexpReplace
import
org.apache.doris.nereids.trees.expressions.functions.scalar.RegexpReplaceOne;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Repeat;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Replace;
+import
org.apache.doris.nereids.trees.expressions.functions.scalar.ReplaceEmpty;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Reverse;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Right;
import org.apache.doris.nereids.trees.expressions.functions.scalar.Round;
@@ -1687,6 +1688,10 @@ public interface ScalarFunctionVisitor<R, C> {
return visitScalarFunction(replace, context);
}
+ default R visitReplaceEmpty(ReplaceEmpty replaceEmpty, C context) {
+ return visitScalarFunction(replaceEmpty, context);
+ }
+
default R visitReverse(Reverse reverse, C context) {
return visitScalarFunction(reverse, context);
}
diff --git a/regression-test/data/nereids_function_p0/scalar_function/R.out
b/regression-test/data/nereids_function_p0/scalar_function/R.out
index df1e89de714..df315a2624e 100644
--- a/regression-test/data/nereids_function_p0/scalar_function/R.out
+++ b/regression-test/data/nereids_function_p0/scalar_function/R.out
@@ -405,6 +405,30 @@ string3
string3
string3
+-- !sql_relace_empty01 --
+abcxabcyabczabc
+
+-- !sql_relace_empty02 --
+\N
+
+-- !sql_relace_empty03 --
+\N
+
+-- !sql_relace_empty04 --
+\N
+
+-- !sql_relace_empty05 --
+abcyz
+
+-- !sql_relace_empty06 --
+yz
+
+-- !sql_relace_empty07 --
+xyz
+
+-- !sql_relace_empty08 --
+abc
+
-- !sql_right_Varchar_Integer --
\N
1
diff --git
a/regression-test/suites/nereids_function_p0/scalar_function/R.groovy
b/regression-test/suites/nereids_function_p0/scalar_function/R.groovy
index 1110ed3a47a..2a00feeafdf 100644
--- a/regression-test/suites/nereids_function_p0/scalar_function/R.groovy
+++ b/regression-test/suites/nereids_function_p0/scalar_function/R.groovy
@@ -16,93 +16,101 @@
// under the License.
suite("nereids_scalar_fn_R") {
- sql 'use regression_test_nereids_function_p0'
- sql 'set enable_nereids_planner=true'
- sql 'set enable_fallback_to_original_planner=false'
- qt_sql_radians_Double "select radians(kdbl) from fn_test order by kdbl"
- qt_sql_radians_Double_notnull "select radians(kdbl) from
fn_test_not_nullable order by kdbl"
- sql "select random() from fn_test"
- sql "select random() from fn_test_not_nullable"
- sql "select random(1000) from fn_test order by kbint"
- sql "select random(1000) from fn_test_not_nullable order by kbint"
- qt_sql_regexp_Varchar_Varchar "select regexp(kvchrs1, kvchrs2) from
fn_test order by kvchrs1"
- qt_sql_regexp_Varchar_Varchar_not_null "select regexp(kvchrs1, kvchrs2)
from fn_test_not_nullable order by kvchrs1"
- qt_sql_regexp_extract_Varchar_Varchar_BigInt "select
regexp_extract(kvchrs1, kvchrs1, kbint) from fn_test order by kvchrs1, kvchrs1,
kbint"
- qt_sql_regexp_extract_Varchar_Varchar_BigInt_notnull "select
regexp_extract(kvchrs1, kvchrs1, kbint) from fn_test_not_nullable order by
kvchrs1, kvchrs1, kbint"
- qt_sql_regexp_extract_String_String_BigInt "select regexp_extract(kstr,
kstr, kbint) from fn_test order by kstr, kstr, kbint"
- qt_sql_regexp_extract_String_String_BigInt_notnull "select
regexp_extract(kstr, kstr, kbint) from fn_test_not_nullable order by kstr,
kstr, kbint"
- qt_sql_regexp_extract_all_Varchar_Varchar "select
regexp_extract_all(kvchrs1, kvchrs1) from fn_test order by kvchrs1, kvchrs1"
- qt_sql_regexp_extract_all_Varchar_Varchar_notnull "select
regexp_extract_all(kvchrs1, kvchrs1) from fn_test_not_nullable order by
kvchrs1, kvchrs1"
- qt_sql_regexp_extract_all_String_String "select
regexp_extract_all(kstr, kstr) from fn_test order by kstr, kstr"
- qt_sql_regexp_extract_all_String_String_notnull "select
regexp_extract_all(kstr, kstr) from fn_test_not_nullable order by kstr, kstr"
- qt_sql_regexp_replace_Varchar_Varchar_Varchar "select
regexp_replace(kvchrs1, kvchrs1, kvchrs1) from fn_test order by kvchrs1,
kvchrs1, kvchrs1"
- qt_sql_regexp_replace_Varchar_Varchar_Varchar_notnull "select
regexp_replace(kvchrs1, kvchrs1, kvchrs1) from fn_test_not_nullable order by
kvchrs1, kvchrs1, kvchrs1"
- qt_sql_regexp_replace_String_String_String "select regexp_replace(kstr,
kstr, kstr) from fn_test order by kstr, kstr, kstr"
- qt_sql_regexp_replace_String_String_String_notnull "select
regexp_replace(kstr, kstr, kstr) from fn_test_not_nullable order by kstr, kstr,
kstr"
- qt_sql_regexp_replace_one_Varchar_Varchar_Varchar "select
regexp_replace_one(kvchrs1, kvchrs1, kvchrs1) from fn_test order by kvchrs1,
kvchrs1, kvchrs1"
- qt_sql_regexp_replace_one_Varchar_Varchar_Varchar_notnull "select
regexp_replace_one(kvchrs1, kvchrs1, kvchrs1) from fn_test_not_nullable order
by kvchrs1, kvchrs1, kvchrs1"
- qt_sql_regexp_replace_one_String_String_String "select
regexp_replace_one(kstr, kstr, kstr) from fn_test order by kstr, kstr, kstr"
- qt_sql_regexp_replace_one_String_String_String_notnull "select
regexp_replace_one(kstr, kstr, kstr) from fn_test_not_nullable order by kstr,
kstr, kstr"
- qt_sql_repeat_Varchar_Integer "select repeat(kvchrs1, kint) from
fn_test order by kvchrs1, kint"
- qt_sql_repeat_Varchar_Integer_notnull "select repeat(kvchrs1, kint)
from fn_test_not_nullable order by kvchrs1, kint"
- qt_sql_repeat_String_Integer "select repeat(kstr, kint) from fn_test
order by kstr, kint"
- qt_sql_repeat_String_Integer_notnull "select repeat(kstr, kint) from
fn_test_not_nullable order by kstr, kint"
- qt_sql_replace_Varchar_Varchar_Varchar "select replace(kvchrs1,
kvchrs1, kvchrs1) from fn_test order by kvchrs1, kvchrs1, kvchrs1"
- qt_sql_replace_Varchar_Varchar_Varchar_notnull "select replace(kvchrs1,
kvchrs1, kvchrs1) from fn_test_not_nullable order by kvchrs1, kvchrs1, kvchrs1"
- qt_sql_replace_String_String_String "select replace(kstr, kstr, kstr)
from fn_test order by kstr, kstr, kstr"
- qt_sql_replace_String_String_String_notnull "select replace(kstr, kstr,
kstr) from fn_test_not_nullable order by kstr, kstr, kstr"
- qt_sql_right_Varchar_Integer "select right(kvchrs1, kint) from fn_test
order by kvchrs1, kint"
- qt_sql_right_Varchar_Integer_notnull "select right(kvchrs1, kint) from
fn_test_not_nullable order by kvchrs1, kint"
- qt_sql_right_String_Integer "select right(kstr, kint) from fn_test
order by kstr, kint"
- qt_sql_right_String_Integer_notnull "select right(kstr, kint) from
fn_test_not_nullable order by kstr, kint"
- qt_sql_round_Double "select round(kdbl) from fn_test order by kdbl"
- qt_sql_round_Double_notnull "select round(kdbl) from
fn_test_not_nullable order by kdbl"
- qt_sql_round_Double_Integer "select round(kdbl, 2) from fn_test order
by kdbl"
- qt_sql_round_Double_Integer_notnull "select round(kdbl, 2) from
fn_test_not_nullable order by kdbl"
- qt_sql_round_DecimalV3S1 "select round(kdcmlv3s1) from fn_test order by
kdcmlv3s1"
- qt_sql_round_DecimalV3S1_notnull "select round(kdcmlv3s1) from
fn_test_not_nullable order by kdcmlv3s1"
- qt_sql_round_DecimalV3S2 "select round(kdcmlv3s2) from fn_test order by
kdcmlv3s2"
- qt_sql_round_DecimalV3S2_notnull "select round(kdcmlv3s2) from
fn_test_not_nullable order by kdcmlv3s2"
- qt_sql_round_DecimalV3S3 "select round(kdcmlv3s3) from fn_test order by
kdcmlv3s3"
- qt_sql_round_DecimalV3S3_notnull "select round(kdcmlv3s3) from
fn_test_not_nullable order by kdcmlv3s3"
- qt_sql_round_DecimalV3S1_Int "select round(kdcmlv3s1, 1) from fn_test
order by kdcmlv3s1"
- qt_sql_round_DecimalV3S1_Int_notnull "select round(kdcmlv3s1, 1) from
fn_test_not_nullable order by kdcmlv3s1"
- qt_sql_round_DecimalV3S2_Int "select round(kdcmlv3s2, 1) from fn_test
order by kdcmlv3s2"
- qt_sql_round_DecimalV3S2_Int_notnull "select round(kdcmlv3s2, 1) from
fn_test_not_nullable order by kdcmlv3s2"
- qt_sql_round_DecimalV3S3_Int "select round(kdcmlv3s3, 1) from fn_test
order by kdcmlv3s3"
- qt_sql_round_DecimalV3S3_Int_notnull "select round(kdcmlv3s3, 1) from
fn_test_not_nullable order by kdcmlv3s3"
- qt_sql_round_bankers_Double "select round_bankers(kdbl) from fn_test
order by kdbl"
- qt_sql_round_bankers_Double_notnull "select round_bankers(kdbl) from
fn_test_not_nullable order by kdbl"
- qt_sql_round_bankers_Double_Integer "select round_bankers(kdbl, 2) from
fn_test order by kdbl"
- qt_sql_round_bankers_Double_Integer_notnull "select round_bankers(kdbl,
2) from fn_test_not_nullable order by kdbl"
- qt_sql_round_bankers_DecimalV3S1 "select round_bankers(kdcmlv3s1) from
fn_test order by kdcmlv3s1"
- qt_sql_round_bankers_DecimalV3S1_notnull "select
round_bankers(kdcmlv3s1) from fn_test_not_nullable order by kdcmlv3s1"
- qt_sql_round_bankers_DecimalV3S2 "select round_bankers(kdcmlv3s2) from
fn_test order by kdcmlv3s2"
- qt_sql_round_bankers_DecimalV3S2_notnull "select
round_bankers(kdcmlv3s2) from fn_test_not_nullable order by kdcmlv3s2"
- qt_sql_round_bankers_DecimalV3S3 "select round_bankers(kdcmlv3s3) from
fn_test order by kdcmlv3s3"
- qt_sql_round_bankers_DecimalV3S3_notnull "select
round_bankers(kdcmlv3s3) from fn_test_not_nullable order by kdcmlv3s3"
- qt_sql_round_bankers_DecimalV3S1_Int "select round_bankers(kdcmlv3s1,
1) from fn_test order by kdcmlv3s1"
- qt_sql_round_bankers_DecimalV3S1_Int_notnull "select
round_bankers(kdcmlv3s1, 1) from fn_test_not_nullable order by kdcmlv3s1"
- qt_sql_round_bankers_DecimalV3S2_Int "select round_bankers(kdcmlv3s2,
1) from fn_test order by kdcmlv3s2"
- qt_sql_round_bankers_DecimalV3S2_Int_notnull "select
round_bankers(kdcmlv3s2, 1) from fn_test_not_nullable order by kdcmlv3s2"
- qt_sql_round_bankers_DecimalV3S3_Int "select round_bankers(kdcmlv3s3,
1) from fn_test order by kdcmlv3s3"
- qt_sql_round_bankers_DecimalV3S3_Int_notnull "select
round_bankers(kdcmlv3s3, 1) from fn_test_not_nullable order by kdcmlv3s3"
- qt_sql_rpad_Varchar_Integer_Varchar "select rpad(kvchrs1, kint,
kvchrs1) from fn_test order by kvchrs1, kint, kvchrs1"
- qt_sql_rpad_Varchar_Integer_Varchar_notnull "select rpad(kvchrs1, kint,
kvchrs1) from fn_test_not_nullable order by kvchrs1, kint, kvchrs1"
- qt_sql_rpad_String_Integer_String "select rpad(kstr, kint, kstr) from
fn_test order by kstr, kint, kstr"
- qt_sql_rpad_String_Integer_String_notnull "select rpad(kstr, kint,
kstr) from fn_test_not_nullable order by kstr, kint, kstr"
- qt_sql_rtrim_Varchar "select rtrim(kvchrs1) from fn_test order by
kvchrs1"
- qt_sql_rtrim_Varchar_notnull "select rtrim(kvchrs1) from
fn_test_not_nullable order by kvchrs1"
- qt_sql_rtrim_String "select rtrim(kstr) from fn_test order by kstr"
- qt_sql_rtrim_String_notnull "select rtrim(kstr) from
fn_test_not_nullable order by kstr"
- qt_sql_rtrim_Varchar_Varchar "select rtrim(kvchrs1, '1') from fn_test
order by kvchrs1"
- qt_sql_rtrim_Varchar_Varchar_notnull "select rtrim(kvchrs1, '1') from
fn_test_not_nullable order by kvchrs1"
- qt_sql_rtrim_String_String "select rtrim(kstr, '1') from fn_test order
by kstr"
- qt_sql_rtrim_String_String_notnull "select rtrim(kstr, '1') from
fn_test_not_nullable order by kstr"
- sql "SELECT random_bytes(7);"
- qt_sql_random_bytes "SELECT random_bytes(null);"
- test {
- sql " select random_bytes(-1); "
- exception "argument -1 of function random_bytes at row 0 was
invalid"
- }
+ sql 'use regression_test_nereids_function_p0'
+ sql 'set enable_nereids_planner=true'
+ sql 'set enable_fallback_to_original_planner=false'
+ qt_sql_radians_Double "select radians(kdbl) from fn_test order by kdbl"
+ qt_sql_radians_Double_notnull "select radians(kdbl) from
fn_test_not_nullable order by kdbl"
+ sql "select random() from fn_test"
+ sql "select random() from fn_test_not_nullable"
+ sql "select random(1000) from fn_test order by kbint"
+ sql "select random(1000) from fn_test_not_nullable order by kbint"
+ qt_sql_regexp_Varchar_Varchar "select regexp(kvchrs1, kvchrs2) from
fn_test order by kvchrs1"
+ qt_sql_regexp_Varchar_Varchar_not_null "select regexp(kvchrs1, kvchrs2)
from fn_test_not_nullable order by kvchrs1"
+ qt_sql_regexp_extract_Varchar_Varchar_BigInt "select
regexp_extract(kvchrs1, kvchrs1, kbint) from fn_test order by kvchrs1, kvchrs1,
kbint"
+ qt_sql_regexp_extract_Varchar_Varchar_BigInt_notnull "select
regexp_extract(kvchrs1, kvchrs1, kbint) from fn_test_not_nullable order by
kvchrs1, kvchrs1, kbint"
+ qt_sql_regexp_extract_String_String_BigInt "select regexp_extract(kstr,
kstr, kbint) from fn_test order by kstr, kstr, kbint"
+ qt_sql_regexp_extract_String_String_BigInt_notnull "select
regexp_extract(kstr, kstr, kbint) from fn_test_not_nullable order by kstr,
kstr, kbint"
+ qt_sql_regexp_extract_all_Varchar_Varchar "select
regexp_extract_all(kvchrs1, kvchrs1) from fn_test order by kvchrs1, kvchrs1"
+ qt_sql_regexp_extract_all_Varchar_Varchar_notnull "select
regexp_extract_all(kvchrs1, kvchrs1) from fn_test_not_nullable order by
kvchrs1, kvchrs1"
+ qt_sql_regexp_extract_all_String_String "select regexp_extract_all(kstr,
kstr) from fn_test order by kstr, kstr"
+ qt_sql_regexp_extract_all_String_String_notnull "select
regexp_extract_all(kstr, kstr) from fn_test_not_nullable order by kstr, kstr"
+ qt_sql_regexp_replace_Varchar_Varchar_Varchar "select
regexp_replace(kvchrs1, kvchrs1, kvchrs1) from fn_test order by kvchrs1,
kvchrs1, kvchrs1"
+ qt_sql_regexp_replace_Varchar_Varchar_Varchar_notnull "select
regexp_replace(kvchrs1, kvchrs1, kvchrs1) from fn_test_not_nullable order by
kvchrs1, kvchrs1, kvchrs1"
+ qt_sql_regexp_replace_String_String_String "select regexp_replace(kstr,
kstr, kstr) from fn_test order by kstr, kstr, kstr"
+ qt_sql_regexp_replace_String_String_String_notnull "select
regexp_replace(kstr, kstr, kstr) from fn_test_not_nullable order by kstr, kstr,
kstr"
+ qt_sql_regexp_replace_one_Varchar_Varchar_Varchar "select
regexp_replace_one(kvchrs1, kvchrs1, kvchrs1) from fn_test order by kvchrs1,
kvchrs1, kvchrs1"
+ qt_sql_regexp_replace_one_Varchar_Varchar_Varchar_notnull "select
regexp_replace_one(kvchrs1, kvchrs1, kvchrs1) from fn_test_not_nullable order
by kvchrs1, kvchrs1, kvchrs1"
+ qt_sql_regexp_replace_one_String_String_String "select
regexp_replace_one(kstr, kstr, kstr) from fn_test order by kstr, kstr, kstr"
+ qt_sql_regexp_replace_one_String_String_String_notnull "select
regexp_replace_one(kstr, kstr, kstr) from fn_test_not_nullable order by kstr,
kstr, kstr"
+ qt_sql_repeat_Varchar_Integer "select repeat(kvchrs1, kint) from fn_test
order by kvchrs1, kint"
+ qt_sql_repeat_Varchar_Integer_notnull "select repeat(kvchrs1, kint) from
fn_test_not_nullable order by kvchrs1, kint"
+ qt_sql_repeat_String_Integer "select repeat(kstr, kint) from fn_test order
by kstr, kint"
+ qt_sql_repeat_String_Integer_notnull "select repeat(kstr, kint) from
fn_test_not_nullable order by kstr, kint"
+ qt_sql_replace_Varchar_Varchar_Varchar "select replace(kvchrs1, kvchrs1,
kvchrs1) from fn_test order by kvchrs1, kvchrs1, kvchrs1"
+ qt_sql_replace_Varchar_Varchar_Varchar_notnull "select replace(kvchrs1,
kvchrs1, kvchrs1) from fn_test_not_nullable order by kvchrs1, kvchrs1, kvchrs1"
+ qt_sql_replace_String_String_String "select replace(kstr, kstr, kstr) from
fn_test order by kstr, kstr, kstr"
+ qt_sql_replace_String_String_String_notnull "select replace(kstr, kstr,
kstr) from fn_test_not_nullable order by kstr, kstr, kstr"
+ qt_sql_relace_empty01 "select replace_empty('xyz', '', 'abc');"
+ qt_sql_relace_empty02 "select replace_empty(null, '', 'abc');"
+ qt_sql_relace_empty03 "select replace_empty('xyz', null, 'abc');"
+ qt_sql_relace_empty04 "select replace_empty('xyz', '', null);"
+ qt_sql_relace_empty05 "select replace_empty('xyz', 'x', 'abc');"
+ qt_sql_relace_empty06 "select replace_empty('xyz', 'x', '');"
+ qt_sql_relace_empty07 "select replace_empty('xyz', '', '');"
+ qt_sql_relace_empty08 "select replace_empty('', '', 'abc');"
+ qt_sql_right_Varchar_Integer "select right(kvchrs1, kint) from fn_test
order by kvchrs1, kint"
+ qt_sql_right_Varchar_Integer_notnull "select right(kvchrs1, kint) from
fn_test_not_nullable order by kvchrs1, kint"
+ qt_sql_right_String_Integer "select right(kstr, kint) from fn_test order
by kstr, kint"
+ qt_sql_right_String_Integer_notnull "select right(kstr, kint) from
fn_test_not_nullable order by kstr, kint"
+ qt_sql_round_Double "select round(kdbl) from fn_test order by kdbl"
+ qt_sql_round_Double_notnull "select round(kdbl) from fn_test_not_nullable
order by kdbl"
+ qt_sql_round_Double_Integer "select round(kdbl, 2) from fn_test order by
kdbl"
+ qt_sql_round_Double_Integer_notnull "select round(kdbl, 2) from
fn_test_not_nullable order by kdbl"
+ qt_sql_round_DecimalV3S1 "select round(kdcmlv3s1) from fn_test order by
kdcmlv3s1"
+ qt_sql_round_DecimalV3S1_notnull "select round(kdcmlv3s1) from
fn_test_not_nullable order by kdcmlv3s1"
+ qt_sql_round_DecimalV3S2 "select round(kdcmlv3s2) from fn_test order by
kdcmlv3s2"
+ qt_sql_round_DecimalV3S2_notnull "select round(kdcmlv3s2) from
fn_test_not_nullable order by kdcmlv3s2"
+ qt_sql_round_DecimalV3S3 "select round(kdcmlv3s3) from fn_test order by
kdcmlv3s3"
+ qt_sql_round_DecimalV3S3_notnull "select round(kdcmlv3s3) from
fn_test_not_nullable order by kdcmlv3s3"
+ qt_sql_round_DecimalV3S1_Int "select round(kdcmlv3s1, 1) from fn_test
order by kdcmlv3s1"
+ qt_sql_round_DecimalV3S1_Int_notnull "select round(kdcmlv3s1, 1) from
fn_test_not_nullable order by kdcmlv3s1"
+ qt_sql_round_DecimalV3S2_Int "select round(kdcmlv3s2, 1) from fn_test
order by kdcmlv3s2"
+ qt_sql_round_DecimalV3S2_Int_notnull "select round(kdcmlv3s2, 1) from
fn_test_not_nullable order by kdcmlv3s2"
+ qt_sql_round_DecimalV3S3_Int "select round(kdcmlv3s3, 1) from fn_test
order by kdcmlv3s3"
+ qt_sql_round_DecimalV3S3_Int_notnull "select round(kdcmlv3s3, 1) from
fn_test_not_nullable order by kdcmlv3s3"
+ qt_sql_round_bankers_Double "select round_bankers(kdbl) from fn_test order
by kdbl"
+ qt_sql_round_bankers_Double_notnull "select round_bankers(kdbl) from
fn_test_not_nullable order by kdbl"
+ qt_sql_round_bankers_Double_Integer "select round_bankers(kdbl, 2) from
fn_test order by kdbl"
+ qt_sql_round_bankers_Double_Integer_notnull "select round_bankers(kdbl, 2)
from fn_test_not_nullable order by kdbl"
+ qt_sql_round_bankers_DecimalV3S1 "select round_bankers(kdcmlv3s1) from
fn_test order by kdcmlv3s1"
+ qt_sql_round_bankers_DecimalV3S1_notnull "select round_bankers(kdcmlv3s1)
from fn_test_not_nullable order by kdcmlv3s1"
+ qt_sql_round_bankers_DecimalV3S2 "select round_bankers(kdcmlv3s2) from
fn_test order by kdcmlv3s2"
+ qt_sql_round_bankers_DecimalV3S2_notnull "select round_bankers(kdcmlv3s2)
from fn_test_not_nullable order by kdcmlv3s2"
+ qt_sql_round_bankers_DecimalV3S3 "select round_bankers(kdcmlv3s3) from
fn_test order by kdcmlv3s3"
+ qt_sql_round_bankers_DecimalV3S3_notnull "select round_bankers(kdcmlv3s3)
from fn_test_not_nullable order by kdcmlv3s3"
+ qt_sql_round_bankers_DecimalV3S1_Int "select round_bankers(kdcmlv3s1, 1)
from fn_test order by kdcmlv3s1"
+ qt_sql_round_bankers_DecimalV3S1_Int_notnull "select
round_bankers(kdcmlv3s1, 1) from fn_test_not_nullable order by kdcmlv3s1"
+ qt_sql_round_bankers_DecimalV3S2_Int "select round_bankers(kdcmlv3s2, 1)
from fn_test order by kdcmlv3s2"
+ qt_sql_round_bankers_DecimalV3S2_Int_notnull "select
round_bankers(kdcmlv3s2, 1) from fn_test_not_nullable order by kdcmlv3s2"
+ qt_sql_round_bankers_DecimalV3S3_Int "select round_bankers(kdcmlv3s3, 1)
from fn_test order by kdcmlv3s3"
+ qt_sql_round_bankers_DecimalV3S3_Int_notnull "select
round_bankers(kdcmlv3s3, 1) from fn_test_not_nullable order by kdcmlv3s3"
+ qt_sql_rpad_Varchar_Integer_Varchar "select rpad(kvchrs1, kint, kvchrs1)
from fn_test order by kvchrs1, kint, kvchrs1"
+ qt_sql_rpad_Varchar_Integer_Varchar_notnull "select rpad(kvchrs1, kint,
kvchrs1) from fn_test_not_nullable order by kvchrs1, kint, kvchrs1"
+ qt_sql_rpad_String_Integer_String "select rpad(kstr, kint, kstr) from
fn_test order by kstr, kint, kstr"
+ qt_sql_rpad_String_Integer_String_notnull "select rpad(kstr, kint, kstr)
from fn_test_not_nullable order by kstr, kint, kstr"
+ qt_sql_rtrim_Varchar "select rtrim(kvchrs1) from fn_test order by kvchrs1"
+ qt_sql_rtrim_Varchar_notnull "select rtrim(kvchrs1) from
fn_test_not_nullable order by kvchrs1"
+ qt_sql_rtrim_String "select rtrim(kstr) from fn_test order by kstr"
+ qt_sql_rtrim_String_notnull "select rtrim(kstr) from fn_test_not_nullable
order by kstr"
+ qt_sql_rtrim_Varchar_Varchar "select rtrim(kvchrs1, '1') from fn_test
order by kvchrs1"
+ qt_sql_rtrim_Varchar_Varchar_notnull "select rtrim(kvchrs1, '1') from
fn_test_not_nullable order by kvchrs1"
+ qt_sql_rtrim_String_String "select rtrim(kstr, '1') from fn_test order by
kstr"
+ qt_sql_rtrim_String_String_notnull "select rtrim(kstr, '1') from
fn_test_not_nullable order by kstr"
+ sql "SELECT random_bytes(7);"
+ qt_sql_random_bytes "SELECT random_bytes(null);"
+ test {
+ sql " select random_bytes(-1); "
+ exception "argument -1 of function random_bytes at row 0 was invalid"
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]