Manual:Archive table

The archive table is the place where MediaWiki stores information on deleted pages. The pages may be restored, or undeleted, by MediaWiki, by using the deletion interface. Beginning on MediaWiki 1.5, the content of the pages remains in the text table; the deletion time is logged in the logging table.

If a page is deleted, all its old revisions move from the revision table to the archive table. If a page is then restored, its revisions are removed from the archive table, and recreated in the revision table.

The archive table is broadly related to the old table and revision table in layout, but there is no primary key on the table. Previous to MediaWiki 1.5, content from the text table was moved here, so individual revisions had non-empty ar_text contents. That text could have been compressed, and in those cases, it was marked by gzip on the revision's ar_flags field. There is also not presently a record of when deletion occurred, making it hard to separate multiple delete cycles or distinguish old deletions from recent deletions of pages that haven't been edited in a long time.

ar_namespace
Basic page information: contains the namespace of the deleted revision. These contain the value in page_namespace.

ar_title
Basic page information: contains the page title of the deleted page, which is the same as page_title.

ar_text
Not used; the revision text remains in the text table. Newly deleted pages will not store text in this table, but will rather reference the separately existing text rows. The behavior before MediaWiki 1.5 was different; old archived pages saved their text here, so this field remains for backward compatibility.

Text may be gzipped or otherwise funky.

ar_comment
Basic revision information: contains the edit summary of the deleted revision, analogous to rev_comment.

ar_user
Basic revision information: contains the user ID of the user who made the deleted revision; it is the same as user_id and rev_user. The value for this field is 0 for anonymous edits, initializations scripts, and for some mass imports.

ar_user_text
Basic revision information: This field contains the text of the editor's username, or the IP address of the editor if the deleted revision was done by an unregistered user. Comparable to rev_user_text.

ar_timestamp
This field contains the time at which the revision was originally saved. It is the equivalent of rev_timestamp.

This is not the timestamp of article deletion; that is saved in the deletion log entry, in the logging table's log_timestamp.

ar_minor_edit
Basic revision information: Records whether the user marked the deleted revision as a minor edit. If the value for this field is 1, then the edit is tagged as 'minor'; it is 0 otherwise. This is equivalent to rev_minor_edit.

ar_flags
Similar to old_flags in the text table. Contains the following possible values:

ar_rev_id
When revisions are deleted, their unique rev_id is stored here so it can be retained after undeletion. This is necessary to retain permalinks to given revisions after accidental delete cycles or messy operations like history merges.

Old entries from 1.4 will be NULL here, and a new rev_id will be created on undeletion for those revisions.

ar_text_id
For revisions deleted in MediaWiki 1.5 and later, this is a key to old_id within the text table; that is, it is the key to the stored text in the storage backend. To avoid breaking the block-compression scheme and otherwise making storage changes harder, the actual text is *not* deleted from the text table; rather, the text is merely hidden by removal of the page and revision entries.

Old entries deleted under MediaWiki 1.2-1.4 will have NULL values in this field, and their ar_text and ar_flags fields will be used to create a new text row upon undeletion.

ar_deleted
This field is reserved for future revisions to the deletion system. Equivalent to rev_deleted.

ar_len
This field contains the length of the deleted revision, in bytes. Analogous to rev_len.

Schema summary
DESCRIBE archive in MediaWiki 1.10 gives the following: mysql> describe mw_archive; +---+-+--+-+-+---+ +---+-+--+-+-+---+ +---+-+--+-+-+---+ 13 rows in set (0.02 sec)
 * Field        | Type                | Null | Key | Default | Extra |
 * ar_namespace | int(11)             | NO   | MUL | 0       |       |
 * ar_title     | varchar(255)        | NO   |     | NULL    |       |
 * ar_text      | mediumblob          | NO   |     | NULL    |       |
 * ar_comment   | tinyblob            | NO   |     | NULL    |       |
 * ar_user      | int(5) unsigned     | NO   |     | 0       |       |
 * ar_user_text | varchar(255)        | NO   |     | NULL    |       |
 * ar_timestamp | char(14)            | NO   |     | NULL    |       |
 * ar_minor_edit | tinyint(1)         | NO   |     | 0       |       |
 * ar_flags     | tinyblob            | NO   |     | NULL    |       |
 * ar_rev_id    | int(8) unsigned     | YES  |     | NULL    |       |
 * ar_text_id   | int(8) unsigned     | YES  |     | NULL    |       |
 * ar_deleted   | tinyint(1) unsigned | NO   |     | 0       |       |
 * ar_len       | int(8) unsigned     | YES  |     | NULL    |       |

DESCRIBE archive in MediaWiki 1.5-1.9 gives the following:

mysql> describe mw_archive; +---+-+--+-+-+---+ +---+-+--+-+-+---+ +---+-+--+-+-+---+
 * Field        | Type            | Null | Key | Default | Extra |
 * ar_namespace | int(11)         | NO   | MUL | 0       |       |
 * ar_title     | varchar(255)    | NO   |     | NULL    |       |
 * ar_text      | mediumblob      | NO   |     | NULL    |       |
 * ar_comment   | tinyblob        | NO   |     | NULL    |       |
 * ar_user      | int(5) unsigned | NO   |     | 0       |       |
 * ar_user_text | varchar(255)    | NO   |     | NULL    |       |
 * ar_timestamp | char(14)        | NO   |     | NULL    |       |
 * ar_minor_edit | tinyint(1)     | NO   |     | 0       |       |
 * ar_flags     | tinyblob        | NO   |     | NULL    |       |
 * ar_rev_id    | int(8) unsigned | YES  |     | NULL    |       |
 * ar_text_id   | int(8) unsigned | YES  |     | NULL    |       |

DESCRIBE archive in versions before 1.5 gives the following:

+---+-+--+-+-+---+ +---+-+--+-+-+---+ +---+-+--+-+-+---+
 * Field        | Type                | Null | Key | Default | Extra |
 * ar_namespace | tinyint(2) unsigned |      |     | 0       |       |
 * ar_title     | varchar(255) binary |      |     |         |       |
 * ar_text      | mediumtext          |      |     |         |       |
 * ar_comment   | tinyblob            |      |     |         |       |
 * ar_user      | int(5) unsigned     |      |     | 0       |       |
 * ar_user_text | varchar(255) binary |      |     |         |       |
 * ar_timestamp | varchar(14) binary  |      |     |         |       |
 * ar_minor_edit | tinyint(1)         |      |     | 0       |       |
 * ar_flags     | tinyblob            |      |     |         |       |