Skip to content

chore(deps): bump lance 4.0.0 → 6.0.0, lancedb 0.27.2 → 0.29.0#423

Merged
AdaWorldAPI merged 3 commits into
mainfrom
claude/lance-surrealdb-analysis-LXmug
May 28, 2026
Merged

chore(deps): bump lance 4.0.0 → 6.0.0, lancedb 0.27.2 → 0.29.0#423
AdaWorldAPI merged 3 commits into
mainfrom
claude/lance-surrealdb-analysis-LXmug

Conversation

@AdaWorldAPI

@AdaWorldAPI AdaWorldAPI commented May 28, 2026

Copy link
Copy Markdown
Owner

Summary

  • Bump lance family (lance, lance-arrow, lance-index, lance-linalg, lance-namespace) from =4.0.0 to =6.0.0 across 6 crates.
  • Bump lancedb from =0.27.2 to =0.29.0 (strict-pins lance = "=6.0.0", which forced the patch-level target).
  • Cascade required: arrow 57 → 58, datafusion 52 → 53 across 8 Cargo.toml files. Lance 6.0's public API takes arrow 58 types — keeping arrow 57 caused trait-incoherence at every Dataset::write / InsertBuilder / LanceTableProvider call site.
  • Zero source-code edits required. No API surface renames between lance 4.0 → 6.0 that affected this codebase; the whole delta is dep-pins + lockfile regeneration.
  • TODO(lance-bump): comments left next to each cascaded arrow/datafusion bump for traceability.

Why now

Unblocks evaluating OQ-MBX-8 (persisted_row vs Lance native versioning) against the actual Lance 6.0 surface. Schema-evolution / versioning primitives that may answer the kvs/lance question live in 6.0, not 4.0.

Build prereq

Lance 6.0 needs system protoc at build time (lance-encoding pulls prost-build). Either install protoc on the CI runners or enable the protoc feature on lance which bundles protobuf-src. Worth confirming CI before merging.

Next bump

Lance v7.0.0 is final on GitHub (May 27) but not yet on crates.io. Once it lands AND a matching lancedb final ships (currently only 0.30.0-beta.1), do another bump. Watching cadence; could be days.

Pre-existing breakage (out of scope)

cognitive-shader-driver has 3 errors (missing QUALIA_DIMS import + missing ShaderDispatch fields alpha_saturation_override / merge_override). Verified reproducible on origin/main pre-bump — not caused by this PR.

Test plan

  • CI green (style / build / rust-test)
  • protoc available on CI runner
  • No unintended arrow/datafusion churn beyond the 8 listed Cargo.toml files

Out of scope

  • surrealdb-core lance/lancedb bump — sequenced after this PR's CI goes green.

https://claude.ai/code/session_01LiUiGeUDLje8KMnxB4FfA3


Generated by Claude Code

Summary by CodeRabbit

  • Chores
    • Bumped Apache Arrow ecosystem from 57 → 58 across crates.
    • Upgraded DataFusion from 51/52 → 53 for query components.
    • Updated Lance storage engine from 4.0.0 → 6.0.0 (workspace/dev deps aligned).
    • Upgraded LanceDB from 0.27.2 → 0.29.0.
    • Bumped PyO3 to 0.28 and updated related optional deps (e.g., deltalake to 0.32).

Review Change Stack

Per task scope: bump Lance family (4.0 → 6.0) and lancedb (0.27 → 0.29).
Note: target was lance 6.0.1, but lancedb 0.29.0 pins lance =6.0.0, so the
viable bump is 6.0.0 across the family (no 6.0.1 with current lancedb).

Crates touched (Cargo.toml pin updates):
  - crates/lance-graph: lance/lance-linalg/lance-namespace/lance-arrow/lance-index = =6.0.0; lancedb = =0.29.0
  - crates/lance-graph-catalog: lance-namespace = =6.0.0
  - crates/lance-graph-ontology: lance = =6.0.0 (optional)
  - crates/lance-graph-callcenter: lance = =6.0.0 (optional)
  - crates/lance-graph-benches: lance = =6.0.0
  - crates/holograph: lance = =6.0.0 (excluded crate, kept in sync)
  - crates/surreal_container: lance = =6.0.0, lancedb = =0.29.0 (optional)

Transitive bumps required by lance 6.0:
  - arrow 57 → 58 (lance 6.0 ships arrow 58; consumer types must match)
  - datafusion 52 → 53 (lance 6.0 needs DataFusion 53)
  - Applied to: lance-graph, lance-graph-catalog, lance-graph-ontology,
    lance-graph-callcenter, lance-graph-benches, lance-graph-archetype,
    lance-graph-python (excluded), holograph (excluded)

Source code: no changes required — boundary types stayed compatible after
arrow 57→58 + datafusion 52→53 alignment.

cargo check --workspace --all-features: clean, except 3 PRE-EXISTING errors
in crates/cognitive-shader-driver (QUALIA_DIMS missing import + ShaderDispatch
missing fields alpha_saturation_override / merge_override). These errors
exist on origin/main and are unrelated to this bump — verified by checking
out main and reproducing the same errors.

Notes / surprises:
  - lancedb 0.29.0 pins lance =6.0.0 (strict equality, not ^6); lance 6.0.1
    cannot coexist with lancedb 0.29.0. Bump achievable today is 6.0.0.
  - lance 6.0 requires protoc at build time (lance-encoding build script
    pulls prost-build). Solved via system protobuf-compiler install for CI;
    crates with `protoc` feature could bundle protobuf-src instead.
  - No `unimplemented!()` stubs needed.
  - No surface renames in lance-namespace / lance-linalg between 4.0 and 6.0
    (still published as separate crates at 6.0.0).

https://claude.ai/code/session_01LiUiGeUDLje8KMnxB4FfA3
@coderabbitai

coderabbitai Bot commented May 28, 2026

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 092f8f48-1953-4c6c-afa8-1e9844395d9b

📥 Commits

Reviewing files that changed from the base of the PR and between 4335c7a and 675cb16.

📒 Files selected for processing (1)
  • crates/lance-graph/Cargo.toml

📝 Walkthrough

Walkthrough

This PR upgrades workspace Cargo manifests to the Lance 6.0 ecosystem: Arrow crates move from 57→58, DataFusion from 51/52→53, Lance workspace crates from =4.0.0→=6.0.0, and lancedb/deltalake pins updated; changes are applied across the primary crate and dependent crate manifests while preserving optional/default-features and feature flags.

Changes

Lance 6.0 Ecosystem Upgrade

Layer / File(s) Summary
Lance-graph primary crate updates
crates/lance-graph/Cargo.toml
Arrow, DataFusion, datafusion-* components, Lance workspace crates, optional lancedb/deltalake, removal of delta from default features, and dev-dependencies for Lance crates updated to newer versions while preserving feature and default-features settings.
Dependent crates synchronization
crates/holograph/Cargo.toml, crates/lance-graph-archetype/Cargo.toml, crates/lance-graph-benches/Cargo.toml, crates/lance-graph-callcenter/Cargo.toml, crates/lance-graph-catalog/Cargo.toml, crates/lance-graph-ontology/Cargo.toml, crates/lance-graph-python/Cargo.toml, crates/surreal_container/Cargo.toml
Per-crate dependency bumps to align Arrow (57→58), DataFusion (51/52→53), and Lance (=4.0.0→=6.0.0); optional flags, feature wiring, and default-features settings preserved; minor comment updates in surreal_container manifest.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Poem

🐰 I hopped the lockfile, lines in tow,

Arrow leapt up to fifty-eight,
DataFusion tuned its little toe,
Lance grew six and cleared the gate,
Workspace hums — new versions in tow.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely identifies the primary change: bumping lance and lancedb to specific major versions across the workspace.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/lance-surrealdb-analysis-LXmug

Comment @coderabbitai help to get the list of available commands and usage tips.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1db091f1f5

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

chrono = "0.4"
async-trait = "0.1"
datafusion = { version = "52", default-features = false, features = [
datafusion = { version = "53", default-features = false, features = [

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Keep Delta Lake on the same DataFusion major

With the default delta feature enabled, this crate still pulls deltalake = 0.31 with its datafusion feature, and the regenerated lock shows deltalake-core still depends on datafusion 52.5.0 / Arrow 57. DeltaTableReader creates a deltalake::delta_datafusion::DeltaTableProvider and passes it to the crate's SessionContext; after this bump that context is DataFusion 53, so the provider implements the wrong TableProvider trait and default builds using Delta support will fail to type-check. Either bump deltalake to a DataFusion-53-compatible release or disable/remove the Delta reader until it can be aligned.

Useful? React with 👍 / 👎.

arrow-array = "57"
arrow-schema = "57"
arrow-ipc = "57"
arrow = { version = "58", features = ["pyarrow"] }

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Align Python bindings' DataFusion with Arrow 58

The Python extension now constructs Arrow 58 RecordBatch/Schema values, but its datafusion dependency remains pinned to 51 while graph.rs feeds those batches into MemTable::try_new and passes a SessionContext into lance-graph APIs that now use DataFusion 53. In an opt-in maturin develop/Python build this leaves two incompatible DataFusion/Arrow type universes in the same crate, so the extension will fail to compile; bump this dependency alongside the Arrow/Lance bump.

Useful? React with 👍 / 👎.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@crates/lance-graph-python/Cargo.toml`:
- Around line 13-17: The Cargo.toml dependency for datafusion is out of sync
with the pinned Arrow 58 and the workspace lockfile; update the datafusion entry
in crates/lance-graph-python/Cargo.toml to a DataFusion series that targets
Arrow 58 (e.g., set datafusion = { version = "53", default-features = false } or
the exact locked version like "53.1.0") so it matches the Arrow 58 pin and the
workspace Cargo.lock; this ensures code in src/graph.rs that uses MemTable,
DefaultTableSource, SessionContext and Arrow RecordBatch/Schema compiles against
a consistent DataFusion/Arrow pair.

In `@crates/surreal_container/Cargo.toml`:
- Line 44: The inline comment next to the lancedb dependency is stale (it says
"bump to 0.28" while the dependency is set to version 0.29.0); update the
comment next to the lancedb = { version = "=0.29.0", optional = true,
default-features = false } line to reflect the actual version (e.g., change
"bump to 0.28" to "bump to 0.29" or remove the BLOCKED note if no longer
applicable) so the BLOCKED annotation matches the declared lancedb version.
- Around line 43-44: The workspace test fails because the crate relies on a path
dependency named `ndarray` (referenced by the `ndarray = { path =
"../../../ndarray", ... }` entry) that isn’t present, so before running cargo
test for `crates/surreal_container` either ensure the `../../../ndarray`
directory is available (e.g., checkout or init the submodule/fork) or change the
dependency to the published crate by replacing the path override with a
versioned dependency in the manifest; locate the `ndarray` dependency entry
referenced by `crates/surreal_container/Cargo.toml` (or the workspace override)
and either populate the path or switch to `ndarray = "<appropriate_version>"` so
the workspace can resolve the dependency.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 913cc7b5-ed65-4e93-a524-bde07ea5c5a6

📥 Commits

Reviewing files that changed from the base of the PR and between 55a0b4e and 1db091f.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (9)
  • crates/holograph/Cargo.toml
  • crates/lance-graph-archetype/Cargo.toml
  • crates/lance-graph-benches/Cargo.toml
  • crates/lance-graph-callcenter/Cargo.toml
  • crates/lance-graph-catalog/Cargo.toml
  • crates/lance-graph-ontology/Cargo.toml
  • crates/lance-graph-python/Cargo.toml
  • crates/lance-graph/Cargo.toml
  • crates/surreal_container/Cargo.toml

Comment thread crates/lance-graph-python/Cargo.toml Outdated
Comment thread crates/surreal_container/Cargo.toml Outdated
Comment on lines +43 to +44
lance = "=6.0.0" # BLOCKED(A): bump to Lance 6 once version confirmed
lancedb = { version = "=0.29.0", optional = true, default-features = false } # BLOCKED(B): bump to 0.28

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Description: Verify surreal_container builds and tests with Lance 6.0 dependencies
# Expected: Build succeeds (or fails with known BLOCKED surrealdb dependency issue)

cargo test --manifest-path crates/surreal_container/Cargo.toml

Repository: AdaWorldAPI/lance-graph

Length of output: 640


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== Find ndarray references in Cargo manifests =="
rg -n --hidden --glob='**/Cargo.toml' 'ndarray' .

echo
echo "== Show workspace Cargo.toml dependency entry for ndarray if present =="
if [ -f Cargo.toml ]; then
  rg -n --hidden 'ndarray' Cargo.toml || true
  echo
  echo "---- Root Cargo.toml (around ndarray) ----"
  awk '
    BEGIN{found=0}
    /ndarray/ {found=1}
    {print NR ":" $0}
    found && NR>0 { if(found && NR>0){} }
  ' Cargo.toml | head -n 120 || true
fi

echo
echo "== Show manifest paths for crates/lance-graph dependency bgz-tensor if present =="
if [ -f crates/lance-graph/Cargo.toml ]; then
  rg -n --hidden 'bgz-tensor' crates/lance-graph/Cargo.toml
  echo
  echo "---- crates/lance-graph/Cargo.toml (around bgz-tensor) ----"
  awk '{
    if($0 ~ /bgz-tensor/){start=NR-20; if(start<1) start=1}
    if(NR>=start && NR<=start+80) print NR ":" $0
  }' crates/lance-graph/Cargo.toml || true
fi

Repository: AdaWorldAPI/lance-graph

Length of output: 13587


cargo test for crates/surreal_container fails to load due to missing ndarray path dep

  • cargo test --manifest-path crates/surreal_container/Cargo.toml exits 101 because the workspace can’t read ndarray (failed to read .../ndarray/Cargo.toml: No such file or directory).
  • The workspace uses a path dependency to the AdaWorldAPI fork (ndarray = { path = "../../../ndarray", ... }), so the ../../../ndarray directory must be present (e.g., submodule/fork checkout or dependency wiring) before the Lance 6.0 / LanceDB 0.29 bump can be tested.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@crates/surreal_container/Cargo.toml` around lines 43 - 44, The workspace test
fails because the crate relies on a path dependency named `ndarray` (referenced
by the `ndarray = { path = "../../../ndarray", ... }` entry) that isn’t present,
so before running cargo test for `crates/surreal_container` either ensure the
`../../../ndarray` directory is available (e.g., checkout or init the
submodule/fork) or change the dependency to the published crate by replacing the
path override with a versioned dependency in the manifest; locate the `ndarray`
dependency entry referenced by `crates/surreal_container/Cargo.toml` (or the
workspace override) and either populate the path or switch to `ndarray =
"<appropriate_version>"` so the workspace can resolve the dependency.

Comment thread crates/surreal_container/Cargo.toml Outdated
claude added 2 commits May 28, 2026 09:42
- deltalake 0.31 -> 0.32 (codex P1): the previous pin pulled
  datafusion 52 + arrow 57 transitively, conflicting with the
  workspace's DF53 + arrow 58 after the lance 6.0 bump.
  DeltaTableProvider implements the wrong TableProvider trait
  in default builds with delta enabled.

- lance-graph-python: datafusion 51 -> 53, pyo3 0.26 -> 0.28
  (codex P2 + cargo resolve): arrow-pyarrow 58.0 transitively
  requires pyo3 0.28; only one crate can link "python" so the
  0.26 + 0.28 coexistence is unresolvable. DF51 also incompatible
  with the SessionContext/Arrow 58 types now flowing through
  graph.rs into MemTable::try_new.

- surreal_container: drop stale BLOCKED(A)/(B) comments
  (CodeRabbit): pins are =6.0.0 / =0.29.0, no longer blocked.

Local cargo check --workspace --all-features passes.
Real CI failure root cause: `deltalake 0.32` removed
`delta_datafusion::DeltaTableProvider::try_new`; the new API is
`TableProviderBuilder::new().with_snapshot(...).with_log_store(...).build().await`
(async, fallible). `crates/lance-graph/src/table_readers.rs:119`
still calls the old API and fails to compile under default features.

Per codex P1's explicit fallback option ("disable/remove the Delta
reader until it can be aligned"), drop `delta` from
`crates/lance-graph/Cargo.toml :: default = [...]`. The `delta`
feature remains opt-in via `--features delta` for any caller that
wants to patch up the broken state themselves; `DeltaTableReader`
itself is already `#[cfg(feature = "delta")]` so non-default builds
don't even compile the broken file. Refactor to TableProviderBuilder
is queued as a follow-up — `TODO(lance-bump-delta)` left at the
feature definition with the new API surface noted.

Local `cargo build --manifest-path crates/lance-graph/Cargo.toml`
(matches CI command) finishes clean in 5m16s.
@coderabbitai

coderabbitai Bot commented May 28, 2026

Copy link
Copy Markdown

Actionable comments posted: 0

@AdaWorldAPI AdaWorldAPI merged commit e7d733f into main May 28, 2026
6 checks passed
AdaWorldAPI pushed a commit that referenced this pull request May 28, 2026
….1 block

#423 landed the lance 4→6, lancedb 0.27→0.29, datafusion 52→53, arrow 57→58
coordinated bump (RESOLVED A/B/D). The stale BLOCKED comments in the root
Cargo.toml predate that landing.

This commit:
- Replaces the BLOCKED-(A)/(B)/(D) comment block with a dated RESOLVED record
  pointing to #423 + the live crate-level pins.
- Records the user-authorised follow-on patch 6.0.0 → 6.0.1 as CURRENTLY
  BLOCKED: lancedb 0.29.0 (the latest 0.29.x on crates.io) transitively pins
  `lance = "=6.0.0"`, so cargo cannot satisfy `lance = "=6.0.1"` + the
  lancedb transitive simultaneously. Resolution path: wait for lancedb 0.29.1+
  that bumps the lance pin, or drop the strict-= in lance-graph.
- Keeps BLOCKED(C) (surrealdb kv-lance git source) since it's a separate
  fork-access concern still pending human input.

No code touched. No version-string pin changed in any crate Cargo.toml —
they all stay at the #423 state (=6.0.0 / =0.29.0 / 53 / 58).

https://claude.ai/code/session_01FMooFcE7hgRWWvknNr2N4i
AdaWorldAPI added a commit that referenced this pull request May 28, 2026
…sis-LXmug

chore(deps): bump lance 4.0.0 → 6.0.0, lancedb 0.27.2 → 0.29.0
AdaWorldAPI pushed a commit that referenced this pull request May 28, 2026
….1 block

#423 landed the lance 4→6, lancedb 0.27→0.29, datafusion 52→53, arrow 57→58
coordinated bump (RESOLVED A/B/D). The stale BLOCKED comments in the root
Cargo.toml predate that landing.

This commit:
- Replaces the BLOCKED-(A)/(B)/(D) comment block with a dated RESOLVED record
  pointing to #423 + the live crate-level pins.
- Records the user-authorised follow-on patch 6.0.0 → 6.0.1 as CURRENTLY
  BLOCKED: lancedb 0.29.0 (the latest 0.29.x on crates.io) transitively pins
  `lance = "=6.0.0"`, so cargo cannot satisfy `lance = "=6.0.1"` + the
  lancedb transitive simultaneously. Resolution path: wait for lancedb 0.29.1+
  that bumps the lance pin, or drop the strict-= in lance-graph.
- Keeps BLOCKED(C) (surrealdb kv-lance git source) since it's a separate
  fork-access concern still pending human input.

No code touched. No version-string pin changed in any crate Cargo.toml —
they all stay at the #423 state (=6.0.0 / =0.29.0 / 53 / 58).

https://claude.ai/code/session_01FMooFcE7hgRWWvknNr2N4i
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants