From: Aaron Schulz Date: Fri, 16 Jan 2015 01:55:39 +0000 (-0800) Subject: Made Revision::newFromPageId avoid master queries like newFromTitle does X-Git-Tag: 1.31.0-rc.0~12510^2 X-Git-Url: https://git.cyclocoop.org//%22?a=commitdiff_plain;h=abd49a9dec5be2c8ee8def1d67b77d6e1e3c6429;p=lhc%2Fweb%2Fwiklou.git Made Revision::newFromPageId avoid master queries like newFromTitle does Change-Id: I8b8092467d2e6ef7755b5e9aa1986f73fbd1d324 --- diff --git a/includes/Revision.php b/includes/Revision.php index c8015e62b6..e9ac424da1 100644 --- a/includes/Revision.php +++ b/includes/Revision.php @@ -121,7 +121,9 @@ class Revision implements IDBAccessObject { if ( $id ) { // Use the specified ID $conds['rev_id'] = $id; - return self::newFromConds( $conds, (int)$flags ); + // This uses slave->master fallback with READ_NORMAL. Assuming revdelete, + // moves, and merges are rare, callers can use this to reduce master queries. + return self::newFromConds( $conds, $flags ); } else { // Use a join to get the latest revision $conds[] = 'rev_id=page_latest'; @@ -148,11 +150,15 @@ class Revision implements IDBAccessObject { $conds = array( 'page_id' => $pageId ); if ( $revId ) { $conds['rev_id'] = $revId; + // This uses slave->master fallback with READ_NORMAL. Assuming revdelete + // and merges are rare, callers can use this to reduce master queries. + return self::newFromConds( $conds, $flags ); } else { // Use a join to get the latest revision $conds[] = 'rev_id = page_latest'; + $db = wfGetDB( ( $flags & self::READ_LATEST ) ? DB_MASTER : DB_SLAVE ); + return self::loadFromConds( $db, $conds, $flags ); } - return self::newFromConds( $conds, (int)$flags ); } /**