Skip to content

Commit e1c322c

Browse files
authored
resolve rfc 0014 (#564)
1 parent 779e572 commit e1c322c

File tree

1 file changed

+28
-7
lines changed

1 file changed

+28
-7
lines changed

docs/rfcs/0014-dual-tree-secondary-index.md

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
id: 0014
33
title: Dual-Tree Secondary Index
4-
status: proposal
4+
status: implemented
55
tags: [storage, index, checkpoint, recovery]
66
created: 2026-04-12
77
github_issue: 550
@@ -443,7 +443,7 @@ SAFETY:` comments, and run the repository lint gate. [D10], [C4], [C7]
443443
catalog-table changes, storage version compatibility with older table-meta
444444
payloads, and removal of the existing single-tree index.
445445
- Task Doc: `docs/tasks/000117-disk-tree-format-and-roots.md`
446-
- Task Issue: `#0`
446+
- Task Issue: `#552`
447447
- Phase Status: done
448448
- Implementation Summary: Implemented Phase 1 DiskTree root metadata and persisted unique/non-unique DiskTree primitives [Task Resolve Sync: docs/tasks/000117-disk-tree-format-and-roots.md @ 2026-04-12]
449449

@@ -620,13 +620,34 @@ SAFETY:` comments, and run the repository lint gate. [D10], [C4], [C7]
620620
- Non-unique scans add implementation work to enforce deterministic merge and
621621
duplicate-suppression logic across two trees.
622622

623+
## Post-Implementation Notes
624+
625+
- Non-unique `DiskTree` keeps row-id-oriented public prefix scan behavior while
626+
exposing internal encoded exact-entry scan helpers where the composite
627+
secondary-index merge needs deterministic `(logical_key, row_id)` ordering.
628+
- The implementation reused B+Tree node layout, key/value encoders, scan
629+
helpers, and `BTreeNil` support where practical, but it deliberately avoided
630+
a generic backend-independent CoW B+Tree refactor.
631+
623632
## Open Questions
624633

625-
- Given the fixed non-unique exact-entry merge contract, should DiskTree scan
626-
APIs expose encoded keys for deterministic merge tests, or should merge order
627-
be hidden behind row-id vectors?
628-
- How much of `GenericBTree` search/cursor logic can be safely reused without
629-
broadening this RFC into a generic CoW B+Tree refactor?
634+
None.
635+
636+
## Deferred Follow-up Backlogs
637+
638+
The implementation intentionally deferred the following non-blocking work. These
639+
items remain open for future task/RFC planning and are not required to close RFC
640+
0014:
641+
642+
- `docs/backlogs/000083-full-disk-tree-compaction-policy.md`
643+
- `docs/backlogs/000084-parallel-secondary-disk-tree-checkpoint-application.md`
644+
- `docs/backlogs/000085-disk-tree-prefix-compression.md`
645+
- `docs/backlogs/000086-secondary-index-dual-tree-access-path.md`
646+
- `docs/backlogs/000087-refactor-recovery-process-parallel-log-replay.md`
647+
- `docs/backlogs/000088-remove-recovery-skip-option.md`
648+
- `docs/backlogs/000089-checkpoint-old-root-retention.md`
649+
- `docs/backlogs/000090-protect-disk-tree-root-lifetime.md`
650+
- `docs/backlogs/000091-page-level-secondary-mem-index-cleanup-scan.md`
630651

631652
## Future Work
632653

0 commit comments

Comments
 (0)