Page MenuHomePhabricator

recentchanges.rc_source registry of known values
Closed, ResolvedPublic

Description

A condition like rc_source != 'mw.edit' can't use an index on rc_source, whereas rc_source IN ('mw.new', 'mw.log', 'mw.categorize', 'wb') potentially can. We will need an extension attribute allowing extensions to register their rc_source values, so that inverted filters can be efficiently implemented.

Event Timeline

Change #1183283 had a related patch set uploaded (by Tim Starling; author: Tim Starling):

[mediawiki/core@master] recentchanges: Allow registration of known rc_source values

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

Change #1183285 had a related patch set uploaded (by Tim Starling; author: Tim Starling):

[mediawiki/extensions/Wikibase@master] Register rc_source value

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

Change #1183288 had a related patch set uploaded (by Tim Starling; author: Tim Starling):

[mediawiki/extensions/Flow@master] Register rc_source value

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

Change #1183289 had a related patch set uploaded (by Tim Starling; author: Tim Starling):

[mediawiki/extensions/WikiLambda@master] Register rc_source value

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

Change #1184954 had a related patch set uploaded (by Tim Starling; author: Tim Starling):

[mediawiki/extensions/Wikistories@master] Register rc_source value

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

Change #1184959 had a related patch set uploaded (by Tim Starling; author: Tim Starling):

[mediawiki/core@master] recentchanges: Use the new extension attribute for active user queries

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

Change #1183283 merged by jenkins-bot:

[mediawiki/core@master] recentchanges: Allow registration of known rc_source values

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

Change #1183288 merged by jenkins-bot:

[mediawiki/extensions/Flow@master] Register rc_source value

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

Change #1183285 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] Register rc_source value

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

Change #1184954 merged by jenkins-bot:

[mediawiki/extensions/Wikistories@master] Register rc_source value

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

Change #1183289 merged by jenkins-bot:

[mediawiki/extensions/WikiLambda@master] Register rc_source value

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

Change #1184959 merged by jenkins-bot:

[mediawiki/core@master] recentchanges: Use the new extension attribute for active user queries

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

Change #1186141 had a related patch set uploaded (by Tim Starling; author: Tim Starling):

[mediawiki/core@master] recentchanges: Simplify current-revision filters

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

Change #1186141 merged by jenkins-bot:

[mediawiki/core@master] recentchanges: Simplify current-revision filters

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

Change #1186678 had a related patch set uploaded (by Tim Starling; author: Tim Starling):

[mediawiki/core@master] recentchanges: Add ChangesListFilterGroupContainer

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

Change #1186924 had a related patch set uploaded (by Tim Starling; author: Tim Starling):

[mediawiki/extensions/ORES@master] Improve filter group tests

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

Change #1186924 merged by jenkins-bot:

[mediawiki/extensions/ORES@master] Improve filter group tests

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

Change #1191646 had a related patch set uploaded (by Tim Starling; author: Tim Starling):

[mediawiki/core@master] recentchanges: Add ChangesListQuery

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

Test wiki created on Patch demo by KGraessle-WMF using patch(es) linked to this task:
https://206382c5a9.catalyst.wmcloud.org/w/

Test wiki on Patch demo by KGraessle-WMF using patch(es) linked to this task was deleted:

https://206382c5a9.catalyst.wmcloud.org/w/

Test wiki created on Patch demo by KGraessle-WMF using patch(es) linked to this task:
https://04607422ab.catalyst.wmcloud.org/w/

Test wiki on Patch demo by KGraessle-WMF using patch(es) linked to this task was deleted:

https://04607422ab.catalyst.wmcloud.org/w/

Test wiki created on Patch demo by KGraessle-WMF using patch(es) linked to this task:
https://0fbfb38dfc.catalyst.wmcloud.org/w/

Test wiki on Patch demo by KGraessle-WMF using patch(es) linked to this task was deleted:

https://0fbfb38dfc.catalyst.wmcloud.org/w/

Test wiki created on Patch demo by KGraessle-WMF using patch(es) linked to this task:
https://5f215c17d3.catalyst.wmcloud.org/w/

Change #1191646 merged by Scardenasmolinar:

[mediawiki/core@master] recentchanges: Add ChangesListQuery

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

Scardenasmolinar subscribed.

This task does not have any pending changes to be merged, so I am moving it over to QA.

Patch has been reverted. Waiting for changes to be made before testing again

Test wiki on Patch demo by KGraessle-WMF using patch(es) linked to this task was deleted:

https://5f215c17d3.catalyst.wmcloud.org/w/

tstarling claimed this task.

This is done. However, I could not reproduce any performance improvement. The database does actually optimise a not-equals condition, so the index usage doesn't change.

wikiadmin2023@10.192.16.46(commonswiki)> select count(*) from recentchanges where rc_source != 'mw.edit' AND rc_source != 'mw.log' AND rc_source != 'mw.categorize';
+----------+
| count(*) |
+----------+
|   161489 |
+----------+
1 row in set (0.170 sec)

wikiadmin2023@10.192.16.46(commonswiki)> select count(*) from recentchanges where rc_source IN ('mw.new', 'flow', 'wb');
+----------+
| count(*) |
+----------+
|   161488 |
+----------+
1 row in set (0.081 sec)

I am not sure if your experiment (dis)proves anything. The ChangesList interface does not allow users to run queries like these. Also, such a simple query could have been optimized by using subtraction (SELECT COUNT(*) FROM recentchanges - SELECT COUNT(*) FROM recentchanges WHERE rc_source IN (...)).