lance-format / lance-format/lance

Migrate CreateIndex to action-level conflict resolution

Open
#6,895 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
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 AddFragments or column update is detected correctly.
  • Add property-based transaction generators.
  • Port the legacy check_create_index_txn unit 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/rebase implemented 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.rs unmodified

Blocked by

  • #6892 (conflict-resolution framework)

User stories addressed

  • User story 6: single code path for conflict resolution

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.