public void DeletesWillHideValues() { var storageState = new StorageState("test", new StorageOptions()); using (var memtable = new MemTable(storageState)) { memtable.Add(2, ItemType.Value, "test", memtable.Write(new MemoryStream(new byte[] { 1, 2, 3 }))); memtable.Add(3, ItemType.Deletion, "test", null); Stream stream; Assert.True(memtable.TryGet("test", 5, out stream)); Assert.Null(stream); } }
public void T1() { var storageState = new StorageState("test", new StorageOptions()); var random = new Random(); var tables = new List<MemTable>(); var expectedCount = 0; try { ulong seq = 0; for (var i = 0; i < 100; i++) { var table = new MemTable(storageState); for (var j = 0; j < 1000; j++) { var k = random.Next(); var key = string.Format("{0:0000000000000000}", k); table.Add(seq++, ItemType.Value, key, null); expectedCount++; } tables.Add(table); } var iterators = tables.Select(table => table.NewIterator()).ToList(); var comparator = new InternalKeyComparator(new CaseInsensitiveComparator()); using (var iterator = new MergingIterator(comparator, iterators)) { var actualCount = 0; iterator.SeekToFirst(); Assert.True(iterator.IsValid); Slice prev = string.Empty; while (iterator.IsValid) { if (!prev.IsEmpty()) { Assert.True(comparator.Compare(iterator.Key, prev) > 0); } prev = iterator.Key.Clone(); iterator.Next(); actualCount++; } Assert.Equal(expectedCount, actualCount); } } finally { foreach (var table in tables) table.Dispose(); } }
public void WillNotShowValueFromLaterSnapshot() { var storageState = new StorageState("test", new StorageOptions()); using (var memtable = new MemTable(storageState)) { memtable.Add(2, ItemType.Value, "test", memtable.Write(new MemoryStream(new byte[] { 1, 2, 3 }))); Stream stream; Assert.False(memtable.TryGet("test", 1, out stream)); } }
public void CanAddAndGetUsingLaterSnapshot() { var storageState = new StorageState("test", new StorageOptions()); using (var memtable = new MemTable(storageState)) { memtable.Add(1, ItemType.Value, "test", memtable.Write(new MemoryStream(new byte[] { 1, 2, 3 }))); Stream stream; Assert.True(memtable.TryGet("test", 2, out stream)); using (stream) { Assert.Equal(1, stream.ReadByte()); Assert.Equal(2, stream.ReadByte()); Assert.Equal(3, stream.ReadByte()); } } }
internal void Apply(MemTable memTable, Reference<ulong> seq) { foreach (var operation in _operations) { var itemType = operation.Op == Operations.Delete ? ItemType.Deletion : ItemType.Value; memTable.Add(seq.Value++, itemType, operation.Key, operation.Handle); } }