Interface SqmSetReturningFunctionDescriptor

All Known Implementing Classes:
AbstractSqmSelfRenderingSetReturningFunctionDescriptor, AbstractSqmSetReturningFunctionDescriptor, CockroachDBJsonTableFunction, CteGenerateSeriesFunction, DB2JsonTableFunction, DB2UnnestFunction, DB2XmlTableFunction, GenerateSeriesFunction, H2GenerateSeriesFunction, H2JsonTableFunction, H2UnnestFunction, HANAGenerateSeriesFunction, HANAJsonTableFunction, HANAUnnestFunction, HANAXmlTableFunction, JsonTableFunction, MySQLJsonTableFunction, NamedSqmSetReturningFunctionDescriptor, NumberSeriesGenerateSeriesFunction, OracleJsonTableFunction, OracleUnnestFunction, OracleXmlTableFunction, PostgreSQLJsonTableFunction, PostgreSQLUnnestFunction, SQLServerGenerateSeriesFunction, SQLServerJsonTableFunction, SQLServerUnnestFunction, SQLServerXmlTableFunction, SybaseASEGenerateSeriesFunction, SybaseASEUnnestFunction, SybaseASEXmlTableFunction, UnnestFunction, XmlTableFunction

@Incubating public interface SqmSetReturningFunctionDescriptor
A factory for SQM nodes representing invocations of a certain named set-returning function.

When a function call is encountered in the text of an HQL query, a SqmSetReturningFunctionDescriptor for the given name is obtained from the SqmFunctionRegistry, and the generateSqmExpression(List, QueryEngine) method is called with SQM nodes representing the invocation arguments. It is the responsibility of the SqmSetReturningFunctionDescriptor to produce a subtree of SQM nodes representing the function invocation.

The resulting subtree might be quite complex, since the SqmSetReturningFunctionDescriptor is permitted to perform syntactic de-sugaring. On the other hand, generateSqmExpression(List, QueryEngine) returns SelfRenderingSqmSetReturningFunction, which is an object that is permitted to take over the logic of producing the SQL AST subtree, so de-sugaring may also be performed there.

User-written function descriptors may be contributed via a FunctionContributor. The SqmFunctionRegistry exposes methods which simplify the definition of a function, including SqmFunctionRegistry.namedSetReturningDescriptorBuilder(String, SetReturningFunctionTypeResolver).

Since:
7.0
See Also:
  • Method Details

    • generateSqmExpression

      <T> SelfRenderingSqmSetReturningFunction<T> generateSqmExpression(List<? extends SqmTypedNode<?>> arguments, QueryEngine queryEngine)
      Instantiate this template with the given arguments and. This produces a tree of SQM nodes representing a tree of function invocations. This allows a single HQL function to be defined in terms of other predefined (database independent) HQL functions, simplifying the task of writing HQL functions which are portable between databases.
    • getSignature

      default String getSignature(String name)
      Used only for pretty-printing the function signature in the LOG.
      Parameters:
      name - the function name
      Returns:
      the signature of the function
    • getArgumentsValidator

      ArgumentsValidator getArgumentsValidator()
      The object responsible for validating arguments of the function.
      Returns:
      an instance of ArgumentsValidator