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 =