You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iceberg.apache.org by et...@apache.org on 2023/06/26 07:19:17 UTC

[iceberg] branch master updated: Core: Add create(..) method to UpdateTableRequest (#7867)

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

etudenhoefner 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 fb929437af Core: Add create(..) method to UpdateTableRequest (#7867)
fb929437af is described below

commit fb929437af7f25777d33f5dfe6d14698f09e511e
Author: Eduard Tudenhoefner <et...@gmail.com>
AuthorDate: Mon Jun 26 09:19:09 2023 +0200

    Core: Add create(..) method to UpdateTableRequest (#7867)
---
 .../java/org/apache/iceberg/catalog/TableCommit.java    | 17 +++++++++++++++++
 .../org/apache/iceberg/rest/RESTSessionCatalog.java     |  2 +-
 .../iceberg/rest/requests/UpdateTableRequest.java       |  9 ++++++++-
 .../iceberg/rest/requests/UpdateTableRequestParser.java |  2 +-
 .../requests/TestCommitTransactionRequestParser.java    |  6 +++---
 .../rest/requests/TestUpdateTableRequestParser.java     |  4 ++--
 6 files changed, 32 insertions(+), 8 deletions(-)

diff --git a/core/src/main/java/org/apache/iceberg/catalog/TableCommit.java b/core/src/main/java/org/apache/iceberg/catalog/TableCommit.java
index a90df56c84..26f67a012b 100644
--- a/core/src/main/java/org/apache/iceberg/catalog/TableCommit.java
+++ b/core/src/main/java/org/apache/iceberg/catalog/TableCommit.java
@@ -26,6 +26,12 @@ import org.apache.iceberg.UpdateRequirements;
 import org.apache.iceberg.relocated.com.google.common.base.Preconditions;
 import org.immutables.value.Value;
 
+/**
+ * This represents a commit to be applied for a single table with {@link UpdateRequirement}s to be
+ * validated and {@link MetadataUpdate}s that have been applied. The {@link UpdateRequirement}s and
+ * {@link MetadataUpdate}s can be derived from table's base and updated {@link TableMetadata} when
+ * using {@link TableCommit#create(TableIdentifier, TableMetadata, TableMetadata)}.
+ */
 @Value.Immutable
 public interface TableCommit {
   TableIdentifier identifier();
@@ -34,6 +40,17 @@ public interface TableCommit {
 
   List<MetadataUpdate> updates();
 
+  /**
+   * This creates a {@link TableCommit} instance to be applied for a single table with {@link
+   * UpdateRequirement}s to be validated and {@link MetadataUpdate}s that have been applied.
+   *
+   * @param identifier The {@link TableIdentifier} to create the {@link TableCommit} for.
+   * @param base The base {@link TableMetadata} where {@link UpdateRequirement}s are derived from
+   *     and used for validation.
+   * @param updated The updated {@link TableMetadata} where {@link MetadataUpdate}s that have been
+   *     applied are derived from.
+   * @return A {@link TableCommit} instance to be applied for a single table
+   */
   static TableCommit create(TableIdentifier identifier, TableMetadata base, TableMetadata updated) {
     Preconditions.checkArgument(null != identifier, "Invalid table identifier: null");
     Preconditions.checkArgument(null != base && null != updated, "Invalid table metadata: null");
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 9da4e6e0fb..884e35dd62 100644
--- a/core/src/main/java/org/apache/iceberg/rest/RESTSessionCatalog.java
+++ b/core/src/main/java/org/apache/iceberg/rest/RESTSessionCatalog.java
@@ -926,7 +926,7 @@ public class RESTSessionCatalog extends BaseSessionCatalog
 
     for (TableCommit commit : commits) {
       tableChanges.add(
-          new UpdateTableRequest(commit.identifier(), commit.requirements(), commit.updates()));
+          UpdateTableRequest.create(commit.identifier(), commit.requirements(), commit.updates()));
     }
 
     client.post(
diff --git a/core/src/main/java/org/apache/iceberg/rest/requests/UpdateTableRequest.java b/core/src/main/java/org/apache/iceberg/rest/requests/UpdateTableRequest.java
index 3249acfc8f..088875d472 100644
--- a/core/src/main/java/org/apache/iceberg/rest/requests/UpdateTableRequest.java
+++ b/core/src/main/java/org/apache/iceberg/rest/requests/UpdateTableRequest.java
@@ -48,7 +48,7 @@ public class UpdateTableRequest implements RESTRequest {
     this.updates = updates;
   }
 
-  public UpdateTableRequest(
+  UpdateTableRequest(
       TableIdentifier identifier,
       List<org.apache.iceberg.UpdateRequirement> requirements,
       List<MetadataUpdate> updates) {
@@ -79,6 +79,13 @@ public class UpdateTableRequest implements RESTRequest {
         .toString();
   }
 
+  public static UpdateTableRequest create(
+      TableIdentifier identifier,
+      List<org.apache.iceberg.UpdateRequirement> requirements,
+      List<MetadataUpdate> updates) {
+    return new UpdateTableRequest(identifier, requirements, updates);
+  }
+
   /**
    * @deprecated will be removed in 1.5.0, use {@link
    *     org.apache.iceberg.UpdateRequirements#forCreateTable(List)} instead.
diff --git a/core/src/main/java/org/apache/iceberg/rest/requests/UpdateTableRequestParser.java b/core/src/main/java/org/apache/iceberg/rest/requests/UpdateTableRequestParser.java
index 043921f2fa..e2a8f8b307 100644
--- a/core/src/main/java/org/apache/iceberg/rest/requests/UpdateTableRequestParser.java
+++ b/core/src/main/java/org/apache/iceberg/rest/requests/UpdateTableRequestParser.java
@@ -105,6 +105,6 @@ public class UpdateTableRequestParser {
       updatesNode.forEach(update -> updates.add(MetadataUpdateParser.fromJson(update)));
     }
 
-    return new UpdateTableRequest(identifier, requirements, updates);
+    return UpdateTableRequest.create(identifier, requirements, updates);
   }
 }
diff --git a/core/src/test/java/org/apache/iceberg/rest/requests/TestCommitTransactionRequestParser.java b/core/src/test/java/org/apache/iceberg/rest/requests/TestCommitTransactionRequestParser.java
index 6b61efbf17..c10e25d6e6 100644
--- a/core/src/test/java/org/apache/iceberg/rest/requests/TestCommitTransactionRequestParser.java
+++ b/core/src/test/java/org/apache/iceberg/rest/requests/TestCommitTransactionRequestParser.java
@@ -81,7 +81,7 @@ public class TestCommitTransactionRequestParser {
   public void roundTripSerde() {
     String uuid = "2cc52516-5e73-41f2-b139-545d41a4e151";
     UpdateTableRequest commitTableRequestOne =
-        new UpdateTableRequest(
+        UpdateTableRequest.create(
             TableIdentifier.of("ns1", "table1"),
             ImmutableList.of(
                 new UpdateRequirement.AssertTableUUID(uuid),
@@ -90,7 +90,7 @@ public class TestCommitTransactionRequestParser {
                 new MetadataUpdate.AssignUUID(uuid), new MetadataUpdate.SetCurrentSchema(23)));
 
     UpdateTableRequest commitTableRequestTwo =
-        new UpdateTableRequest(
+        UpdateTableRequest.create(
             TableIdentifier.of("ns1", "table2"),
             ImmutableList.of(
                 new UpdateRequirement.AssertDefaultSpecID(4),
@@ -160,7 +160,7 @@ public class TestCommitTransactionRequestParser {
     CommitTransactionRequest commitTxRequest =
         new CommitTransactionRequest(
             ImmutableList.of(
-                new UpdateTableRequest(
+                UpdateTableRequest.create(
                     TableIdentifier.of("ns1", "table1"), ImmutableList.of(), ImmutableList.of())));
 
     String json =
diff --git a/core/src/test/java/org/apache/iceberg/rest/requests/TestUpdateTableRequestParser.java b/core/src/test/java/org/apache/iceberg/rest/requests/TestUpdateTableRequestParser.java
index 94599f9d1d..9522801cad 100644
--- a/core/src/test/java/org/apache/iceberg/rest/requests/TestUpdateTableRequestParser.java
+++ b/core/src/test/java/org/apache/iceberg/rest/requests/TestUpdateTableRequestParser.java
@@ -120,7 +120,7 @@ public class TestUpdateTableRequestParser {
   public void roundTripSerde() {
     String uuid = "2cc52516-5e73-41f2-b139-545d41a4e151";
     UpdateTableRequest request =
-        new UpdateTableRequest(
+        UpdateTableRequest.create(
             TableIdentifier.of("ns1", "table1"),
             ImmutableList.of(
                 new org.apache.iceberg.UpdateRequirement.AssertTableUUID(uuid),
@@ -198,7 +198,7 @@ public class TestUpdateTableRequestParser {
   @Test
   public void emptyRequirementsAndUpdates() {
     UpdateTableRequest request =
-        new UpdateTableRequest(
+        UpdateTableRequest.create(
             TableIdentifier.of("ns1", "table1"), ImmutableList.of(), ImmutableList.of());
 
     String json =