Skip to content

Commit aa3c9d3

Browse files
feat(parquet): add BloomFilterPropertiesBuilder (#9877)
# Which issue does this PR close? - Closes #9667. # Rationale for this change No builder exists for `BloomFilterProperties`, so callers write `BloomFilterProperties { fpp, ndv }` literals — pinning field layout to the API and skipping fpp validation. `WriterPropertiesBuilder` also has no setter that takes a built `BloomFilterProperties`. # What changes are included in this PR? - `BloomFilterPropertiesBuilder` (`with_fpp`, `with_max_ndv`, `build`, `try_build`). Two entry points per discussion in the issue: `BloomFilterProperties::builder()` and `BloomFilterPropertiesBuilder::new()`. - `WriterPropertiesBuilder::set_bloom_filter_properties` + per-column variant. NDV from the passed-in struct is honoured (no row-group-size override). For dynamic NDV, keep using `set_bloom_filter_enabled` / `set_bloom_filter_fpp`. - Renamed `set_bloom_filter_ndv` → `set_bloom_filter_max_ndv` (also per-column). Old names are `#[deprecated(since = "59.0.0")]` aliases. # Are these changes tested? Yes — 10 new unit tests + a doc-test. # Are there any user-facing changes? Additive only. `set_bloom_filter_ndv` (and per-column) emit a deprecation warning pointing to `_max_ndv`.
1 parent 5d464b5 commit aa3c9d3

3 files changed

Lines changed: 341 additions & 17 deletions

File tree

parquet/src/arrow/arrow_writer/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2798,7 +2798,7 @@ mod tests {
27982798
.set_bloom_filter_enabled(bloom_filter)
27992799
.set_bloom_filter_position(bloom_filter_position);
28002800
if let Some(ndv) = bloom_filter_ndv {
2801-
builder = builder.set_bloom_filter_ndv(ndv);
2801+
builder = builder.set_bloom_filter_max_ndv(ndv);
28022802
}
28032803
let props = builder.build();
28042804

parquet/src/bin/parquet-rewrite.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,8 @@ fn main() {
384384
writer_properties_builder = writer_properties_builder.set_bloom_filter_fpp(value);
385385
}
386386
if let Some(value) = args.bloom_filter_ndv {
387-
writer_properties_builder = writer_properties_builder.set_bloom_filter_ndv(value);
387+
writer_properties_builder =
388+
writer_properties_builder.set_bloom_filter_max_ndv(value);
388389
}
389390
if let Some(value) = args.bloom_filter_position {
390391
writer_properties_builder =

0 commit comments

Comments
 (0)