You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Adds optional file-level metadata to the Vortex file format: a set of
string-keyed, opaque byte segments referenced from the postscript, for
consumers that need to attach identity or annotation to a file (Iceberg
field IDs, an Arrow-metadata round-trip, provenance). Keys and their
segment locators live in the postscript and are read at open; the opaque
values load only when a reader opts in with `include_metadata`, resolved
one locator at a time through the file's existing segment source —
served from the initial footer read when they fall inside it, otherwise
a targeted read. A default open never materializes them and makes no
metadata-driven read. The `DType`, its FlatBuffers and protobuf
serialization, and the scan path are unchanged; the wire change is a
single additive `Postscript` field, so old readers skip it and the file
version stays `1`.
This revives #7954 (the original file-metadata-segments work) rebased
onto develop, with the read path reshaped so metadata is never folded
into the footer's contiguous tail read and never keeps that buffer
alive: values are resolved per-locator and copied out. `Footer` carries
only the locators, so a cached footer is identical whether or not the
opener asked for metadata, and one file's metadata can't surface for
another through the multi-file cache. Parsing a segment alignment from
an untrusted postscript now returns an error rather than panicking on an
out-of-range exponent (the TUI inspector included). The public read API
is additive — `VortexFile` gains metadata accessors and
`VortexOpenOptions` an `include_metadata` opt-in — and `Footer::new` is
unchanged; the generated `Postscript` FlatBuffer gains a field, as any
additive schema change does.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Signed-off-by: mprammer <martin@spiraldb.com>
Co-authored-by: Nicholas Gates <nick@nickgates.com>
Co-authored-by: Claude <noreply@anthropic.com>
0 commit comments