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]