Package org.apache.iceberg.expressions
Class Binder
java.lang.Object
org.apache.iceberg.expressions.Binder
Rewrites 
expressions by replacing unbound named references with references to
 fields in a struct schema.- 
Method SummaryModifier and TypeMethodDescriptionstatic Expressionbind(Types.StructType struct, Expression expr, boolean caseSensitive) Replaces all unbound/named references with bound references to fields in the given struct.boundReferences(Types.StructType struct, List<Expression> exprs, boolean caseSensitive) static booleanisBound(Expression expr) Returns whether an expression is bound.
- 
Method Details- 
bindReplaces all unbound/named references with bound references to fields in the given struct.When a reference is resolved, any literal used in a predicate for that field is converted to the field's type using Literal.to(Type). If automatic conversion to that type isn't allowed, avalidation exceptionis thrown.The result expression may be simplified when constructed. For example, isNull("a")is replaced withalwaysFalse()when"a"is resolved to a required field.The expression cannot contain references that are already bound, or an IllegalStateExceptionwill be thrown.- Parameters:
- struct- The- struct typeto resolve references by name.
- expr- An- expressionto rewrite with bound references.
- caseSensitive- A boolean flag to control whether the bind should enforce case sensitivity.
- Returns:
- the expression rewritten with bound references
- Throws:
- ValidationException- if literals do not match bound references
- IllegalStateException- if any references are already bound
 
- 
boundReferencespublic static Set<Integer> boundReferences(Types.StructType struct, List<Expression> exprs, boolean caseSensitive) 
- 
isBoundReturns whether an expression is bound.An expression is bound if all of its predicates are bound. - Parameters:
- expr- an- Expression
- Returns:
- true if the expression is bound
- Throws:
- IllegalArgumentException- if the expression has both bound and unbound predicates.
 
 
-