[fix](array-funcs) array min/max #39307 (#39484)

This commit is contained in:
amory
2024-08-17 10:56:44 +08:00
committed by GitHub
parent 7687f2c53a
commit 79aa079cc6
7 changed files with 107 additions and 2 deletions

View File

@ -18,6 +18,7 @@
package org.apache.doris.nereids.trees.expressions.functions.scalar;
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.AlwaysNullable;
import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
@ -50,6 +51,14 @@ public class ArrayMax extends ScalarFunction implements ExplicitlyCastableSignat
super("array_max", arg);
}
@Override
public void checkLegalityBeforeTypeCoercion() {
DataType argType = child().getDataType();
if (((ArrayType) argType).getItemType().isComplexType()) {
throw new AnalysisException("array_max does not support complex types: " + toSql());
}
}
@Override
public DataType getDataType() {
return ((ArrayType) (child().getDataType())).getItemType();

View File

@ -18,6 +18,7 @@
package org.apache.doris.nereids.trees.expressions.functions.scalar;
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.AlwaysNullable;
import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
@ -50,6 +51,14 @@ public class ArrayMin extends ScalarFunction implements ExplicitlyCastableSignat
super("array_min", arg);
}
@Override
public void checkLegalityBeforeTypeCoercion() {
DataType argType = child().getDataType();
if (((ArrayType) argType).getItemType().isComplexType()) {
throw new AnalysisException("array_min does not support complex types: " + toSql());
}
}
@Override
public DataType getDataType() {
return ((ArrayType) (child().getDataType())).getItemType();

View File

@ -18,12 +18,14 @@
package org.apache.doris.nereids.trees.expressions.functions.scalar;
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.UnaryExpression;
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
import org.apache.doris.nereids.types.ArrayType;
import org.apache.doris.nereids.types.DataType;
import org.apache.doris.nereids.types.coercion.AnyDataType;
import com.google.common.base.Preconditions;
@ -48,6 +50,14 @@ public class ArrayReverseSort extends ScalarFunction
super("array_reverse_sort", arg);
}
@Override
public void checkLegalityBeforeTypeCoercion() {
DataType argType = child().getDataType();
if (((ArrayType) argType).getItemType().isComplexType()) {
throw new AnalysisException("array_reverse_sort does not support complex types: " + toSql());
}
}
/**
* withChildren.
*/

View File

@ -18,12 +18,14 @@
package org.apache.doris.nereids.trees.expressions.functions.scalar;
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.UnaryExpression;
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
import org.apache.doris.nereids.types.ArrayType;
import org.apache.doris.nereids.types.DataType;
import org.apache.doris.nereids.types.coercion.AnyDataType;
import com.google.common.base.Preconditions;
@ -48,6 +50,14 @@ public class ArraySort extends ScalarFunction
super("array_sort", arg);
}
@Override
public void checkLegalityBeforeTypeCoercion() {
DataType argType = child().getDataType();
if (((ArrayType) argType).getItemType().isComplexType()) {
throw new AnalysisException("array_sort does not support complex types: " + toSql());
}
}
/**
* withChildren.
*/