$db = $this->getDB( DB_MASTER );
if ( !$db->tableExists( 'revision' ) ) {
- $this->error( "revision table does not exist", true );
+ $this->fatalError( "revision table does not exist" );
} elseif ( !$db->tableExists( 'archive' ) ) {
- $this->error( "archive table does not exist", true );
+ $this->fatalError( "archive table does not exist" );
} elseif ( !$db->fieldExists( 'revision', 'rev_sha1', __METHOD__ ) ) {
$this->output( "rev_sha1 column does not exist\n\n", true );
}
$this->output( "Populating rev_sha1 column\n" );
- $rc = $this->doSha1Updates( 'revision', 'rev_id', 'rev' );
+ $rc = $this->doSha1Updates( 'revision', 'rev_id', Revision::getQueryInfo(), 'rev' );
$this->output( "Populating ar_sha1 column\n" );
- $ac = $this->doSha1Updates( 'archive', 'ar_rev_id', 'ar' );
+ $ac = $this->doSha1Updates( 'archive', 'ar_rev_id', Revision::getArchiveQueryInfo(), 'ar' );
$this->output( "Populating ar_sha1 column legacy rows\n" );
$ac += $this->doSha1LegacyUpdates();
/**
* @param string $table
* @param string $idCol
+ * @param array $queryInfo
* @param string $prefix
* @return int Rows changed
*/
- protected function doSha1Updates( $table, $idCol, $prefix ) {
+ protected function doSha1Updates( $table, $idCol, $queryInfo, $prefix ) {
$db = $this->getDB( DB_MASTER );
- $start = $db->selectField( $table, "MIN($idCol)", false, __METHOD__ );
- $end = $db->selectField( $table, "MAX($idCol)", false, __METHOD__ );
+ $batchSize = $this->getBatchSize();
+ $start = $db->selectField( $table, "MIN($idCol)", '', __METHOD__ );
+ $end = $db->selectField( $table, "MAX($idCol)", '', __METHOD__ );
if ( !$start || !$end ) {
$this->output( "...$table table seems to be empty.\n" );
$count = 0;
# Do remaining chunk
- $end += $this->mBatchSize - 1;
+ $end += $batchSize - 1;
$blockStart = $start;
- $blockEnd = $start + $this->mBatchSize - 1;
+ $blockEnd = $start + $batchSize - 1;
while ( $blockEnd <= $end ) {
$this->output( "...doing $idCol from $blockStart to $blockEnd\n" );
- $cond = "$idCol BETWEEN $blockStart AND $blockEnd
- AND $idCol IS NOT NULL AND {$prefix}_sha1 = ''";
- $res = $db->select( $table, '*', $cond, __METHOD__ );
+ $cond = "$idCol BETWEEN " . (int)$blockStart . " AND " . (int)$blockEnd .
+ " AND $idCol IS NOT NULL AND {$prefix}_sha1 = ''";
+ $res = $db->select(
+ $queryInfo['tables'], $queryInfo['fields'], $cond, __METHOD__, [], $queryInfo['joins']
+ );
$this->beginTransaction( $db, __METHOD__ );
foreach ( $res as $row ) {
}
$this->commitTransaction( $db, __METHOD__ );
- $blockStart += $this->mBatchSize;
- $blockEnd += $this->mBatchSize;
- wfWaitForSlaves();
+ $blockStart += $batchSize;
+ $blockEnd += $batchSize;
}
return $count;
protected function doSha1LegacyUpdates() {
$count = 0;
$db = $this->getDB( DB_MASTER );
- $res = $db->select( 'archive', '*',
- [ 'ar_rev_id IS NULL', 'ar_sha1' => '' ], __METHOD__ );
+ $arQuery = Revision::getArchiveQueryInfo();
+ $res = $db->select( $arQuery['tables'], $arQuery['fields'],
+ [ 'ar_rev_id IS NULL', 'ar_sha1' => '' ], __METHOD__, [], $arQuery['joins'] );
$updateSize = 0;
$this->beginTransaction( $db, __METHOD__ );
$updateSize = 0;
$this->commitTransaction( $db, __METHOD__ );
$this->output( "Commited row with ar_timestamp={$row->ar_timestamp}\n" );
- wfWaitForSlaves();
$this->beginTransaction( $db, __METHOD__ );
}
}
}
}
-$maintClass = "PopulateRevisionSha1";
+$maintClass = PopulateRevisionSha1::class;
require_once RUN_MAINTENANCE_IF_MAIN;