Beispiel #1
0
        public void FindLastWorks()
        {
            var val = GetSampleValue().ToArray();
            var key = new byte[10];

            Assert.Equal(-1, _cursor.FindLastWithPrefix(key.AsSpan(0, 0)));
            for (var i = 0; i < 8000; i++)
            {
                key[2] = (byte)(i / 400);
                key[3] = (byte)(i / 20 % 20);
                key[4] = (byte)(i % 20);
                _cursor.Upsert(key.AsSpan(0, 7), val);
            }

            for (var i = 0; i < 20; i++)
            {
                key[2] = (byte)i;
                Assert.Equal(i * 400 + 399, _cursor.FindLastWithPrefix(key.AsSpan(0, 3)));
            }
        }
 public long GetKeyValueCount()
 {
     if (_prefixKeyCount >= 0)
     {
         return(_prefixKeyCount);
     }
     if (_prefix.Length == 0)
     {
         _prefixKeyCount = BTreeRoot.GetCount();
         return(_prefixKeyCount);
     }
     CalcPrefixKeyStart();
     if (_prefixKeyStart < 0)
     {
         _prefixKeyCount = 0;
         return(0);
     }
     if (_cursor2 == null)
     {
         _cursor2 = BTreeRoot.CreateCursor();
     }
     _prefixKeyCount = _cursor2.FindLastWithPrefix(_prefix) - _prefixKeyStart + 1;
     return(_prefixKeyCount);
 }