diff --git a/java/lance-namespace-hive2/src/main/java/org/lance/namespace/hive2/Hive2Namespace.java b/java/lance-namespace-hive2/src/main/java/org/lance/namespace/hive2/Hive2Namespace.java index 24f2fef..b289708 100644 --- a/java/lance-namespace-hive2/src/main/java/org/lance/namespace/hive2/Hive2Namespace.java +++ b/java/lance-namespace-hive2/src/main/java/org/lance/namespace/hive2/Hive2Namespace.java @@ -34,6 +34,8 @@ import org.lance.namespace.model.DescribeTableResponse; import org.lance.namespace.model.DropNamespaceRequest; import org.lance.namespace.model.DropNamespaceResponse; +import org.lance.namespace.model.DropTableRequest; +import org.lance.namespace.model.DropTableResponse; import org.lance.namespace.model.ListNamespacesRequest; import org.lance.namespace.model.ListNamespacesResponse; import org.lance.namespace.model.ListTablesRequest; @@ -264,6 +266,16 @@ public void tableExists(TableExistsRequest request) { Hive2Util.validateLanceTable(hmsTable.get()); } + @Override + public DropTableResponse dropTable(DropTableRequest request) { + ObjectIdentifier tableId = ObjectIdentifier.of(request.getId()); + String location = doDropTable(tableId); + DropTableResponse response = new DropTableResponse(); + response.setId(request.getId()); + response.setLocation(location); + return response; + } + @Override public DescribeTableResponse describeTable(DescribeTableRequest request) { if (Boolean.TRUE.equals(request.getLoadDetailedMetadata())) { diff --git a/java/lance-namespace-hive2/src/test/java/org/lance/namespace/hive2/TestHive2NamespaceIntegration.java b/java/lance-namespace-hive2/src/test/java/org/lance/namespace/hive2/TestHive2NamespaceIntegration.java index e6117d5..32301dc 100644 --- a/java/lance-namespace-hive2/src/test/java/org/lance/namespace/hive2/TestHive2NamespaceIntegration.java +++ b/java/lance-namespace-hive2/src/test/java/org/lance/namespace/hive2/TestHive2NamespaceIntegration.java @@ -25,6 +25,7 @@ import org.lance.namespace.model.DescribeTableRequest; import org.lance.namespace.model.DescribeTableResponse; import org.lance.namespace.model.DropNamespaceRequest; +import org.lance.namespace.model.DropTableRequest; import org.lance.namespace.model.ListNamespacesRequest; import org.lance.namespace.model.ListNamespacesResponse; import org.lance.namespace.model.ListTablesRequest; @@ -215,6 +216,19 @@ public void testTableOperations() { deregisterRequest.setId(Arrays.asList(testDatabase, tableName)); namespace.deregisterTable(deregisterRequest); + // Verify table doesn't exist + assertThatThrownBy(() -> namespace.describeTable(describeRequest)) + .isInstanceOf(LanceNamespaceException.class); + + // Declare table again for dropping. + createResponse = namespace.declareTable(createRequest); + assertThat(createResponse.getLocation()).isNotNull(); + + // Drop table + DropTableRequest dropTableRequest = new DropTableRequest(); + dropTableRequest.setId(Arrays.asList(testDatabase, tableName)); + namespace.dropTable(dropTableRequest); + // Verify table doesn't exist assertThatThrownBy(() -> namespace.describeTable(describeRequest)) .isInstanceOf(LanceNamespaceException.class);