public class SchemaCompatibilityValidator extends Object implements FilterPredicate.Visitor<Void>
FilterPredicate and compares them
to the actual schema found in the parquet file. If the provided predicate's types are
not consistent with the file schema, and IllegalArgumentException is thrown.
Ideally, all this would be checked at compile time, and this class wouldn't be needed.
If we can come up with a way to do that, we should.
This class is stateful, cannot be reused, and is not thread safe.
TODO: detect if a column is optional or required and validate that eq(null)
TODO: is not called on required fields (is that too strict?)
TODO: (https://issues.apache.org/jira/browse/PARQUET-44)| Modifier and Type | Method and Description |
|---|---|
static void |
validate(FilterPredicate predicate,
MessageType schema) |
Void |
visit(Operators.And and) |
<T extends Comparable<T>> |
visit(Operators.Eq<T> pred) |
<T extends Comparable<T>> |
visit(Operators.Gt<T> pred) |
<T extends Comparable<T>> |
visit(Operators.GtEq<T> pred) |
<T extends Comparable<T>,U extends UserDefinedPredicate<T>> |
visit(Operators.LogicalNotUserDefined<T,U> udp) |
<T extends Comparable<T>> |
visit(Operators.Lt<T> pred) |
<T extends Comparable<T>> |
visit(Operators.LtEq<T> pred) |
Void |
visit(Operators.Not not) |
<T extends Comparable<T>> |
visit(Operators.NotEq<T> pred) |
Void |
visit(Operators.Or or) |
<T extends Comparable<T>,U extends UserDefinedPredicate<T>> |
visit(Operators.UserDefined<T,U> udp) |
public static void validate(FilterPredicate predicate, MessageType schema)
public <T extends Comparable<T>> Void visit(Operators.Eq<T> pred)
visit in interface FilterPredicate.Visitor<Void>public <T extends Comparable<T>> Void visit(Operators.NotEq<T> pred)
visit in interface FilterPredicate.Visitor<Void>public <T extends Comparable<T>> Void visit(Operators.Lt<T> pred)
visit in interface FilterPredicate.Visitor<Void>public <T extends Comparable<T>> Void visit(Operators.LtEq<T> pred)
visit in interface FilterPredicate.Visitor<Void>public <T extends Comparable<T>> Void visit(Operators.Gt<T> pred)
visit in interface FilterPredicate.Visitor<Void>public <T extends Comparable<T>> Void visit(Operators.GtEq<T> pred)
visit in interface FilterPredicate.Visitor<Void>public Void visit(Operators.And and)
visit in interface FilterPredicate.Visitor<Void>public Void visit(Operators.Or or)
visit in interface FilterPredicate.Visitor<Void>public Void visit(Operators.Not not)
visit in interface FilterPredicate.Visitor<Void>public <T extends Comparable<T>,U extends UserDefinedPredicate<T>> Void visit(Operators.UserDefined<T,U> udp)
visit in interface FilterPredicate.Visitor<Void>public <T extends Comparable<T>,U extends UserDefinedPredicate<T>> Void visit(Operators.LogicalNotUserDefined<T,U> udp)
visit in interface FilterPredicate.Visitor<Void>Copyright © 2019 The Apache Software Foundation. All rights reserved.