PostgresUpdater: Fix typo in sites_group index renaming; re-attempt to drop most of the dropped sites indexes
Why:
- From MediaWiki 1.36 to MediaWiki 1.44 (inclusive),
`PostgresUpdater.php` contains a typo in the instruction to rename
the `sites_group` index to `site_group`.
- This typo means that - on Postgres wikis - the MediaWiki update
script will not currently rename this index as intended, as the index
which the updater is told to rename (i.e., containing the typo)
doesn't exist.
- From MediaWiki 1.42 onwards, this typo indirectly causes `update.php`
on Postgres wikis to throw an error on its first run:
- From MW 1.42 onwards, the update script included an instruction to
drop multiple indexes on the `sites` table, including this index
that was previously intended to be renamed.
- However, as this typo meant that the `sites_group` index was never
renamed on Postgres wikis, the database is unable to find the
renamed index in order to drop it; and consequently throws an
error (reported on Phabricator as T374042).
- This only affects the first run of `update.php` due to the fact
that - when deciding whether to apply the patch containing _all_ of
the index-drops for the `sites` table - the `dropIndex` instruction
only checks for the existence of the `site_type` index (and, if the
`site_type` index doesn't exist, the patch as a whole isn't applied).
However, as - within `patch-sites-drop_indexes.sql` - the statement
to drop the `site_type` index is located _before_ the instruction to
drop the `site_group` index, the `site_type` index will have been
dropped on the first run of `update.php`.
- This also means that - on any future runs of `update.php` - the
indexes listed after (and including) `site_group` in that SQL file
will currently remain un-dropped.
What:
- Fix the typo in the PostgresUpdater index renaming instruction:
`'sites_group, '` -> `'sites_group'`
- Update PostgresUpdater to individually re-attempt to drop the indexes
listed after & including `site_group` in
`patch-sites-drop_indexes.sql`, to ensure that they're dropped on
Postgres wikis that have already (1) upgraded to MW 1.42+, & (2) ran
`update.php`.
(These could theoretically have all been combined within one extra
SQL patch, rather than one for each index; but I thought it might be
best for the updater to check for the existence of each of these
indexes individually before it attempts to drop each one.)
Follows-up 9907b56c9b, 616744db1d
Bug: T374042
Change-Id: Ie6ffa92153e64ca653f726a35a5a6b5d95d093f5
This commit is contained in:
parent
4a391d63d0
commit
ffa868bcf1
7 changed files with 45 additions and 1 deletions
|
|
@ -239,7 +239,7 @@ class PostgresUpdater extends DatabaseUpdater {
|
|||
[ 'renameIndex', 'user_properties', 'user_properties_property', 'up_property' ],
|
||||
[ 'renameIndex', 'sites', 'sites_global_key', 'site_global_key' ],
|
||||
[ 'renameIndex', 'sites', 'sites_type', 'site_type' ],
|
||||
[ 'renameIndex', 'sites', 'sites_group, ', 'site_group' ],
|
||||
[ 'renameIndex', 'sites', 'sites_group', 'site_group' ],
|
||||
[ 'renameIndex', 'sites', 'sites_source', 'site_source' ],
|
||||
[ 'renameIndex', 'sites', 'sites_language', 'site_language' ],
|
||||
[ 'renameIndex', 'sites', 'sites_protocol', 'site_protocol' ],
|
||||
|
|
@ -427,6 +427,20 @@ class PostgresUpdater extends DatabaseUpdater {
|
|||
[ 'dropIndex', 'categorylinks', 'cl_collation_ext', 'patch-drop-cl_collation_ext.sql' ],
|
||||
[ 'runMaintenance', PopulateUserIsTemp::class ],
|
||||
[ 'dropIndex', 'sites', 'site_type', 'patch-sites-drop_indexes.sql' ],
|
||||
// Re-attempt to drop most of the dropped `sites`-table indexes:
|
||||
// If a Postgres wiki previously ran `update.php` on MW 1.42 or above, the script would have errored after
|
||||
// reaching the "DROP INDEX site_group;" line of `patch-sites-drop_indexes.sql` (due to a previous
|
||||
// index-renaming typo from MW 1.36).
|
||||
// However, as the `site_type` index itself _would_ have been successfully dropped, the `.sql` file listed
|
||||
// in the `dropIndex` line above will not be re-applied on any future runs of `update.php`.
|
||||
// Therefore, to ensure that the remaining indexes are definitely dropped on these wikis, we need to
|
||||
// separately attempt to drop them again. (T374042; T374042#11017896)
|
||||
[ 'dropIndex', 'sites', 'site_group', 'patch-sites-drop_site_group_index.sql' ],
|
||||
[ 'dropIndex', 'sites', 'site_source', 'patch-sites-drop_site_source_index.sql' ],
|
||||
[ 'dropIndex', 'sites', 'site_language', 'patch-sites-drop_site_language_index.sql' ],
|
||||
[ 'dropIndex', 'sites', 'site_protocol', 'patch-sites-drop_site_protocol_index.sql' ],
|
||||
[ 'dropIndex', 'sites', 'site_domain', 'patch-sites-drop_site_domain_index.sql' ],
|
||||
[ 'dropIndex', 'sites', 'site_forward', 'patch-sites-drop_site_forward_index.sql' ],
|
||||
[ 'dropIndex', 'iwlinks', 'iwl_prefix_from_title', 'patch-iwlinks-drop-iwl_prefix_from_title.sql' ],
|
||||
|
||||
// 1.43
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
-- This file was manually written, in order to make sure that this index (intended to be dropped on the upgrade to
|
||||
-- MediaWiki 1.42) is still dropped for Postgres wikis whose first run of `update.php` on MW 1.42+ failed due to an
|
||||
-- index-renaming typo from MW 1.36.
|
||||
-- See https://phabricator.wikimedia.org/T374042; https://phabricator.wikimedia.org/T374042#11017896
|
||||
DROP INDEX site_domain;
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-- This file was manually written, in order to make sure that this index (intended to be dropped on the upgrade to
|
||||
-- MediaWiki 1.42) is still dropped for Postgres wikis whose first run of `update.php` on MW 1.42+ failed due to an
|
||||
-- index-renaming typo from MW 1.36.
|
||||
-- See https://phabricator.wikimedia.org/T374042; https://phabricator.wikimedia.org/T374042#11017896
|
||||
DROP INDEX site_forward;
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-- This file was manually written, in order to make sure that this index (intended to be dropped on the upgrade to
|
||||
-- MediaWiki 1.42) is still dropped for Postgres wikis whose first run of `update.php` on MW 1.42+ failed due to an
|
||||
-- index-renaming typo from MW 1.36.
|
||||
-- See https://phabricator.wikimedia.org/T374042; https://phabricator.wikimedia.org/T374042#11017896
|
||||
DROP INDEX site_group;
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-- This file was manually written, in order to make sure that this index (intended to be dropped on the upgrade to
|
||||
-- MediaWiki 1.42) is still dropped for Postgres wikis whose first run of `update.php` on MW 1.42+ failed due to an
|
||||
-- index-renaming typo from MW 1.36.
|
||||
-- See https://phabricator.wikimedia.org/T374042; https://phabricator.wikimedia.org/T374042#11017896
|
||||
DROP INDEX site_language;
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-- This file was manually written, in order to make sure that this index (intended to be dropped on the upgrade to
|
||||
-- MediaWiki 1.42) is still dropped for Postgres wikis whose first run of `update.php` on MW 1.42+ failed due to an
|
||||
-- index-renaming typo from MW 1.36.
|
||||
-- See https://phabricator.wikimedia.org/T374042; https://phabricator.wikimedia.org/T374042#11017896
|
||||
DROP INDEX site_protocol;
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
-- This file was manually written, in order to make sure that this index (intended to be dropped on the upgrade to
|
||||
-- MediaWiki 1.42) is still dropped for Postgres wikis whose first run of `update.php` on MW 1.42+ failed due to an
|
||||
-- index-renaming typo from MW 1.36.
|
||||
-- See https://phabricator.wikimedia.org/T374042; https://phabricator.wikimedia.org/T374042#11017896
|
||||
DROP INDEX site_source;
|
||||
Loading…
Reference in a new issue