X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=blobdiff_plain;f=maintenance%2FpopulateRevisionSha1.php;h=7ced779bfd2dc1a172a5049c9ddeca2984f009f0;hp=c06f1e85df433f266e6ff3dd9b924dbb18b0d0d0;hb=1a40e0cc86b6ee0706606ded3ea243dfde4a414c;hpb=052c6c9aedfce9b5470f5709da14268bc7c8bc38 diff --git a/maintenance/populateRevisionSha1.php b/maintenance/populateRevisionSha1.php index c06f1e85df..7ced779bfd 100644 --- a/maintenance/populateRevisionSha1.php +++ b/maintenance/populateRevisionSha1.php @@ -45,9 +45,9 @@ class PopulateRevisionSha1 extends LoggedUpdateMaintenance { $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 ); @@ -55,10 +55,10 @@ class PopulateRevisionSha1 extends LoggedUpdateMaintenance { } $this->output( "Populating rev_sha1 column\n" ); - $rc = $this->doSha1Updates( 'revision', 'rev_id', Revision::selectFields(), 'rev' ); + $rc = $this->doSha1Updates( 'revision', 'rev_id', Revision::getQueryInfo(), 'rev' ); $this->output( "Populating ar_sha1 column\n" ); - $ac = $this->doSha1Updates( 'archive', 'ar_rev_id', Revision::selectArchiveFields(), 'ar' ); + $ac = $this->doSha1Updates( 'archive', 'ar_rev_id', Revision::getArchiveQueryInfo(), 'ar' ); $this->output( "Populating ar_sha1 column legacy rows\n" ); $ac += $this->doSha1LegacyUpdates(); @@ -71,11 +71,13 @@ class PopulateRevisionSha1 extends LoggedUpdateMaintenance { /** * @param string $table * @param string $idCol + * @param array $queryInfo * @param string $prefix * @return int Rows changed */ - protected function doSha1Updates( $table, $idCol, $fields, $prefix ) { + protected function doSha1Updates( $table, $idCol, $queryInfo, $prefix ) { $db = $this->getDB( DB_MASTER ); + $batchSize = $this->getBatchSize(); $start = $db->selectField( $table, "MIN($idCol)", false, __METHOD__ ); $end = $db->selectField( $table, "MAX($idCol)", false, __METHOD__ ); if ( !$start || !$end ) { @@ -86,14 +88,16 @@ class PopulateRevisionSha1 extends LoggedUpdateMaintenance { $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, $fields, $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 ) { @@ -103,8 +107,8 @@ class PopulateRevisionSha1 extends LoggedUpdateMaintenance { } $this->commitTransaction( $db, __METHOD__ ); - $blockStart += $this->mBatchSize; - $blockEnd += $this->mBatchSize; + $blockStart += $batchSize; + $blockEnd += $batchSize; wfWaitForSlaves(); } @@ -117,8 +121,9 @@ class PopulateRevisionSha1 extends LoggedUpdateMaintenance { protected function doSha1LegacyUpdates() { $count = 0; $db = $this->getDB( DB_MASTER ); - $res = $db->select( 'archive', Revision::selectArchiveFields(), - [ '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__ );