This is an automated email from the ASF dual-hosted git repository.

yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-2.1 by this push:
     new 2febf0de1be branch-2.1: [fix](udf) alias udf skip check 
enable_java_udf #48843 (#48914)
2febf0de1be is described below

commit 2febf0de1be290356d2364fff708150219f6734d
Author: yujun <[email protected]>
AuthorDate: Fri Mar 14 11:21:01 2025 +0800

    branch-2.1: [fix](udf) alias udf skip check enable_java_udf #48843 (#48914)
---
 .../main/java/org/apache/doris/catalog/FunctionRegistry.java | 12 +++++++++++-
 .../src/main/java/org/apache/doris/catalog/FunctionUtil.java |  5 -----
 .../org/apache/doris/nereids/trees/expressions/UdfTest.java  |  4 ++++
 3 files changed, 15 insertions(+), 6 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/catalog/FunctionRegistry.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/FunctionRegistry.java
index 6adf27f8dc3..ee10a6cacf7 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/FunctionRegistry.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/FunctionRegistry.java
@@ -17,6 +17,7 @@
 
 package org.apache.doris.catalog;
 
+import org.apache.doris.common.Config;
 import org.apache.doris.datasource.InternalCatalog;
 import org.apache.doris.mysql.privilege.PrivPredicate;
 import org.apache.doris.nereids.annotation.Developing;
@@ -27,6 +28,8 @@ import 
org.apache.doris.nereids.trees.expressions.functions.BoundFunction;
 import 
org.apache.doris.nereids.trees.expressions.functions.BuiltinFunctionBuilder;
 import 
org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
 import org.apache.doris.nereids.trees.expressions.functions.FunctionBuilder;
+import 
org.apache.doris.nereids.trees.expressions.functions.udf.JavaUdafBuilder;
+import org.apache.doris.nereids.trees.expressions.functions.udf.JavaUdfBuilder;
 import org.apache.doris.nereids.trees.expressions.functions.udf.UdfBuilder;
 import org.apache.doris.nereids.types.DataType;
 import org.apache.doris.qe.ConnectContext;
@@ -161,6 +164,14 @@ public class FunctionRegistry {
             throw new AnalysisException("Can not found function '" + 
qualifiedName
                     + "' which has " + arity + " arity. Candidate functions 
are: " + candidateHints);
         }
+        if (!Config.enable_java_udf) {
+            candidateBuilders = candidateBuilders.stream()
+                    .filter(fb -> !(fb instanceof JavaUdfBuilder || fb 
instanceof JavaUdafBuilder))
+                    .collect(Collectors.toList());
+            if (candidateBuilders.isEmpty()) {
+                throw new AnalysisException("java_udf has been disabled.");
+            }
+        }
         if (candidateBuilders.size() > 1) {
             boolean needChooseOne = true;
             List<FunctionSignature> signatures = 
Lists.newArrayListWithCapacity(candidateBuilders.size());
@@ -213,7 +224,6 @@ public class FunctionRegistry {
                 List<FunctionBuilder> candidate = 
name2UdfBuilders.getOrDefault(scope, ImmutableMap.of())
                         .get(name.toLowerCase());
                 if (candidate != null && !candidate.isEmpty()) {
-                    FunctionUtil.checkEnableJavaUdfForNereids();
                     return candidate;
                 }
             }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/catalog/FunctionUtil.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/FunctionUtil.java
index e6c7e073579..2846c51ecf6 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/FunctionUtil.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/FunctionUtil.java
@@ -268,9 +268,4 @@ public class FunctionUtil {
         }
     }
 
-    public static void checkEnableJavaUdfForNereids() {
-        if (!Config.enable_java_udf) {
-            throw new 
org.apache.doris.nereids.exceptions.AnalysisException("java_udf has been 
disabled.");
-        }
-    }
 }
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/UdfTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/UdfTest.java
index 13834642091..635a3300dfe 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/UdfTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/expressions/UdfTest.java
@@ -18,6 +18,7 @@
 package org.apache.doris.nereids.trees.expressions;
 
 import org.apache.doris.catalog.Env;
+import org.apache.doris.common.Config;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.DateFormat;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.DateTrunc;
 import org.apache.doris.nereids.trees.expressions.functions.scalar.DayOfMonth;
@@ -59,10 +60,13 @@ public class UdfTest extends TestWithFeService implements 
PlanPatternMatchSuppor
     @Override
     protected void runBeforeEach() throws Exception {
         connectContext.setDatabase("test");
+        Config.enable_java_udf = true;
     }
 
     @Test
     public void testSimpleAliasFunction() throws Exception {
+        // alias udf should not check java_udf
+        Config.enable_java_udf = false;
         createFunction("create global alias function f(int) with parameter(n) 
as hours_add(now(3), n)");
         createFunction("create alias function f(int) with parameter(n) as 
hours_sub(now(3), n)");
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to