Last modified: 2012-11-11 11:32:06 UTC
After r82659, the following query was created SELECT user_name,MAX(user_id) AS user_id,MAX(user_editcount) AS edits,COUNT(ug_group) AS numgroups,MAX(ug_group) AS singlegroup,MIN(user_registration) AS creation,MAX(ipb_deleted) AS ipb_deleted FROM `mw_user` LEFT JOIN `mw_user_groups` ON ((user_id=ug_user)) LEFT JOIN `mw_ipblocks` ON ((user_id=ipb_user AND ipb_deleted=1 AND ipb_auto=0)) FORCE INDEX (user_name) WHERE (ipb_deleted IS NULL) GROUP BY user_name ORDER BY user_name LIMIT 51\G It needs to be SELECT user_name,MAX(user_id) AS user_id,MAX(user_editcount) AS edits,COUNT(ug_group) AS numgroups,MAX(ug_group) AS singlegroup,MIN(user_registration) AS creation,MAX(ipb_deleted) AS ipb_deleted FROM `mw_user` FORCE INDEX (user_name) LEFT JOIN `mw_user_groups` ON ((user_id=ug_user)) LEFT JOIN `mw_ipblocks` ON ((user_id=ipb_user AND ipb_deleted=1 AND ipb_auto=0)) WHERE (ipb_deleted IS NULL) GROUP BY user_name ORDER BY user_name LIMIT 51\G http://svn.wikimedia.org/viewvc/mediawiki/branches/REL1_17/phase3/includes/specials/SpecialListusers.php?view=annotate ^ It seems in 1.17 (I broke the index inclusion in r79699) it's done a bit hackily...
if ( !empty( $conds ) ) { if ( is_array( $conds ) ) { $conds = $this->makeList( $conds, LIST_AND ); } $sql = "SELECT $startOpts $vars $from $useIndex WHERE $conds $preLimitTail"; } else { $sql = "SELECT $startOpts $vars $from $useIndex $preLimitTail"; } $from is only right when not LEFT JOIN'ing in tables
Sounds like bug 22613