This is an automated email from the ASF dual-hosted git repository.
yuqi4733 pushed a commit to branch branch-lance-namepspace-dev
in repository https://gitbox.apache.org/repos/asf/gravitino.git
The following commit(s) were added to refs/heads/branch-lance-namepspace-dev by
this push:
new 45c2dbcda7 bugfix[lance]: fix lance register table endpoint (#9093)
45c2dbcda7 is described below
commit 45c2dbcda71f9f81fcfafe6d5d752c63ed9da0fb
Author: Junda Yang <[email protected]>
AuthorDate: Wed Nov 12 17:29:05 2025 -0800
bugfix[lance]: fix lance register table endpoint (#9093)
### What changes were proposed in this pull request?
set `props.put("register", "true")` in lance rest server register table
api, which will be passed to GenericLakehouseCatalogOperations -
https://github.com/apache/gravitino/blob/d724f2e5226cb7348803b8ade9821a030472aa40/catalogs/catalog-generic-lakehouse/src/main/java/org/apache/gravitino/catalog/lakehouse/GenericLakehouseCatalogOperations.java#L282,
so it only register the table but not creating physical table location.
### Why are the changes needed?
Without `props.put("register", "true");`, Lance catalog will actually
creates the table on the physical storage location.
### Does this PR introduce _any_ user-facing change?
No.
### How was this patch tested?
Unit test
---
.../lance/service/rest/LanceTableOperations.java | 1 +
.../service/rest/TestLanceNamespaceOperations.java | 41 ++++++++++++++++++++++
2 files changed, 42 insertions(+)
diff --git
a/lance/lance-rest-server/src/main/java/org/apache/gravitino/lance/service/rest/LanceTableOperations.java
b/lance/lance-rest-server/src/main/java/org/apache/gravitino/lance/service/rest/LanceTableOperations.java
index 290730f39a..bbef8e3b6a 100644
---
a/lance/lance-rest-server/src/main/java/org/apache/gravitino/lance/service/rest/LanceTableOperations.java
+++
b/lance/lance-rest-server/src/main/java/org/apache/gravitino/lance/service/rest/LanceTableOperations.java
@@ -162,6 +162,7 @@ public class LanceTableOperations {
? Maps.newHashMap()
: Maps.newHashMap(registerTableRequest.getProperties());
props.put(LANCE_LOCATION, registerTableRequest.getLocation());
+ props.put("register", "true");
ModeEnum mode = registerTableRequest.getMode();
RegisterTableResponse response =
diff --git
a/lance/lance-rest-server/src/test/java/org/apache/gravitino/lance/service/rest/TestLanceNamespaceOperations.java
b/lance/lance-rest-server/src/test/java/org/apache/gravitino/lance/service/rest/TestLanceNamespaceOperations.java
index efe1f90436..0fc4df9cfd 100644
---
a/lance/lance-rest-server/src/test/java/org/apache/gravitino/lance/service/rest/TestLanceNamespaceOperations.java
+++
b/lance/lance-rest-server/src/test/java/org/apache/gravitino/lance/service/rest/TestLanceNamespaceOperations.java
@@ -502,6 +502,47 @@ public class TestLanceNamespaceOperations extends
JerseyTest {
Assertions.assertEquals(RuntimeException.class.getSimpleName(),
errorResp.getType());
}
+ @Test
+ void testRegisterTableSetsRegisterPropertyToTrue() {
+ String tableIds = "catalog.scheme.register_table_with_property";
+ String delimiter = ".";
+
+ // Reset mock to clear any previous test state
+ Mockito.reset(tableOps);
+
+ // Test that the "register" property is set to "true"
+ RegisterTableResponse registerTableResponse = new RegisterTableResponse();
+ registerTableResponse.setLocation("/path/to/registered_table");
+ registerTableResponse.setProperties(ImmutableMap.of("key", "value",
"register", "true"));
+ when(tableOps.registerTable(any(), any(), any(),
any())).thenReturn(registerTableResponse);
+
+ RegisterTableRequest tableRequest = new RegisterTableRequest();
+ tableRequest.setLocation("/path/to/registered_table");
+ tableRequest.setMode(RegisterTableRequest.ModeEnum.CREATE);
+ tableRequest.setProperties(ImmutableMap.of("custom-key", "custom-value"));
+
+ Response resp =
+ target(String.format("/v1/table/%s/register", tableIds))
+ .queryParam("delimiter", delimiter)
+ .request(MediaType.APPLICATION_JSON_TYPE)
+ .post(Entity.entity(tableRequest,
MediaType.APPLICATION_JSON_TYPE));
+
+ Assertions.assertEquals(Response.Status.OK.getStatusCode(),
resp.getStatus());
+
+ // Verify that registerTable was called with properties containing
"register": "true"
+ Mockito.verify(tableOps)
+ .registerTable(
+ eq(tableIds),
+ eq(RegisterTableRequest.ModeEnum.CREATE),
+ eq(delimiter),
+ Mockito.argThat(
+ props ->
+ props != null
+ && "true".equals(props.get("register"))
+ &&
"/path/to/registered_table".equals(props.get("location"))
+ && "custom-value".equals(props.get("custom-key"))));
+ }
+
@Test
void testDeregisterTable() {
String tableIds = "catalog.scheme.deregister_table";