[Enhancement](functions) change some nullable mode and clear some smooth upgrade (#25334)
This commit is contained in:
@ -2387,6 +2387,12 @@ public abstract class Expr extends TreeNode<Expr> implements ParseNode, Cloneabl
|
||||
}
|
||||
return false;
|
||||
}
|
||||
if (fn.functionName().equalsIgnoreCase("array_contains") || fn.functionName().equalsIgnoreCase("array_position")
|
||||
|| fn.functionName().equalsIgnoreCase("countequal")
|
||||
|| fn.functionName().equalsIgnoreCase("map_contains_key")
|
||||
|| fn.functionName().equalsIgnoreCase("map_contains_value")) {
|
||||
return children.get(0).isNullable();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@ -19,7 +19,6 @@ package org.apache.doris.nereids.trees.expressions.functions.scalar;
|
||||
|
||||
import org.apache.doris.catalog.FunctionSignature;
|
||||
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;
|
||||
import org.apache.doris.nereids.trees.expressions.shape.BinaryExpression;
|
||||
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
|
||||
@ -37,7 +36,7 @@ import java.util.List;
|
||||
* ScalarFunction 'array_contains'. This class is generated by GenerateFunction.
|
||||
*/
|
||||
public class ArrayContains extends ScalarFunction
|
||||
implements BinaryExpression, ExplicitlyCastableSignature, AlwaysNullable {
|
||||
implements BinaryExpression, ExplicitlyCastableSignature {
|
||||
|
||||
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
|
||||
FunctionSignature.ret(BooleanType.INSTANCE)
|
||||
@ -60,6 +59,11 @@ public class ArrayContains extends ScalarFunction
|
||||
return new ArrayContains(children.get(0), children.get(1));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean nullable() {
|
||||
return child(0).nullable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public <R, C> R accept(ExpressionVisitor<R, C> visitor, C context) {
|
||||
return visitor.visitArrayContains(this, context);
|
||||
|
||||
@ -19,7 +19,6 @@ package org.apache.doris.nereids.trees.expressions.functions.scalar;
|
||||
|
||||
import org.apache.doris.catalog.FunctionSignature;
|
||||
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;
|
||||
import org.apache.doris.nereids.trees.expressions.shape.BinaryExpression;
|
||||
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
|
||||
@ -37,7 +36,7 @@ import java.util.List;
|
||||
* ScalarFunction 'array_position'. This class is generated by GenerateFunction.
|
||||
*/
|
||||
public class ArrayPosition extends ScalarFunction
|
||||
implements BinaryExpression, ExplicitlyCastableSignature, AlwaysNullable {
|
||||
implements BinaryExpression, ExplicitlyCastableSignature {
|
||||
|
||||
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
|
||||
FunctionSignature.ret(BigIntType.INSTANCE)
|
||||
@ -60,6 +59,11 @@ public class ArrayPosition extends ScalarFunction
|
||||
return new ArrayPosition(children.get(0), children.get(1));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean nullable() {
|
||||
return child(0).nullable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public <R, C> R accept(ExpressionVisitor<R, C> visitor, C context) {
|
||||
return visitor.visitArrayPosition(this, context);
|
||||
|
||||
@ -19,7 +19,6 @@ package org.apache.doris.nereids.trees.expressions.functions.scalar;
|
||||
|
||||
import org.apache.doris.catalog.FunctionSignature;
|
||||
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;
|
||||
import org.apache.doris.nereids.trees.expressions.shape.BinaryExpression;
|
||||
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
|
||||
@ -37,7 +36,7 @@ import java.util.List;
|
||||
* ScalarFunction 'countequal'. This class is generated by GenerateFunction.
|
||||
*/
|
||||
public class CountEqual extends ScalarFunction
|
||||
implements BinaryExpression, ExplicitlyCastableSignature, AlwaysNullable {
|
||||
implements BinaryExpression, ExplicitlyCastableSignature {
|
||||
|
||||
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
|
||||
FunctionSignature.ret(BigIntType.INSTANCE)
|
||||
@ -60,6 +59,11 @@ public class CountEqual extends ScalarFunction
|
||||
return new CountEqual(children.get(0), children.get(1));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean nullable() {
|
||||
return child(0).nullable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public <R, C> R accept(ExpressionVisitor<R, C> visitor, C context) {
|
||||
return visitor.visitCountEqual(this, context);
|
||||
|
||||
@ -19,7 +19,6 @@ package org.apache.doris.nereids.trees.expressions.functions.scalar;
|
||||
|
||||
import org.apache.doris.catalog.FunctionSignature;
|
||||
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;
|
||||
import org.apache.doris.nereids.trees.expressions.shape.BinaryExpression;
|
||||
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
|
||||
@ -37,7 +36,7 @@ import java.util.List;
|
||||
* ScalarFunction 'map_contains_key'. This class is generated by GenerateFunction.
|
||||
*/
|
||||
public class MapContainsKey extends ScalarFunction
|
||||
implements BinaryExpression, ExplicitlyCastableSignature, AlwaysNullable {
|
||||
implements BinaryExpression, ExplicitlyCastableSignature {
|
||||
|
||||
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
|
||||
FunctionSignature.ret(BooleanType.INSTANCE)
|
||||
@ -61,6 +60,11 @@ public class MapContainsKey extends ScalarFunction
|
||||
return new MapContainsKey(children.get(0), children.get(1));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean nullable() {
|
||||
return child(0).nullable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public <R, C> R accept(ExpressionVisitor<R, C> visitor, C context) {
|
||||
return visitor.visitMapContainsKey(this, context);
|
||||
|
||||
@ -19,7 +19,6 @@ package org.apache.doris.nereids.trees.expressions.functions.scalar;
|
||||
|
||||
import org.apache.doris.catalog.FunctionSignature;
|
||||
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;
|
||||
import org.apache.doris.nereids.trees.expressions.shape.BinaryExpression;
|
||||
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
|
||||
@ -37,7 +36,7 @@ import java.util.List;
|
||||
* ScalarFunction 'map_contains_value'. This class is generated by GenerateFunction.
|
||||
*/
|
||||
public class MapContainsValue extends ScalarFunction
|
||||
implements BinaryExpression, ExplicitlyCastableSignature, AlwaysNullable {
|
||||
implements BinaryExpression, ExplicitlyCastableSignature {
|
||||
|
||||
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
|
||||
FunctionSignature.ret(BooleanType.INSTANCE)
|
||||
@ -61,6 +60,11 @@ public class MapContainsValue extends ScalarFunction
|
||||
return new MapContainsValue(children.get(0), children.get(1));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean nullable() {
|
||||
return child(0).nullable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public <R, C> R accept(ExpressionVisitor<R, C> visitor, C context) {
|
||||
return visitor.visitMapContainsValue(this, context);
|
||||
|
||||
Reference in New Issue
Block a user