Merge "skins: Remove 'usemsgcache' and deprecate getDynamicStylesheetQuery"
[lhc/web/wiklou.git] / maintenance / populateContentTables.php
index 20d6b8b..93d5baf 100644 (file)
@@ -21,6 +21,7 @@
 
 use MediaWiki\MediaWikiServices;
 use MediaWiki\Storage\NameTableStore;
+use MediaWiki\Storage\SlotRecord;
 use MediaWiki\Storage\SqlBlobStore;
 use Wikimedia\Assert\Assert;
 use Wikimedia\Rdbms\IDatabase;
@@ -58,13 +59,16 @@ 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 );
        }
 
        private function initServices() {
                $this->dbw = $this->getDB( DB_MASTER );
                $this->contentModelStore = MediaWikiServices::getInstance()->getContentModelStore();
-               $this->mainRoleId = MediaWikiServices::getInstance()->getSlotRoleStore()->acquireId( 'main' );
+               $this->mainRoleId = MediaWikiServices::getInstance()->getSlotRoleStore()
+                       ->acquireId( SlotRecord::MAIN );
        }
 
        public function execute() {
@@ -165,6 +169,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 +185,7 @@ class PopulateContentTables extends Maintenance {
                        $joins = [
                                'slots' => [ 'LEFT JOIN', 'ar_rev_id=slot_revision_id' ],
                        ];
+                       $startOption = 'start-archive';
                }
 
                $minmax = $this->dbw->selectRow(
@@ -188,6 +194,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 ];