patch for multipage row - #4828
pmattione-nvidia merged 2 commits into
Conversation
Signed-off-by: Paul Mattione <pmattione@nvidia.com>
|
build |
Greptile SummaryThis PR backports upstream cuDF fix rapidsai/cudf#23241 to the release/26.06 branch as a patch file, replacing the empty
Confidence Score: 5/5Safe to merge — this is a clean, well-scoped backport of an already-reviewed upstream fix with a comprehensive regression test. The patch faithfully reproduces the upstream fix with no deviations: function signatures are correctly refactored, all call sites in the five changed CUDA files are updated consistently, and the new page_has_rows_to_process helper is logically equivalent to the old scattered checks while also handling the previously uncovered 0-row list-continuation-page case. The regression test covers the full read, chunked reads at multiple byte limits, and targeted skip_rows/num_rows windows that exercise exactly the boundary condition that triggered the OOB write. No files require special attention. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A["compute_page_offset_count\n(host-side buffer sizing)"] --> B{page_has_rows_to_process?}
B -->|"page.num_rows > 0\n& row range intersects"| C[Include page in buffer size]
B -->|"page.num_rows == 0\n& !has_repetition"| D[Skip page → return 0]
B -->|"page.num_rows == 0\n& has_repetition\n(0-row list continuation page)"| E{is_bounds_page OR\nis_page_contained?}
E -->|Yes| C
E -->|No| D
C --> F["GPU decode kernels\nwrite offsets to allocated buffer ✓"]
D --> G["GPU decode kernels\nstay within allocated buffer ✓"]
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
A["compute_page_offset_count\n(host-side buffer sizing)"] --> B{page_has_rows_to_process?}
B -->|"page.num_rows > 0\n& row range intersects"| C[Include page in buffer size]
B -->|"page.num_rows == 0\n& !has_repetition"| D[Skip page → return 0]
B -->|"page.num_rows == 0\n& has_repetition\n(0-row list continuation page)"| E{is_bounds_page OR\nis_page_contained?}
E -->|Yes| C
E -->|No| D
C --> F["GPU decode kernels\nwrite offsets to allocated buffer ✓"]
D --> G["GPU decode kernels\nstay within allocated buffer ✓"]
Reviews (2): Last reviewed commit: "delete noop patch" | Re-trigger Greptile |
Signed-off-by: Paul Mattione <pmattione@nvidia.com>
|
Can we hot fix in cudf instead? |
No they aren't interested in it. |
| diff --git a/cpp/tests/io/parquet_chunked_reader_test.cu b/cpp/tests/io/parquet_chunked_reader_test.cu | ||
| index 0b4910ef4ee..c131a9983e0 100644 | ||
| --- a/cpp/tests/io/parquet_chunked_reader_test.cu | ||
| +++ b/cpp/tests/io/parquet_chunked_reader_test.cu |
There was a problem hiding this comment.
I don't think tests are needed here, as we never run them. However, it's good to keep the redundant tests here to reproduce if needed.
|
Please do not rebase this into main/26.08 release but fix in cudf instead. |
It's already fixed in cudf 26.08, as per the above PR link. this pr is just for a patch to 26.06 release only. |
|
build |
1 similar comment
|
build |
This adds a patch to release 26.06 for applying this fix for a parquet decoding bug in cuDF.