Add id field to watchlist db table
authoraddshore <addshorewiki@gmail.com>
Wed, 17 Feb 2016 23:16:20 +0000 (23:16 +0000)
committeraddshore <addshorewiki@gmail.com>
Thu, 18 Feb 2016 21:01:01 +0000 (21:01 +0000)
Bug: T125990
Change-Id: I3ce3a736d51bc06fe40fd773f079e694039b4f3e

13 files changed:
includes/installer/MssqlUpdater.php
includes/installer/MysqlUpdater.php
includes/installer/OracleUpdater.php
includes/installer/PostgresUpdater.php
includes/installer/SqliteUpdater.php
maintenance/archives/patch-watchlist-wl_id.sql [new file with mode: 0644]
maintenance/mssql/archives/patch-watchlist-wl_id.sql [new file with mode: 0644]
maintenance/mssql/tables.sql
maintenance/oracle/archives/patch-watchlist-wl_id.sql [new file with mode: 0644]
maintenance/oracle/tables.sql
maintenance/postgres/tables.sql
maintenance/sqlite/archives/patch-watchlist-wl_id.sql [new file with mode: 0644]
maintenance/tables.sql

index b3675f8..bdaf4c8 100644 (file)
@@ -68,6 +68,7 @@ class MssqlUpdater extends DatabaseUpdater {
                        // 1.27
                        [ 'dropTable', 'msg_resource_links' ],
                        [ 'dropTable', 'msg_resource' ],
+                       [ 'addField', 'watchlist', 'wl_id', 'patch-watchlist-wl_id.sql' ],
                ];
        }
 
index 57eaffe..b09f3a6 100644 (file)
@@ -279,6 +279,7 @@ class MysqlUpdater extends DatabaseUpdater {
                        [ 'dropTable', 'msg_resource_links' ],
                        [ 'dropTable', 'msg_resource' ],
                        [ 'addTable', 'bot_passwords', 'patch-bot_passwords.sql' ],
+                       [ 'addField', 'watchlist', 'wl_id', 'patch-watchlist-wl_id.sql' ],
                ];
        }
 
index 02e59f5..334256b 100644 (file)
@@ -111,6 +111,7 @@ class OracleUpdater extends DatabaseUpdater {
                        // 1.27
                        [ 'dropTable', 'msg_resource_links' ],
                        [ 'dropTable', 'msg_resource' ],
+                       [ 'addField', 'watchlist', 'wl_id', 'patch-watchlist-wl_id.sql' ],
 
                        // KEEP THIS AT THE BOTTOM!!
                        [ 'doRebuildDuplicateFunction' ],
index 038c953..a3b50ac 100644 (file)
@@ -67,6 +67,7 @@ class PostgresUpdater extends DatabaseUpdater {
                        [ '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' ],
@@ -428,6 +429,10 @@ class PostgresUpdater extends DatabaseUpdater {
                        // 1.27
                        [ 'dropTable', 'msg_resource_links' ],
                        [ 'dropTable', 'msg_resource' ],
+                       [
+                               'addPgField', 'watchlist', 'wl_id',
+                               "INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('watchlist_wl_id_seq')"
+                       ],
                ];
        }
 
index 7db4f1a..99ab4e5 100644 (file)
@@ -148,6 +148,7 @@ class SqliteUpdater extends DatabaseUpdater {
                        [ 'dropTable', 'msg_resource_links' ],
                        [ 'dropTable', 'msg_resource' ],
                        [ 'addTable', 'bot_passwords', 'patch-bot_passwords.sql' ],
+                       [ 'addField', 'watchlist', 'wl_id', 'patch-watchlist-wl_id.sql' ],
                ];
        }
 
diff --git a/maintenance/archives/patch-watchlist-wl_id.sql b/maintenance/archives/patch-watchlist-wl_id.sql
new file mode 100644 (file)
index 0000000..a73e514
--- /dev/null
@@ -0,0 +1,5 @@
+-- Primary key in watchlist
+
+ALTER TABLE /*$wgDBprefix*/watchlist
+  ADD COLUMN wl_id int unsigned NOT NULL AUTO_INCREMENT FIRST,
+  ADD PRIMARY KEY (wl_id);
diff --git a/maintenance/mssql/archives/patch-watchlist-wl_id.sql b/maintenance/mssql/archives/patch-watchlist-wl_id.sql
new file mode 100644 (file)
index 0000000..b71f817
--- /dev/null
@@ -0,0 +1,2 @@
+ALTER TABLE /*_*/watchlist ADD wl_id INT IDENTITY;
+ALTER TABLE /*_*/watchlist ADD CONSTRAINT pk_watchlist PRIMARY KEY(wl_id)
index 0e58563..86bd735 100644 (file)
@@ -847,6 +847,7 @@ CREATE INDEX /*i*/rc_user_text ON /*_*/recentchanges (rc_user_text, rc_timestamp
 
 
 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,
 
diff --git a/maintenance/oracle/archives/patch-watchlist-wl_id.sql b/maintenance/oracle/archives/patch-watchlist-wl_id.sql
new file mode 100644 (file)
index 0000000..4f7180d
--- /dev/null
@@ -0,0 +1,6 @@
+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);
index 9a70b87..27c3030 100644 (file)
@@ -436,11 +436,13 @@ CREATE INDEX &mw_prefix.recentchanges_i06 ON &mw_prefix.recentchanges (rc_namesp
 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);
index c9f049b..61cb198 100644 (file)
@@ -18,6 +18,7 @@ DROP SEQUENCE IF EXISTS ipblocks_ipb_id_seq CASCADE;
 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;
@@ -447,7 +448,9 @@ CREATE INDEX new_name_timestamp ON recentchanges (rc_new, rc_namespace, rc_times
 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,
diff --git a/maintenance/sqlite/archives/patch-watchlist-wl_id.sql b/maintenance/sqlite/archives/patch-watchlist-wl_id.sql
new file mode 100644 (file)
index 0000000..771f9b7
--- /dev/null
@@ -0,0 +1,23 @@
+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);
index 743b9be..7942687 100644 (file)
@@ -1139,6 +1139,7 @@ CREATE INDEX /*i*/rc_user_text ON /*_*/recentchanges (rc_user_text, rc_timestamp
 
 
 CREATE TABLE /*_*/watchlist (
+  wl_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
   -- Key to user.user_id
   wl_user int unsigned NOT NULL,