[Fix](func) CoreDump and Result Error in percentile function (#36647)
cherry pick #36643
This commit is contained in:
@ -21,7 +21,6 @@ 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.ExplicitlyCastableSignature;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.PropagateNullable;
|
||||
import org.apache.doris.nereids.trees.expressions.shape.BinaryExpression;
|
||||
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
|
||||
import org.apache.doris.nereids.types.BigIntType;
|
||||
@ -35,8 +34,8 @@ import java.util.List;
|
||||
/**
|
||||
* AggregateFunction 'percentile'. This class is generated by GenerateFunction.
|
||||
*/
|
||||
public class Percentile extends AggregateFunction
|
||||
implements BinaryExpression, ExplicitlyCastableSignature, PropagateNullable {
|
||||
public class Percentile extends NullableAggregateFunction
|
||||
implements BinaryExpression, ExplicitlyCastableSignature {
|
||||
|
||||
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
|
||||
FunctionSignature.ret(DoubleType.INSTANCE).args(BigIntType.INSTANCE, DoubleType.INSTANCE)
|
||||
@ -46,14 +45,18 @@ public class Percentile extends AggregateFunction
|
||||
* constructor with 2 arguments.
|
||||
*/
|
||||
public Percentile(Expression arg0, Expression arg1) {
|
||||
super("percentile", arg0, arg1);
|
||||
this(false, arg0, arg1);
|
||||
}
|
||||
|
||||
/**
|
||||
* constructor with 2 arguments.
|
||||
*/
|
||||
public Percentile(boolean distinct, Expression arg0, Expression arg1) {
|
||||
super("percentile", distinct, arg0, arg1);
|
||||
this(distinct, false, arg0, arg1);
|
||||
}
|
||||
|
||||
public Percentile(boolean distinct, boolean alwaysNullable, Expression arg0, Expression arg1) {
|
||||
super("percentile", distinct, alwaysNullable, arg0, arg1);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -70,7 +73,12 @@ public class Percentile extends AggregateFunction
|
||||
@Override
|
||||
public Percentile withDistinctAndChildren(boolean distinct, List<Expression> children) {
|
||||
Preconditions.checkArgument(children.size() == 2);
|
||||
return new Percentile(distinct, children.get(0), children.get(1));
|
||||
return new Percentile(distinct, alwaysNullable, children.get(0), children.get(1));
|
||||
}
|
||||
|
||||
@Override
|
||||
public NullableAggregateFunction withAlwaysNullable(boolean alwaysNullable) {
|
||||
return new Percentile(distinct, alwaysNullable, children.get(0), children.get(1));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -246,7 +246,7 @@ public interface AggregateFunctionVisitor<R, C> {
|
||||
}
|
||||
|
||||
default R visitPercentile(Percentile percentile, C context) {
|
||||
return visitAggregateFunction(percentile, context);
|
||||
return visitNullableAggregateFunction(percentile, context);
|
||||
}
|
||||
|
||||
default R visitPercentileApprox(PercentileApprox percentileApprox, C context) {
|
||||
|
||||
Reference in New Issue
Block a user