kamcheungting-db opened a new pull request, #1002: URL: https://github.com/apache/iceberg-cpp/pull/1002
## Summary Part 2a of split and parallel scans. Builds on #976, which added validated `FileScanTask` byte ranges but made `FileScanTaskReader` reject partial tasks. This PR lets the reader honor ranges for Parquet files. > **Depends on #976.** Until it merges, this diff also contains #976's two commits. Please review only the last commit, `feat(scan): read Parquet files by task range`. - pass task ranges from `FileScanTaskReader` to the Parquet reader, while keeping the full file size available for reading the footer - assign each row group to a range by its first column's starting page, so assignment works when optional row-group offsets are missing and adjacent ranges read every row exactly once - keep row positions and inherited row IDs relative to the whole file, so position deletes and row lineage stay correct (even when page offsets are out of order) - recheck task bounds when opening a file, skip empty row groups, and reject invalid page offsets - keep rejecting partial tasks for formats that do not support range reads yet ## Testing Adds tests for split boundaries, deletes, row lineage, changed file sizes, and a Parquet file without row-group offsets (`split-without-row-group-offsets.parquet`). - `ctest --test-dir build-clang -R "^(data_test|parquet_test|scan_test)$" --output-on-failure` - `clang-format --dry-run --Werror` on the changed C++ sources - `git diff --check` This pull request and its description were written by Isaac. -- 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: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
