[enhancement](udf) add the switch enable_java_udf to control the creation and use of java_udf. (#26213)
This commit is contained in:
@ -23,6 +23,7 @@ import org.apache.doris.catalog.ArrayType;
|
||||
import org.apache.doris.catalog.Env;
|
||||
import org.apache.doris.catalog.Function;
|
||||
import org.apache.doris.catalog.Function.NullableMode;
|
||||
import org.apache.doris.catalog.FunctionUtil;
|
||||
import org.apache.doris.catalog.MapType;
|
||||
import org.apache.doris.catalog.ScalarFunction;
|
||||
import org.apache.doris.catalog.ScalarType;
|
||||
@ -262,6 +263,8 @@ public class CreateFunctionStmt extends DdlStmt {
|
||||
}
|
||||
}
|
||||
if (binaryType == TFunctionBinaryType.JAVA_UDF) {
|
||||
FunctionUtil.checkEnableJavaUdf();
|
||||
|
||||
String returnNullModeStr = properties.get(IS_RETURN_NULL);
|
||||
if (returnNullModeStr == null) {
|
||||
return;
|
||||
|
||||
@ -28,6 +28,7 @@ import org.apache.doris.catalog.DatabaseIf;
|
||||
import org.apache.doris.catalog.Env;
|
||||
import org.apache.doris.catalog.Function;
|
||||
import org.apache.doris.catalog.FunctionSet;
|
||||
import org.apache.doris.catalog.FunctionUtil;
|
||||
import org.apache.doris.catalog.MapType;
|
||||
import org.apache.doris.catalog.ScalarFunction;
|
||||
import org.apache.doris.catalog.ScalarType;
|
||||
@ -1608,6 +1609,9 @@ public class FunctionCallExpr extends Expr {
|
||||
if (analyzer.isReAnalyze() && fn instanceof AliasFunction) {
|
||||
throw new AnalysisException("a UDF in the original function of a alias function");
|
||||
}
|
||||
if (fn != null) {
|
||||
FunctionUtil.checkEnableJavaUdf();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -146,6 +146,7 @@ public class FunctionRegistry {
|
||||
List<FunctionBuilder> candidate = name2UdfBuilders.getOrDefault(scope, ImmutableMap.of())
|
||||
.get(name.toLowerCase());
|
||||
if (candidate != null && !candidate.isEmpty()) {
|
||||
FunctionUtil.checkEnableJavaUdfForNereids();
|
||||
return candidate;
|
||||
}
|
||||
}
|
||||
|
||||
@ -21,6 +21,7 @@ import org.apache.doris.analysis.Analyzer;
|
||||
import org.apache.doris.analysis.SetType;
|
||||
import org.apache.doris.cluster.ClusterNamespace;
|
||||
import org.apache.doris.common.AnalysisException;
|
||||
import org.apache.doris.common.Config;
|
||||
import org.apache.doris.common.ErrorCode;
|
||||
import org.apache.doris.common.ErrorReport;
|
||||
import org.apache.doris.common.UserException;
|
||||
@ -257,4 +258,16 @@ public class FunctionUtil {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void checkEnableJavaUdf() throws AnalysisException {
|
||||
if (!Config.enable_java_udf) {
|
||||
throw new AnalysisException("java_udf has been disabled.");
|
||||
}
|
||||
}
|
||||
|
||||
public static void checkEnableJavaUdfForNereids() {
|
||||
if (!Config.enable_java_udf) {
|
||||
throw new org.apache.doris.nereids.exceptions.AnalysisException("java_udf has been disabled.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user