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

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


The following commit(s) were added to refs/heads/main by this push:
     new d95d9f0ad8 Core, REST: Add support for overwrite in 
RegisterTableRequest (#15248)
d95d9f0ad8 is described below

commit d95d9f0ad8baacd1a61331be9c5e09587a89f1f2
Author: Alexandre Dutra <[email protected]>
AuthorDate: Mon Feb 9 19:07:04 2026 +0100

    Core, REST: Add support for overwrite in RegisterTableRequest (#15248)
---
 .../rest/requests/RegisterTableRequest.java        |  5 +++++
 .../rest/requests/RegisterTableRequestParser.java  | 18 ++++++++++++----
 .../requests/TestRegisterTableRequestParser.java   | 24 ++++++++++++++++++++++
 3 files changed, 43 insertions(+), 4 deletions(-)

diff --git 
a/core/src/main/java/org/apache/iceberg/rest/requests/RegisterTableRequest.java 
b/core/src/main/java/org/apache/iceberg/rest/requests/RegisterTableRequest.java
index 33b37dae24..e164a7ec51 100644
--- 
a/core/src/main/java/org/apache/iceberg/rest/requests/RegisterTableRequest.java
+++ 
b/core/src/main/java/org/apache/iceberg/rest/requests/RegisterTableRequest.java
@@ -28,6 +28,11 @@ public interface RegisterTableRequest extends RESTRequest {
 
   String metadataLocation();
 
+  @Value.Default
+  default boolean overwrite() {
+    return false;
+  }
+
   @Override
   default void validate() {
     // nothing to validate as it's not possible to create an invalid instance
diff --git 
a/core/src/main/java/org/apache/iceberg/rest/requests/RegisterTableRequestParser.java
 
b/core/src/main/java/org/apache/iceberg/rest/requests/RegisterTableRequestParser.java
index 961b6c185b..3d18b03453 100644
--- 
a/core/src/main/java/org/apache/iceberg/rest/requests/RegisterTableRequestParser.java
+++ 
b/core/src/main/java/org/apache/iceberg/rest/requests/RegisterTableRequestParser.java
@@ -28,6 +28,7 @@ public class RegisterTableRequestParser {
 
   private static final String NAME = "name";
   private static final String METADATA_LOCATION = "metadata-location";
+  private static final String OVERWRITE = "overwrite";
 
   private RegisterTableRequestParser() {}
 
@@ -47,6 +48,10 @@ public class RegisterTableRequestParser {
     gen.writeStringField(NAME, request.name());
     gen.writeStringField(METADATA_LOCATION, request.metadataLocation());
 
+    if (request.overwrite()) {
+      gen.writeBooleanField(OVERWRITE, request.overwrite());
+    }
+
     gen.writeEndObject();
   }
 
@@ -61,9 +66,14 @@ public class RegisterTableRequestParser {
     String name = JsonUtil.getString(NAME, json);
     String metadataLocation = JsonUtil.getString(METADATA_LOCATION, json);
 
-    return ImmutableRegisterTableRequest.builder()
-        .name(name)
-        .metadataLocation(metadataLocation)
-        .build();
+    ImmutableRegisterTableRequest.Builder builder =
+        
ImmutableRegisterTableRequest.builder().name(name).metadataLocation(metadataLocation);
+
+    Boolean overwrite = JsonUtil.getBoolOrNull(OVERWRITE, json);
+    if (overwrite != null) {
+      builder.overwrite(overwrite);
+    }
+
+    return builder.build();
   }
 }
diff --git 
a/core/src/test/java/org/apache/iceberg/rest/requests/TestRegisterTableRequestParser.java
 
b/core/src/test/java/org/apache/iceberg/rest/requests/TestRegisterTableRequestParser.java
index 50a47df974..d7bbb3db40 100644
--- 
a/core/src/test/java/org/apache/iceberg/rest/requests/TestRegisterTableRequestParser.java
+++ 
b/core/src/test/java/org/apache/iceberg/rest/requests/TestRegisterTableRequestParser.java
@@ -76,4 +76,28 @@ public class TestRegisterTableRequestParser {
     
assertThat(RegisterTableRequestParser.toJson(RegisterTableRequestParser.fromJson(json),
 true))
         .isEqualTo(expectedJson);
   }
+
+  @Test
+  public void roundTripSerdeWithOverwrite() {
+    RegisterTableRequest request =
+        ImmutableRegisterTableRequest.builder()
+            .name("table_1")
+            .metadataLocation(
+                
"file://tmp/NS/test_tbl/metadata/00000-d4f60d2f-2ad2-408b-8832-0ed7fbd851ee.metadata.json")
+            .overwrite(true)
+            .build();
+
+    String expectedJson =
+        "{\n"
+            + "  \"name\" : \"table_1\",\n"
+            + "  \"metadata-location\" : 
\"file://tmp/NS/test_tbl/metadata/00000-d4f60d2f-2ad2-408b-8832-0ed7fbd851ee.metadata.json\",\n"
+            + "  \"overwrite\" : true\n"
+            + "}";
+
+    String json = RegisterTableRequestParser.toJson(request, true);
+    assertThat(json).isEqualTo(expectedJson);
+
+    
assertThat(RegisterTableRequestParser.toJson(RegisterTableRequestParser.fromJson(json),
 true))
+        .isEqualTo(expectedJson);
+  }
 }

Reply via email to