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 asUnresolvedReferenceExpressionor calls such asBuiltInFunctionDefinitions.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
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classExpressionResolver.ExpressionResolverBuilderBuilder for creatingExpressionResolver.classExpressionResolver.PostResolverFactoryFactory for creating resolved expressions after the actual resolution has happened.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static List<ResolverRule>getAllResolverRules()List of rules that will be applied during expression resolution.static List<ResolverRule>getExpandingResolverRules()List of rules for (possibly) expanding the list of unresolved expressions.ExpressionResolver.PostResolverFactorypostResolverFactory()Enables the creation of resolved expressions for transformations after the actual resolution.List<org.apache.flink.table.expressions.ResolvedExpression>resolve(List<org.apache.flink.table.expressions.Expression> expressions)Resolves given expressions with configured set of rules.List<org.apache.flink.table.expressions.Expression>resolveExpanding(List<org.apache.flink.table.expressions.Expression> expressions)Resolves given expressions with configured set of rules.static ExpressionResolver.ExpressionResolverBuilderresolverFor(TableConfig tableConfig, ClassLoader userClassLoader, TableReferenceLookup tableCatalog, FunctionLookup functionLookup, org.apache.flink.table.catalog.DataTypeFactory typeFactory, SqlExpressionResolver sqlExpressionResolver, QueryOperation... inputs)Creates a builder forExpressionResolver.
-
-
-
Method Detail
-
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 forExpressionResolver. One can add additional properties to the resolver like e.g.GroupWindoworOverWindow. You can also add additionalResolverRule.- Parameters:
tableConfig- general configurationtableCatalog- a way to lookup a table reference by namefunctionLookup- a way to lookup call by nametypeFactory- a way to lookup and create data typesinputs- 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.
-
-