From 814e486113b967cde851fcc9d5cc6bc82fbcebfb Mon Sep 17 00:00:00 2001 From: Seaven Date: Thu, 28 Nov 2019 22:10:08 +0800 Subject: [PATCH] Support ifnull fe builtin function (#2292) (#2327) --- .../org/apache/doris/rewrite/FEFunctions.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) mode change 100644 => 100755 fe/src/main/java/org/apache/doris/rewrite/FEFunctions.java diff --git a/fe/src/main/java/org/apache/doris/rewrite/FEFunctions.java b/fe/src/main/java/org/apache/doris/rewrite/FEFunctions.java old mode 100644 new mode 100755 index 6786f728aa..c493c28aca --- a/fe/src/main/java/org/apache/doris/rewrite/FEFunctions.java +++ b/fe/src/main/java/org/apache/doris/rewrite/FEFunctions.java @@ -23,6 +23,7 @@ import org.apache.doris.analysis.FloatLiteral; import org.apache.doris.analysis.IntLiteral; import org.apache.doris.analysis.LargeIntLiteral; import org.apache.doris.analysis.LiteralExpr; +import org.apache.doris.analysis.NullLiteral; import org.apache.doris.analysis.StringLiteral; import org.apache.doris.catalog.Type; import org.apache.doris.common.AnalysisException; @@ -402,4 +403,29 @@ public class FEFunctions { resultBuilder.append(values[values.length - 1].getStringValue()); return new StringLiteral(resultBuilder.toString()); } + + @FEFunction(name = "ifnull", argTypes = {"VARCHAR", "VARCHAR"}, returnType = "VARCHAR") + public static LiteralExpr ifNullString(LiteralExpr first, LiteralExpr second) throws AnalysisException { + return first instanceof NullLiteral ? second : first; + } + + @FEFunction(name = "ifnull", argTypes = {"TINYINT", "TINYINT"}, returnType = "TINYINT") + public static LiteralExpr ifNullTinyInt(LiteralExpr first, LiteralExpr second) throws AnalysisException { + return first instanceof NullLiteral ? second : first; + } + + @FEFunction(name = "ifnull", argTypes = {"INT", "INT"}, returnType = "INT") + public static LiteralExpr ifNullInt(LiteralExpr first, LiteralExpr second) throws AnalysisException { + return first instanceof NullLiteral ? second : first; + } + + @FEFunction(name = "ifnull", argTypes = {"BIGINT", "BIGINT"}, returnType = "BIGINT") + public static LiteralExpr ifNullBigInt(LiteralExpr first, LiteralExpr second) throws AnalysisException { + return first instanceof NullLiteral ? second : first; + } + + @FEFunction(name = "ifnull", argTypes = { "DATETIME", "DATETIME" }, returnType = "DATETIME") + public static LiteralExpr ifNullDateTime(LiteralExpr first, LiteralExpr second) throws AnalysisException { + return first instanceof NullLiteral ? second : first; + } }