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

Where to find files

 * Special:NewFiles, e.g. https://en.wikipedia.beta.wmflabs.org/wiki/Special:NewFiles

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!

Use cases

 * There are a few specialist use cases which use delete and restore which are outlined here and might be worth testing Manual:Administrators.

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).
 * Users can be blocked from some or all pages. For example, you can block a user from the Talk namespace, which would prevent them deleting a talk page.

"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.
 * SQL query to list the top 10 pages with most revision: /big_page_sql.
 * To add a large number of edits/revisions to a page you can use /mass_edit.
 * You could combine this with test ideas above.

Redirects

 * When you move a page over another page that already exists, the page is deleted to make way for the page you are moving. This is another way of deleting a page.
 * Some users have the right  which will only allow them to do this if the page they are deleting is a redirect with only one edit. See w:Wikipedia:Page_mover.

Tools

 * Adding a large number of revisions to a page or file /mass_edit.