Merge "Change php extract() to explicit code"
[lhc/web/wiklou.git] / maintenance / populateRevisionSha1.php
index fb97e91..7ced779 100644 (file)
@@ -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', '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();
 
@@ -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, $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, '*', $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', '*',
-                       [ '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__ );