anoopj commented on code in PR #16408:
URL: https://github.com/apache/iceberg/pull/16408#discussion_r3327558263


##########
core/src/main/java/org/apache/iceberg/TrackingStruct.java:
##########
@@ -249,95 +254,43 @@ protected <T> void internalSet(int pos, T value) {
     }
   }
 
-  static Builder builder() {
-    return new Builder();
+  /** Creates a builder for a newly added file in the given snapshot. */
+  static TrackingBuilder added(long snapshotId) {
+    return new TrackingBuilder(snapshotId);
+  }
+
+  /**
+   * Creates a builder for a tracking row derived from {@code source} at the 
current snapshot.
+   *
+   * <p>Without MODIFIED status, this produces an EXISTING row. Once MODIFIED 
lands, the status will
+   * be auto-derived from the source, the snapshot, and which mutation methods 
are called.
+   */
+  // TODO: when MODIFIED is added, derive status from source + 
currentSnapshotId + mutations.
+  static TrackingBuilder builder(Tracking source, long currentSnapshotId) {

Review Comment:
   Great point! Indeed this was the design this PR followed in the initial 
iterations. @rdblue suggested making the transition from `EXISTING` to 
`MODIFIED` (or back) to be computed by the builder (in the event of DV/column 
update) instead of the caller having to figure out state transition.  The 
overall goal was to consolidate the logic inside the builder as much as 
possible to make it harder for writers to produce incorrect data. 



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