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());
        }
Exemple #4
0
        // [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));
        }