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


##########
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:
   Thank you to point out that earlier conversation!
   I don't think that there is too much extra the caller has to figure out 
itself to decide the desired state. `REPLACED` creation is already designs such 
as the caller has to know that such a state is desired. Since `REPLACED` and 
`MODIFIED` are hand-in-hand we the caller knows that if explicitly creating a 
`REPLACED` then an explicit creation of `MODIFIED` could be done.
   So the called won do this: Let's create a `REPLACED` and then something else 
that the builder gives me.



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