[fix](functions) fix now(null) crash (#22321)

before: BE crash
now:

mysql [test]>select now(null);
+-----------+
| now(NULL) |
+-----------+
| NULL      |
+-----------+
1 row in set (0.06 sec)
This commit is contained in:
zclllyybb
2023-07-28 14:07:56 +08:00
committed by GitHub
parent 1c6246f7ee
commit c2155678ca
5 changed files with 19 additions and 9 deletions

View File

@ -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.AlwaysNotNullable;
import org.apache.doris.nereids.trees.expressions.functions.DateTimeWithPrecision;
import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
import org.apache.doris.nereids.trees.expressions.functions.Nondeterministic;
@ -36,8 +35,7 @@ import java.util.List;
/**
* ScalarFunction 'now'. This class is generated by GenerateFunction.
*/
public class Now extends DateTimeWithPrecision
implements ExplicitlyCastableSignature, Nondeterministic, AlwaysNotNullable {
public class Now extends DateTimeWithPrecision implements ExplicitlyCastableSignature, Nondeterministic {
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
FunctionSignature.ret(DateTimeType.INSTANCE).args(),
@ -72,6 +70,18 @@ public class Now extends DateTimeWithPrecision
}
}
/**
* Depend on child.
*/
@Override
public boolean nullable() {
if (arity() == 0) {
return false;
}
Preconditions.checkArgument(children.size() == 1);
return child(0).nullable();
}
@Override
public List<FunctionSignature> getSignatures() {
return SIGNATURES;