diff options
author | Florian Pritz <bluewind@xinu.at> | 2015-05-22 10:20:22 +0200 |
---|---|---|
committer | Florian Pritz <bluewind@xinu.at> | 2015-05-22 10:38:31 +0200 |
commit | 141d541d4cc8abb10f164f58c3e106c198713f25 (patch) | |
tree | 58940829451885a1e022df66edb8000c2ac3407a /application/migrations/014_deduplicate_file_storage.php | |
parent | 2c0de98cc08384788150df3fe55ff9cff7380cd3 (diff) |
Remove unneeded duplicates in file_storage
Signed-off-by: Florian Pritz <bluewind@xinu.at>
Diffstat (limited to 'application/migrations/014_deduplicate_file_storage.php')
-rw-r--r-- | application/migrations/014_deduplicate_file_storage.php | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/application/migrations/014_deduplicate_file_storage.php b/application/migrations/014_deduplicate_file_storage.php index bc4171d1d..a1ea4fab4 100644 --- a/application/migrations/014_deduplicate_file_storage.php +++ b/application/migrations/014_deduplicate_file_storage.php @@ -38,6 +38,22 @@ class Migration_deduplicate_file_storage extends CI_Migration { SET f.file_storage_id = fs.id '); + // XXX: This query also exists in migration 15 + $this->db->query(' + DELETE file_storage + FROM file_storage + LEFT OUTER JOIN files ON files.file_storage_id = file_storage.id + WHERE file_storage.id NOT IN ( + SELECT min(x.id) + FROM ( + SELECT fs.id, fs.hash + FROM file_storage fs + ) x + GROUP BY x.hash + ) + AND files.id IS NULL + '); + $chunk = 500; $total = $this->db->count_all("file_storage"); @@ -53,6 +69,8 @@ class Migration_deduplicate_file_storage extends CI_Migration { $new = $this->mfile->file($data_id); if (file_exists($old)) { rename($old, $new); + } else { + echo "Warning: no file found for $data_id. Skipping...\n"; } } } |