@java.lang.Override public Builder newBuilderForType() { return newBuilder(); }
/** * * * <pre> * The row keys and/or ranges to read. If not specified, reads from all rows. * </pre> * * <code>.google.bigtable.v2.RowSet rows = 2;</code> */ public Builder mergeRows(com.google.bigtable.v2.RowSet value) { if (rowsBuilder_ == null) { if (rows_ != null) { rows_ = com.google.bigtable.v2.RowSet.newBuilder(rows_).mergeFrom(value).buildPartial(); } else { rows_ = value; } onChanged(); } else { rowsBuilder_.mergeFrom(value); } return this; } /**
@Test public void splitKeysEmptyLeft() { RowSet rowSet = RowSet.newBuilder() .addRowKeys(ByteString.copyFromUtf8("5-test")) .addRowKeys(ByteString.copyFromUtf8("8-test")) .build(); SortedSet<ByteString> splitPoints = ImmutableSortedSet.orderedBy(ByteStringComparator.INSTANCE) .add(ByteString.copyFromUtf8("0-split")) .add(ByteString.copyFromUtf8("6-split")) .build(); verifySplit( rowSet, splitPoints, null, RowSet.newBuilder().addRowKeys(ByteString.copyFromUtf8("5-test")).build(), RowSet.newBuilder().addRowKeys(ByteString.copyFromUtf8("8-test")).build()); }
@Test public void splitMultipleKeysTest() { RowSet rowSet = RowSet.newBuilder() .addRowKeys(ByteString.copyFromUtf8("1-beforeSplit")) .addRowKeys(ByteString.copyFromUtf8("2-onSplit")) .addRowKeys(ByteString.copyFromUtf8("3-afterSplit")) .build(); SortedSet<ByteString> splitPoints = ImmutableSortedSet.orderedBy(ByteStringComparator.INSTANCE) .add(ByteString.copyFromUtf8("2-onSplit")) .build(); verifySplit( rowSet, splitPoints, RowSet.newBuilder() .addRowKeys(ByteString.copyFromUtf8("1-beforeSplit")) .addRowKeys(ByteString.copyFromUtf8("2-onSplit")) .build(), RowSet.newBuilder().addRowKeys(ByteString.copyFromUtf8("3-afterSplit")).build()); }
@Test public void splitKeysEmptyRight() { RowSet rowSet = RowSet.newBuilder() .addRowKeys(ByteString.copyFromUtf8("0-test")) .addRowKeys(ByteString.copyFromUtf8("2-test")) .build(); SortedSet<ByteString> splitPoints = ImmutableSortedSet.orderedBy(ByteStringComparator.INSTANCE) .add(ByteString.copyFromUtf8("1-split")) .add(ByteString.copyFromUtf8("5-split")) .build(); verifySplit( rowSet, splitPoints, RowSet.newBuilder().addRowKeys(ByteString.copyFromUtf8("0-test")).build(), RowSet.newBuilder().addRowKeys(ByteString.copyFromUtf8("2-test")).build(), null); }
@Test public void multiKeyBoundTest() { RowSet rowSet = RowSet.newBuilder() .addRowKeys(ByteString.copyFromUtf8("a")) .addRowKeys(ByteString.copyFromUtf8("d")) .build(); ByteStringRange actual = RowSetUtil.getBound(rowSet); assertThat(actual).isEqualTo(ByteStringRange.unbounded().startClosed("a").endClosed("d")); }
@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 singleKeyBoundTest() { RowSet rowSet = RowSet.newBuilder().addRowKeys(ByteString.copyFromUtf8("a")).build(); ByteStringRange actual = RowSetUtil.getBound(rowSet); assertThat(actual).isEqualTo(ByteStringRange.unbounded().startClosed("a").endClosed("a")); }
@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")); }
@Test public void singleClosedOpenRangeBoundTest() { RowSet rowSet = RowSet.newBuilder() .addRowRanges( RowRange.newBuilder() .setStartKeyClosed(ByteString.copyFromUtf8("a")) .setEndKeyOpen(ByteString.copyFromUtf8("b"))) .build(); ByteStringRange actual = RowSetUtil.getBound(rowSet); assertThat(actual).isEqualTo(ByteStringRange.unbounded().startClosed("a").endOpen("b")); }
@Test public void singleClosedClosedRangeBoundTest() { RowSet rowSet = RowSet.newBuilder() .addRowRanges( RowRange.newBuilder() .setStartKeyClosed(ByteString.copyFromUtf8("a")) .setEndKeyClosed(ByteString.copyFromUtf8("b"))) .build(); ByteStringRange actual = RowSetUtil.getBound(rowSet); assertThat(actual).isEqualTo(ByteStringRange.unbounded().startClosed("a").endClosed("b")); }
@Test public void singleRangeUnbounded1BoundTest() { RowSet rowSet = RowSet.newBuilder() .addRowRanges(RowRange.newBuilder().setStartKeyClosed(ByteString.copyFromUtf8("a"))) .build(); ByteStringRange actual = RowSetUtil.getBound(rowSet); assertThat(actual).isEqualTo(ByteStringRange.unbounded().startClosed("a")); }
@Test public void noSplitTest() { RowSet rowSet = RowSet.newBuilder() .addRowKeys(ByteString.copyFromUtf8("a")) .addRowRanges( RowRange.newBuilder() .setStartKeyClosed(ByteString.copyFromUtf8("p")) .setEndKeyOpen(ByteString.copyFromUtf8("q"))) .build(); SortedSet<ByteString> splitPoints = ImmutableSortedSet.orderedBy(ByteStringComparator.INSTANCE).build(); verifySplit(rowSet, splitPoints, rowSet); }
@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")); }
@Test public void singleRangeUnbounded2BoundTest() { RowSet rowSet = RowSet.newBuilder() .addRowRanges(RowRange.newBuilder().setEndKeyClosed(ByteString.copyFromUtf8("z"))) .build(); ByteStringRange actual = RowSetUtil.getBound(rowSet); assertThat(actual).isEqualTo(ByteStringRange.unbounded().endClosed("z")); }
@Test public void multipleRangeBoundTest() { RowSet rowSet = RowSet.newBuilder() .addRowRanges( RowRange.newBuilder() .setStartKeyClosed(ByteString.copyFromUtf8("a")) .setEndKeyOpen(ByteString.copyFromUtf8("m"))) .addRowRanges( RowRange.newBuilder() .setStartKeyClosed(ByteString.copyFromUtf8("q")) .setEndKeyOpen(ByteString.copyFromUtf8("z"))) .build(); ByteStringRange actual = RowSetUtil.getBound(rowSet); assertThat(actual).isEqualTo(ByteStringRange.create("a", "z")); }
@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 unboundedRangeLeftOfSplitTest() { RowSet rowSet = RowSet.newBuilder() .addRowRanges( RowRange.newBuilder().setEndKeyOpen(ByteString.copyFromUtf8("1-range-end"))) .build(); SortedSet<ByteString> splitPoints = ImmutableSortedSet.orderedBy(ByteStringComparator.INSTANCE) .add(ByteString.copyFromUtf8("5-split")) .build(); verifySplit( rowSet, splitPoints, RowSet.newBuilder() .addRowRanges( RowRange.newBuilder().setEndKeyOpen(ByteString.copyFromUtf8("1-range-end"))) .build(), null); }
@Test public void testFromProto() { ReadRowsRequest request = ReadRowsRequest.newBuilder() .setTableName(NameUtil.formatTableName(PROJECT_ID, INSTANCE_ID, TABLE_ID)) .setAppProfileId(APP_PROFILE_ID) .setFilter(RowFilter.newBuilder().setRowKeyRegexFilter(ByteString.copyFromUtf8(".*"))) .setRows( RowSet.newBuilder() .addRowKeys(ByteString.copyFromUtf8("row-key")) .addRowRanges( RowRange.newBuilder() .setStartKeyClosed(ByteString.copyFromUtf8("j")) .setEndKeyClosed(ByteString.copyFromUtf8("z")))) .build(); Query query = Query.fromProto(request); assertThat(query.toProto(requestContext)).isEqualTo(request); }