prestodb/presto · error · PrestoException
FUNCTION_IMPLEMENTATION_MISSING
FUNCTION_IMPLEMENTATION_MISSING
Error message
Unsupported type parameters (%s) for %s
What it means
Specialization failure in ParametricAggregation.findMatchingImplementation: no exact implementation exists for the bound signature and no generic implementation's type constraints accept the given type parameters, so the aggregation cannot be compiled for these arguments.
Source
Thrown at presto-main-base/src/main/java/com/facebook/presto/operator/aggregation/ParametricAggregation.java:171
private AggregationImplementation findMatchingImplementation(Signature boundSignature, BoundVariables variables, FunctionAndTypeManager functionAndTypeManager)
{
Optional<AggregationImplementation> foundImplementation = Optional.empty();
if (implementations.getExactImplementations().containsKey(boundSignature)) {
foundImplementation = Optional.of(implementations.getExactImplementations().get(boundSignature));
}
else {
for (AggregationImplementation candidate : implementations.getGenericImplementations()) {
if (candidate.areTypesAssignable(boundSignature, variables, functionAndTypeManager)) {
if (foundImplementation.isPresent()) {
throw new PrestoException(AMBIGUOUS_FUNCTION_CALL, format("Ambiguous function call (%s) for %s", variables, getSignature()));
}
foundImplementation = Optional.of(candidate);
}
}
}
if (!foundImplementation.isPresent()) {
throw new PrestoException(FUNCTION_IMPLEMENTATION_MISSING, format("Unsupported type parameters (%s) for %s", variables, getSignature()));
}
return foundImplementation.get();
}
private static AccumulatorStateSerializer<?> getAccumulatorStateSerializer(AggregationImplementation implementation, BoundVariables variables, FunctionAndTypeManager functionAndTypeManager, Class<?> stateClass, DynamicClassLoader classLoader)
{
AccumulatorStateSerializer<?> stateSerializer;
Optional<MethodHandle> stateSerializerFactory = implementation.getStateSerializerFactory();
if (stateSerializerFactory.isPresent()) {
try {
MethodHandle factoryHandle = bindDependencies(stateSerializerFactory.get(), implementation.getStateSerializerFactoryDependencies(), variables, functionAndTypeManager);
stateSerializer = (AccumulatorStateSerializer<?>) factoryHandle.invoke();
}
catch (Throwable t) {
throwIfUnchecked(t);
throw new RuntimeException(t);
}
}View on GitHub (pinned to 55bb57d202)
Solutions
- Cast the arguments to types the aggregation declares support for
- Check the function's documented signatures for accepted type parameters
- Use a different aggregation that supports the desired argument types
Defensive patterns
Strategy: type-guard
When it happens
Trigger: Thrown at presto-main-base/src/main/java/com/facebook/presto/operator/aggregation/ParametricAggregation.java:171 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/1572ecdccbd0398e.
Report an issue: GitHub.