WatchedItemStore::countVisitingWatchersMultiple() shouldn't query all titles when...
authorBrad Jorsch <bjorsch@wikimedia.org>
Tue, 18 Sep 2018 16:01:32 +0000 (12:01 -0400)
committerReedy <reedy@wikimedia.org>
Thu, 20 Sep 2018 22:05:18 +0000 (22:05 +0000)
If a caller gives an empty array for $targetsWithVisitThresholds, per
the documentation it should be expecting an empty array in return, not a
count of watchers for every title in the database.

Bug: T204729
Change-Id: I0f25fae301450d077bb30597281aaef0fba209d4
(cherry picked from commit f5469d36602cb2a95396830b14e9a631d698f3a6)

RELEASE-NOTES-1.31
includes/watcheditem/WatchedItemStore.php

index b0da15a..0898863 100644 (file)
@@ -1,3 +1,11 @@
+== MediaWiki 1.31.2 ==
+
+THIS IS NOT A RELEASE YET
+
+=== Changes since MediaWiki 1.31.1 ===
+* (T204729) WatchedItemStore::countVisitingWatchersMultiple() shouldn't query all
+  titles when asked for none
+
 == MediaWiki 1.31.1 ==
 
 This is a security and maintenance release of the MediaWiki 1.31 branch.
index 6e907de..6b0c2aa 100644 (file)
@@ -407,6 +407,11 @@ class WatchedItemStore implements WatchedItemStoreInterface, StatsdAwareInterfac
                array $targetsWithVisitThresholds,
                $minimumWatchers = null
        ) {
+               if ( $targetsWithVisitThresholds === [] ) {
+                       // No titles requested => no results returned
+                       return [];
+               }
+
                $dbr = $this->getConnectionRef( DB_REPLICA );
 
                $conds = $this->getVisitingWatchersCondition( $dbr, $targetsWithVisitThresholds );