This is an automated email from the ASF dual-hosted git repository.
panxiaolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 83e0e6a5692 [Chore](function) add checkLegalityBeforeTypeCoercion for
function combinators (#55363)
83e0e6a5692 is described below
commit 83e0e6a5692f1f3749884a5e67a28d919ef23ae5
Author: Pxl <[email protected]>
AuthorDate: Mon Sep 1 22:05:47 2025 +0800
[Chore](function) add checkLegalityBeforeTypeCoercion for function
combinators (#55363)
add checkLegalityBeforeTypeCoercion for function combinators
---
.../functions/AggCombinerFunctionBuilder.java | 9 +++++++--
.../functions/combinator/ForEachCombinator.java | 5 +++++
.../functions/combinator/MergeCombinator.java | 5 +++++
.../functions/combinator/StateCombinator.java | 5 +++++
.../functions/combinator/UnionCombinator.java | 5 +++++
.../data/function_p0/test_agg_foreach.out | Bin 1273 -> 1113 bytes
.../data/function_p0/test_agg_foreach_notnull.out | Bin 1161 -> 1001 bytes
.../suites/function_p0/test_agg_foreach.groovy | 19 ++++++++++++++++---
.../function_p0/test_agg_foreach_notnull.groovy | 4 ----
9 files changed, 43 insertions(+), 9 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/AggCombinerFunctionBuilder.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/AggCombinerFunctionBuilder.java
index 4306697bdc0..bf7ba61039d 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/AggCombinerFunctionBuilder.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/AggCombinerFunctionBuilder.java
@@ -117,9 +117,14 @@ public class AggCombinerFunctionBuilder extends
FunctionBuilder {
}
Expression arg = (Expression) arguments.get(0);
- AggStateType type = (AggStateType) arg.getDataType();
+ List<Expression> nestedArguments;
+ if (arg instanceof StateCombinator) {
+ nestedArguments = arg.children();
+ } else {
+ nestedArguments = ((AggStateType)
arg.getDataType()).getMockedExpressions();
+ }
- return (AggregateFunction) nestedBuilder.build(nestedName,
type.getMockedExpressions()).first;
+ return (AggregateFunction) nestedBuilder.build(nestedName,
nestedArguments).first;
}
@Override
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/combinator/ForEachCombinator.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/combinator/ForEachCombinator.java
index 3cf70236968..be52d59b62c 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/combinator/ForEachCombinator.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/combinator/ForEachCombinator.java
@@ -136,4 +136,9 @@ public class ForEachCombinator extends
NullableAggregateFunction
public NullableAggregateFunction withAlwaysNullable(boolean
alwaysNullable) {
return new
ForEachCombinator(getAlwaysNullableFunctionParams(alwaysNullable), nested);
}
+
+ @Override
+ public void checkLegalityBeforeTypeCoercion() {
+ nested.checkLegalityBeforeTypeCoercion();
+ }
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/combinator/MergeCombinator.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/combinator/MergeCombinator.java
index 6ea63789c12..0ac2a6a8f3f 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/combinator/MergeCombinator.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/combinator/MergeCombinator.java
@@ -114,4 +114,9 @@ public class MergeCombinator extends AggregateFunction
public boolean canRollUp() {
return false;
}
+
+ @Override
+ public void checkLegalityBeforeTypeCoercion() {
+ nested.checkLegalityBeforeTypeCoercion();
+ }
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/combinator/StateCombinator.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/combinator/StateCombinator.java
index cb1e18dd434..1209e53e73b 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/combinator/StateCombinator.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/combinator/StateCombinator.java
@@ -137,4 +137,9 @@ public class StateCombinator extends ScalarFunction
public boolean canRollUp() {
return true;
}
+
+ @Override
+ public void checkLegalityBeforeTypeCoercion() {
+ nested.checkLegalityBeforeTypeCoercion();
+ }
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/combinator/UnionCombinator.java
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/combinator/UnionCombinator.java
index 5a2dff890b0..5e4a701a4b7 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/combinator/UnionCombinator.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/combinator/UnionCombinator.java
@@ -109,4 +109,9 @@ public class UnionCombinator extends AggregateFunction
public boolean canRollUp() {
return true;
}
+
+ @Override
+ public void checkLegalityBeforeTypeCoercion() {
+ nested.checkLegalityBeforeTypeCoercion();
+ }
}
diff --git a/regression-test/data/function_p0/test_agg_foreach.out
b/regression-test/data/function_p0/test_agg_foreach.out
index 7d03631e712..9a6c77d1383 100644
Binary files a/regression-test/data/function_p0/test_agg_foreach.out and
b/regression-test/data/function_p0/test_agg_foreach.out differ
diff --git a/regression-test/data/function_p0/test_agg_foreach_notnull.out
b/regression-test/data/function_p0/test_agg_foreach_notnull.out
index dfbe71da514..5bd1bf2fef0 100644
Binary files a/regression-test/data/function_p0/test_agg_foreach_notnull.out
and b/regression-test/data/function_p0/test_agg_foreach_notnull.out differ
diff --git a/regression-test/suites/function_p0/test_agg_foreach.groovy
b/regression-test/suites/function_p0/test_agg_foreach.groovy
index 07002d9ee66..f3a7494c2fb 100644
--- a/regression-test/suites/function_p0/test_agg_foreach.groovy
+++ b/regression-test/suites/function_p0/test_agg_foreach.groovy
@@ -73,11 +73,24 @@ suite("test_agg_foreach") {
qt_sql """
select covar_foreach(a,a) , covar_samp_foreach(a,a) , corr_foreach(a,a)
from foreach_table ;
- """
- qt_sql """
- select topn_foreach(a,a) ,topn_foreach(a,a,a) , topn_array_foreach(a,a)
,topn_array_foreach(a,a,a)from foreach_table ;
"""
+ test {
+ sql """select topn_foreach(a,a) from foreach_table;"""
+ exception "errCode"
+ }
+ test {
+ sql """select topn_foreach(a,a,a) from foreach_table;"""
+ exception "errCode"
+ }
+ test {
+ sql """select topn_array_foreach(a,a) from foreach_table;"""
+ exception "errCode"
+ }
+ test {
+ sql """select topn_array_foreach(a,a,a) from foreach_table;"""
+ exception "errCode"
+ }
qt_sql """
select count_foreach(a) , count_by_enum_foreach(a) ,
approx_count_distinct_foreach(a) from foreach_table;
diff --git a/regression-test/suites/function_p0/test_agg_foreach_notnull.groovy
b/regression-test/suites/function_p0/test_agg_foreach_notnull.groovy
index 7a49667aba7..80c7fe3f180 100644
--- a/regression-test/suites/function_p0/test_agg_foreach_notnull.groovy
+++ b/regression-test/suites/function_p0/test_agg_foreach_notnull.groovy
@@ -73,10 +73,6 @@ suite("test_agg_foreach_not_null") {
qt_sql """
select covar_foreach(a,a) , covar_samp_foreach(a,a) , corr_foreach(a,a)
from foreach_table_not_null ;
"""
- qt_sql """
- select topn_foreach(a,a) ,topn_foreach(a,a,a) , topn_array_foreach(a,a)
,topn_array_foreach(a,a,a)from foreach_table_not_null ;
- """
-
qt_sql """
select count_foreach(a) , count_by_enum_foreach(a) ,
approx_count_distinct_foreach(a) from foreach_table_not_null;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]