From a8dacfbfd9c93b5d96f00affa76bfaec2020ae96 Mon Sep 17 00:00:00 2001 From: minghong Date: Fri, 13 Jan 2023 12:58:04 +0800 Subject: [PATCH] [opt](planner) return bigint literal when cast date literal to bigint type (#15613) --- .../main/java/org/apache/doris/analysis/DateLiteral.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java index 2377351822..229769e6f2 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DateLiteral.java @@ -647,8 +647,13 @@ public class DateLiteral extends LiteralExpr { } } else if (targetType.isStringType()) { return new StringLiteral(getStringValue()); - } else if (Type.isImplicitlyCastable(this.type, targetType, true)) { - return new CastExpr(targetType, this); + } else if (targetType.isBigIntType()) { + long value = getYear() * 1000 + getMonth() * 100 + getDay(); + return new IntLiteral(value, Type.BIGINT); + } else { + if (Type.isImplicitlyCastable(this.type, targetType, true)) { + return new CastExpr(targetType, this); + } } Preconditions.checkState(false); return this;