summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--application/migrations/014_deduplicate_file_storage.php20
-rw-r--r--application/migrations/015_actually_deduplicate_file_storage.php20
2 files changed, 16 insertions, 24 deletions
diff --git a/application/migrations/014_deduplicate_file_storage.php b/application/migrations/014_deduplicate_file_storage.php
index 96c041c27..bd96c56d8 100644
--- a/application/migrations/014_deduplicate_file_storage.php
+++ b/application/migrations/014_deduplicate_file_storage.php
@@ -81,18 +81,14 @@ class Migration_deduplicate_file_storage extends CI_Migration {
// XXX: This query also exists in migration 15
$this->db->query('
- DELETE `'.$prefix.'file_storage`
- FROM `'.$prefix.'file_storage`
- LEFT OUTER JOIN `'.$prefix.'files` ON `'.$prefix.'files`.file_storage_id = `'.$prefix.'file_storage`.id
- WHERE `'.$prefix.'file_storage`.id NOT IN (
- SELECT min(x.id)
- FROM (
- SELECT fs.id, fs.hash
- FROM `'.$prefix.'file_storage` fs
- ) x
- GROUP BY x.hash
- )
- AND `'.$prefix.'files`.id IS NULL
+ DELETE fs
+ FROM `'.$prefix.'file_storage` fs, `'.$prefix.'file_storage` fs2
+ WHERE fs.hash = fs2.hash
+ AND fs.id > fs2.id
+ AND fs.id NOT IN (
+ SELECT file_storage_id
+ FROM `'.$prefix.'files` f
+ );
');
}
diff --git a/application/migrations/015_actually_deduplicate_file_storage.php b/application/migrations/015_actually_deduplicate_file_storage.php
index 267afc1fe..76ff2d6b9 100644
--- a/application/migrations/015_actually_deduplicate_file_storage.php
+++ b/application/migrations/015_actually_deduplicate_file_storage.php
@@ -12,18 +12,14 @@ class Migration_actually_deduplicate_file_storage extends CI_Migration {
} else {
// XXX: This query also exists in migration 14
$this->db->query('
- DELETE `'.$prefix.'file_storage`
- FROM `'.$prefix.'file_storage`
- LEFT OUTER JOIN `'.$prefix.'files` ON `'.$prefix.'files`.file_storage_id = `'.$prefix.'file_storage`.id
- WHERE `'.$prefix.'file_storage`.id NOT IN (
- SELECT min(x.id)
- FROM (
- SELECT fs.id, fs.hash
- FROM `'.$prefix.'file_storage` fs
- ) x
- GROUP BY x.hash
- )
- AND `'.$prefix.'files`.id IS NULL
+ DELETE fs
+ FROM `'.$prefix.'file_storage` fs, `'.$prefix.'file_storage` fs2
+ WHERE fs.hash = fs2.hash
+ AND fs.id > fs2.id
+ AND fs.id NOT IN (
+ SELECT file_storage_id
+ FROM `'.$prefix.'files` f
+ );
');
}