function getQueryInfo() {
$conds = $jconds = [];
$tables = [ 'image' ];
+ $options = [];
if ( !$this->showBots ) {
$groupsWithBotPermission = User::getGroupsWithPermission( 'bot' );
$conds['rc_type'] = RC_LOG;
$conds['rc_log_type'] = 'upload';
$conds['rc_patrolled'] = 0;
+ $conds['rc_namespace'] = NS_FILE;
$jconds['recentchanges'] = [
'INNER JOIN',
[
'rc_timestamp = img_timestamp'
]
];
+ // We're ordering by img_timestamp, so we have to make sure MariaDB queries `image` first.
+ // It sometimes decides to query `recentchanges` first and filesort the result set later
+ // to get the right ordering. T124205 / https://mariadb.atlassian.net/browse/MDEV-8880
+ $options[] = 'STRAIGHT_JOIN';
}
if ( !$this->getConfig()->get( 'MiserMode' ) && $this->like !== null ) {
'tables' => $tables,
'fields' => '*',
'join_conds' => $jconds,
- 'conds' => $conds
+ 'conds' => $conds,
+ 'options' => $options,
];
return $query;