RowRange rightSubRange = rowRange.toBuilder().setStartKeyOpen(splitPoint).build(); rowRanges[i] = rightSubRange;
@Test public void rangeExactlyFitsSplitTest() { RowSet rowSet = RowSet.newBuilder() .addRowKeys(ByteString.copyFromUtf8("5-split")) .addRowRanges( RowRange.newBuilder() .setStartKeyOpen(ByteString.copyFromUtf8("3-split")) .setEndKeyClosed(ByteString.copyFromUtf8("5-split"))) .build(); SortedSet<ByteString> splitPoints = ImmutableSortedSet.orderedBy(ByteStringComparator.INSTANCE) .add(ByteString.copyFromUtf8("3-split")) .add(ByteString.copyFromUtf8("5-split")) .build(); verifySplit( rowSet, splitPoints, null, RowSet.newBuilder() .addRowKeys(ByteString.copyFromUtf8("5-split")) .addRowRanges( RowRange.newBuilder() .setStartKeyOpen(ByteString.copyFromUtf8("3-split")) .setEndKeyClosed(ByteString.copyFromUtf8("5-split"))) .build(), null); }
@Test public void singleRangeOpenClosedBoundTest() { RowSet rowSet = RowSet.newBuilder() .addRowRanges( RowRange.newBuilder() .setStartKeyOpen(ByteString.copyFromUtf8("a")) .setEndKeyClosed(ByteString.copyFromUtf8("b"))) .build(); ByteStringRange actual = RowSetUtil.getBound(rowSet); assertThat(actual).isEqualTo(ByteStringRange.unbounded().startOpen("a").endClosed("b")); }
break; case OPEN: btRange.setStartKeyOpen(guavaRange.lowerEndpoint().getKey()); break; default:
RowRange .newBuilder() .setStartKeyOpen(lastFoundKey) .setEndKeyOpen(ByteString.EMPTY) .build()); && startKeyIsAlreadyRead(rowRange.getStartKeyOpen())) || startKeyCase == StartKeyCase.STARTKEY_NOT_SET) { newRowRange = newRowRange.toBuilder().setStartKeyOpen(lastFoundKey).build();
setStartKeyOpen(other.getStartKeyOpen()); break;
rangeBuilder.setStartKeyOpen(range.getStart()); break; case CLOSED:
range.setStartKeyOpen(startRow);
setStartKeyOpen(other.getStartKeyOpen()); break;
.setStartKeyOpen(ByteString.copyFromUtf8("c")) .setEndKeyClosed(ByteString.copyFromUtf8("e"))) .setStartKeyOpen(ByteString.copyFromUtf8("d")) .setEndKeyClosed(ByteString.copyFromUtf8("f"))) .addRowRanges(RowRange.newBuilder().setStartKeyOpen(ByteString.copyFromUtf8("m"))) .build(); .setStartKeyOpen(ByteString.copyFromUtf8("a")) .setEndKeyClosed(ByteString.copyFromUtf8("b"))) .setStartKeyOpen(ByteString.copyFromUtf8("c")) .setEndKeyClosed(ByteString.copyFromUtf8("d"))) .build(), .setStartKeyOpen(ByteString.copyFromUtf8("d")) .setEndKeyClosed(ByteString.copyFromUtf8("e"))) .setStartKeyOpen(ByteString.copyFromUtf8("d")) .setEndKeyClosed(ByteString.copyFromUtf8("f"))) .build(), .setStartKeyOpen(ByteString.copyFromUtf8("m")) .setEndKeyClosed(ByteString.copyFromUtf8("o"))) .build(), .addRowRanges(RowRange.newBuilder().setStartKeyOpen(ByteString.copyFromUtf8("o"))) .build());
setStartKeyOpen(other.getStartKeyOpen()); break;
break; case OPEN: rowRange.setStartKeyOpen(ByteString.copyFromUtf8(range.lowerEndpoint())); break; default:
.addRowRanges( RowRange.newBuilder() .setStartKeyOpen(ByteString.copyFromUtf8("j")) .setEndKeyOpen(ByteString.copyFromUtf8("z")))) .build());
.addRowRanges( RowRange.newBuilder() .setStartKeyOpen(ByteString.copyFromUtf8("j")) .setEndKeyOpen(ByteString.copyFromUtf8("z")))) .build());
rangeBuilder.setStartKeyOpen(range.getStart()); break; case CLOSED:
@Test public void rangeRightOfSplitTest() { RowSet rowSet = RowSet.newBuilder() .addRowKeys(ByteString.copyFromUtf8("9-row-key")) .addRowRanges( RowRange.newBuilder() .setStartKeyOpen(ByteString.copyFromUtf8("5-range-start")) .setEndKeyOpen(ByteString.copyFromUtf8("7-range-end"))) .build(); SortedSet<ByteString> splitPoints = ImmutableSortedSet.orderedBy(ByteStringComparator.INSTANCE) .add(ByteString.copyFromUtf8("3-split")) .build(); verifySplit( rowSet, splitPoints, null, RowSet.newBuilder() .addRowKeys(ByteString.copyFromUtf8("9-row-key")) .addRowRanges( RowRange.newBuilder() .setStartKeyOpen(ByteString.copyFromUtf8("5-range-start")) .setEndKeyOpen(ByteString.copyFromUtf8("7-range-end"))) .build()); }
@Test public void startOnSplitPointTest() { RowSet rowSet = RowSet.newBuilder() .addRowRanges( RowRange.newBuilder().setStartKeyClosed(ByteString.copyFromUtf8("3-split"))) .build(); // Inclusive start on a split point should generate 2 segments SortedSet<ByteString> splitPoints = ImmutableSortedSet.orderedBy(ByteStringComparator.INSTANCE) .add(ByteString.copyFromUtf8("3-split")) .build(); verifySplit( rowSet, splitPoints, RowSet.newBuilder() .addRowRanges( RowRange.newBuilder() .setStartKeyClosed(ByteString.copyFromUtf8("3-split")) .setEndKeyClosed(ByteString.copyFromUtf8("3-split"))) .build(), RowSet.newBuilder() .addRowRanges(RowRange.newBuilder().setStartKeyOpen(ByteString.copyFromUtf8("3-split"))) .build()); }
@Test public void unboundedRightOfSplitTest() { RowSet rowSet = RowSet.newBuilder() .addRowRanges( RowRange.newBuilder().setStartKeyOpen(ByteString.copyFromUtf8("5-range-start"))) .build(); SortedSet<ByteString> splitPoints = ImmutableSortedSet.orderedBy(ByteStringComparator.INSTANCE) .add(ByteString.copyFromUtf8("3-split")) .build(); verifySplit( rowSet, splitPoints, null, RowSet.newBuilder() .addRowRanges( RowRange.newBuilder().setStartKeyOpen(ByteString.copyFromUtf8("5-range-start"))) .build()); }
@Test public void splitEmptyTest() { RowSet rowSet = RowSet.newBuilder().build(); SortedSet<ByteString> splitPoints = ImmutableSortedSet.orderedBy(ByteStringComparator.INSTANCE) .add(ByteString.copyFromUtf8("a")) .build(); verifySplit( rowSet, splitPoints, RowSet.newBuilder() .addRowRanges(RowRange.newBuilder().setEndKeyClosed(ByteString.copyFromUtf8("a"))) .build(), RowSet.newBuilder() .addRowRanges(RowRange.newBuilder().setStartKeyOpen(ByteString.copyFromUtf8("a"))) .build()); }
@Test public void singleOpenOpenRangeBoundTest() { RowSet rowSet = RowSet.newBuilder() .addRowRanges( RowRange.newBuilder() .setStartKeyOpen(ByteString.copyFromUtf8("a")) .setEndKeyOpen(ByteString.copyFromUtf8("b"))) .build(); ByteStringRange actual = RowSetUtil.getBound(rowSet); assertThat(actual).isEqualTo(ByteStringRange.unbounded().startOpen("a").endOpen("b")); }