Skip to content

Commit 0159bca

Browse files
committed
[Impl](Nereids) add propagateNullLiteral trait for special functions (apache#42256)
1 parent 1b6d47d commit 0159bca

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+345
-83
lines changed

fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/ExpressionTranslator.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
import org.apache.doris.nereids.trees.expressions.WhenClause;
8080
import org.apache.doris.nereids.trees.expressions.functions.AlwaysNotNullable;
8181
import org.apache.doris.nereids.trees.expressions.functions.AlwaysNullable;
82+
import org.apache.doris.nereids.trees.expressions.functions.PropagateNullLiteral;
8283
import org.apache.doris.nereids.trees.expressions.functions.agg.AggregateFunction;
8384
import org.apache.doris.nereids.trees.expressions.functions.agg.AggregateParam;
8485
import org.apache.doris.nereids.trees.expressions.functions.agg.Count;
@@ -563,7 +564,7 @@ public Expr visitTableGeneratingFunction(TableGeneratingFunction function,
563564
@Override
564565
public Expr visitBinaryArithmetic(BinaryArithmetic binaryArithmetic, PlanTranslatorContext context) {
565566
NullableMode nullableMode = NullableMode.DEPEND_ON_ARGUMENT;
566-
if (binaryArithmetic instanceof AlwaysNullable) {
567+
if (binaryArithmetic instanceof AlwaysNullable || binaryArithmetic instanceof PropagateNullLiteral) {
567568
nullableMode = NullableMode.ALWAYS_NULLABLE;
568569
} else if (binaryArithmetic instanceof AlwaysNotNullable) {
569570
nullableMode = NullableMode.ALWAYS_NOT_NULLABLE;

fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rules/FoldConstantRuleOnFE.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
import org.apache.doris.nereids.trees.expressions.TimestampArithmetic;
5656
import org.apache.doris.nereids.trees.expressions.WhenClause;
5757
import org.apache.doris.nereids.trees.expressions.functions.BoundFunction;
58+
import org.apache.doris.nereids.trees.expressions.functions.PropagateNullLiteral;
5859
import org.apache.doris.nereids.trees.expressions.functions.PropagateNullable;
5960
import org.apache.doris.nereids.trees.expressions.functions.agg.AggregateFunction;
6061
import org.apache.doris.nereids.trees.expressions.functions.generator.TableGeneratingFunction;
@@ -684,7 +685,8 @@ private Optional<Expression> preProcess(Expression expression) {
684685
if (expression instanceof AggregateFunction || expression instanceof TableGeneratingFunction) {
685686
return Optional.of(expression);
686687
}
687-
if (expression instanceof PropagateNullable && ExpressionUtils.hasNullLiteral(expression.getArguments())) {
688+
if (ExpressionUtils.hasNullLiteral(expression.getArguments())
689+
&& (expression instanceof PropagateNullLiteral || expression instanceof PropagateNullable)) {
688690
return Optional.of(new NullLiteral(expression.getDataType()));
689691
}
690692
if (!ExpressionUtils.isAllLiteral(expression.getArguments())) {

fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Divide.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.apache.doris.common.Config;
2222
import org.apache.doris.nereids.exceptions.UnboundException;
2323
import org.apache.doris.nereids.trees.expressions.functions.AlwaysNullable;
24+
import org.apache.doris.nereids.trees.expressions.functions.PropagateNullLiteral;
2425
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
2526
import org.apache.doris.nereids.types.DataType;
2627
import org.apache.doris.nereids.types.DecimalV3Type;
@@ -35,7 +36,7 @@
3536
/**
3637
* Divide Expression.
3738
*/
38-
public class Divide extends BinaryArithmetic implements AlwaysNullable {
39+
public class Divide extends BinaryArithmetic implements AlwaysNullable, PropagateNullLiteral {
3940

4041
public Divide(Expression left, Expression right) {
4142
super(ImmutableList.of(left, right), Operator.DIVIDE);

fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/ExpressionEvaluator.java

-13
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
package org.apache.doris.nereids.trees.expressions;
1919

20-
import org.apache.doris.catalog.Env;
2120
import org.apache.doris.nereids.exceptions.NotSupportedException;
2221
import org.apache.doris.nereids.trees.expressions.functions.BoundFunction;
2322
import org.apache.doris.nereids.trees.expressions.functions.agg.AggregateFunction;
@@ -30,8 +29,6 @@
3029
import org.apache.doris.nereids.trees.expressions.literal.DateLiteral;
3130
import org.apache.doris.nereids.trees.expressions.literal.DateTimeLiteral;
3231
import org.apache.doris.nereids.trees.expressions.literal.Literal;
33-
import org.apache.doris.nereids.trees.expressions.literal.NullLiteral;
34-
import org.apache.doris.nereids.types.DataType;
3532

3633
import com.google.common.collect.ImmutableList;
3734
import com.google.common.collect.ImmutableMultimap;
@@ -59,13 +56,11 @@ public enum ExpressionEvaluator {
5956
* Evaluate the value of the expression.
6057
*/
6158
public Expression eval(Expression expression) {
62-
6359
if (!(expression.isConstant() || expression.foldable()) || expression instanceof AggregateFunction) {
6460
return expression;
6561
}
6662

6763
String fnName = null;
68-
DataType ret = expression.getDataType();
6964
if (expression instanceof BinaryArithmetic) {
7065
BinaryArithmetic arithmetic = (BinaryArithmetic) expression;
7166
fnName = arithmetic.getLegacyOperator().getName();
@@ -77,14 +72,6 @@ public Expression eval(Expression expression) {
7772
fnName = function.getName();
7873
}
7974

80-
if ((Env.getCurrentEnv().isNullResultWithOneNullParamFunction(fnName))) {
81-
for (Expression e : expression.children()) {
82-
if (e instanceof NullLiteral) {
83-
return new NullLiteral(ret);
84-
}
85-
}
86-
}
87-
8875
return invoke(expression, fnName);
8976
}
9077

fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/IntegralDivide.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.apache.doris.analysis.ArithmeticExpr.Operator;
2121
import org.apache.doris.nereids.exceptions.UnboundException;
2222
import org.apache.doris.nereids.trees.expressions.functions.AlwaysNullable;
23+
import org.apache.doris.nereids.trees.expressions.functions.PropagateNullLiteral;
2324
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
2425

2526
import com.google.common.base.Preconditions;
@@ -30,7 +31,7 @@
3031
/**
3132
* A DIV B
3233
*/
33-
public class IntegralDivide extends BinaryArithmetic implements AlwaysNullable {
34+
public class IntegralDivide extends BinaryArithmetic implements AlwaysNullable, PropagateNullLiteral {
3435

3536
public IntegralDivide(Expression left, Expression right) {
3637
super(ImmutableList.of(left, right), Operator.INT_DIVIDE);

fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/Mod.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.apache.doris.analysis.ArithmeticExpr.Operator;
2121
import org.apache.doris.nereids.exceptions.UnboundException;
2222
import org.apache.doris.nereids.trees.expressions.functions.AlwaysNullable;
23+
import org.apache.doris.nereids.trees.expressions.functions.PropagateNullLiteral;
2324
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
2425
import org.apache.doris.nereids.types.DecimalV3Type;
2526

@@ -31,7 +32,7 @@
3132
/**
3233
* Mod Expression.
3334
*/
34-
public class Mod extends BinaryArithmetic implements AlwaysNullable {
35+
public class Mod extends BinaryArithmetic implements AlwaysNullable, PropagateNullLiteral {
3536

3637
public Mod(Expression left, Expression right) {
3738
super(ImmutableList.of(left, right), Operator.MOD);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// Licensed to the Apache Software Foundation (ASF) under one
2+
// or more contributor license agreements. See the NOTICE file
3+
// distributed with this work for additional information
4+
// regarding copyright ownership. The ASF licenses this file
5+
// to you under the Apache License, Version 2.0 (the
6+
// "License"); you may not use this file except in compliance
7+
// with the License. You may obtain a copy of the License at
8+
//
9+
// http://www.apache.org/licenses/LICENSE-2.0
10+
//
11+
// Unless required by applicable law or agreed to in writing,
12+
// software distributed under the License is distributed on an
13+
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14+
// KIND, either express or implied. See the License for the
15+
// specific language governing permissions and limitations
16+
// under the License.
17+
18+
package org.apache.doris.nereids.trees.expressions.functions;
19+
20+
/**
21+
* If input has NullLiteral, then output would be NullLiteral when folding constant
22+
*
23+
* e.g. Acos(NULL) ==> NULL.
24+
*/
25+
public interface PropagateNullLiteral {
26+
}

fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Acos.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.apache.doris.nereids.trees.expressions.Expression;
2222
import org.apache.doris.nereids.trees.expressions.functions.AlwaysNullable;
2323
import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
24+
import org.apache.doris.nereids.trees.expressions.functions.PropagateNullLiteral;
2425
import org.apache.doris.nereids.trees.expressions.shape.UnaryExpression;
2526
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
2627
import org.apache.doris.nereids.types.DoubleType;
@@ -34,7 +35,7 @@
3435
* ScalarFunction 'acos'. This class is generated by GenerateFunction.
3536
*/
3637
public class Acos extends ScalarFunction
37-
implements UnaryExpression, ExplicitlyCastableSignature, AlwaysNullable {
38+
implements UnaryExpression, ExplicitlyCastableSignature, AlwaysNullable, PropagateNullLiteral {
3839

3940
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
4041
FunctionSignature.ret(DoubleType.INSTANCE).args(DoubleType.INSTANCE)

fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/AppendTrailingCharIfAbsent.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.apache.doris.nereids.trees.expressions.Expression;
2222
import org.apache.doris.nereids.trees.expressions.functions.AlwaysNullable;
2323
import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
24+
import org.apache.doris.nereids.trees.expressions.functions.PropagateNullLiteral;
2425
import org.apache.doris.nereids.trees.expressions.shape.BinaryExpression;
2526
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
2627
import org.apache.doris.nereids.types.StringType;
@@ -35,7 +36,7 @@
3536
* ScalarFunction 'append_trailing_char_if_absent'. This class is generated by GenerateFunction.
3637
*/
3738
public class AppendTrailingCharIfAbsent extends ScalarFunction
38-
implements BinaryExpression, ExplicitlyCastableSignature, AlwaysNullable {
39+
implements BinaryExpression, ExplicitlyCastableSignature, AlwaysNullable, PropagateNullLiteral {
3940

4041
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
4142
FunctionSignature.ret(VarcharType.SYSTEM_DEFAULT)

fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/Asin.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.apache.doris.nereids.trees.expressions.Expression;
2222
import org.apache.doris.nereids.trees.expressions.functions.AlwaysNullable;
2323
import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
24+
import org.apache.doris.nereids.trees.expressions.functions.PropagateNullLiteral;
2425
import org.apache.doris.nereids.trees.expressions.shape.UnaryExpression;
2526
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
2627
import org.apache.doris.nereids.types.DoubleType;
@@ -34,7 +35,7 @@
3435
* ScalarFunction 'asin'. This class is generated by GenerateFunction.
3536
*/
3637
public class Asin extends ScalarFunction
37-
implements UnaryExpression, ExplicitlyCastableSignature, AlwaysNullable {
38+
implements UnaryExpression, ExplicitlyCastableSignature, AlwaysNullable, PropagateNullLiteral {
3839

3940
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
4041
FunctionSignature.ret(DoubleType.INSTANCE).args(DoubleType.INSTANCE)

fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/BitmapFromArray.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.apache.doris.nereids.trees.expressions.Expression;
2222
import org.apache.doris.nereids.trees.expressions.functions.AlwaysNullable;
2323
import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
24+
import org.apache.doris.nereids.trees.expressions.functions.PropagateNullLiteral;
2425
import org.apache.doris.nereids.trees.expressions.shape.UnaryExpression;
2526
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
2627
import org.apache.doris.nereids.types.ArrayType;
@@ -39,7 +40,7 @@
3940
* ScalarFunction 'bitmap_from_array'. This class is generated by GenerateFunction.
4041
*/
4142
public class BitmapFromArray extends ScalarFunction
42-
implements UnaryExpression, ExplicitlyCastableSignature, AlwaysNullable {
43+
implements UnaryExpression, ExplicitlyCastableSignature, AlwaysNullable, PropagateNullLiteral {
4344

4445
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
4546
FunctionSignature.ret(BitmapType.INSTANCE).args(ArrayType.of(BigIntType.INSTANCE)),

fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/BitmapFromBase64.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.apache.doris.nereids.trees.expressions.Expression;
2222
import org.apache.doris.nereids.trees.expressions.functions.AlwaysNullable;
2323
import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
24+
import org.apache.doris.nereids.trees.expressions.functions.PropagateNullLiteral;
2425
import org.apache.doris.nereids.trees.expressions.shape.UnaryExpression;
2526
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
2627
import org.apache.doris.nereids.types.BitmapType;
@@ -36,7 +37,7 @@
3637
* ScalarFunction 'bitmap_from_string'. This class is generated by GenerateFunction.
3738
*/
3839
public class BitmapFromBase64 extends ScalarFunction
39-
implements UnaryExpression, ExplicitlyCastableSignature, AlwaysNullable {
40+
implements UnaryExpression, ExplicitlyCastableSignature, AlwaysNullable, PropagateNullLiteral {
4041

4142
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
4243
FunctionSignature.ret(BitmapType.INSTANCE).args(VarcharType.SYSTEM_DEFAULT),

fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/BitmapFromString.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.apache.doris.nereids.trees.expressions.Expression;
2222
import org.apache.doris.nereids.trees.expressions.functions.AlwaysNullable;
2323
import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
24+
import org.apache.doris.nereids.trees.expressions.functions.PropagateNullLiteral;
2425
import org.apache.doris.nereids.trees.expressions.shape.UnaryExpression;
2526
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
2627
import org.apache.doris.nereids.types.BitmapType;
@@ -36,7 +37,7 @@
3637
* ScalarFunction 'bitmap_from_string'. This class is generated by GenerateFunction.
3738
*/
3839
public class BitmapFromString extends ScalarFunction
39-
implements UnaryExpression, ExplicitlyCastableSignature, AlwaysNullable {
40+
implements UnaryExpression, ExplicitlyCastableSignature, AlwaysNullable, PropagateNullLiteral {
4041

4142
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
4243
FunctionSignature.ret(BitmapType.INSTANCE).args(VarcharType.SYSTEM_DEFAULT),

fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/BitmapMax.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.apache.doris.nereids.trees.expressions.Expression;
2222
import org.apache.doris.nereids.trees.expressions.functions.AlwaysNullable;
2323
import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
24+
import org.apache.doris.nereids.trees.expressions.functions.PropagateNullLiteral;
2425
import org.apache.doris.nereids.trees.expressions.shape.UnaryExpression;
2526
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
2627
import org.apache.doris.nereids.types.BigIntType;
@@ -35,7 +36,7 @@
3536
* ScalarFunction 'bitmap_max'. This class is generated by GenerateFunction.
3637
*/
3738
public class BitmapMax extends ScalarFunction
38-
implements UnaryExpression, ExplicitlyCastableSignature, AlwaysNullable {
39+
implements UnaryExpression, ExplicitlyCastableSignature, AlwaysNullable, PropagateNullLiteral {
3940

4041
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
4142
FunctionSignature.ret(BigIntType.INSTANCE).args(BitmapType.INSTANCE)

fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/BitmapMin.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.apache.doris.nereids.trees.expressions.Expression;
2222
import org.apache.doris.nereids.trees.expressions.functions.AlwaysNullable;
2323
import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
24+
import org.apache.doris.nereids.trees.expressions.functions.PropagateNullLiteral;
2425
import org.apache.doris.nereids.trees.expressions.shape.UnaryExpression;
2526
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
2627
import org.apache.doris.nereids.types.BigIntType;
@@ -35,7 +36,7 @@
3536
* ScalarFunction 'bitmap_min'. This class is generated by GenerateFunction.
3637
*/
3738
public class BitmapMin extends ScalarFunction
38-
implements UnaryExpression, ExplicitlyCastableSignature, AlwaysNullable {
39+
implements UnaryExpression, ExplicitlyCastableSignature, AlwaysNullable, PropagateNullLiteral {
3940

4041
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
4142
FunctionSignature.ret(BigIntType.INSTANCE).args(BitmapType.INSTANCE)

fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/BitmapSubsetInRange.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.apache.doris.nereids.trees.expressions.Expression;
2222
import org.apache.doris.nereids.trees.expressions.functions.AlwaysNullable;
2323
import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
24+
import org.apache.doris.nereids.trees.expressions.functions.PropagateNullLiteral;
2425
import org.apache.doris.nereids.trees.expressions.shape.TernaryExpression;
2526
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
2627
import org.apache.doris.nereids.types.BigIntType;
@@ -35,7 +36,7 @@
3536
* ScalarFunction 'bitmap_subset_in_range'. This class is generated by GenerateFunction.
3637
*/
3738
public class BitmapSubsetInRange extends ScalarFunction
38-
implements TernaryExpression, ExplicitlyCastableSignature, AlwaysNullable {
39+
implements TernaryExpression, ExplicitlyCastableSignature, AlwaysNullable, PropagateNullLiteral {
3940

4041
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
4142
FunctionSignature.ret(BitmapType.INSTANCE)

fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/BitmapSubsetLimit.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.apache.doris.nereids.trees.expressions.Expression;
2222
import org.apache.doris.nereids.trees.expressions.functions.AlwaysNullable;
2323
import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
24+
import org.apache.doris.nereids.trees.expressions.functions.PropagateNullLiteral;
2425
import org.apache.doris.nereids.trees.expressions.shape.TernaryExpression;
2526
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
2627
import org.apache.doris.nereids.types.BigIntType;
@@ -35,7 +36,7 @@
3536
* ScalarFunction 'bitmap_subset_limit'. This class is generated by GenerateFunction.
3637
*/
3738
public class BitmapSubsetLimit extends ScalarFunction
38-
implements TernaryExpression, ExplicitlyCastableSignature, AlwaysNullable {
39+
implements TernaryExpression, ExplicitlyCastableSignature, AlwaysNullable, PropagateNullLiteral {
3940

4041
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
4142
FunctionSignature.ret(BitmapType.INSTANCE)

fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/ConvertTz.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.apache.doris.nereids.trees.expressions.functions.AlwaysNullable;
2424
import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
2525
import org.apache.doris.nereids.trees.expressions.functions.Monotonic;
26+
import org.apache.doris.nereids.trees.expressions.functions.PropagateNullLiteral;
2627
import org.apache.doris.nereids.trees.expressions.literal.Literal;
2728
import org.apache.doris.nereids.trees.expressions.literal.NullLiteral;
2829
import org.apache.doris.nereids.trees.expressions.literal.StringLikeLiteral;
@@ -41,7 +42,7 @@
4142
* ScalarFunction 'convert_tz'. This class is generated by GenerateFunction.
4243
*/
4344
public class ConvertTz extends ScalarFunction
44-
implements TernaryExpression, ExplicitlyCastableSignature, AlwaysNullable, Monotonic {
45+
implements TernaryExpression, ExplicitlyCastableSignature, AlwaysNullable, PropagateNullLiteral, Monotonic {
4546

4647
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
4748
FunctionSignature.ret(DateTimeV2Type.SYSTEM_DEFAULT)

fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/scalar/CryptoFunction.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.apache.doris.nereids.trees.expressions.Expression;
2121
import org.apache.doris.nereids.trees.expressions.functions.AlwaysNullable;
2222
import org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
23+
import org.apache.doris.nereids.trees.expressions.functions.PropagateNullLiteral;
2324
import org.apache.doris.nereids.trees.expressions.literal.StringLiteral;
2425
import org.apache.doris.qe.ConnectContext;
2526

@@ -30,7 +31,7 @@
3031

3132
/** CryptoFunction */
3233
public abstract class CryptoFunction extends ScalarFunction
33-
implements ExplicitlyCastableSignature, AlwaysNullable {
34+
implements ExplicitlyCastableSignature, AlwaysNullable, PropagateNullLiteral {
3435

3536
public CryptoFunction(String name, Expression... arguments) {
3637
super(name, arguments);

0 commit comments

Comments
 (0)