Add join conditions to ActiveUsersPager
authorBrad Jorsch <bjorsch@wikimedia.org>
Fri, 21 Sep 2018 18:32:34 +0000 (14:32 -0400)
committerPaladox <thomasmulhall410@yahoo.com>
Thu, 20 Dec 2018 19:25:20 +0000 (19:25 +0000)
We're (very slowly and somewhat unofficially) moving towards using join
conditions everywhere, and here they're needed to avoid errors once the
actor migration reaches the READ_NEW stage.

Bug: T204767
Change-Id: I8bfe861fac7874f8938bed9bfac3b7ec6f478238
(cherry picked from commit 15441cabe60d84e17ffb25824aeb095d92bc375a)

RELEASE-NOTES-1.31
includes/specials/pagers/ActiveUsersPager.php

index a123ae8..c5a2a97 100644 (file)
@@ -47,6 +47,7 @@ THIS IS NOT A RELEASE YET
 * (T210998) Properly set $wgLanguageCode in the generated LocalSettings.php
   if --lang is used with the command-line installer (install.php).
 * Fix addition of ug_expiry column to user_groups table on MSSQL.
+* (T204767) Add join conditions to ActiveUsersPager
 
 == MediaWiki 1.31.1 ==
 
index 26ed499..83fb849 100644 (file)
@@ -83,13 +83,14 @@ class ActiveUsersPager extends UsersPager {
 
                $activeUserSeconds = $this->getConfig()->get( 'ActiveUserDays' ) * 86400;
                $timestamp = $dbr->timestamp( wfTimestamp( TS_UNIX ) - $activeUserSeconds );
-               $tables = [ 'querycachetwo', 'user', 'recentchanges' ] + $rcQuery['tables'];
-               $jconds = $rcQuery['joins'];
+               $tables = [ 'querycachetwo', 'user', 'rc' => [ 'recentchanges' ] + $rcQuery['tables'] ];
+               $jconds = [
+                       'user' => [ 'JOIN', 'user_name = qcc_title' ],
+                       'rc' => [ 'JOIN', $rcQuery['fields']['rc_user_text'] . ' = qcc_title' ],
+               ] + $rcQuery['joins'];
                $conds = [
                        'qcc_type' => 'activeusers',
                        'qcc_namespace' => NS_USER,
-                       'user_name = qcc_title',
-                       $rcQuery['fields']['rc_user_text'] . ' = qcc_title',
                        'rc_type != ' . $dbr->addQuotes( RC_EXTERNAL ), // Don't count wikidata.
                        'rc_type != ' . $dbr->addQuotes( RC_CATEGORIZE ), // Don't count categorization changes.
                        'rc_log_type IS NULL OR rc_log_type != ' . $dbr->addQuotes( 'newusers' ),
@@ -100,7 +101,7 @@ class ActiveUsersPager extends UsersPager {
                }
                if ( $this->groups !== [] ) {
                        $tables[] = 'user_groups';
-                       $conds[] = 'ug_user = user_id';
+                       $jconds['user_groups'] = [ 'JOIN', [ 'ug_user = user_id' ] ];
                        $conds['ug_group'] = $this->groups;
                        $conds[] = 'ug_expiry IS NULL OR ug_expiry >= ' . $dbr->addQuotes( $dbr->timestamp() );
                }