Need to add a new _actor column to all supported extensions' relevant tables and potentially use it, depending on the value of $wgActorTableSchemaMigrationStage. MediaWiki-User-rename has a nice method called getActorMigrationStage in /extensions/Renameuser/includes/RenameuserSQL.php that we'll likely want to copy over to the relevant classes.
Also need a new, relevant index.
When would it be safe to ditch the "older" _user/_user_text columns; MW 1.34 or 1.35?
Affected extensions and tables:
- AJAXPoll — ajaxpoll_vote (stores username and IP address but not user ID?!)
Challenge — not really maintained right now, so not a huge priority; challenge, challenge_rate, challenge_user_record- MediaWiki-extensions-Comments — Comments, Comments_block, Comments_Vote
- CommentsPage#getComments does a LEFT JOIN againt SocialProfile's user_stats.stats_user_id when SP is installed
FanBoxes — fantag, user_fantag- https://gerrit.wikimedia.org/r/561868/ (Open as of 5 January 2020)
LinkFilter — link- https://gerrit.wikimedia.org/r/521982
- https://gerrit.wikimedia.org/r/561333/ (Open as of 5 January 2020)
MediaWikiChat — chat, chat_users (used on Brickimedia)- Per discussion with @lcawte on 2 January 2020, we'll likely be dropping this extension and not implementing actor support for it
MiniInvite — user_email_trackNewSignupPage — user_register_track- https://gerrit.wikimedia.org/r/562267 (Open as of 6 January 2020)
- https://gerrit.wikimedia.org/r/562268 (SocialProfile part; open as of 6 January 2020)
PictureGame — picturegame_images, picturegame_votes- https://gerrit.wikimedia.org/r/561955 (Open as of 5 January 2020)
PollNY — poll_question, poll_user_vote- https://gerrit.wikimedia.org/r/561594/ (Open as of 5 January 2020)
- Also needs changes in SocialProfile's /extensions/SocialProfile/UserProfile/includes/UserProfilePage.php which queries one of PollNY's DB tables directly via the user ID
- QuizGame — quizgame_answers, quizgame_questions, quizgame_user_view
- SocialProfile — user_board, user_profile (only stores user ID as up_user_id currently, has no knowledge of the user's name), user_fields_privacy (ditto), user_points_archive, user_points_monthly, user_points_weekly (need to remember to keep the column name the same between these 3 tables!), user_stats, user_system_messages, gift, user_gift, user_system_gift, user_relationship, user_relationship_request
SiteMetrics — doesn't introduce any custom tables on its own, but references many extension and core-created tables, like revision- https://gerrit.wikimedia.org/r/561329/ (Open as of 5 January 2020)
- SportsTeams — sport_favorite
- This is trickier than what it looks at first, because at least SportsTeams#getUsersByPoints does a LEFT JOIN against SocialProfile's user_stats table and specifically its stats_user_id column, and needless to say, we can't do a direct comparison between an actor ID and a user ID as they aren't the same thing! So this can't be done until user_stats has an actor column...
UserStatus — user_status, user_status_vote- https://gerrit.wikimedia.org/r/561411
- https://gerrit.wikimedia.org/r/561413 (SocialProfile part, open as of 5 January 2020)
Video extension — oldvideo, video- https://gerrit.wikimedia.org/r/561901 (Open as of 5 January 2020)
WikiForum — not really maintained right now by us, but quite a few people seem to be using it; also, it's a mess; wikiforum_category, wikiforum_forums, wikiforum_threads, wikiforum_replies (all tables store UIDs + IPs, but not user names)- https://gerrit.wikimedia.org/r/562053 (Open as of 5 January 2020)
VoteNY — Vote (stores username and IP address but not user ID?!)- https://gerrit.wikimedia.org/r/525330/
- https://gerrit.wikimedia.org/r/561326/
- Also note the need for changes in extensions which directly query the Vote table, like BlogPage and also SocialProfile (https://gerrit.wikimedia.org/r/561341/ and https://gerrit.wikimedia.org/r/561342/, respectively)
- Ideally things like BlogPage or SocialProfile wouldn't query the DB table directly...