prestodb/presto · error · PrestoException
GENERIC_USER_ERROR
GENERIC_USER_ERROR
Error message
Cannot create function in built-in function namespace: %s
What it means
Error from the built-in function namespace manager's createFunction: an attempt was made to register a user-defined function in the built-in function namespace, which is read-only and reserved for functions shipped with Presto.
Source
Thrown at presto-main-base/src/main/java/com/facebook/presto/metadata/BuiltInTypeAndFunctionNamespaceManager.java:1077
{
for (SqlFunction function : functions) {
for (SqlFunction existingFunction : this.functions.list()) {
checkArgument(!function.getSignature().equals(existingFunction.getSignature()), "Function already registered: %s", function.getSignature());
}
}
this.functions = new FunctionMap(this.functions, functions);
}
@Override
public void setBlockEncodingSerde(BlockEncodingSerde blockEncodingSerde)
{
// Do not need to do anything here since BlockEncodingSerde is passed in constructor
}
@Override
public void createFunction(SqlInvokedFunction function, boolean replace)
{
throw new PrestoException(GENERIC_USER_ERROR, format("Cannot create function in built-in function namespace: %s", function.getSignature().getName()));
}
@Override
public void alterFunction(QualifiedObjectName functionName, Optional<List<TypeSignature>> parameterTypes, AlterRoutineCharacteristics alterRoutineCharacteristics)
{
throw new PrestoException(GENERIC_USER_ERROR, format("Cannot alter function in built-in function namespace: %s", functionName));
}
@Override
public void dropFunction(QualifiedObjectName functionName, Optional<List<TypeSignature>> parameterTypes, boolean exists)
{
throw new PrestoException(GENERIC_USER_ERROR, format("Cannot drop function in built-in function namespace: %s", functionName));
}
public String getName()
{
return ID;
}View on GitHub (pinned to 55bb57d202)
Solutions
- Create the function in a regular function namespace (a catalog/schema with function support)
- Use a catalog configured with a UDF-capable function namespace manager
- Use built-in functions or a connector-provided function instead of registering into the built-in namespace
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at presto-main-base/src/main/java/com/facebook/presto/metadata/BuiltInTypeAndFunctionNamespaceManager.java:1077 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04).
Data as JSON: /api/errors/5913aaeda5677eaf.
Report an issue: GitHub.