This commit is contained in:
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@ -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.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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)");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user