chore(deps): bump lance 4.0.0 → 6.0.0, lancedb 0.27.2 → 0.29.0#27
Conversation
Two-major bump for the lance family and one-major bump for lancedb.
Pins updated in surrealdb/core/Cargo.toml:
- lance =4.0.0 -> =6.0.0
- lance-index =4.0.0 -> =6.0.0
- lancedb =0.27.2 -> =0.29.0
- arrow-array 57 -> 58
- arrow-schema 57 -> 58
Note: lance/lance-index pinned to =6.0.0 (not 6.0.1) because
lancedb 0.29.0 has a strict `=6.0.0` dependency on lance-index.
API surprises (fixed in place; no kv-lance schema changes):
- DatasetIndexExt moved from lance_index::DatasetIndexExt to
lance::index::DatasetIndexExt (so Dataset::create_index resolves).
- lance 6.0 requires arrow 58 (previously 57); arrow-array/schema
bumped accordingly to unify the dependency graph and resolve
StreamingWriteSource / RecordBatchReader trait-bound errors.
Files touched:
- Cargo.toml (workspace comment updated; ndarray patch unchanged
-- lance-index 6.0 still depends on ndarray 0.16)
- Cargo.lock (regenerated)
- surrealdb/core/Cargo.toml (5 dep pins)
- surrealdb/core/src/kvs/lance/mod.rs (1 import path)
No TODO(lance-bump) markers needed: every call site compiled
in-place after the import fix. `cargo check -p surrealdb-core
--features kv-lance` passes cleanly with no warnings.
https://claude.ai/code/session_01LiUiGeUDLje8KMnxB4FfA3
|
Caution Review failedPull request was closed or merged during review No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (3)
📝 WalkthroughWalkthroughLance ecosystem dependencies upgraded from 4.0 to 6.0, including lance, lancedb, and Arrow crate versions. Module imports adjusted to source DatasetIndexExt from the new lance::index location. Patch comment updated to reflect the changed version scope. ChangesLance 6.0 Upgrade
Estimated Code Review Effort🎯 2 (Simple) | ⏱️ ~8 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
|
Actionable comments posted: 0 |
…String/Bool/Float/Decimal/Datetime/Bytes/Uuid) Catches up the C16c bridge to the AST surface PR #29 added on the op-surreal-ast side. Without this, any `field_type`-derived `ast::Kind::String` (etc.) in a Schema would fail to convert to `catalog::Kind` once #29 merges. # What this adds `From<ast::Kind> for CatalogKind` gains 7 arms: ast::Kind::String → CatalogKind::String ast::Kind::Bool → CatalogKind::Bool ast::Kind::Float → CatalogKind::Float ast::Kind::Decimal → CatalogKind::Decimal ast::Kind::Datetime → CatalogKind::Datetime ast::Kind::Bytes → CatalogKind::Bytes ast::Kind::Uuid → CatalogKind::Uuid All seven are 1:1 mirrors of existing `surrealdb_core::expr::kind::Kind` variants. Option-wrapping (Rails-nullable, per codex P1 fix in PR #29) flows through the pre-existing `ast::Kind::Option(inner)` arm: `ast::Kind::String.optional()` → `catalog::Kind::Either([None, String])`. # Dep pin `op-surreal-ast` git branch ref updated from `claude/op-surreal-ast-from-triples` (PR #26 era, pre-D-AR-5.2) to `claude/op-surreal-ast-field-types-stacked` (PR #29 with the new variants). Flip to `branch = "main"` after #29 merges. # Tests `+2` new under `--features op-bridge`: - `d_ar_6_2_scalar_variants_map_one_to_one` — every new ast variant maps to the expected catalog variant. - `d_ar_6_2_option_wrapped_scalar_bridges_via_either` — the Rails-nullable Option<String> → catalog Either(None, String) chain still works for the new variants. # Forward-compat status (D-AR-6.3 deferred) The `ast::FieldDefinition.assert: Option<String>` slot added in PR #27 is still ignored by the bridge (D-AR-6.3 follow-up). Lowering a SurrealQL expression string to `catalog::Expr` requires either the surrealdb-core SurrealQL parser (heavy) or a constrained mini-parser for the few expressions the AR-shape extractor emits (`$value != NONE` is the only one today). Punted to a focused PR. # Iron-rule lock Zero new types. Zero new traits. Seven additive match arms, all 1:1 with existing catalog variants. No behavioural drift on the pre-existing 4 arms (Any/Int/Record/Option).
The bridge has been pinned at the stranded `claude/op-surreal-ast-field-types-stacked` branch since the D-AR-5.2 work first went up as nexgen-rs#29. That PR landed on a stacked branch instead of main and never made it back, so the nexgen-rs `main` diverged from the bridge's view for several sprints. The D-AR-5.2 work has now re-landed via nexgen-rs#36 (Kind variants + field_type consumer), and nexgen-rs `main` carries significant downstream improvements: - FK direction gating (#33) — only `belongs_to` emits a column - Polymorphic FK fallback (#30) — `option<any>` for unknown targets - Singularization tightening (#34, #35, #37) — fixes corpus quirks like `phases→Phase`, `children→Child`, `job_status→JobStatus`, `:big_integer→Decimal` - Phantom-table guard + order-independent ASSERTs (#27/#28/#26) - Rails type aliases (#37) The bridge's `From<ast::Kind> for catalog::Kind` impl already matches the 7 scalar variants the new main carries, so the bump is mechanical — `cargo check --features op-bridge` passes with no source changes needed. Updates Cargo.lock to the new rev (44550a87 — the merge commit of nexgen-rs#37 on main).
Summary
lance+lance-indexfrom=4.0.0to=6.0.0insurrealdb/core/Cargo.toml.lancedbfrom=0.27.2to=0.29.0(strict-pinslance = "=6.0.0", which forced the patch-level target — same forcing function as chore(deps): bump lance 4.0.0 → 6.0.0, lancedb 0.27.2 → 0.29.0 lance-graph#423).arrow-array 57 → 58,arrow-schema 57 → 58(required — lance 6.0 public API takes arrow 58 types).lance_index::DatasetIndexExtno longer re-exported bylance-index 6.0; now lives atlance::index::DatasetIndexExt. Single-line import fix insurrealdb/core/src/kvs/lance/mod.rs:79.ndarraypatch comment updated fromlance-index 4.0→lance-index 6.0for accuracy.Cargo.lockregenerated.Why now
Pairs with AdaWorldAPI/lance-graph#423 (merged). Keeps the lance/lancedb pin aligned across the two repos that share the canonical Lance dataset. Surfaces Lance 6.0 schema-evolution primitives (
Dataset::add_columns()and native versioning) that the OQ-MBX-8 question onkvs/lanceschema design hinges on.ndarray patch retained
lance-index 6.0still depends onndarray = "0.16", so the workspace[patch.crates-io]scope still applies. The comment inCargo.tomlnow says "6.0" not "4.0" — the patch itself is unchanged.Verification
cargo check -p surrealdb-core --features kv-lance --offlinefinishes clean in 5m 38s, no warnings, nounimplemented!()stubs left.Workspace check (
cargo check --workspace) was skipped in the local sandbox becausesurrealml/core → ort-systries to fetch a prebuilt ORT binary that returns HTTP 403 in this container. CI runners will not have this restriction. Unrelated to the lance bump.Out of scope
deltalakeAPI alignment (n/a — surrealdb-core doesn't depend on deltalake)bindspace→mailboxmigration on top of new Lance 6.0 versioning (queued for after this lands)Test plan
kv-lancefeature compiles end-to-end on CIhttps://claude.ai/code/session_01LiUiGeUDLje8KMnxB4FfA3
Generated by Claude Code
Summary by CodeRabbit