From 13ada2dfb76851774b933e432cb0c78ce0c9ba33 Mon Sep 17 00:00:00 2001 From: Tim Starling Date: Tue, 14 Aug 2018 15:20:17 +1000 Subject: [PATCH] Fast manual restart for populateContentTables.php Currently it takes hours to scan the table if interrupted halfway through. Change-Id: Ibcc04b43629039c92abf9ec2cc2a1da07685d033 --- maintenance/populateContentTables.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/maintenance/populateContentTables.php b/maintenance/populateContentTables.php index 20d6b8b740..49db4fb978 100644 --- a/maintenance/populateContentTables.php +++ b/maintenance/populateContentTables.php @@ -58,6 +58,8 @@ class PopulateContentTables extends Maintenance { 'Reuse content table rows when the address and model are the same. ' . 'This will increase the script\'s time and memory usage, perhaps significantly.', false, false ); + $this->addOption( 'start-revision', 'The rev_id to start at', false, true ); + $this->addOption( 'start-archive', 'The ar_rev_id to start at', false, true ); $this->setBatchSize( 500 ); } @@ -165,6 +167,7 @@ class PopulateContentTables extends Maintenance { 'slots' => [ 'LEFT JOIN', 'rev_id=slot_revision_id' ], 'page' => [ 'LEFT JOIN', 'rev_page=page_id' ], ]; + $startOption = 'start-revision'; } else { $idField = 'ar_rev_id'; $tables = [ 'archive', 'slots' ]; @@ -180,6 +183,7 @@ class PopulateContentTables extends Maintenance { $joins = [ 'slots' => [ 'LEFT JOIN', 'ar_rev_id=slot_revision_id' ], ]; + $startOption = 'start-archive'; } $minmax = $this->dbw->selectRow( @@ -188,6 +192,9 @@ class PopulateContentTables extends Maintenance { '', __METHOD__ ); + if ( $this->hasOption( $startOption ) ) { + $minmax->min = (int)$this->getOption( $startOption ); + } if ( !$minmax || !is_numeric( $minmax->min ) || !is_numeric( $minmax->max ) ) { // No rows? $minmax = (object)[ 'min' => 1, 'max' => 0 ]; -- 2.20.1