diff --git a/core/src/main/java/org/apache/iceberg/MetadataUpdate.java b/core/src/main/java/org/apache/iceberg/MetadataUpdate.java index 9159e0f58c3c..4671e54bad4e 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 String uuid() { @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 2f2671463ee5..afa2c7ac2d57 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 Builder assignUUID() { 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 8c5ce1d3ee96..0b4edc9a84f0 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 @@ private LoadTableResponse stageCreate() { private static List createChanges(TableMetadata meta) { ImmutableList.Builder changes = ImmutableList.builder(); + changes.add(new MetadataUpdate.AssignUUID(meta.uuid())); changes.add(new MetadataUpdate.UpgradeFormatVersion(meta.formatVersion())); Schema schema = meta.schema();