Class SchemaCompatibilityValidator
- java.lang.Object
-
- org.apache.parquet.filter2.predicate.SchemaCompatibilityValidator
-
- All Implemented Interfaces:
FilterPredicate.Visitor<Void>
public class SchemaCompatibilityValidator extends Object implements FilterPredicate.Visitor<Void>
Inspects the column types found in the providedFilterPredicateand 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)
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static voidvalidate(FilterPredicate predicate, MessageType schema)Voidvisit(Operators.And and)<T extends Comparable<T>>
Voidvisit(Operators.Eq<T> pred)<T extends Comparable<T>>
Voidvisit(Operators.Gt<T> pred)<T extends Comparable<T>>
Voidvisit(Operators.GtEq<T> pred)<T extends Comparable<T>>
Voidvisit(Operators.In<T> pred)<T extends Comparable<T>,U extends UserDefinedPredicate<T>>
Voidvisit(Operators.LogicalNotUserDefined<T,U> udp)<T extends Comparable<T>>
Voidvisit(Operators.Lt<T> pred)<T extends Comparable<T>>
Voidvisit(Operators.LtEq<T> pred)Voidvisit(Operators.Not not)<T extends Comparable<T>>
Voidvisit(Operators.NotEq<T> pred)<T extends Comparable<T>>
Voidvisit(Operators.NotIn<T> pred)Voidvisit(Operators.Or or)<T extends Comparable<T>,U extends UserDefinedPredicate<T>>
Voidvisit(Operators.UserDefined<T,U> udp)
-
-
-
Method Detail
-
validate
public static void validate(FilterPredicate predicate, MessageType schema)
-
visit
public <T extends Comparable<T>> Void visit(Operators.Eq<T> pred)
- Specified by:
visitin interfaceFilterPredicate.Visitor<Void>
-
visit
public <T extends Comparable<T>> Void visit(Operators.NotEq<T> pred)
- Specified by:
visitin interfaceFilterPredicate.Visitor<Void>
-
visit
public <T extends Comparable<T>> Void visit(Operators.Lt<T> pred)
- Specified by:
visitin interfaceFilterPredicate.Visitor<Void>
-
visit
public <T extends Comparable<T>> Void visit(Operators.LtEq<T> pred)
- Specified by:
visitin interfaceFilterPredicate.Visitor<Void>
-
visit
public <T extends Comparable<T>> Void visit(Operators.Gt<T> pred)
- Specified by:
visitin interfaceFilterPredicate.Visitor<Void>
-
visit
public <T extends Comparable<T>> Void visit(Operators.GtEq<T> pred)
- Specified by:
visitin interfaceFilterPredicate.Visitor<Void>
-
visit
public <T extends Comparable<T>> Void visit(Operators.In<T> pred)
- Specified by:
visitin interfaceFilterPredicate.Visitor<Void>
-
visit
public <T extends Comparable<T>> Void visit(Operators.NotIn<T> pred)
- Specified by:
visitin interfaceFilterPredicate.Visitor<Void>
-
visit
public Void visit(Operators.And and)
- Specified by:
visitin interfaceFilterPredicate.Visitor<Void>
-
visit
public Void visit(Operators.Or or)
- Specified by:
visitin interfaceFilterPredicate.Visitor<Void>
-
visit
public Void visit(Operators.Not not)
- Specified by:
visitin interfaceFilterPredicate.Visitor<Void>
-
visit
public <T extends Comparable<T>,U extends UserDefinedPredicate<T>> Void visit(Operators.UserDefined<T,U> udp)
- Specified by:
visitin interfaceFilterPredicate.Visitor<Void>
-
visit
public <T extends Comparable<T>,U extends UserDefinedPredicate<T>> Void visit(Operators.LogicalNotUserDefined<T,U> udp)
- Specified by:
visitin interfaceFilterPredicate.Visitor<Void>
-
-