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 asUnresolvedReferenceExpression
or 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 class
ExpressionResolver.ExpressionResolverBuilder
Builder for creatingExpressionResolver
.class
ExpressionResolver.PostResolverFactory
Factory 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.PostResolverFactory
postResolverFactory()
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.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
.
-
-
-
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.GroupWindow
orOverWindow
. 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.
-
-