zhang-arvin commented on PR #9363:
URL: https://github.com/apache/paimon/pull/9363#issuecomment-5616751034

   Thanks @JingsongLi - agreed, I'll adopt the single-`Snapshot` design 
(`rowIdCheckConflict(@Nullable Snapshot baseSnapshot)`) instead of the 
(snapshotId, snapshotUuid) pair. A few clarifications before I rework:
   
   1. **Lineage check placement**: should the lineage validation live in the 
base `ConflictDetection` (as part of the hook contract) or stay in 
`DataEvolutionConflictDetection` with the hook only exposing the setter? I read 
your 08-31 note as the latter - keeping data-evolution logic out of 
`FileStoreCommitImpl` - but want to confirm the hook boundary.
   2. **Legacy null-UUID snapshots**: you suggested full snapshot equality for 
legacy cases. Is `Snapshot.equals` sufficient, or should the equality be scoped 
to lineage-relevant fields (id, commit-kind sequence) to avoid rejecting valid 
history that differs only in stats?
   3. **Spark path**: I'll update both Spark common and Spark 4.0 MERGE to pass 
the captured `Snapshot` instead of `readSnapshot.id()`, and add an end-to-end 
rollback test (commit, rollback, reuse snapshot id, verify MERGE rejects). Any 
preference on where that test lives (spark-common vs flink)?
   
   I'll also move the lineage check ahead of the empty-checker fast path and 
avoid the snapshot cache for the recomparison.


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

Reply via email to