wiki.techinc.nl/maintenance/sqlite/archives/patch-recentchanges-drop-rc_user.sql
Brad Jorsch c29909e59f Mostly drop old pre-actor user schemas
This removes most of the pre-actor user and user_text columns, and the
$wgActorTableSchemaMigrationStage setting that used to determine
whether the columns were used.

rev_user and rev_user_text remain in the code, as on Wikimedia wikis the
revision table is too large to alter at this time. A future change will
combine that with the removal of rev_comment, rev_content_model, and
rev_content_format (and the addition of rev_comment_id and rev_actor).

ActorMigration's constructor continues to take a $stage parameter, and
continues to have the logic for handling it, for the benefit of
extensions that might need their own migration process. Code using
ActorMigration for accessing the core fields should be updated to use
the new actor fields directly. That will be done for in a followup.

Bug: T188327
Change-Id: Id35544b879af1cd708f3efd303fce8d9a1b9eb02
2019-09-09 11:38:36 -04:00

59 lines
2.7 KiB
PL/PgSQL

--
-- patch-recentchanges-drop-rc_user.sql
--
-- T188327. Drop old xx_user and xx_user_text fields, and defaults from xx_actor fields.
BEGIN;
DROP TABLE IF EXISTS /*_*/recentchanges_tmp;
CREATE TABLE /*_*/recentchanges_tmp (
rc_id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
rc_timestamp varbinary(14) NOT NULL default '',
rc_actor bigint unsigned NOT NULL DEFAULT 0,
rc_namespace int NOT NULL default 0,
rc_title varchar(255) binary NOT NULL default '',
rc_comment_id bigint unsigned NOT NULL,
rc_minor tinyint unsigned NOT NULL default 0,
rc_bot tinyint unsigned NOT NULL default 0,
rc_new tinyint unsigned NOT NULL default 0,
rc_cur_id int unsigned NOT NULL default 0,
rc_this_oldid int unsigned NOT NULL default 0,
rc_last_oldid int unsigned NOT NULL default 0,
rc_type tinyint unsigned NOT NULL default 0,
rc_source varchar(16) binary not null default '',
rc_patrolled tinyint unsigned NOT NULL default 0,
rc_ip varbinary(40) NOT NULL default '',
rc_old_len int,
rc_new_len int,
rc_deleted tinyint unsigned NOT NULL default 0,
rc_logid int unsigned NOT NULL default 0,
rc_log_type varbinary(255) NULL default NULL,
rc_log_action varbinary(255) NULL default NULL,
rc_params blob NULL
) /*$wgDBTableOptions*/;
INSERT OR IGNORE INTO /*_*/recentchanges_tmp (
rc_id, rc_timestamp, rc_actor, rc_namespace, rc_title,
rc_comment_id, rc_minor, rc_bot, rc_new, rc_cur_id, rc_this_oldid, rc_last_oldid,
rc_type, rc_source, rc_patrolled, rc_ip, rc_old_len, rc_new_len, rc_deleted,
rc_logid, rc_log_type, rc_log_action, rc_params
) SELECT
rc_id, rc_timestamp, rc_actor, rc_namespace, rc_title,
rc_comment_id, rc_minor, rc_bot, rc_new, rc_cur_id, rc_this_oldid, rc_last_oldid,
rc_type, rc_source, rc_patrolled, rc_ip, rc_old_len, rc_new_len, rc_deleted,
rc_logid, rc_log_type, rc_log_action, rc_params
FROM /*_*/recentchanges;
DROP TABLE /*_*/recentchanges;
ALTER TABLE /*_*/recentchanges_tmp RENAME TO /*_*/recentchanges;
CREATE INDEX /*i*/rc_timestamp ON /*_*/recentchanges (rc_timestamp);
CREATE INDEX /*i*/rc_namespace_title_timestamp ON /*_*/recentchanges (rc_namespace, rc_title, rc_timestamp);
CREATE INDEX /*i*/rc_cur_id ON /*_*/recentchanges (rc_cur_id);
CREATE INDEX /*i*/new_name_timestamp ON /*_*/recentchanges (rc_new,rc_namespace,rc_timestamp);
CREATE INDEX /*i*/rc_ip ON /*_*/recentchanges (rc_ip);
CREATE INDEX /*i*/rc_ns_actor ON /*_*/recentchanges (rc_namespace, rc_actor);
CREATE INDEX /*i*/rc_actor ON /*_*/recentchanges (rc_actor, rc_timestamp);
CREATE INDEX /*i*/rc_name_type_patrolled_timestamp ON /*_*/recentchanges (rc_namespace, rc_type, rc_patrolled, rc_timestamp);
CREATE INDEX /*i*/rc_this_oldid ON /*_*/recentchanges (rc_this_oldid);
COMMIT;