You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@auron.apache.org by "Sigma-Ma (via GitHub)" <gi...@apache.org> on 2026/10/22 07:19:53 UTC

[PR] [AURON #2595] Fix decimal Bloom filter pruning for fixed-length Parqu… [auron]

Sigma-Ma opened a new pull request, #2605:
URL: https://github.com/apache/auron/pull/2605

   # Which issue does this PR close?
   
   Closes #2595.
   
   # Rationale for this change
   
   Native Parquet Bloom filter pruning probes Decimal128 literals using all 16 bytes of the unscaled value. For FIXED_LEN_BYTE_ARRAY columns with a smaller declared width, these bytes differ from those hashed by the writer. This can incorrectly discard row groups containing matching values.
   
   # What changes are included in this PR?
   
   - Adapt https://github.com/apache/datafusion/pull/22995 to the vendored DataFusion 49 implementation.
   - Carry the column's declared byte width into Bloom filter probes and use that width when encoding Decimal128 literals.
   - Retain row groups conservatively for unsupported widths.
   - Add regression coverage for widths 1, 2, 4, 8, 9, 12 and 16, including different scales, positive and negative precision limits, zero, missing values, nulls and files without Bloom filters.
   - Verify conservative fallback for a 17-byte column.
   
   # Are there any user-facing changes?
   
   This fixes native decimal Bloom filter pruning when a decimal predicate reaches that path. There are no API or configuration changes.
   
   Existing decimal planner guards and the default Bloom filter setting remain unchanged. Enabling decimal pruning for Iceberg is outside this PR.
   
   # How was this patch tested?
   
   Ran locally:
   
   ```bash
   cargo test --locked -p datafusion-ext-plans
   
   cargo clippy --locked -p datafusion-ext-plans --test parquet_bloom_pruning -- -D warnings
   
   cargo fmt --all -- --check
   
   ./dev/reformat --check
   ```
   
   The formatting script was run with JDK 8 and JDK 17 configured.
   
   Results:
   - 191 unit tests, 2 integration tests and 1 doc test passed; 3 tests ignored.
   - The main decimal regression test checks 252 predicate combinations.
   - Regression assertions cover statistics retention, Bloom pruning, pruning metrics and matching rows compared with an unpruned read.
   - Clippy and formatting checks passed.
   
   Spark SQL end-to-end tests and remote CI have not been run.
   
   # Was this patch authored or co-authored using generative AI tooling?
   
   - [x] Yes
   - [ ] No
   
   Generated-by: OpenAI Codex (GPT-6)
   
   ASF guidance: https://www.apache.org/legal/generative-tooling.html


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@auron.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org