| 712 | } |
| 713 | |
| 714 | void Array::delete_array(ContextResources& resources, const URI& uri) { |
| 715 | auto& vfs = resources.vfs(); |
| 716 | auto array_dir = |
| 717 | ArrayDirectory(resources, uri, 0, std::numeric_limits<uint64_t>::max()); |
| 718 | |
| 719 | // Delete fragments and commits |
| 720 | Array::delete_fragments(resources, array_dir); |
| 721 | |
| 722 | // Delete array metadata, fragment metadata and array schema files |
| 723 | // Note: metadata files may not be present, try to delete anyway |
| 724 | vfs.remove_files(&resources.compute_tp(), array_dir.array_meta_uris()); |
| 725 | vfs.remove_files(&resources.compute_tp(), array_dir.fragment_meta_uris()); |
| 726 | vfs.remove_files(&resources.compute_tp(), array_dir.array_schema_uris()); |
| 727 | |
| 728 | // Delete all tiledb child directories |
| 729 | // Note: using vfs.ls() here could delete user data |
| 730 | std::vector<URI> dirs; |
| 731 | auto parent_dir = array_dir.uri().c_str(); |
| 732 | for (auto array_dir_name : constants::array_dir_names) { |
| 733 | dirs.emplace_back(URI(parent_dir + array_dir_name)); |
| 734 | } |
| 735 | vfs.remove_dirs(&resources.compute_tp(), dirs); |
| 736 | vfs.remove_dir_if_empty(array_dir.uri()); |
| 737 | } |
| 738 | |
| 739 | void Array::delete_array(const URI& uri) { |
| 740 | // Check that data deletion is allowed |
nothing calls this directly
no test coverage detected