Skip to content

[python] Support ARRAY BLOB in multimodal payload reads - #10043

Merged
JingsongLi merged 1 commit into
apache:masterfrom
TheR1sing3un:python-array-blob-reads
Sep 21, 2026
Merged

JingsongLi merged 1 commit into
apache:masterfrom
TheR1sing3un:python-array-blob-reads

Conversation

@TheR1sing3un

Copy link
Copy Markdown
Member

Purpose

read_blobs() and stream_blobs() reject ARRAY<BLOB> columns even though the storage reader supports them. Reading another BLOB column also leaves the array's descriptors in the scalar output.

Recognize ARRAY BLOB columns, fetch their elements in the same coalesced range read as scalar and MAP BLOBs, and restore row-aligned lists. Preserve element order, duplicates, null arrays, empty arrays, null elements, and empty or inline payloads. Projection excludes unrequested ARRAY BLOB columns from scalar output.

Tests

  • Multimodal table and contiguous-window suites: 124 passed.
  • Focused BLOB reads on PyArrow 16: 7 passed.
  • Coverage includes mixed scalar/MAP/ARRAY columns, coalesced reads, filtering, projection, row IDs, limits, and empty results.
  • Flake8, changed-file license checks, Python 3.6 grammar checks, and git diff --check passed.

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

Requirement fit: SUPPORTED (triage: GO)
Implementation: CLEAN

ARRAY<BLOB> is a useful missing case for multimodal reads. The change keeps array element order, null and empty arrays, duplicate elements, and row alignment while fetching bodies through the existing coalesced read. The end-to-end tests also cover projection, filtering, row IDs, streaming, and mixed scalar/MAP/ARRAY columns. I found no blocking issue in the changed path.

@JingsongLi
JingsongLi merged commit c62e049 into apache:master Sep 21, 2026
14 checks passed
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