public void ClosedOpen_Valid() { var range = RowRange.ClosedOpen("a", "z"); Assert.Equal("a", range.StartKeyClosed.ToStringUtf8()); Assert.True(range.StartKeyOpen.IsEmpty); Assert.True(range.EndKeyClosed.IsEmpty); Assert.Equal("z", range.EndKeyOpen.ToStringUtf8()); range = RowRange.ClosedOpen(null, new BigtableByteString(0x12, 0xFE)); Assert.True(range.StartKeyClosed.IsEmpty); Assert.True(range.StartKeyOpen.IsEmpty); Assert.True(range.EndKeyClosed.IsEmpty); Assert.Equal(new byte[] { 0x12, 0xFE }, range.EndKeyOpen.ToByteArray()); range = RowRange.ClosedOpen(ByteString.CopyFrom(0x00, 0x01, 0xFF), null); Assert.Equal(new byte[] { 0x00, 0x01, 0xFF }, range.StartKeyClosed.ToByteArray()); Assert.True(range.StartKeyOpen.IsEmpty); Assert.True(range.EndKeyClosed.IsEmpty); Assert.True(range.EndKeyOpen.IsEmpty); range = RowRange.ClosedOpen(null, null); Assert.True(range.StartKeyClosed.IsEmpty); Assert.True(range.StartKeyOpen.IsEmpty); Assert.True(range.EndKeyClosed.IsEmpty); Assert.True(range.EndKeyOpen.IsEmpty); }
public void TestFilterRowsRowRangesKeyInMiddle() { BigtableByteString key1 = "row1"; BigtableByteString key2 = "row2"; BigtableByteString key3 = "row3"; BigtableByteString lastFoundKey = "row1a"; RowSet fullRowSet = RowSet.FromRowKeys(key1, key2, key3); fullRowSet.RowRanges.Add(new[] { RowRange.OpenClosed(null, key1), // should be filtered out RowRange.Open(null, key1), // should be filtered out RowRange.Open(key1, key2), // should be converted (lastFoundKey, key2) RowRange.ClosedOpen(key1, key2), // should be converted (lastFoundKey, key2) RowRange.Closed(key1, key2), // should be converted (lastFoundKey, key2] RowRange.Open(key2, key3), // should stay RowRange.ClosedOpen(key2, key3) // should stay }); RowSet filteredRowSet = RowSet.FromRowKeys(key2, key3); filteredRowSet.RowRanges.Add(new[] { RowRange.Open(lastFoundKey, key2), // should be converted (lastFoundKey, key2) RowRange.Open(lastFoundKey, key2), // should be converted (lastFoundKey, key2) RowRange.OpenClosed(lastFoundKey, key2), // should be converted (lastFoundKey, key2] RowRange.Open(key2, key3), // should stay RowRange.ClosedOpen(key2, key3) // should stay }); ReadRowsRequest originalRequest = new ReadRowsRequest { Rows = fullRowSet }; ReadRowsRequest filteredRequest = new ReadRowsRequest { Rows = filteredRowSet }; BigtableReadRowsRequestManager underTest = new BigtableReadRowsRequestManager(originalRequest); Assert.Equal(originalRequest, underTest.BuildUpdatedRequest()); underTest.LastFoundKey = lastFoundKey; ReadRowsRequest originalRequestClone = originalRequest.Clone(); // Assert that originalRequest and originalRequestClone are different objects. Assert.False(ReferenceEquals(originalRequest, originalRequestClone)); // Assert that originalRequest and originalRequestClone have same value before calling BuildUpdatedRequest. Assert.Equal(originalRequest, originalRequestClone); Assert.Equal(filteredRequest, underTest.BuildUpdatedRequest()); // Assert that BuildUpdatedRequest did not modify the original RowSet. Assert.Equal(originalRequest, originalRequestClone); }
public void TestFilterRowsTestAllRange() { BigtableByteString key1 = "row1"; ReadRowsRequest originalRequest = CreateRowRangeRequest(RowRange.ClosedOpen(null, null)); BigtableReadRowsRequestManager underTest = new BigtableReadRowsRequestManager(originalRequest); underTest.LastFoundKey = key1; Assert.Equal(CreateRowRangeRequest(RowRange.Open(key1, null)), underTest.BuildUpdatedRequest()); }
// [END bigtable_reads_row_range] // [START bigtable_reads_row_ranges] /// <summary> /// /// Reads multiple ranges of rows from an existing table. ///</summary> /// <param name="projectId">Your Google Cloud Project ID.</param> /// <param name="instanceId">Your Google Cloud Bigtable Instance ID.</param> /// <param name="tableId">Your Google Cloud Bigtable table ID.</param> public string readRowRanges(string projectId = "YOUR-PROJECT-ID", string instanceId = "YOUR-INSTANCE-ID", string tableId = "YOUR-TABLE-ID") { BigtableClient bigtableClient = BigtableClient.Create(); TableName tableName = new TableName(projectId, instanceId, tableId); RowSet rowSet = RowSet.FromRowRanges(RowRange.ClosedOpen("phone#4c410523#20190501", "phone#4c410523#20190601"), RowRange.ClosedOpen("phone#5c10102#20190501", "phone#5c10102#20190601")); ReadRowsStream readRowsStream = bigtableClient.ReadRows(tableName, rowSet); string result = ""; readRowsStream.ForEach(row => result += printRow(row)); return(result); }
public void TestFilterRowsUnsignedRange() { BigtableByteString key1 = new byte[] { 0x7f }; BigtableByteString key2 = new byte[] { 0x80 }; ReadRowsRequest originalRequest = CreateRowRangeRequest(RowRange.ClosedOpen(key1, null)); BigtableReadRowsRequestManager underTest = new BigtableReadRowsRequestManager(originalRequest); underTest.LastFoundKey = key2; Assert.Equal(CreateRowRangeRequest(RowRange.Open(key2, null)), underTest.BuildUpdatedRequest()); }
public override async Task <long> ReadHighestSequenceNrAsync(string persistenceId, long fromSequenceNr) { var rowRange = RowRange.ClosedOpen( ToRowKeyBigtableByteString(persistenceId, fromSequenceNr), ToRowKeyBigtableByteString(persistenceId, long.MaxValue)); var rows = RowSet.FromRowRanges(rowRange); var stream = _bigtableClient.ReadRows( _tableName, rows: rows, filter: RowFilters.Chain(RowFilters.CellsPerRowLimit(1), RowFilters.StripValueTransformer())); var lastRow = await stream.LastOrDefault().ConfigureAwait(false); return(lastRow == null ? 0L : GetSequenceNumber(lastRow)); }