Skip to content

Add Java-written ALP fixtures at multiple vector sizes + #105 corner cases#1

Open
vinooganesh wants to merge 1 commit into
prtkgaur:alpFloatingPointDatasetfrom
vinooganesh:alp-java-fixtures
Open

Add Java-written ALP fixtures at multiple vector sizes + #105 corner cases#1
vinooganesh wants to merge 1 commit into
prtkgaur:alpFloatingPointDatasetfrom
vinooganesh:alp-java-fixtures

Conversation

@vinooganesh

Copy link
Copy Markdown

Stacks onto apache#100. Adds six fixtures from apache/parquet-java#3397 to broaden the cross-language test surface:

Dataset-derived (4 files, ~960 KB) — covers both page versions (V1/V2) × both ALP vector sizes (1024/4096) × float/double from the existing PR apache#100 source data:

  • alp_java_arade_v1_vs1024.parquet
  • alp_java_arade_v2_vs4096.parquet
  • alp_java_float_arade_v2_vs1024.parquet
  • alp_java_float_spotify1_v1_vs4096.parquet

Corner-case (2 files, ~190 KB) — targets apache#105:

  • alp_java_cornercases.parquet — 14 columns × 2048 rows, each engineered to hit a specific case: no exceptions, one exception per vector, all-NaN, NaN+Inf+(-0.0), constant (bit_width=0), differing exponents per vector, optional with nulls — both f32 and f64
  • alp_java_cornercases_expect.csv — sidecar ground truth emitted directly from the construction recipe (not from reading the parquet back), so it's independent of any encoder

Verification already done

Arrow C++ ALP decoder (apache/arrow#48345) reads all six files; 342,306 values bit-compared against the _expect.csv truth tables, 0 mismatches. (The full 17-file local matrix totals 1,587,306 values verified across all V1/V2 × 1024/4096 combinations, also 0 mismatches.)

parquet-java reads the same fixtures bit-exact via the round-trip tests in apache/parquet-java#3397.

What's held back

11 additional fixtures from the full {v1,v2} × {1024,4096} × {arade,spotify1,float_arade,float_spotify1} matrix (~2.5 MB combined). Kept this PR to ~1.1 MB given the size discussion in apache#105 — happy to add any subset on request.

…orner cases

Six fixtures from apache/parquet-java#3397 to broaden the cross-language
test surface:

  alp_java_arade_v1_vs1024.parquet
  alp_java_arade_v2_vs4096.parquet
  alp_java_float_arade_v2_vs1024.parquet
  alp_java_float_spotify1_v1_vs4096.parquet

These cover both page versions (V1/V2) and both ALP vector sizes
(1024/4096) across float and double — the axes from Prateek's
original ask.

  alp_java_cornercases.parquet                  59 KB
  alp_java_cornercases_expect.csv               130 KB

Small fixture (14 cols × 2048 rows) targeting parquet-testing#105:
no exceptions, one exception, all-NaN, NaN+Inf+(-0.0), constant
(bit_width=0), differing exponents per vector, optional with nulls.
The sidecar _expect.csv is independent ground truth emitted from the
construction recipe, not from reading the parquet back.

Already verified bit-exact: Arrow C++ ALP decoder (apache/arrow#48345)
reads all six files; 1,587,306 values vs _expect.csv truth,
0 mismatches.

~1.1 MB total. Have 11 more variants locally — kept this PR small
given Andrew's size concerns in apache#105.
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