manuzhang opened a new pull request, #994:
URL: https://github.com/apache/iceberg-cpp/pull/994
## What
Move each `TableScan` subclass into its own header and source file:
- `DataTableScan` → `iceberg/data_table_scan.{h,cc}`, together with the scan
report helpers that only it uses.
- `IncrementalAppendScan` → `iceberg/incremental_append_scan.{h,cc}`.
- `IncrementalChangelogScan` → `iceberg/incremental_changelog_scan.{h,cc}`.
`iceberg/table_scan.{h,cc}` keep `TableScan`, `IncrementalScan`,
`TableScanBuilder`, the scan task types and `TableScanContext`. The
`extern template` declaration of each `TableScanBuilder` specialization moves
next to its scan class, while the explicit instantiations stay in
`table_scan.cc` with the builder's member definitions. `ResolvePlanFiles`
stays
in `table_scan.cc` with the snapshot range helpers it calls and is explicitly
instantiated for `FileScanTask` and `ChangelogScanTask`.
The moved code is unchanged. `cpp20_compatibility_internal.h` is regenerated
to
include the new public headers, and callers include the header of the scan
they
use.
## Why
`table_scan.cc` held the planning logic of every scan type next to the
builder
and the task types, close to 1,000 lines, and each new planning feature grows
it further. One file per scan keeps each scan's planning logic in one place
and the shared scan machinery in `table_scan`.
## Behavior change
`iceberg/table_scan.h` no longer declares `DataTableScan`,
`IncrementalAppendScan` or `IncrementalChangelogScan`. Code that uses them
beyond the forward declarations in `iceberg/type_fwd.h`, for example to call
`Build()` and `PlanFiles()`, must include `iceberg/data_table_scan.h`,
`iceberg/incremental_append_scan.h` or
`iceberg/incremental_changelog_scan.h`.
## Testing
`scan_test` passes, and `cpp20_compatibility_test` builds with the
regenerated
public header list.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
--
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]