Page MenuHomePhabricator

Remove obsolete recentchanges.rc_new database field
Closed, ResolvedPublic

Description

The databasefield recentchanges.rc_new is marked as obsolete in RecentChanges.php

Please drop this field to clean up the table.

The problem is, that this field is used at many places in core. You can remove it with a check of the field "rc_source" against the const RecentChange::SRC_NEW.

Details

Reference
bz34320
Related Changes in Gerrit:
SubjectRepoBranchLines +/-
operations/puppetproduction+6 -6
analytics/wmde/scriptsproduction+1 -1
analytics/wmde/scriptsmaster+1 -1
mediawiki/coremaster+775 -34
mediawiki/coremaster+1 -18
mediawiki/coremaster+3 -7
mediawiki/extensions/Wikibasemaster+0 -6
mediawiki/extensions/Flowmaster+0 -1
mediawiki/extensions/Wikistoriesmaster+0 -1
mediawiki/coremaster+6 -1
mediawiki/coremaster+11 -16
mediawiki/extensions/WikiLambdamaster+1 -16
mediawiki/extensions/CheckUsermaster+0 -1
mediawiki/extensions/PageTriagemaster+1 -1
mediawiki/extensions/Nukemaster+1 -1
mediawiki/coremaster+1 -1
mediawiki/extensions/Nukemaster+34 -14
mediawiki/extensions/LiquidThreadsmaster+1 -1
mediawiki/extensions/CentralNoticemaster+2 -2
mediawiki/extensions/BlockAndNukemaster+9 -2
mediawiki/extensions/MobileFrontendmaster+1 -1
translatewikimaster+2 -2
mediawiki/extensions/SiteScoutmaster+2 -2
mediawiki/extensions/SocialProfilemaster+3 -3
mediawiki/extensions/BlueSpiceSmartListmaster+1 -1
Show related patches Customize query in gerrit
Related Changes in GitLab:
TitleReferenceAuthorSource BranchDest Branch
feat(featureset): fall back to default quality thresholds for unseen wikisrepos/research/knowledge_integrity!37mnzmnz/supported-wikismain
Customize query in GitLab

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes

Change 567541 had a related patch set uploaded (by DannyS712; owner: DannyS712):
[mediawiki/extensions/SiteScout@master] Replace use of rc_new field with rc_source

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

Change 567542 had a related patch set uploaded (by DannyS712; owner: DannyS712):
[mediawiki/extensions/SocialProfile@master] Replace use of rc_new field with rc_source

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

Change 567532 merged by jenkins-bot:
[mediawiki/extensions/BlueSpiceSmartList@master] Replace use of rc_new field with rc_source

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

Change 567542 merged by Jack Phoenix:
[mediawiki/extensions/SocialProfile@master] Replace use of rc_new field with rc_source

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

Change 567541 merged by Jack Phoenix:
[mediawiki/extensions/SiteScout@master] Replace use of rc_new field with rc_source

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

Change 568080 had a related patch set uploaded (by DannyS712; owner: DannyS712):
[translatewiki@master] Replace use of rc_new field with rc_source

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

Change 568080 merged by jenkins-bot:
[translatewiki@master] Replace use of rc_new field with rc_source

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

Change 567539 merged by jenkins-bot:
[mediawiki/extensions/MobileFrontend@master] Replace use of rc_new field with rc_source

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

Change 569282 had a related patch set uploaded (by DannyS712; owner: DannyS712):
[mediawiki/core@master] Replace use of rc_new field with rc_source (part 1)

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

Change 567536 merged by jenkins-bot:
[mediawiki/extensions/CentralNotice@master] Replace use of rc_new field with rc_source

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

Change 567531 merged by jenkins-bot:
[mediawiki/extensions/BlockAndNuke@master] Replace use of rc_new field with rc_source

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

Change 567537 merged by jenkins-bot:
[mediawiki/extensions/LiquidThreads@master] Replace use of rc_new field with rc_source

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

Change 577735 had a related patch set uploaded (by DannyS712; owner: DannyS712):
[mediawiki/extensions/Nuke@master] Replace use of rc_new with rc_source, clean up query

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

DannyS712 changed the task status from Open to Stalled.Apr 24 2020, 1:57 AM

Stalled pending addition of new index in T244080: Add index to recentchanges.rc_source

It may be a good idea to do this and T74157 together.

DannyS712 subscribed.

Change 567540 abandoned by Kosta Harlan:

[mediawiki/extensions/PageTriage@master] Replace use of `rc_new` field with `rc_source`

Reason:

Cleaning up the code review queue; if you'd like to keep working on this, please restore it!

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

There are several places in Wikimedia deployed code where rc_new is still used in queries:

  • core:
    • includes/specials/SpecialRecentChanges.php - all queries use this "hack"
	// rc_new is not an ENUM, but adding a redundant rc_new IN (0,1) gives mysql enough
	// knowledge to use an index merge if it wants (it may use some other index though).
	$conds += [ 'rc_new' => [ 0, 1 ] ];
    • includes/specials/pagers/NewPagesPager.php - probably the most prominent usage; all queries include rc_new = 1
    • maintenance/categoryChangesAsRdf.php - plenty of usages, not sure where that interface is used
    • (There was one more usage in core's includes/page/Article.php, but we found a better query to use there (change 545256).)
  • MediaWiki-extensions-Nuke
    • includes/SpecialNuke.php
      • the query for created pages always includes rc_new = 1 OR (rc_log_type = 'upload' AND rc_log_action = 'upload')
  • PageTriage
    • includes/PageTriage.php
      • query like SELECT * FROM recentchanges WHERE rc_cur_id = # AND rc_new = 1

They are hard to deal with because queries with rc_new might already use the existing rc_new_name_timestamp index, but there is no index on rc_source (T244080). There is an index on rc_type, though, but it's a bit different:

INDEX rc_new_name_timestamp (
  rc_new, rc_namespace, rc_timestamp
),
INDEX rc_name_type_patrolled_timestamp (
  rc_namespace, rc_type, rc_patrolled, rc_timestamp
)

If we still want to do this, maybe we should change the direction a bit and look into finding ways to replace them with rc_type = RC_NEW first. We may need to fiddle with the indices, though.

Change #1027138 had a related patch set uploaded (by Scardenasmolinar; author: Scardenasmolinar):

[mediawiki/extensions/Nuke@master] Replace rc_new for rc_type in DB query

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

Change #1027147 had a related patch set uploaded (by Samwalton9; author: Samwalton9):

[mediawiki/core@master] Update documentation for rc_new

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

Change #577735 abandoned by Scardenasmolinar:

[mediawiki/extensions/Nuke@master] Replace use of rc_new with rc_source, clean up query

Reason:

Abandoning in favor of 1027138

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

Change #1027147 had a related patch set uploaded (by Samwalton9; author: Samwalton9):

[mediawiki/core@master] Update documentation for rc_new

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

Woo! First core patch!
Macro fox_dance:

Change #1027147 merged by jenkins-bot:

[mediawiki/core@master] Update documentation for rc_new

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

Change #1027138 merged by jenkins-bot:

[mediawiki/extensions/Nuke@master] Replace rc_new for rc_source in DB query

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

Change #1175125 had a related patch set uploaded (by Zabe; author: Zabe):

[mediawiki/core@master] Stop reading from rc_new

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

Change #567540 restored by Matěj Suchánek:

[mediawiki/extensions/PageTriage@master] Replace use of `rc_new` field with `rc_source`

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

Change #567540 merged by jenkins-bot:

[mediawiki/extensions/PageTriage@master] Replace use of `rc_new` field with `rc_source`

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

Change #1178899 had a related patch set uploaded (by Zabe; author: Zabe):

[operations/puppet@production] maintain-views: Stop providing rc_new and rc_type to replicas

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

Zabe changed the task status from Stalled to Open.Aug 14 2025, 3:51 PM

Change #1178902 had a related patch set uploaded (by Zabe; author: Zabe):

[mediawiki/extensions/CheckUser@master] Stop touching rc_new

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

Change #1178904 had a related patch set uploaded (by Zabe; author: Zabe):

[mediawiki/extensions/WikiLambda@master] Stop using rc_new

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

Change #1178906 had a related patch set uploaded (by Zabe; author: Zabe):

[mediawiki/extensions/Flow@master] Stop setting rc_new to 0

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

Change #1178907 had a related patch set uploaded (by Zabe; author: Zabe):

[mediawiki/extensions/Wikibase@master] Stop setting rc_new to 0

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

Change #1178908 had a related patch set uploaded (by Zabe; author: Zabe):

[mediawiki/extensions/Wikistories@master] Stop setting rc_new to 0

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

Change #1178902 merged by jenkins-bot:

[mediawiki/extensions/CheckUser@master] Stop touching rc_new

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

Change #1178904 merged by jenkins-bot:

[mediawiki/extensions/WikiLambda@master] Stop using rc_new

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

Change #1178910 had a related patch set uploaded (by Zabe; author: Zabe):

[mediawiki/core@master] RecentChange: Support rc_new not present in row obj

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

Change #1175125 merged by jenkins-bot:

[mediawiki/core@master] Stop reading from rc_new

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

Change #1179139 had a related patch set uploaded (by Zabe; author: Zabe):

[mediawiki/core@master] Drop rc_new coloum from recentchanges

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

Change #1178910 merged by jenkins-bot:

[mediawiki/core@master] RecentChange: Support rc_new not present in row obj

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

Change #1178908 merged by jenkins-bot:

[mediawiki/extensions/Wikistories@master] Stop setting rc_new to 0

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

Change #1178906 merged by jenkins-bot:

[mediawiki/extensions/Flow@master] Stop setting rc_new to 0

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

Change #1178907 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] Stop setting rc_new to 0

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

Change #569282 abandoned by Zabe:

[mediawiki/core@master] Replace use of `rc_new` field with `rc_source` (part 1)

Reason:

All of these were either done in other patches or are no longer existent

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

Change #1179702 had a related patch set uploaded (by Zabe; author: Zabe):

[mediawiki/core@master] Stop writing to rc_new

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

Change #1179702 merged by jenkins-bot:

[mediawiki/core@master] Stop writing to rc_new

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

Change #1179139 merged by jenkins-bot:

[mediawiki/core@master] Drop rc_new column from recentchanges

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

Change #1182134 had a related patch set uploaded (by Zabe; author: Zabe):

[analytics/wmde/scripts@master] Replace rc_new with rc_source

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

Change #1182134 merged by jenkins-bot:

[analytics/wmde/scripts@master] Replace rc_new with rc_source

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

Change #1182137 had a related patch set uploaded (by Lucas Werkmeister (WMDE); author: Zabe):

[analytics/wmde/scripts@production] Replace rc_new with rc_source

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

Change #1182137 merged by jenkins-bot:

[analytics/wmde/scripts@production] Replace rc_new with rc_source

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

Change #1178899 merged by Ladsgroup:

[operations/puppet@production] maintain-views: Stop providing rc_new and rc_type to replicas

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

Zabe moved this task from Triage to Done on the DBA board.