deps(lance): migrate 7.0.0 → 9.0.0-beta.15 — both corruption fixes upstream, vendor pin retired, blob compaction unlocked#335
Merged
Conversation
f9714bf to
b3ce34f
Compare
…able vendor pin The 9.x betas are git-tags only (crates.io carries <= 8.0.0), so all lance crates become git dependencies rev-pinned to the v9.0.0-beta.15 tag commit (f24e42c1). Carries lance#7480 (rowid overlap, closes #7444 — the vendor/lance-table pin + [patch.crates-io] entry are retired per their documented removal condition) and lance#7320 (BTREE segment merge, closes #7230). Sole compile break in the workspace: RowAddrTreeMap moved to the new lance-select crate.
…avior - filtered_scan_tolerates_merge_update_row_id_overlap passes on stock lance-table (vendor-pin retirement validated by its own guard). - literal-coercion guard re-pinned: v8's coercion fixes (lance#6935 et al.) coerce width-mismatched literals to the column type BEFORE pushdown, so the widened case now USES the BTREE (was: index-defeating column cast). literal_to_typed_expr stays load-bearing. - namespace decoupling guard: table_version_storage_enabled removed upstream (#7222); thesis unchanged and still pinned. - lazy-fork namespace test: Lance 9 loudly rejects opening a main-owned manifest as another branch — the substrate now enforces the invariant entry-owner resolution protects; test pins both the error and the owner-branch open.
…MPACTION gate Lance 8.0.0 shipped full blob-v2 compaction (upstream #7017, hardened by #7618 in 9.0.0-beta.15), executing this gate's documented removal plan: the constant, the optimize skip branch, and SkipReason::BlobColumnsUnsupportedByLance are deleted. The surface guard inverts to a positive pin (compact_files_succeeds_on_blob_columns) and the maintenance test now asserts a multi-fragment blob table compacts, publishes, and keeps every row (optimize_compacts_blob_table_alongside_plain_table).
…the 9.0.0-beta.15 bump)
… blob-compaction gaps New dated audit stanza in lance.md (382 upstream commits across the 7->8 and 8->9-beta.15 legs; zero ecosystem churn, no format/reader-floor movement, the FTS-v2 soft door, the merge_insert rewrite, the open items #6666/#6914/#7508). invariants.md: the vendored-lance-table and blob-column-compaction known gaps close per their documented removal conditions. AGENTS.md: substrate line + compaction matrix row. testing.md: the blob guard's new positive name.
b3ce34f to
62a86b1
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Migrates the storage substrate from Lance 7.0.0 to 9.0.0-beta.15 (git-rev-pinned to the tag commit
f24e42c1— the 9.x betas are git-tags only; switch to crates.io at 9.0.0 stable). Decision context: Lance ships fixes in majors, not patches; both active corruption bugs are first fixed in the 9.x line.What this buys
vendor/lance-tablepin is retired per its documented removal condition; its guard passes on stock lance-table and stays as the tripwire.LANCE_SUPPORTS_BLOB_COMPACTION, the skip branch, and the skip reason deleted; guards inverted to positive pins. Blob+Vector tables rejoin maintenance.Migration facts (full audit: the 2026-07-05 stanza in docs/dev/lance.md)
RowAddrTreeMapmoved to the newlance-selectcrate.table_version_storage_enabledremoved upstream; thesis holds), lazy-fork branch-consistency (Lance 9 loudly rejects cross-branch manifest opens — the invariant our entry-owner resolution always enforced; production opens by owner-resolved location, unaffected).Verification
cargo test --workspace: 68/68 suites green, including cost-budget gates (v9 IO improvements landed within slack).Known-opens carried forward
lance#6666 still
pub(crate)(thecreate_vector_indexinline residual + recovery coverage retained), #6914 unshipped, upstream #7508 open (FTS errors under frequent optimize — our reconciler's pattern; watching). Beta-line caveat recorded in the stanza: blob reads regressed at beta.13, fixed beta.15 — re-audit before any beta advance or the stable switch.Greptile Summary
This PR migrates the Lance storage substrate from 7.0.0 to 9.0.0-beta.15 (git-rev pinned at
f24e42c1), retiring the vendoredlance-tablepatch (lance#7480 now upstream), removing the blob-compaction skip gate (LANCE_SUPPORTS_BLOB_COMPACTION), and realigning tests to pin the improved upstream behaviors.vendor/lance-table[patch.crates-io]workaround for the rowid-overlap corruption (lance#7480) is removed since the fix ships in 9.0.0-beta.11;filtered_scan_tolerates_merge_update_row_id_overlapremains as the regression tripwire.LANCE_SUPPORTS_BLOB_COMPACTION,SkipReason::BlobColumnsUnsupportedByLance, and the skip branch inoptimize_one_tableare deleted; surface guards and integration tests are inverted to assert positive behavior (compaction succeeds and preserves all rows).Confidence Score: 5/5
Safe to merge — the migration is mechanically sound, every surface guard and integration test is realigned to pin the improved upstream behavior, and the vendor patch is cleanly retired.
The blob-compaction gate removal and the vendor-pin retirement are both well-guarded by inverted surface guards that turn red on regression. The RowAddrTreeMap import relocation is the only compile-time break, correctly applied in all three use sites. Test realignments pin new upstream behaviors rather than relaxing assertions. The git-rev pin is consistent across all lance crates.
AGENTS.md — architecture diagram on line 56 still says "Lance 7.x" after the substrate migration; one-line fix needed.
Important Files Changed
Flowchart
%%{init: {'theme': 'neutral'}}%% flowchart TD A["optimize_all_tables()"] --> B["Snapshot all table keys"] B --> C["Collect (table_key, full_path) pairs\n(blob flag removed)"] C --> D["buffer_unordered(concurrency)"] D --> E["optimize_one_table()"] E --> F{"HEAD > manifest?\n(DriftNeedsRepair)"} F -- Yes --> G["Skip: DriftNeedsRepair"] F -- No --> H["compact_files()\n(blob tables now included)"] H --> I["optimize_indices()"] I --> J["ManifestBatchPublisher::publish\n(manifest tracks Lance HEAD)"] J --> K["TableOptimizeStats\ncommitted=true"]%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%% flowchart TD A["optimize_all_tables()"] --> B["Snapshot all table keys"] B --> C["Collect (table_key, full_path) pairs\n(blob flag removed)"] C --> D["buffer_unordered(concurrency)"] D --> E["optimize_one_table()"] E --> F{"HEAD > manifest?\n(DriftNeedsRepair)"} F -- Yes --> G["Skip: DriftNeedsRepair"] F -- No --> H["compact_files()\n(blob tables now included)"] H --> I["optimize_indices()"] I --> J["ManifestBatchPublisher::publish\n(manifest tracks Lance HEAD)"] J --> K["TableOptimizeStats\ncommitted=true"]Comments Outside Diff (1)
AGENTS.md, line 56 (link)Reviews (3): Last reviewed commit: "docs(lance): 9.0.0-beta.15 alignment sta..." | Re-trigger Greptile