aboutsummaryrefslogtreecommitdiffstats
path: root/includes/api
diff options
context:
space:
mode:
Diffstat (limited to 'includes/api')
-rw-r--r--includes/api/ApiQueryAllRevisions.php27
-rw-r--r--includes/api/ApiQueryRevisions.php11
-rw-r--r--includes/api/ApiQueryUserContribs.php6
3 files changed, 17 insertions, 27 deletions
diff --git a/includes/api/ApiQueryAllRevisions.php b/includes/api/ApiQueryAllRevisions.php
index 774bb734d892..962cd4296e28 100644
--- a/includes/api/ApiQueryAllRevisions.php
+++ b/includes/api/ApiQueryAllRevisions.php
@@ -131,38 +131,31 @@ class ApiQueryAllRevisions extends ApiQueryRevisionsBase {
if ( $resultPageSet === null ) {
$this->parseParameters( $params );
- $revQuery = $this->revisionStore->getQueryInfo( [ 'page' ] );
+ $queryBuilder = $this->revisionStore->newSelectQueryBuilder( $db )
+ ->joinComment()
+ ->joinPage();
+ $this->getQueryBuilder()->merge( $queryBuilder );
} else {
$this->limit = $this->getParameter( 'limit' ) ?: 10;
- $revQuery = [
- 'tables' => [ 'revision' ],
- 'fields' => [ 'rev_timestamp', 'rev_id' ],
- 'joins' => [],
- ];
+ $this->addTables( [ 'revision' ] );
+ $this->addFields( [ 'rev_timestamp', 'rev_id' ] );
if ( $params['generatetitles'] ) {
- $revQuery['fields'][] = 'rev_page';
+ $this->addFields( [ 'rev_page' ] );
}
if ( $params['user'] !== null || $params['excludeuser'] !== null ) {
- $actorQuery = $this->actorMigration->getJoin( 'rev_user' );
- $revQuery['tables'] += $actorQuery['tables'];
- $revQuery['joins'] += $actorQuery['joins'];
+ $this->getQueryBuilder()->join( 'actor', 'actor_rev_user', 'actor_rev_user.actor_id = rev_actor' );
}
if ( $needPageTable ) {
- $revQuery['tables'][] = 'page';
- $revQuery['joins']['page'] = [ 'JOIN', [ "$pageField = page_id" ] ];
+ $this->getQueryBuilder()->join( 'page', null, [ "$pageField = page_id" ] );
if ( (bool)$miser_ns ) {
- $revQuery['fields'][] = 'page_namespace';
+ $this->addFields( [ 'page_namespace' ] );
}
}
}
- $this->addTables( $revQuery['tables'] );
- $this->addFields( $revQuery['fields'] );
- $this->addJoinConds( $revQuery['joins'] );
-
// Seems to be needed to avoid a planner bug (T113901)
$this->addOption( 'STRAIGHT_JOIN' );
diff --git a/includes/api/ApiQueryRevisions.php b/includes/api/ApiQueryRevisions.php
index 830baaf16347..97c450a52395 100644
--- a/includes/api/ApiQueryRevisions.php
+++ b/includes/api/ApiQueryRevisions.php
@@ -160,14 +160,13 @@ class ApiQueryRevisions extends ApiQueryRevisionsBase {
$useIndex = [];
if ( $resultPageSet === null ) {
$this->parseParameters( $params );
- $opts = [ 'page' ];
+ $queryBuilder = $this->revisionStore->newSelectQueryBuilder( $db )
+ ->joinComment()
+ ->joinPage();
if ( $this->fld_user ) {
- $opts[] = 'user';
+ $queryBuilder->joinUser();
}
- $revQuery = $this->revisionStore->getQueryInfo( $opts );
- $this->addTables( $revQuery['tables'] );
- $this->addFields( $revQuery['fields'] );
- $this->addJoinConds( $revQuery['joins'] );
+ $this->getQueryBuilder()->merge( $queryBuilder );
} else {
$this->limit = $this->getParameter( 'limit' ) ?: 10;
// Always join 'page' so orphaned revisions are filtered out
diff --git a/includes/api/ApiQueryUserContribs.php b/includes/api/ApiQueryUserContribs.php
index 51b30855ecb0..a695fb207f4e 100644
--- a/includes/api/ApiQueryUserContribs.php
+++ b/includes/api/ApiQueryUserContribs.php
@@ -374,7 +374,7 @@ class ApiQueryUserContribs extends ApiQueryBase {
$this->resetQueryParams();
$db = $this->getDB();
- $revQuery = $this->revisionStore->getQueryInfo( [ 'page' ] );
+ $queryBuilder = $this->revisionStore->newSelectQueryBuilder( $db )->joinComment()->joinPage();
$revWhere = $this->actorMigration->getWhere( $db, 'rev_user', $users );
$orderUserField = 'rev_actor';
@@ -382,9 +382,7 @@ class ApiQueryUserContribs extends ApiQueryBase {
$tsField = 'rev_timestamp';
$idField = 'rev_id';
- $this->addTables( $revQuery['tables'] );
- $this->addJoinConds( $revQuery['joins'] );
- $this->addFields( $revQuery['fields'] );
+ $this->getQueryBuilder()->merge( $queryBuilder );
$this->addWhere( $revWhere['conds'] );
// Force the appropriate index to avoid bad query plans (T307815 and T307295)
if ( isset( $revWhere['orconds']['newactor'] ) ) {