in athena-federation-sdk/src/main/java/com/amazonaws/athena/connector/lambda/domain/predicate/SortedRangeSet.java [357:392]
public SortedRangeSet intersect(BlockAllocator allocator, ValueSet other)
{
SortedRangeSet otherRangeSet = checkCompatibility(other);
boolean intersectNullAllowed = this.isNullAllowed() && other.isNullAllowed();
Builder builder = new Builder(type, intersectNullAllowed);
Iterator<Range> iterator1 = getOrderedRanges().iterator();
Iterator<Range> iterator2 = otherRangeSet.getOrderedRanges().iterator();
if (iterator1.hasNext() && iterator2.hasNext()) {
Range range1 = iterator1.next();
Range range2 = iterator2.next();
while (true) {
if (range1.overlaps(range2)) {
builder.add(range1.intersect(range2));
}
if (range1.getHigh().compareTo(range2.getHigh()) <= 0) {
if (!iterator1.hasNext()) {
break;
}
range1 = iterator1.next();
}
else {
if (!iterator2.hasNext()) {
break;
}
range2 = iterator2.next();
}
}
}
return builder.build();
}