public class Binder
extends java.lang.Object
expressions by replacing unbound named references with references to
fields in a struct schema.| Modifier and Type | Method and 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.
|
public static Expression bind(Types.StructType struct, Expression expr, boolean caseSensitive)
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, a validation exception is thrown.
The result expression may be simplified when constructed. For example, isNull("a")
is replaced with alwaysFalse() when "a" is resolved to a required field.
The expression cannot contain references that are already bound, or an IllegalStateException will be thrown.
struct - The struct type to resolve references by name.expr - An expression to rewrite with bound references.caseSensitive - A boolean flag to control whether the bind should enforce case
sensitivity.ValidationException - if literals do not match bound referencesjava.lang.IllegalStateException - if any references are already boundpublic static java.util.Set<java.lang.Integer> boundReferences(Types.StructType struct, java.util.List<Expression> exprs, boolean caseSensitive)
public static boolean isBound(Expression expr)
An expression is bound if all of its predicates are bound.
expr - an Expressionjava.lang.IllegalArgumentException - if the expression has both bound and unbound predicates.