Class ExpressionResolver

java.lang.Object
org.apache.flink.table.expressions.resolver.ExpressionResolver

@Internal public class ExpressionResolver extends Object
Tries to resolve all unresolved expressions such as UnresolvedReferenceExpression or calls such as BuiltInFunctionDefinitions.OVER.

The default set of rules (getAllResolverRules()) will resolve following references:

  • flatten '*' and column functions to all fields of underlying inputs
  • join over aggregates with corresponding over windows into a single resolved call
  • resolve remaining unresolved references to fields, tables or local references
  • replace calls to BuiltInFunctionDefinitions.FLATTEN, BuiltInFunctionDefinitions.WITH_COLUMNS, etc.
  • performs call arguments types validation and inserts additional casts if possible
  • Method Details

    • getExpandingResolverRules

      public static List<ResolverRule> getExpandingResolverRules()
      List of rules for (possibly) expanding the list of unresolved expressions.
    • getAllResolverRules

      public static List<ResolverRule> getAllResolverRules()
      List of rules that will be applied during expression resolution.
    • resolverFor

      public static ExpressionResolver.ExpressionResolverBuilder resolverFor(TableConfig tableConfig, ClassLoader userClassLoader, TableReferenceLookup tableCatalog, FunctionLookup functionLookup, org.apache.flink.table.catalog.DataTypeFactory typeFactory, SqlExpressionResolver sqlExpressionResolver, QueryOperation... inputs)
      Creates a builder for ExpressionResolver. One can add additional properties to the resolver like e.g. GroupWindow or OverWindow. You can also add additional ResolverRule.
      Parameters:
      tableConfig - general configuration
      tableCatalog - a way to lookup a table reference by name
      functionLookup - a way to lookup call by name
      typeFactory - a way to lookup and create data types
      inputs - inputs to use for field resolution
      Returns:
      builder for resolver
    • resolve

      public List<org.apache.flink.table.expressions.ResolvedExpression> resolve(List<org.apache.flink.table.expressions.Expression> expressions)
      Resolves given expressions with configured set of rules. All expressions of an operation should be given at once as some rules might assume the order of expressions.

      After this method is applied the returned expressions should be ready to be converted to planner specific expressions.

      Parameters:
      expressions - list of expressions to resolve.
      Returns:
      resolved list of expression
    • resolveExpanding

      public List<org.apache.flink.table.expressions.Expression> resolveExpanding(List<org.apache.flink.table.expressions.Expression> expressions)
      Resolves given expressions with configured set of rules. All expressions of an operation should be given at once as some rules might assume the order of expressions.

      After this method is applied the returned expressions might contain unresolved expression that can be used for further API transformations.

      Parameters:
      expressions - list of expressions to resolve.
      Returns:
      resolved list of expression
    • postResolverFactory

      public ExpressionResolver.PostResolverFactory postResolverFactory()
      Enables the creation of resolved expressions for transformations after the actual resolution.