diff options
Diffstat (limited to 'includes/api')
-rw-r--r-- | includes/api/ApiQueryAllRevisions.php | 27 | ||||
-rw-r--r-- | includes/api/ApiQueryRevisions.php | 11 | ||||
-rw-r--r-- | includes/api/ApiQueryUserContribs.php | 6 |
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'] ) ) { |