Interface SpecializedFunction
- All Superinterfaces:
FunctionDefinition
- All Known Implementing Classes:
BuiltInFunctionDefinition
FunctionDefinition that can provide a runtime implementation (i.e. the function's body)
that is specialized for the given call and session.
The planner tries to defer the specialization until shortly before code generation, where the
information given by a FunctionDefinition is not enough anymore and a subclass of UserDefinedFunction is required for runtime.
This interface is useful when the runtime code should know about information that is only available after planning (e.g. local session time zone or precision/scale of decimal return type).
A UserDefinedFunction that is registered in the API is implicitly specialized but can
also implement this interface to reconfigure itself before runtime.
Note: This interface is a rather low level kind of function but useful for advanced users.
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic interfaceSerializable factory that can be passed into aUserDefinedFunctionfor evaluating previously defined expression during runtime.static interfaceHelper interface for creatingSpecializedFunction.ExpressionEvaluators.static interfaceProvides call and session information for the specialized function. -
Method Summary
Modifier and TypeMethodDescriptionProvides a runtime implementation that is specialized for the given call and session.Methods inherited from interface org.apache.flink.table.functions.FunctionDefinition
getKind, getRequirements, getTypeInference, isDeterministic, supportsConstantFolding
-
Method Details
-
specialize
Provides a runtime implementation that is specialized for the given call and session.The method must return an instance of
UserDefinedFunctionor throw aTableExceptionif the given call is not supported. The returned instance must have the sameFunctionDefinitionsemantics but can have a differentFunctionDefinition.getTypeInference(DataTypeFactory)implementation.
-