From 49ee5f62e053b104482b51af0ed5252d085c06d4 Mon Sep 17 00:00:00 2001 From: amorynan Date: Tue, 3 Dec 2024 17:40:02 +0800 Subject: [PATCH 1/4] fixed --- .../functions/scalar/ArrayApply.java | 3 +-- .../functions/scalar/ArrayContains.java | 3 +-- .../functions/scalar/ArrayPosition.java | 3 +-- .../functions/scalar/ArrayPushBack.java | 3 +-- .../functions/scalar/ArrayPushFront.java | 3 +-- .../functions/scalar/ArrayRemove.java | 3 +-- .../functions/scalar/CountEqual.java | 3 +-- .../functions/scalar/MapContainsKey.java | 3 +-- .../functions/scalar/MapContainsValue.java | 3 +-- .../scalar_function/Array.out | 27 +++++++++++++++++++ .../scalar_function/Array.groovy | 17 ++++++++++++ 11 files changed, 53 insertions(+), 18 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayApply.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayApply.java index 86138b82cac170..2ac49b9fa95f47 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayApply.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayApply.java @@ -29,7 +29,6 @@ import org.apache.doris.nereids.types.DataType; import org.apache.doris.nereids.types.VarcharType; import org.apache.doris.nereids.types.coercion.AnyDataType; -import org.apache.doris.nereids.types.coercion.FollowToAnyDataType; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -44,7 +43,7 @@ public class ArrayApply extends ScalarFunction public static final List SIGNATURES = ImmutableList.of( FunctionSignature.retArgType(0) .args(ArrayType.of(new AnyDataType(0)), VarcharType.SYSTEM_DEFAULT, - new FollowToAnyDataType(0))); + new AnyDataType(0))); /** * constructor diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayContains.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayContains.java index 494a4a863c528d..8133e7b2d396d4 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayContains.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayContains.java @@ -25,7 +25,6 @@ import org.apache.doris.nereids.types.ArrayType; import org.apache.doris.nereids.types.BooleanType; import org.apache.doris.nereids.types.coercion.AnyDataType; -import org.apache.doris.nereids.types.coercion.FollowToAnyDataType; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -40,7 +39,7 @@ public class ArrayContains extends ScalarFunction public static final List SIGNATURES = ImmutableList.of( FunctionSignature.ret(BooleanType.INSTANCE) - .args(ArrayType.of(new AnyDataType(0)), new FollowToAnyDataType(0)) + .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) ); /** diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPosition.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPosition.java index 3a94e84d51159e..26cbe945a9f04b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPosition.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPosition.java @@ -25,7 +25,6 @@ import org.apache.doris.nereids.types.ArrayType; import org.apache.doris.nereids.types.BigIntType; import org.apache.doris.nereids.types.coercion.AnyDataType; -import org.apache.doris.nereids.types.coercion.FollowToAnyDataType; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -40,7 +39,7 @@ public class ArrayPosition extends ScalarFunction public static final List SIGNATURES = ImmutableList.of( FunctionSignature.ret(BigIntType.INSTANCE) - .args(ArrayType.of(new AnyDataType(0)), new FollowToAnyDataType(0)) + .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) ); /** diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushBack.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushBack.java index 932c2446132903..fb05be6fb01ac7 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushBack.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushBack.java @@ -25,7 +25,6 @@ import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor; import org.apache.doris.nereids.types.ArrayType; import org.apache.doris.nereids.types.coercion.AnyDataType; -import org.apache.doris.nereids.types.coercion.FollowToAnyDataType; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -40,7 +39,7 @@ public class ArrayPushBack extends ScalarFunction public static final List SIGNATURES = ImmutableList.of( FunctionSignature.retArgType(0) - .args(ArrayType.of(new AnyDataType(0)), new FollowToAnyDataType(0)) + .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) ); /** diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushFront.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushFront.java index 26e1cdd91e3d21..4aa23f2d698716 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushFront.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushFront.java @@ -25,7 +25,6 @@ import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor; import org.apache.doris.nereids.types.ArrayType; import org.apache.doris.nereids.types.coercion.AnyDataType; -import org.apache.doris.nereids.types.coercion.FollowToAnyDataType; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -40,7 +39,7 @@ public class ArrayPushFront extends ScalarFunction public static final List SIGNATURES = ImmutableList.of( FunctionSignature.retArgType(0) - .args(ArrayType.of(new AnyDataType(0)), new FollowToAnyDataType(0)) + .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) ); /** diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayRemove.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayRemove.java index acf731b8bb46c6..8644a57014ce75 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayRemove.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayRemove.java @@ -25,7 +25,6 @@ import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor; import org.apache.doris.nereids.types.ArrayType; import org.apache.doris.nereids.types.coercion.AnyDataType; -import org.apache.doris.nereids.types.coercion.FollowToAnyDataType; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -40,7 +39,7 @@ public class ArrayRemove extends ScalarFunction public static final List SIGNATURES = ImmutableList.of( FunctionSignature.retArgType(0).args( - ArrayType.of(new AnyDataType(0)), new FollowToAnyDataType(0)) + ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) ); /** diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/CountEqual.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/CountEqual.java index 2ba0c9072435a7..975a0e61475793 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/CountEqual.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/CountEqual.java @@ -25,7 +25,6 @@ import org.apache.doris.nereids.types.ArrayType; import org.apache.doris.nereids.types.BigIntType; import org.apache.doris.nereids.types.coercion.AnyDataType; -import org.apache.doris.nereids.types.coercion.FollowToAnyDataType; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -40,7 +39,7 @@ public class CountEqual extends ScalarFunction public static final List SIGNATURES = ImmutableList.of( FunctionSignature.ret(BigIntType.INSTANCE) - .args(ArrayType.of(new AnyDataType(0)), new FollowToAnyDataType(0)) + .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) ); /** diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsKey.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsKey.java index b489bd47963497..79782df302ac08 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsKey.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsKey.java @@ -25,7 +25,6 @@ import org.apache.doris.nereids.types.BooleanType; import org.apache.doris.nereids.types.MapType; import org.apache.doris.nereids.types.coercion.AnyDataType; -import org.apache.doris.nereids.types.coercion.FollowToAnyDataType; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -41,7 +40,7 @@ public class MapContainsKey extends ScalarFunction public static final List SIGNATURES = ImmutableList.of( FunctionSignature.ret(BooleanType.INSTANCE) .args(MapType.of(new AnyDataType(0), AnyDataType.INSTANCE_WITHOUT_INDEX), - new FollowToAnyDataType(0)) + new AnyDataType(0)) ); /** diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsValue.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsValue.java index de77386c889902..7ccc9c1d146cc2 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsValue.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsValue.java @@ -25,7 +25,6 @@ import org.apache.doris.nereids.types.BooleanType; import org.apache.doris.nereids.types.MapType; import org.apache.doris.nereids.types.coercion.AnyDataType; -import org.apache.doris.nereids.types.coercion.FollowToAnyDataType; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -41,7 +40,7 @@ public class MapContainsValue extends ScalarFunction public static final List SIGNATURES = ImmutableList.of( FunctionSignature.ret(BooleanType.INSTANCE) .args(MapType.of(AnyDataType.INSTANCE_WITHOUT_INDEX, new AnyDataType(0)), - new FollowToAnyDataType(0)) + new AnyDataType(0)) ); /** diff --git a/regression-test/data/nereids_function_p0/scalar_function/Array.out b/regression-test/data/nereids_function_p0/scalar_function/Array.out index 9570ac178d7ab7..b2e11fab37e47a 100644 --- a/regression-test/data/nereids_function_p0/scalar_function/Array.out +++ b/regression-test/data/nereids_function_p0/scalar_function/Array.out @@ -16896,3 +16896,30 @@ false -- !sql_array_match_all_18 -- true +-- !sql -- +0 0 + +-- !sql -- +[258] [] + +-- !sql -- +false false + +-- !sql -- +[257, 258] [258, 1, 2, 3] + +-- !sql -- +[1, 258, 257] [1, 2, 3, 258] + +-- !sql -- +[1, 258] [1, 2, 3] + +-- !sql -- +0 0 + +-- !sql -- +false false + +-- !sql -- +false false + diff --git a/regression-test/suites/nereids_function_p0/scalar_function/Array.groovy b/regression-test/suites/nereids_function_p0/scalar_function/Array.groovy index defa553279c84e..7178ef4436e94b 100644 --- a/regression-test/suites/nereids_function_p0/scalar_function/Array.groovy +++ b/regression-test/suites/nereids_function_p0/scalar_function/Array.groovy @@ -1407,4 +1407,21 @@ suite("nereids_scalar_fn_Array") { qt_sql_array_match_any_18 "select array_match_any(x->x=2, array())" qt_sql_array_match_all_18 "select array_match_all(x->x=2, array())" + + // tests for nereids array functions for number overflow cases + qt_sql """ SELECT array_position([1,258],257),array_position([2],258);""" + qt_sql """ select array_apply([258], '>' , 257), array_apply([1,2,3], '>', 258);""" + qt_sql """ select array_contains([258], 257), array_contains([1,2,3], 258);""" + // pushfront and pushback + qt_sql """ select array_pushfront([258], 257), array_pushfront([1,2,3], 258);""" + qt_sql """ select array_pushback([1,258], 257), array_pushback([1,2,3], 258);""" + // array_remove + qt_sql """ select array_remove([1,258], 257), array_remove([1,2,3], 258);""" + // countequal + qt_sql """ select countequal([1,258], 257), countequal([1,2,3], 258);""" + // map_contains_key + qt_sql """ select map_contains_key(map(1,258), 257), map_contains_key(map(2,1), 258);""" + // map_contains_value + qt_sql """ select map_contains_value(map(1,1), 257), map_contains_value(map(1,2), 258);""" + } From f394a3572d47eaf0c30f4dc2726b9e16f801f2ff Mon Sep 17 00:00:00 2001 From: amorynan Date: Tue, 3 Dec 2024 23:56:13 +0800 Subject: [PATCH 2/4] update --- .../functions/scalar/ArrayApply.java | 13 ++++++- .../functions/scalar/ArrayContains.java | 12 ++++++- .../functions/scalar/ArrayPosition.java | 12 ++++++- .../functions/scalar/ArrayPushBack.java | 13 ++++++- .../functions/scalar/ArrayPushFront.java | 13 ++++++- .../functions/scalar/ArrayRemove.java | 13 ++++++- .../functions/scalar/CountEqual.java | 15 +++++++- .../functions/scalar/MapContainsKey.java | 14 +++++++- .../functions/scalar/MapContainsValue.java | 14 +++++++- .../apache/doris/nereids/types/DataType.java | 35 +++++++++++++++++++ 10 files changed, 145 insertions(+), 9 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayApply.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayApply.java index 2ac49b9fa95f47..55e5556bd90174 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayApply.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayApply.java @@ -29,6 +29,7 @@ import org.apache.doris.nereids.types.DataType; import org.apache.doris.nereids.types.VarcharType; import org.apache.doris.nereids.types.coercion.AnyDataType; +import org.apache.doris.nereids.types.coercion.FollowToAnyDataType; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -43,7 +44,7 @@ public class ArrayApply extends ScalarFunction public static final List SIGNATURES = ImmutableList.of( FunctionSignature.retArgType(0) .args(ArrayType.of(new AnyDataType(0)), VarcharType.SYSTEM_DEFAULT, - new AnyDataType(0))); + new FollowToAnyDataType(0))); /** * constructor @@ -92,6 +93,16 @@ public R accept(ExpressionVisitor visitor, C context) { @Override public List getSignatures() { + if (getArgument(0).getDataType().isArrayType() + && + ((ArrayType) getArgument(0).getDataType()).getItemType() + .isSameTypeForComplexTypeParam(getArgument(2).getDataType())) { + // return least common type + return ImmutableList.of( + FunctionSignature.retArgType(0) + .args(ArrayType.of(new AnyDataType(0)), VarcharType.SYSTEM_DEFAULT, + new AnyDataType(0))); + } return SIGNATURES; } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayContains.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayContains.java index 8133e7b2d396d4..12c1b2e341a023 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayContains.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayContains.java @@ -25,6 +25,7 @@ import org.apache.doris.nereids.types.ArrayType; import org.apache.doris.nereids.types.BooleanType; import org.apache.doris.nereids.types.coercion.AnyDataType; +import org.apache.doris.nereids.types.coercion.FollowToAnyDataType; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -39,7 +40,7 @@ public class ArrayContains extends ScalarFunction public static final List SIGNATURES = ImmutableList.of( FunctionSignature.ret(BooleanType.INSTANCE) - .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) + .args(ArrayType.of(new AnyDataType(0)), new FollowToAnyDataType(0)) ); /** @@ -70,6 +71,15 @@ public R accept(ExpressionVisitor visitor, C context) { @Override public List getSignatures() { + if (getArgument(0).getDataType().isArrayType() + && + ((ArrayType) getArgument(0).getDataType()).getItemType() + .isSameTypeForComplexTypeParam(getArgument(1).getDataType())) { + // return least common type + return ImmutableList.of( + FunctionSignature.ret(BooleanType.INSTANCE) + .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0))); + } return SIGNATURES; } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPosition.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPosition.java index 26cbe945a9f04b..219df26dc95f78 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPosition.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPosition.java @@ -25,6 +25,7 @@ import org.apache.doris.nereids.types.ArrayType; import org.apache.doris.nereids.types.BigIntType; import org.apache.doris.nereids.types.coercion.AnyDataType; +import org.apache.doris.nereids.types.coercion.FollowToAnyDataType; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -39,7 +40,7 @@ public class ArrayPosition extends ScalarFunction public static final List SIGNATURES = ImmutableList.of( FunctionSignature.ret(BigIntType.INSTANCE) - .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) + .args(ArrayType.of(new AnyDataType(0)), new FollowToAnyDataType(0)) ); /** @@ -70,6 +71,15 @@ public R accept(ExpressionVisitor visitor, C context) { @Override public List getSignatures() { + if (getArgument(0).getDataType().isArrayType() + && + ((ArrayType) getArgument(0).getDataType()).getItemType() + .isSameTypeForComplexTypeParam(getArgument(1).getDataType())) { + // return least common type + return ImmutableList.of( + FunctionSignature.ret(BigIntType.INSTANCE) + .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0))); + } return SIGNATURES; } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushBack.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushBack.java index fb05be6fb01ac7..2096ee44655868 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushBack.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushBack.java @@ -25,6 +25,7 @@ import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor; import org.apache.doris.nereids.types.ArrayType; import org.apache.doris.nereids.types.coercion.AnyDataType; +import org.apache.doris.nereids.types.coercion.FollowToAnyDataType; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -39,7 +40,7 @@ public class ArrayPushBack extends ScalarFunction public static final List SIGNATURES = ImmutableList.of( FunctionSignature.retArgType(0) - .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) + .args(ArrayType.of(new AnyDataType(0)), new FollowToAnyDataType(0)) ); /** @@ -65,6 +66,16 @@ public R accept(ExpressionVisitor visitor, C context) { @Override public List getSignatures() { + if (getArgument(0).getDataType().isArrayType() + && + ((ArrayType) getArgument(0).getDataType()).getItemType() + .isSameTypeForComplexTypeParam(getArgument(1).getDataType())) { + // return least common type + return ImmutableList.of( + FunctionSignature.retArgType(0) + .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) + ); + } return SIGNATURES; } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushFront.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushFront.java index 4aa23f2d698716..bb2880bdc87f74 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushFront.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushFront.java @@ -25,6 +25,7 @@ import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor; import org.apache.doris.nereids.types.ArrayType; import org.apache.doris.nereids.types.coercion.AnyDataType; +import org.apache.doris.nereids.types.coercion.FollowToAnyDataType; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -39,7 +40,7 @@ public class ArrayPushFront extends ScalarFunction public static final List SIGNATURES = ImmutableList.of( FunctionSignature.retArgType(0) - .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) + .args(ArrayType.of(new AnyDataType(0)), new FollowToAnyDataType(0)) ); /** @@ -65,6 +66,16 @@ public R accept(ExpressionVisitor visitor, C context) { @Override public List getSignatures() { + if (getArgument(0).getDataType().isArrayType() + && + ((ArrayType) getArgument(0).getDataType()).getItemType() + .isSameTypeForComplexTypeParam(getArgument(1).getDataType())) { + // return least common type + return ImmutableList.of( + FunctionSignature.retArgType(0) + .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) + ); + } return SIGNATURES; } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayRemove.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayRemove.java index 8644a57014ce75..38c5e895d75c97 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayRemove.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayRemove.java @@ -25,6 +25,7 @@ import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor; import org.apache.doris.nereids.types.ArrayType; import org.apache.doris.nereids.types.coercion.AnyDataType; +import org.apache.doris.nereids.types.coercion.FollowToAnyDataType; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -39,7 +40,7 @@ public class ArrayRemove extends ScalarFunction public static final List SIGNATURES = ImmutableList.of( FunctionSignature.retArgType(0).args( - ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) + ArrayType.of(new AnyDataType(0)), new FollowToAnyDataType(0)) ); /** @@ -65,6 +66,16 @@ public R accept(ExpressionVisitor visitor, C context) { @Override public List getSignatures() { + if (getArgument(0).getDataType().isArrayType() + && + ((ArrayType) getArgument(0).getDataType()).getItemType() + .isSameTypeForComplexTypeParam(getArgument(1).getDataType())) { + // return least common type + return ImmutableList.of( + FunctionSignature.retArgType(0) + .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) + ); + } return SIGNATURES; } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/CountEqual.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/CountEqual.java index 975a0e61475793..868a8a5dfe427d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/CountEqual.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/CountEqual.java @@ -25,6 +25,7 @@ import org.apache.doris.nereids.types.ArrayType; import org.apache.doris.nereids.types.BigIntType; import org.apache.doris.nereids.types.coercion.AnyDataType; +import org.apache.doris.nereids.types.coercion.FollowToAnyDataType; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -39,7 +40,7 @@ public class CountEqual extends ScalarFunction public static final List SIGNATURES = ImmutableList.of( FunctionSignature.ret(BigIntType.INSTANCE) - .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) + .args(ArrayType.of(new AnyDataType(0)), new FollowToAnyDataType(0)) ); /** @@ -70,6 +71,18 @@ public R accept(ExpressionVisitor visitor, C context) { @Override public List getSignatures() { + // to find out element type in array vs param type, + // if they are different, return first array element type, + // else return least common type between element type and param + if (getArgument(0).getDataType().isArrayType() + && + ((ArrayType) getArgument(0).getDataType()).getItemType() + .isSameTypeForComplexTypeParam(getArgument(1).getDataType())) { + // return least common type + return ImmutableList.of( + FunctionSignature.ret(BigIntType.INSTANCE) + .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0))); + } return SIGNATURES; } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsKey.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsKey.java index 79782df302ac08..6d447b5ccabeac 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsKey.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsKey.java @@ -25,6 +25,7 @@ import org.apache.doris.nereids.types.BooleanType; import org.apache.doris.nereids.types.MapType; import org.apache.doris.nereids.types.coercion.AnyDataType; +import org.apache.doris.nereids.types.coercion.FollowToAnyDataType; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -40,7 +41,7 @@ public class MapContainsKey extends ScalarFunction public static final List SIGNATURES = ImmutableList.of( FunctionSignature.ret(BooleanType.INSTANCE) .args(MapType.of(new AnyDataType(0), AnyDataType.INSTANCE_WITHOUT_INDEX), - new AnyDataType(0)) + new FollowToAnyDataType(0)) ); /** @@ -71,6 +72,17 @@ public R accept(ExpressionVisitor visitor, C context) { @Override public List getSignatures() { + if (getArgument(0).getDataType().isMapType() + && + ((MapType) getArgument(0).getDataType()).getKeyType() + .isSameTypeForComplexTypeParam(getArgument(1).getDataType())) { + // return least common type + return ImmutableList.of( + FunctionSignature.ret(BooleanType.INSTANCE) + .args(MapType.of(new AnyDataType(0), AnyDataType.INSTANCE_WITHOUT_INDEX), + new AnyDataType(0)) + ); + } return SIGNATURES; } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsValue.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsValue.java index 7ccc9c1d146cc2..1a8c81a62d869f 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsValue.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsValue.java @@ -25,6 +25,7 @@ import org.apache.doris.nereids.types.BooleanType; import org.apache.doris.nereids.types.MapType; import org.apache.doris.nereids.types.coercion.AnyDataType; +import org.apache.doris.nereids.types.coercion.FollowToAnyDataType; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -40,7 +41,7 @@ public class MapContainsValue extends ScalarFunction public static final List SIGNATURES = ImmutableList.of( FunctionSignature.ret(BooleanType.INSTANCE) .args(MapType.of(AnyDataType.INSTANCE_WITHOUT_INDEX, new AnyDataType(0)), - new AnyDataType(0)) + new FollowToAnyDataType(0)) ); /** @@ -71,6 +72,17 @@ public R accept(ExpressionVisitor visitor, C context) { @Override public List getSignatures() { + if (getArgument(0).getDataType().isMapType() + && + ((MapType) getArgument(0).getDataType()).getValueType() + .isSameTypeForComplexTypeParam(getArgument(1).getDataType())) { + // return least common type + return ImmutableList.of( + FunctionSignature.ret(BooleanType.INSTANCE) + .args(MapType.of(AnyDataType.INSTANCE_WITHOUT_INDEX, new AnyDataType(0)), + new AnyDataType(0)) + ); + } return SIGNATURES; } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DataType.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DataType.java index 1d5f69c5366e0d..9b77017f6de8cb 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DataType.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/types/DataType.java @@ -644,6 +644,41 @@ public DataType promotion() { } } + /** + * whether the param dataType is same-like type for nested in complex type + * same-like type means: string-like, date-like, number type + */ + public boolean isSameTypeForComplexTypeParam(DataType paramType) { + if (this.isArrayType() && paramType.isArrayType()) { + return ((ArrayType) this).getItemType() + .isSameTypeForComplexTypeParam(((ArrayType) paramType).getItemType()); + } else if (this.isMapType() && paramType.isMapType()) { + MapType thisMapType = (MapType) this; + MapType otherMapType = (MapType) paramType; + return thisMapType.getKeyType().isSameTypeForComplexTypeParam(otherMapType.getKeyType()) + && thisMapType.getValueType().isSameTypeForComplexTypeParam(otherMapType.getValueType()); + } else if (this.isStructType() && paramType.isStructType()) { + StructType thisStructType = (StructType) this; + StructType otherStructType = (StructType) paramType; + if (thisStructType.getFields().size() != otherStructType.getFields().size()) { + return false; + } + for (int i = 0; i < thisStructType.getFields().size(); i++) { + if (!thisStructType.getFields().get(i).getDataType().isSameTypeForComplexTypeParam( + otherStructType.getFields().get(i).getDataType())) { + return false; + } + } + return true; + } else if (this.isStringLikeType() && paramType.isStringLikeType()) { + return true; + } else if (this.isDateLikeType() && paramType.isDateLikeType()) { + return true; + } else { + return this.isNumericType() && paramType.isNumericType(); + } + } + /** getAllPromotions */ public List getAllPromotions() { if (this instanceof ArrayType) { From d031e66b98f0f3037d7d829670d2a0ba39dcfc64 Mon Sep 17 00:00:00 2001 From: amorynan Date: Wed, 4 Dec 2024 17:33:00 +0800 Subject: [PATCH 3/4] fix comment --- .../expressions/functions/scalar/ArrayApply.java | 10 ++++++---- .../expressions/functions/scalar/ArrayContains.java | 8 +++++--- .../expressions/functions/scalar/ArrayPosition.java | 9 ++++++--- .../expressions/functions/scalar/ArrayPushBack.java | 10 ++++++---- .../expressions/functions/scalar/ArrayPushFront.java | 10 ++++++---- .../expressions/functions/scalar/ArrayRemove.java | 10 ++++++---- .../expressions/functions/scalar/CountEqual.java | 9 ++++++--- .../expressions/functions/scalar/MapContainsKey.java | 12 +++++++----- .../functions/scalar/MapContainsValue.java | 12 +++++++----- 9 files changed, 55 insertions(+), 35 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayApply.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayApply.java index 55e5556bd90174..a2c912417335e8 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayApply.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayApply.java @@ -46,6 +46,11 @@ public class ArrayApply extends ScalarFunction .args(ArrayType.of(new AnyDataType(0)), VarcharType.SYSTEM_DEFAULT, new FollowToAnyDataType(0))); + public static final List SIGNATURES_ = ImmutableList.of( + FunctionSignature.retArgType(0) + .args(ArrayType.of(new AnyDataType(0)), VarcharType.SYSTEM_DEFAULT, + new AnyDataType(0))); + /** * constructor */ @@ -98,10 +103,7 @@ public List getSignatures() { ((ArrayType) getArgument(0).getDataType()).getItemType() .isSameTypeForComplexTypeParam(getArgument(2).getDataType())) { // return least common type - return ImmutableList.of( - FunctionSignature.retArgType(0) - .args(ArrayType.of(new AnyDataType(0)), VarcharType.SYSTEM_DEFAULT, - new AnyDataType(0))); + return SIGNATURES_; } return SIGNATURES; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayContains.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayContains.java index 12c1b2e341a023..2926e03b7bd077 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayContains.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayContains.java @@ -42,6 +42,10 @@ public class ArrayContains extends ScalarFunction FunctionSignature.ret(BooleanType.INSTANCE) .args(ArrayType.of(new AnyDataType(0)), new FollowToAnyDataType(0)) ); + public static final List SIGNATURES_ = ImmutableList.of( + FunctionSignature.ret(BooleanType.INSTANCE) + .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) + ); /** * constructor with 2 arguments. @@ -76,9 +80,7 @@ public List getSignatures() { ((ArrayType) getArgument(0).getDataType()).getItemType() .isSameTypeForComplexTypeParam(getArgument(1).getDataType())) { // return least common type - return ImmutableList.of( - FunctionSignature.ret(BooleanType.INSTANCE) - .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0))); + return SIGNATURES_; } return SIGNATURES; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPosition.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPosition.java index 219df26dc95f78..1d6979c76ffa27 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPosition.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPosition.java @@ -43,6 +43,11 @@ public class ArrayPosition extends ScalarFunction .args(ArrayType.of(new AnyDataType(0)), new FollowToAnyDataType(0)) ); + public static final List SIGNATURES_ = ImmutableList.of( + FunctionSignature.ret(BigIntType.INSTANCE) + .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) + ); + /** * constructor with 2 arguments. */ @@ -76,9 +81,7 @@ public List getSignatures() { ((ArrayType) getArgument(0).getDataType()).getItemType() .isSameTypeForComplexTypeParam(getArgument(1).getDataType())) { // return least common type - return ImmutableList.of( - FunctionSignature.ret(BigIntType.INSTANCE) - .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0))); + return SIGNATURES_; } return SIGNATURES; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushBack.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushBack.java index 2096ee44655868..1c4d9ff297a647 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushBack.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushBack.java @@ -43,6 +43,11 @@ public class ArrayPushBack extends ScalarFunction .args(ArrayType.of(new AnyDataType(0)), new FollowToAnyDataType(0)) ); + public static final List SIGNATURES_ = ImmutableList.of( + FunctionSignature.retArgType(0) + .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) + ); + /** * constructor with 1 argument. */ @@ -71,10 +76,7 @@ public List getSignatures() { ((ArrayType) getArgument(0).getDataType()).getItemType() .isSameTypeForComplexTypeParam(getArgument(1).getDataType())) { // return least common type - return ImmutableList.of( - FunctionSignature.retArgType(0) - .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) - ); + return SIGNATURES_; } return SIGNATURES; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushFront.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushFront.java index bb2880bdc87f74..ff974b1136c2a6 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushFront.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushFront.java @@ -43,6 +43,11 @@ public class ArrayPushFront extends ScalarFunction .args(ArrayType.of(new AnyDataType(0)), new FollowToAnyDataType(0)) ); + public static final List SIGNATURES_ = ImmutableList.of( + FunctionSignature.retArgType(0) + .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) + ); + /** * constructor with 1 argument. */ @@ -71,10 +76,7 @@ public List getSignatures() { ((ArrayType) getArgument(0).getDataType()).getItemType() .isSameTypeForComplexTypeParam(getArgument(1).getDataType())) { // return least common type - return ImmutableList.of( - FunctionSignature.retArgType(0) - .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) - ); + return SIGNATURES_; } return SIGNATURES; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayRemove.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayRemove.java index 38c5e895d75c97..9f69e2f32fff77 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayRemove.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayRemove.java @@ -43,6 +43,11 @@ public class ArrayRemove extends ScalarFunction ArrayType.of(new AnyDataType(0)), new FollowToAnyDataType(0)) ); + public static final List SIGNATURES_ = ImmutableList.of( + FunctionSignature.retArgType(0).args( + ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) + ); + /** * constructor with 2 arguments. */ @@ -71,10 +76,7 @@ public List getSignatures() { ((ArrayType) getArgument(0).getDataType()).getItemType() .isSameTypeForComplexTypeParam(getArgument(1).getDataType())) { // return least common type - return ImmutableList.of( - FunctionSignature.retArgType(0) - .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) - ); + return SIGNATURES_; } return SIGNATURES; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/CountEqual.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/CountEqual.java index 868a8a5dfe427d..95195a1859b913 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/CountEqual.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/CountEqual.java @@ -43,6 +43,11 @@ public class CountEqual extends ScalarFunction .args(ArrayType.of(new AnyDataType(0)), new FollowToAnyDataType(0)) ); + public static final List SIGNATURES_ = ImmutableList.of( + FunctionSignature.ret(BigIntType.INSTANCE) + .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) + ); + /** * constructor with 2 arguments. */ @@ -79,9 +84,7 @@ public List getSignatures() { ((ArrayType) getArgument(0).getDataType()).getItemType() .isSameTypeForComplexTypeParam(getArgument(1).getDataType())) { // return least common type - return ImmutableList.of( - FunctionSignature.ret(BigIntType.INSTANCE) - .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0))); + return SIGNATURES_; } return SIGNATURES; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsKey.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsKey.java index 6d447b5ccabeac..43de16903203bb 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsKey.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsKey.java @@ -44,6 +44,12 @@ public class MapContainsKey extends ScalarFunction new FollowToAnyDataType(0)) ); + public static final List SIGNATURES_ = ImmutableList.of( + FunctionSignature.ret(BooleanType.INSTANCE) + .args(MapType.of(new AnyDataType(0), AnyDataType.INSTANCE_WITHOUT_INDEX), + new AnyDataType(0)) + ); + /** * constructor with 2 arguments. */ @@ -77,11 +83,7 @@ public List getSignatures() { ((MapType) getArgument(0).getDataType()).getKeyType() .isSameTypeForComplexTypeParam(getArgument(1).getDataType())) { // return least common type - return ImmutableList.of( - FunctionSignature.ret(BooleanType.INSTANCE) - .args(MapType.of(new AnyDataType(0), AnyDataType.INSTANCE_WITHOUT_INDEX), - new AnyDataType(0)) - ); + return SIGNATURES_; } return SIGNATURES; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsValue.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsValue.java index 1a8c81a62d869f..97be334750d031 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsValue.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsValue.java @@ -44,6 +44,12 @@ public class MapContainsValue extends ScalarFunction new FollowToAnyDataType(0)) ); + public static final List SIGNATURES_ = ImmutableList.of( + FunctionSignature.ret(BooleanType.INSTANCE) + .args(MapType.of(AnyDataType.INSTANCE_WITHOUT_INDEX, new AnyDataType(0)), + new AnyDataType(0)) + ); + /** * constructor with 2 arguments. */ @@ -77,11 +83,7 @@ public List getSignatures() { ((MapType) getArgument(0).getDataType()).getValueType() .isSameTypeForComplexTypeParam(getArgument(1).getDataType())) { // return least common type - return ImmutableList.of( - FunctionSignature.ret(BooleanType.INSTANCE) - .args(MapType.of(AnyDataType.INSTANCE_WITHOUT_INDEX, new AnyDataType(0)), - new AnyDataType(0)) - ); + return SIGNATURES_; } return SIGNATURES; } From c5c5c205f361733d13feeb765059020dfce6c7c5 Mon Sep 17 00:00:00 2001 From: amorynan Date: Wed, 4 Dec 2024 18:53:40 +0800 Subject: [PATCH 4/4] update name --- .../trees/expressions/functions/scalar/ArrayApply.java | 8 ++++---- .../trees/expressions/functions/scalar/ArrayContains.java | 8 ++++---- .../trees/expressions/functions/scalar/ArrayPosition.java | 8 ++++---- .../trees/expressions/functions/scalar/ArrayPushBack.java | 8 ++++---- .../expressions/functions/scalar/ArrayPushFront.java | 8 ++++---- .../trees/expressions/functions/scalar/ArrayRemove.java | 8 ++++---- .../trees/expressions/functions/scalar/CountEqual.java | 8 ++++---- .../expressions/functions/scalar/MapContainsKey.java | 8 ++++---- .../expressions/functions/scalar/MapContainsValue.java | 8 ++++---- 9 files changed, 36 insertions(+), 36 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayApply.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayApply.java index a2c912417335e8..fea589a7e14fd7 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayApply.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayApply.java @@ -41,12 +41,12 @@ */ public class ArrayApply extends ScalarFunction implements BinaryExpression, ExplicitlyCastableSignature, PropagateNullable { - public static final List SIGNATURES = ImmutableList.of( + public static final List FOLLOW_DATATYPE_SIGNATURE = ImmutableList.of( FunctionSignature.retArgType(0) .args(ArrayType.of(new AnyDataType(0)), VarcharType.SYSTEM_DEFAULT, new FollowToAnyDataType(0))); - public static final List SIGNATURES_ = ImmutableList.of( + public static final List MIN_COMMON_TYPE_SIGNATURES = ImmutableList.of( FunctionSignature.retArgType(0) .args(ArrayType.of(new AnyDataType(0)), VarcharType.SYSTEM_DEFAULT, new AnyDataType(0))); @@ -103,8 +103,8 @@ public List getSignatures() { ((ArrayType) getArgument(0).getDataType()).getItemType() .isSameTypeForComplexTypeParam(getArgument(2).getDataType())) { // return least common type - return SIGNATURES_; + return MIN_COMMON_TYPE_SIGNATURES; } - return SIGNATURES; + return FOLLOW_DATATYPE_SIGNATURE; } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayContains.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayContains.java index 2926e03b7bd077..4eee7066584da2 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayContains.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayContains.java @@ -38,11 +38,11 @@ public class ArrayContains extends ScalarFunction implements BinaryExpression, ExplicitlyCastableSignature { - public static final List SIGNATURES = ImmutableList.of( + public static final List FOLLOW_DATATYPE_SIGNATURE = ImmutableList.of( FunctionSignature.ret(BooleanType.INSTANCE) .args(ArrayType.of(new AnyDataType(0)), new FollowToAnyDataType(0)) ); - public static final List SIGNATURES_ = ImmutableList.of( + public static final List MIN_COMMON_TYPE_SIGNATURES = ImmutableList.of( FunctionSignature.ret(BooleanType.INSTANCE) .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) ); @@ -80,8 +80,8 @@ public List getSignatures() { ((ArrayType) getArgument(0).getDataType()).getItemType() .isSameTypeForComplexTypeParam(getArgument(1).getDataType())) { // return least common type - return SIGNATURES_; + return MIN_COMMON_TYPE_SIGNATURES; } - return SIGNATURES; + return FOLLOW_DATATYPE_SIGNATURE; } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPosition.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPosition.java index 1d6979c76ffa27..b782a560719c5d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPosition.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPosition.java @@ -38,12 +38,12 @@ public class ArrayPosition extends ScalarFunction implements BinaryExpression, ExplicitlyCastableSignature { - public static final List SIGNATURES = ImmutableList.of( + public static final List FOLLOW_DATATYPE_SIGNATURE = ImmutableList.of( FunctionSignature.ret(BigIntType.INSTANCE) .args(ArrayType.of(new AnyDataType(0)), new FollowToAnyDataType(0)) ); - public static final List SIGNATURES_ = ImmutableList.of( + public static final List MIN_COMMON_TYPE_SIGNATURES = ImmutableList.of( FunctionSignature.ret(BigIntType.INSTANCE) .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) ); @@ -81,8 +81,8 @@ public List getSignatures() { ((ArrayType) getArgument(0).getDataType()).getItemType() .isSameTypeForComplexTypeParam(getArgument(1).getDataType())) { // return least common type - return SIGNATURES_; + return MIN_COMMON_TYPE_SIGNATURES; } - return SIGNATURES; + return FOLLOW_DATATYPE_SIGNATURE; } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushBack.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushBack.java index 1c4d9ff297a647..a96c48c4b274a1 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushBack.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushBack.java @@ -38,12 +38,12 @@ public class ArrayPushBack extends ScalarFunction implements UnaryExpression, ExplicitlyCastableSignature, AlwaysNullable { - public static final List SIGNATURES = ImmutableList.of( + public static final List FOLLOW_DATATYPE_SIGNATURE = ImmutableList.of( FunctionSignature.retArgType(0) .args(ArrayType.of(new AnyDataType(0)), new FollowToAnyDataType(0)) ); - public static final List SIGNATURES_ = ImmutableList.of( + public static final List MIN_COMMON_TYPE_SIGNATURES = ImmutableList.of( FunctionSignature.retArgType(0) .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) ); @@ -76,8 +76,8 @@ public List getSignatures() { ((ArrayType) getArgument(0).getDataType()).getItemType() .isSameTypeForComplexTypeParam(getArgument(1).getDataType())) { // return least common type - return SIGNATURES_; + return MIN_COMMON_TYPE_SIGNATURES; } - return SIGNATURES; + return FOLLOW_DATATYPE_SIGNATURE; } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushFront.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushFront.java index ff974b1136c2a6..e20fea5cc20543 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushFront.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayPushFront.java @@ -38,12 +38,12 @@ public class ArrayPushFront extends ScalarFunction implements UnaryExpression, ExplicitlyCastableSignature, AlwaysNullable { - public static final List SIGNATURES = ImmutableList.of( + public static final List FOLLOW_DATATYPE_SIGNATURE = ImmutableList.of( FunctionSignature.retArgType(0) .args(ArrayType.of(new AnyDataType(0)), new FollowToAnyDataType(0)) ); - public static final List SIGNATURES_ = ImmutableList.of( + public static final List MIN_COMMON_TYPE_SIGNATURES = ImmutableList.of( FunctionSignature.retArgType(0) .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) ); @@ -76,8 +76,8 @@ public List getSignatures() { ((ArrayType) getArgument(0).getDataType()).getItemType() .isSameTypeForComplexTypeParam(getArgument(1).getDataType())) { // return least common type - return SIGNATURES_; + return MIN_COMMON_TYPE_SIGNATURES; } - return SIGNATURES; + return FOLLOW_DATATYPE_SIGNATURE; } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayRemove.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayRemove.java index 9f69e2f32fff77..f5996776867dec 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayRemove.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ArrayRemove.java @@ -38,12 +38,12 @@ public class ArrayRemove extends ScalarFunction implements BinaryExpression, ExplicitlyCastableSignature, PropagateNullable { - public static final List SIGNATURES = ImmutableList.of( + public static final List FOLLOW_DATATYPE_SIGNATURE = ImmutableList.of( FunctionSignature.retArgType(0).args( ArrayType.of(new AnyDataType(0)), new FollowToAnyDataType(0)) ); - public static final List SIGNATURES_ = ImmutableList.of( + public static final List MIN_COMMON_TYPE_SIGNATURES = ImmutableList.of( FunctionSignature.retArgType(0).args( ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) ); @@ -76,8 +76,8 @@ public List getSignatures() { ((ArrayType) getArgument(0).getDataType()).getItemType() .isSameTypeForComplexTypeParam(getArgument(1).getDataType())) { // return least common type - return SIGNATURES_; + return MIN_COMMON_TYPE_SIGNATURES; } - return SIGNATURES; + return FOLLOW_DATATYPE_SIGNATURE; } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/CountEqual.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/CountEqual.java index 95195a1859b913..bb76aecde31f07 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/CountEqual.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/CountEqual.java @@ -38,12 +38,12 @@ public class CountEqual extends ScalarFunction implements BinaryExpression, ExplicitlyCastableSignature { - public static final List SIGNATURES = ImmutableList.of( + public static final List FOLLOW_DATATYPE_SIGNATURE = ImmutableList.of( FunctionSignature.ret(BigIntType.INSTANCE) .args(ArrayType.of(new AnyDataType(0)), new FollowToAnyDataType(0)) ); - public static final List SIGNATURES_ = ImmutableList.of( + public static final List MIN_COMMON_TYPE_SIGNATURES = ImmutableList.of( FunctionSignature.ret(BigIntType.INSTANCE) .args(ArrayType.of(new AnyDataType(0)), new AnyDataType(0)) ); @@ -84,8 +84,8 @@ public List getSignatures() { ((ArrayType) getArgument(0).getDataType()).getItemType() .isSameTypeForComplexTypeParam(getArgument(1).getDataType())) { // return least common type - return SIGNATURES_; + return MIN_COMMON_TYPE_SIGNATURES; } - return SIGNATURES; + return FOLLOW_DATATYPE_SIGNATURE; } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsKey.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsKey.java index 43de16903203bb..798101e1a2bde5 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsKey.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsKey.java @@ -38,13 +38,13 @@ public class MapContainsKey extends ScalarFunction implements BinaryExpression, ExplicitlyCastableSignature { - public static final List SIGNATURES = ImmutableList.of( + public static final List FOLLOW_DATATYPE_SIGNATURE = ImmutableList.of( FunctionSignature.ret(BooleanType.INSTANCE) .args(MapType.of(new AnyDataType(0), AnyDataType.INSTANCE_WITHOUT_INDEX), new FollowToAnyDataType(0)) ); - public static final List SIGNATURES_ = ImmutableList.of( + public static final List MIN_COMMON_TYPE_SIGNATURES = ImmutableList.of( FunctionSignature.ret(BooleanType.INSTANCE) .args(MapType.of(new AnyDataType(0), AnyDataType.INSTANCE_WITHOUT_INDEX), new AnyDataType(0)) @@ -83,8 +83,8 @@ public List getSignatures() { ((MapType) getArgument(0).getDataType()).getKeyType() .isSameTypeForComplexTypeParam(getArgument(1).getDataType())) { // return least common type - return SIGNATURES_; + return MIN_COMMON_TYPE_SIGNATURES; } - return SIGNATURES; + return FOLLOW_DATATYPE_SIGNATURE; } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsValue.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsValue.java index 97be334750d031..0a8bcdc49c5e71 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsValue.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/MapContainsValue.java @@ -38,13 +38,13 @@ public class MapContainsValue extends ScalarFunction implements BinaryExpression, ExplicitlyCastableSignature { - public static final List SIGNATURES = ImmutableList.of( + public static final List FOLLOW_DATATYPE_SIGNATURE = ImmutableList.of( FunctionSignature.ret(BooleanType.INSTANCE) .args(MapType.of(AnyDataType.INSTANCE_WITHOUT_INDEX, new AnyDataType(0)), new FollowToAnyDataType(0)) ); - public static final List SIGNATURES_ = ImmutableList.of( + public static final List MIN_COMMON_TYPE_SIGNATURES = ImmutableList.of( FunctionSignature.ret(BooleanType.INSTANCE) .args(MapType.of(AnyDataType.INSTANCE_WITHOUT_INDEX, new AnyDataType(0)), new AnyDataType(0)) @@ -83,8 +83,8 @@ public List getSignatures() { ((MapType) getArgument(0).getDataType()).getValueType() .isSameTypeForComplexTypeParam(getArgument(1).getDataType())) { // return least common type - return SIGNATURES_; + return MIN_COMMON_TYPE_SIGNATURES; } - return SIGNATURES; + return FOLLOW_DATATYPE_SIGNATURE; } }