forked from fjall-rs/lsm-tree
-
Notifications
You must be signed in to change notification settings - Fork 1
feat: add range tombstones (delete_range / delete_prefix) #21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
polaz
merged 85 commits into
main
from
feat/#16-feat-range-tombstones--deleterange--deleteprefix
Mar 20, 2026
Merged
Changes from all commits
Commits
Show all changes
85 commits
Select commit
Hold shift + click to select a range
a3bc6c9
feat: add range tombstones (delete_range / delete_prefix)
polaz c3e80fc
Merge branch 'main' into feat/#16-feat-range-tombstones--deleterange-…
polaz ed272cf
fix: resolve all clippy warnings for range tombstone code
polaz 718f2ba
fix(range-tombstone): validate bounds, fix RT-only flush and edge cases
polaz 343f31c
fix(table): validate BlockType on range tombstone block load
polaz 3e23f57
fix(range-tombstone): seqno visibility, decode hardening, lint attrs
polaz 954c044
fix(lint): use cfg_attr(feature, expect) for metrics-gated arg count
polaz d53ecfe
fix(range-tombstone): propagate RTs before write loop, enforce u16 bo…
polaz cb60d63
test(range-tombstone): rotation, blob tree, table-skip, invalid interval
polaz e1db06d
fix(range-tombstone): RT-only SST persistence, pruning, lint attrs
polaz f0c90ea
style: fix rustfmt formatting in interval_tree
polaz 1f87efa
Merge branch 'main' into feat/#16-feat-range-tombstones--deleterange-…
polaz 334890c
fix(range-tombstone): preserve sentinel seqno bounds, soft-reject ove…
polaz 5077e58
chore: remove .forge from git tracking
polaz 6841260
chore: add .claude to .gitignore
polaz 9522778
chore: merge main into feature branch
polaz df7c0f4
fix(range-tombstone): use #[expect] lints, optimize query_suppression
polaz 9a67ff2
fix(interval-tree): remove unfired unnecessary_box_returns expects
polaz 51c3429
fix(range-tombstone): preserve sentinel seqno bounds, soft-reject ove…
polaz 86a985f
docs(test): clarify Guard import is a trait dependency for .key()
polaz e525c10
docs(test): clarify Vec<Vec<u8>> PartialEq coercion for assertions
polaz 12a23c6
fix(range-tombstone): correct flush clipping and RT-only metadata range
polaz 2dbe5c6
fix(range-tombstone): write all RTs in flush mode without overlap filter
polaz 28d419f
test(range-tombstone): add disjoint RT flush and compaction tests
polaz e59eb29
fix(range-tombstone): use max RT seqno for sentinel to avoid seqno=0 …
polaz 21249f2
docs(range-tombstone): clarify RT-only flush and sentinel design deci…
polaz 6371dac
docs(ci): add design pattern exclusions to instruction files
polaz 1e381fc
docs(ci): generalize design decision rules in instruction files
polaz 317b9d8
fix(range-tombstone): dedup compaction RTs and warn on oversized keys
polaz a40eb7d
refactor(range-tombstone): tighten visibility and remove dead code
polaz d486a98
docs(range-tombstone): hide flush_to_tables_with_rt from public docs
polaz 0123988
fix(range-tombstone): correct reverse sort comparator for sweep-line
polaz 5a7308d
fix(range-tombstone): remove unused Reverse import
polaz 6860597
fix(range-tombstone): use unique sentinel seqno in RT-only tables
polaz 3462b39
docs(range-tombstone): annotate table-skip scan complexity
polaz dc8f68d
fix(range-tombstone): use MAX_SEQNO for sentinel to prevent cross-tab…
polaz 8874e46
fix(range-tombstone): widen flush table key_range to cover RT span
polaz 0d34769
docs(range-tombstone): clarify sentinel visibility at SeqNo::MAX
polaz ddda2c2
docs(range-tombstone): clarify compaction fallback for max-length keys
polaz a51facd
fix(range-tombstone): remove dead max_rt_seqno and add #[must_use]
polaz 979d126
fix(range-tombstone): restore item counts after sentinel and widen co…
polaz bc508a0
fix(range-tombstone): use SeqNo::MAX for sentinel and short-circuit t…
polaz 4371b2b
fix(range-tombstone): revert sentinel to MAX_SEQNO and tighten writer…
polaz 8b720cc
fix(range-tombstone): remove key_range widening to preserve inclusive…
polaz 7ec78e1
fix(range-tombstone): restore flush key_range widening for disjoint R…
polaz b383dcc
test(range-tombstone): add regression test for disjoint RT multi-comp…
polaz 66b044b
fix(range-tombstone): use seqno 0 for sentinel to prevent merge domin…
polaz 87a06f8
test(range-tombstone): add sentinel masking regression test
polaz 0b9a096
fix(range-tombstone): use lowest RT seqno for sentinel instead of 0
polaz 61c5268
docs(range-tombstone): document internal trait rationale for required…
polaz 7452427
fix(range-tombstone): keep sentinel in item counts for on-disk consis…
polaz 755e241
Potential fix for pull request finding
polaz b483a8b
Potential fix for pull request finding
polaz 97e64b1
fix(range-tombstone): align rt-only sentinel key with lowest seqno rt
polaz d9ed474
refactor(api): seal AbstractTree internals
polaz edd92f5
fix(format): bump fork disk semantics to V4
polaz 34ce53f
perf(range): remove redundant RT pre-scan
polaz a065720
test(range): harden range tombstone safety coverage
polaz c81c251
perf(range): filter memtable RTs by query overlap
polaz ece7a2a
style(test): format safety regression assertions
polaz e8d1c4a
fix(range): harden RT metadata and compaction safety
polaz e6c457b
fix(flush): keep RT-widened tables in disjoint L0 runs
polaz 9ee4dcd
fix(range): harden max-key clipping and review regressions
polaz bc72a94
chore(lints): add reason to interval-tree test expect
polaz eb61d8f
docs(readme): document fork disk format V4 boundary
polaz 2c0b836
fix(api): properly seal AbstractTree implementations
polaz a6a1436
test(range): add RT tamper coverage and memtable must_use
polaz 61cfda2
fix(range-tombstone): dedup flush range tombstones before persistence
polaz 210b69f
docs(ci): clarify call-site scope in review instructions
polaz 642148d
test(range-tombstone): add compaction clip gap regression test
polaz 7710935
test(range-tombstone): add RT-only table sentinel recovery regression…
polaz 56addb8
test(range-tombstone): assert specific error type in RT block tamper …
polaz 00b5b9a
test(range-tombstone): disable compression in multi-table flush test
polaz 8b083ad
fix(range-tombstone): disable compression in flush rotation test and …
polaz 42d4726
docs(ci): scope design-decision exclusion to Tier 3-4 only
polaz 261bbf9
fix(range-tombstone): pin compression in compaction rotation test and…
polaz c863073
perf(range-tombstone): dedup collected RTs before range iteration filter
polaz 1065361
docs(range-tombstone): document newest-first search order for point t…
polaz c46710e
docs(test): clarify owned File auto-borrow for read_u64 call
polaz 5d7ab2d
test(recovery): assert InvalidVersion error type in manifest version …
polaz 67e6a27
fix(range-tombstone): add test expect_used lint, RT diagram, metrics …
polaz 1564cdd
docs(range-tombstone): link RT metrics TODO to issue #34
polaz 0ed9bf0
docs(ci): scope design analysis to PR-visible call chain and preserve…
polaz 9b1aab8
style(range-tombstone): rename filter tests to what_condition_expecte…
polaz 387617f
test(range-tombstone): add structural assertions for compaction and r…
polaz File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.