From a3ac8b98b8553e452d642fc7277e3a772cbe12d4 Mon Sep 17 00:00:00 2001 From: starocean999 <40539150+starocean999@users.noreply.github.com> Date: Fri, 27 Oct 2023 11:13:30 +0800 Subject: [PATCH] [fix](planner)nvl should match function signature in the same way as ifnull (#25849) --- .../main/java/org/apache/doris/analysis/FunctionCallExpr.java | 3 ++- .../query_p0/sql_functions/conditional_functions/test_nvl.out | 3 +++ .../sql_functions/conditional_functions/test_nvl.groovy | 2 ++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java index 965b579a54..f138b8717a 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionCallExpr.java @@ -1517,7 +1517,8 @@ public class FunctionCallExpr extends Expr { fn.setReturnType(assignmentCompatibleType); } - } else if (fnName.getFunction().equalsIgnoreCase("ifnull")) { + } else if (fnName.getFunction().equalsIgnoreCase("ifnull") + || fnName.getFunction().equalsIgnoreCase("nvl")) { Type[] childTypes = collectChildReturnTypes(); Type assignmentCompatibleType = ScalarType.getAssignmentCompatibleType(childTypes[0], childTypes[1], true); if (assignmentCompatibleType != Type.INVALID) { diff --git a/regression-test/data/query_p0/sql_functions/conditional_functions/test_nvl.out b/regression-test/data/query_p0/sql_functions/conditional_functions/test_nvl.out index 5c39db61b8..555eded99c 100644 --- a/regression-test/data/query_p0/sql_functions/conditional_functions/test_nvl.out +++ b/regression-test/data/query_p0/sql_functions/conditional_functions/test_nvl.out @@ -4,3 +4,6 @@ true false false +-- !select2 -- +123456.134444454 + diff --git a/regression-test/suites/query_p0/sql_functions/conditional_functions/test_nvl.groovy b/regression-test/suites/query_p0/sql_functions/conditional_functions/test_nvl.groovy index cc94bb1f66..5c19602b6c 100644 --- a/regression-test/suites/query_p0/sql_functions/conditional_functions/test_nvl.groovy +++ b/regression-test/suites/query_p0/sql_functions/conditional_functions/test_nvl.groovy @@ -17,4 +17,6 @@ suite("test_nvl") { qt_select "select nvl(k6, \"false\") k from test_query_db.test order by k1" + sql """set enable_nereids_planner=false;""" + qt_select2 "select nvl(123456.134444454,0);" }