Skip to content

[auto-merge] release/26.04 to main [skip ci] [bot] - #14579

Merged
nvauto merged 1 commit into
mainfrom
release/26.04
Apr 9, 2026
Merged

[auto-merge] release/26.04 to main [skip ci] [bot]#14579
nvauto merged 1 commit into
mainfrom
release/26.04

Conversation

@nvauto

@nvauto nvauto commented Apr 9, 2026

Copy link
Copy Markdown
Collaborator

auto-merge triggered by github actions on release/26.04 to create a PR keeping main up-to-date. If this PR is unable to be merged due to conflicts, it will remain open until manually fix.

…ctors [databricks] (#14572)

Fixes #14564.

### Description

The native Parquet footer reader filters row groups by byte range in C++
before serialization. When `ParquetFileReader.readFooter` deserializes
the result, it computes row index offsets assuming those row groups are
the entire file. For splits that contain only a subset of the file's row
groups, the offsets are wrong (e.g. always 0 for a single surviving row
group). This breaks deletion vector filtering which relies on
file-global row indices — some deletions are missed and others are
applied to the wrong rows.

The JAVA footer reader does not have this issue because parquet-mr's
`RangeMetadataFilter` computes offsets from all row groups in the file
before filtering by byte range.

This PR uses the new `ParquetFooter.getRowIndexOffsets` JNI method
(NVIDIA/cudf-spark-jni#4445) to retrieve
correct file-global offsets computed from all row groups before
byte-range filtering, and apply them to the deserialized `BlockMetaData`
objects after `ParquetFileReader.readFooter` reads the footer.

Added `test_delta_deletion_vector_native_footer_multi_row_group` which
demonstrates the bug. It creates a single-file Delta table with multiple
row groups, deletes rows in later row groups, and forces per-row-group
splits. It verifies whether the task assigned a non-first-row-group
split correctly computes the row group offsets.

### Checklists

Documentation
- [ ] Updated for new or modified user-facing features or behaviors
- [x] No user-facing change

Testing
- [x] Added or modified tests to cover new code paths
- [ ] Covered by existing tests
(Please provide the names of the existing tests in the PR description.)
- [ ] Not required

Performance
- [ ] Tests ran and results are added in the PR description
- [ ] Issue filed with a link in the PR description
- [x] Not required

---------

Signed-off-by: Jihoon Son <ghoonson@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
@nvauto
nvauto merged commit a6038fc into main Apr 9, 2026
@nvauto

nvauto commented Apr 9, 2026

Copy link
Copy Markdown
Collaborator Author

SUCCESS - auto-merge

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.

2 participants