Skip to content

Mark Vortex ID metadata as base64 - #11300

Merged
connortsui20 merged 1 commit into
developfrom
ct/arrow-ext-format-and-guards
Nov 6, 2026
Merged

connortsui20 merged 1 commit into
developfrom
ct/arrow-ext-format-and-guards

Conversation

@connortsui20

@connortsui20 connortsui20 commented Nov 6, 2026 •

Copy link
Copy Markdown
Member

Summary

Since #11224, the metadata of an extension type without an Arrow plugin is unmarked base64, but other Arrow plugins write the same keys with plain text metadata. So "/w==" means the byte 0xff to Vortex and the four bytes /w== to them. 0.92.0 and 0.93.0 already write this format, and every release that writes it into Parquet or IPC files makes it harder to change.

Changes

The metadata now carries vortex:extension:metadata:encoding = base64, as #10651 did, and unmarked metadata imports as its text. Writing text whenever the bytes are valid UTF-8 was rejected, because binary metadata such as 02 00 00 would then be written as text. Note that fields written by 0.92.0 and 0.93.0 no longer import.

API Changes

  • New vortex_arrow::ext_metadata module and ArrowSession::to_arrow_storage_field.
  • Exported metadata gains the encoding key, and unmarked metadata imports as its text.

@connortsui20
connortsui20 force-pushed the ct/arrow-ext-format-and-guards branch from 7d3d64c to 5aca0f4 Compare November 6, 2026 15:43
@connortsui20
connortsui20 deleted the ct/arrow-ext-format-and-guards branch November 6, 2026 15:52
@connortsui20
connortsui20 restored the ct/arrow-ext-format-and-guards branch November 6, 2026 15:53
@connortsui20 connortsui20 reopened this Nov 6, 2026
@connortsui20
connortsui20 force-pushed the ct/arrow-ext-format-and-guards branch from 5aca0f4 to b202f2c Compare November 6, 2026 15:53
@connortsui20 connortsui20 changed the title Mark Vortex ID metadata as base64 and check the export target type Mark Vortex ID metadata as base64 Nov 6, 2026
@connortsui20
connortsui20 changed the base branch from develop to ct/arrow-ext-export-guard November 6, 2026 15:54
@connortsui20
connortsui20 force-pushed the ct/arrow-ext-export-guard branch from 21038a8 to 4820228 Compare November 6, 2026 15:58
@connortsui20
connortsui20 force-pushed the ct/arrow-ext-format-and-guards branch 2 times, most recently from d433b00 to 32206cb Compare November 6, 2026 16:00
@connortsui20
connortsui20 force-pushed the ct/arrow-ext-export-guard branch from 4820228 to 0679fa4 Compare November 6, 2026 16:10
@connortsui20
connortsui20 force-pushed the ct/arrow-ext-format-and-guards branch from 32206cb to 6154db5 Compare November 6, 2026 16:12
@connortsui20
connortsui20 changed the base branch from ct/arrow-ext-export-guard to develop November 6, 2026 16:12
@connortsui20
connortsui20 marked this pull request as ready for review November 6, 2026 16:16
Follow-up to #11224, from its review.

The metadata of an extension type without an Arrow plugin was unmarked
base64, but other Arrow plugins write the same keys with plain text
metadata, so one string had two meanings. The metadata now carries
`vortex:extension:metadata:encoding = base64`, as #10651 wrote it. The
import decodes a marked value as base64 and reads an unmarked value as its
UTF-8 bytes.

The new public `ext_metadata` module owns the format, and
`ArrowSession::to_arrow_storage_field` builds the field.

Signed-off-by: Connor Tsui <[email protected]>
@connortsui20
connortsui20 force-pushed the ct/arrow-ext-format-and-guards branch from 6154db5 to 9127e3b Compare November 6, 2026 16:25
@connortsui20 connortsui20 added the changelog/fix A bug fix label Nov 6, 2026
@connortsui20
connortsui20 enabled auto-merge (squash) November 6, 2026 16:29
@connortsui20
connortsui20 merged commit 7854a19 into develop Nov 6, 2026
97 of 99 checks passed
@connortsui20
connortsui20 deleted the ct/arrow-ext-format-and-guards branch November 6, 2026 16:34
@connortsui20 connortsui20 mentioned this pull request Nov 12, 2026
12 of 49 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

changelog/fix A bug fix

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants