@Override public List<Range> getOrderedRanges() { return SortedRangeSet.this.getOrderedRanges(); }
public static PrestoThriftRangeValueSet fromSortedRangeSet(SortedRangeSet valueSet) { List<PrestoThriftRange> ranges = valueSet.getOrderedRanges().stream() .map(PrestoThriftRange::fromRange) .collect(toImmutableList()); return new PrestoThriftRangeValueSet(ranges); }
@Override public SortedRangeSet union(Collection<ValueSet> valueSets) { Builder builder = new Builder(type); builder.addAll(this.getOrderedRanges()); for (ValueSet valueSet : valueSets) { builder.addAll(checkCompatibility(valueSet).getOrderedRanges()); } return builder.build(); }
@Override public SortedRangeSet union(ValueSet other) { SortedRangeSet otherRangeSet = checkCompatibility(other); return new Builder(type) .addAll(this.getOrderedRanges()) .addAll(otherRangeSet.getOrderedRanges()) .build(); }
@Override public SortedRangeSet intersect(ValueSet other) { SortedRangeSet otherRangeSet = checkCompatibility(other); Builder builder = new Builder(type); 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(); }
SortedRangeSet complement = sortedRangeSet.complement(); List<Range> singleValueExclusionsList = complement.getOrderedRanges().stream().filter(Range::isSingleValue).collect(toList()); List<Range> originalUnionSingleValues = SortedRangeSet.copyOf(type, singleValueExclusionsList).union(sortedRangeSet).getOrderedRanges(); PeekingIterator<Range> singleValueExclusions = peekingIterator(singleValueExclusionsList.iterator());
@Test public void testEmptySet() { SortedRangeSet rangeSet = SortedRangeSet.none(BIGINT); assertEquals(rangeSet.getType(), BIGINT); assertTrue(rangeSet.isNone()); assertFalse(rangeSet.isAll()); assertFalse(rangeSet.isSingleValue()); assertTrue(Iterables.isEmpty(rangeSet.getOrderedRanges())); assertEquals(rangeSet.getRangeCount(), 0); assertEquals(rangeSet.complement(), SortedRangeSet.all(BIGINT)); assertFalse(rangeSet.includesMarker(Marker.lowerUnbounded(BIGINT))); assertFalse(rangeSet.includesMarker(Marker.exactly(BIGINT, 0L))); assertFalse(rangeSet.includesMarker(Marker.upperUnbounded(BIGINT))); }
@Test public void testSingleValue() { SortedRangeSet rangeSet = SortedRangeSet.of(BIGINT, 10L); SortedRangeSet complement = SortedRangeSet.of(Range.greaterThan(BIGINT, 10L), Range.lessThan(BIGINT, 10L)); assertEquals(rangeSet.getType(), BIGINT); assertFalse(rangeSet.isNone()); assertFalse(rangeSet.isAll()); assertTrue(rangeSet.isSingleValue()); assertTrue(Iterables.elementsEqual(rangeSet.getOrderedRanges(), ImmutableList.of(Range.equal(BIGINT, 10L)))); assertEquals(rangeSet.getRangeCount(), 1); assertEquals(rangeSet.complement(), complement); assertFalse(rangeSet.includesMarker(Marker.lowerUnbounded(BIGINT))); assertTrue(rangeSet.includesMarker(Marker.exactly(BIGINT, 10L))); assertFalse(rangeSet.includesMarker(Marker.exactly(BIGINT, 9L))); assertFalse(rangeSet.includesMarker(Marker.upperUnbounded(BIGINT))); }
assertFalse(rangeSet.isAll()); assertFalse(rangeSet.isSingleValue()); assertTrue(Iterables.elementsEqual(rangeSet.getOrderedRanges(), normalizedResult)); assertEquals(rangeSet, SortedRangeSet.copyOf(BIGINT, normalizedResult)); assertEquals(rangeSet.getRangeCount(), 3);
assertFalse(rangeSet.isAll()); assertFalse(rangeSet.isSingleValue()); assertTrue(Iterables.elementsEqual(rangeSet.getOrderedRanges(), normalizedResult)); assertEquals(rangeSet, SortedRangeSet.copyOf(BIGINT, normalizedResult)); assertEquals(rangeSet.getRangeCount(), 3);
@Override public List<Range> getOrderedRanges() { return SortedRangeSet.this.getOrderedRanges(); }
@Override public SortedRangeSet union(Collection<ValueSet> valueSets) { Builder builder = new Builder(type); builder.addAll(this.getOrderedRanges()); for (ValueSet valueSet : valueSets) { builder.addAll(checkCompatibility(valueSet).getOrderedRanges()); } return builder.build(); }
@Override public SortedRangeSet union(ValueSet other) { SortedRangeSet otherRangeSet = checkCompatibility(other); return new Builder(type) .addAll(this.getOrderedRanges()) .addAll(otherRangeSet.getOrderedRanges()) .build(); }
@Override public SortedRangeSet intersect(ValueSet other) { SortedRangeSet otherRangeSet = checkCompatibility(other); Builder builder = new Builder(type); 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(); }
SortedRangeSet complement = sortedRangeSet.complement(); List<Range> singleValueExclusionsList = complement.getOrderedRanges().stream().filter(Range::isSingleValue).collect(toList()); List<Range> originalUnionSingleValues = SortedRangeSet.copyOf(type, singleValueExclusionsList).union(sortedRangeSet).getOrderedRanges(); PeekingIterator<Range> singleValueExclusions = peekingIterator(singleValueExclusionsList.iterator());