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);
+ }
}