mirror of
https://github.com/ModernRelay/omnigraph.git
synced 2026-06-12 01:45:14 +02:00
CI exposed a real Step 1 bug surfaced by the new staged_writes tests: stage_append → scan_with_staged fails on stable_row_id datasets with "Missing row id meta" (lance-4.0.0/src/dataset/rowids.rs:22). Root cause: InsertBuilder::execute_uncommitted produces fragments with row_id_meta = None. Lance's commit phase normally populates it via Transaction::assign_row_ids, but scan_with_staged reads the staged fragments BEFORE commit. MergeInsertBuilder::execute_uncommitted dodges this by populating row_id_meta inline (transaction.rs:1618) — that's why the two merge-side tests in tests/staged_writes.rs passed and the two append-side tests failed. The bug was always present in the primitive — PR #66 shipped it the same way. PR #66 had no tests calling stage_append, so neither CI nor the bot reviewers caught it. Step 2+ would have hit it on the first mutation that did "insert + insert with FK validation," but the failure would have looked like a MutationStaging wiring bug; localizing it here saves the next session the chase. Fix: assign row_id_meta on the cloned fragments returned in StagedWrite.new_fragments. Mirrors the relevant arm of Lance's Transaction::assign_row_ids (transaction.rs:2682) for the row_id_meta = None case. The transaction's internal fragment copy stays untouched — Lance assigns its own IDs at commit time, and the two ID assignments don't have to agree because no caller threads _rowid from the staged scan into the commit path. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| omnigraph | ||
| omnigraph-cli | ||
| omnigraph-compiler | ||
| omnigraph-server | ||