Class AndArgumentTypeStrategy
java.lang.Object
org.apache.flink.table.types.inference.strategies.AndArgumentTypeStrategy
- All Implemented Interfaces:
ArgumentTypeStrategy
Strategy for inferring and validating an argument using a conjunction of multiple
ArgumentTypeStrategys into one like f(NUMERIC && LITERAL)
Some ArgumentTypeStrategys cannot contribute an inferred type that is different from
the input type (e.g. InputTypeStrategies.LITERAL). Therefore, the order f(X && Y)
or f(Y && X) matters as it defines the precedence in case the result must be casted to a
more specific type.
The strategy aims to infer the first more specific, casted type or (if this is not possible) a
type that has been inferred from all ArgumentTypeStrategys.
-
Constructor Summary
ConstructorsConstructorDescriptionAndArgumentTypeStrategy(List<? extends ArgumentTypeStrategy> argumentStrategies) -
Method Summary
Modifier and TypeMethodDescriptionbooleangetExpectedArgument(FunctionDefinition functionDefinition, int argumentPos) Returns a summary of the function's expected argument atargumentPos.inthashCode()inferArgumentType(CallContext callContext, int argumentPos, boolean throwOnFailure) Main logic for inferring and validating an argument.
-
Constructor Details
-
AndArgumentTypeStrategy
-
-
Method Details
-
inferArgumentType
public Optional<DataType> inferArgumentType(CallContext callContext, int argumentPos, boolean throwOnFailure) Description copied from interface:ArgumentTypeStrategyMain logic for inferring and validating an argument. Returns the data type that is valid for the given call. If the returned type differs fromCallContext.getArgumentDataTypes()atargumentPos, a casting operation can be inserted. An empty result means that the given input type could not be inferred.- Specified by:
inferArgumentTypein interfaceArgumentTypeStrategy- Parameters:
callContext- provides details about the function callargumentPos- argument index in theCallContextthrowOnFailure- whether this function is allowed to throw anValidationExceptionwith a meaningful exception in case the inference is not successful or if this function should simply return an empty result.- Returns:
- three-state result for either "true, same data type as argument", "true, but argument must be casted to returned data type", or "false, no inferred data type could be found"
- See Also:
-
getExpectedArgument
public Signature.Argument getExpectedArgument(FunctionDefinition functionDefinition, int argumentPos) Description copied from interface:ArgumentTypeStrategyReturns a summary of the function's expected argument atargumentPos.- Specified by:
getExpectedArgumentin interfaceArgumentTypeStrategy- Parameters:
functionDefinition- the function definition that defines the function currently being called.argumentPos- the position within the function call for which the signature should be retrieved
-
equals
-
hashCode
public int hashCode()
-