[fix](Nereids) multi_distinct_sum should inherit NullableAggregateFunction (#28349)

This commit is contained in:
morrySnow
2023-12-14 19:27:06 +08:00
committed by GitHub
parent 82a91380e6
commit a540b7eb43
3 changed files with 45 additions and 4 deletions

View File

@ -20,7 +20,6 @@ package org.apache.doris.nereids.trees.expressions.functions.agg;
import org.apache.doris.catalog.FunctionSignature;
import org.apache.doris.nereids.exceptions.AnalysisException;
import org.apache.doris.nereids.trees.expressions.Expression;
import org.apache.doris.nereids.trees.expressions.functions.AlwaysNotNullable;
import org.apache.doris.nereids.trees.expressions.functions.ComputePrecisionForSum;
import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
import org.apache.doris.nereids.trees.expressions.shape.UnaryExpression;
@ -35,7 +34,7 @@ import com.google.common.collect.ImmutableList;
import java.util.List;
/** MultiDistinctSum */
public class MultiDistinctSum extends AggregateFunction implements UnaryExpression, AlwaysNotNullable,
public class MultiDistinctSum extends NullableAggregateFunction implements UnaryExpression,
ExplicitlyCastableSignature, ComputePrecisionForSum, MultiDistinction {
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
@ -45,11 +44,15 @@ public class MultiDistinctSum extends AggregateFunction implements UnaryExpressi
);
public MultiDistinctSum(Expression arg0) {
super("multi_distinct_sum", true, arg0);
super("multi_distinct_sum", true, false, arg0);
}
public MultiDistinctSum(boolean distinct, Expression arg0) {
super("multi_distinct_sum", true, arg0);
super("multi_distinct_sum", true, false, arg0);
}
public MultiDistinctSum(boolean distinct, boolean alwaysNullable, Expression arg0) {
super("multi_distinct_sum", true, alwaysNullable, arg0);
}
@Override
@ -64,6 +67,11 @@ public class MultiDistinctSum extends AggregateFunction implements UnaryExpressi
return new Sum(getArgument(0)).getSignatures();
}
@Override
public NullableAggregateFunction withAlwaysNullable(boolean alwaysNullable) {
return new MultiDistinctSum(distinct, alwaysNullable, children.get(0));
}
@Override
public MultiDistinctSum withDistinctAndChildren(boolean distinct, List<Expression> children) {
Preconditions.checkArgument(children.size() == 1);