diff options
-rw-r--r-- | includes/api/ApiQueryUserContribs.php | 4 | ||||
-rw-r--r-- | includes/specials/pagers/ContribsPager.php | 5 | ||||
-rw-r--r-- | maintenance/migrateExternallinks.php | 5 | ||||
-rw-r--r-- | maintenance/migrateLinksTable.php | 8 | ||||
-rw-r--r-- | maintenance/migrateUserGroup.php | 9 | ||||
-rw-r--r-- | maintenance/populateBacklinkNamespace.php | 5 | ||||
-rw-r--r-- | maintenance/populateIpChanges.php | 6 | ||||
-rw-r--r-- | maintenance/populateRevisionSha1.php | 10 | ||||
-rw-r--r-- | maintenance/rebuildFileCache.php | 5 | ||||
-rw-r--r-- | maintenance/rebuildtextindex.php | 6 | ||||
-rw-r--r-- | maintenance/refreshLinks.php | 13 | ||||
-rw-r--r-- | maintenance/storage/checkStorage.php | 5 | ||||
-rw-r--r-- | maintenance/storage/fixLegacyEncoding.php | 11 | ||||
-rw-r--r-- | maintenance/storage/moveToExternal.php | 8 | ||||
-rw-r--r-- | maintenance/updateSearchIndex.php | 3 |
15 files changed, 67 insertions, 36 deletions
diff --git a/includes/api/ApiQueryUserContribs.php b/includes/api/ApiQueryUserContribs.php index 11437e0b5907..af7b2f2c5e9d 100644 --- a/includes/api/ApiQueryUserContribs.php +++ b/includes/api/ApiQueryUserContribs.php @@ -244,9 +244,7 @@ class ApiQueryUserContribs extends ApiQueryBase { $res = $dbSecondary->newSelectQueryBuilder() ->select( 'ipc_hex' ) ->from( 'ip_changes' ) - ->where( [ 'ipc_hex BETWEEN ' . $dbSecondary->addQuotes( $start ) . - ' AND ' . $dbSecondary->addQuotes( $end ) - ] ) + ->where( $dbSecondary->expr( 'ipc_hex', '>=', $start )->and( 'ipc_hex', '<=', $end ) ) ->groupBy( 'ipc_hex' ) ->orderBy( 'ipc_hex', $sort ) ->limit( $limit ) diff --git a/includes/specials/pagers/ContribsPager.php b/includes/specials/pagers/ContribsPager.php index ee6272ae9810..f6b5819f7e0f 100644 --- a/includes/specials/pagers/ContribsPager.php +++ b/includes/specials/pagers/ContribsPager.php @@ -50,6 +50,7 @@ use stdClass; use Wikimedia\IPUtils; use Wikimedia\Rdbms\FakeResultWrapper; use Wikimedia\Rdbms\IConnectionProvider; +use Wikimedia\Rdbms\IExpression; use Wikimedia\Rdbms\IReadableDatabase; use Wikimedia\Rdbms\IResultWrapper; @@ -457,7 +458,7 @@ class ContribsPager extends RangeChronologicalPager { * Get SQL conditions for an IP range, if applicable * @param IReadableDatabase $db * @param string $ip The IP address or CIDR - * @return string|false SQL for valid IP ranges, false if invalid + * @return IExpression|false SQL for valid IP ranges, false if invalid */ private function getIpRangeConds( $db, $ip ) { // First make sure it is a valid range and they are not outside the CIDR limit @@ -467,7 +468,7 @@ class ContribsPager extends RangeChronologicalPager { [ $start, $end ] = IPUtils::parseRange( $ip ); - return 'ipc_hex BETWEEN ' . $db->addQuotes( $start ) . ' AND ' . $db->addQuotes( $end ); + return $db->expr( 'ipc_hex', '>=', $start )->and( 'ipc_hex', '<=', $end ); } /** diff --git a/maintenance/migrateExternallinks.php b/maintenance/migrateExternallinks.php index b07868b80fcd..e6e7cff878b2 100644 --- a/maintenance/migrateExternallinks.php +++ b/maintenance/migrateExternallinks.php @@ -69,7 +69,7 @@ class MigrateExternallinks extends LoggedUpdateMaintenance { private function handleBatch( $lowId ) { $batchSize = $this->getBatchSize(); - // BETWEEN is inclusive, let's subtract one. + // range is inclusive, let's subtract one. $highId = $lowId + $batchSize - 1; $dbw = $this->getPrimaryDB(); $updated = 0; @@ -78,7 +78,8 @@ class MigrateExternallinks extends LoggedUpdateMaintenance { ->from( 'externallinks' ) ->where( [ 'el_to_domain_index' => '', - "el_id BETWEEN $lowId AND $highId" + $dbw->expr( 'el_id', '>=', $lowId ), + $dbw->expr( 'el_id', '<=', $highId ), ] ) ->limit( $batchSize ) ->caller( __METHOD__ ) diff --git a/maintenance/migrateLinksTable.php b/maintenance/migrateLinksTable.php index e2528e16b0ca..c7ade06e8166 100644 --- a/maintenance/migrateLinksTable.php +++ b/maintenance/migrateLinksTable.php @@ -90,7 +90,7 @@ class MigrateLinksTable extends LoggedUpdateMaintenance { $batchSize = $this->getBatchSize(); $targetColumn = $mapping[$table]['target_id']; $pageIdColumn = $mapping[$table]['page_id']; - // BETWEEN is inclusive, let's subtract one. + // range is inclusive, let's subtract one. $highPageId = $lowPageId + $batchSize - 1; $dbw = $this->getPrimaryDB(); $updated = 0; @@ -101,7 +101,8 @@ class MigrateLinksTable extends LoggedUpdateMaintenance { ->from( $table ) ->where( [ $targetColumn => [ null, 0 ], - "$pageIdColumn BETWEEN $lowPageId AND $highPageId" + $dbw->expr( $pageIdColumn, '>=', $lowPageId ), + $dbw->expr( $pageIdColumn, '<=', $highPageId ), ] ) ->limit( 1 ) ->caller( __METHOD__ ) @@ -123,7 +124,8 @@ class MigrateLinksTable extends LoggedUpdateMaintenance { $targetColumn => [ null, 0 ], $mapping[$table]['ns'] => $ns, $mapping[$table]['title'] => $titleString, - "$pageIdColumn BETWEEN $lowPageId AND $highPageId" + $dbw->expr( $pageIdColumn, '>=', $lowPageId ), + $dbw->expr( $pageIdColumn, '<=', $highPageId ), ] ) ->caller( __METHOD__ )->execute(); $updatedInThisBatch = $dbw->affectedRows(); diff --git a/maintenance/migrateUserGroup.php b/maintenance/migrateUserGroup.php index 91fce7bf5bac..e17f393e3229 100644 --- a/maintenance/migrateUserGroup.php +++ b/maintenance/migrateUserGroup.php @@ -74,7 +74,8 @@ class MigrateUserGroup extends Maintenance { ->set( [ 'ug_group' => $newGroup ] ) ->where( [ 'ug_group' => $oldGroup, - "ug_user BETWEEN " . (int)$blockStart . " AND " . (int)$blockEnd + $dbw->expr( 'ug_user', '>=', (int)$blockStart ), + $dbw->expr( 'ug_user', '<=', (int)$blockEnd ), ] ) ->caller( __METHOD__ )->execute(); $affected += $dbw->affectedRows(); @@ -86,7 +87,8 @@ class MigrateUserGroup extends Maintenance { ->deleteFrom( 'user_groups' ) ->where( [ 'ug_group' => $oldGroup, - "ug_user BETWEEN " . (int)$blockStart . " AND " . (int)$blockEnd + $dbw->expr( 'ug_user', '>=', (int)$blockStart ), + $dbw->expr( 'ug_user', '<=', (int)$blockEnd ), ] ) ->caller( __METHOD__ )->execute(); $affected += $dbw->affectedRows(); @@ -101,7 +103,8 @@ class MigrateUserGroup extends Maintenance { ->from( 'user_groups' ) ->where( [ 'ug_group' => $newGroup, - "ug_user BETWEEN " . (int)$blockStart . " AND " . (int)$blockEnd + $dbw->expr( 'ug_user', '>=', (int)$blockStart ), + $dbw->expr( 'ug_user', '<=', (int)$blockEnd ), ] ) ->caller( __METHOD__ )->fetchResultSet(); if ( $res !== false ) { diff --git a/maintenance/populateBacklinkNamespace.php b/maintenance/populateBacklinkNamespace.php index c7947097dca9..f2410fc487d1 100644 --- a/maintenance/populateBacklinkNamespace.php +++ b/maintenance/populateBacklinkNamespace.php @@ -74,7 +74,10 @@ class PopulateBacklinkNamespace extends LoggedUpdateMaintenance { $res = $db->newSelectQueryBuilder() ->select( [ 'page_id', 'page_namespace' ] ) ->from( 'page' ) - ->where( "page_id BETWEEN " . (int)$blockStart . " AND " . (int)$blockEnd ) + ->where( [ + $db->expr( 'page_id', '>=', (int)$blockStart ), + $db->expr( 'page_id', '<=', (int)$blockEnd ), + ] ) ->caller( __METHOD__ )->fetchResultSet(); foreach ( $res as $row ) { $db->newUpdateQueryBuilder() diff --git a/maintenance/populateIpChanges.php b/maintenance/populateIpChanges.php index 6d869b69fbee..f1f7f08c32c8 100644 --- a/maintenance/populateIpChanges.php +++ b/maintenance/populateIpChanges.php @@ -100,7 +100,11 @@ TEXT $rows = $dbr->select( [ 'revision' ] + $actorQuery['tables'], [ 'rev_id', 'rev_timestamp', 'rev_user_text' => $actorQuery['fields']['rev_user_text'] ], - [ "rev_id BETWEEN " . (int)$blockStart . " AND " . (int)$blockEnd, $revUserIsAnon ], + [ + $dbr->expr( 'rev_id', '>=', (int)$blockStart ), + $dbr->expr( 'rev_id', '<=', (int)$blockEnd ), + $revUserIsAnon + ], __METHOD__, [], $actorQuery['joins'] diff --git a/maintenance/populateRevisionSha1.php b/maintenance/populateRevisionSha1.php index 716a82d00e2a..45166df1490a 100644 --- a/maintenance/populateRevisionSha1.php +++ b/maintenance/populateRevisionSha1.php @@ -106,11 +106,11 @@ class PopulateRevisionSha1 extends LoggedUpdateMaintenance { while ( $blockEnd <= $end ) { $this->output( "...doing $idCol from $blockStart to $blockEnd\n" ); - $cond = "$idCol BETWEEN " . (int)$blockStart . " AND " . (int)$blockEnd . - " AND $idCol IS NOT NULL AND {$prefix}_sha1 = ''"; - - $res = $queryBuilder->where( $cond ) - ->caller( __METHOD__ )->fetchResultSet(); + $res = $queryBuilder->where( [ + $db->expr( $idCol, '>=', (int)$blockStart )->and( $idCol, '<=', (int)$blockEnd ), + $db->expr( $idCol, '!=', null ), + "{$prefix}_sha1" => '', + ] )->caller( __METHOD__ )->fetchResultSet(); $this->beginTransaction( $db, __METHOD__ ); foreach ( $res as $row ) { diff --git a/maintenance/rebuildFileCache.php b/maintenance/rebuildFileCache.php index b9d04156d978..f1df3bc404fb 100644 --- a/maintenance/rebuildFileCache.php +++ b/maintenance/rebuildFileCache.php @@ -126,7 +126,10 @@ class RebuildFileCache extends Maintenance { ->from( 'page' ) ->useIndex( 'PRIMARY' ) ->where( $where ) - ->andWhere( [ "page_id BETWEEN " . (int)$blockStart . " AND " . (int)$blockEnd ] ) + ->andWhere( [ + $dbr->expr( 'page_id', '>=', (int)$blockStart ), + $dbr->expr( 'page_id', '<=', (int)$blockEnd ), + ] ) ->orderBy( 'page_id', SelectQueryBuilder::SORT_ASC ) ->caller( __METHOD__ )->fetchResultSet(); diff --git a/maintenance/rebuildtextindex.php b/maintenance/rebuildtextindex.php index 6cfed8e923a1..2bafe87a50ea 100644 --- a/maintenance/rebuildtextindex.php +++ b/maintenance/rebuildtextindex.php @@ -101,8 +101,10 @@ class RebuildTextIndex extends Maintenance { } $end = $n + self::RTI_CHUNK_SIZE - 1; $queryBuilder = clone $queryBuilderTemplate; - $res = $queryBuilder->where( [ "page_id BETWEEN $n AND $end", 'page_latest = rev_id' ] ) - ->caller( __METHOD__ )->fetchResultSet(); + $res = $queryBuilder->where( [ + $dbw->expr( 'page_id', '>=', $n )->and( 'page_id', '<=', $end ), + 'page_latest = rev_id' + ] )->caller( __METHOD__ )->fetchResultSet(); foreach ( $res as $s ) { diff --git a/maintenance/refreshLinks.php b/maintenance/refreshLinks.php index f986a97a1fcd..a61711beef2c 100644 --- a/maintenance/refreshLinks.php +++ b/maintenance/refreshLinks.php @@ -23,6 +23,7 @@ use MediaWiki\Linker\LinkTarget; use MediaWiki\MediaWikiServices; use MediaWiki\Revision\RevisionRecord; use MediaWiki\Title\Title; +use Wikimedia\Rdbms\IExpression; use Wikimedia\Rdbms\IReadableDatabase; use Wikimedia\Rdbms\SelectQueryBuilder; @@ -359,7 +360,7 @@ class RefreshLinks extends Maintenance { } /** - * Build a SQL expression for a closed interval (i.e. BETWEEN). + * Build a SQL expression for a closed interval. * * By specifying a null $start or $end, it is also possible to create * half-bounded or unbounded intervals using this function. @@ -368,17 +369,17 @@ class RefreshLinks extends Maintenance { * @param string $var Field name * @param mixed $start First value to include or null * @param mixed $end Last value to include or null - * @return string + * @return IExpression */ private static function intervalCond( IReadableDatabase $db, $var, $start, $end ) { if ( $start === null && $end === null ) { - return "$var IS NOT NULL"; + return $db->expr( $var, '!=', null ); } elseif ( $end === null ) { - return "$var >= " . $db->addQuotes( $start ); + return $db->expr( $var, '>=', $start ); } elseif ( $start === null ) { - return "$var <= " . $db->addQuotes( $end ); + return $db->expr( $var, '<=', $end ); } else { - return "$var BETWEEN " . $db->addQuotes( $start ) . ' AND ' . $db->addQuotes( $end ); + return $db->expr( $var, '>=', $start )->and( $var, '<=', $end ); } } diff --git a/maintenance/storage/checkStorage.php b/maintenance/storage/checkStorage.php index 400ddff9dc7c..e28ddc17639e 100644 --- a/maintenance/storage/checkStorage.php +++ b/maintenance/storage/checkStorage.php @@ -98,7 +98,10 @@ class CheckStorage extends Maintenance { ->select( [ 'slot_revision_id', 'content_address' ] ) ->from( 'slots' ) ->join( 'content', null, 'content_id = slot_content_id' ) - ->where( [ "slot_revision_id BETWEEN $chunkStart AND $chunkEnd" ] ) + ->where( [ + $dbr->expr( 'slot_revision_id', '>=', $chunkStart ), + $dbr->expr( 'slot_revision_id', '<=', $chunkEnd ), + ] ) ->caller( __METHOD__ )->fetchResultSet(); /** @var \MediaWiki\Storage\SqlBlobStore $blobStore */ $blobStore = $this->getServiceContainer()->getBlobStore(); diff --git a/maintenance/storage/fixLegacyEncoding.php b/maintenance/storage/fixLegacyEncoding.php index c88fe712fd94..bc6658296c4b 100644 --- a/maintenance/storage/fixLegacyEncoding.php +++ b/maintenance/storage/fixLegacyEncoding.php @@ -20,6 +20,8 @@ */ use MediaWiki\Storage\SqlBlobStore; +use Wikimedia\Rdbms\IExpression; +use Wikimedia\Rdbms\LikeValue; require_once __DIR__ . '/moveToExternal.php'; @@ -31,9 +33,12 @@ class FixLegacyEncoding extends MoveToExternal { protected function getConditions( $blockStart, $blockEnd, $dbr ) { return [ - "old_id BETWEEN $blockStart AND $blockEnd", - 'old_flags NOT ' . $dbr->buildLike( $dbr->anyString(), 'utf-8', $dbr->anyString() ), - 'old_flags NOT ' . $dbr->buildLike( $dbr->anyString(), 'utf8', $dbr->anyString() ), + $dbr->expr( 'old_id', '>=', $blockStart ), + $dbr->expr( 'old_id', '<=', $blockEnd ), + $dbr->expr( 'old_flags', IExpression::NOT_LIKE, + new LikeValue( $dbr->anyString(), 'utf-8', $dbr->anyString() ) ), + $dbr->expr( 'old_flags', IExpression::NOT_LIKE, + new LikeValue( $dbr->anyString(), 'utf8', $dbr->anyString() ) ), ]; } diff --git a/maintenance/storage/moveToExternal.php b/maintenance/storage/moveToExternal.php index 508dc22fdd99..3483ccc23218 100644 --- a/maintenance/storage/moveToExternal.php +++ b/maintenance/storage/moveToExternal.php @@ -25,6 +25,8 @@ use MediaWiki\MainConfigNames; use MediaWiki\Maintenance\UndoLog; use MediaWiki\Storage\SqlBlobStore; use Wikimedia\AtEase\AtEase; +use Wikimedia\Rdbms\IExpression; +use Wikimedia\Rdbms\LikeValue; require_once __DIR__ . '/../Maintenance.php'; @@ -320,8 +322,10 @@ class MoveToExternal extends Maintenance { protected function getConditions( $blockStart, $blockEnd, $dbr ) { return [ - "old_id BETWEEN $blockStart AND $blockEnd", - 'old_flags NOT ' . $dbr->buildLike( $dbr->anyString(), 'external', $dbr->anyString() ), + $dbr->expr( 'old_id', '>=', $blockStart ), + $dbr->expr( 'old_id', '>=', $blockEnd ), + $dbr->expr( 'old_flags', IExpression::NOT_LIKE, + new LikeValue( $dbr->anyString(), 'external', $dbr->anyString() ) ), ]; } diff --git a/maintenance/updateSearchIndex.php b/maintenance/updateSearchIndex.php index 0dc2c63267c6..9722dcd28889 100644 --- a/maintenance/updateSearchIndex.php +++ b/maintenance/updateSearchIndex.php @@ -106,7 +106,8 @@ class UpdateSearchIndex extends Maintenance { ->join( 'page', null, 'rc_cur_id=page_id AND rc_this_oldid=page_latest' ) ->where( [ $dbw->expr( 'rc_type', '!=', RC_LOG ), - 'rc_timestamp BETWEEN ' . $dbw->addQuotes( $start ) . ' AND ' . $dbw->addQuotes( $end ) + $dbw->expr( 'rc_timestamp', '>=', $start ), + $dbw->expr( 'rc_timestamp', '<=', $end ), ] ) ->caller( __METHOD__ )->fetchResultSet(); |