lishuxu opened a new pull request, #741:
URL: https://github.com/apache/iceberg-cpp/pull/741

   Summary:
   Add a production OverwriteFiles builder that brings iceberg-cpp to semantic 
parity with Java's BaseOverwriteFiles. It supports explicit file replacement 
(DeleteFile + AddFile) and range-based replacement (OverwriteByRowFilter + 
AddFile) with the same family of pre-commit concurrency validations. The 
builder is a thin subclass of MergingSnapshotUpdate and reuses the existing 
commit kernel (Apply/summary/retry/cleanup) unchanged.
   
   Changes:
   - New OverwriteFiles class (src/iceberg/update/overwrite_files.{h,cc}) and 
Table::NewOverwrite() / Transaction::NewOverwrite() entry points.
   - Builder surface: AddFile, DeleteFile, bulk DeleteFiles, 
OverwriteByRowFilter, ValidateFromSnapshot, ConflictDetectionFilter, 
ValidateNoConflictingData, ValidateNoConflictingDeletes, 
ValidateAddedFilesMatchOverwriteFilter, WithCaseSensitivity.
   - Validate(): conflict-filter resolution, concurrent add/delete conflict 
checks, and strict added-file range validation (projection + 
StrictMetricsEvaluator).
   - Tests (overwrite_files_test.cc, 45 cases) and CMake/meson wiring.
   
   Behavior alignment with Java:
   - operation() returns append/delete/overwrite from builder content.
   - Conflict-filter resolution mirrors BaseOverwriteFiles (explicit -> row 
filter -> AlwaysTrue); replaced-file delete checks honor 
ConflictDetectionFilter.
   - Strict added-file validation uses a single DataSpec(), rejecting 
multi-spec and empty added-file sets.
   - Deviations: public WithCaseSensitivity (vs caseSensitive) to avoid a 
protected-name clash; ValidateFromSnapshot rejects negative ids early.


-- 
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