diff --git a/fe/src/main/java/org/apache/doris/analysis/AnalyticExpr.java b/fe/src/main/java/org/apache/doris/analysis/AnalyticExpr.java index df1c2be93ed155..4dc4aff70fe49a 100644 --- a/fe/src/main/java/org/apache/doris/analysis/AnalyticExpr.java +++ b/fe/src/main/java/org/apache/doris/analysis/AnalyticExpr.java @@ -17,10 +17,6 @@ package org.apache.doris.analysis; -import com.google.common.base.Joiner; -import com.google.common.base.Objects; -import com.google.common.base.Preconditions; -import com.google.common.collect.Lists; import org.apache.doris.analysis.AnalyticWindow.Boundary; import org.apache.doris.analysis.AnalyticWindow.BoundaryType; import org.apache.doris.catalog.AggregateFunction; @@ -30,6 +26,12 @@ import org.apache.doris.common.AnalysisException; import org.apache.doris.common.TreeNode; import org.apache.doris.thrift.TExprNode; + +import com.google.common.base.Joiner; +import com.google.common.base.Objects; +import com.google.common.base.Preconditions; +import com.google.common.collect.Lists; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -288,6 +290,10 @@ void checkDefaultValue(Analyzer analyzer) throws AnalysisException { return; } + if (!getFnCall().getChild(0).getType().getPrimitiveType().isNumericType()) { + return; + } + double value = val.getConstFromExpr(val); PrimitiveType type = getFnCall().getChild(0).getType().getPrimitiveType(); boolean out = false; diff --git a/fe/src/main/java/org/apache/doris/analysis/StringLiteral.java b/fe/src/main/java/org/apache/doris/analysis/StringLiteral.java index c0f1546a01a35a..6912997c1c71f9 100644 --- a/fe/src/main/java/org/apache/doris/analysis/StringLiteral.java +++ b/fe/src/main/java/org/apache/doris/analysis/StringLiteral.java @@ -28,6 +28,7 @@ import org.apache.doris.thrift.TStringLiteral; import com.google.common.base.Preconditions; + import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -202,6 +203,11 @@ protected Expr uncheckedCastTo(Type targetType) throws AnalysisException { } catch (AnalysisException e) { // pass; } + } else if (targetType.equals(type)) { + return this; + } else if (targetType.isStringType()) { + type = targetType; + return this; } return super.uncheckedCastTo(targetType); }