Add LinkCache::getSelectFields() and use it in a few places

Change-Id: Ic65b20cc2aa41f9b481e280918fe95c57da53221
This commit is contained in:
Kunal Mehta 2016-05-13 00:00:39 -07:00
parent 69257c87ac
commit e8e2cc0ffc
3 changed files with 35 additions and 42 deletions

View file

@ -179,8 +179,6 @@ class LinkBatch {
* @return bool|ResultWrapper
*/
public function doQuery() {
global $wgContentHandlerUseDB, $wgPageLanguageUseDB;
if ( $this->isEmpty() ) {
return false;
}
@ -188,15 +186,10 @@ class LinkBatch {
// This is similar to LinkHolderArray::replaceInternal
$dbr = wfGetDB( DB_SLAVE );
$table = 'page';
$fields = [ 'page_id', 'page_namespace', 'page_title', 'page_len',
'page_is_redirect', 'page_latest' ];
if ( $wgContentHandlerUseDB ) {
$fields[] = 'page_content_model';
}
if ( $wgPageLanguageUseDB ) {
$fields[] = 'page_lang';
}
$fields = array_merge(
LinkCache::getSelectFields(),
[ 'page_namespace', 'page_title' ]
);
$conds = $this->constructSet( 'page', $dbr );

View file

@ -202,6 +202,26 @@ class LinkCache {
return $this->addLinkObj( $nt );
}
/**
* Fields that LinkCache needs to select
*
* @since 1.28
* @return array
*/
public static function getSelectFields() {
global $wgContentHandlerUseDB, $wgPageLanguageUseDB;
$fields = [ 'page_id', 'page_len', 'page_is_redirect', 'page_latest' ];
if ( $wgContentHandlerUseDB ) {
$fields[] = 'page_content_model';
}
if ( $wgPageLanguageUseDB ) {
$fields[] = 'page_lang';
}
return $fields;
}
/**
* Add a title to the link cache, return the page_id or zero if non-existent
*
@ -209,8 +229,6 @@ class LinkCache {
* @return int Page ID or zero
*/
public function addLinkObj( LinkTarget $nt ) {
global $wgContentHandlerUseDB, $wgPageLanguageUseDB;
$key = $this->titleFormatter->getPrefixedDBkey( $nt );
if ( $this->isBadLink( $key ) || $nt->isExternal() ) {
return 0;
@ -227,15 +245,7 @@ class LinkCache {
// Some fields heavily used for linking...
$db = $this->mForUpdate ? wfGetDB( DB_MASTER ) : wfGetDB( DB_SLAVE );
$fields = [ 'page_id', 'page_len', 'page_is_redirect', 'page_latest' ];
if ( $wgContentHandlerUseDB ) {
$fields[] = 'page_content_model';
}
if ( $wgPageLanguageUseDB ) {
$fields[] = 'page_lang';
}
$row = $db->selectRow( 'page', $fields,
$row = $db->selectRow( 'page', self::getSelectFields(),
[ 'page_namespace' => $nt->getNamespace(), 'page_title' => $nt->getDBkey() ],
__METHOD__
);

View file

@ -282,7 +282,7 @@ class LinkHolderArray {
return;
}
global $wgContLang, $wgContentHandlerUseDB, $wgPageLanguageUseDB;
global $wgContLang;
$colours = [];
$linkCache = LinkCache::singleton();
@ -333,15 +333,10 @@ class LinkHolderArray {
}
}
if ( !$lb->isEmpty() ) {
$fields = [ 'page_id', 'page_namespace', 'page_title',
'page_is_redirect', 'page_len', 'page_latest' ];
if ( $wgContentHandlerUseDB ) {
$fields[] = 'page_content_model';
}
if ( $wgPageLanguageUseDB ) {
$fields[] = 'page_lang';
}
$fields = array_merge(
LinkCache::getSelectFields(),
[ 'page_namespace', 'page_title' ]
);
$res = $dbr->select(
'page',
@ -454,7 +449,7 @@ class LinkHolderArray {
* @param array $colours
*/
protected function doVariants( &$colours ) {
global $wgContLang, $wgContentHandlerUseDB, $wgPageLanguageUseDB;
global $wgContLang;
$linkBatch = new LinkBatch();
$variantMap = []; // maps $pdbkey_Variant => $keys (of link holders)
$output = $this->parent->getOutput();
@ -540,15 +535,10 @@ class LinkHolderArray {
if ( !$linkBatch->isEmpty() ) {
// construct query
$dbr = wfGetDB( DB_SLAVE );
$fields = [ 'page_id', 'page_namespace', 'page_title',
'page_is_redirect', 'page_len', 'page_latest' ];
if ( $wgContentHandlerUseDB ) {
$fields[] = 'page_content_model';
}
if ( $wgPageLanguageUseDB ) {
$fields[] = 'page_lang';
}
$fields = array_merge(
LinkCache::getSelectFields(),
[ 'page_namespace', 'page_title' ]
);
$varRes = $dbr->select( 'page',
$fields,