Page MenuHomePhabricator

0001-ImageListPager-Force-RDBMS-to-query-filerevision-bef.patch

Authored By
Zabe
Apr 16 2026, 9:42 PM
Size
2 KB
Referenced Files
None
Subscribers
None

0001-ImageListPager-Force-RDBMS-to-query-filerevision-bef.patch

From a96594c816518b4b0008de0de21ef6e171e18d9c Mon Sep 17 00:00:00 2001
From: Alexander Vorwerk <zabe@avorwerk.net>
Date: Thu, 16 Apr 2026 23:40:24 +0200
Subject: [PATCH] ImageListPager: Force RDBMS to query filerevision before file
This is similar to d288df6da (I2153ed1f).
We want to use the fr_timestamp index, so cannot do a secondary sort by
file_name here and switch to fr_id instead.
Also we STRAIGHT_JOIN file to make sure filerevision is queried first.
Bug: T423654
Change-Id: Ieb621212e22ecbdf28d6636f283e604633ce276c
---
includes/Specials/Pager/ImageListPager.php | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/includes/Specials/Pager/ImageListPager.php b/includes/Specials/Pager/ImageListPager.php
index 09be3ff92d2..3300ea5e3e5 100644
--- a/includes/Specials/Pager/ImageListPager.php
+++ b/includes/Specials/Pager/ImageListPager.php
@@ -71,7 +71,7 @@ class ImageListPager extends TablePager {
];
private const INDEX_FIELDS_NEW = [
- 'fr_timestamp' => [ 'fr_timestamp', 'file_name' ],
+ 'fr_timestamp' => [ 'fr_timestamp', 'fr_id' ],
'file_name' => [ 'file_name' ],
'fr_size' => [ 'fr_size', 'file_name' ],
];
@@ -262,7 +262,9 @@ class ImageListPager extends TablePager {
if ( $this->mIncluding ) {
return false;
}
- /* For reference, the indices we can use for sorting are:
+
+ /**
+ * For reference, the indices we can use for sorting are:
* On the image table: img_actor_timestamp, img_size, img_timestamp
* On oldimage: oi_actor_timestamp, oi_name_timestamp
*
@@ -290,16 +292,18 @@ class ImageListPager extends TablePager {
// the pager class.
return $this->getQueryInfoReal( $this->mTableName );
}
+
$dbr = $this->getDatabase();
$tables = [ 'filerevision', 'file', 'actor' ];
$fields = [
'fr_timestamp',
'file_name',
+ 'fr_id',
'fr_size',
'top' => 'CASE WHEN file_latest = fr_id THEN \'yes\' ELSE \'no\' END',
];
$join_conds = [
- 'filerevision' => [ 'JOIN', 'fr_file=file_id' ],
+ 'file' => [ 'STRAIGHT_JOIN', 'fr_file=file_id' ],
'actor' => [ 'JOIN', 'actor_id=fr_actor' ]
];
--
2.43.0

File Metadata

Mime Type
text/x-diff
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
24269432
Default Alt Text
0001-ImageListPager-Force-RDBMS-to-query-filerevision-bef.patch (2 KB)

Event Timeline