Commit 7f9fffc
committed
Make prefix filter AFL fuzzer comprehensive
Close the remaining coverage gaps:
- MVCC snapshot reads: TakeSnapshot captures the current seqno, then
SnapshotGet and SnapshotPrefixScan read at the frozen point while new
writes continue. Tests version pinning + prefix filter interaction.
- WeakDelete: calls remove_weak() so AFL can explore weak tombstone GC
combined with prefix filter correctness during compaction.
- Extractor change on reopen: ReopenNewExtractor swaps to a different
extractor, testing the prefix_filter_allowed() compatibility gating
where old tables keep their original extractor metadata.
- Partitioned filter control: FilterPartitioningChoice lets AFL force
partitioned filters on all levels (including L0 flushes), not just
the default L3+. This is the code path where we found the empty
tli_handles panic.
- FirstKV / LastKV: unbounded iteration endpoints that should never be
affected by prefix filter pruning.
- ContainsKey: same point-read path as Get, now explicitly tested.
- Empty prefix: ClusteredPrefix length lowered to 0..=3, where len=0
maps to an unbounded full scan.1 parent 87a6287 commit 7f9fffc
1 file changed
Lines changed: 249 additions & 22 deletions
0 commit comments