Skip to content

Commit 822fbc9

Browse files
hfutatzhanghbzhanghaobo@kanzhun.com
authored andcommitted
feat: hive2 namespace supports dropTable (lance-format#10)
When using lance-spark with Hive2Namespace, we met error on saveAsTable. It is because Hive2Namespace don't support dropTable operation which is needed by saveAsTable. --------- Co-authored-by: zhanghaobo@kanzhun.com <zhanghaobo@kanzhun.com>
1 parent 94f4e5e commit 822fbc9

2 files changed

Lines changed: 26 additions & 0 deletions

File tree

java/lance-namespace-hive2/src/main/java/org/lance/namespace/hive2/Hive2Namespace.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@
3434
import org.lance.namespace.model.DescribeTableResponse;
3535
import org.lance.namespace.model.DropNamespaceRequest;
3636
import org.lance.namespace.model.DropNamespaceResponse;
37+
import org.lance.namespace.model.DropTableRequest;
38+
import org.lance.namespace.model.DropTableResponse;
3739
import org.lance.namespace.model.ListNamespacesRequest;
3840
import org.lance.namespace.model.ListNamespacesResponse;
3941
import org.lance.namespace.model.ListTablesRequest;
@@ -264,6 +266,16 @@ public void tableExists(TableExistsRequest request) {
264266
Hive2Util.validateLanceTable(hmsTable.get());
265267
}
266268

269+
@Override
270+
public DropTableResponse dropTable(DropTableRequest request) {
271+
ObjectIdentifier tableId = ObjectIdentifier.of(request.getId());
272+
String location = doDropTable(tableId);
273+
DropTableResponse response = new DropTableResponse();
274+
response.setId(request.getId());
275+
response.setLocation(location);
276+
return response;
277+
}
278+
267279
@Override
268280
public DescribeTableResponse describeTable(DescribeTableRequest request) {
269281
if (Boolean.TRUE.equals(request.getLoadDetailedMetadata())) {

java/lance-namespace-hive2/src/test/java/org/lance/namespace/hive2/TestHive2NamespaceIntegration.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.lance.namespace.model.DescribeTableRequest;
2626
import org.lance.namespace.model.DescribeTableResponse;
2727
import org.lance.namespace.model.DropNamespaceRequest;
28+
import org.lance.namespace.model.DropTableRequest;
2829
import org.lance.namespace.model.ListNamespacesRequest;
2930
import org.lance.namespace.model.ListNamespacesResponse;
3031
import org.lance.namespace.model.ListTablesRequest;
@@ -215,6 +216,19 @@ public void testTableOperations() {
215216
deregisterRequest.setId(Arrays.asList(testDatabase, tableName));
216217
namespace.deregisterTable(deregisterRequest);
217218

219+
// Verify table doesn't exist
220+
assertThatThrownBy(() -> namespace.describeTable(describeRequest))
221+
.isInstanceOf(LanceNamespaceException.class);
222+
223+
// Declare table again for dropping.
224+
createResponse = namespace.declareTable(createRequest);
225+
assertThat(createResponse.getLocation()).isNotNull();
226+
227+
// Drop table
228+
DropTableRequest dropTableRequest = new DropTableRequest();
229+
dropTableRequest.setId(Arrays.asList(testDatabase, tableName));
230+
namespace.dropTable(dropTableRequest);
231+
218232
// Verify table doesn't exist
219233
assertThatThrownBy(() -> namespace.describeTable(describeRequest))
220234
.isInstanceOf(LanceNamespaceException.class);

0 commit comments

Comments
 (0)