lance-format / lance-format/lance
Migrate CreateIndex to action-level conflict resolution
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 7.1k
- Forks
- 852
- Avg merge
- 3d 18h
- Merged PRs (30d)
- 272
Description
Parent PRD
Milestone: Action-based Transactions (UserOperation) — see milestone #11. Discussion: #5960. Design spike: #6448.
What to build
CreateIndex already translates to actions and routes build_manifest through Action::apply (done under #6454). This issue migrates its conflict resolution onto the parallel action-level resolver built in #6892.
For the index actions (AddIndex, RemoveIndex, and the coverage actions InvalidateIndexCoverage / RebindIndexCoverage / RewriteIndex / RegisterFragReuse as far as they participate in CreateIndex conflicts):
- Implement
reads()/writes()/rebase(). - Implement criterion-based index-coverage overlap (spike §3.1): a criterion path — e.g. "all indices over field X" — must conflict-overlap any concrete path that satisfies the criterion, so a concurrent
AddFragmentsor column update is detected correctly. - Add property-based transaction generators.
- Port the legacy
check_create_index_txnunit tests onto the new resolver. - Extend the differential matrix by these rows/columns; it must stay green for all operations migrated so far.
- Fill the corresponding §5/§6 rules in the design doc.
conflict_resolver.rs must not be modified — it remains the production path and differential oracle until cutover (#6454).
Acceptance criteria
-
reads/writes/rebaseimplemented for the index actions - Criterion ∩ concrete-path overlap (spike §3.1) implemented and tested
- Property-based generators added
- Legacy conflict unit tests ported and green on the new resolver
- Differential matrix extended; green for all migrated operations
- Design doc §5/§6 updated
-
conflict_resolver.rsunmodified
Blocked by
- #6892 (conflict-resolution framework)
User stories addressed
- User story 6: single code path for conflict resolution
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the conflict-resolution framework in #6892 and the existing CreateIndex action translation from #6454; keep conflict_resolver.rs unchanged. Review the legacy check_create_index_txn tests, the differential matrix, and design spike §3.1 before implementing the listed action interfaces and generators. Done means all acceptance criteria are met, including green migrated-operation comparisons and updated design sections §5/§6.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- databases, distributed-systems
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100