diff options
author | Umherirrender <umherirrender_de.wp@web.de> | 2024-04-27 01:08:48 +0200 |
---|---|---|
committer | Umherirrender <umherirrender_de.wp@web.de> | 2024-04-27 22:28:20 +0000 |
commit | bf82200fff4f9f8616afd60eec001d37c7635a7b (patch) | |
tree | c25b95e5fc4aed04eed051249bd78fdedfb081e4 | |
parent | c82e682bb71d9c108cda395dbdb1dc1fc69ba191 (diff) | |
download | mediawikicore-bf82200fff4f9f8616afd60eec001d37c7635a7b.tar.gz mediawikicore-bf82200fff4f9f8616afd60eec001d37c7635a7b.zip |
maintenance: Migrate to IReadableDatabase::newSelectQueryBuilder
Bug: T344971
Change-Id: Iacd0d77ee4ec747bd810b48e236637ee081debe6
-rw-r--r-- | maintenance/TableCleanup.php | 5 | ||||
-rw-r--r-- | maintenance/populateIpChanges.php | 32 | ||||
-rw-r--r-- | maintenance/rebuildImages.php | 11 | ||||
-rw-r--r-- | maintenance/removeUnusedAccounts.php | 12 | ||||
-rw-r--r-- | maintenance/userOptions.php | 15 |
5 files changed, 35 insertions, 40 deletions
diff --git a/maintenance/TableCleanup.php b/maintenance/TableCleanup.php index 42e85bd2e71c..c305d1360bae 100644 --- a/maintenance/TableCleanup.php +++ b/maintenance/TableCleanup.php @@ -123,7 +123,10 @@ class TableCleanup extends Maintenance { $table = $params['table']; // count(*) would melt the DB for huge tables, we can estimate here - $count = $dbr->estimateRowCount( $table, '*', '', __METHOD__ ); + $count = $dbr->newSelectQueryBuilder() + ->table( $table ) + ->caller( __METHOD__ ) + ->estimateRowCount(); $this->init( $count, $table ); $this->output( "Processing $table...\n" ); diff --git a/maintenance/populateIpChanges.php b/maintenance/populateIpChanges.php index f1f7f08c32c8..39df29d4ba41 100644 --- a/maintenance/populateIpChanges.php +++ b/maintenance/populateIpChanges.php @@ -1,7 +1,7 @@ <?php /** * Find all revisions by logged out users and copy the rev_id, - * rev_timestamp, and a hex representation of rev_user_text to the + * rev_timestamp, and a hex representation of IP address to the * new ip_changes table. This table is used to efficiently query for * contributions within an IP range. * @@ -26,12 +26,11 @@ require_once __DIR__ . '/Maintenance.php'; -use MediaWiki\User\ActorMigration; use Wikimedia\IPUtils; /** * Maintenance script that will find all rows in the revision table where - * rev_user = 0 (user is an IP), and copy relevant fields to ip_changes so + * rev_actor refers to an IP actor, and copy relevant fields to ip_changes so * that historical data will be available when querying for IP ranges. * * @ingroup Maintenance @@ -91,24 +90,19 @@ TEXT $this->output( "Copying IP revisions to ip_changes, from rev_id $start to rev_id $end\n" ); - $actorMigration = ActorMigration::newMigration(); - $actorQuery = $actorMigration->getJoin( 'rev_user' ); - $revUserIsAnon = $actorMigration->isAnon( $actorQuery['fields']['rev_user'] ); - while ( $blockStart <= $end ) { $blockEnd = min( $blockStart + $this->getBatchSize(), $end ); - $rows = $dbr->select( - [ 'revision' ] + $actorQuery['tables'], - [ 'rev_id', 'rev_timestamp', 'rev_user_text' => $actorQuery['fields']['rev_user_text'] ], - [ + $rows = $dbr->newSelectQueryBuilder() + ->select( [ 'rev_id', 'rev_timestamp', 'actor_name' ] ) + ->from( 'revision' ) + ->join( 'actor', null, 'actor_id = rev_actor' ) + ->where( [ $dbr->expr( 'rev_id', '>=', (int)$blockStart ), $dbr->expr( 'rev_id', '<=', (int)$blockEnd ), - $revUserIsAnon - ], - __METHOD__, - [], - $actorQuery['joins'] - ); + 'actor_user' => null, + ] ) + ->caller( __METHOD__ ) + ->fetchResultSet(); $numRows = $rows->numRows(); @@ -123,11 +117,11 @@ TEXT $insertRows = []; foreach ( $rows as $row ) { // Make sure this is really an IP, e.g. not maintenance user or imported revision. - if ( IPUtils::isValid( $row->rev_user_text ) ) { + if ( IPUtils::isValid( $row->actor_name ) ) { $insertRows[] = [ 'ipc_rev_id' => $row->rev_id, 'ipc_rev_timestamp' => $row->rev_timestamp, - 'ipc_hex' => IPUtils::toHex( $row->rev_user_text ), + 'ipc_hex' => IPUtils::toHex( $row->actor_name ), ]; $attempted++; diff --git a/maintenance/rebuildImages.php b/maintenance/rebuildImages.php index e3916a78b36f..c4294be86b48 100644 --- a/maintenance/rebuildImages.php +++ b/maintenance/rebuildImages.php @@ -32,6 +32,7 @@ require_once __DIR__ . '/Maintenance.php'; +use MediaWiki\FileRepo\File\FileSelectQueryBuilder; use MediaWiki\Specials\SpecialUpload; use MediaWiki\User\User; use Wikimedia\Rdbms\IMaintainableDatabase; @@ -150,7 +151,7 @@ class ImageBuilder extends Maintenance { flush(); } - private function buildTable( $table, $queryInfo, $callback ) { + private function buildTable( $table, $queryBuilder, $callback ) { $count = $this->dbw->newSelectQueryBuilder() ->select( 'count(*)' ) ->from( $table ) @@ -158,9 +159,7 @@ class ImageBuilder extends Maintenance { $this->init( $count, $table ); $this->output( "Processing $table...\n" ); - $result = $this->getReplicaDB()->select( - $queryInfo['tables'], $queryInfo['fields'], [], __METHOD__, [], $queryInfo['joins'] - ); + $result = $queryBuilder->caller( __METHOD__ )->fetchResultSet(); foreach ( $result as $row ) { $update = call_user_func( $callback, $row ); @@ -175,7 +174,7 @@ class ImageBuilder extends Maintenance { private function buildImage() { $callback = [ $this, 'imageCallback' ]; - $this->buildTable( 'image', LocalFile::getQueryInfo(), $callback ); + $this->buildTable( 'image', FileSelectQueryBuilder::newForFile( $this->getReplicaDB() ), $callback ); } private function imageCallback( $row ) { @@ -187,7 +186,7 @@ class ImageBuilder extends Maintenance { } private function buildOldImage() { - $this->buildTable( 'oldimage', OldLocalFile::getQueryInfo(), + $this->buildTable( 'oldimage', FileSelectQueryBuilder::newForOldFile( $this->getReplicaDB() ), [ $this, 'oldimageCallback' ] ); } diff --git a/maintenance/removeUnusedAccounts.php b/maintenance/removeUnusedAccounts.php index f0ebe79c5509..afbca792d194 100644 --- a/maintenance/removeUnusedAccounts.php +++ b/maintenance/removeUnusedAccounts.php @@ -194,12 +194,12 @@ class RemoveUnusedAccounts extends Maintenance { $this->beginTransaction( $dbo, __METHOD__ ); foreach ( $checks as $table => $prefix ) { - $count += (int)$dbo->selectField( - $table, - 'COUNT(*)', - [ "{$prefix}_actor" => $actor ], - __METHOD__ - ); + $count += (int)$dbo->newSelectQueryBuilder() + ->select( 'COUNT(*)' ) + ->from( $table ) + ->where( [ "{$prefix}_actor" => $actor ] ) + ->caller( __METHOD__ ) + ->fetchField(); } $count += (int)$dbo->newSelectQueryBuilder() diff --git a/maintenance/userOptions.php b/maintenance/userOptions.php index 13850775308e..904f4609e39c 100644 --- a/maintenance/userOptions.php +++ b/maintenance/userOptions.php @@ -182,8 +182,7 @@ WARN $userOptionsManager = $this->getServiceContainer()->getUserOptionsManager(); $tempUserConfig = $this->getServiceContainer()->getTempUserConfig(); $dbr = $this->getReplicaDB(); - $queryBuilderTemplate = new SelectQueryBuilder( $dbr ); - $queryBuilderTemplate + $queryBuilderTemplate = $dbr->newSelectQueryBuilder() ->table( 'user' ) ->leftJoin( 'user_properties', null, [ 'user_id = up_user', @@ -198,7 +197,7 @@ WARN ->limit( $this->getBatchSize() ) ->caller( __METHOD__ ); if ( $toUserId ) { - $queryBuilderTemplate->andWhere( "user_id <= $toUserId " ); + $queryBuilderTemplate->andWhere( $dbr->expr( 'user_id', '<=', $toUserId ) ); } if ( $tempUserConfig->isEnabled() ) { @@ -209,7 +208,7 @@ WARN do { $queryBuilder = clone $queryBuilderTemplate; - $queryBuilder->andWhere( "user_id > $fromUserId" ); + $queryBuilder->andWhere( $dbr->expr( 'user_id', '>', $fromUserId ) ); $result = $queryBuilder->fetchResultSet(); foreach ( $result as $row ) { $fromUserId = (int)$row->user_id; @@ -266,9 +265,9 @@ WARN $queryBuilder = $dbr->newSelectQueryBuilder() ->select( 'up_user' ) ->from( 'user_properties' ) - ->where( [ 'up_property' => $option, "up_user > $minUserId" ] ); + ->where( [ 'up_property' => $option, $dbr->expr( 'up_user', '>', $minUserId ) ] ); if ( $this->hasOption( 'touserid' ) ) { - $queryBuilder->andWhere( "up_user < $toUserId" ); + $queryBuilder->andWhere( $dbr->expr( 'up_user', '<', $toUserId ) ); } if ( $this->hasOption( 'old' ) ) { $queryBuilder->andWhere( [ 'up_value' => $old ] ); @@ -329,8 +328,8 @@ WARN $dbr = $this->getDB( DB_REPLICA ); $dbw = $this->getDB( DB_PRIMARY ); - $queryBuilderTemplate = new SelectQueryBuilder( $dbr ); - $queryBuilderTemplate->select( [ 'user_id', 'user_name', 'up_value' ] ) + $queryBuilderTemplate = $dbr->newSelectQueryBuilder() + ->select( [ 'user_id', 'user_name', 'up_value' ] ) ->from( 'user_properties' ) ->join( 'user', null, [ 'up_user = user_id' ] ) ->where( [ 'up_property' => $option ] ) |