Skip to content

feat(writer): global-dict Binary columns like Rust's dict layout - #443

Merged
dfa1 merged 1 commit into
mainfrom
feat/global-dict-binary
Oct 3, 2026
Merged

dfa1 merged 1 commit into
mainfrom
feat/global-dict-binary

Conversation

@dfa1

@dfa1 dfa1 commented Oct 3, 2026

Copy link
Copy Markdown
Owner

Rust's dict layout admits Primitive | Utf8 | Binary (dict_layout_supported); the Java writer's global dict left Binary out. This brings it to parity.

  • DictColumnState/VortexWriter: Utf8 global-dict path generalized to VarBin (Utf8 + Binary); Binary keyed by ByteBuffer.wrap for content equality.
  • DictAllTypesInteropIntegrationTest: vortex-jni writes a low-card column of 23 Arrow types; Java rebuilds every value; asserts which types Rust dict-encodes (only primitives/strings).
  • JavaWritesRustReadsIntegrationTest#javaWriter_rustReader_globalDict_nullableBinary: dict layout present, vortex-jni reads full + filtered (verified red without the fix).
  • docs/compatibility.md: dict layout over uuid/FSL/date pools is unreachable from Rust- or Java-written files (⚠️, not ❌).

🤖 Generated with Claude Code

Rust's dict layout admits Primitive | Utf8 | Binary (dict_layout_supported);
the Java writer left Binary out. Binary values are keyed by a ByteBuffer
view so equal bytes in distinct byte[] instances dedup by content.

Adds DictAllTypesInteropIntegrationTest: vortex-jni writes a low-cardinality
column of every Arrow type, Java rebuilds every value, and the test pins
which types Rust dict-encodes. Rust never dicts uuid/date/FSL/bool/decimal,
so compatibility.md downgrades that dict-layout row from a gap to
unreachable.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@dfa1
dfa1 force-pushed the feat/global-dict-binary branch from 1ff6553 to 9283dae Compare October 3, 2026 12:45
@dfa1
dfa1 merged commit 1dcc455 into main Oct 3, 2026
6 checks passed
@dfa1
dfa1 deleted the feat/global-dict-binary branch October 3, 2026 12:50
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.

1 participant