From abd49a9dec5be2c8ee8def1d67b77d6e1e3c6429 Mon Sep 17 00:00:00 2001 From: Aaron Schulz Date: Thu, 15 Jan 2015 17:55:39 -0800 Subject: [PATCH] Made Revision::newFromPageId avoid master queries like newFromTitle does Change-Id: I8b8092467d2e6ef7755b5e9aa1986f73fbd1d324 --- includes/Revision.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) 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 ); } /** -- 2.20.1