Deleted headers and read messages

Purging deleted headers
   By default deleted headers are not really deleted - they are hidden and can be reshown and undeleted. But there is an option to purge deleted headers, so their records will be removed from the database storage.
   So, when purging is disabled - headers only marked as deleted but the full record will stay and take place in the database. When purging is enabled and deleted headers are purged - still minimal information about deleted headers must be kept to prevent their reentry as usual headers (only unique message-id), so they will be recognized as deleted but in this case they take on average 5-10 times less space than average full record.
   If headers have not been purged manually - they will be purged on reopening newsgroups (it is just faster than to do it on closing), so while newsgroup remains active (open or downloading headers) - it is possible to unhide latest deleted headers and undelete them.
   Purged headers (minimal info about them) are kept for user-defined number of days (see properties->general->deleted/read, track after leaving groups). There is a minimum forced value for the field since e.g. setting it to zero would cause reentry previously purged headers as undeleted on the next downloading headers. The message-ids can be found in the file named del.dat.
   Purging deleted headers can be enabled/disabled in properties->newsgroups, default entry for all newsgroups or corresponding entries for specific newsgroups (look at the end of the topic for more detailed info with screenshots of location of all related options).
   In the following discussion the difference between an operation when purging is enabled or disabled will be always mentioned.
When headers are deleted
   Headers that filtered out with kill filters enter the database as deleted headers if purging is disabled for respective newsgroups, otherwise they will enter del.dat.
   When a parent in a thread is deleted - all its children are deleted and all its incoming children will be treated as deleted. If a deleted header leaves the database - its message-id is kept for the user-defined number of days mentioned above, so upon its reappearance it will enter the database as deleted; it also allows to track its children.
   Using the same technique headers marked as read are kept for the user-defined number of days after they has left the database, so after reappearing they still remain marked as read.
   Message-ids of deleted and read messages will be deleted from the economical message-id storage (del.dat) after passing the user-defined number of days since their leaving the database and not reappearing the flow of incoming headers (when a header with message-id reappears its timer is reset, so starting count of user-defined number of days starts afresh).
Undeleting headers
   While purging is disabled headers are never really deleted - they are just marked as deleted and not shown in newsgroup views. Here a parent in a thread is deleted:

   It is what we get:

   Now we pressed the restore delete headers button - we can see that the children had been deleted automatically. Also the button remained in the pressed state:

   Now we are going to undelete the parent and all its children:

   That is what we get:

   Finally we'll hide deleted headers by pressing again the restore deleted headers button:

Undeleting purged deleted headers
   Full records of purged deleted cannot be found in the database. So what is needed to make them enter the database again.
   First, purging deleted should be disabled in properties->newsgroups for newsgroups in question.
Second, 'rescan headers' (not just 'get new headers') should be invoked. It can be from file menu->rescan headers, newsgroup context menu->advanced->rescan headers or from the docking window, newsgroup pane, context menu, in the last case for several newsgroups in one click.
After rescan is complete - the procedure described above in 'Undeleting headers' should be followed.
Options related to deleting headers
   1. The user-defined number of days described above (how long to keep info about deleted headers and read messages after leaving the database) - deleted/read - track after leaving groups for x days.
   2. Delete bodies when deleting headers - headers only marked as deleted deleted - bodies can still be kept.
   3. Saving attachments -> Delete headers - headers will be deleted after successful save attachments.

   Here is properties->newsgroups. Here purging is disabled for all newsgroups (default entry) but it is enabled for a specific newsgroup (alt.binaries.sounds.music.classical).

   Here how purging deleted headers can be invoked manually (also there is an entry in the edit menu).