nastra commented on code in PR #10861:
URL: https://github.com/apache/iceberg/pull/10861#discussion_r1706557134


##########
core/src/main/java/org/apache/iceberg/TableMetadata.java:
##########
@@ -1004,24 +1004,28 @@ private Builder setInitialFormatVersion(int 
newFormatVersion) {
       return this;
     }
 
-    public Builder upgradeFormatVersion(int newFormatVersion) {
+    public Builder upgradeFormatVersion(int targetFormatVersion) {
       Preconditions.checkArgument(
-          newFormatVersion <= SUPPORTED_TABLE_FORMAT_VERSION,
+          targetFormatVersion <= SUPPORTED_TABLE_FORMAT_VERSION,
           "Cannot upgrade table to unsupported format version: v%s (supported: 
v%s)",
-          newFormatVersion,
+          targetFormatVersion,
           SUPPORTED_TABLE_FORMAT_VERSION);
       Preconditions.checkArgument(
-          newFormatVersion >= formatVersion,
+          targetFormatVersion >= formatVersion,
           "Cannot downgrade v%s table to v%s",
           formatVersion,
-          newFormatVersion);
+          targetFormatVersion);
 
-      if (newFormatVersion == formatVersion) {
+      if (targetFormatVersion == formatVersion) {
         return this;
       }
 
-      this.formatVersion = newFormatVersion;
-      changes.add(new MetadataUpdate.UpgradeFormatVersion(newFormatVersion));
+      // register incremental version changes separately to ensure all upgrade 
requirements are met
+      for (int version = formatVersion + 1; version <= targetFormatVersion; 
version++) {
+        changes.add(new MetadataUpdate.UpgradeFormatVersion(version));

Review Comment:
   Is there currently any downside in doing an upgrade from 1 to 3 directly 
without having an internal upgrade to 2? I believe the only restriction we have 
is if you downgrade the version, but there aren't any other restrictions that 
would prevent us from going 1 -> 3 directly?
   Going 1 -> 3 direclty means that we don't have to create multiple changes of 
`MetadataUpdate.UpgradeFormatVersion` and not worry about a client potentially 
sending such an upgrade path out-of-order



-- 
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: issues-unsubscr...@iceberg.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org
For additional commands, e-mail: issues-h...@iceberg.apache.org

Reply via email to