This is an automated email from the ASF dual-hosted git repository.
morrysnow 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 d56000e9242 [opt](Nereids) polish aggregate function signature
matching (#39352) (#39460)
d56000e9242 is described below
commit d56000e9242a907952f39118b6aac05d882554a7
Author: morrySnow <[email protected]>
AuthorDate: Fri Aug 16 13:57:11 2024 +0800
[opt](Nereids) polish aggregate function signature matching (#39352)
(#39460)
pick from master #39352
use double to match string
- corr
- covar
- covar_samp
- stddev
- stddev_samp
use largeint to match string
- group_bit_and
- group_bit_or
- group_git_xor
use double to match decimalv3
- topn_weighted
optimize error message
- multi_distinct_sum
- multi_distinct_sum0
---
.../expressions/functions/agg/AvgWeighted.java | 10 +--
.../trees/expressions/functions/agg/BitmapAgg.java | 8 +--
.../expressions/functions/agg/CollectList.java | 6 --
.../trees/expressions/functions/agg/Corr.java | 10 +--
.../trees/expressions/functions/agg/Covar.java | 10 +--
.../trees/expressions/functions/agg/CovarSamp.java | 10 +--
.../expressions/functions/agg/GroupBitAnd.java | 8 +--
.../expressions/functions/agg/GroupBitOr.java | 8 +--
.../expressions/functions/agg/GroupBitXor.java | 8 +--
.../functions/agg/MultiDistinctSum.java | 17 ++---
.../functions/agg/MultiDistinctSum0.java | 17 ++---
.../trees/expressions/functions/agg/Stddev.java | 6 +-
.../expressions/functions/agg/StddevSamp.java | 6 +-
.../expressions/functions/agg/TopNWeighted.java | 73 ++++++++++++----------
.../trees/expressions/functions/agg/Variance.java | 6 +-
.../expressions/functions/agg/VarianceSamp.java | 6 +-
.../data/nereids_function_p0/type_coercion.out | 27 ++++++++
.../nereids_function_p0/type_coercion.groovy | 28 +++++++++
18 files changed, 153 insertions(+), 111 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/AvgWeighted.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/AvgWeighted.java
index e2054878d9c..c2a79257c3b 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/AvgWeighted.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/AvgWeighted.java
@@ -44,12 +44,12 @@ public class AvgWeighted extends AggregateFunction
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
FunctionSignature.ret(DoubleType.INSTANCE).args(DoubleType.INSTANCE,
DoubleType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(TinyIntType.INSTANCE,
DoubleType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(SmallIntType.INSTANCE,
DoubleType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(IntegerType.INSTANCE,
DoubleType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(DecimalV2Type.SYSTEM_DEFAULT,
DoubleType.INSTANCE),
FunctionSignature.ret(DoubleType.INSTANCE).args(BigIntType.INSTANCE,
DoubleType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(FloatType.INSTANCE,
DoubleType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(DecimalV2Type.SYSTEM_DEFAULT,
DoubleType.INSTANCE)
+
FunctionSignature.ret(DoubleType.INSTANCE).args(IntegerType.INSTANCE,
DoubleType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(SmallIntType.INSTANCE,
DoubleType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(TinyIntType.INSTANCE,
DoubleType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(FloatType.INSTANCE,
DoubleType.INSTANCE)
);
/**
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/BitmapAgg.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/BitmapAgg.java
index 5b348b07318..1d32910e1a9 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/BitmapAgg.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/BitmapAgg.java
@@ -39,11 +39,11 @@ import java.util.List;
public class BitmapAgg extends AggregateFunction
implements UnaryExpression, ExplicitlyCastableSignature,
AlwaysNotNullable {
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
-
FunctionSignature.ret(BitmapType.INSTANCE).args(TinyIntType.INSTANCE),
-
FunctionSignature.ret(BitmapType.INSTANCE).args(SmallIntType.INSTANCE),
+
FunctionSignature.ret(BitmapType.INSTANCE).args(BigIntType.INSTANCE),
FunctionSignature.ret(BitmapType.INSTANCE).args(IntegerType.INSTANCE),
-
FunctionSignature.ret(BitmapType.INSTANCE).args(BigIntType.INSTANCE)
- );
+
FunctionSignature.ret(BitmapType.INSTANCE).args(SmallIntType.INSTANCE),
+
FunctionSignature.ret(BitmapType.INSTANCE).args(TinyIntType.INSTANCE)
+ );
public BitmapAgg(Expression arg0) {
super("bitmap_agg", arg0);
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/CollectList.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/CollectList.java
index 2aef07b4813..470054aa894 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/CollectList.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/CollectList.java
@@ -73,12 +73,6 @@ public class CollectList extends AggregateFunction
super("collect_list", distinct, arg0, arg1);
}
- @Override
- public FunctionSignature computeSignature(FunctionSignature signature) {
- signature = signature.withReturnType(ArrayType.of(getArgumentType(0)));
- return super.computeSignature(signature);
- }
-
/**
* withDistinctAndChildren.
*/
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Corr.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Corr.java
index b88b54d1378..6cdbeaf913a 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Corr.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Corr.java
@@ -42,12 +42,12 @@ public class Corr extends AggregateFunction
implements UnaryExpression, ExplicitlyCastableSignature,
PropagateNullable {
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
-
FunctionSignature.ret(DoubleType.INSTANCE).args(TinyIntType.INSTANCE,
TinyIntType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(SmallIntType.INSTANCE,
SmallIntType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(IntegerType.INSTANCE,
IntegerType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(DoubleType.INSTANCE,
DoubleType.INSTANCE),
FunctionSignature.ret(DoubleType.INSTANCE).args(BigIntType.INSTANCE,
BigIntType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(FloatType.INSTANCE,
FloatType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(DoubleType.INSTANCE,
DoubleType.INSTANCE)
+
FunctionSignature.ret(DoubleType.INSTANCE).args(IntegerType.INSTANCE,
IntegerType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(SmallIntType.INSTANCE,
SmallIntType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(TinyIntType.INSTANCE,
TinyIntType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(FloatType.INSTANCE,
FloatType.INSTANCE)
);
/**
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Covar.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Covar.java
index 12096f547c8..2bebde3b4ed 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Covar.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Covar.java
@@ -42,12 +42,12 @@ public class Covar extends AggregateFunction
implements UnaryExpression, ExplicitlyCastableSignature,
AlwaysNullable {
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
-
FunctionSignature.ret(DoubleType.INSTANCE).args(TinyIntType.INSTANCE,
TinyIntType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(SmallIntType.INSTANCE,
SmallIntType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(IntegerType.INSTANCE,
IntegerType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(DoubleType.INSTANCE,
DoubleType.INSTANCE),
FunctionSignature.ret(DoubleType.INSTANCE).args(BigIntType.INSTANCE,
BigIntType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(FloatType.INSTANCE,
FloatType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(DoubleType.INSTANCE,
DoubleType.INSTANCE)
+
FunctionSignature.ret(DoubleType.INSTANCE).args(IntegerType.INSTANCE,
IntegerType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(SmallIntType.INSTANCE,
SmallIntType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(TinyIntType.INSTANCE,
TinyIntType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(FloatType.INSTANCE,
FloatType.INSTANCE)
);
/**
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/CovarSamp.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/CovarSamp.java
index 310ce2ca211..2693d7636f0 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/CovarSamp.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/CovarSamp.java
@@ -42,12 +42,12 @@ public class CovarSamp extends AggregateFunction
implements UnaryExpression, ExplicitlyCastableSignature,
AlwaysNullable {
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
-
FunctionSignature.ret(DoubleType.INSTANCE).args(TinyIntType.INSTANCE,
TinyIntType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(SmallIntType.INSTANCE,
SmallIntType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(IntegerType.INSTANCE,
IntegerType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(DoubleType.INSTANCE,
DoubleType.INSTANCE),
FunctionSignature.ret(DoubleType.INSTANCE).args(BigIntType.INSTANCE,
BigIntType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(FloatType.INSTANCE,
FloatType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(DoubleType.INSTANCE,
DoubleType.INSTANCE)
+
FunctionSignature.ret(DoubleType.INSTANCE).args(IntegerType.INSTANCE,
IntegerType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(SmallIntType.INSTANCE,
SmallIntType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(TinyIntType.INSTANCE,
TinyIntType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(FloatType.INSTANCE,
FloatType.INSTANCE)
);
/**
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/GroupBitAnd.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/GroupBitAnd.java
index c0b420f03b7..eece53f2a58 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/GroupBitAnd.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/GroupBitAnd.java
@@ -40,11 +40,11 @@ public class GroupBitAnd extends NullableAggregateFunction
implements UnaryExpression, ExplicitlyCastableSignature {
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
-
FunctionSignature.ret(TinyIntType.INSTANCE).args(TinyIntType.INSTANCE),
-
FunctionSignature.ret(SmallIntType.INSTANCE).args(SmallIntType.INSTANCE),
-
FunctionSignature.ret(IntegerType.INSTANCE).args(IntegerType.INSTANCE),
+
FunctionSignature.ret(LargeIntType.INSTANCE).args(LargeIntType.INSTANCE),
FunctionSignature.ret(BigIntType.INSTANCE).args(BigIntType.INSTANCE),
-
FunctionSignature.ret(LargeIntType.INSTANCE).args(LargeIntType.INSTANCE)
+
FunctionSignature.ret(IntegerType.INSTANCE).args(IntegerType.INSTANCE),
+
FunctionSignature.ret(SmallIntType.INSTANCE).args(SmallIntType.INSTANCE),
+
FunctionSignature.ret(TinyIntType.INSTANCE).args(TinyIntType.INSTANCE)
);
/**
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/GroupBitOr.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/GroupBitOr.java
index 4f9ef1669cd..35ba1597259 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/GroupBitOr.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/GroupBitOr.java
@@ -41,11 +41,11 @@ public class GroupBitOr extends NullableAggregateFunction
implements UnaryExpression, ExplicitlyCastableSignature {
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
-
FunctionSignature.ret(TinyIntType.INSTANCE).args(TinyIntType.INSTANCE),
-
FunctionSignature.ret(SmallIntType.INSTANCE).args(SmallIntType.INSTANCE),
-
FunctionSignature.ret(IntegerType.INSTANCE).args(IntegerType.INSTANCE),
+
FunctionSignature.ret(LargeIntType.INSTANCE).args(LargeIntType.INSTANCE),
FunctionSignature.ret(BigIntType.INSTANCE).args(BigIntType.INSTANCE),
-
FunctionSignature.ret(LargeIntType.INSTANCE).args(LargeIntType.INSTANCE)
+
FunctionSignature.ret(IntegerType.INSTANCE).args(IntegerType.INSTANCE),
+
FunctionSignature.ret(SmallIntType.INSTANCE).args(SmallIntType.INSTANCE),
+
FunctionSignature.ret(TinyIntType.INSTANCE).args(TinyIntType.INSTANCE)
);
/**
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/GroupBitXor.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/GroupBitXor.java
index 477ec2ee97a..58953524f28 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/GroupBitXor.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/GroupBitXor.java
@@ -41,11 +41,11 @@ public class GroupBitXor extends NullableAggregateFunction
implements UnaryExpression, ExplicitlyCastableSignature {
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
-
FunctionSignature.ret(TinyIntType.INSTANCE).args(TinyIntType.INSTANCE),
-
FunctionSignature.ret(SmallIntType.INSTANCE).args(SmallIntType.INSTANCE),
-
FunctionSignature.ret(IntegerType.INSTANCE).args(IntegerType.INSTANCE),
+
FunctionSignature.ret(LargeIntType.INSTANCE).args(LargeIntType.INSTANCE),
FunctionSignature.ret(BigIntType.INSTANCE).args(BigIntType.INSTANCE),
-
FunctionSignature.ret(LargeIntType.INSTANCE).args(LargeIntType.INSTANCE)
+
FunctionSignature.ret(IntegerType.INSTANCE).args(IntegerType.INSTANCE),
+
FunctionSignature.ret(SmallIntType.INSTANCE).args(SmallIntType.INSTANCE),
+
FunctionSignature.ret(TinyIntType.INSTANCE).args(TinyIntType.INSTANCE)
);
/**
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/MultiDistinctSum.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/MultiDistinctSum.java
index 538734eb139..851b70e66b9 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/MultiDistinctSum.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/MultiDistinctSum.java
@@ -24,12 +24,9 @@ import
org.apache.doris.nereids.trees.expressions.functions.ComputePrecisionForS
import
org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
import org.apache.doris.nereids.trees.expressions.shape.UnaryExpression;
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
-import org.apache.doris.nereids.types.BigIntType;
-import org.apache.doris.nereids.types.DoubleType;
-import org.apache.doris.nereids.types.LargeIntType;
+import org.apache.doris.nereids.types.DataType;
import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableList;
import java.util.List;
@@ -37,12 +34,6 @@ import java.util.List;
public class MultiDistinctSum extends NullableAggregateFunction implements
UnaryExpression,
ExplicitlyCastableSignature, ComputePrecisionForSum, MultiDistinction {
- public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
-
FunctionSignature.ret(BigIntType.INSTANCE).varArgs(BigIntType.INSTANCE),
-
FunctionSignature.ret(BigIntType.INSTANCE).varArgs(DoubleType.INSTANCE),
-
FunctionSignature.ret(BigIntType.INSTANCE).varArgs(LargeIntType.INSTANCE)
- );
-
private final boolean mustUseMultiDistinctAgg;
public MultiDistinctSum(Expression arg0) {
@@ -65,8 +56,10 @@ public class MultiDistinctSum extends
NullableAggregateFunction implements Unary
@Override
public void checkLegalityBeforeTypeCoercion() {
- if (child().getDataType().isDateLikeType()) {
- throw new AnalysisException("Sum in multi distinct functions do
not support Date/Datetime type");
+ DataType argType = child().getDataType();
+ if ((!argType.isNumericType() && !argType.isBooleanType() &&
!argType.isNullType())
+ || argType.isOnlyMetricType()) {
+ throw new AnalysisException("sum requires a numeric or boolean
parameter: " + this.toSql());
}
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/MultiDistinctSum0.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/MultiDistinctSum0.java
index 37ecd8f2a3d..628e18e4772 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/MultiDistinctSum0.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/MultiDistinctSum0.java
@@ -25,12 +25,9 @@ import
org.apache.doris.nereids.trees.expressions.functions.ComputePrecisionForS
import
org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
import org.apache.doris.nereids.trees.expressions.shape.UnaryExpression;
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
-import org.apache.doris.nereids.types.BigIntType;
-import org.apache.doris.nereids.types.DoubleType;
-import org.apache.doris.nereids.types.LargeIntType;
+import org.apache.doris.nereids.types.DataType;
import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableList;
import java.util.List;
@@ -38,12 +35,6 @@ import java.util.List;
public class MultiDistinctSum0 extends AggregateFunction implements
UnaryExpression,
ExplicitlyCastableSignature, ComputePrecisionForSum, MultiDistinction,
AlwaysNotNullable {
- public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
-
FunctionSignature.ret(BigIntType.INSTANCE).varArgs(BigIntType.INSTANCE),
-
FunctionSignature.ret(BigIntType.INSTANCE).varArgs(DoubleType.INSTANCE),
-
FunctionSignature.ret(BigIntType.INSTANCE).varArgs(LargeIntType.INSTANCE)
- );
-
private final boolean mustUseMultiDistinctAgg;
public MultiDistinctSum0(Expression arg0) {
@@ -61,8 +52,10 @@ public class MultiDistinctSum0 extends AggregateFunction
implements UnaryExpress
@Override
public void checkLegalityBeforeTypeCoercion() {
- if (child().getDataType().isDateLikeType()) {
- throw new AnalysisException("Sum0 in multi distinct functions do
not support Date/Datetime type");
+ DataType argType = child().getDataType();
+ if ((!argType.isNumericType() && !argType.isBooleanType() &&
!argType.isNullType())
+ || argType.isOnlyMetricType()) {
+ throw new AnalysisException("sum0 requires a numeric or boolean
parameter: " + this.toSql());
}
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Stddev.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Stddev.java
index 1f732421940..855457acfba 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Stddev.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Stddev.java
@@ -44,10 +44,10 @@ public class Stddev extends NullableAggregateFunction
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
FunctionSignature.ret(DoubleType.INSTANCE).args(DoubleType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(TinyIntType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(SmallIntType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(IntegerType.INSTANCE),
FunctionSignature.ret(DoubleType.INSTANCE).args(BigIntType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(IntegerType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(SmallIntType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(TinyIntType.INSTANCE),
FunctionSignature.ret(DoubleType.INSTANCE).args(FloatType.INSTANCE));
/**
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/StddevSamp.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/StddevSamp.java
index b64a4e425b1..9ba4c8f5317 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/StddevSamp.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/StddevSamp.java
@@ -45,10 +45,10 @@ public class StddevSamp extends AggregateFunction
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
FunctionSignature.ret(DoubleType.INSTANCE).args(DoubleType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(TinyIntType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(SmallIntType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(IntegerType.INSTANCE),
FunctionSignature.ret(DoubleType.INSTANCE).args(BigIntType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(IntegerType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(SmallIntType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(TinyIntType.INSTANCE),
FunctionSignature.ret(DoubleType.INSTANCE).args(FloatType.INSTANCE));
/**
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/TopNWeighted.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/TopNWeighted.java
index c9e28f57753..d3f6efef996 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/TopNWeighted.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/TopNWeighted.java
@@ -52,24 +52,25 @@ public class TopNWeighted extends AggregateFunction
implements ExplicitlyCastableSignature, PropagateNullable {
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
- FunctionSignature.ret(ArrayType.of(BooleanType.INSTANCE))
- .args(BooleanType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE),
- FunctionSignature.ret(ArrayType.of(TinyIntType.INSTANCE))
- .args(TinyIntType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE),
- FunctionSignature.ret(ArrayType.of(SmallIntType.INSTANCE))
- .args(SmallIntType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE),
- FunctionSignature.ret(ArrayType.of(IntegerType.INSTANCE))
- .args(IntegerType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE),
- FunctionSignature.ret(ArrayType.of(BigIntType.INSTANCE))
- .args(BigIntType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE),
- FunctionSignature.ret(ArrayType.of(LargeIntType.INSTANCE))
- .args(LargeIntType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE),
- FunctionSignature.ret(ArrayType.of(FloatType.INSTANCE))
- .args(FloatType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE),
+ // three arguments
FunctionSignature.ret(ArrayType.of(DoubleType.INSTANCE))
.args(DoubleType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE),
FunctionSignature.ret(ArrayType.of(DecimalV2Type.CATALOG_DEFAULT))
.args(DecimalV2Type.CATALOG_DEFAULT, BigIntType.INSTANCE,
IntegerType.INSTANCE),
+ FunctionSignature.ret(ArrayType.of(LargeIntType.INSTANCE))
+ .args(LargeIntType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE),
+ FunctionSignature.ret(ArrayType.of(BigIntType.INSTANCE))
+ .args(BigIntType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE),
+ FunctionSignature.ret(ArrayType.of(IntegerType.INSTANCE))
+ .args(IntegerType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE),
+ FunctionSignature.ret(ArrayType.of(SmallIntType.INSTANCE))
+ .args(SmallIntType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE),
+ FunctionSignature.ret(ArrayType.of(TinyIntType.INSTANCE))
+ .args(TinyIntType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE),
+ FunctionSignature.ret(ArrayType.of(BooleanType.INSTANCE))
+ .args(BooleanType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE),
+ FunctionSignature.ret(ArrayType.of(FloatType.INSTANCE))
+ .args(FloatType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE),
FunctionSignature.ret(ArrayType.of(DateType.INSTANCE))
.args(DateType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE),
FunctionSignature.ret(ArrayType.of(DateTimeType.INSTANCE))
@@ -78,24 +79,14 @@ public class TopNWeighted extends AggregateFunction
.args(DateV2Type.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE),
FunctionSignature.ret(ArrayType.of(DateTimeV2Type.SYSTEM_DEFAULT))
.args(DateTimeV2Type.SYSTEM_DEFAULT, BigIntType.INSTANCE,
IntegerType.INSTANCE),
- FunctionSignature.ret(ArrayType.of(CharType.SYSTEM_DEFAULT))
- .args(CharType.SYSTEM_DEFAULT, BigIntType.INSTANCE,
IntegerType.INSTANCE),
FunctionSignature.ret(ArrayType.of(StringType.INSTANCE))
.args(StringType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE),
- FunctionSignature.ret(ArrayType.of(BooleanType.INSTANCE))
- .args(BooleanType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE, IntegerType.INSTANCE),
- FunctionSignature.ret(ArrayType.of(TinyIntType.INSTANCE))
- .args(TinyIntType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE, IntegerType.INSTANCE),
- FunctionSignature.ret(ArrayType.of(SmallIntType.INSTANCE))
- .args(SmallIntType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE, IntegerType.INSTANCE),
- FunctionSignature.ret(ArrayType.of(IntegerType.INSTANCE))
- .args(IntegerType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE, IntegerType.INSTANCE),
- FunctionSignature.ret(ArrayType.of(BigIntType.INSTANCE))
- .args(BigIntType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE, IntegerType.INSTANCE),
- FunctionSignature.ret(ArrayType.of(LargeIntType.INSTANCE))
- .args(LargeIntType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE, IntegerType.INSTANCE),
- FunctionSignature.ret(ArrayType.of(FloatType.INSTANCE))
- .args(FloatType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE, IntegerType.INSTANCE),
+ FunctionSignature.ret(ArrayType.of(VarcharType.SYSTEM_DEFAULT))
+ .args(VarcharType.SYSTEM_DEFAULT, BigIntType.INSTANCE,
IntegerType.INSTANCE),
+ FunctionSignature.ret(ArrayType.of(CharType.SYSTEM_DEFAULT))
+ .args(CharType.SYSTEM_DEFAULT, BigIntType.INSTANCE,
IntegerType.INSTANCE),
+
+ // four arguments
FunctionSignature.ret(ArrayType.of(DoubleType.INSTANCE))
.args(DoubleType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE, IntegerType.INSTANCE),
FunctionSignature.ret(VarcharType.SYSTEM_DEFAULT)
@@ -103,6 +94,20 @@ public class TopNWeighted extends AggregateFunction
BigIntType.INSTANCE,
IntegerType.INSTANCE,
IntegerType.INSTANCE),
+ FunctionSignature.ret(ArrayType.of(LargeIntType.INSTANCE))
+ .args(LargeIntType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE, IntegerType.INSTANCE),
+ FunctionSignature.ret(ArrayType.of(BigIntType.INSTANCE))
+ .args(BigIntType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE, IntegerType.INSTANCE),
+ FunctionSignature.ret(ArrayType.of(IntegerType.INSTANCE))
+ .args(IntegerType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE, IntegerType.INSTANCE),
+ FunctionSignature.ret(ArrayType.of(SmallIntType.INSTANCE))
+ .args(SmallIntType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE, IntegerType.INSTANCE),
+ FunctionSignature.ret(ArrayType.of(TinyIntType.INSTANCE))
+ .args(TinyIntType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE, IntegerType.INSTANCE),
+ FunctionSignature.ret(ArrayType.of(BooleanType.INSTANCE))
+ .args(BooleanType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE, IntegerType.INSTANCE),
+ FunctionSignature.ret(ArrayType.of(FloatType.INSTANCE))
+ .args(FloatType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE, IntegerType.INSTANCE),
FunctionSignature.ret(ArrayType.of(DateType.INSTANCE))
.args(DateType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE, IntegerType.INSTANCE),
FunctionSignature.ret(ArrayType.of(DateTimeType.INSTANCE))
@@ -114,10 +119,12 @@ public class TopNWeighted extends AggregateFunction
BigIntType.INSTANCE,
IntegerType.INSTANCE,
IntegerType.INSTANCE),
- FunctionSignature.ret(ArrayType.of(CharType.SYSTEM_DEFAULT))
- .args(CharType.SYSTEM_DEFAULT, BigIntType.INSTANCE,
IntegerType.INSTANCE, IntegerType.INSTANCE),
FunctionSignature.ret(ArrayType.of(StringType.INSTANCE))
- .args(StringType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE, IntegerType.INSTANCE)
+ .args(StringType.INSTANCE, BigIntType.INSTANCE,
IntegerType.INSTANCE, IntegerType.INSTANCE),
+ FunctionSignature.ret(ArrayType.of(VarcharType.SYSTEM_DEFAULT))
+ .args(VarcharType.SYSTEM_DEFAULT, BigIntType.INSTANCE,
IntegerType.INSTANCE, IntegerType.INSTANCE),
+ FunctionSignature.ret(ArrayType.of(CharType.SYSTEM_DEFAULT))
+ .args(CharType.SYSTEM_DEFAULT, BigIntType.INSTANCE,
IntegerType.INSTANCE, IntegerType.INSTANCE)
);
/**
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Variance.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Variance.java
index f56bfa6f6b6..1b707e52d7b 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Variance.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/Variance.java
@@ -44,10 +44,10 @@ public class Variance extends NullableAggregateFunction
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
FunctionSignature.ret(DoubleType.INSTANCE).args(DoubleType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(TinyIntType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(SmallIntType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(IntegerType.INSTANCE),
FunctionSignature.ret(DoubleType.INSTANCE).args(BigIntType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(IntegerType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(SmallIntType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(TinyIntType.INSTANCE),
FunctionSignature.ret(DoubleType.INSTANCE).args(FloatType.INSTANCE));
/**
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/VarianceSamp.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/VarianceSamp.java
index 637646ed856..c971756d261 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/VarianceSamp.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/VarianceSamp.java
@@ -44,10 +44,10 @@ public class VarianceSamp extends AggregateFunction
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
FunctionSignature.ret(DoubleType.INSTANCE).args(DoubleType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(TinyIntType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(SmallIntType.INSTANCE),
-
FunctionSignature.ret(DoubleType.INSTANCE).args(IntegerType.INSTANCE),
FunctionSignature.ret(DoubleType.INSTANCE).args(BigIntType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(IntegerType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(SmallIntType.INSTANCE),
+
FunctionSignature.ret(DoubleType.INSTANCE).args(TinyIntType.INSTANCE),
FunctionSignature.ret(DoubleType.INSTANCE).args(FloatType.INSTANCE));
/**
diff --git a/regression-test/data/nereids_function_p0/type_coercion.out
b/regression-test/data/nereids_function_p0/type_coercion.out
index b600040e8f6..49a1fb61675 100644
--- a/regression-test/data/nereids_function_p0/type_coercion.out
+++ b/regression-test/data/nereids_function_p0/type_coercion.out
@@ -35,3 +35,30 @@
-- !nullif --
13
+-- !topn_weighted --
+\N
+
+-- !corr --
+-0.502861022996899
+
+-- !covar --
+-4.790355708888889E8
+
+-- !covar_samp --
+-7.185533563333334E8
+
+-- !group_bit_and --
+0
+
+-- !group_bit_or --
+65679
+
+-- !group_bit_xor --
+65671
+
+-- !stddev --
+30866.899145992767
+
+-- !stddev_samp --
+37804.07642481606
+
diff --git a/regression-test/suites/nereids_function_p0/type_coercion.groovy
b/regression-test/suites/nereids_function_p0/type_coercion.groovy
index 57b63030adb..30c943b9a08 100644
--- a/regression-test/suites/nereids_function_p0/type_coercion.groovy
+++ b/regression-test/suites/nereids_function_p0/type_coercion.groovy
@@ -16,6 +16,8 @@
// under the License.
suite("function_type_coercion") {
sql """set enable_fold_constant_by_be=false""" // remove this if
array<double> BE return result be fixed.
+
+ // scalar function
qt_greatest """select greatest(1, 2222, '333')"""
qt_least """select least(5,2000000,'3.0023')"""
qt_if """select if (1, 2222, 33)"""
@@ -28,4 +30,30 @@ suite("function_type_coercion") {
qt_array_cum_sum """select array_cum_sum(array('1', '2', '3000'))"""
qt_pmod """select pmod(2, '1.0')"""
qt_nullif """SELECT nullif(13, -4851)"""
+
+ // agg function
+ sql """drop table if exists test_agg_signature"""
+
+ sql """
+ create table test_agg_signature (
+ id int,
+ c1 text,
+ c2 text
+ )
+ properties (
+ "replication_num" = "1"
+ )
+ """
+
+ sql """insert into test_agg_signature values (1, "10", "65537"), (2,
"129", "134"), (3, "65548", "3")"""
+
+ qt_topn_weighted """select
topn_weighted(12345678.12345678900000000000000000000, null, 2147483648)"""
+ qt_corr """select corr(c1, c2) from test_agg_signature"""
+ qt_covar """select covar(c1, c2) from test_agg_signature"""
+ qt_covar_samp """select covar_samp(c1, c2) from test_agg_signature"""
+ qt_group_bit_and """select group_bit_and(c1) from test_agg_signature"""
+ qt_group_bit_or """select group_bit_or(c1) from test_agg_signature"""
+ qt_group_bit_xor """select group_bit_xor(c1) from test_agg_signature"""
+ qt_stddev """select stddev(c1) from test_agg_signature"""
+ qt_stddev_samp """select stddev_samp(c1) from test_agg_signature"""
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]