Package org.apache.iceberg.expressions
Class Binder
- java.lang.Object
-
- org.apache.iceberg.expressions.Binder
-
public class Binder extends java.lang.Object
Rewritesexpressions
by replacing unbound named references with references to fields in a struct schema.
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static Expression
bind(Types.StructType struct, Expression expr, boolean caseSensitive)
Replaces all unbound/named references with bound references to fields in the given struct.static java.util.Set<java.lang.Integer>
boundReferences(Types.StructType struct, java.util.List<Expression> exprs, boolean caseSensitive)
static boolean
isBound(Expression expr)
Returns whether an expression is bound.
-
-
-
Method Detail
-
bind
public static Expression bind(Types.StructType struct, Expression expr, boolean caseSensitive)
Replaces 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 exception
is 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
IllegalStateException
will be thrown.- Parameters:
struct
- Thestruct type
to resolve references by name.expr
- Anexpression
to 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 referencesjava.lang.IllegalStateException
- if any references are already bound
-
boundReferences
public static java.util.Set<java.lang.Integer> boundReferences(Types.StructType struct, java.util.List<Expression> exprs, boolean caseSensitive)
-
isBound
public static boolean isBound(Expression expr)
Returns whether an expression is bound.An expression is bound if all of its predicates are bound.
- Parameters:
expr
- anExpression
- Returns:
- true if the expression is bound
- Throws:
java.lang.IllegalArgumentException
- if the expression has both bound and unbound predicates.
-
-