Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import org.lance.WriteParams;
import org.lance.namespace.LanceNamespace;
import org.lance.namespace.errors.TableNotFoundException;
import org.lance.namespace.model.DeregisterTableRequest;
import org.lance.namespace.model.DescribeTableRequest;
import org.lance.namespace.model.DescribeTableResponse;
import org.lance.namespace.model.DropNamespaceRequest;
Expand Down Expand Up @@ -479,6 +480,23 @@ public Table alterTable(Identifier ident, TableChange... changes) throws NoSuchT

@Override
public boolean dropTable(Identifier ident) {
try {
Identifier tableId = transformIdentifierForApi(ident);
DeregisterTableRequest deregisterRequest = new DeregisterTableRequest();
for (String part : tableId.namespace()) {
deregisterRequest.addIdItem(part);
}
deregisterRequest.addIdItem(tableId.name());
namespace.deregisterTable(deregisterRequest);

return true;
} catch (Exception e) {
return false;
}
}

@Override
public boolean purgeTable(Identifier ident) {
try {
Identifier tableId = transformIdentifierForApi(ident);
DropTableRequest dropRequest = new DropTableRequest();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@
*/
package org.lance.spark;

import org.junit.jupiter.api.BeforeEach;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

Expand All @@ -28,6 +31,18 @@ protected String getNsImpl() {
protected Map<String, String> getAdditionalNsConfigs() {
Map<String, String> configs = new HashMap<>();
configs.put("root", tempDir.toString());
// Disable extra_level so "default" is treated as an actual child namespace
// This ensures manifest mode is used instead of directory listing mode
configs.put("extra_level", "");
return configs;
}

@BeforeEach
@Override
void setup() throws IOException {
super.setup();
// Create the "default" namespace explicitly so that DirectoryNamespace uses manifest mode
// instead of directory listing mode. This is required for deregisterTable to work correctly.
spark.sql("CREATE NAMESPACE " + catalogName + ".default");
}
}