Interface CallContext

All Known Implementing Classes:
AdaptedCallContext, UnknownCallContext

@PublicEvolving public interface CallContext
Provides details about a function call during TypeInference.
  • Method Summary

    Modifier and Type
    Method
    Description
    default <T> Optional<T>
    fail(boolean throwOnFailure, String message, Object... args)
    Helper method for handling failures during the type inference process while considering the throwOnFailure flag.
    Returns a resolved list of the call's argument types.
    <T> Optional<T>
    getArgumentValue(int pos, Class<T> clazz)
    Returns the literal value of the argument at the given position, given that the argument is a literal, is not null, and can be expressed as an instance of the provided class.
    Enables to lookup types in a catalog and resolve RAW types.
    Returns the function definition that defines the function currently being called.
    Returns the function's name usually referencing the function in a catalog.
    Returns the inferred output data type of the function call.
    Returns information about the table that has been passed to a table argument.
    boolean
    Returns whether the argument at the given position is a value literal.
    boolean
    isArgumentNull(int pos)
    Returns true if the argument at the given position is a literal and null, false otherwise.
    boolean
    Returns whether the function call happens as part of an aggregation that defines grouping columns.
    newValidationError(String message, Object... args)
    Creates a validation exception for exiting the type inference process with a meaningful exception.
  • Method Details

    • getDataTypeFactory

      DataTypeFactory getDataTypeFactory()
      Enables to lookup types in a catalog and resolve RAW types.
    • getFunctionDefinition

      FunctionDefinition getFunctionDefinition()
      Returns the function definition that defines the function currently being called.
    • isArgumentLiteral

      boolean isArgumentLiteral(int pos)
      Returns whether the argument at the given position is a value literal.
    • isArgumentNull

      boolean isArgumentNull(int pos)
      Returns true if the argument at the given position is a literal and null, false otherwise. If the argument is declared as optional and has no value, true is returned.

      Use isArgumentLiteral(int) before to check if the argument is actually a literal.

    • getArgumentValue

      <T> Optional<T> getArgumentValue(int pos, Class<T> clazz)
      Returns the literal value of the argument at the given position, given that the argument is a literal, is not null, and can be expressed as an instance of the provided class.

      It supports conversions to default conversion classes of LogicalTypes. This method should not be called with other classes.

      Use isArgumentLiteral(int) before to check if the argument is actually a literal.

    • getTableSemantics

      default Optional<TableSemantics> getTableSemantics(int pos)
      Returns information about the table that has been passed to a table argument.

      Semantics are only available for table arguments (i.e. arguments of a ProcessTableFunction that are annotated with @ArgumentHint(TABLE_AS_SET) or @ArgumentHint(TABLE_AS_ROW)).

    • getName

      String getName()
      Returns the function's name usually referencing the function in a catalog.

      Note: The name is meant for debugging purposes only.

    • getArgumentDataTypes

      List<DataType> getArgumentDataTypes()
      Returns a resolved list of the call's argument types. It also includes a type for every argument in a vararg function call.
    • getOutputDataType

      Optional<DataType> getOutputDataType()
      Returns the inferred output data type of the function call.

      It does this by inferring the input argument data type using ArgumentTypeStrategy.inferArgumentType(CallContext, int, boolean) of a wrapping call (if available) where this function call is an argument. For example, takes_string(this_function(NULL)) would lead to a DataTypes.STRING() because the wrapping call expects a string argument.

    • newValidationError

      default ValidationException newValidationError(String message, Object... args)
      Creates a validation exception for exiting the type inference process with a meaningful exception.
    • fail

      default <T> Optional<T> fail(boolean throwOnFailure, String message, Object... args)
      Helper method for handling failures during the type inference process while considering the throwOnFailure flag.

      Shorthand for if (throwOnFailure) throw ValidationException(...) else return Optional.empty().

    • isGroupedAggregation

      boolean isGroupedAggregation()
      Returns whether the function call happens as part of an aggregation that defines grouping columns.

      E.g. SELECT COUNT(*) FROM t is not a grouped aggregation but SELECT COUNT(*) FROM t GROUP BY k is.