refreshLinks.php: Tweak exit condition in deleteLinksFromNonexistent()
authorKevin Israel <pleasestand@live.com>
Sat, 28 Feb 2015 09:54:48 +0000 (04:54 -0500)
committerKevin Israel <pleasestand@live.com>
Sat, 28 Feb 2015 09:54:48 +0000 (04:54 -0500)
Instead of exiting the do...while loop only once a query returns zero
rows, exit whenever fewer rows than the batch size are returned. This
could save quite a bit of time when the highest nonexistent page_id
found is a relatively low one.

Follows-up 40e300b8273d.

Bug: T44180
Change-Id: I14d2d48c2405fcc0bd05a3181ba6293caef5298c

maintenance/refreshLinks.php

index 7c85a1c..b2f7497 100644 (file)
@@ -284,7 +284,7 @@ class RefreshLinks extends Maintenance {
                        $this->output( "0.." );
 
                        do {
-                               $list = $dbr->selectFieldValues(
+                               $ids = $dbr->selectFieldValues(
                                        $table,
                                        $field,
                                        array(
@@ -295,15 +295,16 @@ class RefreshLinks extends Maintenance {
                                        array( 'DISTINCT', 'ORDER BY' => $field, 'LIMIT' => $batchSize )
                                );
 
-                               if ( $list ) {
-                                       $counter += count( $list );
+                               $numIds = count( $ids );
+                               if ( $numIds ) {
+                                       $counter += $numIds;
                                        wfWaitForSlaves();
-                                       $dbw->delete( $table, array( $field => $list ), __METHOD__ );
+                                       $dbw->delete( $table, array( $field => $ids ), __METHOD__ );
                                        $this->output( $counter . ".." );
-                                       $start = $list[count( $list ) - 1] + 1;
+                                       $start = $ids[$numIds - 1] + 1;
                                }
 
-                       } while ( $list );
+                       } while ( $numIds >= $batchSize );
 
                        $this->output( "\n" );
                        wfWaitForSlaves();