Interface SqlOperandTypeChecker

All Known Subinterfaces:
SqlOperandMetadata, SqlSingleOperandTypeChecker
All Known Implementing Classes:
AssignableOperandTypeChecker, ComparableOperandTypeChecker, CompositeOperandTypeChecker, CompositeSingleOperandTypeChecker, ExplicitOperandTypeChecker, FamilyOperandTypeChecker, LiteralOperandTypeChecker, MultisetOperandTypeChecker, OperandMetadataImpl, SameOperandTypeChecker, SameOperandTypeExceptLastOperandChecker, SetopOperandTypeChecker, SqlWindowTableFunction.AbstractOperandMetadata

public interface SqlOperandTypeChecker
Strategy interface to check for allowed operand types of an operator call.

This interface is an example of the strategy pattern.

See Also:
  • Method Details

    • checkOperandTypes

      boolean checkOperandTypes(SqlCallBinding callBinding, boolean throwOnFailure)
      Checks the types of all operands to an operator call.
      Parameters:
      callBinding - description of the call to be checked
      throwOnFailure - whether to throw an exception if check fails (otherwise returns false in that case)
      Returns:
      whether check succeeded
    • getOperandCountRange

      SqlOperandCountRange getOperandCountRange()
      Returns the range of operand counts allowed in a call.
    • getAllowedSignatures

      String getAllowedSignatures(SqlOperator op, String opName)
      Returns a string describing the allowed formal signatures of a call, e.g. "SUBSTR(VARCHAR, INTEGER, INTEGER)".
      Parameters:
      op - the operator being checked
      opName - name to use for the operator in case of aliasing
      Returns:
      generated string
    • getConsistency

      Returns the strategy for making the arguments have consistency types.
    • isOptional

      boolean isOptional(int i)
      Returns whether the ith operand is optional.
    • isFixedParameters

      default boolean isFixedParameters()
      Returns whether the list of parameters is fixed-length. In standard SQL, user-defined functions are fixed-length.

      If true, the validator should expand calls, supplying a DEFAULT value for each parameter for which an argument is not supplied.

    • typeInference

      default @Nullable SqlOperandTypeInference typeInference()
      Converts this type checker to a type inference; returns null if not possible.