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]

Reply via email to