Skip to content

Add FSST test files covering both symbol table variants - #121

Open
CurtHagenlocher wants to merge 1 commit into
apache:masterfrom
CurtHagenlocher:fsst-test-data
Open

Add FSST test files covering both symbol table variants#121
CurtHagenlocher wants to merge 1 commit into
apache:masterfrom
CurtHagenlocher:fsst-test-data

Conversation

@CurtHagenlocher

Copy link
Copy Markdown

FSST (parquet-format#531) is in its final phases and needs working implementations to validate that implementers read the wire format the same way. These files are one implementation's output, offered for that purpose, in the same spirit as the ALP files in #100 and #119.

Two files, identical data, differing only in compression: the symbol table page carries its own is_compressed flag, so a reader that ignores it passes one file and fails the other.

Six columns per row group, all holding the same values: a reference pair encoded with DELTA_LENGTH_BYTE_ARRAY, an FSST pair (8-bit codes) and an FSST_16 pair (16-bit codes). A decoder bit-compares the FSST columns against the reference columns, so the files need no expected data alongside them.

Four row groups, each training its own symbol table: URLs, NULLs and empty strings, escape-forcing values, and long values. Across the file that gives 104 data pages, 88 with DELTA_BINARY_PACKED offset arrays and 16 with PLAIN, and 110 escape sequences.

The README records the two places the file reflects a reading of the proposal rather than its explicit text — the PageHeader field id for symbol_table_page_header, and the FSST_16 escape framing — so that a diverging implementation knows where to look. It also records the one gap: no FSST_16 column contains an escape, because the generating implementation's 16-bit tables always hold all 256 single-byte symbols.

FSST (parquet-format#531) is in its final phases and needs working
implementations to validate that implementers read the wire format the same
way. These files are one implementation's output, offered for that purpose, in
the same spirit as the ALP files in apache#100 and apache#119.

Two files, identical data, differing only in compression: the symbol table page
carries its own is_compressed flag, so a reader that ignores it passes one file
and fails the other.

Six columns per row group, all holding the same values: a reference pair encoded
with DELTA_LENGTH_BYTE_ARRAY, an FSST pair (8-bit codes) and an FSST_16 pair
(16-bit codes). A decoder bit-compares the FSST columns against the reference
columns, so the files need no expected data alongside them.

Four row groups, each training its own symbol table: URLs, NULLs and empty
strings, escape-forcing values, and long values. Across the file that gives 104
data pages, 88 with DELTA_BINARY_PACKED offset arrays and 16 with PLAIN, and 110
escape sequences.

The README records the two places the file reflects a reading of the proposal
rather than its explicit text — the PageHeader field id for
symbol_table_page_header, and the FSST_16 escape framing — so that a diverging
implementation knows where to look. It also records the one gap: no FSST_16
column contains an escape, because the generating implementation's 16-bit tables
always hold all 256 single-byte symbols.
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