aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUmherirrender <umherirrender_de.wp@web.de>2024-04-27 01:08:48 +0200
committerUmherirrender <umherirrender_de.wp@web.de>2024-04-27 22:28:20 +0000
commitbf82200fff4f9f8616afd60eec001d37c7635a7b (patch)
treec25b95e5fc4aed04eed051249bd78fdedfb081e4
parentc82e682bb71d9c108cda395dbdb1dc1fc69ba191 (diff)
downloadmediawikicore-bf82200fff4f9f8616afd60eec001d37c7635a7b.tar.gz
mediawikicore-bf82200fff4f9f8616afd60eec001d37c7635a7b.zip
maintenance: Migrate to IReadableDatabase::newSelectQueryBuilder
Bug: T344971 Change-Id: Iacd0d77ee4ec747bd810b48e236637ee081debe6
-rw-r--r--maintenance/TableCleanup.php5
-rw-r--r--maintenance/populateIpChanges.php32
-rw-r--r--maintenance/rebuildImages.php11
-rw-r--r--maintenance/removeUnusedAccounts.php12
-rw-r--r--maintenance/userOptions.php15
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 ] )