You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iceberg.apache.org by bl...@apache.org on 2022/11/16 16:25:48 UTC

[iceberg] branch master updated: REST: Assign metadata UUID on create transaction (#6201)

This is an automated email from the ASF dual-hosted git repository.

blue pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iceberg.git


The following commit(s) were added to refs/heads/master by this push:
     new 6697129a31 REST: Assign metadata UUID on create transaction (#6201)
6697129a31 is described below

commit 6697129a314d98cb793601495f7ebb2ae000b40a
Author: Bryan Keller <br...@gmail.com>
AuthorDate: Wed Nov 16 08:25:43 2022 -0800

    REST: Assign metadata UUID on create transaction (#6201)
---
 core/src/main/java/org/apache/iceberg/MetadataUpdate.java     |  2 +-
 core/src/main/java/org/apache/iceberg/TableMetadata.java      | 11 +++++++++++
 .../main/java/org/apache/iceberg/rest/RESTSessionCatalog.java |  1 +
 3 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/core/src/main/java/org/apache/iceberg/MetadataUpdate.java b/core/src/main/java/org/apache/iceberg/MetadataUpdate.java
index 9159e0f58c..4671e54bad 100644
--- a/core/src/main/java/org/apache/iceberg/MetadataUpdate.java
+++ b/core/src/main/java/org/apache/iceberg/MetadataUpdate.java
@@ -41,7 +41,7 @@ public interface MetadataUpdate extends Serializable {
 
     @Override
     public void applyTo(TableMetadata.Builder metadataBuilder) {
-      throw new UnsupportedOperationException("Not implemented");
+      metadataBuilder.assignUUID(uuid);
     }
   }
 
diff --git a/core/src/main/java/org/apache/iceberg/TableMetadata.java b/core/src/main/java/org/apache/iceberg/TableMetadata.java
index 2f2671463e..afa2c7ac2d 100644
--- a/core/src/main/java/org/apache/iceberg/TableMetadata.java
+++ b/core/src/main/java/org/apache/iceberg/TableMetadata.java
@@ -915,6 +915,17 @@ public class TableMetadata implements Serializable {
       return this;
     }
 
+    public Builder assignUUID(String newUuid) {
+      Preconditions.checkArgument(newUuid != null, "Cannot set uuid to null");
+
+      if (!newUuid.equals(uuid)) {
+        this.uuid = newUuid;
+        changes.add(new MetadataUpdate.AssignUUID(uuid));
+      }
+
+      return this;
+    }
+
     public Builder upgradeFormatVersion(int newFormatVersion) {
       Preconditions.checkArgument(
           newFormatVersion <= SUPPORTED_TABLE_FORMAT_VERSION,
diff --git a/core/src/main/java/org/apache/iceberg/rest/RESTSessionCatalog.java b/core/src/main/java/org/apache/iceberg/rest/RESTSessionCatalog.java
index 8c5ce1d3ee..0b4edc9a84 100644
--- a/core/src/main/java/org/apache/iceberg/rest/RESTSessionCatalog.java
+++ b/core/src/main/java/org/apache/iceberg/rest/RESTSessionCatalog.java
@@ -691,6 +691,7 @@ public class RESTSessionCatalog extends BaseSessionCatalog
   private static List<MetadataUpdate> createChanges(TableMetadata meta) {
     ImmutableList.Builder<MetadataUpdate> changes = ImmutableList.builder();
 
+    changes.add(new MetadataUpdate.AssignUUID(meta.uuid()));
     changes.add(new MetadataUpdate.UpgradeFormatVersion(meta.formatVersion()));
 
     Schema schema = meta.schema();