// in the case of identical source and partition names, the predicate
// will be applied for both source and partition values.
for (Schema.Field field : fields) {
Predicate sourcePredicate = predicates.get(field.name());
if (sourcePredicate != null) {
predicateMap.put(field, sourcePredicate);
}
}
if (strategy != null) {
// there could be partition predicates to add
for (FieldPartitioner fp : strategy.getFieldPartitioners()) {
if (fp instanceof ProvidedFieldPartitioner) {
// no source field for provided partitioners, so no values to test
continue;
}
Predicate partitionPredicate = predicates.get(fp.getName());
if (partitionPredicate != null) {
Predicate transformPredicate = new TransformPredicate(
fp, partitionPredicate);
Schema.Field field = schema.getField(fp.getSourceName());
Predicate sourcePredicate = predicateMap.get(field);
if (sourcePredicate != null) {
// combine the source and the transform-wrapped predicates
predicateMap.put(field,
combine(sourcePredicate, transformPredicate));
} else {