// 1.27
[ 'dropTable', 'msg_resource_links' ],
[ 'dropTable', 'msg_resource' ],
+ [ 'addField', 'watchlist', 'wl_id', 'patch-watchlist-wl_id.sql' ],
];
}
[ 'dropTable', 'msg_resource_links' ],
[ 'dropTable', 'msg_resource' ],
[ 'addTable', 'bot_passwords', 'patch-bot_passwords.sql' ],
+ [ 'addField', 'watchlist', 'wl_id', 'patch-watchlist-wl_id.sql' ],
];
}
// 1.27
[ 'dropTable', 'msg_resource_links' ],
[ 'dropTable', 'msg_resource' ],
+ [ 'addField', 'watchlist', 'wl_id', 'patch-watchlist-wl_id.sql' ],
// KEEP THIS AT THE BOTTOM!!
[ 'doRebuildDuplicateFunction' ],
[ 'addSequence', 'filearchive', 'fa_id', 'filearchive_fa_id_seq' ],
[ 'addSequence', 'archive', false, 'archive_ar_id_seq' ],
[ 'addSequence', 'externallinks', false, 'externallinks_el_id_seq' ],
+ [ 'addSequence', 'watchlist', false, 'watchlist_wl_id_seq' ],
# new tables
[ 'addTable', 'category', 'patch-category.sql' ],
// 1.27
[ 'dropTable', 'msg_resource_links' ],
[ 'dropTable', 'msg_resource' ],
+ [
+ 'addPgField', 'watchlist', 'wl_id',
+ "INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('watchlist_wl_id_seq')"
+ ],
];
}
[ 'dropTable', 'msg_resource_links' ],
[ 'dropTable', 'msg_resource' ],
[ 'addTable', 'bot_passwords', 'patch-bot_passwords.sql' ],
+ [ 'addField', 'watchlist', 'wl_id', 'patch-watchlist-wl_id.sql' ],
];
}
--- /dev/null
+-- Primary key in watchlist
+
+ALTER TABLE /*$wgDBprefix*/watchlist
+ ADD COLUMN wl_id int unsigned NOT NULL AUTO_INCREMENT FIRST,
+ ADD PRIMARY KEY (wl_id);
--- /dev/null
+ALTER TABLE /*_*/watchlist ADD wl_id INT IDENTITY;
+ALTER TABLE /*_*/watchlist ADD CONSTRAINT pk_watchlist PRIMARY KEY(wl_id)
CREATE TABLE /*_*/watchlist (
+ wl_id int NOT NULL PRIMARY KEY IDENTITY,
-- Key to user.user_id
wl_user int NOT NULL REFERENCES /*_*/mwuser(user_id) ON DELETE CASCADE,
--- /dev/null
+define mw_prefix='{$wgDBprefix}';
+
+ALTER TABLE &mw_prefix.watchlist ADD (
+wl_id NUMBER NOT NULL,
+);
+ALTER TABLE &mw_prefix.watchlist ADD CONSTRAINT &mw_prefix.watchlist_pk PRIMARY KEY (wl_id);
CREATE INDEX &mw_prefix.recentchanges_i07 ON &mw_prefix.recentchanges (rc_user_text, rc_timestamp);
CREATE TABLE &mw_prefix.watchlist (
+ wl_id NUMBER NOT NULL,
wl_user NUMBER NOT NULL,
wl_namespace NUMBER DEFAULT 0 NOT NULL,
wl_title VARCHAR2(255) NOT NULL,
wl_notificationtimestamp TIMESTAMP(6) WITH TIME ZONE
);
+ALTER TABLE &mw_prefix.watchlist ADD CONSTRAINT &mw_prefix.watchlist_pk PRIMARY KEY (wl_id);
ALTER TABLE &mw_prefix.watchlist ADD CONSTRAINT &mw_prefix.watchlist_fk1 FOREIGN KEY (wl_user) REFERENCES &mw_prefix.mwuser(user_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED;
CREATE UNIQUE INDEX &mw_prefix.watchlist_u01 ON &mw_prefix.watchlist (wl_user, wl_namespace, wl_title);
CREATE INDEX &mw_prefix.watchlist_i01 ON &mw_prefix.watchlist (wl_namespace, wl_title);
DROP SEQUENCE IF EXISTS filearchive_fa_id_seq CASCADE;
DROP SEQUENCE IF EXISTS uploadstash_us_id_seq CASCADE;
DROP SEQUENCE IF EXISTS recentchanges_rc_id_seq CASCADE;
+DROP SEQUENCE IF EXISTS watchlist_wl_id_seq CASCADE;
DROP SEQUENCE IF EXISTS logging_log_id_seq CASCADE;
DROP SEQUENCE IF EXISTS job_job_id_seq CASCADE;
DROP SEQUENCE IF EXISTS category_cat_id_seq CASCADE;
CREATE INDEX rc_ip ON recentchanges (rc_ip);
+CREATE SEQUENCE watchlist_wl_id_seq;
CREATE TABLE watchlist (
+ wl_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('watchlist_wl_id_seq'),
wl_user INTEGER NOT NULL REFERENCES mwuser(user_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
wl_namespace SMALLINT NOT NULL DEFAULT 0,
wl_title TEXT NOT NULL,
--- /dev/null
+DROP TABLE IF EXISTS /*_*/watchlist_tmp;
+
+CREATE TABLE /*$wgDBprefix*/watchlist_tmp (
+ wl_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ wl_user INTEGER NOT NULL,
+ wl_namespace INTEGER NOT NULL default 0,
+ wl_title TEXT NOT NULL default '',
+ wl_notificationtimestamp BLOB
+);
+
+INSERT OR IGNORE INTO /*_*/watchlist_tmp (
+ wl_user, wl_namespace, wl_title, wl_notificationtimestamp )
+ SELECT
+ wl_user, wl_namespace, wl_title, wl_notificationtimestamp
+ FROM /*_*/watchlist;
+
+DROP TABLE /*_*/watchlist;
+
+ALTER TABLE /*_*/watchlist_tmp RENAME TO /*_*/watchlist;
+
+CREATE UNIQUE INDEX /*i*/wl_user ON /*_*/watchlist (wl_user, wl_namespace, wl_title);
+CREATE INDEX /*i*/namespace_title ON /*_*/watchlist (wl_namespace, wl_title);
+CREATE INDEX /*i*/wl_user_notificationtimestamp ON /*_*/watchlist (wl_user, wl_notificationtimestamp);
CREATE TABLE /*_*/watchlist (
+ wl_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
-- Key to user.user_id
wl_user int unsigned NOT NULL,