From d5713fc655de4550b488fb873468090d5b7d8b71 Mon Sep 17 00:00:00 2001 From: Brad Jorsch Date: Tue, 10 Jul 2018 13:09:37 -0400 Subject: [PATCH] Run populateContentTables.php from update.php Since update.php will eventually be dropping the old columns and fields, we should make sure the migration script gets run first. Bug: T197818 Change-Id: I47f5ba4e21b4fe2ef0beb9fc83896cd4b0a0d505 --- includes/installer/DatabaseUpdater.php | 25 +++++++++++++++++++++++++ includes/installer/MssqlUpdater.php | 1 + includes/installer/MysqlUpdater.php | 1 + includes/installer/OracleUpdater.php | 1 + includes/installer/PostgresUpdater.php | 1 + includes/installer/SqliteUpdater.php | 1 + maintenance/populateContentTables.php | 1 + 7 files changed, 31 insertions(+) diff --git a/includes/installer/DatabaseUpdater.php b/includes/installer/DatabaseUpdater.php index 939301d30d..bf140eae0d 100644 --- a/includes/installer/DatabaseUpdater.php +++ b/includes/installer/DatabaseUpdater.php @@ -1362,4 +1362,29 @@ abstract class DatabaseUpdater { $this->output( "done.\n" ); } } + + /** + * Populates the MCR content tables + * @since 1.32 + */ + protected function populateContentTables() { + global $wgMultiContentRevisionSchemaMigrationStage; + if ( ( $wgMultiContentRevisionSchemaMigrationStage & SCHEMA_COMPAT_WRITE_NEW ) && + !$this->updateRowExists( 'PopulateContentTables' ) + ) { + $this->output( + "Migrating revision data to the MCR 'slot' and 'content' tables, printing progress markers.\n" . + "For large databases, you may want to hit Ctrl-C and do this manually with\n" . + "maintenance/populateContentTables.php.\n" + ); + $task = $this->maintenance->runChild( + PopulateContentTables::class, 'populateContentTables.php' + ); + $ok = $task->execute(); + $this->output( $ok ? "done.\n" : "errors were encountered.\n" ); + if ( $ok ) { + $this->insertUpdateRow( 'PopulateContentTables' ); + } + } + } } diff --git a/includes/installer/MssqlUpdater.php b/includes/installer/MssqlUpdater.php index cfa21f4a82..485d758272 100644 --- a/includes/installer/MssqlUpdater.php +++ b/includes/installer/MssqlUpdater.php @@ -137,6 +137,7 @@ class MssqlUpdater extends DatabaseUpdater { [ 'runMaintenance', DeduplicateArchiveRevId::class, 'maintenance/deduplicateArchiveRevId.php' ], [ 'addField', 'change_tag', 'ct_tag_id', 'patch-change_tag-tag_id.sql' ], [ 'addIndex', 'archive', 'ar_revid_uniq', 'patch-archive-ar_rev_id-unique.sql' ], + [ 'populateContentTables' ], ]; } diff --git a/includes/installer/MysqlUpdater.php b/includes/installer/MysqlUpdater.php index f8114e3e75..b52cfb1955 100644 --- a/includes/installer/MysqlUpdater.php +++ b/includes/installer/MysqlUpdater.php @@ -358,6 +358,7 @@ class MysqlUpdater extends DatabaseUpdater { [ 'runMaintenance', DeduplicateArchiveRevId::class, 'maintenance/deduplicateArchiveRevId.php' ], [ 'addField', 'change_tag', 'ct_tag_id', 'patch-change_tag-tag_id.sql' ], [ 'addIndex', 'archive', 'ar_revid_uniq', 'patch-archive-ar_rev_id-unique.sql' ], + [ 'populateContentTables' ], ]; } diff --git a/includes/installer/OracleUpdater.php b/includes/installer/OracleUpdater.php index 9d2fdc6aeb..c9ed53f8e7 100644 --- a/includes/installer/OracleUpdater.php +++ b/includes/installer/OracleUpdater.php @@ -154,6 +154,7 @@ class OracleUpdater extends DatabaseUpdater { [ 'runMaintenance', DeduplicateArchiveRevId::class, 'maintenance/deduplicateArchiveRevId.php' ], [ 'addField', 'change_tag', 'ct_tag_id', 'patch-change_tag-tag_id.sql' ], [ 'addIndex', 'archive', 'ar_revid_uniq', 'patch-archive-ar_rev_id-unique.sql' ], + [ 'populateContentTables' ], // KEEP THIS AT THE BOTTOM!! [ 'doRebuildDuplicateFunction' ], diff --git a/includes/installer/PostgresUpdater.php b/includes/installer/PostgresUpdater.php index dc1ffdb645..b12bd55583 100644 --- a/includes/installer/PostgresUpdater.php +++ b/includes/installer/PostgresUpdater.php @@ -584,6 +584,7 @@ class PostgresUpdater extends DatabaseUpdater { ], [ 'addPgIndex', 'archive', 'ar_revid_uniq', '(ar_rev_id)', 'unique' ], [ 'dropPgIndex', 'archive', 'ar_revid' ], // Probably doesn't exist, but do it anyway. + [ 'populateContentTables' ], ]; } diff --git a/includes/installer/SqliteUpdater.php b/includes/installer/SqliteUpdater.php index fd9179b9e3..d7713cba90 100644 --- a/includes/installer/SqliteUpdater.php +++ b/includes/installer/SqliteUpdater.php @@ -222,6 +222,7 @@ class SqliteUpdater extends DatabaseUpdater { [ 'runMaintenance', DeduplicateArchiveRevId::class, 'maintenance/deduplicateArchiveRevId.php' ], [ 'addField', 'change_tag', 'ct_tag_id', 'patch-change_tag-tag_id.sql' ], [ 'addIndex', 'archive', 'ar_revid_uniq', 'patch-archive-ar_rev_id-unique.sql' ], + [ 'populateContentTables' ], ]; } diff --git a/maintenance/populateContentTables.php b/maintenance/populateContentTables.php index b550cc2a09..5322b5beec 100644 --- a/maintenance/populateContentTables.php +++ b/maintenance/populateContentTables.php @@ -92,6 +92,7 @@ class PopulateContentTables extends Maintenance { $elapsed = microtime( true ) - $t0; $this->writeln( "Done. Processed $this->totalCount rows in $elapsed seconds" ); + return true; } /** -- 2.20.1