Skip to content

[CPP] Support reading BOOLEAN RLE written with Java defaults - #1019

Merged
ColinLeeo merged 1 commit into
apache:developfrom
ColinLeeo:codex/boolean-rle-read
Oct 17, 2026
Merged

ColinLeeo merged 1 commit into
apache:developfrom
ColinLeeo:codex/boolean-rle-read

Conversation

@ColinLeeo

Copy link
Copy Markdown
Contributor

Java writes BOOLEAN columns with RLE by default, but the C++ decoder factory rejects BOOLEAN + RLE even though Int32RleDecoder::read_boolean() already exists. Reading these files therefore fails when the reader allocates the value decoder.

This change routes BOOLEAN + RLE to the existing decoder and adds a factory regression test. The existing cross-language compatibility workflow now generates 12 additional Java fixtures using a schema with no explicit encoding, asserts that the Java default is RLE, and validates the on-wire encoding and every value in C++. The fixtures cover UNCOMPRESSED/LZ4/ZSTD/LZMA2, alternating bits, long true/false runs, mixed NULL pages, and all-NULL pages.

Validation:

  • Reproduced the factory and Java-to-C++ fixture failures before the fix.
  • Java fixture generation and readback passed.
  • C++ readback of all 135 Java fixtures passed, including the 12 new BOOLEAN fixtures.
  • Encoding regression selection: 29 tests passed.
  • Additional RLE/reader regression selection: 48 tests passed (one existing disabled test).
  • Java and C++ Spotless checks and git diff --check passed.

@ColinLeeo
ColinLeeo merged commit 1180b13 into apache:develop Oct 17, 2026
49 checks passed
@ColinLeeo
ColinLeeo deleted the codex/boolean-rle-read branch October 17, 2026 10:49
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