Aaron Schulz has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/260634

Change subject: Simplify "load-recent-authors" query
......................................................................

Simplify "load-recent-authors" query

This might avoid confusing the query planner for pages edited
mostly by the same bot user many times.

Bug: T116557
Change-Id: Ife87695a4f16d549e8a46780aca4219b28310343
---
M AbuseFilterVariableHolder.php
1 file changed, 11 insertions(+), 13 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/AbuseFilter 
refs/changes/34/260634/1

diff --git a/AbuseFilterVariableHolder.php b/AbuseFilterVariableHolder.php
index 5c816c5..6f56bc6 100644
--- a/AbuseFilterVariableHolder.php
+++ b/AbuseFilterVariableHolder.php
@@ -490,27 +490,25 @@
                                        $result = '';
                                        break;
                                }
-
-                               $dbr = wfGetDB( DB_SLAVE );
-                               $sqlTmp = $dbr->selectSQLText(
+                               // Get the last 100 edit authors with a trivial 
query (avoid T116557)
+                               $revAuthors = wfGetDB( DB_SLAVE 
)->selectFieldValues(
                                        'revision',
-                                       array( 'rev_user_text', 'rev_timestamp' 
),
+                                       'rev_user_text',
                                        array( 'rev_page' => 
$title->getArticleID() ),
                                        __METHOD__,
                                        // Some pages have < 10 authors but 
many revisions (e.g. bot pages)
                                        array( 'ORDER BY' => 'rev_timestamp 
DESC', 'LIMIT' => 100 )
                                );
-                               $res = $dbr->query(
-                                       "SELECT rev_user_text FROM ($sqlTmp) AS 
tmp " .
-                                       "GROUP BY rev_user_text ORDER BY 
MAX(rev_timestamp) DESC LIMIT 10",
-                                       __METHOD__
-                               );
-
+                               // Get the last 10 distinct authors within this 
set of edits
                                $users = array();
-                               foreach( $res as $row ) {
-                                       $users[] = $row->rev_user_text;
+                               foreach ( $revAuthors as $author ) {
+                                       $users[$author] = 1;
+                                       if ( count( $users ) >= 10 ) {
+                                               break;
+                                       }
                                }
-                               $result = $users;
+
+                               $result = array_keys( $users );
                                break;
                        case 'load-first-author':
                                $title = Title::makeTitle( 
$parameters['namespace'], $parameters['title'] );

-- 
To view, visit https://gerrit.wikimedia.org/r/260634
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ife87695a4f16d549e8a46780aca4219b28310343
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/AbuseFilter
Gerrit-Branch: master
Gerrit-Owner: Aaron Schulz <asch...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to