0) Context
The database schemata of several tables (archive, image, oldimage, and revision) each declare a (user, timestamp) index.
1) Problem
For the `archive` database table, there is a (user, timestamp) index that is:
o named one way in `maintenance/table.sql`, and
o named another way in the update patch `maintenance/archives/patch-archive-user-index.sql`.
| Table name | Index name - table.sql | Index name - update patch | Match |
| **archive** | **ar_usertext_timestamp** | **usertext_timestamp** | **NO** |
| image | img_usertext_timestamp | img_usertext_timestamp | yes |
| oldimage | oi_usertext_timestamp | oi_usertext_timestamp | yes |
| revision | usertext_timestamp | usertext_timestamp | yes |
2) Contents of maintenance/tables.sql
`CREATE TABLE /*_*/archive (`
` ar_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,`
...
` ar_content_format varbinary(64) DEFAULT NULL`
`) /*$wgDBTableOptions*/;`
`CREATE INDEX /*i*/name_title_timestamp ON /*_*/archive (ar_namespace,ar_title,ar_timestamp);`
**`CREATE INDEX /*i*/ar_usertext_timestamp ON /*_*/archive (ar_user_text,ar_timestamp);`**
`CREATE INDEX /*i*/ar_revid ON /*_*/archive (ar_rev_id);`
3) Contents of maintenance/archives/patch-archive-user-index.sql
`ALTER TABLE /*$wgDBprefix*/archive`
**`ADD INDEX usertext_timestamp ( ar_user_text , ar_timestamp );`**
4) Consequence
When the patch is applied using `maintenance/update.php`, the database schema becomes:
` PRIMARY KEY (ar_id),`
` KEY name_title_timestamp (ar_namespace,ar_title,ar_timestamp),`
**` KEY ar_usertext_timestamp (ar_user_text,ar_timestamp),`**
` KEY ar_revid (ar_rev_id),`
**` KEY usertext_timestamp (ar_user_text,ar_timestamp)`**
`) ENGINE=InnoDB DEFAULT CHARSET=binary;`
which looks dubious.
5) Technical details
GIT branch: master