public SortedRangeSet intersect()

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();
    }