Skip to content

feat(blob): expose managed sharing in Python preparation API - #9880

Merged
Xuanwo merged 1 commit into
mainfrom
xuanwo/fix-prepared-blob-metadata
Oct 11, 2026
Merged

Xuanwo merged 1 commit into
mainfrom
xuanwo/fix-prepared-blob-metadata

Conversation

@Xuanwo

@Xuanwo Xuanwo commented Oct 11, 2026

Copy link
Copy Markdown
Member

Prepared Blob writes can fail when Python's logical field carries empty Arrow extension metadata and a prepared field omits it. Accept those equivalent representations specifically for lance.blob.v2, including nested fields, while retaining strict checks for other extensions and nonempty metadata.

Expose BlobDescriptorArrayBuilder.append_managed in Python so callers can reuse an existing immutable payload or byte range within a table without assembling raw descriptor structs. Validation stays in the Rust core. The guide documents snapshot protection, base identity, and Managed-aware maintenance requirements.

Lifecycle regressions exercise two fragments sharing one payload, compaction, partial deletion, tagged-snapshot retention, and final reclamation for top-level and nested Blob fields in formats 2.2 and 2.3. The metadata regression was reproduced against the original implementation in both Python-to-Rust and Rust-to-Python directions.

Related to #7274. This does not add automatic deduplication, cross-table ownership, or media semantics.

@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 repository is configured for manual code reviews. Comment @claude review for a one-time review, or @claude review always to subscribe this PR to a review on every future push.

Tip: disable this comment in your organization's Code Review settings.

@github-actions github-actions Bot added A-python Python bindings A-encoding Encoding, IO, file reader/writer A-docs Documentation enhancement New feature or request labels Oct 11, 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 metadata regression and explicit-sharing lifecycle are supported by the focused Rust and Python tests, including compaction, tagged retention, and final reclamation. I found no blocker.

@lance-gatekeeper lance-gatekeeper Bot added the K-approved Latest Gatekeeper recommendation permits acceptance. label Oct 11, 2026
@Xuanwo
Xuanwo merged commit 0f92916 into main Oct 11, 2026
38 checks passed
@Xuanwo
Xuanwo deleted the xuanwo/fix-prepared-blob-metadata branch October 11, 2026 06:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-docs Documentation A-encoding Encoding, IO, file reader/writer A-python Python bindings enhancement New feature or request K-approved Latest Gatekeeper recommendation permits acceptance.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants