mirror of
https://github.com/lancedb/lancedb.git
synced 2026-07-03 11:00:40 +00:00
Root-table lifecycle in a ListingDatabase now flows through an embedded V1 (manifest-disabled) DirectoryNamespace, so a root drop is a soft-delete rather than an immediate remove_dir_all: - drop_table writes a delete marker and leaves the data for a later purge (TTL). - create_table on a soft-deleted name revives it (clears the marker under the namespace's lifecycle lock, then overwrites via the native create path). - open_table / table_names / list_tables treat soft-deleted tables as absent. - table listing is now a single O(1) read_dir in the namespace instead of a per-table probe here. A ListingDatabase now holds two embedded namespaces: the existing manifest-backed `namespace_database` for child namespaces (multi-level table ids), and a new `root_namespace_database` (V1, manifest-off) that owns root soft-delete/purge/ table_status. `namespace_client()` still returns the manifest namespace so child namespace ops are unaffected. Also preserves TableNotFound through LanceNamespaceDatabase::drop_table instead of flattening it to a generic Runtime error, so dropping a missing table reports the right error. Removes the now-dead native drop_tables / commit-handler path and the object_store/base_path fields it needed. Depends on lance-format/lance#7541. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>