Annotation Type FunctionHint
-
@PublicEvolving @Retention(RUNTIME) @Target({TYPE,METHOD}) @Repeatable(FunctionHints.class) public @interface FunctionHint
A hint that influences the reflection-based extraction of input types, accumulator types, and output types for constructing theTypeInferencelogic of aUserDefinedFunction.One or more annotations can be declared on top of a
UserDefinedFunctionclass or individually for eacheval()/accumulate()method for overloading function signatures. All hint parameters are optional. If a parameter is not defined, the default reflection-based extraction is used. Hint parameters defined on top of aUserDefinedFunctionclass are inherited by alleval()/accumulate()methods.The following examples show how to explicitly specify function signatures as a whole or in part and let the default extraction do the rest:
{@code // accepts (INT, STRING) and returns BOOLEAN- See Also:
DataTypeHint
-
-
Optional Element Summary
Optional Elements Modifier and Type Optional Element Description DataTypeHintaccumulatorExplicitly defines the intermediate result type that a function uses as accumulator.String[]argumentNamesExplicitly lists the argument names that a function takes as input.DataTypeHint[]inputExplicitly lists the argument types that a function takes as input.booleanisVarArgsDefines that the last argument type defined ininput()should be treated as a variable-length argument.DataTypeHintoutputExplicitly defines the result type that a function uses as output.
-
-
-
Element Detail
-
input
DataTypeHint[] input
Explicitly lists the argument types that a function takes as input.By default, explicit input types are undefined and the reflection-based extraction is used.
Note: Specifying the input arguments manually disables the entire reflection-based extraction around arguments. This means that also
isVarArgs()andargumentNames()need to be specified manually if required.- Default:
- {@org.apache.flink.table.annotation.DataTypeHint}
-
-
-
isVarArgs
boolean isVarArgs
Defines that the last argument type defined ininput()should be treated as a variable-length argument.By default, if
input()is defined, the last argument type is not a var-arg. Ifinput()is not defined, the reflection-based extraction is used to decide about the var-arg flag, thus, this parameter is ignored.- Default:
- false
-
-
-
argumentNames
String[] argumentNames
Explicitly lists the argument names that a function takes as input.By default, if
input()is defined, explicit argument names are undefined and this parameter can be used to provide argument names. Ifinput()is not defined, the reflection-based extraction is used, thus, this parameter is ignored.- Default:
- {""}
-
-
-
accumulator
DataTypeHint accumulator
Explicitly defines the intermediate result type that a function uses as accumulator.By default, an explicit accumulator type is undefined and the reflection-based extraction is used.
- Default:
- @org.apache.flink.table.annotation.DataTypeHint
-
-
-
output
DataTypeHint output
Explicitly defines the result type that a function uses as output.By default, an explicit output type is undefined and the reflection-based extraction is used.
- Default:
- @org.apache.flink.table.annotation.DataTypeHint
-
-