Home /
IntersectMBO /
lsm-tree
Sep 12, 12-1 PM (0)
Sep 12, 1-2 PM (0)
Sep 12, 2-3 PM (0)
Sep 12, 3-4 PM (0)
Sep 12, 4-5 PM (0)
Sep 12, 5-6 PM (1)
Sep 12, 6-7 PM (0)
Sep 12, 7-8 PM (0)
Sep 12, 8-9 PM (0)
Sep 12, 9-10 PM (0)
Sep 12, 10-11 PM (0)
Sep 12, 11-12 AM (0)
Sep 13, 12-1 AM (0)
Sep 13, 1-2 AM (0)
Sep 13, 2-3 AM (0)
Sep 13, 3-4 AM (0)
Sep 13, 4-5 AM (0)
Sep 13, 5-6 AM (0)
Sep 13, 6-7 AM (0)
Sep 13, 7-8 AM (0)
Sep 13, 8-9 AM (0)
Sep 13, 9-10 AM (0)
Sep 13, 10-11 AM (0)
Sep 13, 11-12 PM (0)
Sep 13, 12-1 PM (0)
Sep 13, 1-2 PM (0)
Sep 13, 2-3 PM (1)
Sep 13, 3-4 PM (0)
Sep 13, 4-5 PM (0)
Sep 13, 5-6 PM (0)
Sep 13, 6-7 PM (0)
Sep 13, 7-8 PM (0)
Sep 13, 8-9 PM (0)
Sep 13, 9-10 PM (0)
Sep 13, 10-11 PM (0)
Sep 13, 11-12 AM (0)
Sep 14, 12-1 AM (0)
Sep 14, 1-2 AM (0)
Sep 14, 2-3 AM (0)
Sep 14, 3-4 AM (0)
Sep 14, 4-5 AM (0)
Sep 14, 5-6 AM (0)
Sep 14, 6-7 AM (0)
Sep 14, 7-8 AM (0)
Sep 14, 8-9 AM (0)
Sep 14, 9-10 AM (0)
Sep 14, 10-11 AM (0)
Sep 14, 11-12 PM (0)
Sep 14, 12-1 PM (0)
Sep 14, 1-2 PM (0)
Sep 14, 2-3 PM (0)
Sep 14, 3-4 PM (0)
Sep 14, 4-5 PM (0)
Sep 14, 5-6 PM (0)
Sep 14, 6-7 PM (0)
Sep 14, 7-8 PM (0)
Sep 14, 8-9 PM (0)
Sep 14, 9-10 PM (0)
Sep 14, 10-11 PM (0)
Sep 14, 11-12 AM (0)
Sep 15, 12-1 AM (0)
Sep 15, 1-2 AM (0)
Sep 15, 2-3 AM (0)
Sep 15, 3-4 AM (0)
Sep 15, 4-5 AM (0)
Sep 15, 5-6 AM (0)
Sep 15, 6-7 AM (0)
Sep 15, 7-8 AM (0)
Sep 15, 8-9 AM (0)
Sep 15, 9-10 AM (0)
Sep 15, 10-11 AM (0)
Sep 15, 11-12 PM (0)
Sep 15, 12-1 PM (0)
Sep 15, 1-2 PM (0)
Sep 15, 2-3 PM (0)
Sep 15, 3-4 PM (0)
Sep 15, 4-5 PM (0)
Sep 15, 5-6 PM (0)
Sep 15, 6-7 PM (0)
Sep 15, 7-8 PM (0)
Sep 15, 8-9 PM (0)
Sep 15, 9-10 PM (0)
Sep 15, 10-11 PM (0)
Sep 15, 11-12 AM (0)
Sep 16, 12-1 AM (0)
Sep 16, 1-2 AM (0)
Sep 16, 2-3 AM (0)
Sep 16, 3-4 AM (0)
Sep 16, 4-5 AM (0)
Sep 16, 5-6 AM (0)
Sep 16, 6-7 AM (0)
Sep 16, 7-8 AM (0)
Sep 16, 8-9 AM (0)
Sep 16, 9-10 AM (0)
Sep 16, 10-11 AM (0)
Sep 16, 11-12 PM (0)
Sep 16, 12-1 PM (0)
Sep 16, 1-2 PM (1)
Sep 16, 2-3 PM (0)
Sep 16, 3-4 PM (0)
Sep 16, 4-5 PM (0)
Sep 16, 5-6 PM (0)
Sep 16, 6-7 PM (0)
Sep 16, 7-8 PM (0)
Sep 16, 8-9 PM (0)
Sep 16, 9-10 PM (0)
Sep 16, 10-11 PM (0)
Sep 16, 11-12 AM (0)
Sep 17, 12-1 AM (0)
Sep 17, 1-2 AM (0)
Sep 17, 2-3 AM (0)
Sep 17, 3-4 AM (0)
Sep 17, 4-5 AM (0)
Sep 17, 5-6 AM (0)
Sep 17, 6-7 AM (0)
Sep 17, 7-8 AM (0)
Sep 17, 8-9 AM (0)
Sep 17, 9-10 AM (1)
Sep 17, 10-11 AM (0)
Sep 17, 11-12 PM (0)
Sep 17, 12-1 PM (1)
Sep 17, 1-2 PM (0)
Sep 17, 2-3 PM (0)
Sep 17, 3-4 PM (0)
Sep 17, 4-5 PM (0)
Sep 17, 5-6 PM (0)
Sep 17, 6-7 PM (0)
Sep 17, 7-8 PM (0)
Sep 17, 8-9 PM (0)
Sep 17, 9-10 PM (0)
Sep 17, 10-11 PM (0)
Sep 17, 11-12 AM (0)
Sep 18, 12-1 AM (0)
Sep 18, 1-2 AM (0)
Sep 18, 2-3 AM (0)
Sep 18, 3-4 AM (0)
Sep 18, 4-5 AM (0)
Sep 18, 5-6 AM (0)
Sep 18, 6-7 AM (0)
Sep 18, 7-8 AM (0)
Sep 18, 8-9 AM (0)
Sep 18, 9-10 AM (0)
Sep 18, 10-11 AM (0)
Sep 18, 11-12 PM (0)
Sep 18, 12-1 PM (4)
Sep 18, 1-2 PM (0)
Sep 18, 2-3 PM (0)
Sep 18, 3-4 PM (0)
Sep 18, 4-5 PM (0)
Sep 18, 5-6 PM (0)
Sep 18, 6-7 PM (0)
Sep 18, 7-8 PM (0)
Sep 18, 8-9 PM (0)
Sep 18, 9-10 PM (0)
Sep 18, 10-11 PM (0)
Sep 18, 11-12 AM (0)
Sep 19, 12-1 AM (0)
Sep 19, 1-2 AM (0)
Sep 19, 2-3 AM (0)
Sep 19, 3-4 AM (0)
Sep 19, 4-5 AM (0)
Sep 19, 5-6 AM (0)
Sep 19, 6-7 AM (0)
Sep 19, 7-8 AM (0)
Sep 19, 8-9 AM (0)
Sep 19, 9-10 AM (1)
Sep 19, 10-11 AM (0)
Sep 19, 11-12 PM (0)
Sep 19, 12-1 PM (0)
10 commits this week
Sep 12, 2024
-
Sep 19, 2024
Merge pull request #394 from IntersectMBO/dcoutts/write-buffer-blobs
Enable returning BlobRefs in the API, enable tests, and minor fixes
Enable Blobs in many tests, including StateMachine tests
Only one fix in the code is needed, for the NoThunks test. The state machine test found two non-trivial differences between the spec and the model in relation to blobs: 1. blob retrieval after snapshot fails 2. blob retrieval after failed-snapshot (due to duplicate name) fails The reason for both of these is that the implementation currently works by modifying flushing the write buffer to disk, and modifing the table handle to use the updated set of runs and now-empty write buffer. This invalidates all blob references from the write buffer itself. For the moment I have "fixed" this difference by changing the model to behave like the implementation. For the TODO task to fix this, see https://github.com/IntersectMBO/lsm-tree/issues/392
Enable returning BlobRefs from cursors
And adjust corresponding tests. The cursor tests that were failing when blobs were enabled now pass.
Update docs for BlobRef to note snapshot bug / misbehaviour
See https://github.com/IntersectMBO/lsm-tree/issues/392
Wire up BlobRefs from write buffer lookups
Previously WB.lookup would return type WeakBlobRef m h (which is the convenient type), but would actually throw an error. Now it returns BlobSpan but works. The caller then needs to convert from BlobSpan to WeakBlobRef (and then wrap that into the public API's BlobRef type). Also adjust the WBB.mkBlobRef to be a monadic action returning a pure function. This makes it more convenient to use in the lookup code to convert results using BlobSpan into results using WeakBlobRef. This works but it's not terribly pretty. Some reorganisation here would be good, to reduce and combine conversions to reduce allocations.
allow creating Internal.Cursor at offset
Add tableBlobPath path utility function
For the write buffer blob file name.
Remove non-pure WriteBuffer micro-benchmarks
These will need to be quite different once the WriteBuffer contains blobs by reference rather than by value. It's probably better to re-add them later, if they are needed at all now.
Adding functionality to initialise RunReaders at offset