User:DWalden (WMF)/(Un)delete associated talk page

After delete

 * 1) Rows in the   table are copied into the   table
 * 2) Rows in the ,   and   tables are deleted
 * 3) Row in the   table is deleted
 * 4) Rows deleted from ,  ,  , if they existed in the first place
 * 5) Row inserted into   table which records the delete action
 * 6) If deleted page had rows in the   table (e.g. for edits), they are deleted
 * 7) Row inserted into   table which records the delete action

SQL queries
(see also API:Database_field_and_API_property_associations)
 * /sql_page
 * /sql_mcr (for the,   and   tables)

What happens when you delete a file
Files on MediaWiki also have a page associated with them (whose titles are prefixed with "File:" e.g. File:Page_UML_diagram.png). So, what is written above about pages also applies to files.

In addition, there are three database tables:
 * , stores information about the most recent version of a file
 * , stores information about older versions of a file
 * , stores information on deleted files

When you delete

 * 1) Rows from   and   are copied to the   table
 * 2) Rows deleted from   and   tables
 * 3) In the filestore, the current and old versions of the file are moved to the

SQL queries

 * /sql_file

ACID
What bugs can we find related to ACID properties (atomicity, consistency, isolation, durability)? (see also MIT's Computer System Engineering course week 8, week 9, week 10. Video lectures .)

Consistency

 * After deleting or restoring pages or files, does the data in the database end up in inconsistent states?
 * Do all the appropriate rows get deleted or restored?
 * Are all the appropriate relationships between data maintained?
 * For example, I attempted to delete this image via the UI. It timed out. The rows in the  and   tables were deleted, but the rows in the   table were not. Notice, for example, that even though the page appears to exist, it has a link to "Create" it.
 * Perhaps use ideas from chapter 7 of Explore It!

Permissions

 * Only users with the  right (which usually is only users in the Administrator or sysop group) can delete a page/file.
 * Only users with the  right (usually those in the Stewards group) can delete a page/file with over 5000 revisions (or whatever the value of $wgDeleteRevisionsLimit).

"Big" pages

 * When deleting pages or files with over 1000 revisions (or whatever the value of $wgDeleteRevisionsBatchSize), instead of all the revisions being deleted in one go they are done in batches.