I think the attachments will be cleaned up by one of the daily jobs, as long as they’re not part of the latest version of the post. So changing the deleted post to ‘(deleted by admin)’ or something would make its attachment part of the edit history and would then orphan it (thus scooping it up in the ‘clear orphan’ clean-up).
I am only theorising though, so this may be wrong.
Discourse uses a mechanism called a ‘soft delete’ which makes it easy to correct mistakes. It also allows to make a difference between ‘deleted for other users’ and ‘deleted for admins’.
It also maintains database integrity. What if a deleted post was quoted (before it was deleted) ? Then the quoting post has a reference to a post that does not exist any more. That could lead to all kinds of errors.
It’s been discussed and requested before, more than once e.g.
While I understand that soft-delete maybe useful, after some period (e.g. 1 week or month) it would be nice if deleted things were actually removed to save space and also ensure legal compliance e.g because some thing illegal was posted, or personal details need removing for GDPR compliance.
Having to log on and run a rake task to replace the message with ‘this has been deleted’ is a bit naff.
The site setting is hidden because we do not encourage its use. That was developed for the cases when some sensitive information was posted and it must be scrubbed from the database completely. One more thing, that operation is not a bulk operation anyway.
Since it is a hidden site setting, the only way to enable it is from the console.