1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-10-23 09:08:52 +02:00
phorge-phorge/resources/sql/autopatches/20230917.fileattachment.01.delete.sql

7 lines
139 B
MySQL
Raw Normal View History

Destroy file attachments when file is deleted, or object is deleted Summary: Adds file attachment deletion logics: - PhabricatorFile: delete the attachment if file is deleted - destruction engine extension: delete attachment if object is deleted - SQL patch: delete existing leftover attachments from deleted files To apply the cleanup, as usual, run: ./bin/storage upgrade This cleanup may take some time, proportionally to the size of these tables: phabricator_file.file phabricator_file.file_attachment Just as an indication: the storage upgrade, in a Phorge with `file` count 1.3M rows and `file_attachment` consisting in 9K rows, it may delete 170K rows in less than 1 second on average hardware. Closes T15110 Test Plan: Apply the patch, run `./bin/storage/upgrade`: - no "Unknown Object" in any "Referenced Files" curtain of any object. Have phd daemon running. Upload file, attach the file to a task, delete the file from the web interface: - no "Unknown Object" in "Referenced Files" curtain of that task. - the query `SELECT * FROM file_attachment WHERE filePHID = '<file phid>'` returns empty result Upload file, attach the file to a task, delete the task from the `./bin/remove destroy` workflow: - the query `SELECT * FROM file_attachment WHERE objectPHID = '<task phid>'` returns empty result Reviewers: O1 Blessed Committers, avivey, valerio.bozzolan Reviewed By: O1 Blessed Committers, avivey, valerio.bozzolan Subscribers: Ekubischta, speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno Tags: #files Maniphest Tasks: T15110 Differential Revision: https://we.phorge.it/D25051
2024-08-10 22:15:10 +02:00
USE {$NAMESPACE}_file;
DELETE FROM file_attachment
WHERE NOT EXISTS
(SELECT *
FROM file
WHERE phid=file_attachment.filePHID)