From 977ce7e45e6f4500b313f6764c0f7c50647ebe67 Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Mon, 15 Aug 2011 18:52:25 +0000 Subject: [PATCH] Restored r94370 changes PopulateRevisionLen, moving it to $postDatabaseUpdateMaintenance --- includes/AutoLoader.php | 1 + includes/installer/DatabaseUpdater.php | 3 +- includes/installer/MysqlUpdater.php | 11 ------ maintenance/Maintenance.php | 2 +- maintenance/populateRevisionLength.php | 46 ++++++++++++++------------ 5 files changed, 28 insertions(+), 35 deletions(-) diff --git a/includes/AutoLoader.php b/includes/AutoLoader.php index b6c2ec3c83..bd3d9d0523 100644 --- a/includes/AutoLoader.php +++ b/includes/AutoLoader.php @@ -833,6 +833,7 @@ $wgAutoloadLocalClasses = array( 'DeleteArchivedRevisionsImplementation' => 'maintenance/deleteArchivedRevisions.inc', 'DeleteDefaultMessages' => 'maintenance/deleteDefaultMessages.php', 'FakeMaintenance' => 'maintenance/Maintenance.php', + 'LoggedUpdateMaintenance' => 'maintenance/Maintenance.php', 'Maintenance' => 'maintenance/Maintenance.php', 'PopulateCategory' => 'maintenance/populateCategory.php', 'PopulateImageSha1' => 'maintenance/populateImageSha1.php', diff --git a/includes/installer/DatabaseUpdater.php b/includes/installer/DatabaseUpdater.php index e4108fa68e..656ca9d6a2 100644 --- a/includes/installer/DatabaseUpdater.php +++ b/includes/installer/DatabaseUpdater.php @@ -40,7 +40,8 @@ abstract class DatabaseUpdater { protected $shared = false; protected $postDatabaseUpdateMaintenance = array( - 'DeleteDefaultMessages' + 'DeleteDefaultMessages', + 'PopulateRevisionLength' ); /** diff --git a/includes/installer/MysqlUpdater.php b/includes/installer/MysqlUpdater.php index 7550230589..e2a6926d9f 100644 --- a/includes/installer/MysqlUpdater.php +++ b/includes/installer/MysqlUpdater.php @@ -158,7 +158,6 @@ class MysqlUpdater extends DatabaseUpdater { array( 'doUpdateTranscacheField' ), array( 'renameEuWikiId' ), array( 'doUpdateMimeMinorField' ), - array( 'doPopulateRevLen' ), // 1.17 array( 'addTable', 'iwlinks', 'patch-iwlinks.sql' ), @@ -809,16 +808,6 @@ class MysqlUpdater extends DatabaseUpdater { $this->output( "done.\n" ); } - protected function doPopulateRevLen() { - if ( $this->updateRowExists( 'populate rev_len' ) ) { - $this->output( "...rev_len column already populated.\n" ); - return; - } - - $task = $this->maintenance->runChild( 'PopulateRevisionLength' ); - $task->execute(); - } - protected function doClFieldsUpdate() { if ( $this->updateRowExists( 'cl_fields_update' ) ) { $this->output( "...categorylinks up-to-date.\n" ); diff --git a/maintenance/Maintenance.php b/maintenance/Maintenance.php index 2829eac0cc..9cd853860c 100644 --- a/maintenance/Maintenance.php +++ b/maintenance/Maintenance.php @@ -1199,7 +1199,7 @@ abstract class Maintenance { } else { return posix_isatty( $fd ); } -} + } /** * Prompt the console for input diff --git a/maintenance/populateRevisionLength.php b/maintenance/populateRevisionLength.php index d020b4cba4..ff053d1d39 100644 --- a/maintenance/populateRevisionLength.php +++ b/maintenance/populateRevisionLength.php @@ -22,29 +22,39 @@ require_once( dirname( __FILE__ ) . '/Maintenance.php' ); -class PopulateRevisionLength extends Maintenance { +class PopulateRevisionLength extends LoggedUpdateMaintenance { public function __construct() { parent::__construct(); - $this->mDescription = "Populates rev_len"; + $this->mDescription = "Populates the rev_len field"; $this->setBatchSize( 200 ); } - public function execute() { + protected function getUpdateKey() { + return 'populate rev_len'; + } + + protected function updateSkippedMessage() { + return 'rev_len column of revision table already populated.'; + } + + protected function updatelogFailedMessage() { + return 'Could not insert rev_len population row.'; + } + + public function doDBUpdates() { $db = $this->getDB( DB_MASTER ); if ( !$db->tableExists( 'revision' ) ) { $this->error( "revision table does not exist", true ); } $this->output( "Populating rev_len column\n" ); - $start = $db->selectField( 'revision', 'MIN(rev_id)', false, __FUNCTION__ ); - $end = $db->selectField( 'revision', 'MAX(rev_id)', false, __FUNCTION__ ); - if ( is_null( $start ) || is_null( $end ) ) { + + $start = $db->selectField( 'revision', 'MIN(rev_id)', false, __METHOD__ ); + $end = $db->selectField( 'revision', 'MAX(rev_id)', false, __METHOD__ ); + if ( !$start || !$end ) { $this->output( "...revision table seems to be empty.\n" ); - $db->insert( 'updatelog', - array( 'ul_key' => 'populate rev_len' ), - __METHOD__, - 'IGNORE' ); - return; + return true; } + # Do remaining chunks $blockStart = intval( $start ); $blockEnd = intval( $start ) + $this->mBatchSize - 1; @@ -80,17 +90,9 @@ class PopulateRevisionLength extends Maintenance { $blockEnd += $this->mBatchSize; wfWaitForSlaves(); } - $logged = $db->insert( 'updatelog', - array( 'ul_key' => 'populate rev_len' ), - __METHOD__, - 'IGNORE' ); - if ( $logged ) { - $this->output( "rev_len population complete ... {$count} rows changed ({$missing} missing)\n" ); - return true; - } else { - $this->output( "Could not insert rev_len population row.\n" ); - return false; - } + + $this->output( "rev_len population complete ... {$count} rows changed ({$missing} missing)\n" ); + return true; } } -- 2.20.1