Skip to content

fix(storage): keep the data page limit out of the public API - #59

Merged
vyncint merged 1 commit into
mainfrom
fix/semver-data-page-rows
Sep 21, 2026
Merged

vyncint merged 1 commit into
mainfrom
fix/semver-data-page-rows

Conversation

@vyncint

@vyncint vyncint commented Sep 21, 2026

Copy link
Copy Markdown
Owner

The v0.1.4 release run failed at cargo-semver-checks and the publish jobs were skipped — nothing reached crates.io, and the tag is deleted.

A pub struct that could be exhaustively constructed with a literal using only
public API has a new pub field, breaking existing exhaustive literals.
  field ParquetWriteOptions.data_page_rows
Summary  semver requires new major version

My error, added while doing #43. Any caller writing ParquetWriteOptions { .. } without ..Default::default() would stop compiling, and 0.1.3 → 0.1.4 is a patch.

The cause was process. Before tagging I ran fmt, clippy, the full suite, cargo deny, crate-metadata and skill-version — and skipped cargo semver-checks, because it is a CI action rather than one of the .github/scripts I had been working through. It was installed locally the whole time.

The fix: a 1,000-row data page limit is a test's requirement, not a lake's, so it does not belong on the public struct. Reverted, and the page-index test builds its own WriterProperties, matching write_parquet in every other respect. The proof is unchanged — 198,192 of 200,000 rows pruned with no row group pruned.

cargo semver-checks -p oxidelake-storage → no semver update required. Full workspace suite 36/36, clippy, fmt, changelog extracts.

For #41: if ParquetWriteOptions were #[non_exhaustive] this would have been routine. That is a 0.2.0 change.

`cargo-semver-checks` failed the v0.1.4 release: `ParquetWriteOptions` is
a struct callers can build with a literal, so adding a public
`data_page_rows` field breaks every exhaustive literal — a major change,
and this is a patch. The gate did its job; nothing was published and the
tag is deleted.

The field was only ever there to make page-index pruning observable, and
a 1,000-row data page limit is a test's requirement rather than a lake's.
The test builds its own `WriterProperties` with the `parquet` crate
instead, matching what `write_parquet` sets in every other respect —
PARQUET_2_0, page statistics, uncompressed, one row group for the file.
The proof is unchanged: 198,192 of 200,000 rows pruned by the index with
no row group pruned.

`cargo semver-checks -p oxidelake-storage` now reports no update required.
Worth noting for #41: were `ParquetWriteOptions` `#[non_exhaustive]`,
adding a field would be routine — which is the point of that issue, and a
0.2.0 change.

Refs #43

Signed-off-by: Vyncint Ng <115854244+vyncint@users.noreply.github.com>
@vyncint
vyncint merged commit 6f1d930 into main Sep 21, 2026
17 checks passed
@vyncint
vyncint deleted the fix/semver-data-page-rows branch September 21, 2026 00:21
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