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); }