cherry-pick #40047 to branch-2.1
This commit is contained in:
@ -43,6 +43,7 @@ import org.apache.doris.nereids.trees.expressions.NullSafeEqual;
|
||||
import org.apache.doris.nereids.trees.expressions.Or;
|
||||
import org.apache.doris.nereids.trees.expressions.Slot;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.Monotonic;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.ConvertTz;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.Date;
|
||||
import org.apache.doris.nereids.trees.expressions.functions.scalar.DateTrunc;
|
||||
import org.apache.doris.nereids.trees.expressions.literal.BooleanLiteral;
|
||||
@ -638,6 +639,19 @@ public class OneRangePartitionEvaluator
|
||||
return computeMonotonicFunctionRange(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public EvaluateRangeResult visitConvertTz(ConvertTz convertTz, EvaluateRangeInput context) {
|
||||
EvaluateRangeResult result = super.visitConvertTz(convertTz, context);
|
||||
if (!(result.result instanceof ConvertTz)) {
|
||||
return result;
|
||||
}
|
||||
Expression converTzChild = convertTz.child(0);
|
||||
if (partitionSlotContainsNull.containsKey(converTzChild)) {
|
||||
partitionSlotContainsNull.put(convertTz, true);
|
||||
}
|
||||
return computeMonotonicFunctionRange(result);
|
||||
}
|
||||
|
||||
private boolean isPartitionSlot(Slot slot) {
|
||||
return slotToType.containsKey(slot);
|
||||
}
|
||||
|
||||
@ -22,6 +22,8 @@ import org.apache.doris.nereids.trees.expressions.Cast;
|
||||
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.functions.Monotonic;
|
||||
import org.apache.doris.nereids.trees.expressions.literal.Literal;
|
||||
import org.apache.doris.nereids.trees.expressions.literal.NullLiteral;
|
||||
import org.apache.doris.nereids.trees.expressions.literal.StringLikeLiteral;
|
||||
import org.apache.doris.nereids.trees.expressions.shape.TernaryExpression;
|
||||
@ -39,7 +41,7 @@ import java.util.List;
|
||||
* ScalarFunction 'convert_tz'. This class is generated by GenerateFunction.
|
||||
*/
|
||||
public class ConvertTz extends ScalarFunction
|
||||
implements TernaryExpression, ExplicitlyCastableSignature, AlwaysNullable {
|
||||
implements TernaryExpression, ExplicitlyCastableSignature, AlwaysNullable, Monotonic {
|
||||
|
||||
public static final List<FunctionSignature> SIGNATURES = ImmutableList.of(
|
||||
FunctionSignature.ret(DateTimeV2Type.SYSTEM_DEFAULT)
|
||||
@ -84,4 +86,19 @@ public class ConvertTz extends ScalarFunction
|
||||
public <R, C> R accept(ExpressionVisitor<R, C> visitor, C context) {
|
||||
return visitor.visitConvertTz(this, context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPositive() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMonotonicFunctionChildIndex() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Expression withConstantArgs(Literal literal) {
|
||||
return new ConvertTz(literal, child(1), child(2));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user