Skip to content

fix(index): describe system indices without scalar plugins - #10882

Merged
Xuanwo merged 3 commits into
lance-format:mainfrom
zhangyue19921010:fix/describe-indices-system-details
Nov 14, 2026
Merged

Xuanwo merged 3 commits into
lance-format:mainfrom
zhangyue19921010:fix/describe-indices-system-details

Conversation

@zhangyue19921010

@zhangyue19921010 zhangyue19921010 commented Nov 10, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

Java’s no-argument Dataset.describeIndices() fails when a __lance_frag_reuse system index is present because it attempts to resolve a scalar index plugin, causing Spark SHOW INDEXES to fail.

Solution

Return {} for system index details in Rust while preserving their names, types, and metadata. Add regression coverage for frag-reuse, MemWAL, and Java’s index description APIs.

Result

describeIndices() and describeIndexSummaries() work after compaction with defer_index_remap=true, while regular index behavior remains unchanged.

Validation

Merged current main (cbed18eff) into the branch with no conflicts. Local validation on the merge commit:

  • cargo fmt --all and cargo fmt --all -- --check
  • cargo clippy --profile ci --locked --all --tests --benches -- -D warnings
  • Focused lance tests: remapper not created without remappable indices, MemWAL system-index description, unknown scalar plugin still errors, and mixed-layout segment descriptions (3 cases)
  • ./mvnw test -Dtest=DatasetTest#testDescribeIndicesAfterDeferredCompaction+testDescribeIndicesByName with a rebuilt JNI library (2 passed)
  • ./mvnw spotless:check
  • JNI cargo clippy --locked --tests --manifest-path ./lance-jni/Cargo.toml -- -D warnings

Limits: only the focused Rust and Java suites above were run; hosted CI is not awaited in this update. The JNI crate is a standalone workspace without the repository ci Cargo profile, so its lint ran in the dev profile.

@claude claude 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.

Claude Code Review

This pull request is from a fork — automated review is disabled. A repository maintainer can comment @claude review to run a one-time review.

@github-actions github-actions Bot added bug Something isn't working A-index Vector index, linalg, tokenizer A-java Java bindings + JNI labels Nov 10, 2026
lance-gatekeeper[bot]

This comment was marked as outdated.

@lance-gatekeeper lance-gatekeeper Bot added the K-approved Latest Gatekeeper recommendation permits acceptance. label Nov 10, 2026
@github-actions github-actions Bot added A-python Python bindings A-deps Dependency updates A-encoding Encoding, IO, file reader/writer A-format On-disk format: protos and format spec docs A-namespace Namespace impls A-ci CI / build workflows format-change A change to the format spec, which requires a vote. Remove if minor (e.g. fixing typo). labels Nov 14, 2026
@lance-gatekeeper lance-gatekeeper Bot removed the K-approved Latest Gatekeeper recommendation permits acceptance. label Nov 14, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Important

Format specification vote

This PR modifies the Lance format specification, so it requires 3 binding +1 votes from PMC members (excluding the proposer), at least one of them on the latest commit, and a minimum 72-hour voting period, weekends excluded, before it can merge. Vote by approving this PR (+1) or requesting changes (−1, a veto). See the voting process.

Approvals carry over across pushes, so a rebase or a typo fix does not send everyone back to re-vote. Whoever approves the latest commit is vouching that nothing substantive has changed since the earlier approvals; if something has, ask for fresh votes.

Status: ❌ Blocked — 0 of 3 required approvals

Approvals none (0/3)
Latest commit approved by none — one PMC member must approve the latest commit
Vetoes none
Voting period ends Thu 2026-11-19 00:00 UTC (Wed 16:00 PST)

Updated automatically by the format-spec vote gate, which re-checks every 15 minutes — just voted? Re-check now (press Run workflow; leave the input blank to re-check every open format PR). A PMC member may apply the format-waived label to waive the vote for a trivial edit (typo, wording, formatting).

@Xuanwo Xuanwo removed A-python Python bindings A-deps Dependency updates A-encoding Encoding, IO, file reader/writer A-format On-disk format: protos and format spec docs A-namespace Namespace impls A-ci CI / build workflows format-change A change to the format spec, which requires a vote. Remove if minor (e.g. fixing typo). labels Nov 14, 2026

@lance-gatekeeper lance-gatekeeper Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

✅ Gate recommendation: approve.

The shared Rust fix preserves system-index identity and metadata without requiring scalar plugins. Focused Rust and Java regressions pass after the main merge, including both Java description APIs, ordinary-index details, and unknown-plugin errors.

@lance-gatekeeper lance-gatekeeper Bot added the K-approved Latest Gatekeeper recommendation permits acceptance. label Nov 14, 2026

@Xuanwo Xuanwo left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM. Hosted checks on the accepted head are green and the candidate merge onto current main is clean.

@Xuanwo
Xuanwo merged commit 1457757 into lance-format:main Nov 14, 2026
57 of 63 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-index Vector index, linalg, tokenizer A-java Java bindings + JNI bug Something isn't working K-approved Latest Gatekeeper recommendation permits acceptance.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants