Fix populateRevisionLength.php so it's not trying to select revision

fields from the archive table (they won't exist!)

Follows up https://gerrit.wikimedia.org/r/#/c/54111/

Change-Id: Ie161a08097a2cd3393d69574263cfe78e4329bb4
This commit is contained in:
Reedy 2013-10-28 22:08:50 +00:00
parent 7f51cf22f9
commit b0aebdaa0a
2 changed files with 42 additions and 11 deletions

View file

@ -433,6 +433,36 @@ class Revision implements IDBAccessObject {
return $fields;
}
/**
* Return the list of revision fields that should be selected to create
* a new revision from an archive row.
* @return array
*/
public static function selectArchiveFields() {
global $wgContentHandlerUseDB;
$fields = array(
'ar_id',
'ar_page_id',
'ar_rev_id',
'ar_text_id',
'ar_timestamp',
'ar_comment',
'ar_user_text',
'ar_user',
'ar_minor_edit',
'ar_deleted',
'ar_len',
'ar_parent_id',
'ar_sha1',
);
if ( $wgContentHandlerUseDB ) {
$fields[] = 'ar_content_format';
$fields[] = 'ar_content_model';
}
return $fields;
}
/**
* Return the list of text fields that should be selected to read the
* revision text

View file

@ -53,22 +53,23 @@ class PopulateRevisionLength extends LoggedUpdateMaintenance {
}
$this->output( "Populating rev_len column\n" );
$rev = $this->doLenUpdates( 'revision', 'rev_id', 'rev' );
$rev = $this->doLenUpdates( 'revision', 'rev_id', 'rev', Revision::selectFields() );
$this->output( "Populating ar_len column\n" );
$ar = $this->doLenUpdates( 'archive', 'ar_id', 'ar' );
$ar = $this->doLenUpdates( 'archive', 'ar_id', 'ar', Revision::selectArchiveFields() );
$this->output( "rev_len and ar_len population complete [$rev revision rows, $ar archive rows].\n" );
return true;
}
/**
* @param $table
* @param $idCol
* @param $prefix
* @param string $table
* @param string $idCol
* @param string $prefix
* @param array $fields
* @return int
*/
protected function doLenUpdates( $table, $idCol, $prefix ) {
protected function doLenUpdates( $table, $idCol, $prefix, $fields ) {
$db = $this->getDB( DB_MASTER );
$start = $db->selectField( $table, "MIN($idCol)", false, __METHOD__ );
$end = $db->selectField( $table, "MAX($idCol)", false, __METHOD__ );
@ -81,9 +82,9 @@ class PopulateRevisionLength extends LoggedUpdateMaintenance {
$blockStart = intval( $start );
$blockEnd = intval( $start ) + $this->mBatchSize - 1;
$count = 0;
$fields = Revision::selectFields();
while ( $blockStart <= $end ) {
$this->output( "...doing rev_id from $blockStart to $blockEnd\n" );
$this->output( "...doing $idCol from $blockStart to $blockEnd\n" );
$res = $db->select(
$table,
$fields,
@ -114,9 +115,9 @@ class PopulateRevisionLength extends LoggedUpdateMaintenance {
/**
* @param $row
* @param $table
* @param $idCol
* @param $prefix
* @param string $table
* @param string $idCol
* @param string $prefix
* @return bool
*/
protected function upgradeRow( $row, $table, $idCol, $prefix ) {