kamcheungting-db opened a new pull request, #1032: URL: https://github.com/apache/iceberg-cpp/pull/1032
Allows `FileScanTaskReader` to read Parquet byte ranges created by the task-range API in #976. Each split selects row groups by midpoint, matching Java Iceberg, while `_pos` and `_row_id` remain relative to the whole file so position deletes and row lineage continue to work. Supersedes #1002. Based on `main`, which includes #976. The reader handles missing row-group offsets and noncontiguous selections, skips empty row groups, and validates page offsets and compressed sizes. Task bounds are checked again when opening; partial reads for other formats return `NotSupported`. Removes the redundant `FileScanTask::Range::file_size` field and uses the data file's size for row estimates, with a guard for nonpositive sizes. Tests cover split coverage, midpoint boundaries, whole-file row positions and row IDs, deletes, missing and out-of-order offsets, invalid metadata, and changed file sizes. Validation: - Built `scan_test` and `data_test`; both suites passed (329 tests passed, 10 skipped). - Changed C++ files passed `clang-format --dry-run --Werror` with clang-format 20.1.8; `git diff --check` passed. - The Parquet reader compiled, but the `parquet_test` target is blocked by an unchanged test from `main`: `row_number_reader_test.cc:192` uses `std::ranges::iota`, which the local clang 18/libc++ toolchain does not provide. The Parquet suite has not run on this rebased version. - Attempted `pre-commit`; the tool is unavailable locally and installation failed because PyPI DNS resolution failed, so its hooks have not run. -- 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]
